Niezalogowany [ logowanie ]
Subskrybuj kanał ATOM Kanał ATOM    Subskrybuj kanał ATOM dla tagu php Kanał ATOM (tag: php)

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...

Autor wpisu: matipl, dodany: 13.04.2018 11:59, tagi: php

Dla mnie obecność na 4Developers to już tradycja. Idealna długość (1 dzień w poniedziałek), miesiąc perfekcyjny (kwiecień, gdzie świat konferencyjny dopiero się budzi), w miarę prosty dojazd z Trójmiasta (pociągiem ~ 3h). I samo miejsce w Warszawie mi odpowiada (dawny Hotel Gromada, ~ 20 minut z centrum).

A jak było w tym roku? Inaczej, co roku jest inaczej. Nigdy nie doświadczymy tego samego. Zmieniają się ludzie, ścieżki, technologie, a my sami mamy nowy bagaż własnych doświadczeń. Moim zdaniem dało się odczuć coraz większe niedostatki w ilości prelegentach, i nawet takiego organizatora jakim jest PROIDEA dotknął ten problem. Dlatego staram się posiłkować zagranicznymi konferencjami, ale do rzeczy.

Trendy

Zastanawiacie się czemu warto bywać na konferencjach, i dlaczego bywanie jest lepsze od oglądania nagrań? Uczestnicząc możecie wyczuć jakie są obecnie trendy na rynku, co się zmienia, z czego mniej się korzysta, a co stało się już standardem.

I tak jak kiedyś tylko napominano w świecie IT o DDD (Domain-Driven Design) to dzisiaj korzysta z niego wiele firm w wielu projektach. I nie zapominajmy, że jeśli mówimy o DDD, to w parze idzie z CQRS czy Event Sourcingiem, a tuż obok (a wręcz przed) stoi Event Storming. Jeśli nie słyszeliście o tych pojęciach, możecie szybko przeklikać się przez 233 slajdy Cyryla Martraire, z którego zaczerpnięty jest powyższe obrazek.

Natomiast w świecie bardziej sprzętowym coraz modniejszym podejście staje się Serverless. Coraz więcej i coraz częściej można usłyszeć, że znajduje się kolejny śmiałek, z odpowiednim budżetem, aby wejść w FaaS. W przeciwieństwie do DDD, nie widzę szerokiego miejsca w świecie IT na FaaS, ale jest to ciekawe podejście do wytwarzania oprogramowania i są pewne miejsce gdzie na pewno znajdzie zastosowanie.

Fajne było…

Fajnie, że identyfikator był na smyczy, a nie jak w 2016 roku (korkowa podkładka pod kubek). Fajne jest również to, że 4Developers nadal wpółpracuje z Eventory i cała agenda jest dostępna na telefonie i można układać własny program dnia. To o czym zapominają niektórzy organizatorzy w Polsce to napoje, kawa, herbata, słodkości w czasie przerw – ułatwia to nie tylko przeżycie całego dnia, ale również w pewien sposób rozmowy kuluarowe. I tego było pod dostatkiem.

Mniej fajne

Niefajnie, że wspomniany badge był z eko-papieru, bez agendy (ale agendę papierową można było dostać). Podczas tegorocznego 4Developers brakowało mi prelekcji stricte technicznych, takich z mięskiem (jak kiedyś np. GoldenLine, GOG, Allegro). Prelekcje, które były to bardziej forma prezentacji technologii, procesu, a nie podrasowania aplikacji/systemów pod maską.

Wydawało mi się, że w tym roku jest mniej ścieżek, ale mimo wszystko ścieżka PHP dostała salę wielkości 2/3 z poprzedniego roku. Dziwnie. Co było jeszcze dziwnego? Lunch – zimny, z boksu, ze słabymi ziemniakami. Ale…

Na pewno wrócę za rok, trzymając kciuki za CfP i czas prelegentów, aby pomiędzy swoimi obowiązkami zawodowymi i prywatnymi mieli czas na dzielenie się wiedzą. A poniżej możecie przeczytać moje notatki z tegorocznej edycji.

Strangler pattern – czyli jak sprawnie udusić Legacy

Prelegent: Michał Kurzeja Ścieżka: PHP

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

Autor wpisu: matipl, dodany: 19.02.2018 13:12, tagi: php

Po rozmowach z różnymi osobami w minionym tygodniu doszedłem do wniosku, że nadszedł trudny czas dla programistów, nie tylko języka PHP.

Jeszcze nie tak dawno temu liczyła się głównie „głowa”, rozwiązywanie łamigłówek, projektowanie algorytmów pod konkretne rozwiązania, staż, doświadczenie. Obecnie staż i doświadczenie nie zawsze są sprzymierzeńcem programisty (developera), a czasami stają się wrogiem. Ponieważ rozwiązania, które uchodziły za właściwe jeszcze 5-10 lat temu dzisiaj przechodzą do lamusa, a raczej to ułamek pracy jaką dzisiejszy programista musi wykonać.

Technologia przynosi wiele dobrego w świecie programisty. Zamiast zajmować się połączeniami z bazą danych, tworzeniem nowych walidatorów, czuwaniem nad przepływem informacji teoretycznie mamy więcej czasu, aby zająć się tym czego oczekuje Klient. Ale technologia bywa przewrotna, i zamiast kilku klas, tworzymy dziesiątki, bo szyna, bo event itp. A do tego konfiguracja tu i tam (a może anotacje, a może YML, albo router w PHP). Coraz więcej osób się w tym gubi i potrzebuje o wiele więcej czasu na wdrożenie…

Dlatego dzisiaj polecam Wam zobaczyć nagranie z warsztatów, które odbyły się podczas Web Summer Camp 2017, a prowadził je Marco Pivetta. Warsztaty te to wprowadzenie w świat CQRS (Command Query Responsibility Segregation – teoria u Martina Fowlera).

Marco na GitHub umieścił kod aplikacji, dlatego możecie w pewien sposób uczestniczyć w tych warsztatach.

Artykuł CQRS + ES – świetny workshop pochodzi z serwisu Mateusz matipl Kamiński.

Autor wpisu: JoShiMa, dodany: 30.12.2017 02:01, tagi: framework, php

Tak. Zaczęłam miesiąc temu swoją przygodę z Symfony. Długo trzymałam się z daleka od tego frameworka. Dziś właściwie nie wiem z jakie były powody mojego postępowania. Życie mnie przymusiło, żeby się jednak z nim zapoznać i prawdę mówiąc, nie żałuję. Oczywiście nie ma dnia, żebym nie zmagała się z zupełnie nowymi dla mnie zagadnieniami. Ot […]

Autor wpisu: Piotr Pasich, dodany: 20.11.2017 08:00, tagi: php

Screen-Shot-2017-10-23-at-5.59.30-PM-e1508796050361Paying for goods with Bitcoin is becoming more and more popular. If you run, maintain or develop an e-commerce website, ICO project, exchange, or trading system, you may be interested in a quick way of integrating with the Bitcoin blockchain. This article will show one of many ways of installing a Bitcoin mining software and […]
Wszystkie wpisy należą do ich twórców. PHP.pl nie ponosi odpowiedzialności za treść wpisów.