Bitbucket: git@bitbucket.org:john/repo_name.git
# git remote add origin git@bitbucket.org:john/repo_name.git
Bitbucket: git@bitbucket.org:john/repo_name.git
# git remote add origin git@bitbucket.org:john/repo_name.git
Co potrzeba:
Jeśli brak uprawnień wysyła do strony początkowej
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;
}
Wybieramy gałąź bazową (zwykle master) do której chcemy włączyć inną
# git checkout master # git merge patch01 # git log --graph --decorate # git push origin master // wysłanie do repo zdalnego
Nowa gałąź obejmuje całe repozytorium rodzica
# git branch patch01 # git checkout patch01 # git branch -b patch01 // tworzy i od razu wybiera (przełącza się) gałąź # git branch patch02 patch01 // tworzy branch patch02 na podstawie patch01 (zamiast master)
# 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
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
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
Lokalny katalog projektu
# git clone project/ clone-of-project -- kopiuje śledzone pliki z projektu project/ w nowym katalogu clone-of...
Pierwsze operacje na nowym projekcie
# git status # git add nazwa_pliku # git add . // dodaje wszystko w katalogu # git add -A // dodaje wszystko # git commit -m "komentarz" # git commit -a -m "komentarz" // zatwierdza wszystko # git log
Linux:
# git config --system core.editor nano # git config --global user.name "myname" # git config --global user.email "myname@o2.pl"
Kolejne kroki
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
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"
Ręczna baza danych w przypadku zgubienia hasła administratora
Ustawienie rekordu odwrotnego domeny PTR w przypadku problemów z pocztą dla: tea-tec.domena.pl dla IP 81.177.4.24. Rekord wprowadza dostawca adresu IP.
Zapytanie dig w formie PTR
# dig 24.4.177.81.in-addr.arpa PTR
;; ANSWER SECTION: 24.4.177.81.in-addr.arpa. 86400 IN PTR tea-tec.domena.pl. ;; AUTHORITY SECTION: 4.177.81.in-addr.arpa. 86400 IN NS dns3.exatel.pl.
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
Darmowe fonty
<link rel="stylesheet" href="https://cdn.lineicons.com/2.0/LineIcons.css">
<!doctype html>
<html lang='en'>
<head>
<meta charset='utf-8'>
<meta name='viewport' content='width=device-width, initial-scale=1, shrink-to-fit=no'>
<!-- LineIcons CSS -->
<link href="https://cdn.lineicons.com/2.0/LineIcons.css" rel="stylesheet">
<title>LineIcons Starter Template</title>
</head>
<body>
<h1>Icons Added!</h1>
<i class="lni lni-add-file"></i>
<i class="lni lni-cart"></i>
<i class="lni lni-calculator"></i>
</body>
</html>
Konwertuje wielkość pliku w bajtach na wielokrotność i dodaje przyrostek
let nBytes = 3838383838388394994; // wielkość w bajtach let sOutput = ""; const aMultiples = ["KiB", "MiB", "GiB", "TiB", "PiB", "EiB", "ZiB", "YiB"]; for (nMultiple = 0, nApprox = nBytes / 1024; nApprox > 1; nApprox /= 1024, nMultiple++) { sOutput = nApprox.toFixed(3) + " " + aMultiples[nMultiple] + " (" + nBytes + " bytes)"; }
Obrazki można pobrać i przesłać dalej lub przetworzyć np. wyświetlić ikonkę
Zapobiegawcze zapytanie DNS (do innej domeny) w czasie ściągania głównego pliku – zmniejsza opóźnienia dns lookup.
<link rel="dns-prefetch" href="//ajax.googleapis.com">
Zapobiegawcze nawiązanie połączenia TCP – zmniejsza opóźnienia tcp
<link rel="preconnect" href="//fonts.example.com" crossorigin>
URLSearchParams() – narzędzie/obiekt do obsługi query params.
https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams
FormData() – zestaw par key/value – typ danych może być file, blog lub string.
# npm install n -g
Aktualizuje node do ostatniej stabilnej wersji
Obsługa przeciągnij i upuść
https://developer.mozilla.org/en-US/docs/Web/API/File/Using_files_from_web_applications
Przelicza bajty na wielokrotności
let nBytes = 22323848499494949494;
let sOutput = nBytes + " bytes";
const aMultiples = ["KiB", "MiB", "GiB", "TiB", "PiB", "EiB", "ZiB", "YiB"];
for (nMultiple = 0, nApprox = nBytes / 1024; nApprox > 1; nApprox /= 1024, nMultiple++) {
sOutput = nApprox.toFixed(3) + " " + aMultiples[nMultiple] + " (" + nBytes + " bytes)";
}
Wartość dziesiątna w postaci 23 444,54 zł
<td class="text-right">
<span class="text-success"><?= number_format (((float) $object->price), 2, ',', ' ') ?></span> zł
</td>
Ustawienia wspólne dla wielu wywołań ajax
$.ajaxSetup({ url : '/projekty/add.json', type : 'post', dataType : 'json', error : function(e){ console.error(e.message); } }); $.ajax({ url : '/projekty/edit.json', // nadpisuje ust. ogólne data : JSON.stringify({id, name}), success : function(resp ){ render(resp); } });
Znajdź pliki z podkatalogu projekty/ nowsze niż 14 dni i zapisz je do pliki_find.txt
# cd CRM/ # find projekty/ -type f -mtime -14 > pliki_find_pl.txt -type f - tylko pliki -mtime -14 - nowszwe niż 2 tygodnie (minus nowsze, plus starsze, brak znaku dokładna data)
Utworzenie archiwum (skompresowane z) z plików o nazwach zawartych w pliki_find.txt
# tar -zcvf projekty_PL_20200802.tgz --files-from=pliki_find_pl.txt
# wc -l pliki_find_pl.txt 59 # tar -tvf projekty_PL_20200802.tgz | wc -l 59
Szyfrowanie z poziomu Javascript