URLSearchParams() – narzędzie/obiekt do obsługi query params.
https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams
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
Lista nagłówków HTTP
Obliczanie ilości dni na podstawie daty początku i końca – przy wstawianiu nowego rekordu
Zakładamy że
Czytaj dalej Ładowanie danych z pliku do tabeli – procedurą składowaną
Jest wiele rodzajów
Funkcja – jeśli warunek jest prawdziwy zwraca expr1 w przeciwnym wypadku expr2
IF(warunek, expr1, expr2)
Pozycje liczone są od nr. 1
INSTR zwraca pozycję wystąpienia separatora / znaku.
> SELECT INSTR('foobarbar', 'bar'); -> 4
Dostęp do parametrów stronicowania dla modelu Phones
$paging = $this->getRequest()->getParam('paging'); $page = $paging['Phones']['page']; $limit = $paging['Phones']['perPage'];
<td class="text-center"><?= ++$ind + (($page -1) * $limit) ?></td>
Konfiguracja środowiska PDF z silnikiem wkhtmltopdf
Standard kodowania plików kalendarzy ogólnie dostępnych i dynamicznie aktualizowanych w Internecie
Wyczyszczenie pamięci podręcznej frameworku:
# bin/cake cache clear_all
Cleared default cache Cleared _cake_core_ cache Cleared _cake_model_ cache Cleared _cake_routes_ cache
> UPDATE mysql.user SET Password = PASSWORD('nowe_hasło') WHERE User = 'user_name' AND Host = 'localhost'; > FLUSH PRIVILEGES;
Towary powiązane z produktami i wersjami – zliczamy ilości w każdym sklepie
Przeszukiwanie różnych fragmentów tekstu rozdzielonych spacjami.
$search = preg_replace('/\s+/', '%', $search_str);
Tabele MySQL
CREATE TABLE files (
id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
file_type_id INT UNSIGNED,
project_id INT UNSIGNED,
orygname VARCHAR(255) NOT NULL,
dir VARCHAR(255),
filename VARCHAR(255) NOT NULL,
ext CHAR(9),
description TEXT,
module ENUM ('project')
is_active TINYINT(1) DEFAULT 1,
user_id INT UNSIGNED NOT NULL,
created DATETIME,
modified DATETIME,
);
CREATE TABLE file_types ( id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255) NOT NULL, description TEXT );
Utworzenie funkcji składowanej w MySQL
Utworzenie procedury składowanej w MySQL
DELIMITER $$ CREATE PROCEDURE low_amount() BEGIN SELECT ip.id, ip.product_id, ip.brand_id, ip.amount_alert, ip.is_ordered, SUM(ip.amount) AS suma, p.name AS product, b.initials, b.name AS brand FROM item_packs ip INNER JOIN products p ON p.id=ip.product_id INNER JOIN brands b ON b.id=ip.brand_id GROUP BY ip.product_id, ip.brand_id HAVING suma <= ip.amount_alert; END $$ DELIMITER ;
SHOW PROCEDURE STATUS -- wszystkie procedury SHOW PROCEDURE STATUS [LIKE 'my_procedure' | WHERE search_condition] SHOW CREATE PROCEDURE my_procedure;
DROP PROCEDURE [IF EXISTS] my_procedure; SHOW PROCEDURE STATUS WHERE Db='myDababaseName' \G
DELIMITER $ CREATE PROCEDURE user_projects(p_user_id INT) BEGIN SELECT p.id, p.status_id, COUNT(*) AS count, SUM(p.price) AS total, SUM(p.price * (ch.percent / 100)) AS weighted FROM projects p LEFT JOIN chances ch ON p.chance_id=ch.id WHERE p.manager_id = p_user_id AND p.status_id <> 3 -- bez odrzuconych GROUP BY p.status_id ; END $ DELIMITER ;
Wywołanie procedury w CakePHP 3
$connection = \Cake\Datasource\ConnectionManager::get('default');
$results = $connection->execute('CALL low_amount()')->fetchAll('assoc');
$this->set(compact('results'));
Nie można uaktualnić apt-update – błąd sygnatury
# apt-key adv --keyserver hkp://pool.sks-keyservers.net:80 --recv-keys 23E7166788B63E1E
Skrypt php po stronie backendu
Wymagane rozszerzenia PHP:
# apt install php7.4-soap
# composer require gusapi/gusapi
W jaki sposób sprawdzić które tabele mają zdefiniowane klucze obce do tabeli users.
SELECT
TABLE_NAME,
COLUMN_NAME,
CONSTRAINT_NAME, -- <<-- Nazwa potrzebna do skasowania
REFERENCED_TABLE_NAME,
REFERENCED_COLUMN_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE
REFERENCED_TABLE_NAME = 'users'\G
+------------+-------------+-----------------+-----------------------+------------------------+ | TABLE_NAME | COLUMN_NAME | CONSTRAINT_NAME | REFERENCED_TABLE_NAME | REFERENCED_COLUMN_NAME | +------------+-------------+-----------------+-----------------------+------------------------+ | articles | user_id | user_key | users | id | | bookmarks | user_id | ub_key | users | id | +------------+-------------+-----------------+-----------------------+------------------------+
Druga wersja
SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE REFERENCED_TABLE_SCHEMA IS NOT NULL;
+--------------+---------------+-------------+-----------------+ | TABLE_SCHEMA | TABLE_NAME | COLUMN_NAME | CONSTRAINT_NAME | +--------------+---------------+-------------+-----------------+ | intranet | articles | user_id | user_key | | intranet | articles_tags | article_id | article_key | | intranet | articles_tags | tag_id | tag_key | | intranet | bookmarks | user_id | ub_key | +--------------+---------------+-------------+-----------------+
Inicjalizacja projektu – utworzenie composer.json
# composer init