?? sprawdz. tylko null i undefined, || sprawdz. 0, '', NaN, null, undefined, false && warunkowego wykonania kodu
Aktualizacja certyfikatu domeny
Dla konkretnej domeny
# certbot certonly -d firma.domena.pl
Dla wszystkich certyfikatów
# certbot renew
JS – $.ajax – console.error
$.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 ); } });
PHP Sury keys update
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
Tabela szeroka – kolumny fixed
Jeśli tabela nie mieści się w oknie i chcemy zachować lewe kolumny (np. Nazwa wiersza) podczas przewijania w prawo:
Docker Desktop – options
Przy dodawaniu nowego kontenera:
Komputer lokalny Docker --------------------------------------------------- Port : 5678 | 5679 : 5678 Volume : C:\...\n8n-data1 : /home/node/.n8n
Zmienne:
GENERIC_TIMEZONE : Europe/Warsaw TS : Europe/Warsaw
OpenAI – Javascript – starter
import OpenAI from "openai"; const client = new OpenAI(); const response = await client.responses.create({ model: "gpt-4.1", input: "Write a one-sentence bedtime story about a unicorn.", }); console.log(response.output_text);
Kolumna modified – aktualizowana przy każdej zmianie rekordu
-- Bez strefy czasowej ALTER TABLE invoices ADD COLUMN modified TIMESTAMP DEFAULT CURRENT_TIMESTAMP;
Czytaj dalej Kolumna modified – aktualizowana przy każdej zmianie rekordu
Kopiowanie projektu
Wygenerowane przez Claude AI
- kopia całego katalogu projektu do nowego katalogu
- wykluczenie niektórych katalogów
- kopia bazy danych z uprawnieniami
Powiększeni przestrzeni dyskowej w Aruba
Wygenerowane przez Claude.ai
HTTP2 – Apache2 – PHP8.4-fpm
- Włączenie modułu apache2 http2
- Zmiany w virtual hosts
- Zmiany w PHP
Pakiet npm – postgres
Postgres – tabele
Tworzenie tabeli
CREATE TABLE users ( id serial primary key, name varchar(80), age int, -- how many years temp_hi int, -- high temperature prcp real, -- precipitation date date );
-- <komentarz>
DESC users – struktura tabeli users
\d+ users
Typy
int, smallint, real, double precision, char(N), varchar(N), date, time, timestamp, interval
Wstawianie danych – kopiowanie z pliku do tabeli
COPY users FROM '/home/joe/users.txt';
Postgres – komendy
Poziom klienta – terminala psql
\l[+] - lista baz danych \dt[+] - lista tabel \dp - tabele, widoki, uprawnienia \du - użytkownicy / role
DESC users – struktura tabeli users
\d+ users
\dT[+] - schema \dO[+] - collations
help \?
\q - WYJŚCIE exit
select version(); PostgreSQL 13.20 (Debian 13.20-0+deb11u1) on x86_64-pc-linux-gnu, compiled by gcc
Zmiana nazwy usera i katalogu domowego
Zmiana nazwy usera – jako root
# usermod -l newuser olduser
# usermod -m -d /home/newuser newuser
Sprawdzenie
# cat /etc/passwd # ls -l /home
Postgresql – databases
Postgresql – users
Jako użytkownik postgres (su – postgres)
# shell createuser --pwprompt username # pyta o hasło
Postgresql – konfiguracja
Pliki konfiguracyjne
# ls /etc/postgresql/13/main/ conf.d environment pg_ctl.conf pg_hba.conf pg_ident.conf postgresql.conf start.conf
Restart serwera Postgresql
systemctl restart postgresql
Postgresql instalacja
apt install postgresql
Javascript – formatowanie liczb finansowych
var tc = new Intl.NumberFormat('pl-PL', { style: "currency", currency: "PLN" }).format(total_costs);
tc: 2 136 703,77 zł
var bilans = new Intl.NumberFormat('pl-PL').format(bilans);
bilans: 7 324 432,32
Autoryzacja next-auth.js
Python – VS Code – streamlit
Uruchomienie w konsoli:
streamlit run --server.headless=true <app.py>
nextjs – plik .gitignore
W projekcie Next.js prawidłowy plik .gitignore może wyglądać następująco:
Czytaj dalej nextjs – plik .gitignore
Nextjs – integracja z mysql
Aby zintegrować bazę danych MySQL z aplikacją Next.js, musisz wykonać kilka kroków. Next.js działa w środowisku Node.js, więc możesz użyć popularnych bibliotek, takich jak mysql2 lub ORM-ów typu `Prisma` czy TypeORM. Poniżej opisuję dwa podejścia: prostsze (z mysql2) i bardziej zaawansowane (z Prisma).
Nextjs wdrożenie na serwer
1. Zainstaluj Node.js i npm
Apache2 nie obsługuje natywnie Node.js, więc musisz zainstalować środowisko uruchomieniowe dla Next.js:
Plugin PDF
Silnik WKHTMLTOPDF: https://wkhtmltopdf.org/downloads.html
Plugin CakePDF: https://github.com/FriendsOfCake/CakePdf
Python instalacje:
Instalacja pakietu pod konkretną wersję pythona:
Domyślna wersja:
# python -V
Python 3.13.0
Export z tabeli do pliku CSV
SELECT "Nazwa Firmy", "Płeć", "Imię", "Nazwisko", "Stanowisko", "Tel", "Email", "Komórka" UNION SELECT c.name, CASE cc.is_man WHEN 2 THEN "K" WHEN 1 THEN 'M' ELSE '-' END, cc.firstname, cc.lastname, IFNULL(cc.stanowisko, "-"), IFNULL(cc.tel, "-"), IFNULL(cc.email,"-"), IFNULL(cc.kom,"-") FROM company_contacts cc INNER JOIN companies c ON c.id = cc.company_id ORDER BY cc.company_id, cc.lastname, cc.firstname LIMIT 20 INTO OUTFILE '/tmp/company_contacts.csv' CHARACTER SET CP1250 FIELDS ENCLOSED BY "" TERMINATED BY ';' ESCAPED BY '\\' LINES TERMINATED BY '\n' ;
ładowanie tabeli niepowiązanej
$products_table = $this->fetchTable("Products");
Windows – cache odwiedzanych stron
CMD as administrator # ipconfig/displaydns - wyświetli wszystkie odwiedzane strony # ipconfig/flushdns - kasuje wpisy