Ogólne

 0    443 kartičky    nowakowskilukasz12
stáhnout mp3 Vytisknout hrát zkontrolovat se
 
otázka język polski odpověď język polski
Co to jest atak mass assignment?
začněte se učit
Atakujący dopisuje do requestu dodatkowe pole (np. is_admin), które przez update($request->all()) zostaje masowo przypisane do modelu.
Czy ORM zawsze chroni przed SQL Injection?
začněte se učit
Nie - tylko przy użyciu standardowego API z bindingami.
Które metody w Laravelu omijają ochronę ORM przed SQL Injection?
začněte se učit
DB: raw(), whereRaw(), orderByRaw() oraz NativeQuery w Doctrine.
Jak bezpiecznie posortować wyniki po kolumnie z parametru URL?
začněte se učit
Filtrować przez białą listę dozwolonych nazw kolumn, nigdy wstawiać wartość z requestu wprost do ORDER BY.
Gdzie fizycznie trzymany jest token CSRF - w cookie czy poza nim?
začněte se učit
Poza cookie - w ukrytym polu formularza lub nagłówku.
Dlaczego stateless API z Bearer tokenem nie potrzebuje ochrony CSRF?
začněte se učit
Przeglądarka nie dołącza automatycznie nagłówka Authorization do requestów z obcych stron, w przeciwieństwie do cookies.
Co to jest session fixation?
začněte se učit
Atakujący podrzuca ofierze znany sobie z góry session ID, a po jej zalogowaniu przejmuje uwierzytelnioną sesję.
Dlaczego md5/sha1 nie nadają się do hashowania haseł?
začněte se učit
Są celowo szybkie, co pozwala atakującemu próbować miliardy kombinacji na sekundę przy wycieku bazy.
Dlaczego bcrypt/argon2id nadają się do hashowania haseł?
začněte se učit
Są celowo wolne i konfigurowalnie kosztowne, co drastycznie ogranicza liczbę prób brute-force na sekundę.
Co daje wbudowana sól w bcrypt/argon2id?
začněte se učit
Dwa identyczne hasła dają różne hashe, co chroni przed rainbow tables.
Co to jest PHP Object Injection?
začněte se učit
unserialize() na inpucie od atakującego może stworzyć dowolny obiekt PHP i wywołać jego magiczne metody z efektem ubocznym.
Czym bezpiecznie zastąpić unserialize() na danych od użytkownika?
začněte se učit
json_decode() - nie tworzy dowolnych obiektów PHP.
Jak chronić logowanie przed brute-force?
začněte se učit
Rate limiting jednocześnie per IP i per konto, plus rosnące opóźnienie po nieudanej próbie.
Dlaczego komunikat błędu logowania nie powinien mówić czy zły był login czy hasło?
začněte se učit
Jeden ogólny komunikat zapobiega enumeracji istniejących kont w systemie.
Jaki jest realny wektor ataku przy nazwie pliku image. jpg. php?
začněte se učit
Podwójne rozszerzenie może wykonać się jako PHP zależnie od konfiguracji serwera.
Jak bezpiecznie sprawdzać typ uploadowanego pliku?
začněte se učit
Po rzeczywistej zawartości pliku, nigdy po nagłówku Content-Type kontrolowanym przez klienta.
Gdzie przechowywać uploadowane pliki, żeby ograniczyć ryzyko?
začněte se učit
Poza katalogiem serwowanym bezpośrednio przez webserver, z losową nazwą pliku.
Co to jest IDOR?
začněte se učit
Endpoint sprawdza czy user jest zalogowany, ale nie czy ma prawo do TEGO konkretnego zasobu.
Jak Policy/Voter naprawiają podatność IDOR?
začněte se učit
Wymuszają jawne sprawdzenie uprawnień na poziomie konkretnego obiektu, np. authorize('view', $invoice).
Co sprawdza composer audit?
začněte se učit
Zainstalowane wersje pakietów względem bazy znanych podatności CVE.
Co robi nagłówek Content-Security-Policy?
začněte se učit
Ogranicza źródła, z których przeglądarka może ładować skrypty/style - dodatkowa warstwa obrony przed XSS.
Co robi nagłówek Strict-Transport-Security (HSTS)?
začněte se učit
Wymusza, żeby przeglądarka zawsze łączyła się przez HTTPS z daną domeną.
Co robi X-Frame-Options / frame-ancestors?
začněte se učit
Blokuje osadzanie strony w iframe na obcej domenie, chroniąc przed clickjackingiem.
Czy usunięcie sekretu z pliku w nowym commicie usuwa go z repozytorium?
začněte se učit
Nie - sekret zostaje w historii gita, trzeba go rotować i użyć git filter-repo.
Dlaczego walidacja tylko po stronie frontendu to ryzyko bezpieczeństwa?
začněte se učit
Atakujący pomija formularz i wysyła dowolny request wprost do API przez curl albo Postman.
Jak bezpiecznie unieważnić stateless JWT przed jego wygaśnięciem?
začněte se učit
Krótki access token plus długożyjący refresh token po stronie serwera, który da się unieważnić.
Dlaczego sprawdź czy klucz istnieje, potem ustaw jest niebezpieczne dla locka w Redis?
začněte se učit
Między dwiema operacjami jest okno czasowe, w którym inny proces zdąży zrobić to samo - race condition.
Co to jest XSS w skrócie?
začněte se učit
Atak polegający na wstrzyknięciu i wykonaniu złośliwego JavaScriptu w przeglądarce ofiary.
Co to jest CSRF w skrócie?
začněte se učit
Atak wykorzystujący to, że przeglądarka automatycznie dołącza cookies ofiary do sfałszowanego requestu.
Czym różni się kontrola przepływu w Symfony od Laravela?
začněte se učit
W Symfony jest rozproszona i deklaratywna przez eventy, w Laravelu jawna i sekwencyjna przez middleware.
Czym różni się kontener Symfony od kontenera Laravela pod względem budowy?
začněte se učit
Symfony generuje gotowy kod PHP przy kompilacji, Laravel buduje graf zależności przez Reflection w runtime.
Czym fundamentalnie różni się Doctrine od Eloquenta?
začněte se učit
Doctrine to Data Mapper - encja nie wie o bazie, Eloquent to Active Record - model sam się zapisuje.
Co daje retry_strategy w Messengerze ponad tries/backoff z Laravela?
začněte se učit
Osobną strategię retry per transport, konfigurowaną w YAML bez kodu w każdej wiadomości.
Dlaczego przełączenie symlinku na nowy release jest bezpieczne w trakcie ruchu?
začněte se učit
Stary release nadal obsługuje ruch podczas budowania cache, a przełączenie jest atomowe.
Co dokładnie przechowuje OPcache?
začněte se učit
Skompilowany opcode (bytecode), nie tekst źródłowy pliku PHP.
Czym różni się OPcache od Redis/Memcached?
začněte se učit
OPcache przyspiesza wykonanie kodu PHP, Redis/Memcached cache'uje wyniki zapytań/danych.
Co się psuje przy opcache. validate_timestamps=0 bez restartu PHP-FPM po deployu?
začněte se učit
Serwer nadal wykonuje stary, zcache'owany bytecode mimo podmienionych plików na dysku.
Jak zresetować OPcache po deployu bez restartu PHP-FPM?
začněte se učit
Wywołać opcache_reset().
Dlaczego strategia symlinkowa eliminuje potrzebę ręcznego resetu OPcache?
začněte se učit
Każdy release to inna ścieżka na dysku, więc OPcache nie ma w cache nowych plików.
Dlaczego ALTER TABLE ADD COLUMN NOT NULL na dużej tabeli może dać downtime?
začněte se učit
Może wymagać przepisania całej tabeli i trzymać blokadę na zapisy przez cały czas trwania.
Jak bezpiecznie dodać kolumnę NOT NULL na dużej tabeli?
začněte se učit
Najpierw jako nullable, wypełnić dane w tle batchami, dopiero potem osobną migracją dodać NOT NULL.
Co to znaczy, że migracja musi być kompatybilna wstecz przy rolling deploy?
začněte se učit
Stary i nowy kod działają jednocześnie na różnych instancjach - migracja nie może usuwać czegoś, z czego stary kod jeszcze korzysta.
Jaki jest pierwszy krok bezpiecznego dodania wymaganego pola z zerowym downtime?
začněte se učit
Migracja dodająca kolumnę jako nullable, bez wymuszania wartości na istniejących wierszach.
Dlaczego worker kolejki trzeba restartować po deployu, a PHP-FPM nie?
začněte se učit
Worker trzyma w pamięci raz wczytany kod z momentu startu procesu.
Jaki jest realny koszt zbyt dużej liczby indeksów przy zapisach?
začněte se učit
Każdy indeks musi być zaktualizowany przy INSERT/UPDATE/DELETE, spowalniając zapisy.
Dlaczego dodaj with() wszędzie z automatu to zła praktyka?
začněte se učit
Eager loading którego nikt nie potrzebuje marnuje czas zapytania i pamięć.
Co pokazuje kolumna type=ALL w EXPLAIN?
začněte se učit
Pełny skan tabeli - silnik przegląda każdy wiersz, indeks nie jest użyty.
Co pokazuje kolumna type=ref lub range w EXPLAIN?
začněte se učit
Że zapytanie korzysta z indeksu.
Dlaczego funkcja na kolumnie w WHERE (np. DATE(created_at)) blokuje użycie indeksu?
začněte se učit
Indeks jest zbudowany na surowej kolumnie, nie na wyniku funkcji.
Dlaczego LIKE '%something%' nie może użyć standardowego indeksu B-tree?
začněte se učit
Wildcard na początku uniemożliwia przeszukiwanie od lewej strony indeksu.
Dlaczego indeks na kolumnie boolean bywa bezużyteczny?
začněte se učit
Zbyt niska selektywność - optymalizator uzna pełny skan za tańszy niż skakanie po indeksie.
Jaka kolumna powinna być pierwsza w indeksie kompozytowym: równościowa czy zakresowa?
začněte se učit
Równościowa (=) - kolumna zakresowa (>, <, BETWEEN) powinna być ostatnia.
Dlaczego indeks kompozytowy bywa lepszy niż dwa osobne indeksy jednokolumnowe?
začněte se učit
Pozwala w jednym przejściu po B-tree zawęzić dokładnie do potrzebnych wierszy.
Jaki jest koszt każdego dodatkowego indeksu?
začněte se učit
Musi być aktualizowany przy każdym INSERT/UPDATE/DELETE, spowalniając zapisy.
Co to jest soft delete?
začněte se učit
Oznaczenie rekordu jako usuniętego (np. kolumną deleted_at) zamiast fizycznego usunięcia.
Co to jest constraint na poziomie bazy danych?
začněte se učit
Ograniczenie typu NOT NULL, UNIQUE, CHECK lub FOREIGN KEY wymuszane przez silnik bazy.
Czym różni się CHAR od VARCHAR?
začněte se učit
CHAR ma stałą długość, VARCHAR zmienną - VARCHAR jest bardziej elastyczny.
Co to są migracje bazy danych?
začněte se učit
Wersjonowanie struktury bazy pozwalające synchronizować schemat i rollbackować zmiany.
Jak monitorować wydajność zapytań do bazy?
začněte se učit
Slow query log, monitoring zapytań w czasie rzeczywistym i analiza EXPLAIN.
Jakie błędy bazodanowe najczęściej występują na produkcji?
začněte se učit
Brak indeksów, N+1, deadlocki, zbyt długie transakcje, brak limitów w zapytaniach.
Dlaczego używam ORM nie zwalnia z myślenia o wydajności zapytań?
začněte se učit
ORM generuje SQL, ale to programista odpowiada za jego efektywność.
Dlaczego trzeba regularnie rotować sekrety produkcyjne?
začněte se učit
Ograniczają okno czasowe, w którym wyciekły sekret jest użyteczny dla atakującego.
Co jest potrzebne, by rotacja sekretu przebiegła bez downtime?
začněte se učit
Wsparcie dwóch aktywnych wersji naraz, zanim stara zostanie unieważniona.
Dlaczego aplikacja nie powinna łączyć się z bazą jako root?
začněte se učit
Zasada least privilege ogranicza zakres szkód przy kompromitacji aplikacji.
Jakie uprawnienia powinien mieć użytkownik bazy używany przez aplikację?
začněte se učit
Tylko te faktycznie potrzebne - SELECT/INSERT/UPDATE/DELETE na konkretnych tabelach.
Dlaczego ENV DB_PASSWORD=xyz w Dockerfile jest niebezpieczne?
začněte se učit
Wartość zostaje na stałe w warstwie obrazu i jego historii.
Jak bezpiecznie przekazać sekret podczas budowania obrazu Dockera?
začněte se učit
Przez BuildKit --secret, który nie zapisuje wartości w żadnej warstwie.
Gdzie trzymać sekrety używane w pipeline CI/CD?
začněte se učit
W zaszyfrowanym storage narzędzia CI, nigdy w pliku konfiguracyjnym repo.
Czy maskowanie sekretów w logach CI zawsze działa?
začněte se učit
Nie - ominie je np. zakodowanie base64 lub połączenie z innym stringiem.
Co daje menadżer sekretów (Vault, AWS Secrets Manager) ponad. env?
začněte se učit
Audyt dostępu, automatyczną rotację i precyzyjne uprawnienia per sekret.
Dlaczego IAM role jest lepsza niż statyczny klucz API?
začněte se učit
Dostarcza tymczasowe, automatycznie rotowane poświadczenia bez przechowywania sekretu.
Co robisz najpierw, gdy wycieknie sekret produkcyjny?
začněte se učit
Natychmiastową rotację tego konkretnego sekretu.
Co robisz zaraz po rotacji wyciekłego sekretu?
začněte se učit
Audyt logów dostępu i unieważnienie aktywnych sesji/tokenów.
Dlaczego dev/staging nie powinny mieć dostępu do prawdziwych sekretów produkcyjnych?
začněte se učit
Mają zwykle słabsze zabezpieczenia - to najsłabsze ogniwo wycieku.
Dlaczego dane produkcyjne w środowisku testowym to osobne ryzyko?
začněte se učit
Problem zgodności z RODO - dane powinny być zanonimizowane.
Czy usunięcie hasła z kodu w kolejnym commicie usuwa je z repo?
začněte se učit
Nie - nadal jest w historii gita.
Dlaczego hardcodowanie sekretu w prywatnym repo też jest złe?
začněte se učit
Widoczne dla każdego kto kiedykolwiek dostanie dostęp - kontraktorów, forki.
Co to jest build-time secret?
začněte se učit
Sekret potrzebny tylko podczas budowania obrazu, np. token do rejestru paczek.
Co to jest runtime secret?
začněte se učit
Sekret potrzebny dopiero gdy kontener działa, np. hasło do bazy.
Jak wstrzykiwać runtime secret do kontenera?
začněte se učit
Przez zmienne środowiskowe albo montowany plik przy starcie, nigdy zapisany w obrazie.
Co kluczowego wprowadził PHP 8.0 względem PHP 7?
začněte se učit
JIT, union types, named arguments, match expression, nullsafe operator?->, atrybuty, constructor property promotion.
Co to jest constructor property promotion (PHP 8.0)?
začněte se učit
Deklarowanie i przypisywanie właściwości klasy bezpośrednio w sygnaturze konstruktora, bez powtarzania kodu.
Czym różni się match od switch w PHP 8?
začněte se učit
match używa ścisłego porównania (===), nie wymaga break i zwraca wartość jako wyrażenie.
Co robi operator nullsafe?-> w PHP 8?
začněte se učit
Zwraca null zamiast rzucać błąd, jeśli obiekt po lewej stronie jest null, przerywając dalsze wywołania łańcucha.
Co zmienił PHP 8.0 w obsłudze błędów funkcji wbudowanych?
začněte se učit
Wiele z nich zaczęło rzucać TypeError zamiast zwracać null/warning przy złych argumentach.
Co wprowadził PHP 8.1?
začněte se učit
Enumy, readonly properties, fibers, first-class callable syntax, typy intersection.
Czym są readonly properties (PHP 8.1)?
začněte se učit
Właściwość można zainicjalizować tylko raz w dozwolonym kontekście inicjalizacji (typowo konstruktor, ale nie jedyny możliwy przypadek) - kolejna próba przypisania rzuca błąd.
Co to są enumy w PHP 8.1?
začněte se učit
Typ wyliczeniowy z ograniczonym zbiorem wartości, może implementować interfejsy i mieć metody.
Co wprowadził PHP 8.2?
začněte se učit
Readonly classes, typy DNF, standalone types (true/false/null), deprecację dynamicznych właściwości.
Co zmienia deprecacja dynamicznych właściwości w PHP 8.2?
začněte se učit
Przypisanie właściwości nieistniejącej w deklaracji klasy generuje deprecation warning.
Co wprowadził PHP 8.3?
začněte se učit
Typed class constants, atrybut #[Override], funkcję json_validate().
Co wprowadził PHP 8.4?
začněte se učit
Property hooks i asymmetric visibility dla właściwości.
Co to jest asymmetric visibility (PHP 8.4)?
začněte se učit
Różna widoczność dla odczytu i zapisu tej samej właściwości, np. public read, private set.
Czym HTTP/2 różni się od HTTP/1.1?
začněte se učit
Multiplexing wielu requestów na jednym połączeniu TCP zamiast head-of-line blocking.
Czym HTTP/3 różni się od HTTP/2?
začněte se učit
Działa na protokole QUIC (UDP) zamiast TCP, eliminując blokowanie na poziomie transportu.
Czym Symfony Console różni się architektonicznie od Laravel Artisan?
začněte se učit
Artisan jest w praktyce cienką nakładką na komponent symfony/console używany przez Laravel pod spodem.
Czy Symfony ma wbudowany scheduler jak Laravel?
začněte se učit
Nie tradycyjnie - klasyczne podejście to zwykły cron systemowy wołający komendę konsolową (od Symfony 7.3 istnieje komponent Scheduler).
Co oznacza akronim SOLID?
začněte se učit
Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, Dependency Inversion.
Czym różni się DRY od KISS?
začněte se učit
DRY mówi nie powielaj logiki, KISS mówi nie komplikuj bez potrzeby - trzeba balansować oba.
Co oznacza zasada YAGNI?
začněte se učit
You Aren't Gonna Need It - nie implementuj czegoś, dopóki nie jest faktycznie potrzebne.
Co oznacza SRP w praktyce?
začněte se učit
Jedna klasa, jeden powód do zmiany.
Dlaczego rozbicie OrderService na mniejsze klasy nie jest tylko estetyczne?
začněte se učit
Każda odpowiedzialność zmienia się z innego powodu i w innym tempie.
Jaki wzorzec zastępuje rosnący if/elseif na typ płatności?
začněte se učit
Strategy pattern - interfejs z osobną implementacją per dostawca.
Jak dodanie nowego dostawcy płatności zgodnie z OCP wpływa na istniejący kod?
začněte se učit
Zwykle nie wymaga zmiany istniejącego kodu biznesowego - dodajemy nową klasę implementującą interfejs i konfigurujemy DI.
Co łamie zasadę LSP w przykładzie CachedRepository rzucającego wyjątek zamiast zwrócić null?
začněte se učit
Podklasa zmienia kontrakt metody bazowej w sposób niewidoczny na etapie kompilacji.
Dlaczego złamanie LSP jest podstępniejsze niż inne naruszenia SOLID?
začněte se učit
Kod kompiluje się i przechodzi typechecking, a mimo to zachowuje się nieprzewidywalnie w runtime.
Co łamie ISP w jednym dużym interfejsie Repository?
začněte se učit
Klasa musi implementować metody, których nigdy nie użyje.
Jak naprawić naruszenie ISP w dużym interfejsie?
začněte se učit
Rozbić na mniejsze, węższe interfejsy per odpowiedzialność.
Czym DI (Dependency Injection) różni się od DIP (Dependency Inversion)?
začněte se učit
DI to technika wstrzykiwania obiektu, DIP to zasada zależności od abstrakcji, nie konkretnej implementacji.
Czy można stosować DI bez DIP?
začněte se učit
Tak - wstrzykując konkretną klasę zamiast interfejsu, logika nadal jest sprzężona z implementacją.
Kiedy Repository pattern faktycznie się opłaca?
začněte se učit
Gdy realnie planujesz zmianę źródła danych albo chcesz testować logikę bez zależności od frameworka.
Kiedy Repository pattern to niepotrzebny narzut?
začněte se učit
W małej aplikacji CRUD, gdzie Eloquent wystarczy na lata.
Jak Decorator dodaje cache do repozytorium bez zmiany jego kodu?
začněte se učit
Nowa klasa implementuje ten sam interfejs i owija realną implementację.
Czy Laravel Events / Symfony EventDispatcher to czysty GoF Observer?
začněte se učit
Nie do końca - pośredniczy globalny Dispatcher, subject nie zna listenerów bezpośrednio.
Jaki jest sygnał, że wzorzec projektowy to overengineering?
začněte se učit
Interfejs z jedną, jedyną implementacją na wszelki wypadek.
Do czego służy typ String w Redis?
začněte se učit
Cache pojedynczej wartości lub licznik przez INCR.
Do czego służy typ Hash w Redis?
začněte se učit
Mapa pole-wartość pod jednym kluczem, np. cały obiekt usera bez serializacji do JSON.
Do czego służy typ List w Redis?
začněte se učit
Prosta kolejka lub stos przez LPUSH/RPOP.
Do czego służy typ Set w Redis?
začněte se učit
Unikalne elementy z szybkim sprawdzeniem przynależności przez SISMEMBER.
Do czego służy Sorted Set w Redis?
začněte se učit
Ranking/leaderboard i rate limiting z oknem czasowym przez ZADD/ZRANGE.
Czym jest RDB w Redis?
začněte se učit
Okresowy snapshot całego stanu do pliku binarnego - szybki restart, ryzyko utraty danych od ostatniego zapisu.
Czym jest AOF w Redis?
začněte se učit
Log każdej operacji zapisu, jak WAL - mniejsza utrata danych, wolniejszy restart.
Która polityka eviction pasuje do Redisa jako czystego cache?
začněte se učit
allkeys-lru lub allkeys-lfu.
Dlaczego noeviction jest błędem dla czystego cache?
začněte se učit
Redis zacznie odrzucać zapisy zamiast usuwać stare wpisy przy zapełnionej pamięci.
Jaki jest problem z rate limitingiem przez osobne INCR i EXPIRE?
začněte se učit
Między komendami jest okno czasowe - klucz może zostać bez TTL na zawsze.
Jak bezpiecznie zrobić atomowy rate limiting w Redis?
začněte se učit
Skryptem Lua łączącym INCR i EXPIRE w jedną niepodzielną operację.
Jaka jest pułapka Redisa jako session store przy równoległych requestach?
začněte se učit
Drugi zapis może nadpisać zmiany pierwszego (lost update).
Jaka jedna komenda bezpiecznie realizuje distributed lock w Redis?
začněte se učit
SET key value NX EX ttl.
Co robi Redis Sentinel?
začněte se učit
Monitoruje master/replica i automatycznie promuje replikę przy awarii.
Co robi Redis Cluster?
začněte se učit
Dzieli dane (sharding) między wiele węzłów po hashu klucza.
Dlaczego KEYS pattern* jest niebezpieczne na produkcji?
začněte se učit
Redis jest jednowątkowy - KEYS blokuje wszystkie inne operacje na czas skanowania.
Czym zastąpić KEYS na produkcji?
začněte se učit
SCAN z kursorem.
Jak działa exchange typu direct?
začněte se učit
Routing key musi dokładnie pasować do binding key kolejki.
Jak działa exchange typu topic?
začněte se učit
Routing key z wildcardami * i # - elastyczne dopasowanie wzorca.
Jak działa exchange typu fanout?
začněte se učit
Ignoruje routing key, wysyła kopię do wszystkich podłączonych kolejek.
Jak działa exchange typu headers?
začněte se učit
Routing na podstawie nagłówków wiadomości, nie routing key.
Co gwarantuje trwałość samej definicji kolejki?
začněte se učit
durable: true przy deklaracji kolejki.
Co gwarantuje zapisanie konkretnej wiadomości na dysk?
začněte se učit
delivery_mode: 2 (persistent message).
Czy sama durable queue wystarczy, by wiadomość przeżyła restart brokera?
začněte se učit
Nie - potrzebna jest też persistent message.
Co się dzieje z wiadomością przy auto-ack, gdy konsument padnie w trakcie przetwarzania?
začněte se učit
Jest bezpowrotnie stracona - broker uznał ją za dostarczoną od razu.
Co się dzieje z wiadomością przy manual ack, gdy konsument padnie przed ack?
začněte se učit
Broker wykrywa zerwane połączenie i doręcza ją ponownie.
Co określa prefetch count?
začněte se učit
Ile nieodpowiedzianych wiadomości broker może wysłać do jednego konsumenta naraz.
Dlaczego brak limitu prefetch jest niebezpieczny?
začněte se učit
Może zalać wolnego konsumenta tysiącami wiadomości naraz.
Kiedy wiadomość trafia do Dead Letter Exchange?
začněte se učit
Gdy zostanie odrzucona, wygaśnie jej TTL, albo kolejka osiągnie max długość.
Czym DLX różni się od failed_jobs w Laravelu?
začněte se učit
Działa na poziomie brokera, łapie też przypadki jak OOM kill konsumenta.
Dlaczego kolejki gwarantują at-least-once, a nie exactly-once?
začněte se učit
Broker nie ma pewności, czy konsument zdążył wysłać ack po przetworzeniu.
Co musi zapewnić kod konsumenta przy at-least-once delivery?
začněte se učit
Idempotentność - wielokrotne przetworzenie tej samej wiadomości musi dać ten sam efekt.
Czym różni się Redis pub/sub od RabbitMQ trwałościowo?
začněte se učit
Redis pub/sub jest bez trwałości - nieaktywny subskrybent traci wiadomość bezpowrotnie.
Co daje Laravel Queues/Symfony Messenger ponad surowy RabbitMQ?
začněte se učit
Wspólne API retry/backoff/failed jobs niezależnie od backendu.
Jaki błąd produkcyjny powoduje niekontrolowany wzrost opóźnień w kolejkach?
začněte se učit
Konsumenci przestają działać, a producenci dalej publikują.
Co to są Jobs/Queues w skrócie?
začněte se učit
Mechanizm asynchronicznego wykonywania zadań, np. maili, webhooków, długich operacji.
Do czego służy Horizon (Laravel) / Messenger (Symfony) na poziomie operacyjnym?
začněte se učit
Monitoring kolejek, zarządzanie workerami, retry i failure handling.
Po co fixtures, skoro są migracje?
začněte se učit
Migracje odpowiadają za strukturę bazy, fixtures za przewidywalne dane testowe.
Czym różni się Stub od Mocka?
začněte se učit
Stub tylko zwraca dane, Mock dodatkowo weryfikuje jak został wywołany.
Czym różni się Fake od Spy?
začněte se učit
Fake to uproszczona implementacja, Spy obserwuje wywołania prawdziwego obiektu.
Jakie są trzy główne rodzaje testów?
začněte se učit
Unit, integracyjne i end-to-end (E2E).
Co sprawdzają testy jednostkowe?
začněte se učit
Pojedynczą jednostkę kodu w izolacji - powinny być szybkie i deterministyczne.
Co sprawdzają testy integracyjne?
začněte se učit
Współpracę kilku komponentów, np. serwis plus baza danych.
Co mówi piramida testów (test pyramid)?
začněte se učit
Dużo testów unit, mniej integracyjnych, najmniej E2E.
Na czym polega TDD?
začněte se učit
Cykl: napisz test (red), zaimplementuj (green), refactor.
Czym BDD różni się od TDD?
začněte se učit
Skupia się na zachowaniu systemu z perspektywy użytkownika, językiem Given/When/Then.
Czy 100% code coverage oznacza brak bugów?
začněte se učit
Nie - coverage pokazuje ile kodu jest testowane, nie jakość testów.
Co robi statyczna analiza kodu?
začněte se učit
Wykrywa błędy typów, martwy kod i naruszenia standardów bez uruchamiania programu.
Jakie narzędzia do statycznej analizy PHP są popularne?
začněte se učit
PHPStan, Psalm, PHP_CodeSniffer.
Co to jest flaky test?
začněte se učit
Test, który losowo przechodzi lub failuje, często przez zależność od czasu lub async.
Jak radzić sobie z flaky testami?
začněte se učit
Eliminacja sleepów, stabilne dane, poprawna synchronizacja zamiast czekania na czas.
Dlaczego rebase na wypchniętej gałęzi jest niebezpieczny?
začněte se učit
Przepisuje historię - każdy commit dostaje nowy hash, rozjeżdżając się z kopiami innych osób.
Na jakich gałęziach bezpiecznie robić rebase?
začněte se učit
Tylko lokalnych, niewypchniętych.
Co robi squash w interactive rebase?
začněte se učit
Łączy kilka commitów w jeden.
Kiedy stosuje się interactive rebase przed PR?
začněte se učit
Żeby uporządkować bałagan commitów w czytelną historię dla reviewera.
Na czym polega git bisect?
začněte se učit
Wyszukiwanie binarne commita, który wprowadził regresję.
O ile szybszy jest git bisect od ręcznego przeglądania przy 1000 commitach?
začněte se učit
Potrzeba ok. 10 kroków zamiast setek.
Co śledzi git reflog?
začněte se učit
Każdą zmianę wskaźnika HEAD lokalnie, nawet commity niedostępne z żadnej gałęzi.
Jak odzyskać commity po przypadkowym git reset --hard?
začněte se učit
Znaleźć je w git reflog i zrobić reset --hard na tamten hash.
Do czego służy git cherry-pick?
začněte se učit
Przeniesienia jednego konkretnego commita na inną gałąź, np. hotfix backport.
Jaki jest kompromis git-flow względem trunk-based development?
začněte se učit
Więcej struktury i bezpieczeństwa wydań kosztem bolesnych merge'y długich gałęzi.
Co robi kill (SIGTERM)?
začněte se učit
Prosi proces o zakończenie, dając szansę posprzątać.
Co robi kill -9 (SIGKILL)?
začněte se učit
Natychmiast ubija proces bez żadnej szansy na sprzątanie.
Kiedy używać kill -9?
začněte se učit
Tylko gdy proces zawiesił się i nie reaguje na SIGTERM.
Dlaczego chmod -R 777 na storage/var to zły pomysł?
začněte se učit
Daje zapis każdemu userowi na serwerze, nie tylko procesowi PHP-FPM.
Jakie poprawne uprawnienia dla katalogu storage/var?
začněte se učit
chown na usera serwera (np. www-data) plus chmod 775.
Dlaczego trzeba restartować workery kolejki po deployu?
začněte se učit
Trzymają w pamięci stary kod wczytany przy starcie procesu.
Dlaczego hasło do SSH to zła praktyka?
začněte se učit
Podatne na brute-force i wymaga przesyłania sekretu przy każdym logowaniu.
Co robi ssh-agent?
začněte se učit
Trzyma odszyfrowany klucz prywatny w pamięci, żeby nie wpisywać passphrase za każdym razem.
Do czego służy tail -f?
začněte se učit
Pokazuje na żywo nowe linie dopisywane do pliku logu.
Do czego służy journalctl -f?
začněte se učit
To samo co tail -f, ale dla logów usług zarządzanych przez systemd.
Dlaczego warto mieć jeden spójny kształt JSON błędu API?
začněte se učit
Frontend pisze jedną ścieżkę obsługi błędów zamiast rozgałęziać się per typ.
Które metody HTTP są idempotentne?
začněte se učit
GET, PUT, DELETE.
Czy POST jest idempotentny?
začněte se učit
Nie - powtórzenie tworzy kolejny zasób.
Jak zweryfikować, że webhook faktycznie pochodzi od zaufanego nadawcy?
začněte se učit
Weryfikacja podpisu HMAC liczonego ze wspólnego sekretu.
Od czego zacząć odpowiedź na pytanie zaprojektuj system X?
začněte se učit
Od pytań doprecyzowujących skalę i wymagania, nie od razu od technologii.
Co przede wszystkim ocenia rekruter w pytaniu system design?
začněte se učit
Proces dochodzenia do rozwiązania i zadawane pytania, nie podręcznikową odpowiedź.
Dlaczego skalowanie poziome wymaga aplikacji stateless?
začněte se učit
Każdy request może trafić na dowolną instancję i musi dostać ten sam wynik.
Co się psuje przy skalowaniu poziomym, jeśli sesja jest w pamięci procesu?
začněte se učit
User przekierowany na inną instancję przestaje być rozpoznawany jako zalogowany.
Co robi strategia cache-aside?
začněte se učit
Aplikacja czyta cache, przy miss czyta bazę i sama zapisuje wynik do cache.
Który wzorzec cache stosuje typowa aplikacja Laravel/Symfony z Redis?
začněte se učit
Cache-aside, przez Cache: remember().
Co robi write-through?
začněte se učit
Każdy zapis aktualizuje jednocześnie bazę i cache.
Co robi write-behind?
začněte se učit
Zapis trafia najpierw do cache, do bazy asynchronicznie z opóźnieniem.
Kiedy relacyjna baza jest lepszym wyborem niż NoSQL?
začněte se učit
Gdy dane mają silne relacje i potrzebujesz transakcyjności ACID.
Kiedy NoSQL dokumentowa faktycznie coś daje?
začněte se učit
Gdy struktura danych jest zmienna między rekordami albo unikasz kosztownych JOINów.
Czym różni się token bucket od sliding window w rate limiterze?
začněte se učit
Token bucket pozwala na krótkie wybuchy ruchu, sliding window liczy dokładnie w oknie czasowym.
Jaki redirect HTTP utrudnia zliczanie kliknięć w URL shortenerze?
začněte se učit
301, bo jest cache'owany przez przeglądarkę.
Który redirect daje dokładną analitykę kliknięć w URL shortenerze?
začněte se učit
Analitykę zapewnia przede wszystkim endpoint aplikacji rejestrujący kliknięcie przed redirectem - 302/307 można użyć do samego przekierowania, ale trzeba uwzględnić cache i zachowanie klienta.
Jaka jest praktyczna konsekwencja CAP theorem dla read replica MySQL?
začněte se učit
Odczyt zaraz po zapisie powinien iść do mastera, nie do repliki z replication lag.
Dlaczego sticky sessions są gorsze niż współdzielony session store?
začněte se učit
Nierównomierne obciążenie i utrata sesji przy awarii konkretnej instancji.
Czym różni się == od === w PHP?
začněte se učit
== porównuje z konwersją typów, === porównuje wartość i typ.
Dlaczego type juggling bywa niebezpieczny?
začněte se učit
Może dać nieoczekiwane wyniki logiczne przy porównaniach dwóch różnych typów.
Jak uniknąć niejawnej konwersji typów przy porównaniach?
začněte se učit
Używać === i jawnego rzutowania zamiast ==.
Do czego służy declare(strict_types=1)?
začněte se učit
Wymusza ścisłe typowanie argumentów i wartości zwracanych funkcji.
Czym różni się isset() od empty()?
začněte se učit
isset() sprawdza istnienie i brak null, empty() dodatkowo traktuje 0, pusty string i false jako puste.
Czym różni się require od include?
začněte se učit
require rzuca fatal error przy braku pliku, include tylko warning.
Po co _once w require_once/include_once?
začněte se učit
Zapobiega wielokrotnemu załadowaniu tego samego pliku.
Co to jest PSR-4?
začněte se učit
Standard mapowania namespace na katalog na dysku dla autoloadingu.
Jak działa garbage collector w PHP?
začněte se učit
Reference counting plus wykrywanie cykli referencji.
Jak ręcznie wymusić wykrycie cykli referencji w PHP?
začněte se učit
gc_collect_cycles().
Co robi magiczna metoda __toString?
začněte se učit
Definiuje jak obiekt zamienia się na string, np. przy echo $obj.
Jakie ryzyko niesie nadużywanie __get/__set/__call?
začněte se učit
Zachowanie klasy przestaje wynikać wprost z jej deklarowanych właściwości i metod.
Czym różni się trait od abstract class?
začněte se učit
Trait to reużycie kodu bez hierarchii, klasa może użyć wielu traitów naraz.
Ile klas abstrakcyjnych może dziedziczyć jedna klasa PHP?
začněte se učit
Tylko jedną.
Co robi late static binding (static:)?
začněte se učit
Odnosi się do klasy, na której faktycznie wywołano metodę, nie do klasy ją deklarującej.
Czym różni się static: od self:?
začněte se učit
self: zawsze wskazuje klasę deklarującą metodę, static: klasę wywołującą.
Co to są union types w PHP?
Type2 pozwalający określić kilka możliwych typów.
začněte se učit
Zapis Type1
Co oznacza? Type w sygnaturze PHP?
null.
začněte se učit
Typ nullable, równoważne Type
Dlaczego warto unikać typu mixed?
začněte se učit
Utrudnia testowanie, statyczną analizę i ukrywa realny kontrakt funkcji.
Co to jest immutability obiektu?
začněte se učit
Obiekt nie zmienia stanu po utworzeniu - każda zmiana zwraca nowy obiekt.
Co to jest Value Object?
začněte se učit
Obiekt reprezentujący wartość bez własnej tożsamości, porównywany przez wartość, nie ID.
Czym jest callable w PHP?
začněte se učit
Typ reprezentujący funkcję, metodę lub closure, którą można wywołać.
Co pozwala closure przechwycić ze swojego zewnętrznego zakresu?
začněte se učit
Zmienne, przez słowo kluczowe use.
Kiedy warto użyć generatora (yield)?
začněte se učit
Przy pracy z dużymi zbiorami danych - oszczędza pamięć, generując dane na żądanie.
Czym różni się Error od Exception w PHP?
začněte se učit
Exception to błędy aplikacyjne, Error to błędy silnika PHP - oba implementują Throwable.
Po co jest namespacing w PHP?
začněte se učit
Zapobiega konfliktom nazw klas i funkcji, ułatwia organizację dużych projektów.
Dlaczego __autoload() jest dziś przestarzały?
začněte se učit
Zastąpiony przez Composer i PSR-4.
Co to jest fluent interface?
začněte se učit
Styl API umożliwiający łańcuchowe wywołania metod.
Czym różnią się echo i print w PHP?
začněte se učit
echo jest szybsze i nie zwraca wartości, print zwraca 1.
Co może prowadzić do memory leak w PHP mimo automatycznego zwalniania pamięci po requeście?
začněte se učit
Cykle referencji, statyczny cache i długie procesy CLI/workery.
Co to jest API?
začněte se učit
Kontrakt umożliwiający komunikację między systemami, definiujący operacje, format danych i autoryzację.
Na czym opiera się styl architektoniczny REST?
začněte se učit
Na zasobach, metodach HTTP, statelessness i jednolitym interfejsie.
Czym różni się REST od SOAP?
začněte se učit
REST jest lekki i używa JSON/HTTP, SOAP jest cięższy, oparty na XML i różnych protokołach.
Czym różni się REST od GraphQL pod względem endpointów?
začněte se učit
REST ma wiele endpointów, GraphQL jeden endpoint z precyzyjnymi zapytaniami.
Jaki jest częsty problem REST, który rozwiązuje GraphQL?
začněte se učit
Overfetching - pobieranie więcej danych niż faktycznie potrzeba.
Co to jest zasób (resource) w REST?
začněte se učit
Logiczny byt, np. /users albo /orders/123, na którym operuje się metodami HTTP.
Do czego służy metoda GET?
začněte se učit
Pobranie zasobu.
Do czego służy metoda POST?
začněte se učit
Utworzenie nowego zasobu.
Czym różni się PUT od PATCH?
začněte se učit
PUT robi pełną aktualizację zasobu, PATCH częściową.
Co oznaczają kody statusu z grupy 2xx?
začněte se učit
Sukces.
Co oznaczają kody statusu z grupy 4xx?
začněte se učit
Błąd po stronie klienta.
Co oznaczają kody statusu z grupy 5xx?
začněte se učit
Błąd po stronie serwera.
Czym różni się 401 od 403?
začněte se učit
401 to brak autentykacji, 403 to brak uprawnień mimo zalogowania.
Co oznacza status 422?
začněte se učit
Błąd walidacji danych wejściowych.
Co to jest stateless API?
začněte se učit
Serwer nie przechowuje stanu klienta między requestami - każdy request musi nieść komplet informacji.
Czym różni się autentykacja od autoryzacji?
začněte se učit
Autentykacja to kim jesteś, autoryzacja to co możesz zrobić.
Jakie są najpopularniejsze metody autentykacji w API?
začněte se učit
Basic Auth, token Bearer, OAuth2, JWT.
Z jakich trzech części składa się JWT?
začněte se učit
Header, payload i signature.
Do czego służy OAuth2?
začněte se učit
Do autoryzacji dostępu do zasobów bez ujawniania hasła, często w integracjach zewnętrznych.
Co to jest webhook?
začněte se učit
HTTP callback wysyłany przez system zewnętrzny po zajściu zdarzenia.
Po co jest rate limiting w API?
začněte se učit
Chroni przed nadużyciami, atakami DDoS i błędnymi integracjami.
Czym różni się paginacja offset-based od cursor-based?
začněte se učit
Cursor-based lepiej się skaluje przy dużych zbiorach danych.
Jak bezpiecznie wersjonować API?
začněte se učit
Przez prefiks w URL (/api/v1), nagłówek lub subdomenę - nigdy łamiąc kontrakt bez wersji.
Co to jest backward compatibility w API?
začněte se učit
Nowa wersja API nie psuje działania istniejących klientów.
Po co są timeouty w integracjach?
začněte se učit
Chronią system przed wiszącymi requestami i blokowaniem zasobów.
Kiedy stosować retry przy integracji z zewnętrznym API?
začněte se učit
Przy timeout i błędach 5xx, zawsze z limitem prób i backoffem.
Co to jest Circuit Breaker?
začněte se učit
Mechanizm zapobiegający ciągłym wywołaniom niedziałającego serwisu, chroniący przed kaskadowymi awariami.
Czym różni się integracja synchroniczna od asynchronicznej?
začněte se učit
Synchroniczna czeka na odpowiedź, asynchroniczna działa przez event/kolejkę/webhook.
Co powinno się logować przy komunikacji API?
začněte se učit
Request id, status odpowiedzi, czas trwania - nigdy dane wrażliwe.
Do czego służy OpenAPI/Swagger?
začněte se učit
Dokumentacja, kontrakt API i generowanie klientów.
Co sprawdzają testy kontraktowe?
začněte se učit
Zgodność API między konsumentem a dostawcą, ważne przy mikroserwisach.
Do czego służy API Gateway?
začněte se učit
Routing, autoryzacja, rate limiting i monitoring w jednym miejscu przed właściwymi serwisami.
Czym jest DevOps?
začněte se učit
Kultura i zestaw praktyk łączących development i operacje, celem szybszego i stabilnego deploymentu.
Co to jest środowisko (environment) w kontekście aplikacji?
začněte se učit
Oddzielna konfiguracja aplikacji, np. local, staging, production.
Dlaczego nie wolno pracować bezpośrednio na produkcji?
začněte se učit
Ryzyko utraty danych, downtime'u i nieodwracalnych błędów.
Czym jest Docker?
začněte se učit
Platforma do uruchamiania aplikacji w kontenerach, zapewniająca spójność środowiska.
Czym różni się Docker od maszyny wirtualnej?
začněte se učit
Docker jest lżejszy, dzieli jądro systemu, szybciej startuje.
Co definiuje Dockerfile?
začněte se učit
Bazowy image, zależności i sposób uruchomienia aplikacji.
Do czego służy Docker Compose?
začněte se učit
Uruchamia wiele kontenerów (aplikacja, baza, cache) jednym poleceniem.
Jak wygląda typowy setup PHP w Dockerze?
začněte se učit
PHP-FPM, Nginx, baza danych (MySQL/Postgres) i Redis.
Co oznacza CI w CI/CD?
začněte se učit
Continuous Integration - automatyczne testy i build przy każdej zmianie.
Co oznacza CD w CI/CD?
začněte se učit
Continuous Deployment/Delivery - automatyczne wdrażanie zmian.
Co powinno się dziać w typowym pipeline CI?
začněte se učit
Lint, statyczna analiza, testy, build.
Na czym polega blue-green deployment?
začněte se učit
Dwie wersje produkcji (stara i nowa) pozwalające na szybki rollback.
Na czym polega canary release?
začněte se učit
Nowa wersja trafia najpierw do małej części użytkowników, minimalizując ryzyko.
Do czego służą feature flags?
začněte se učit
Kontrola funkcji, szybkie wyłączanie i testy A/B bez nowego deployu.
Co to jest healthcheck?
začněte se učit
Endpoint sprawdzający stan aplikacji, używany przez load balancer i orchestrator.
Po co jest load balancer?
začněte se učit
Rozkłada ruch na wiele instancji aplikacji, zwiększając dostępność.
Co powinno się monitorować w aplikacji produkcyjnej?
začněte se učit
Uptime, zużycie CPU/RAM, czas odpowiedzi, error rate.
Po co jest alerting?
začněte se učit
Powiadamia o problemach zanim zauważy je użytkownik.
Jak często i co warto backupować?
začněte se učit
Bazę danych i pliki - zawsze regularnie testując proces przywracania.
Kiedy i jak robić rollback wdrożenia?
začněte se učit
Przy błędach krytycznych lub spadku wydajności - rollback musi być szybki, przewidywalny i najlepiej zautomatyzowany.
Czym różni się CLI od Web w kontekście PHP?
začněte se učit
CLI to długie procesy jak cron i queue workery, Web to krótki cykl życia requestu.
Do czego służy cron w aplikacji webowej?
začněte se učit
Zadania cykliczne, sprzątanie, raporty.
Czym jest worker w architekturze aplikacji?
začněte se učit
Proces przetwarzający zadania asynchroniczne z kolejki.
Jak unikać memory leaków w długo działających workerach?
začněte se učit
Regularny restart workerów i unikanie statycznego cache w pamięci.
Co to znaczy przygotować aplikację pod produkcję (Laravel/Symfony)?
začněte se učit
Cache config/routes, włączony OPcache, env prod, wyłączony debug.
Jaki jest pierwszy krok rozbicia fat controllera?
začněte se učit
Zidentyfikować odrębne odpowiedzialności wymieszane w jednej metodzie.
Czym różni się DTO od Value Object na przykładzie Money?
začněte se učit
DTO to płaski nośnik danych bez logiki, Value Object hermetyzuje wartość razem z logiką i jest niemutowalny.
Jakie konkretne liczby warto podać projektując retry logic do API płatności?
začněte se učit
Np. 3 próby, exponential backoff 1s/2s/4s, retry tylko dla 5xx/timeout, nigdy dla 4xx.
Co brać pod uwagę decydując hotfix teraz czy porządna naprawa za 2 dni?
začněte se učit
Wpływ biznesowy, ryzyko samego hotfixa i jawną komunikację decyzji zespołowi.
Jak zorganizować foldery modularnego monolitu?
začněte se učit
Podział po module domenowym (np. Orders, Billing), nie po typie klasy.
Co powinna zawierać dobra odpowiedź STAR o optymalizacji zapytania?
začněte se učit
Konkretny EXPLAIN przed/po i liczbę - o ile szybciej.
Co odróżnia mid developera od juniora?
začněte se učit
Samodzielna praca i rozumienie konsekwencji decyzji technicznych na produkcji.
Jak reagować na krytykę kodu w code review?
začněte se učit
Wysłuchać, dopytać o intencję, nie traktować jako ataku personalnego.
Czym różni się monolit od mikroserwisów pod względem złożoności startu?
začněte se učit
Monolit jest prostszy do wdrożenia i wystarcza mniejszemu zespołowi.
Co to jest modularny monolit?
začněte se učit
Monolit podzielony logicznie na moduły z jasnymi granicami i bez bezpośrednich zależności między nimi.
Jaka jest typowa rekomendacja architektoniczna na start nowego projektu?
začněte se učit
Modularny monolit, nie mikroserwisy.
Po czym poznać dobry kod?
začněte se učit
Jest czytelny, ma testy, łatwo go zmienić i nie zaskakuje.
Kiedy refaktoryzować kod?
začněte se učit
Gdy jest często modyfikowany lub regularnie powoduje bugi.
Kiedy nie refaktoryzować kodu?
začněte se učit
Bez testów, tuż przed deadlinem, albo tylko dlatego że się nie podoba.
Co to jest dług techniczny (technical debt)?
začněte se učit
Koszt przyszłych poprawek wynikający z szybkich, nieoptymalnych rozwiązań przyjętych teraz.
Jak radzić sobie z długiem technicznym?
začněte se učit
Dokumentować go, dzielić na małe kroki i spłacać przy okazji feature'ów.
Jak analizować bug na produkcji krok po kroku?
začněte se učit
Logi, monitoring, reprodukcja, hotfix lub rollback, dopiero potem root cause analysis.
Jak zapobiegać bugom produkcyjnym?
začněte se učit
Testy, code review, monitoring i feature flags.
Jak rozpoznać overengineering we własnym kodzie?
začněte se učit
Rozwiązanie jest skomplikowane mimo prostego problemu i nikt go nie rozumie.
Jak komunikować problem techniczny biznesowi?
začněte se učit
Bez żargonu, przez wpływ (czas, pieniądze, ryzyko) i z propozycją rozwiązania.
Jak uczyć się nowej technologii efektywnie?
začněte se učit
Dokumentacja, małe POC, realne użycie - bez tutorial hell.
Jak ocenić sukces projektu?
začněte se učit
Stabilnością, wartością biznesową i łatwością dalszego rozwoju, nie liczbą linii kodu.
Jakie pytania warto zadać przed rozpoczęciem taska?
začněte se učit
Po co, dla kogo, co z edge case'ami, jak testować.
Jak radzić sobie z presją czasu w projekcie?
začněte se učit
Świadome priorytety i kompromisy, jawna komunikacja ryzyka, bez hero codingu.
Co to jest dirty read?
začněte se učit
Transakcja czyta dane zapisane przez inną transakcję, która jeszcze nie zrobiła commit - jeśli ta druga zrobi rollback, przeczytane dane nigdy nie istniały.
Co to jest non-repeatable read?
začněte se učit
Dwukrotny odczyt tego samego wiersza w tej samej transakcji zwraca różne wartości, bo inna transakcja zdążyła go zmienić i zacommitować między odczytami.
Co to jest phantom read?
začněte se učit
Powtórzenie tego samego zapytania z warunkiem WHERE w tej samej transakcji zwraca inny zestaw wierszy, bo inna transakcja dodała lub usunęła pasujące rekordy.
Który poziom izolacji jako jedyny eliminuje dirty read, ale nadal dopuszcza phantom read?
začněte se učit
Repeatable Read.
Jaki jest domyślny poziom izolacji w MySQL InnoDB?
začněte se učit
Repeatable Read.
Jaki jest domyślny poziom izolacji w PostgreSQL?
začněte se učit
Read Committed.
Jakim kosztem Serializable eliminuje wszystkie trzy anomalie odczytu?
začněte se učit
Wydajnością - transakcje faktycznie wykonują się sekwencyjnie albo są blokowane/odrzucane przy konflikcie.
Na czym polega pesymistyczne blokowanie (pessimistic locking)?
začněte se učit
Transakcja blokuje wiersz na czas edycji (np. SELECT ... FOR UPDATE), inne transakcje czekają lub dostają błąd.
Na czym polega optymistyczne blokowanie (optimistic locking)?
začněte se učit
Każdy zapis sprawdza czy wersja/kolumna zmieniona od odczytu się nie zmieniła - konflikt wykrywany dopiero przy próbie zapisu, bez blokowania w międzyczasie.
Kiedy wybrać pesymistyczne blokowanie zamiast optymistycznego?
začněte se učit
Gdy konflikty zapisów są częste - np. wysokiej konkurencyjności aktualizacje tego samego rekordu, jak stan magazynowy.
Co oznacza CQRS?
začněte se učit
Command Query Responsibility Segregation - rozdzielenie modelu zapisu (commands) od modelu odczytu (queries), często z osobnymi bazami/reprezentacjami danych.
Jaki jest główny zysk z CQRS?
začněte se učit
Model odczytu można niezależnie optymalizować i skalować (np. zdenormalizowane widoki), bez kompromisów narzuconych przez model zapisu.
Co to jest Event Sourcing?
začněte se učit
Stan encji nie jest zapisywany wprost, tylko odtwarzany z sekwencji zapisanych zdarzeń, które go doprowadziły do obecnego kształtu.
Jaki jest koszt Event Sourcingu, którego nie ma w zwykłym CRUD?
začněte se učit
Złożoność odtwarzania stanu (replay, snapshoty) i konieczność projektowania nieusuwalnego, wersjonowanego strumienia zdarzeń.
Czy CQRS wymaga Event Sourcingu?
začněte se učit
Nie - to niezależne wzorce, często łączone, ale każdy da się zastosować bez drugiego.
Co robi nagłówek ETag?
začněte se učit
Identyfikator (hash) konkretnej wersji zasobu - klient wysyła go z powrotem przy kolejnym żądaniu, by serwer sprawdził czy zasób się zmienił.
Co zwraca serwer, gdy ETag klienta wciąż pasuje do aktualnej wersji zasobu?
začněte se učit
304 Not Modified, bez ciała odpowiedzi - klient używa swojej zcache'owanej kopii.
Czym różni się Cache-Control: no-cache od no-store?
začněte se učit
no-cache pozwala zapisać odpowiedź, ale wymusza rewalidację przed użyciem, no-store zabrania jakiegokolwiek zapisu.
Czym różni się Last-Modified od ETag?
začněte se učit
Last-Modified to znacznik czasu z rozdzielczością sekundy, ETag to dowolny identyfikator wersji - precyzyjniejszy, bo wykrywa zmiany szybsze niż sekunda.
Na czym polega wzorzec Factory Method?
začněte se učit
Tworzenie obiektu deleguje się do metody, którą podklasy mogą nadpisać, by zwrócić inny konkretny typ.
Na czym polega wzorzec Singleton?
začněte se učit
Klasa gwarantuje istnienie dokładnie jednej swojej instancji w całej aplikacji i daje do niej globalny punkt dostępu.
Dlaczego Singleton bywa krytykowany jako antywzorzec?
začněte se učit
Wprowadza globalny stan i ukrytą zależność, utrudniając testowanie i podmianę implementacji.
Co to jest SSRF (Server-Side Request Forgery)?
začněte se učit
Atakujący nakłania serwer do wykonania requestu HTTP w jego imieniu do adresu, który sam kontroluje lub który normalnie byłby niedostępny z zewnątrz.
Jaki jest typowy wektor ataku SSRF w aplikacji webowej?
začněte se učit
Pole formularza przyjmujące URL (np. do pobrania obrazka/webhooka), które serwer odpytuje bez walidacji.
Dlaczego SSRF jest szczególnie groźny w środowisku chmurowym?
začněte se učit
Serwer może odpytać wewnętrzny endpoint metadanych (np. 169.254.169.254) i wykraść poświadczenia IAM instancji.
Jak ograniczyć ryzyko SSRF?
začněte se učit
Biała lista dozwolonych hostów/schematów i blokada requestów do adresów prywatnych/loopback.
Co to jest composer. lock?
začněte se učit
Zapisuje dokładne, wylosowane w danym momencie wersje wszystkich zależności (łącznie z zależnościami zależności), by build był powtarzalny.
Czym różni się composer. json od composer. lock?
začněte se učit
composer. json deklaruje dopuszczalne zakresy wersji, composer. lock zamraża konkretne, faktycznie zainstalowane wersje.
Co oznacza ^2.3 w składni semver Composera?
začněte se učit
Dowolna wersja zgodna wstecznie do następnej głównej wersji, czyli >=2.3.0 <3.0.0.
Co to jest programowanie obiektowe (OOP)?
začněte se učit
Paradygmat organizujący kod wokół obiektów łączących dane (właściwości) i zachowanie (metody), zamiast osobnych funkcji i zmiennych.
Czym różni się klasa od obiektu?
začněte se učit
Klasa to szablon/definicja, obiekt to konkretna instancja utworzona na jej podstawie.
Co to jest enkapsulacja?
začněte se učit
Ukrywanie wewnętrznego stanu obiektu i udostępnianie go tylko przez zdefiniowane metody, nie bezpośredni dostęp do pól.
Co to jest dziedziczenie w OOP?
začněte se učit
Klasa potomna przejmuje właściwości i metody klasy bazowej przez słowo kluczowe extends.
Co to jest polimorfizm?
začněte se učit
Różne klasy implementujące ten sam interfejs/metodę mogą być używane zamiennie, każda z własnym zachowaniem tej samej metody.
Co to jest abstrakcja w OOP?
začněte se učit
Ukrycie szczegółów implementacji za prostym interfejsem, który pokazuje tylko co obiekt robi, nie jak.
Co robią modyfikatory dostępu public, protected, private?
začněte se učit
public - dostępne wszędzie, protected - w klasie i podklasach, private - tylko w tej samej klasie.
Do czego służy konstruktor klasy?
začněte se učit
Metoda __construct wywoływana automatycznie przy tworzeniu obiektu, do inicjalizacji jego stanu.
Czym różni się interfejs od klasy abstrakcyjnej (podstawowo)?
začněte se učit
Interfejs definiuje tylko kontrakt metod bez implementacji, klasa abstrakcyjna może mieć częściową implementację i stan.
Co robi słowo kluczowe implements?
začněte se učit
Deklaruje, że klasa dostarcza implementację wszystkich metod zadeklarowanych w danym interfejsie.
Co to jest klucz główny (primary key)?
začněte se učit
Kolumna lub zestaw kolumn jednoznacznie identyfikujący każdy wiersz w tabeli.
Co to jest klucz obcy (foreign key)?
začněte se učit
Kolumna odwołująca się do klucza głównego w innej tabeli, wymuszająca spójność powiązań między tabelami.
Czym różni się INNER JOIN od LEFT JOIN?
začněte se učit
INNER JOIN zwraca tylko wiersze pasujące w obu tabelach, LEFT JOIN zwraca wszystkie wiersze z lewej tabeli nawet bez dopasowania w prawej.
Co robi GROUP BY?
začněte se učit
Grupuje wiersze o tej samej wartości kolumny, żeby policzyć na nich funkcję agregującą, np. COUNT czy SUM.
Czym różni się WHERE od HAVING?
začněte se učit
WHERE filtruje wiersze przed grupowaniem, HAVING filtruje już zgrupowane wyniki po zastosowaniu funkcji agregującej.
Co to jest indeks bazodanowy w skrócie?
začněte se učit
Dodatkowa struktura danych przyspieszająca wyszukiwanie po danej kolumnie kosztem miejsca i wolniejszych zapisów.
Po co jest normalizacja bazy danych?
začněte se učit
Eliminuje redundancję danych, dzieląc je na powiązane tabele zamiast powtarzać te same informacje w wielu wierszach.
Co robi git add?
začněte se učit
Dodaje zmiany z working directory do staging area, przygotowując je do commita.
Co robi git commit?
začněte se učit
Zapisuje zawartość staging area jako nowy punkt w historii repozytorium.
Czym różni się git push od git pull?
začněte se učit
git push wysyła lokalne commity do zdalnego repozytorium, git pull pobiera i scala zmiany ze zdalnego repozytorium.
Czym różni się git fetch od git pull?
začněte se učit
git fetch tylko pobiera zmiany bez scalania, git pull to fetch plus automatyczny merge.
Co robi git branch?
začněte se učit
Tworzy nową niezależną linię rozwoju kodu, żeby zmiany nie trafiały od razu do głównej gałęzi.
Co robi git merge?
začněte se učit
Łączy historię jednej gałęzi z drugą, tworząc commit scalający.
Co robi git clone?
začněte se učit
Kopiuje całe zdalne repozytorium (historię i pliki) na lokalny dysk.
Co robi polecenie ls -la?
začněte se učit
Wypisuje wszystkie pliki w katalogu, łącznie z ukrytymi, w formacie ze szczegółami (uprawnienia, właściciel, rozmiar).
Co robi polecenie grep?
začněte se učit
Wyszukuje linie pasujące do wzorca w pliku lub strumieniu tekstu.
Co oznacza liczba w chmod 755?
začněte se učit
Uprawnienia rwx dla właściciela, r-x dla grupy, r-x dla innych - trzy cyfry to trzy grupy uprawnień.
Czym różni się proces w tle (&) od procesu na pierwszym planie?
začněte se učit
Proces w tle zwraca terminal od razu, nie blokując go do zakończenia zadania.
Do czego służy polecenie ps aux?
začněte se učit
Wypisuje wszystkie uruchomione procesy w systemie wraz z ich zużyciem zasobów.
Co to jest wzorzec MVC?
začněte se učit
Model-View-Controller - podział aplikacji na dane (Model), logikę żądania (Controller) i warstwę prezentacji (View).
Czym różni się framework od biblioteki?
začněte se učit
Framework narzuca strukturę i sam woła twój kod (inversion of control), bibliotekę wywołujesz ty, kiedy chcesz.
Co to jest sesja w aplikacji webowej?
začněte se učit
Sposób przechowywania stanu użytkownika między requestami, zwykle powiązany z ciasteczkiem zawierającym identyfikator sesji.
Co to jest cookie?
začněte se učit
Mały fragment danych zapisywany w przeglądarce i wysyłany automatycznie z każdym requestem do tej samej domeny.
Co to jest ORM w skrócie?
začněte se učit
Warstwa mapująca wiersze bazy danych na obiekty w kodzie, żeby nie pisać SQL ręcznie.
Co to jest routing w aplikacji webowej?
začněte se učit
Mechanizm dopasowujący adres URL i metodę HTTP do konkretnego kontrolera/akcji, która go obsłuży.
Co to jest kontroler w Laravelu/Symfony?
začněte se učit
Klasa grupująca metody obsługujące konkretne żądania HTTP i zwracające odpowiedź.
Co to jest middleware w skrócie?
začněte se učit
Warstwa kodu wykonywana przed lub po kontrolerze, np. do autoryzacji, logowania czy modyfikacji requestu/response.
Czym różni się array_key_exists() od isset() dla wartości null w tablicy?
začněte se učit
array_key_exists() zwraca true nawet gdy wartość pod kluczem to null, isset() dla null zwróci false.
Co daje słowo kluczowe final przy klasie lub metodzie?
začněte se učit
final na klasie blokuje dziedziczenie, final na metodzie blokuje jej nadpisanie w podklasach.
Co to są intersection types w PHP (Type1&Type2)?
začněte se učit
Wymóg, żeby wartość spełniała jednocześnie wszystkie wskazane typy/interfejsy, nie tylko jeden z nich jak w union types.
Jak działa multi-catch w PHP (catch (TypeA
Jeden blok catch obsługuje kilka typów wyjątków naraz, bez powielania identycznej logiki w osobnych blokach.
začněte se učit
TypeB $e))?
Co to jest Composer?
začněte se učit
Menadżer zależności dla PHP - instaluje paczki, generuje autoloader zgodny z PSR-4 i zarządza wersjami przez composer. json/composer. lock.
Co to jest Dependency Injection w skrócie?
začněte se učit
Przekazywanie obiektowi jego zależności z zewnątrz, np. przez konstruktor, zamiast tworzenia ich samodzielnie wewnątrz klasy.
Czym różni się coupling od cohesion?
začněte se učit
Coupling to stopień zależności między modułami (im niższy tym lepiej), cohesion to stopień spójności odpowiedzialności wewnątrz jednego modułu (im wyższy tym lepiej).
Co oznacza zasada composition over inheritance?
začněte se učit
Preferowanie budowania zachowania przez złożenie mniejszych obiektów/interfejsów zamiast rozbudowanej hierarchii dziedziczenia, która usztywnia kod.
Czym Entity różni się od Value Object?
začněte se učit
Entity ma tożsamość (ID) i pozostaje tym samym bytem mimo zmiany atrybutów, Value Object jest identyfikowany przez swoją wartość i jest niemutowalny.
Co to jest klasa Service w architekturze aplikacji?
začněte se učit
Hermetyzuje logikę biznesową niezwiązaną bezpośrednio z jedną encją, koordynując repozytoria i inne serwisy - odciąża kontroler i model.
Co to jest covering index?
začněte se učit
Indeks zawierający wszystkie kolumny potrzebne zapytaniu, więc silnik odpowiada z samego indeksu bez sięgania do właściwych wierszy tabeli.
Co oznacza selektywność (cardinality) kolumny pod kątem indeksowania?
začněte se učit
Stosunek liczby unikalnych wartości do liczby wierszy - wysoka selektywność czyni indeks opłacalnym, niska (np. boolean) zwykle nie.
Co to jest deadlock w bazie danych?
začněte se učit
Dwie transakcje wzajemnie czekają na zwolnienie blokad trzymanych przez tę drugą - baza wykrywa cykl i przerywa jedną z transakcji błędem.
Co to jest race condition przy równoległym dostępie do tych samych danych?
začněte se učit
Wynik zależy od nieprzewidywalnej kolejności wykonania dwóch operacji na tym samym zasobie, np. dwóch równoległych aktualizacji tego samego wiersza.
Dlaczego unique constraint w bazie jest bezpieczniejszy niż sprawdzenie unikalności w kodzie aplikacji?
začněte se učit
Baza gwarantuje atomowość na poziomie silnika - dwa równoległe requesty mogą ominąć sprawdzenie w kodzie przed zapisem, ale nie ominą constraintu.
Co to jest CTE (Common Table Expression)?
začněte se učit
Nazwane, tymczasowe zapytanie zdefiniowane przez WITH, używane w głównym zapytaniu jak zwykła tabela - poprawia czytelność złożonych zapytań.
Co robią window functions (np. ROW_NUMBER() OVER())?
začněte se učit
Liczą wartość względem grupy wierszy (partycji) bez zwijania ich do jednego wiersza, w przeciwieństwie do GROUP BY.
Co to jest subquery (podzapytanie)?
začněte se učit
Zapytanie zagnieżdżone wewnątrz innego zapytania, którego wynik jest używany jako wartość, lista lub tabela dla zapytania nadrzędnego.
Co robi atrybut cookie SameSite?
začněte se učit
Ogranicza wysyłanie cookie przy requestach cross-site - SameSite=Strict/Lax znacząco utrudnia CSRF.
Co robi atrybut cookie HttpOnly?
začněte se učit
Blokuje dostęp do wartości cookie z poziomu JavaScript - chroni token sesji przed kradzieżą przez XSS.
Co robi atrybut cookie Secure?
začněte se učit
Każe przeglądarce wysyłać cookie wyłącznie przez HTTPS, nigdy przez zwykłe HTTP.
Czym różni się merge od rebase?
začněte se učit
Merge tworzy nowy commit scalający i zachowuje pełną historię obu gałęzi, rebase przepisuje commity jednej gałęzi na czubek drugiej, dając liniową historię.
Czym różni się git reset od git revert?
začněte se učit
Reset cofa wskaźnik gałęzi i opcjonalnie zmiany, przepisując historię, revert tworzy nowy commit odwracający zmiany, zachowując historię - bezpieczny na wypchniętej gałęzi.
Co realnie trzeba zrobić przy konflikcie mergowania?
začněte se učit
Ręcznie wybrać lub połączyć sprzeczne fragmenty w oznaczonych blokach <<<<<<< ======= >>>>>>>, dodać plik i dokończyć commit/rebase.
Do czego służy git stash?
začněte se učit
Tymczasowo odkłada niezacommitowane zmiany z working directory, np. żeby przełączyć się na inną gałąź z czystym stanem.
Co to jest HEAD w gicie?
začněte se učit
Wskaźnik na aktualnie wybrany commit/branch, na którym pracuje working directory.
Czym różni się image od container w Dockerze?
začněte se učit
Image to niezmienny szablon (warstwy plików), container to jego uruchomiona, żywa instancja z własnym stanem w runtime.
Do czego służy volume w Dockerze?
začněte se učit
Trwałe przechowywanie danych poza cyklem życia kontenera, np. dane bazy, które mają przetrwać restart lub usunięcie kontenera.
Co daje sieć Docker (docker network)?
začněte se učit
Izolowaną komunikację między kontenerami po nazwie usługi zamiast po IP, bez wystawiania portów na zewnątrz.
Co daje multi-stage build w Dockerfile?
začněte se učit
Oddziela etap budowania (z narzędziami/zależnościami dev) od finalnego obrazu produkcyjnego zawierającego tylko to, co potrzebne w runtime - mniejszy i bezpieczniejszy image.
Czym różni się ENV od ARG w Dockerfile?
začněte se učit
ARG istnieje tylko podczas budowania obrazu, ENV zostaje w finalnym obrazie i jest dostępny również w runtime kontenera.
Jak Docker wykorzystuje cache przy budowaniu obrazu?
začněte se učit
Cache'uje wynik każdej instrukcji warstwowo - zmiana w danej linii Dockerfile unieważnia cache tej i wszystkich kolejnych warstw, dlatego rzadziej zmieniane instrukcje warto umieszczać wcześniej.
Do czego służy polecenie top?
začněte se učit
Pokazuje w czasie rzeczywistym listę procesów wraz z bieżącym zużyciem CPU i pamięci.
Co robi polecenie chown?
začněte se učit
Zmienia właściciela, a opcjonalnie też grupę, pliku lub katalogu.
Do czego służy polecenie find?
začněte se učit
Wyszukuje pliki i katalogi w drzewie katalogów po nazwie, typie, dacie modyfikacji i innych kryteriach.
Do czego służy polecenie curl?
začněte se učit
Wysyła requesty HTTP(S) i inne z linii komend - przydatne do testowania API bez przeglądarki.
Do czego służy polecenie ss?
začněte se učit
Pokazuje aktywne połączenia sieciowe i nasłuchujące porty, nowocześniejszy odpowiednik netstat.
Czym różni się redirect 301 od 302?
začněte se učit
301 to przekierowanie stałe, cache'owane przez przeglądarki i wyszukiwarki, 302 to tymczasowe i nie powinno być trwale cache'owane.
Czym różni się redirect 307 od 302?
začněte se učit
307 gwarantuje zachowanie oryginalnej metody HTTP i body requestu, 302 historycznie bywał zamieniany przez klienty na GET.
Czym różni się redirect 308 od 301?
začněte se učit
308 to trwały odpowiednik 301, ale tak jak 307 gwarantuje zachowanie metody HTTP i body, czego 301 nie gwarantuje.
Co oznacza status 303 See Other?
začněte se učit
Każe klientowi pobrać wskazany zasób metodą GET niezależnie od metody oryginalnego requestu - typowe po POST, żeby uniknąć ponownego wysłania formularza przy odświeżeniu.
Czym różni się array_map() od array_walk()?
začněte se učit
array_map() zwraca nową tablicę z wynikami, array_walk() modyfikuje oryginalną tablicę przez referencję i nie zwraca nowej.
Co robi array_filter() bez podanego callbacku?
začněte se učit
Usuwa z tablicy elementy, które są falsy (0, ", null, false, []).
Do czego służy array_reduce()?
začněte se učit
Redukuje tablicę do pojedynczej wartości, akumulując wynik przez callback i wartość początkową.
Czym różni się array_merge() od operatora +?
začněte se učit
array_merge() dla kluczy numerycznych przenumerowuje i dopisuje wartości z obu tablic, + zachowuje klucze z pierwszej tablicy i ignoruje duplikaty z drugiej.
Co się dzieje z kluczami tekstowymi przy array_merge() z konfliktem?
začněte se učit
Wartość z drugiej tablicy nadpisuje wartość z pierwszej pod tym samym kluczem.
Czym różni się in_array() z trzecim argumentem true od domyślnego wywołania?
začněte se učit
Z true porównanie jest ścisłe (===, sprawdza też typ), domyślnie porównanie jest luźne (==).
Czym różni się sort() od usort()?
začněte se učit
sort() sortuje wg domyślnego porównania i resetuje klucze, usort() sortuje wg własnej funkcji porównującej.
Co zwraca array_search(), gdy nie znajdzie elementu?
začněte se učit
false, dlatego trzeba porównywać wynik przez === false, bo poprawny klucz 0 też jest falsy.
Do czego służy array_column()?
začněte se učit
Wyciąga wartości jednej kolumny z tablicy tablic/obiektów, np. same id z listy rekordów.
Czym różni się array_diff() od array_intersect()?
začněte se učit
array_diff() zwraca elementy z pierwszej tablicy, których nie ma w pozostałych, array_intersect() zwraca elementy wspólne dla wszystkich.
Czym różni się array_slice() od array_splice()?
začněte se učit
array_slice() zwraca wycinek bez modyfikacji oryginału, array_splice() modyfikuje oryginalną tablicę (usuwa/wstawia elementy) i zwraca usunięte.
Co robi array_unique() i jaki ma domyślny sposób porównania?
začněte se učit
Usuwa duplikaty wartości, porównując je domyślnie jako stringi (SORT_STRING).
Czym różni się array_combine() od array_flip()?
začněte se učit
array_combine() tworzy tablicę z jednej tablicy jako kluczy i drugiej jako wartości, array_flip() zamienia miejscami klucze i wartości tej samej tablicy.
Czym różni się explode() od str_split()?
začněte se učit
explode() dzieli string wg separatora na tablicę części, str_split() dzieli string na kawałki o stałej długości znaków.
Czym różni się substr() od mb_substr()?
začněte se učit
substr() liczy pozycje w bajtach (psuje wielobajtowe znaki UTF-8), mb_substr() liczy w znakach.
Czym różni się str_replace() od preg_replace()?
začněte se učit
str_replace() podmienia stały tekst, preg_replace() podmienia dopasowania wyrażenia regularnego.
Do czego służą str_contains(), str_starts_with(), str_ends_with()?
začněte se učit
Sprawdzają odpowiednio: czy string zawiera podciąg, czy zaczyna się od podciągu, czy kończy się podciągiem - bez potrzeby liczenia pozycji jak przy strpos().
Dlaczego strpos() == false to częsty błąd, a strpos() === false jest poprawne?
začněte se učit
Dopasowanie na pozycji 0 jest falsy przy ==, więc trzeba porównywać ściśle (===), inaczej pozycja 0 zostanie potraktowana jak brak dopasowania.
Co robi sprintf() i czym różni się od printf()?
začněte se učit
Formatuje string wg wzorca z placeholderami (%s, %d itd.) i go zwraca, printf() robi to samo, ale od razu wypisuje wynik zamiast zwracać.
Czym różni się trim() od ltrim() i rtrim()?
začněte se učit
trim() usuwa białe znaki z obu końców stringa, ltrim() tylko z lewej, rtrim() tylko z prawej.

Chcete-li přidat komentář, musíte se přihlásit.