Niezalogowany [ logowanie ]
Subskrybuj kanał ATOM Kanał ATOM

Autor wpisu: matipl, dodany: 19.09.2018 16:24, tagi: php

W tym roku byłem powtórnie na konferencji PHP Srbija. W 2017 roku to nie był żaden eksperyment z mojej strony. Obserwowałem chłopaków z Belgradu od dawna. Nabrali w 2013 roku niesamowitego tempa i co roku (2013 – Google Code Day, meetupy; 2014 – TestingDay; 2015 – SOLIDay) pracowali nad tym co dzisiaj znamy jako konferencja PHP Srbija. Po pierwszej edycji (2016) uznałem, że muszę tam być i przekonać się na miejscu, że w dzisiejszych czasach można zrobić coś tak niesamowitego.

Serbia i Chorwacja to mało liczebne kraje (odpowiednio 7 i 4 mln mieszkańców), dlatego wydaje mi się, że tak mocno chcą rywalizować z innymi, pokazać, że również Serbowie i Chorwaci potrafią. W porównaniu z konferencjami z innych państw, „tutaj” od razu starają się organizować całość po angielsku (PHP Srbija, Web Summer Camp, WebCamp Zagreb itp.) – i to działa, ściagają tutaj najlepsi prelegenci i uczestnicy z całej Europy.

Belgrad - widok na Dunaj

PHP Srbija jest rewelacyjna pod każdym względem. Madlenianum Theatre, piękne miejsce w uroczej dzielnicy Belgradu nad Dunajem. Podczas dłuższej przerwy (lunch) można przejść się nad rzekę, wdrapać na pobliskie wzgórze, aby zobaczyć milenijną wieżę i uroczą panoramę. Powitanie, przerwy kawowe, obiad – bardzo wysoki poziom, ludzi w sam raz, widać, że organizatorom naprawdę zależy, aby wszyscy czuli się dobrze, a sama konferencja kojarzyła się tylko z dobrymi wspomnieniami.

Na plus dla konferencji można zapisać też czas kiedy się odbywa – koniec tygodnia. Jest wtedy mniejszy konflikt z innymi obowiązkami. Same prelekcje odbywają się w sobotę i niedzielę (10:00-18:00), dla chętnych dodatkowo są warsztaty w piątek (8:30-18:00). Bardzo odpowiada mi także, że PHP Srbija jest w miesiącu maju – na spokojnie jeszcze przed latem i nie jest tak gorąco. Belgrad obecnie jest dobrze skomunikowany z Warszawą – LOT-y odbywają się codziennie.

Tylko na plus

Sama konferencja jest podzielona na 2 ścieżki równoległe, po prostu ścieżka A i B oraz gromadzi około 600 uczestników. Dzięki temu można lepiej dopasować tematy do siebie. I faktycznie z tego korzystam. Nie ma tematów dla prawdziwych nowicjuszów, ale poziom jest zróżnicowany (od średnio zaawansowanego do tematów dla wieloletnich programistów i freelancerów). Podobnie tematyka jest przeróżna. Od tematów związanych z testowaniem oprogramowania, samą architekturą po „nowinki” dzisiejszych czasów jak kontenery, event sourcing, DDD.

Belgrad - grajek uliczny

Oczywiście nie jest tak, że każdemu uczestnikowi wszystkie tematy podpasują, albo sami organizatorzy dostaną zgłoszenia samych perełek. Moim zdaniem trzeba się liczyć z tym, że na konferencji do 30% tematów może nie być trafionych, lub po prostu prelegent nie potrafi dobrze przedstawić zagadnienia, tematu z którym przyjeżdża.

Centrum wydarzeń

Dla mnie Bałkany stały się małym zagłębiem dla programistów PHP (PHP Srbija czy też Web Summer Camp) – poziom jest bardzo dobry, a do tego na naszą kieszeń (słowiańską). Czujemy się trochę jak u siebie – język i kultura bardzo podobna. Do tego bardzo dobre prelekcje i warsztaty. Wydaje mi się, że w ciągu roku 2-3 konferencje są w sam raz. Przy większej ilości tematy zaczynają się po prostu powtarzać i nie ma większego sensu, aby marnować swój czas i pieniądze, aby objeżdżać cała Europę i słuchać podobnych prelekcji (a nieraz dokładnie tych samych.

Trzy słowa o prelekcjach 2018

Nie chciałem wspominać o samych prelekcjach wiosennych, bo mamy prawie jesień. Ale postaram się Wam przybliżyć w trzech słowach co zapamiętałem z PHP Srbija 2018.

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

Autor wpisu: matipl, dodany: 13.09.2018 17:21, tagi: php, symfony

Nadal zbieram się, aby podzielić się z Wami wrażeniami po PHP Srbija 2018, ale ciężko mi to zrobić bez zdjęć. A zdjęcia ciągle są nieprzejrzane i koło się zamyka. Ale…

W poniedziałek byłem na powakacyjnym PHPers Trójmiasto w C200 Office. Jeśli dobrze sięgam pamięcią ostatni raz byłem w 2014 roku (!), kiedy spotkania odbywały się jeszcze w PPNT. W tamtym czasie lokalne PHPersy dopiero startowały (obok Warszawy pojawiło się Trójmiasto oraz Śląsk). Nie wiem skąd wynikła przerwa, może brak systematyczności spotkań i lokalizacja źle skomunikowana.

Czemu wybrałem się tym razem? Dobre pytanie. Może brakuje mi PHPCon Poland i szukam czegoś w zastępstwie w Polsce. Do Pragi na PHP CE się nie wybieram – dla mnie będzie to zupełnie inna konferencja, poza tym grafik spotkań zagranicznych i tak jest już napięty. W tym roku nie było również Zimowiska Linuksowego. I tak trochę PHPers Trójmiasto potraktowałem jako mały event z ograniczoną ilością uczestników. Powiem Wam: było warto!

testy jednostkowe

Poniedziałkowe spotkanie związane było z testami jednostkowymi (w oparciu o phpSpec i phpUnit) oraz podsumowaniem zmian jakie zaszły w Symfony 4, oraz czym tak naprawdę jest Flex.

PHPers Trójmiasto - Leszek Prabucki Ci z Was, którzy byli tam wraz ze mną, wiedzą najlepiej, że ciężko napisać coś o prelekcji i kodowaniu na żywo Leszka Prabuckiego. Nie chodzi o to, że było źle. Leszek bardzo fajnie i szybko pokazał nam jak może wyglądać zwyczajny dzień pracy programisty, gdy dostajemy od Klienta np. zlecenie wykonania rejestracji do systemu. Od spotkania z Klientem, event stormingu itp., poprzez napisanie pierwszych testów (phpSpec), refactoringu, stworzeniu domeny (zalążek DDD) i skupieniu się na tym co chce Użytkownik zrobić, a nie jak. To było po prostu specyficzne doświadczenie.

PHPUnit Good Practices

Natomiast Dariusz Rumiński, który pracuje w Delivery Hero (PizzaPortal), rozwinął myśl Leszka z naciskiem na same testy jednostkowe oraz jak to zrobić dobrze w oparciu o phpUnit. Darek pracuje z phpUnit od wersji 3.3 (2008). Przez lata phpUnit się zmieniał, przechodził metamorfozy, jedne funkcje się pojawiały, a inne niestety znikały. Obecnie phpUnit posiada pewną warstwę abstrakcji, tzn. kompatybilności, ale nie daje ona nam wszystkiego i musimy o tym pamiętać aktualizując phpUnit już w istniejącym projekcie z istniejącymi testami. Oferuje również ponad 100 gotowych porównań (assertions).

Nieraz zdarza się, że nasze testy nie mogą obejść się bez atrap (mocks). Obecnie phpUnit pozwala w różny sposób tworzyć atrapy. Od starodawnego MockObject, poprzez Mockery, kończąc na współczesnym i zalecanym Prophecy, który już nie jest powiązany ze strukturą. I najważniejsze o czym trzeba pamiętać – pisać testowalny kod.

Symfony 4 i Flex

Tematem zamykającym spotkanie był Symfony 4 i Flex. Jakub Zalas niesamowicie poprowadził swoją prelekcję (pomijając fakt wspomnienia jego największego osiągnięcia). Jakub pokazał czym tak naprawdę jest Symfony 4, czyli Symfony 3.4, które de facto jest odchudzoną i zmienioną wersją Symfony 3.3, a te wersji 3.2 itd. Ale taki był zamysł twórców Symfony 2, że kolejne wydania będą często, ale nie będą przynosiły rewolucji (jak Sf2).

W dużym skrócie, jakie zmiany przynosi Sf4? Ulepszona struktura projektu. Nie ma już folderu na aplikacje (/app), a aby dostosować się do całego środowiska PHP zmieniono chociażby /web na /public. Dodatkowo pojawia się .env ze zmiennymi konfiguracyjnymi, które powinno być używane dla środowisk developerskich. Natomiast w konfiguracji nie ma już głównego pliku konfiguracyjnego. Każdy pakiet może mieć swojego yml. Pojawia się również bundles.php do konfiguracji jakich bundle’i chcemy używać w projekcie (wszystkie te informacji dzieją się obecnie automatycznie dzięki autowire i Flex). Flex przynosi również aliasy dla composera (np req templates zainstaluje twig). Core Team wybrał aliasy dla najbardziej zalecanych paczek.

A najważniejsza zmiana, jak dla mnie? Symfony 4 na dysku zajmuje 14MB (Sf3.4 ~ 58MB), tym samym spadła ilość plików do 2.5k (Sf3.4 8.9k). Co przyspiesza działanie aplikacji, ale bez wspomnianego opcache i tak się nie obędzie.

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

Autor wpisu: matipl, dodany: 12.09.2018 14:28, tagi: php

W odległych czasach przed PHP 5.2 (listopadem 2006) biblioteki w PHP były małe, frameworki dla PHP prawie nie istniały, dopiero tworzył się Zend Framework 1.0. A aplikacje PHP najczęściej wykorzystywały jeden wzorzec MVC, jeśli w ogóle były tworzone obiektowo.

Aby PHP w tamtym czasie było szybkie nie potrzeba było wiele (głównie I/O bazy). Ale czas zaczął niesamowicie szybko biec, Internet stawał się coraz popularniejszy, pojawiły się przeglądarki mobilne. Tym samym powstawało coraz więcej narzędzi, bibliotek, dodatków, a sama ilość żądań rosła niesamowicie. Pojawił się Zend Framework 2 (wrzesień 2012) oraz Symfony 2 (lipiec 2011), a wraz z nimi tysiące plików PHP potrzebne tylko do jednej aplikacji. Dla przykładu Symfony 3.4 to 50 MB danych umieszczonych w prawie 9 tysiącach plików.

W dużym skrócie, bo już kiedyś o tym wspominałem, PHP nie był w stanie szybko ogarniać dostępu do tylu plików na raz, przy każdym wykonaniu kodu, przy każdym wywołaniu żądania o aplikację internetową musiał dysku odpytać o wszelkie potrzebne kody źródłowe. Tworzenie cache całego serwisu (do HTML) było tylko pewnym obejściem problemu, ale nie jego rozwiązaniem.

Tak powstały akceleratory PHP, a bardzo szybko dominację na rynku zdobył opcache, który wraz z wersją PHP 5.5.0 został na stałe dołączony do silnika. Niestety od samego początku miał jedną wadę w połączeniu z php-fpm – nie był przygotowany na chroot’owanie.

Na poziomie php-fpm silnik nie wiedział już jaki jest główny katalog, dla niego głównym katalogiem był katalog bieżący. Na przykład, mamy aplikację w katalogu /var/www/app.domain.com/docroot, z włączonym chrootem, dla PHP-FPM i opcache widoczny jest wyłącznie /docroot, a jeszcze częściej sam /.

Korzystanie z chroot (czyli funkcji, aby aplikacje wzajemnie na siebie nie oddziaływały) powodowało, że nie mogliśmy korzystać z opcache. Dlaczego? Opcache powodował tworzenie takich samych skrótów dla różnych aplikacji (np. WordPress, ZF, Sf przenikały się wzajemnie powodując błędy).

Całe szczęście core team wraz z wersją PHP 7.0.14 (grudzień 2016) dodał parametr konfiguracyjny opcache.validate_root, którego włączenie sprawia zapobieganie kolizjom nazw w chroot oraz faktycznym chroot, również z poziomu php-fpm.

opcache.validate_root = 1

I w końcu, można od PHP 7.0.14 cieszyć się chroot’em oraz opcache.

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

Autor wpisu: matipl, dodany: 11.09.2018 15:02, tagi: php

Na Web Summer Camp wybierałem się od kilku lat. Tym mocniej zależało mi, aby znaleźć się tam znaleźć, im bardziej konferencje w Polsce puchły i puchły. Obecnie ciężko znaleźć ogólnopolską konferencję, której liczba uczestników jest mniejsza niż 1000 osób. Dla mnie taki 4Developers czy nawet PHPCE (aka PHPCon) stały się kongresami, a nie spotkaniami ludzi, którzy chcą wzajemnie dzielić się doświadczeniami zawodowymi.

Web Summer Camp nie jest stricte konferencją, jest to 3-dniowe wydarzenie z 5 ścieżkami podczas których odbywają się warsztaty. W tym roku ścieżka PHP miała 2 równoległe programy po jeden-dwa warsztaty dziennie. Największą zaletą jest moim zdaniem to, że organizatorzy (dzięki Ivo & Netgen!) ciągle starają się trzymać limit około 200 uczestników. Dużo? Dochodzi do tego podział na ścieżki (różne piętra, budynki) i tworzą się bardzo kameralne spotkania po 15-30 osób. Integracja podczas #wsc bardzo przypomina mi początkowe edycje PHPCon Poland (Góry Świetokrzyskie, ~ 90 osób), a jeszcze bardziej Zimowisko Linuksowe (~50-60 osób). Jakby człowiek się uparł mógłby każdego bezpośrednio poznać, zamienić kilka zdań itp. Największy minus? Wejściówka kosztuje około 550 Euro (dokładnie 4 000 kun). Doliczając transport, nocleg itp. robi się spora sumka.

Web Summer Camp 2018 - pamiątkowe zdjęcie uczestników

Skąd się wziął Web Summer Camp?

Pierwsza edycja odbyła się w 2012 roku pod nazwą eZ Publish Summer Camp. Trochę śmiesznie, ponieważ sporo osób uważa, że eZ to nie do końca to co świat PHP lubi najbardziej. A dlaczego eZ? Ponieważ Netgen, firma-organizator w tamtym czasie tworzyła głównie w oparciu o narzędzia i biblioteki udostępniane przez eZ. Swoją drogą Symfony nie było jeszcze wtedy tak popularne (Sf2 zostało wydane w połowie 2011 roku). Edycja 2012 i 2013 (pod tą samą nazwę) odbywały się na wyspie Brač w pobliżu Splitu i Makarskiej.

Rok 2014 to powiew świeżości. Przede wszystkim została zmieniona nazwa na bardziej ogólną PHP Summer Camp (eZ miał osobną ścieżkę w tym samym miejscu, ale pod starą nazwą), a samo spotkanie przeniesiono na Istrię do miasteczka Rovinj. Warsztaty odbywały się w grupie tych samych hoteli co dzisiaj – Maistra, ale w piękniejszej lokalizacji – Hotel Park (dziś w przebudowie i ze zmienioną już nazwą na Grand Park Hotel).

Od 2016 roku całość organizowana jest już pod wspólną nazwą – Web Summer Camp. Na początku z 3 ścieżkami (PHP, eZ, Design), ale co roku tworzona jest nowa ścieżka (2017 – Design przekształciło się w UX, doszło JS; 2018 – pojawia się Biz, PHP ma 2 ścieżki).

St. Catherina Island, Croatia

Istria

Istria to największy półwysep Adriatyku. Od kontynentu (Chorwacji) Istrię oddzielają wapienne góry oraz płaskowyż podgorkiego Krasu i gór Čičariji. Najwyższy szczyt to Vojak (1396m n.p.m). Południowa część półwyspu to uprawy zbóż, winnej latorośli i sadownictwo. Historycznie mieszkały tutaj plemiona Ilirów (Histrowie, Liburnowie). Do dzisiaj popularne są konstrukcje z tamtejszych czasów – bezzaprawowa technika łączenia kamieni. Około 178 r.p.Ch. rozpoczyna się ekspansja Rzymu, który bardzo szybko skolonizował półwysep. Założone w tamtym czasie rzymskie miasto to m.in. Pula (Pola), Poreč (Parentinum), Triest (Tergeste), Labin (Albona) jak również główna droga Via Flavia z Puli do Akwilei. Istria w późniejszym okresie znajdowała się również pod panowaniem Cesarstwa Bizantyjskiego – w tym okresie powstają takie budowle jak Bazylika Eufrazjana w Poreču czy Bazylika Marii Formozy w Puli. Następnie przyszedł czas Słowian, którzy zmagali się z zajęciami głównie przez Włochów aż do 1947 roku kiedy Istria została przyznana Jugosławii.

I do dzisiaj na Istrii te 3 „cywilizacje” się niesamowicie przenikają. Dla Włochów, ze względu na wielojęzyczność całego półwyspu (oficjalnymi językami jest chorwacki, włoski, słoweński) jest to częsty cel wakacji. A dla nas? Interesującą odmianą. Istria niby chorwacka, ale na każdym kroku można spotkać zabytki z czasów rzymskich. Jak również sama zabudowa, szczególnie w turystycznych miasteczkach jak Rovinj przypomina bardziej klimat włoski niż bałkański.

Rovinj - w drodze na wyspę św. Katarzyny

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

Wszystkie wpisy należą do ich twórców. PHP.pl nie ponosi odpowiedzialności za treść wpisów.