Blog
Pandemia wreszcie się kończy, dlatego w tym roku postanowiliśmy wrócić do naszych wyjazdów na konferencje. Jako pierwszy cel wybraliśmy IPC 2022, imprezę odbywającą się w Berlinie. Konferencja ta skupia się na tematyce Web aplikacji oraz technologii PHP. Drugą lokalizacją tej konferencji jest Monachium.
Podróż do Berlina
W naszą pierwszą w tym roku delegację wybraliśmy się w sześć osób i zdecydowaliśmy się na podróż pociągiem – PKP Intercity. Oczywiście nie obyło się bez przygód 🙂 Pociąg miał opóźnienie 20 minut, jednak to nie stanowiło kłopotu, bo szczęśliwie zdecydowaliśmy się na wyjazd dzień przed rozpoczęciem konferencji. Większym problemem okazało się zajęcie zarezerwowanych miejsc – siedzenia Konrada I Adama zajmowała zmotywowana starsza pani, kot i ich walizki. By odzyskać miejsca, konieczna była pomoc konduktora. Jeszcze tylko poinstrukowanie na granicy, że w komunikacji zbiorowej konieczne są maseczki i cała reszta podróży minęła spokojnie.
Po niecałych 7 godzinach byliśmy na dworcu Berlin Hauptbahnhof. Po szybkiej zbiórce przy wyjściu z budynku postanowiliśmy ruszyć spacerem do hotelu.
Zakwaterowanie
Na miejsce noclegu wybraliśmy „Maritim proArte Hotel Berlin”, czyli hotel, w którym odbywała się nasza konferencja. Sam obiekt położony jest przy jednej z głównych arterii Berlina, słynnej ulicy handlowej Friedrichstraße, co pozwala na łatwy dostęp zarówno do sklepów, jak i do najważniejszych zabytków. Brama Brandenburska, Reichstag, Galeries Lafayette czy Gendarmenmarkt znajdują się zaledwie kilka minut spacerem od hotelu.
Sam hotel wyróżniał się zarówno imponującym lobby jak i przytulną przestrzenią, gdzie serwowano śniadania w formie szwedzkiego stołu.
Niestety, ze względu na wprowadzone limity osobowe, nie było dane nam skorzystać z basenu oraz sauny. A szkoda, bo miejsca te prezentowały się bardzo atrakcyjnie.
Konferencja
Imprezę rozpoczęła prezentacja poprowadzona przez Sebastiana Meyena i Guillauma Vaslina. Jej motywem przewodnim były web3 oraz szeroko pojęty Metaverse jako przyszłość internetu. Rozwiązania tego typu będą łączyły rozszerzoną rzeczywistość, internet rzeczy oraz wirtualną rzeczywistość i mogą być różnie wykorzystywane w przyszłości.
Prelekcja 1. The missing validation middleware
Prezentacja dotyczyła walidacji danych w aplikacjach PHP oraz biblioteki Valinor (https://github.com/CuyZ/Valinor). Autor rozpoczął prezentację od przedstawienia różnych podejść do walidacji na podstawie popularnych frameworków w świecie PHP: Symfony (symfony/validator) oraz Laravel. W obu powyższych rozwiązaniach aby zwalidować obiekt, należy go najpierw utworzyć – nawet w niepoprawnym stanie i dopiero na nim wywołać walidację. Autor zauważył że powyższe podejście nie jest zgodne z koncepcją tzw. Value Object z Domain Driven Design, w której Value Object powinien być zawsze poprawny. Przedstawiona podczas prezentacji biblioteka Valinor opiera się o walidację zawartą w obiektach domenowych. Programista korzystający z tej biblioteki musi najpierw stworzyć klasę reprezentującą obiekt domenowy oraz właściwą walidację, a następnie przy tworzeniu takiego obiektu użyć biblioteki Valinor. Przykład wykorzystania biblioteki można znaleźć na Githubie autora prezentacji: https://github.com/shulard/ipc-valinor-sample/blob/main/index.php.
Podsumowując, zarówno przedstawiona koncepcja, jak i sama prezentacja były bardzo ciekawe i pomimo, że jest to temat dość często poruszany na konferencjach, to jednak powyższa prezentacja i połączenie tematu walidacji z konceptami z Domain Driven Design było czymś nowym i na pewno wartym rozważenia w planowaniu kolejnych projektów.
Prelekcja 2. Security: Purely a matter of the head(ers)?
Prelekcja ta dotyczyła najważniejszych nagłówków HTTP związanych z bezpieczeństwem aplikacji webowych. Autor omówił zarówno szeroko stosowane nagłówki, jak na przykład Content-Security-Policy jak i mniej znane, typu X-Frame-Options. Oczywiście, oprócz samego omówienia nagłówków, autor podał przykłady dobrych praktyk przy ich stosowaniu. Podsumowując – solidna i uniwersalna dawka wiedzy dotycząca bezpieczeństwa aplikacji webowych, nie tylko w PHP.
Prelekcja 3. Living Architecture Documentation with phpMolecules
Prezentacja dotycząca narzędzia do dokumentowania architektury aplikacji była chyba jednym z bardziej wyczekiwanych przez nas wystąpień na tej konferencji. Sama koncepcja narzędzia pozwalającego dokumentować architekturę wydaje się bardzo ciekawa i jego wykorzystanie przy bardziej złożonym projekcie na pewno mogłoby bardzo ułatwić pracę z projektem oraz wdrażanie nowych pracowników. Niestety, nasze oczekiwania przerosły mozliwości prezentacji.
Narzędzie phpMolecules (https://github.com/xmolecules/phpmolecules) jest na ten moment jednynie zbiorem kilku atrybutów, dzięki którym możemy oznaczyć, czy klasa, którą tworzymy jest Value Objectem, encją czy np. repozytorium. Obecnie to jedyne możliwości tego narzędzia. Funkcjonalności takie jak np walidacja architektury czy generowanie dokumentacji nie są jeszcze dostępne. Mieliśmy wrażenie, że autor prezentacji, będący jednocześnie jednym z twórców phpMolecules, liczył na obecność na konferencji osób, które mogłoby go wesprzeć w rozwoju projektu.
Podsumowując – prezentacja nie spełniła naszych oczekiwań, jednak na pewno warto śledzić rozwój tego narzędzia. Przy zaangażowaniu większej liczby osób jest szansa, że phpMolecules stanie się pełnowartościowym rozwiązaniem, które będzie można wykorzystywać w przyszłości.
Prelekcja 4. PHP Fibers
W PHP 8.1 pojawiła się nowa funkcjonalność o nazwie Fibers I tutaj „cały na biało” (choć w zielonej bluzie) wkracza nasz rodak Tomasz Turkowski, który podjął próbę wyjaśnienia tego, jak się okazało, nietrywialnego zagadnienia. Prezentacja traktowała przede wszystkim o tym czym są, ale również czym nie są, Fibers’y.
W skrócie: dowiedzieliśmy się, że nowa funkcjonalność pozwala uruchamiać, wstrzymywać i wznawiać wyizolowany fragment programu. Oznacza to, że możemy „zamrozić” działanie części programu, a następnie wznowić w miejscu, w którym zostało wstrzymane – bez utraty stanu.
Na początku prezentacji mieliśmy wrażenie, że doczekaliśmy się natywnego mechanizmu w PHP, który zapewnia asynchroniczność… ale po zaprezentowaniu kilku przykładów już nikt nie miał złudzeń – Fibers’y nie zapewniają asynchroniczności, a są jednym z elementów które mogą pomóc w jej uzyskaniu.
Na koniec z widowni padło pytanie rodem z youtubowego klasyka – „a komu to potrzebne?”. Po dłuższym namyśle prelegent stwierdził, że nie jest w stanie wyobrazić sobie realnego problemu, z którym moglibyśmy się zetknąć w naszych projektach na co dzień, a na które odpowiedzią byłyby Fibers’y. Z naszego reserachu wynika, że nowa funkcjonalność może głównie przydać się twórcom takich bibliotek jak Amp, ReactPHP i innych low-levelowych frameworków w języku PHP.
Prelecja 5. PHP 8.1 – Just upgrade and go?
Prelekcję prowadził Arne Blankerts, który jest nie tylko doświadczonym prelegentem, ale również współzałożycielem thePHP.cc, w którym pracuje jako konsultant. Podczas jego prelekcji dało się zauważyć rzadkie połączenie dwóch cech: charyzmę oraz doświadczenie w kwestiach deweloperskich. W bardzo przystępny sposób opisał problemy i wyzwania, jakie czekają nas podczas upgrade’u środowiska naszych aplikacji. Przedstawił również szereg rozwiązań, które ułatwiają przeprowadzenie takiego procesu oraz zwiększają możliwość kontroli poprawnego przejścia na wyższe wersje. Część rozwiązań, które zasugerował do zastosowania w procesie upgrade’u środowiska, była znana nam już wcześniej (PHPStan, PSalm), przedstawił jednak również nieznany nam wcześniej Rector i testy charakteryzacyjne.
AMA (Ask Me Anything) Session: State of PHP with Sebastian Bergmann and Jose Maria Valera Reales
Sebastian Bergman twórca PHP Unit na konferencji został zapytany o kilka ciekawych rzeczy. Jedną z nich było “Czego najbardziej brakuje teraz PHPowi?” – na to pytanie Bergmann odpowiedział: generyków i jeszcze raz generyków. Z definicji – generyki umożliwiają programistom tworzenie całej rodziny deklaracji przy użyciu jednej ogólnej:
class Collection<Type> extends ArrayObject
tym samym mówimy, że ta implementacja kolekcji będzie działać dla każdego typu wejściowego. Dzięki temu nie musimy pisać implementacji kolekcji dla każdego typu, który chcemy obsłużyć.
Na pytanie „Dlaczego generyki nie były tak długo zrobione w PHPie, skoro są takie ważne?” odpowiedział, że dlatego, że bardzo trudno jest dodać rozwiązanie, które jednocześnie dotyka wielu dziedzin, zmienia ich zachowanie oraz którego założenia i zachowanie byłyby immersyjne z resztą projektu mającego jakieś swoje zaszłości.
Zapytany z kolei o drugą najważniejszą rzecz przy PHPie, długo się zastanawiał, jednak nie udzielił konkretnej odpowiedzi, generyki wydają się najważniejsze, a po nich długo nic.
Kolejne zagadnienie od publiczności dotyczyło tego, czy w PHP potrzebne jest zrównoleglenie. Prelegent stwierdził, że w PHPie zrównoleglenie jest zupełnie niepotrzebne – co spowodowało konsternację wśród publiczności. Bergman dopowiedział, że jeżeli na jakimś etapie implementowania projekt zaczyna wymagać równoległości takiej, jaka jest dostępna w NodeJS, oznacza to, że coś poszło nie tak na poziomie architektury. I wyjaśnił, odpowiadając na przykłady podawane przez publiczność, że jeżeli proces biznesowy potrzebuje wykonać dłuższe żądanie to PHP może je realizować już po odpowiedzi zwróconej do użytkownika. Bo taka operacja, twierdził, nie powinna go blokować.
Integracja zespołu
Pomimo napiętego programu konferencji znaleźliśmy chwilę na integrację i zwiedzenie miasta. Berlin jest nie tylko politycznym centrum Niemiec, ale również miejscem, w którym przeplata się nowoczesność z historią. Nowoczesna architektura kontrastuje z obecnymi na każdym kroku zabytkami. Niestety, ze względu na rozległość miasta i ograniczony czas, mogliśmy zobaczyć tylko kilka najbardziej charakterystycznych miejsc.
Będąc w Berlinie nie można nie odwiedzić jego prawdopodobnie najbardziej rozpoznawalnego elementu, czyli Bramy Brandenburskiej. Brama – wsparta na sześciu kolumnach zwieńczonych rzeźbą bogini zwycięstwa Nike, kierującą kwadrygę do miasta – robi ogromne wrażenie.
Drugim bardzo charakterystycznym miejscem, znajdującym się nieco ponad 2 km od Bramy Brandenburskiej, jest wieża telewizyjna. Ponad 350 metrowa budowla góruje nad Berlinem będąc najwyższym budynkiem nie tylko w Berlinie, ale i w całych Niemczech. Wieża znajduje się nieopodal placu Alexanderplatz, centralnego placu we wschodniej części miasta.
Udało się nam zobaczyć również Checkpoint Charlie, czyli miejsce, które w czasie zimnej wojny było najsłynniejszym przejściem granicznym między NRD a Berlinem zachodnim. Znajdował się w samym centrum podzielonego wówczas Berlina.
Po dniu pełnym inspirujących prelekcji oraz intensywnym zwiedzaniu udaliśmy się do lokalnej restauracji, aby w luźniejszej atmosferze wymienić się wrażeniami po konferencji oraz zwiedzaniu pięknego miasta.