SRI – subresource integrity

integrity – atrybut kontrolek script i link – skrót zawartości pliki (sha256, sha384, sha512) kodowany w base64

<script src="https://example.com/myscript.js"
        integrity="sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GqQ8K/uxy9rx7HNQlGYl1kPzQho1wx4JwY8wC"
        crossorigin="anonymous"></script>

Wyliczenie skrótu dla zawartości pliku myscript.js

# cat myscript.js | openssl dgst -sha384 -binary | openssl base64 -A

oqVuAfXRKap7fdgcCY5uykM6+R9GqQ8K/uxy9rx7HNQlGYl1kPzQho1wx4JwY8wC

Prism

Instalacja skryptu

 

Uruchomienie na lokalnej maszynie

# cd prysm/
# ./prysm.sh beacon-chain --http-web3provider=/home/john/snap/geth/477/.ethereum/geth.ipc

gpg: klucz 72E33E4DF1A5036E: klucz publiczny ,,Preston Van Loon <preston@prysmaticlabs.com>'' wczytano do zbioru
gpg: Ogółem przetworzonych kluczy: 1
gpg: dołączono do zbioru: 1
beacon-chain-v1.0.3-linux-amd64: OK
gpg: Podpisano w wto, 1 gru 2020, 15:43:14 CET
gpg: przy użyciu klucza RSA 0AE0051D647BA3C1A917AF4072E33E4DF1A5036E
gpg: Poprawny podpis złożony przez ,,Preston Van Loon <preston@prysmaticlabs.com>'' [nieznany]
gpg: OSTRZEŻENIE: Ten klucz nie jest poświadczony zaufanym podpisem!
gpg: Nie ma pewności co do tożsamości osoby która złożyła podpis.
Odcisk klucza głównego: 0AE0 051D 647B A3C1 A917 AF40 72E3 3E4D F1A5 036E
Verified /home/john/prysm/dist/beacon-chain-v1.0.3-linux-amd64 has been signed by Prysmatic Labs.
Starting Prysm beacon-chain --http-web3provider=/home/john/snap/geth/477/.ethereum/geth.ipc

Geth instalacja

  1. Instalacja Go https://golang.org/doc/install
// pobrać pakiet
# tar -C /usr/local -xzf go1.15.5.linux-amd64.tar.gz

# export PATH=$PATH:/usr/local/go/bin

# export GOPATH=/usr/local/go/bin

# source /etc/profile
# go version
go version go1.15.5 linux/amd64

Go-ethereum

// jasko zwykły user - utworzy podkatalog go w katalogu roboczym
# go get -d github.com/ethereum/go-ethereum

# export GO111MODULE=on

# source /etc/profile
# go install github.com/ethereum/go-ethereum/cmd/geth

user filter – lastEvents

Dołącza podzbiór zdarzeń na kliencie i znajduje ostatnie zdarzenie, zaraportowane, starsze niż obecna data (przyszłe zdarzenia nie miały miejsca to tylko plany). Jeśli ostatnie zdarzenie jest starsze niż 3 miesiące ustawia alarm.

public function findLastEvent($query, $options)
{
  $query = $query->contain([
      'Events' => function($q){
                     return $q->select([
                       'id', 'company_id', 'last_visit' => 'MAX(start_date)', 
                       'alarm' => $q->newExpr()->addCase(
                        [ $q->newExpr()->lt('MAX(start_date)', 
                                     $q->func()->dateAdd('CURRENT_DATE', -3, 'MONTH')) 
                            ],
                        [1,0],
                        ['integer', 'integer']
                      )  // addCase
                 ])  // select
                ->where(['report <>' => '']) // Zaraportowane
                ->where(['start_date <=' => new \DateTime('now')])
                ->order(['start_date' => 'DESC'])
                ->group(['Events.id']);
         }]);
   return $query;
}

git log

# git log
# git log -- nazwa_pliku.txt
 
# git log --oneline                       // poszcz. zatw. w jednej linii
# git log --oneline nazwa_pliku.txt

# git log -p                              // szczegółowe info
# git log -p  -- nazwa_pliku.txt

# git log --graph --decorate

Praca z GitHub

Po dodaniu zdalnego repozytorium (zakłada katalog: MyProjectName)

# git clone git@github.com:my_username/MyProjectName.git

możemy aktualizować zmiany i wysyłać (push) do zdalnego repo GITHUB bez konfiguracji

# git push origin

Po zmianach wykonanych w zdalnym repo (GitHub) aktualizujemy lokalne repo

# git pull

Find – Tar – lista plików nowszych od

Wyszukanie plików nowszych niż 21 dni w katalogu projekty/

# find projekty/ -type f -mtime -21 > pliki_find_pl_20201013.txt

Utworzenie archiwum skompresowanego znalezionych plików

# tar -zcvf projekty_PL_20201013.tgz --files-from=pliki_find_pl_20201013.txt

Odtworzenie archiwum – wgrywa pliki z archiwum do podkatalogu ./projekty/

# cd /katalog/projektu/webroot
# ls
  projekty/

# tar -zxvf projekty_PL_20201013.tgz

Git – ssh

Kolejne kroki

  1. Instalacjja git – Windows – pobrać installer, Linux apt install git
  2. Repozytoria: github, gitlab, bitbucket
  3. W repozytorium – konfiguracja dostępu ssh na poziomie konta
    • wygenerowanie  kluczy ssh w systemie lokalnym (linux: ssh-gen, windows putty gen)
    • wgranie kluczy publicznych w repozytorium

Generowanie kluczy w Linux:

# ssh-keygen -t rsa -b 4096 -f ./my_proj_key -C "Nazwa klucza"

- nie podawać hasła
# ls -l
 my_proj_key        // klucz prywatny
 my_proj_key.pub    // klucz publiczny

Ubuntu on Windows

Windows Store

Ubuntu – download – Install

PowerShell as Administrator

# Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Restart? Y

# ssh-keygen -t rsa -b 4096 -f ./klucz_dell -C "JO DELL"

 

Przełączanie URL – query string – filtrowanie po wielu parametrach

W filtrowaniu treści – wybieramy z listy opcję – wybrane ID, nazwy przekazujemy jako parametery query string. Pozwala to na filtrowanie po wielu parametrach niezależnie.

let url = new URL(location.href);
let onChangePostion = function(){

    url.searchParams.delete('page');                              // 1 strona

    var position_name = $(this).find(':selected').text().trim();  // Nazwa
    var position_id   = $(this).val();                            // id

    if(position_id) {
        url.searchParams.set('position_id', position_id);
    } else {
        url.searchParams.delete('position_id');
    }
    location.href = url.toString();
    return false;
};
$("#filter-position").on('change', onChangePostion);

Czytaj dalej Przełączanie URL – query string – filtrowanie po wielu parametrach