Standard kodowania plików kalendarzy ogólnie dostępnych i dynamicznie aktualizowanych w Internecie
Autor: jornathan
Clear cache – cakephp 3
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
Mysql zmiana hasła usera
> UPDATE mysql.user SET Password = PASSWORD('nowe_hasło') WHERE User = 'user_name' AND Host = 'localhost'; > FLUSH PRIVILEGES;
Grupowanie towarów wg. ilości w sklepach
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);
CakpPHP – wgrywanie plików na serwer
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 );
CakePHP 3 MySQL – funkcje składowane
Utworzenie funkcji składowanej w MySQL
CakePHP MySQL – procedury składowane
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'));
The following signatures were invalid: EXPKEYSIG 23E7166788B63E1E
Nie można uaktualnić apt-update – błąd sygnatury
# apt-key adv --keyserver hkp://pool.sks-keyservers.net:80 --recv-keys 23E7166788B63E1E
GUS API skrypty użytkowe
Skrypt php po stronie backendu
GUS API – konfiguracja
GUS API środowisko, instalacja
Wymagane rozszerzenia PHP:
# apt install php7.4-soap
# composer require gusapi/gusapi
MySQL – foreign key – lista powiązanych kluczy
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 | +--------------+---------------+-------------+-----------------+
composer – podstawowe komendy
Inicjalizacja projektu – utworzenie composer.json
# composer init
composer – komendy admininstracyjne
Zainstalowane pakiety
# composer show # composer show [vendor/*] # composer show monolog/monolog
vsftp – ssl/tls
# openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
CakePHP migrations
Plugin wspierający zmiany w schemacie bazy danych
https://book.cakephp.org/migrations/3/en/index.html
# composer require cakephp/migrations "@stable"
# bin/cake plugin load Migrations
CakaPHP update
# composer require --update-with-dependencies "cakephp/cakephp:3.8.*"
MongoDB – admin
MongoDB – instalacja
# apt list --installed | grep mongodb
Bazowe instalacje – node.js
Automatycznie restartuje node.js gdy zauważy zmiany w kodzie
# npm init
Nodejs – Yarn package manager
instalacja
# curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - # echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list # apt-get update && apt-get install yarn
# yarn yarn install v1.19.1 info No lockfile found. [1/4] Resolving packages... [2/4] Fetching packages... [3/4] Linking dependencies... [4/4] Building fresh packages... success Saved lockfile. Done in 0.10s.
tinymce – pełne URL obrazków
Obrazki wstawiane są z względnymi ścieżkami do dokumentów. Jest to problem podczas generowania PDF który pobierze obrazek tylko jeśli src zawiera pełny adres URL. W takim przypadku należy dodać linie:
relative_urls : false,
remove_script_host: false,
convert_urls : true,
pierwsza linia powinna wystarczyć.
To może być problemem w przypadku zmiany domeny (przenoszenia serwisu) – obrazki wciąż będą wskazywały na stary URL.
CsvView – cakePHP Plugin
Plugin do eksportu zasobów w formacie csv
# composer require friendsofcake/cakephp-csvview:~3.0 - dla Cakephp 3.x # composer require friendsofcake/cakephp-csvview - dla v.4.x # bin/cake plugin load CsvView
Paralaksa – JS – Rellax plugin
Realizacja paralaksy za pomocą pluginu JS (rellax.min.js)
Validator – reguły – cakePHP 3
Lista wbudowanych reguł walidatora
Paginator – limit – cakePHP 3
Daje możliwość zmiany ilości rekordów dla użytkownika
Localized plugin – cakePHP 3
Plugin do walidacji danych ekonomicznych wg. krajów: regon, pesel, nip, telefon, kod pocztowy,
TinyMCE – images
Integracja z zapleczem cakephp w celu dołączania obrazków
TinyMCE – selfhosted
Pobierz TinyMCE
Time zone linux
# /usr/sbin/dpkg-reconfigure tzdata Europe/Warsaw