SELECT invoice_number, invoice_hash, seller_address, payment_method, sale_date, COUNT(*) OVER() as total FROM purchase_invoices;
-- ABC/123/2026 | bUkGCk34... | ul. Testowa 4 | Przelew | 2026-01-24 | 1
SELECT invoice_number, invoice_hash, seller_address, payment_method, sale_date, COUNT(*) OVER() as total FROM purchase_invoices;
-- ABC/123/2026 | bUkGCk34... | ul. Testowa 4 | Przelew | 2026-01-24 | 1
WIN+R – okno wyszukiwania
– wpisz komendę:
netplwiz - konta użytkowników - zalogowani - usunięcie
# adduser nowy_user // User nowy_user dodany do grupy sudo - uprawnienia roota # usermod -aG sudo nowy_user
Różne operacje na certyfikatach:
1. Wgrywamy wszystkie wymagane certyfikaty do /tmp/gus-cert 2. Przygotowujemy tylko certyfikaty w formacie PEM 3. Mogą mieć rozszerzenia .pem lub .crt 4. Zamieniamy rozszerzenia na .crt
# file *
certum_ov_tls_g2_r39_CA.crt: PEM certificate
certum_root.crt: PEM certificate
rootca.crt: PEM certificate
statca.crt: PEM certificate
stat_gov_pl.crt: PEM certificate
Kopiujemy wszystkie certyfikaty do katalogu: /usr/local/share/ca-certificates
# cp certum_ov_tls_g2_r39_CA.crt /usr/local/share/ca-certificates/ ...... # update-ca-certificates --fresh Clearing symlinks in /etc/ssl/certs... done. Updating certificates in /etc/ssl/certs... 142 added, 0 removed; done. Running hooks in /etc/ca-certificates/update.d... done. # systemctl restart apache2
Katalogi:
/etc/ssl/certs/ - z tego korzystają usługi
/etc/ssl/certs/ca-certificates.crt - plik wynikowy
/usr/local/share/ca-certificates/ - roboczy dla update-ca-certificates
# dos2unix gus-verify-certs.sh // LUB jeśli nie masz dos2unix: # sed -i 's/\r$//' gus-verify-certs.sh
https://claude.ai/chat/4cc1d3ee-fca7-47c3-ae8e-069e207e025c
W: Failed to fetch https://packages.sury.org/php/dists/bullseye/InRelease 503 certificate has expired [IP: 146.75.63.52 443]
W: Some index files failed to download. They have been ignored, or old ones used instead.
Linux install:
SELECT * FROM trs WHERE brand_id = 1 AND EXTRACT(YEAR FROM data) = EXTRACT(YEAR FROM CURRENT_DATE) AND EXTRACT(MONTH FROM data) = EXTRACT(MONTH FROM CURRENT_DATE) ORDER BY data DESC;
https://web2tr-ksef.mf.gov.pl/web/ – strona logowania
– uwierzytelnienie za pomocą podpisu zaufanego, podpisanie dokumentu
// ============================================ // KROK 2: IMPLEMENTACJA KSEFCLIENT I AUTORYZACJA // ============================================ // // W KSeF API 2.0 proces uwierzytelniania składa się z 3 kroków: // 1. Pobranie challenge (POST /auth/challenge) // 2. Przygotowanie żądania autoryzacyjnego z tokenem i challenge // 3. Uzyskanie JWT accessToken // ============================================ // Plik: src/KSeF/KSeFClient.php // ============================================
# composer require guzzlehttp/guzzle: ^7.10 # composer require phpseclib/phpseclib:~3.0
Upewnij się że PHP ma włączone rozszerzenie OpenSSL: # php -m | grep openssl (powinno pokazać "openssl")
token|timestampMs (bez challenge)credentials)Teraz mamy accessToken i możemy przejść do wysyłania faktur!
Krok 3 będzie obejmował:
Moduł wysyłania faktur!
To będzie obejmowało:
FakturaBuilder do tworzenia XML FA(3)W modelu Table nie można użyć metody $this->fetchTable(„Projects”) – ta metoda dostępna jest tylko dla Controllers.
src/Model/Table/InvoicesTable.php
use Cake\ORM\TableRegistry; class InvoicesTable extends Table { public function getProjects() { $projects = TableRegistry::getTableLocator()->get('Projects') ->find() ->where(['is_active' => 1]) ->all(); .... } // getProjects() ... } // class
Szuka pliku od katalogu roboczego (aktualnego) i we wszystkich podkatalogach
find . -name "5060bc35b695a2fd90320afca920f32a"
Wszystkie pliki i podkatalogi /home/john/my_app/ zostaną wgrane do roboczego katalogu .
# rsync -av johnny@194.127.230.100:/home/johnny/my_app/ .
Backup zostanie wgrany ze zdalnego systemu do katalogu roboczego
# rsync -av johnny@194.137.231.100:/home/johnny/backup/myapp-20251120.sql .
$this->Form->create($article); // Article controls. echo $this->Form->control('title'); // Author controls (belongsTo) echo $this->Form->control('author.id'); echo $this->Form->control('author.first_name'); echo $this->Form->control('author.last_name'); // Author profile (belongsTo + hasOne) echo $this->Form->control('author.profile.id'); echo $this->Form->control('author.profile.username'); // Tags controls (belongsToMany) // as separate inputs echo $this->Form->control('tags.0.id'); echo $this->Form->control('tags.0.name'); echo $this->Form->control('tags.1.id'); echo $this->Form->control('tags.1.name'); // Inputs for the joint table (articles_tags) echo $this->Form->control('tags.0._joinData.starred'); echo $this->Form->control('tags.1._joinData.starred'); // Comments controls (hasMany) echo $this->Form->control('comments.0.id'); echo $this->Form->control('comments.0.comment'); echo $this->Form->control('comments.1.id'); echo $this->Form->control('comments.1.comment'); $this->Form->end();
JSON – brak RequestHandlera zamiast tego JsonView
Plugin PDF – WkHtmlToPdf rekomendowany silnik
# composer require friendsofcake/cakepdf
Plugin CSV – instalacja w katalogu aplikacji
# composer require friendsofcake/cakephp-csvview
Zmieniło się: typowanie, json, fetchTable
Kopiowanie plików przez sieć, przenoszenie bazy, certyfikaty,
https://claude.ai/chat/b62ab800-58cd-4c56-96ea-c9d9937b03f4
https://claude.ai/chat/f46e500d-d53c-4f3f-8d6f-70df53d31673
use Cake\Database\Expression\QueryExpression; $this->Table->updateAll(['amount_remain' => new QueryExpression('amount') ], $conditions);
.spinner {
/* ... */
opacity: 0;
animation:
fadeIn 500ms 100ms forwards,
rotate 1s linear infinite;
}
@keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
@keyframes rotate {
to {
transform: rotate(360deg);
}
}
private function getWeekDateRange($year, $week) { // Utworzenie obiektu DateTime dla pierwszego dnia określonego tygodnia $dto = new DateTime(); $dto->setISODate($year, $week); // Pierwszy dzień tygodnia (poniedziałek) $start_date = $dto->format('Y-m-d'); // Dodanie 6 dni aby otrzymać ostatni dzień tygodnia (niedziela) $dto->modify('+6 days'); $end_date = $dto->format('Y-m-d'); return [ 'start_date' => $start_date, 'end_date' => $end_date ]; }
?? sprawdz. tylko null i undefined, || sprawdz. 0, '', NaN, null, undefined, false && warunkowego wykonania kodu
Dla konkretnej domeny
# certbot certonly -d firma.domena.pl
Dla wszystkich certyfikatów
# certbot renew
$.ajax({ url: '/api/products/get-all.json', type: 'GET', dataType: 'json', success(resp) { if(resp.resp.error) { $("#feedback").text(resp.resp.error).addClass('text-danger'); return; } $("#feedback").text(resp.resp.success).addClass('text-success'); }, error(e){ var message = ""; if(e.responseJSON !== 'undefined') message = e.responseJSON.message; if(e.responseText !== 'undefined') message = e.responseText.message; console.log(message ); } });
Błąd po komendzie apt update – klucz publiczny PHP wygasł
Err:6 https://packages.sury.org/php bullseye InRelease The following signatures couldn't be verified because the public key is not available: NO_PUBKEY B188E2B695BD4743
Jeśli tabela nie mieści się w oknie i chcemy zachować lewe kolumny (np. Nazwa wiersza) podczas przewijania w prawo:
Przy dodawaniu nowego kontenera:
Komputer lokalny Docker --------------------------------------------------- Port : 5678 | 5679 : 5678 Volume : C:\...\n8n-data1 : /home/node/.n8n Volume : C:\...\n8n-pliki : /pliki_n8n
Zmienne:
GENERIC_TIMEZONE : Europe/Warsaw TS : Europe/Warsaw