We are pleased to invite you, once again to PHPers Summit, an event with increasing audience and number of lecturers, from Poland and european countries. 6th September 2019 we are meeting at MTP Poznań Expo and talking about PHP and related technologies.

Thursday 5th September 2019

09:00
1
Kubernetes - 0 do 1
Workshop by Michał Kurzeja in Workshops (6 hour)

Kubernetes jest już praktycznie standardem, jeśli chodzi o utrzymywanie i zarządzanie aplikacjami chmurowymi. Pozwala na łatwe skalowanie, wdrażanie nowych wersji w podejściu canary i rolling-upgrade, proste rollbacki, uruchamianie serverless i wiele więcej. Z pozoru może wydawać się trudny, ale tak naprawdę do uruchomienia wielu podstawowych scenariuszy nie potrzeba żadnej zaawansowanej wiedzy. Podczas warsztatu będziesz mieć okazję nauczyć się podstaw potrzebnych do produkcyjnego uruchomienia serwisu na Kubernetes.

0
One scenario, several interpretations - how to code without worrying in PHP
Workshop by Łukasz Chruściel in Workshops (6 hour)

Behaviour Driven Development aims to abstract examples of usage from the implementation detail. This gives great freedom to the developer who can choose the most suitable tool. Therefore scenarios can have several implementations. Can it be useful? How can we gain from this? During workshop, I will talk about the approach that helped me save several projects I have been involved in. I will address these questions and present a possible solution together with architectural and structural pieces of advice.

1
Going framework-agnostic with BDD
Workshop by Darusz Drobisz in Workshops (6 hour)

Having code that is not coupled with any framework has a lot of profits. There is small probability that you will be changing framework during your project lifecycle, but that kind of approach gives you easy way to reuse some of your functionalities across different styles of user interaction. GUI? API? Console command? Easy peasy with small effort. Everything with high understanding of domain you are working for. During this workshop he want you to learn how working close with business and defining their needs together with them can help you creating clean code that you will love to work in long term projects. Attendees will use Behat and PHPSpec to design how their system will communicate internally between their component and with the outside world. At the end you will learn how to create a system that is loosely coupled with a framework.

0
REST easy with Api Platform
Workshop by Antonio Peric-Mazar in Workshops (6 hour)

We'll start by creating a fully-featured API in just a few minutes with API Platform, Symfony and Doctrine. The API will support pagination, data validation, access control, relation embedding, filters, and error handling. It will expose many formats (JSON-LD, Hydra, JSONAPI, HAL, JSON, XML, YAML, and CSV), will be documented with Swagger/OpenAPI and will have a nice UI done in React. Last but not least, the API will respond in a just few milliseconds thanks to its built-in invalidation-based cache mechanism. Then, we will use the ReactJS tools provided by the API Platform to consume the exposed Hydra documentation. In a few more minutes, we will get a Material Design administration interface (a la Sonata / EasyAdmin - but 100% client-side) built with React. Finally, we'll discover 2 nice code generators to bootstrap a SPA (React, Redux and React Router) and iOS and Android mobile apps (React Native).

0
Sklep internetowy w jeden dzień, albo jak zacząć używać Syliusa
Workshop by Mateusz Zalewski in Workshops (6 hour)

O tym, jak prężnie rozwija się dziś rynek e-commerce nie trzeba nikogo przekonywać. Tak dynamiczny, a zarazem wielokierunkowy rozwój stawia przed twórcami rozwiązań dla aplikacji webowych cały szereg wyzwań i wymagań. W odpowiedzi na te niełatwe zadania stawiane współczesnemu developerowi, powstał Sylius - nowoczesny system e-commerce wykorzystujący framework Symfony. Jest to doskonałe narzędzie, które łatwo dostosować do indywidualnych potrzeb i procesów klienta. Co ważne, Sylius to nie tylko platforma e-commerce - to także świetny przykład wykorzystania metodologii BDD oraz zasad clean-code'u w dużym, realnym projekcie. W trakcie warsztatu uczestnicy zapoznają się z podstawowymi cechami i zaletami Syliusa, stworzą za jego pomocą prosty sklep internetowy i dostosują go do specyficznych potrzeb biznesowych. Wykorzystując mechanizmy oparte na szybkim tworzeniu CRUDowych modułów oraz użycie maszyny stanów, stworzą nowy moduł w sklepie i zintegrują go z istniejącymi elementami systemu. Wymagania: - znajomość PHP (najlepiej w wersji 7+) - podstawowa znajomość Symfony - zainstalowane środowisko programistyczne (PHPStorm lub inne) - zainstalowana najnowsza wersja Syliusa (https://docs.sylius.com/en/1.5/book/installation/installation.html)

10:00
2
Strategiczne Domain Driven Design + EventStorming
Workshop by Mariusz Gil in Workshops (9 hour)

Implementacja Domain Driven Design w oparciu jedynie o taktyczne wzorce techniczne i DDD-Lite niemal zawsze prowadzi do problemów. Odkrywanie i eksploracja Ubiquitous Language, domen i zawartych w nich subdomen, struktury Bounded Contextów i łączących je relacji stanowią istotną część każdego złożonego projektu IT. W trakcie całodniowego warsztatu, z użyciem kilku poziomów EventStormingu oraz technik strategicznego Domain Driven Design przeprowadzimy analizę i modelowanie systemu obsługi wynajmu przestrzeni co-workingowych. Nauczysz się więc w praktyce jak stosować EventStorming do analizy złożonych problemów biznesowych, wykorzystywać strategiczne i taktyczne DDD w trakcie implementacji projektu czy przygotowywać wstępną roadmapę projektu.

16:00
0
Elastic zero to hero
Workshop by Krzysztof Skaradziński in Workshops (4 hour)

Dziś prawie każdy portal posiada funkcjonalność pozwalającą na przeszukiwanie swoich zasobów, portale z ogłoszeniami, wycieczkami, portale do zamawiania jedzenia. Na warsztatach dowiesz się w jaki sposób wykonać podstawowe operacje CRUD, a także czym jest scoring i w jaki sposób nim manipulować, aby uzyskać najlepsze wyniki. W pierwszej części zapoznamy się z mappingiem, indexowaniem oraz podstawowymi typami query, w następnie części zapoznamy się bibliotekami do obsługi zapytań do Elastica, a także zmodyfikujemy aplikację do ogłoszeń o pracę tak aby wprowadzić do niej zaawansowaną funkcjonalność wyszukiwania z wykorzystaniem Elastica i Logstasha, a także podstawami obsługi Kibany Wymagania: * laptop oczywiście * zainstalowany docker, docker-compose i znajomość podstawowych komend * zainstalowany git i znajomość podstawowych komend

1
PHP CS FIXER - CREATING OWN RULES
Workshop by Dariusz Rumiński in Workshops (4 hour)

In our projects, we are often using existing sets of rules and good practices, but sometimes there is a desire to follow unique, project-specific rule. Then, instead of manually checking the new policy, it is worth to automate it. Workshop will present how to achieve that using PHP CS Fixer. We will start from basics - how to analyse source code using... code! We will learn how the code looks after tokenization and how to traverse over it, and even manipulate it. Finally, we will learn how to create our own, custom rule with both, unit and integration tests. Requirements: - own laptop - php 5.6+ - composer - git

1
Impact Mapping for Software Developers
Workshop by Szymon Skórczyński in Workshops (4 hour)

Impact mapping is a strategic planning technique which complies with agile, lean startup and design thinking principles. It perfectly works for planning software products and projects and it can also work well for non-IT business. In this tutorial, participants have a chance to learn the impact mapping technic in practice by preparing their impact maps in small groups. During the workshop participants are split into groups of 4 to 5 people. They choose the problem they will work on (from a list of IT and non-IT problems) and they prepare an impact map step by step. They start with shaping the goal, then they define actors, desired impacts and deliverables. And the end they try to find the shortest path through the map. 70% of the time is dedicated to hands-on work in groups and 30% of the time is spent on theory presentation.

Realtime w PHP z użyciem Firestore
Workshop by Szymon Skowroński, Leszek Prabucki, Leszek Prabucki in Workshops (4 hour)

Celem warsztatu jest zapoznanie uczestników z usługą Firestore i stworzenie aplikacji działającej w czasie rzeczywistym w języku PHP. Uczestnicy zapoznają się z problemami w projektowaniu aplikacji realtime. Warsztat jest przewidziany dla osób początkujących. W jego trakcie uczestnicy stworzą prostą aplikację w Symfony 4 oraz po stronie klienta Angular 8.

0
Simulation Scrum Game about team responsibility
Workshop by Agata Sobek-Kreft in Workshops (4 hour)

Workshops are divided into two parts: 1. Theory part with presentation about team dependencies and responsibilities 2. Practical part with workshops, when attendees are learning, how important is working together and how they can work with dependencies inside the teams and outside, when they need to focus on knowledge transfer and share information with other teams. The main goal of the game is to prove that team playing is the biggest value. Game helps understand dependencies between team members and improve team working. Game shows that every member has own competencies and the only way to win is to work together. It is visible because game lasts for 4 simulation sprints and during them we can see the improvements.

Friday 6th September 2019

09:00
0
Conference Opening
Keynote by Leszek Krupiński (30 minutes)

Leszek open the conference with keynote about PHPers community.

09:30
2
Symfony 4: A new way to develop application
Talk by Antonio Peric-Mazar in Room 1 (45 minutes)

Symfony4 is here and it is better than ever. With Flex it can be a micro framework and an amazing beast with any feature you want. What changed from version 3, what are new best practices, what are new components and why Symfony is moving PHP world forward once again you can find in this talk.

1
Twój mózg zawsze próbuje Ci pomóc
Keynote by Piotr Miazga in Room 2 (45 minutes)

Luźna opowieść o tym jak działa nasz mózg oraz jak bardzo stara się nam pomóc, przez co czasem płata figle. Wytłumaczymy sobie, jak żyć, kiedy to co mamy pod czapką nie zawsze chce współpracować. Po krótce wyjaśnimy sobie jak nasz umysł postrzega świat, dlaczego zauważamy godzinę 11:11 oraz czemu depresja jest tak ciężką chorobą. Ponadto Piotr opowie o tym jak ugotować zupę z kamieni, jak ugotować żabę, jak złapać małpę, oraz dlaczego nie warto pozostawiać auta z wybitą szybą, a przy dobrych wiatrach poruszymy tematy psychologi pieniądza. A to wszystko w nawiązaniu do codziennej pracy programisty.

10:30
3
Phabricator - One tool to rule them all - Boozt.com
Keynote by Dawid Jurga, Jonny Johansson in Room 1 (45 minutes)

Phabricator to zestaw narzędzi wspomagających tworzenia oprogramowania. Zawiera aplikacje do przeglądu kodu, hostingu repozytoriów, śledzenia błędów oraz zarządzania projektami. Posiada interfejs CLI Arcanist. Powstał jako wewnętrzne narzędzie Facebook'a, aktualnie dostępne na licencji OpenSource. Napisany w PHP.

0
Don't lose your head in the cloud - AWS CloudFormation from Symfony perspective.
Talk by Andrzej Maleszewski in Room 2 (45 minutes)

AWS is a widely used cloud platform as a service (PaaS). However, when we have to deal with it, especially in the beginning, we can be overwhelmed with the number of options it offers. Creating an instance to host a simple Symfony application isn't that hard as it seems to be. But when we need to expand it, or our project requires multiple different services it will quickly outgrow our setup. When your application grows it tends to become a painful experience. Having to create and manage AMIs and Load balancer configuration all by yourself is a challenge, to say the least. Fortunately, AWS provides us with the tool that can ease that pain - bringing automation and replicability to our stack. It is called CloudFormation. In this presentation I intend to: - Focus on the practical aspect of building the AWS stack using Cloud Formation for the Symfony applications - Show benefits of the CloudFormation when booting new work environments - Go over it's most useful features - from PHP developer perspective - Showcase example configuration of Symfony application running in CloudFormation - Describe what CloudFormation is and what it is not.

11:20
1
Hitchhiker's guide to CI/CD pipelines
Keynote by Jakub Zalas in Room 1 (45 minutes)

Get on a journey to the continuous integration land where the tests are green and the builds are pretty... fast. Find peace of mind in code instantly built and ready to go with every commit you make. Finally, reach the heights of enlightenment by having your project automatically deployed to production. In this talk Jakub will explain concepts of continuous integration, delivery, and deployment. You'll understand the benefits of having a CI/CD pipeline, and mechanics of building one.

1
I want to code! - how do we save time thanks to SCRUM meetings
Talk by Agata Sobek-Kreft in Room 2 (45 minutes)

A talk about sprint plan components (I'm not only talking about planning meetings!) and how to profit from meetings so the team's work is the most effective. I will show how important an element of each sprint are meetings; what are the roles and what they let us achieve. Most importantly, I'll show how the responsibilities are distributed and to whom the individual meetings serve.

12:20 Strategie integracji między kontekstami w Domain Driven Design
Talk by Tomasz Świacko-Świackiewicz in Room 1 (30 minutes)

W idealnym świecie DDD dany Bounded Context jest w pełni niezależny, odizolowany od otoczenia, posiada wszystkie informacje niezbędne do realizacji swoich celów biznesowych. Niestety nie zawsze mamy taki komfort, a przyczyn może być wiele. W efekcie jesteśmy zmuszeni do zapewnienia brakującej wiedzy naszemu kontekstowi. W ramach prezentacji przedstawię niektóre ze strategii integracji między kontekstami, kładąc szczególny nacisk na stronę praktyczną czyli kod

2
Pact - niekoniecznie z diabłem, o testach kontraktowych.
Talk by Maria Preyzner in Room 2 (45 minutes)

Każdy kto pracował przy mikroserwisach zna ból wolnych, niedeterministycznych testów integracyjnych które utrudniają pracę. Przy pomocy pacta pokaż jak testować komunikacje pomiędzy serwisami i nie oszaleć.

12:50 AUTOREVIEW - NOT (YET) COMMON APPROACH TO MAKE REVIEWS EASIER
Talk by Dariusz Rumiński in Room 2 (45 minutes)

Lightning talk about how to make reviewing process easier by letting reviewers focus on clue of the change, and not all the minors around the code - without lowering quality of code itself. Static Code Analysis is great, but it's not enough - so what's more? Case study of PHP CS Fixer project.

14:00 Symfony Messenger w praktyce
Talk by Michał Kurzeja in Room 1 (45 minutes)

Symfony Messenger to jeden z najnowszych komponentów świata Symfony. Pozwala w łatwy i szybki sposób implementować Command/Event/Query Bus i szybko wdrożyć podejście CQRS. Z drugiej strony, z pomocą tego komponentu można spokojnie implementować dużo bardziej złożone systemy - wspierające kolejkowanie, middleware, walidację. Podczas prezentacji pokażę jak zacząć pracę z tym komponentem, ale też kilka ciekawych zastosowań z własnych projektów.

Senior Developer Development
Talk by Szymon Skórczyński in Room 2 (45 minutes)

Each developer is, was or (most probably) will be a senior developer. Many seniors wonder about choosing the right career path - one can become a manager, an architect or an engineering expert - just to name a few options. There is a bunch of non-technical skills which are very helpful or even essential if one thinks about progressing their career in any of those paths. For more than 3 years I have been helping senior developers shape their career plans and work on gaining knowledge, skills and experience they need to grow professionally. In my talk, I recommend skills which every ambitious senior engineer should gain: - Understanding the business and having holistic view on software engineering. - Peopleware. - Learning and teaching.

14:45
0
Automatyzacja refactoringu legacy kodu w PHP z wykorzystaniem biblioteki Rector
Talk by Józef Bielawski in Room 1 (45 minutes)

Każdy z nas pracował kiedyś z tzw. legacy code, i każdy wie że nie jest to proste zadanie. Dlaczego więc nie wesprzeć się automatyzacją tychże zadań? Tutaj z pomocą przychodzi nam nowo powstałe narzędzie Rector ( https://getrector.org/ ) , które pozwala na pełną automatyzację migrowania/aktualizację "przestarzałych" wywołań np. we frameworku Symfony.

16:15 Logowanie użytkowników w REST API na mikroserwisach
Talk by Grzegorz Stawarczyk in Room 1 (45 minutes)

Wiele aplikacji i stron internetowych obsługuje logowanie użytkownikaów. Coraz więcej z nich wdraża również logowanie przez social media. Dołóżmy do tego architekturę mikroserwisów i mamy gotowy problem do rozwiązania. W prezentacji przedstawię rozwiązanie takiej sytuacji z wykorzystaniem RESTowego API i mikroserwisu użytkowników. Wykorzystamy przy tym technologie takie jak oAuth, JWT i koncept Single Sign On.

A short tale about state machine
Talk by Łukasz Chruściel in Room 2 (45 minutes)

Entities lifecycle is usually something more then just create and delete. Models, with which we are working on day to day basis changes their state under some business circumstances. State machine pattern can be a powerful allay when solving this kind of problems. How does it looks like? What are pros and cons of state machine usage? What are the things, that we should be beware of? I will answer these questions during my presentation.

17:15 Nie tylko SOLID. GRASP - jeszcze jeden sposób na kod wysokiej jakości.
Talk by Karol Kreft in Room 1 (45 minutes)

5 zasad SOLID jest dobrze znane programistom ale czy słyszeliście o GRASP? 9, często mniej znanych reguł, które powstały w 2005 roku a więc nieco później niż SOLID. High cohesion and low coupling, czym jest kontroler, niekoniecznie rozumiany według tego o czym mówi model MVC. W prezentacji przedstawię bliżej zasady wynikające z GRASP oraz moje przemyślenia dotyczące zastosowania ich w PHP. Karol - Programista o humanistycznych zainteresowaniach, fan NBA, wielbiciel dobrej architektury (nie tylko tej w kodzie) oraz wycieczek po górach. Od 2010 zawodowo związany z tworzeniem aplikacji webowych w języku PHP. Pracuje w Intive.

1
Event Sourcing, CQRS, Event bus i DDD
Talk by Grzegorz Bandur, Sergii Shostak in Room 2 (45 minutes)

Event Sourcing, CQRS, Event bus i DDD od jakiegoś czasu skupiają na sobie uwagę. Na przykładzie zrealizowanego komercyjnego projektu Payments zaprezentujemy jak się z nimi zmierzyliśmy. Przedstawimy ich zalety i ograniczenia przy realizacji mikroserwisów. Podzielimy się z Wami cenną wiedzą i doświadczeniami zdobytymi przy tworzeniu koncepcji i projektowaniu systemu, budowie jego architektury, doborze komponentów i metod a także zaprezentujemy główne problemy jakie napotkaliśmy przy developmencie i jak sobie z nimi poradziliśmy.

18:10
0
Wykorzystanie protokołu SMTP w PHP. Pozornie prosta sprawa
Talk by EmailLabs in Room 1 (45 minutes)

Jak zaprojektować proces wysyłek mailowych w aplikacjach. Wybór infrastruktury Jak działa protokół SMTP? Wykorzystanie w PHP 5 skutecznych sposobów na wysyłkę maili: - SMTP 2 OS - Za pomocą socketów - Zewnętrzny serwer SMTP - SMTP-Relay - Rozwiązanie chmurowe Na czym masz największą szansę polec? Dwie kluczowe kwestie, o które musisz zadbać zanim wyślesz pierwszego maila.

Jak rozwalić* dowolny projekt w 10 prostych krokach
Talk by Pawel Lewtak in Room 2 (30 minutes)

*może nie rozwalić w sensie unicestwienia i anihiliacji, a bardziej doprowadzić do stanu w którym ludzie będą się męczyć, tracić zapał i wypalać pracując nad danym projektem. Jako programista pracowałem przy wystarczająco dużej liczbie projektów by zauważyć pewne powtarzające się schematy/wymówki: "od dziś robimy agile", "to nie potrzebuje testów", "dziwne, u mnie działa", "zrobimy to po swojemu". Niby siedzimy i robimy te taski w Jirze, ale po co i dlatego? ¯\(ツ)/¯ Opowiem co w przeszłości nie działało, dlaczego i jak to się skończyło w projektach przy których pracowałem. Nie mam idealnego sposobu na radzenie sobie ze wszystkimi problemami w projektach, ale wiem jak z wielu z nich unikać i tym chciałbym się podzielić. Będę mówił o tym jak nie rozpoczynać projektów, jakich złych praktyk nie stosować i jak oduczyć się stosowania wymówek, by nie skończyć ze słabej jakości projektem legacy.

18:50
1
Doctrine ? You are doing it wrong !
Talk by Tomasz Surowiec in Room 1 (40 minutes)

During the presentation, I will pinpoint all the small details, that at first glance are a fast and simple way to get things done, but in the long run will cause trouble. I'm talking here about anaemic entities, autoincrement IDs, bidirectional relations and repositories that tend to grow to few thousand lines. All of it with real-life stories and examples.

1
Jak zintegrować zespół przy pomocy Event Stormingu?
Talk by Michał Ksionek in Room 2 (40 minutes)

W trakcie tej prezentacji dostaniecie garść informacji jak skutecznie przeprowadzić sesję event stormingową, tak, aby zaangażować w nią cały zespół. Dowiecie się również jakie korzyści z event stormingu może wynieść zespół, który pracuje nad kilkom różnymi projektami jednocześnie.

Saturday 7th September 2019

10:00 Continuous Integration: jak dostarczać więcej i szybciej bez branchy i GitFlow!
Talk by Dawid Widyna, Konrad Otrębski in Room 1 (1 hour)

Opisujemy drogę, którą w ciągu roku przebył 4-5 osobowy zespół w krakowskim startupie Tagvenue. Historia zaczyna się wydawałoby się niepozorną imprezą firmową w październiku 2017 - pokazujemy m.in. autentyczny filmik nagrany w biurze minutę po deploymencie na produkcję i print screeny rozmów na Slack. Robiliśmy wtedy tylko kilka deploymentów miesięcznie, pracowaliśmy na kilkutygodniowych branchach i świadomie releasowaliśmy bugi. Po drodze wyjaśniamy czym tak naprawdę jest Continuous Integration gdyż jak się okazuje bardzo często nawet doświadczeni developerzy błędnie rozumieją te koncepty. Omawiamy technikę feature toggles (flags) i pokazujemy jak używamy jej na co dzień. Na koniec pokazujemy gdzie jesteśmy teraz, a jesteśmy w kompletnie innym miejscu, i tłumaczymy dlaczego nie chcemy wracać do GitFlow czy jakiegokolwiek innego feature branchingu.

0
GraphQL w służbie ecommerce
Talk by Kamil Szarmach in Room 2 (1 hour)

Opowieść o próbie wdrożenia innego podejścia do API przy zastosowaniach komercyjnych. Pułapki jakie czekają w naszym ekosystemie językowym i zyski płynące ze zmian. Czy w przyszłości PHP będzie nadawać się do współtworzenia serwisów SPA czy też zostaniemy wyparci przez hehe programistów JS?

11:15
0
Symfony Serializer - nasz przyjaciel w pracy z API
Talk by Paweł Skotnicki in Room 1 (45 minutes)

Jako programiści aplikacji internetowych często stykamy się z różnymi API - jako dostawcy i konsumenci - a to oznacza konieczność serializacji i deserializacji. To bardzo szerokie zagadnienie, ale Symfony dostarcza nam komponent, który pomoże nam rozwiązać większość problemów z którymi się spotkamy. W prezentacji przedstawię użycie komponentu Serializer od najprostszych przypadków po bardziej skomplikowane, choć równie często spotykane w naszej pracy, wymagające implementacji własnych normalizerów

3
Elasticsearch i jakość wyników wyszukiwana dla 40 milionów użytkowników
Talk by Radek Baczyński in Room 1 (45 minutes)

To będzie mocno praktyczna prezentacja o tym w jaki sposób od kilku lat rozwijamy wyszukiwarkę w Docplannerze. Postaram się przekazać uniwersalne praktyki, które pomagają w serwowaniu najlepszych możliwych wyników wyszukiwania. Dodatkowo opowiem o mniej znanych funkcjach "Elastica", a także o tym jak w to wszystko wpleść dobro które niesie ze sobą Machine Learning,

12:10
0
Zarządzanie konfiguracją aplikacji na wielu serwerach w czasie rzeczywistym
Talk by Michał Bzowy in Room 1 (45 minutes)

Od jednego serwera FTP z konfiguracją zaszytą w kodzie, do kilkudziesięciu serwerów z automatycznym zarządzaniem zmianami konfiguracji w czasie rzeczywistym. Omówienie narzędzi wykorzystywanych w procesie ewolucji zarządzania konfiguracją wraz z przykładami użycia. Omówienie napotkanych trudności wraz z popełnionymi błędami. Prezentacja zmiany zarządzania konfiguracją z opisaniem takich narzędzi jak: Consul, Vault, Nomad oraz wykorzystania pamięci RAM. W tym dostosowanie aplikacji do standardów PCI.

1
BDD Your Application
Talk by Kamil Kokot in Room 2 (45 minutes)

Behaviour Driven Development helps bridge the communication gap between business and IT. Having testable specifications is a desirable side effect. This talk will explain the basics of BDD methodology, best practices for writing Cucumber scenarios and how to integrate Symfony with Behat by using a new emerging solution - FriendsOfBehat's SymfonyExtension. I will share the practical insights distilled from 4 years of developing and maintaining the biggest open-source Behat suite which is a part of Sylius.

12:50
0
MFTF - Acceptance functional testing for agencies and extension developers
Talk by Łukasz Bajsarowicz in Room 1 (45 minutes)

Magento already claimed that MFTF tests coverage will be an important factor during extension review. At some point - Functional Tests are going to be a requirement for Marketplace submissions. That confirms the fact: Magento Functional Testing Framework is an important project for Adobe. It’s been 2 years since first version of Magento Functional Testing Framework was released. Development of the framework gained the momentum at 2018, when huge migration project has started and core functionality coverage with tests raised rapidly. As a result - Magento becomes platform that is fully covered with tests, that are easy to extend and override. I’m going to show you how easy it is to run MFTF on your development environment, how to configure it. I’ll show you examples of integration with CI / CD tools, as well as the awesome reporting tool that makes results easy to interpret even for non-technical people. I’d love to tell you what is the terminology in MFTF project, what are the rules and best practices for writing functional tests. You don’t need to have any Selenium or Codeception background to join. It doesn’t matter if you are extension developer, agency or freelancer - you are more than welcome!

Getting the most of PHPUnit assertions
Talk by Gabriel Caruso in Room 2 (45 minutes)

Do you know, when you are writing a test, something isn't going right and you get a failure message "Failed asserting that false is true"? Let's see how we can improve our test's assertion in other to get more helpful errors by using dedicated PHPUnit assertions. We're going to see how we can make our suite of tests stricter, avoiding PHP's false-positives weakness. Also, we'll be seeing how PHPUnit works under the hood, from the assertion method to the verification itself.

14:30
0
Wykorzystanie backendu PHP do zarządzania biblioteką mobilną
Talk by Marek Latuszek in Room 1 (30 minutes)

Po epoce statycznych bibliotek przyszedł czas na zdalne zarządzanie bibliotekami mobilnymi. Na prezentacji dowiesz się o zarządzaniu oraz rozbudowie funkcjonalności w bibliotece mobilnej bez konieczności update'u aplikacji. Prezentacja funkcjonalności, w której PHP zarządza działaniem oraz natywnymi widokami w bibliotece mobilnej P24. gRPC, jsonella, OAUTH2, szyfrowanie PGP, to tylko niektóre z wykorzystanych technologii.

0
Mikroserwisy w ecommerce lekiem na (nie)całe zło.
Talk by Magdalena Limanówka-Kuciel in Room 2 (30 minutes)

Jeśli coś jest do wszystkiego, to jest do niczego. Często sklepy internetowe zajmują się wszystkim, zarządzaniem informacja produktową, zaawansowaną kalkulacją cen, promocji i marż, dostarczają rozwiązania do personalizacji produktów, są panelami do pracy handlowców, obsługi klienta itd. Prowadzi to do wielu problemów. Obciążeń serwisu i kłopotów z wydajnością. A gdyby tak pozwolić sklepowi sprzedawać? Podczas prezentacji pokażę, jak zaprojektowaliśmy architekturę, gdzie zadaniem sklepu opartego o Magento 2 jest tylko i wyłącznie sprzedaż, a mikroserwisy wspierają je w innych wydzielonych kontekstach biznesowych. To wszystko na przykładzie dużego specjalistycznego sklepu B2B. Opowiem o plusach i minusach takiej architektury oraz trudnościach, jakie nas spotkały i rozwiązaniach, które zastosowaliśmy.

15:15
1
PHP w kolejce, kolejka w PHP - jak wykorzystać moc Apache Kafka
Talk by Szymon Sadło in Room 1 (1 hour)

Apache Kafka to bardzo potężna technologia. Używanie jej w Javie jest bardzo proste, w PHP jednak nie jest już tak łatwo. W prezentacji przybliżę czym jest Apache Kafka, jej podstawowe koncepty oraz jak skorzystać z tej technologii w PHP. Opowiem również jak takie połączenie działa produkcyjnie, na jakie problemy można się natknąć w trakcie jej utrzymywania oraz jak to wszystko monitorować.

4
Mastering regex incantations
Talk by Tomasz Kowalczyk in Room 2 (1 hour)

Wyrażenia regularne mają niską reputację wśród programistów - mówi się, że jeśli użyjesz ich do rozwiązania problemu... to masz dwa problemy. Nie zmienia to jednak faktu, że są one bardzo potężnym narzędziem i odpowiednio użyte mogą oszczędzić wiele pracy. Pokażę jak wykorzystywałem je w różnych sytuacjach oraz opowiem o "tajemnych zaklęciach" - ciekawych, mało znanych możliwościach wyrażeń regularnych. Regular Expressions are one of the most powerful tools used by software engineers. Pattern matching, input validation, and data extraction are only a few examples of the areas in which a well-designed regex can do the work of hundreds of lines of code. Sometimes their reputation suffers from being misused or misunderstood. I will explain how they work, when they should (and shouldn't) be used, what problems can (and can't) be solved using them. We will also talk about "arcane incantations", ie. the very powerful but hardly known RegEx features.

16:20
1
Let's play a game with Blackfire Player
Talk by Marcin Czarnecki in Room 1 (30 minutes)

Jak ulepszyć testy swojej aplikacji i nie martwić się o jej wydajność na serwerach produkcyjnych? Bazując na przykładach implementacji z GOG.com opowiem jakie problemy rozwiązaliśmy dzięki Blackfire Player, jak włączyć testy wydajności w proces CI oraz jak w łatwy sposób korzystać z Blackfire Player w połączeniu z Dockerem.

0
Full Page Cache w Magento 2, czyli przyspieszyć ociężały e-commerce z wykorzystaniem Varnisha
Talk by Maciej Sławik in Room 2 (30 minutes)

Opowiem o tym w jaki sposób Magento 2 realizuje cachowanie całych stron przy pomocy Varnisha, nie tracąc przy tym możliwości serwowania zawartości dedykowanej dla każdego klienta. Pokażę na jaki wzrost wydajności można liczyć oraz jak natywne komponenty Magento pozwalają na hole punching w zacachowanych stronach.

17:00
2
Always up-to-date, testable and maintainable documentation with OpenAPI
Talk by Mieszko Malawski in Room 1 (30 minutes)

Have you ever had to integrate with a badly documented API? Was it fun or productive? Or maybe you're maintaining a public or internal API and you're tired of people asking you why your API works differently than described in docs? Let's face it, writing and maintaining documentation can be a chore. But there's also a simpler approach. During my speech, I'll show you how to use OpenAPI and PHP to generate, maintain and, most importantly, test your documentation.

1
Chcesz się ścigać? - O race condition słów kilka
Talk by Ciprian Pitis in Room 2 (30 minutes)

Zważywszy na specyfikę działania systemów w środowisku webowym ( a szczególnie tych napisanych w PHPie ), zagadnienia związane z race condition są rzadko rozpatrywane w środowisku programistów PHP. Nie oznacza to jednak, że jesteśmy zupełnie wolni od problemów związanych z jednoczesnym dostępem do zasobu przez wielu użytkowników. Na tej prezentacji przybliżę czym dokładnie jest Race Condition, praktyczne przykłady występowania zjawiska w ramach typowego portalu opartego o PHP i inne technologie powiązane, a także jak można sobie z nimi radzić.