LRU (Least Recently Used) Cache to jeden z klasycznych problemów algorytmicznych z rozmów rekrutacyjnych, ale też realna struktura danych używana w systemach produkcyjnych. Redis domyślnie używa wariantu LRU do eksmisji kluczy. PHP OPcache stosuje LRU. Pokazuję jak zaimplementować LRU Cache w O(1) dla get i put, używając hashmapy i listy dwukierunkowej – i gdzie to ma zastosowanie w e-commerce.
Redis Streams to struktura danych wprowadzona w Redis 5.0 która łączy cechy kolejki wiadomości i niezmiennego logu zdarzeń. W porównaniu do klasycznych list Redis (LPUSH/RPOP) daje persystencję, grupy konsumentów, potwierdzenia odbioru i możliwość odczytu historii. Dla projektów gdzie RabbitMQ to za dużo infrastruktury a Redis już masz – Streams mogą zastąpić brokera wiadomości.
PHP 8.4 wyszło oficjalnie 21 listopada 2024. Pisałem o RC w lipcu i wrześniu – teraz mam kilka dni z finalną wersją i pierwsze projekty które uruchamiam na 8.4. Property hooks, asymmetric visibility, Lazy Objects, BcMath\Number – wszystko wylądowało dokładnie jak RFC obiecywało. Czas na uczciwy bilans: co od razu wchodzi do kodu, co zaskakuje i jak gładka jest migracja z 8.3.
Dwa lata temu pisałem o Hyvä jako alternatywie dla Lumy. Od tamtej pory ekosystem dojrzał, a wybór między PWA Studio (React, headless API), Hyvä (Alpine.js, server-side) i klasyczną Lumą stał się pytaniem które pojawia się przy każdym nowym projekcie Magento. Robię rzetelne porównanie tych trzech ścieżek – z perspektywy kogoś kto wdrażał każdą z nich.
DDEV świetnie sprawdza się lokalnie. Ale jak wygląda stack Magento 2 na produkcji w Docker Compose? Pokażę kompletną konfigurację: nginx, PHP-FPM, MariaDB, Redis (trzy instancje), Elasticsearch i Varnish – z separacją sieci, sekretami Docker, healthcheckami i strategią deploymentu. To nie jest tutorial dla początkujących, ale referencja dla kogoś kto chce postawić Magento na własnej infrastrukturze.
Bloom Filter to probabilistyczna struktura danych która odpowiada na pytanie „czy ten element może być w zbiorze?” – z gwarancją braku false negatives i kontrolowanym poziomem false positives. Używa ułamka pamięci potrzebnej tablicy hashowej. Gdy masz milion zakazanych tokenów, setki tysięcy unikalnych emaili do walidacji albo cache który musi odrzucić żądania bez trafień do bazy – Bloom Filter jest właściwym narzędziem.
Do premiery PHP 8.4 zostały dwa miesiące. Przez ostatnie tygodnie śledziłem zamknięte RFC i testowałem na RC2. Lazy Objects to feature który przemknął trochę w cieniu property hooks, a jest równie ciekawy – obiekty tworzone dopiero przy pierwszym dostępie do właściwości. Pokazuję co ostatecznie trafiło do 8.4 i jak to wpłynie na codzienny kod.
Gdy aplikacja działa jako zestaw mikroserwisów, jeden request użytkownika może przejść przez Magento, serwis zamówień, API płatności i warehouse management. Gdy coś idzie wolno lub się psuje – jak znaleźć winowajcę? OpenTelemetry to standard obserwability który łączy traces (śledzenie requestów), metrics i logs w jeden spójny obraz. Pokazuję jak instrumentować PHP i Magento 2.
Event Sourcing to wzorzec architektoniczny który zmienia sposób myślenia o persystencji: zamiast zapisywać aktualny stan obiektu, zapisujesz sekwencję zdarzeń które do tego stanu doprowadziły. Stan jest wynikiem odtwarzania tych zdarzeń. Brzmi skomplikowanie, ale rozwiązuje realne problemy z audytem, debugowaniem i odtwarzaniem historii biznesowej.
Integracja z polskimi kurierami (InPost, DPD, DHL, Poczta Polska) często wymaga napisania własnego carrieru zamiast polegania na gotowych modułach. Pokazuję jak zbudować pełny moduł dostawy od zera: dynamiczne stawki z API kuriera, wybór punktu odbioru, generowanie etykiet i śledzenie statusu paczki.
