Po zeszłorocznym sukcesie, jakim było wydarzenie PHPers Summit 2017, po raz kolejny postanawiamy podjąć się wyzwania i zorganizować dla Was PHPers Summit 2018.
10:00 |
Sylius - solution tailored to your needs
Workshop by Łukasz Chruściel, Konrad Alfaro in TEJ (8 hour) We współczesnym świecie aplikacje wymagają coraz to bardziej wyspecjalizowanych funkcjonalności. Całe biznesy opiera się na dostarczaniu rozwiązań bardzo konkretnych rozwiązań - między innymi CMS’y czy PIM’y. Jedynie firmy, które przeznaczają większość swoich zasobów na rozwój mogą sobie pozwolić na współzawodnictwo w danej dziedzinie. W takim świecie albo bardzo dużym kosztem dostarczasz kompletny zestaw narzędzi, albo zapewniasz łatwą drogę by integrować inne rozwiązania. W Syliusie nie chcemy mieć największej listy funkcjonalności. Platformy które próbują być wszystkim na raz już istnieją. Nasz produkt rozwijamy w zupełnie innym kierunku - chcemy stworzyć najlepszy silnik e-commerce’owy oraz umożliwić łatwą drogę do integracji z najlepszymi narzędziami w swoich kategoriach. Potrzebujesz zarządzać treściami znajdującymi się w swoim sklepie? Nie używaj do tego oprogramowania e-commerce, wybierz rozwiązanie do tego stworzone takie jak Drupal, eZ, Sulu czy też inne. Potrzebujesz systemu PIM? Wybierz Akaneo lub Pimcore. Jeśli potrzebujesz solidnej podstawy dla swojego biznesu, napisanej z użyciem metodologii Behaviour Driven Development i wysokiej jakości kodem - Sylius jest dla Ciebie. Dołącz do nas i przekonaj się, że praca przy rozwijaniu e-commerce może być przyjemna. W czasie naszego 8-godzinnego warsztatu rozszerzymy wspólnie podstawową wersję Syliusa o produkty grupowane. Co więcej, pokażemy jak umożliwić dodawanie tych grup od razu do koszyka oraz stworzymy kilka domyślnych grup do bazowej konfiguracji nowego sklepu tak aby praca z nową funkcjonalnością była prostsza, a efekty Twojej pracy - szybciej widoczne. Warsztaty będą głównie nakierowane na pisanie kodu. Szersze poruszenie wysoko poziomowych zagadnień frameworka będzie częścią nadchodzących szkoleń typu classroom. Po warsztacie powinieneś być zaznajomiony z podstawami Syliusa, jak postawić swój pierwszy sklep na nim oraz jak rozszerzyć niektóre z jego funkcji. Czego się nauczysz: - Zapoznasz się z architekturą oraz podziałem na Bundle ekosystemu Syliusa - Stworzysz CRUDowe API w kilka minut - Zapoznasz się z SyliusResourceBundle i stworzysz swojego pierwsze CRUDA - Dowiesz się jak w prosty sposób wygenerować CRUD do Admina z wykorzystaniem SyliusGridBundle. - Nauczysz się jak używać komponentu State Machine w Syliusie - Jak usprawnić development projektu z użyciem fixturesów i SyliusFixturesBundle Czego będziesz potrzebować: - Zainstalowanego PHP 7.1 - Zainstalowanego PHPStorm (https://www.jetbrains.com/phpstorm/download/) - Działającej wersji Sylius-Standard (http://docs.sylius.com/en/latest/book/installation/index.html) z użyciem Vagranta/Dockera lub lokalnie - Podstawowej wiedzy z Symfony Agenda: - Implementacja nowego zasobu - ""Product Bundle"" - Rozszerzenie Sylius Shop UI - Modyfikacja logiki koszyka - Rejestracja nowego stanu dla produktów (Ready/Published) - Utworzenie nowej reguły promocji dla Product Bundle - Stworzenie fixturesów grup produktów |
11:00 |
Framework as an implementation detail
Workshop by Tomasz Kowalczyk in WUCHTA (5 hour) Czy zastanawiało Cię jak uniezależnić się od frameworka i zbudować aplikację według własnych zasad? Podczas tych warsztatów przejdziemy przez proces tworzenia nowego projektu z zachowaniem zasad poprawnej architektury oraz testowalności izolując go od wszystkich zewnętrznych zależności, w tym frameworka. Nie ma znaczenia w jakim środowisku pracowałeś - zobaczysz, wszystkie te narzędzia to tak naprawdę szczegóły implementacyjne. |
12:00 |
TDD dla początkujących
Workshop by Michał Pipa in GLANC (5 hour) Warsztaty są przeznaczone dla osób chcących zapoznać się w praktyce z metodologią TDD. Będziemy ćwiczyć na przykładzie klasycznego ćwiczenia polegającego na obliczaniu wyniku gry w kręgle (bowling game kata). Nie praktykowałeś nigdy TDD? Chciałbyś się zapoznać z tą techniką? Zapisz się, przyjdź i przynieś swojego laptopa z zainstalowanym PHP i Composerem. |
Test Driven Development w Legacy Code
Workshop by Paweł Rekowski in PYRA (5 hour) TDD jest jak zdrowy tryb życia - każdy słyszał, że warto, mało kto stosuje. Ciągle słyszę powtarzane bzdury, że się nie da, że to legacy code, albo że biznes nie pozwala... Dość! Czas przestać chować się za wymówkami i w końcu nauczyć się jak zapanować nad Potworem Spaghetti oraz zacząć dbać o jakość dostarczanych aplikacji. W trakcie warsztatu dowiesz się od jak zacząć i poznasz moje najlepsze triki i strategie, które pomogły postawić wiele aplikacji na nogi. Napiszemy wspólnie wiele testów dla strasznie parszywej aplikacji poczujesz na własnej skórze, że 100% Code Coverage, to dopiero początek zabawy :) Aby dołączyć do warsztatu nie musisz mieć doświadczenia w pisaniu testów, jednak musisz znać PHP i założenia Clean Code. Jeżeli dopiero co otworzyłeś php.net, to ten warsztat nie jest jeszcze dla Ciebie. |
|
Wprowadzenie do narzędzia Behat
Workshop by Szymon Skowroński, Leszek Prabucki in BIMBA (6 hour) Behat jest to framework do tworzenia testów automatycznych. W trakcie warsztatu pokażemy jak rozpocząć pracę z tym narzędziem wykorzystując proste przykłady. Dodatkowo zaprezentujemy w jaki sposób wdrożyć go w istniejących projektach tak, aby rozpocząć testowanie każdej warstwy aplikacji. Warsztat będzie wymagał od uczestników wcześniejszego zainstalowania dockera w wersji conajmniej 18.01 ce razem z narzędziem docker-compose. Przed warsztatem udostepnimy odpowiedni projekt na githubie zawierający konfiguracje dockera razem z projektem na którym ropoczniemy warsztat. |
|
Symfony + Elasticsearch – jak zacząć i do czego wykorzystać?
Workshop by Michał Kómoch, Tomasz Tomalak in KLARA (4 hour) To szkolenie ma na celu przedstawienie prawidłowej integracji i użycia biblioteki FOSElasticaBundle w połączeniu z Symfony. Skierowane jest do osób, które chciałyby rozpocząć swoją przygodę z tym narzędziem oraz pomoże im utwierdzić się w przekonaniu czy jest to dobry wybór (lub niekoniecznie ;-)). Odpowie również na pytania dlaczego i do czego można wykorzystać Elasticsearch oraz do czego nie powinno się go używać. Czego dowiecie się w trakcie warsztatów: - czym jest i jak działa Elasticsearch - przypadki użycia, - podstawowe użycie Kibany - tworzenie indeksów, - synchronizacja rekordów baza danych Elasticsearch - wykorzystanie biblioteki FOSElasticaBundle w pisaniu zapytań do Elasticsearch - czym są i jak wykorzystać agregaty - zakładanie eventów na dane wrzucane do Elasticsearch’a Po zakończeniu szkolenia każdy z uczestników będzie posiadał solidną wiedzę na temat konfiguracji i wykorzystania Elasticsearch’a w połączeniu z Symfony. Wymagania: - laptop z Linux’em - IDE - docker oraz docker-compose Na kilka dni przed warsztatami pojawi się w opisie link do repozytorium. Prosimy o wykonanie kroków z README przed przyjściem na warsztaty. |
09:20 |
Drupal 8 - komponenty symfony na sterydach
Talk by Tomasz Wodzikowski in SALA 1 (40 minutes) Na prezentacji pokażemy że Drupal 8 zrobił w rozwoju krok milowy. Pisanie kodu na projekcie w Drupalu nie różni się wiele od programowania w Symfony. OOP, MVC, Dependency Injection, Twig itp. To wszystko tu jest. Możesz pisać nowoczesny kod i rozwijać się, wdrażając nowoczesne rozwiązania na Drupalu. Dodatkowo dostaniesz kilka super narzędzi których Symfony może pozazdrościć. |
Klasyfikacja obrazów w PHP przy użyciu sieci neuronowych
Talk by Karol Przybyszewski in SALA 2 (40 minutes) Przetwarzanie obrazów przy użyciu sieci neuronowych to jeden z najbardziej aktualnych tematów związanych z sztuczną inteligencją. Podczas prelekcji pokażę podstawy działania sieci neuronowych na przykładzie rozpoznawania odręcznie pisanych cyfr. W celu dokładnego pokazania mechanizmów sieci neuronowych, użyty kod jest napisany w 'czystym' PHP, bez użycia zewnętrznych bibliotek. |
|
Kompozycja (która) się opłaca! 8 lat ewolucji Magento
Talk by Lukasz Bajsarowicz in SALA 3 (40 minutes) Kontekstem prezentacji jest 8-letnia ewolucja architektury Magento. Celem jest przybliżenie programistom praktycznych różnic pomiędzy kompozycją i dziedziczeniem na przykładzie platformy Magento 2. Na zakończenie przedstawię korzyści, jakie przyniosła za sobą ewolucja architektury. |
|
10:05 |
7 przysłów programisty
Talk by Jakub Saleniuk in SALA 1 (45 minutes) Co cię nie zabije, to cię wzmocni! Podzielę się z Wami wiedzą zdobytą, dzięki popełnionym błędom. Przekażę istotne rady dotyczące różnych obszarów związanych z tworzeniem oprogramowania. Wyjdziecie bogatsi o wskazówki, których nie zdobędziecie w żadnej książce technicznej. Wynikają one z indywidualnego doświadczenia nabytego podczas tworzenia złożonych projektów oraz subiektywnej opinii. 1. Gdzie kucharek sześć tam nie ma co jeść - czyli o tym dlaczego większy zespół nie przekłada się na większą wydajność. 2. Jeśli nie potrafisz, nie pchaj się na afisz - w jaki sposób poradzić sobie z implementowaniem nowych technologii. 3. Nie ilość, lecz jakość - jak nie przesadzić z wykorzystaniem nowej technologii. 4. Tylko krowa zdania nie zmienia - dlaczego warto poczekać z wykorzystaniem złożonych rozwiązań do późniejszej fazy projektu. 5. Z armatą na muchę - jak dostosować zasoby i rozwiązania do indywidualnych potrzeb projektu. 6. Tłumaczyć z polskiego na nasze - w jaki sposób dogadać się z biznesem i nie zwariować. 7. Nie od razu Kraków zbudowano - w jaki sposób dbać o swój kod. |
How to save a project using design patterns
Talk by Dawid Mazur in SALA 2 (45 minutes) A quick and humorous summary of the most important design patterns, on real-life examples and clear context. A lot of developers have tried to learn design patterns with mixed results. The sources on the topic are usually hard to grasp, the examples being artificial and wrong most of the time. I'll explain how to apply correct design patterns to problems I myself encountered in my work, most of which you probably know as well. Technologies and libraries come and go, but this knowledge will be relevant and has been for a long time. |
|
Dr Strangler & Mr Hype - Strangler Pattern w praktyce
Talk by Michał Kurzeja in SALA 3 (45 minutes) Opowiem o tym jak w bezpieczny sposób pozbyć się legacy w projekcie - nie narażając biznesu, ani zdrowia psychicznego programistów. Będzie o Strangler Pattern z praktycznego punktu widzenia - co zadziałało, a gdzie popełniliśmy błędy. |
|
11:05 |
Architektura cache'owania
Talk by Szymon Sadło in SALA 1 (45 minutes) Prędzej czy później w każdej rozwijającej się aplikacji przyjdzie czas na zastosowanie cache. Tylko jak się do niego zabrać? Od razu inwestować w zaawansowane rozwiązania? A może jednak na początek wystarczy coś prostego?Odpowiedzi na te oraz inne pytania dotyczące cache uzyskasz podczas prezentacji. Zaczniemy od teorii, a później przejdziemy przez konkretne rozwiązania, które można zastosować na różnych poziomach. Poznasz koncepcje, które będziesz mógł od razu wdrożyć w swoich projektach bez ponoszenia nadmiernych kosztów. Dowiesz się również jak poszczególne rozwiązania zachowują się w produkcyjnych systemach na przykładzie Qpony i Blix - aplikacji, które mają obecnie 1,6 miliona miesięcznie aktywnych użytkowników. |
GraphQL hot or not? How to use it to simplify communication of API based services
Talk by Adam Klimczyk in SALA 2 (45 minutes) It is already 3 years since 2015 (GraphQL release date). Is it worth to choose GraphQL rather than RestApi approach? What are the main issues, obstacles, and how to solve them? Is it hard to implement GraphQL in PHP? I will look at those questions and try to give answers based on some real-life examples. |
|
Dbanie o jakość kodu w dużej organizacji
Talk by Łukasz Młyński in SALA 3 (45 minutes) Zwroty KISS, DRY czy YAGNI zapewne nie są Ci obce, jednak czy wiesz jaki mają wpływ na całokształt Twojej firmy? Dlaczego warto skupić się na szczegółach, nawet kiedy patrzysz z perspektywy „big picture”? Podczas prelekcji dowiesz się jak pozornie małe, nieistotne cegiełki tworzą fundament, na którym opiera się twoja organizacja. Niezależnie, czy jesteś programistą, czy managerem - warto wiedzieć, jak tworzyć kod, którego nikt nie będzie się potem wstydził. |
|
12:00 |
All your (random) numbers belong to us!
Talk by Ciprian Pitis in SALA 1 (30 minutes) Random and pseudorandom number generators are some of most widely used components across the industry for a myriad of purposes. This talk aims to give a bit of the background on how random and pseudo-random numbers differ, and why it's very important from security standpoint to pick the correct one for your needs. |
Infrastructure as code z wykorzystaniem Terraforma
Talk by Daniel Hornik in SALA 2 (30 minutes) Teraz pracuje nad migracją aplikacji napisanej w PHP5.5 do PHP7.2 oraz przenosimy ją na chmurę AWS, chciałbym opowiedzieć o mojej pracy, jakie spotkałem problemy itp. |
|
Event Sourcing na przykładzie księgowości w firmie pożyczkowej
Talk by Tomasz Hajduk in SALA 3 (30 minutes) Event Sourcing jako wzorzec enterprise to temat gorący ostatnimi czasy. Mówi się przeważnie o teorii. W rzeczywistości każdy chce wiedzieć jak inni robią to w praktyce. Postanowiliśmy na nowo ugryźć temat księgowości w naszej firmie. Na przykładzie problemu z którym się zmierzyliśmy chcemy pokazać w jaki sposób skorzystaliśmy z event sourcingu w naszym biznesie w kontekście księgowości. |
|
12:50 |
Kompleksowe wdrożenie RODO i zarządzania danymi osobowymi
Talk by Krzysztof Kowalczykiewicz in SALA 2 (1 hour) W prezentacji opisane zostanie kompleksowe podejście do zmiany sposobu zarządzania danymi osobowymi. Wykraczało ono poza zmianę polityk i rozesłanie maili informacyjnych. Przebudowaliśmy wszystkie produkty, wprowadziliśmy nowy microservice (yeah!) do zarządzania zgodami i danymi. Dużo się nauczyliśmy i chcemy się podzielić dobrymi i złymi doświadczeniami. |
How we built a tools stack for the benchmarking AI, and what happened next
Talk by Michał Łukaszewski in SALA 3 (1 hour) Origin story about testers team which transformed to a team of programmers writing custom software for ML and AI testing. How we started, what mistakes we did and how we solved them. |
|
14:20 |
Fuckup Case study: Wdrożenie mikroserwisów dla nowej funkcjonalności w istniejącym systemie
Talk by Grzegorz Stawarczyk in SALA 1 (1 hour) Obsługujące miliony użytkowników serwisy wydają się doskonałym rozwiązaniem. Pod warunkiem, że jesteśmy wyłącznie użytkownikami. Jeśli mamy okazję poznać taki serwis od kuchni, z coraz mniejszym entuzjazmem patrzymy na tego typu rozwiązanie. Z jednej strony duży serwis stawia przed deweloperami wyzwania, z drugiej - niesie ogromne ryzyko. Rosnąca ilość zależności i ogrom powiązań komponentów brzmi dla użytkownika, jak jedna wielka niewiadoma, a dla dewelopera - jak niekończąca się historia, której bliżej do fuckupu niż happy endu. Dlatego dobrze jest zakumplować się z mikroserwisami. Na przykładzie realnego case study, opowiem, jak wdrożyliśmy mikroserwis dla nowej funkcjonalności w naszym systemie i jak ponieśliśmy... małą porażkę. Przestrzegę przed błędami, które popełniłem razem z zespołem, żebyście mogli uniknąć ich u siebie. Zero ściemy, (nie) tylko realne fuckupy. Zapraszam! |
Symfony without the framework
Talk by Tomasz Kowalczyk in SALA 3 (1 hour) Many developers never step out from the word of frameworks. Virtually everyone of us has to know at least one of them, to be considered a proffesional. Symfony is a very good choice and many PHP developers use it. However, not many are aware how good and reusable are it's components. I would like to present, how to build single-part solutions and whole projects using only Symfony components and in such a way, that the framework stays invisible. |
|
15:40 |
Command pattern - how to handle complicated problems!
Talk by Łukasz Chruściel in SALA 1 (1 hour) CQRS and Event Sourcing are buzzwords, that have been drawing software developers' attention to lectures and workshop for quite some time. Command design pattern in itself can imporve quality of our software. Its usage helps us to create source code, that is easy to test and maintain for year to come. In my presentation, I will discuss this design pattern and give some practical tips on how to use it in production projects. |
Wprowadzenie oraz jasne i ciemne strony GraphQL
Talk by Kacper Sieradziński in SALA 2 (1 hour) Mnogość endpointów służących do pobierania prawie tych samych danych, które niewiele się od siebie różnią to bolączka wielu programistów. GraphQL jest językiem służącym do tworzenia zapytań oraz zestawem narzędzi, które pozwalają na pobieranie danych poprzez pojedynczy endpoint HTTP. Rozwiązuje problem wielu requestów przy pobieraniu bardziej złożonych, zależnych od siebie, danych. Podczas tej prezentacji porozmawiamy jak efektywnie wdrożyć GraphQL w swoim projekcie oraz kiedy warto pozostać przy REST, a może warto używać obu rozwiązań? |
|
Bezpieczna komunikacja e-mail - ochrona przed phishingiem!
Talk by Aleksandra Kachlicka, Darek Sierka in SALA 3 (20 minutes) Czy zastanawiasz się czasem co motywuje przestępców? Waluty są dwie, klasyczna, czyli dobra majątkowe oraz ta, w ostatnim czasie najbardziej pożądana, czyli dane osobowe. Często przez nieuwagę ułatwiamy atak cyberprzestępcom. Możemy mówić, że naszej firmy to nie dotyczy, bo przecież używamy antywirusów czy posiadamy filtry na serwerach, ale ataki się zdarzają i to coraz częściej. Z prezentacji dowiesz się: - Dlaczego podszywanie się pod Twoją firmę to poważny problem? - Jak zabezpieczyć wysyłkę e-mail w Twojej firmie? - Dlaczego SPF i DKIM nie wystarczą by czuć się bezpiecznie? - Czym jest DMARC i s/mime? Dlaczego warto je wdrożyć? - Jak zdobyć status zaufanego nadawcy u polskich ISP? - Jak rozpoznać wiadomość Phishingową, która dotarła na Twoją skrzynkę e-mail? |
|
17:10 |
Live Better with Test Driven Development
Talk by Paweł Rekowski in SALA 1 (50 minutes) Test Driven Development is like a healthy diet - everybody heard how good it is but not so many of us use TDD on a daily basis. We have thousands of excuses and we repeat the same stories about how hard it is, without even checking if that's the case. As with healthy eating Test Driven Development does not require a strong willpower. You need a good plan and few powerful techniques which are easy to use and simple to remember. During this presentation, I'm going to share with you my best practices and methods which help to test even legacy code. I’ll show you what you do and don't need to create good tests. We will break all popular myths and excuses about TDD. You will see how similar programmers and doctors are. I’ll show you what can happen if you still don’t care about testing your application, based on real cases. If you want more, the day before the presentation I'll do a workshop (in Polish) - how to use Test Driven Development in Legacy Code, where you are going to learn how to use the best methods to test even the worst code. |
Rewolucja Behatowa w Syliusie - czyli jak wróciliśmy z piekła
Talk by Mateusz Zalewski in SALA 2 (50 minutes) We współczesnym procesie wytwarzania oprogramowania, testowanie nie jest już tylko dodatkiem. Metodologie takie jak TDD czy BDD wymagają poświęcenia czasu na odpowiednie przygotowanie architektury testów, aby proces automatycznego testowania aplikacji przebiegał jak najsprawniej, a jego ewentualna rozbudowa nie wiązała się ze zbyt dużym nakładem pracy. Świetnym przykładem pokazującym odpowiednio przeprowadzoną rewolucję systemu testów jest wykorzystanie Behata w projekcie Open-source - Sylius, który niedawno przeszedł całkowitą metamorfozę. W swojej prezentacji przedstawię największe problemy poprzedniego podejścia do testowania UI oraz wnioski jakie z nich wyciągnęliśmy. Zaprezentuję także sposób, w jaki został on przebudowany, wykorzystując potężne, często mało znane, mechanizmy i wzorce. Omówię całą architekturę nowego systemu Behata w Syliusie, który w znaczący sposób przyczynił się do ułatwienia procesu wdrażania nowych, odpowiednio otestowanych funkcjonalności. |
|
Versioning and sharding data in micro-services of GWENT: The Witcher Card Game
Talk by Georgii Korshunov in SALA 3 (50 minutes) data versioning to support multiple platforms and game versions of GWENT at the same time, making data versioning work together with database sharding to support the growing number of players, challenges of implementing sharding and versioning in micro-service architecture with synchronous and asynchronous request processing. |