MTP, Poznań
2.09.2017
MTP, Poznań
2.09.2017
Dziękujemy wszystkim za zgłoszenia.
Modelowanie złożonych procesów biznesowych i czasu z użyciem wzorca Sagi
Modelowanie upływu czasu jest zawsze trudne, tak samo jak implementacja logiki biznesowej wewnątrz złożonych domen. Długotrwałe transakcje biznesowe, rozciągnięte pomiędzy wieloma bounded-contextami, możliwe scenariusze sukcesu i błędów są nawet jeszcze trudniejsze do zamodelowania i przetestowania. Na szczęście istnieje kilka możliwych rozwiązań podobnych problemów… Procesy wymagające przesyłania wielu wiadomości, eventów, angażujące różne agregaty z różnych części systemu? Wzorzec sagi może być tu bardzo pomocny. Podczas tej prezentacji nauczysz się technik modelowania biznesowych procesów długotrwałych, mających wpływ na większe obszary aplikacji, możliwe przypadki użycia oraz powiązane anty-wzorce.
Wykrywanie błedów w kodzie używając PhpStorma i Continuous Integration
Ostatnio włożyliśmy sporo pracy w automatyczne sprawdzanie jakości kodu. Używamy tych samych zasad w IDE w czasie kodowania, i na serwerze Teamcity przy każdym commicie. Jakość całego projektu jest sprawdzana, poźniej bot informuje cały team na slacku jeśli zostały wykryte błędy.
Codereview z korzyściami, dla recenzenta i recenzowanego
W tym wystąpieniu chcę rozwiązać kilka kwestii dotyczących przeprowadzania Codereview.
O czym będę mówić?
- Codereview jako narzędzie wspomagające tworzenie zespołu
- Co jest nie tak z odhumanizowanym Codereview
- Kilka wskazówek, które warto wykorzystać podczas Codereview
- Jak poradzić sobie z negatywnym przeglądem kodu
Cloud Native: How I Learned to Stop Worrying and Love the Cloud
Wszyscy używamy chmury, zarówno publicznej jak i prywatnej, w coraz większym stopniu. Umiejętność tworzenia architektur i aplikacji, które sprawdzają się w tym środowisku staje się coraz istotniejsza. Podzielę się z Wami moimi doświadczeniami i wiedzą o tym, jak z chmurowymi problemami możemy sobie radzić.
Asynchroniczność w mikroserwisach
53% odwiedzanych stron mobilnych zostaje porzucona, jeżeli czas ich odpowiedzi przekracza 3 s. Rosnące wymagania, dostępność skomplikowanych usług oraz integracje z zewnętrznymi systemami, powodują brak możliwości dostarczenia odpowiedzi w satysfakcjonującym dla użytkownika czasie. Z pomocą przychodzi nam architektura mikroserwisów z komunikacją asynchroniczną. W prelekcji poruszone zostaną podstawowe zagadnienia oraz problemy i ich rozwiązania, jakie napotkaliśmy przy pracy z nową architekturą w Przelewy24.
Symfony Flex - nowe, efektywne podejście do budowania aplikacji w Symfony
Symfony 4 wprowadza nowy domyślny sposób budowania aplikacji - Symfony Flex. System będzie mocno zintegrowany z composerem, a także zaoszczędzi czas pracy dzięki zautomatyzowaniu powtarzalnych zadań, takich jak wprowadzanie konfiguracji. Dodatkowo ułatwi wybór nowych bibliotek do konkretnych potrzeb dzięki udostępnieniu dwóch repozytoriów zawierających najlepsze z perspektywy twórców bundle dla danego celu. Począwszy od wersji 3.3 Symfony zezwala na użytkowanie Symfony Flex w wersji beta. Zbadamy jego działanie “pod maską” by w pełni wykorzystać potencjał tego narzędzia.
Data i czas dla programistów
Zagadnienia związane z obsługą daty i czasu nie są trywialne, zarówno od strony teoretycznej, jak i praktycznej. Jest wiele pułapek, których należy unikać. Na prezentacji omówię najważniejsze z nich i postaram się doradzić jak ich unikać od strony praktycznej. Być może dzięki temu unikniecie wielu problemów w swoim kodzie, a na pewno posłuchacie kliku anegdotek o tym bardzo interesującym zagadnieniu.
Diving deep into blockchain
Blockchain to technologia, która stała się popularna dzięki najpopularniejszej kryptowalucie - Bitcoinowi. To idea bazy danych, w której raz umieszczone dane nie mogą się już zmienić. Te właściwości powodują, że wiele branż zainteresowało się przechowywaniem swoich danych w blockchainie. W tej prelekcji przedstawię ideę blockchainu, techniczne mechanizmy i algorytmy, które umożliwiają jego poprawne działanie oraz pokażę w jaki sposób działają istniejące implementacje blockchainu.
Having fun with geographic data in your software - an introduction to Google’s S2 geometry library
Czy kiedykolwie zastanawiałeś się jak przechowywane i przetwarzane są dane geograficzne w Google Maps? Dowiedz się podczas tej sesji.
Poznaj podstawy geohashingu i udostępnionej przez Google biblioteki do przetwarzania danych geometrycznych S2. A potem zobacz tą bibliotekę w akcji.
Przykłady z kodem PHP, konfiguracją mechanizmów przechowywania (MySQL, Elasticsearch). Plus wszystko inne czego potrzebujesz, żeby zacząć pracę z nowym podejściem zaraz po wyjściu z tej sesji.
Chain reaction of scaling up
Kiedy mówimy o skalowalności skupiamy się na aspekcie technicznym. W praktyce, skalowalność samej aplikacji jest tylko jednym z wielu czynników składających się na fakt, że nasz produkt jest skalowalny. Wspólnie zdefiniujemy czym jest skalowalność, omówimy obszary jakich dotyka oraz odpowiemy sobie na pytania, kiedy produkt jest skalowalny i co to dla nas oznacza.
Wykorzystanie protokołu SMTP przez PHP
Chcemy mówić o mailach – nie będziemy opowiadać o EmailLabsie. Wysyłamy miliardy maili każdego roku i biorąc pod uwagę liczbę zgłoszeń, zapytań do naszego BOK, widzimy, że wielu programistów, którzy zaczynają przygodę z jakąkolwiek wysyłką e-maili napotyka wiele problemów – z dostarczalnością, ze skuteczną wysyłką, z tworzeniem nagłówków wiadomości itp. W związku z tym chcemy opowiedzieć jak developer może skutecznie tworzyć, wysyłać, dostarczać i zabezpieczać wiadomości e-mail.
Plan prelekcji:
Wykorzystanie protokołu SMTP przez PHP
1) Działanie protokołu SMTP
2) W jaki sposób PHP wykorzystuje SMTP
3) Porówanie bibliotek do SMTP
4) Zwiększenie dostarczalności
5) Zabezpieczenie przed phisingiem
6) Poprawna konstrukcja wiadomości e-mail
Goodbye REST, Welcome GRPC
Przyzwyczailiśmy się już do komunikacji po REST’cie. Wysyłamy po HTTP requesty w te i z powrotem mając nadzieje, że kontrakt API się nie zmienił. Co by jednak było, gdyby zamiast długich i ciężkich JSONów czy XMLi, mogli byśmy komunikować się w sposób binarny? Co by było, gdybyśmy mieli pewność, że kontrakt w API nie może zostać zmieniony i co by było, gdybyśmy mogli odizolować warstwę komunikacji od serwisu niezależnie od używanego języka? Przyjrzymy się bliżej technologii od Google, czyli Protobuff razem z frameworkiem GRPC. Z tej prezentacji dowiesz się: - Czym jest Protobuff oraz GRPC? - Jaka jest różnica między komunikacją po REST’cie, a po ProtoBuffie - Dlaczego warto przyjrzeć się tej technologii? - Jak wyglądało wdrożenie GRPC w BlaBlaCar? - Jak możesz wykorzystać komunikację binarną w swoim projekcie? - Jakie są plusy i minusy takiego rozwiązania?
Statyczna analiza kodu
Statyczna analiza kodu to analiza kodu bez jego wykonywania. Opowiem o jej zaletach i dlaczego warto ją stosować w projekcie, ale wspomnę również o wadach i możliwych problemach. Przedstawię kilka narzędzi, które można wykorzystać, od podstawowych, sprawdzających poprawność składni i formatowanie kodu, po bardziej zaawansowane, obliczające różnego rodzaju metryki oraz pozwalające np. na detekcję błędnego typu zwracanych danych.
Thinking in Events
Modelowanie złożonych poroblemów jest skomplikowane i często prowadzi do równie skomplikowanego kodu. Kontrolery, repozytoria, usługi, warunki biznesowe, formularze, widoki - wymagania biznesowe klienta często infiltrują te warstwy, wszystko jest ze sobą połączone, a kod staje się trudny do czytania, zrozumienia i rozwoju. A gdy potrzeba rozszerzyć lub zmodyfikować logikę biznesową, i trzeba „przekopać” się przez dziesiątki (a czasami i setki) linii kontrolerów, próbując zrozumieć sens i rolę wszystkich obiektów lub zidentyfikować zakres zmian, może nadszedł czas na inne podejście… Podejście „Thinking in Events” oznacza, że można być w pełni skoncentrowanym na problemie domenowym i implementacji testowalnej logiki biznesowej. Wykorzystując zdarzenia domenowe jako źródło informacji, skomplikowane technicznie elementy jak bazy danych czy web-frameworki stają się jedynie szczegółami implementacyjnymi, od których nie zależy zbyt wiele.
Podczas workshopu nauczysz się więc stosować eventy w swoich projektach, używać różnych implementacji event/command/query busów, aplikować Event Sourcing do przechowywania historii zmian, czy też rozdzielać zapis od odczytu z wykorzystaniem CQRS, aby zwiększyć wydajność, skalowalność i bezpieczeństwo całego systemu. Będąc jednocześnie skoncentrowanym na realnym problemie biznesowym, bez rozpraszania zbędnymi detalami kodu.
Jak pisać wartościowe testy jednostkowe?
W swojej przygodzie z pisaniem testów jednostkowych zapewne zdarzyło Ci się że:
- sporo czasu zajęło Ci przeczytanie i zrozumienie co robią testy,
- zaimplementowałeś funkcjonalność i pozostało Ci tylko napisać testy, ale nie jest prosto je napisać, a w dodatku zajmuje Ci to sporo czasu, więc w końcu rezygnujesz,
- zaimplementowałeś funkcjonalność, ale już nie masz czasu, aby dopisać testy.
Takie sytuacje mogą powodować, że nie widzisz wartości w pisaniu testów jednostkowych, bo ich koszt przewyższa zyski jakie dają. Na warsztatach dowiesz się i przećwiczysz jak minimalizować ten koszt tworzenia i utrzymania testów jednostkowych. Poruszymy takie tematy jak czytelność i kruchość testów jednostkowych, testowalny kod i TDD jako sposób na pisanie bardziej wartościowych testów.
Wymagania:
- własny laptop,
- zainstalowane: vagrant lub docker,
- podstawowa umiejętność w dziedzinie pisania testów jednostkowych (asercje, mocki).
Symfony3 od podstaw
Szkolenie jest przeznaczone dla osób zaczynających przygodę z Symfony3. Będziemy pisać własną aplikacje w Symfony3.
Przejdziemy przez wszystkie istotne zagadnienia zaczynając od podstaw.
Wprowadzenie do „frameworków” webowych. Omówinie wzorców: Model-View-Controller, Model-View-Presenter, Model-View-View-Model.
- Czym jest composer? Jak używać tego narzędzia?
- Instalacja i konfiguracja Symfony
- Kontrolery i „Routing” w Symfony3
- Widoki w Symfony3 (twig)
- Formularze w Symfony3
- Walidacja danych w Symfony3
- Model – Omówienie biblioteki „Doctrine”
- Zarządzanie css-ami oraz javascriptami z poziomu Symfony (Webpack Encore)
- Wyjaśnienie działania kontenera zależności w Symfony3
- Omówienie komponentu „Security” w Symfony3
- Kilka słów o testach. Dlaczego i po co testować? Podstawowe wprowadzenie do TDD i testowania w symfony
- Czym tak naprawdę jest „bundle” w Symfony? Jak organizować kod? – podejście aplikacyjne vs podejście bibliotek
- Klika słów o „cachowaniu” w Symfony3
- Workflow component - krótkie wprowadzenie
- Nie wymyślaj koła na nowo – czyli gdzie i jak możemy szukać przydatnych gotowych rozwiązań
Event Sourcing - historia pewnej encji.
Event Sourcing, dzięki swoim zaletom, w ciągu ostatnich kilku lat zyskał bardzo na popularności. W mojej prezentacji przybliżę ten temat osobom, które chcą rozpocząć programować według nowego podejścia. Dodatkowo poruszę bardziej zaawansowane kwestie jak wersjonowanie eventów, tworzenie projekcji oraz integracja z zewnętrznymi systemami w Event Sourcing.
Jak naprawić kod, żeby nie zepsuć aplikacji.
Każdy kod się starzeje. Zmienia się technologia, otoczenie biznesowe, zespół. Jak więc wyciągnąć kod, by nadążał za zmianami, a jednocześnie by w sposób pewny i stabilny dostarczał wartość biznesową, która jest podstawą jego istnienia? Jak rozpoznać, gdzie zacząć naprawianie kodu, w którym momencie, wreszcie - jak znaleźć odpowiedź na fundamentalne pytanie – dlaczego w ogóle chcemy go zmieniać? W trakcie prezentacji postaram się przybliżyć odpowiedzi na te pytania oraz podpowiedzieć jakie kroki powinny rozpoczynać proces refactoringu lub optymalizacji.
Sala 1
Sala 2
Source Ministry
Software architekt, trener, obecnie zaangażowany w rozwój Source Ministry. Z branżą IT związany od ponad 16 lat, w tym czasie pracował m.in. dla Nextclicka, Naszej-Klasy, Gadu-Gadu, Adv.pl, a także jako konsultant w zakresie tematyki skalowalności i wydajności aplikacji internetowych. Interesuje się m.in. projektowaniem i budową oprogramowania na potrzeby web, zarówno od strony architektury aplikacji jak i infrastruktury serwerowej, a także tematyką machine learning i analizowania dużych zbiorów danych. Mariusz należy do komitetów programowych 4Developers oraz PHPCon Poland, współorganizuje spotkania PHPers i stara się aktywnie uczestniczyć w community. Wolny czas poświęca m.in. na organizację poświęconej tematyce Domain Driven Design konferencji DDD Now, rowerom górskim oraz gitarze elektrycznej.
OLX
Development Team Leader zespołu monetyzacji, odpowiedzialnego za skuteczną implementację wszelkich nowych funkcjonalności związanych z płatnościami. Redaktor tech.olx.com - globalnego bloga technologicznego grupy OLX.
Wie, że w branży, w której pracuje, co chwile pojawiają się aktualizacje i nowe rozwiązania. Nie boi się ich testować i wykorzystywać w swojej codziennej pracy.
Aktywnie bierze udział w licznych konferencjach i wykładach, gdzie chętnie dzieli się swoimi umiejętnościami i doświadczeniem.
BlaBlaCar
Backendowy Programista PHP/Java z ponad 10 letnim stażem w klepaniu kodu. Pracował dla takich serwisów jak Allegro, Oferia, a obecnie w barwach BlaBlaCar rozbija monolity na architekturę SOA. Prywatnie tata, bloger i poszukiwacz sposobów, jak Czuć się, Wyglądać i Żyć #Lepiej.
Codesushi
I am experienced developer especially in Symfony framework, with excellent knowledge of Object-Oriented Programming in PHP, following best standards like PSR-1 and PSR-2. I am familiar with Continuous Integration Workflow and continuous delivery.
I always follow best practices and I have a strong knowledge about Git workflow and I enjoy working with startups and mobile development. Since 2012 he is a CTO in Codesushi, where he cares about the quality of the code.
Przelewy24
Z programowaniem związany od 10 lat. Obecnie programista w grupie Przelewy24 odpowiedzialny za rozwój kluczowych funkcjonalności związanych z systemem płatności.
Programista, szkoleniowiec i konsultant. Zajmuje się projektami PHP oraz Symfony. Jeden z organizatorów spotkań PHPers.
Batmaid
Cześć. Jestem CTO w firmie Batmaid. Prowadzę 8 osobowy zespół programistów w warszawie i chciał bym się podzielić naszymi dośwadczeniami w walce o clean code.
Intel
Po 11 latach porzuciłem PHP i startupy. Od ponad roku pracuję w Intelu w zespole zajmującym się wydajnością środowisk cloud computing. Aeropress poważam ponad wszystko.
Espeo Software
Software engineer w Espeo, na co dzień zajmujący się wielowarstwowymi aplikacjami intensywnie przetwarzającymi dane. Zwolennik minimalizmu, efektywne wykorzystanie narzędzi pozwala mu zminimalizować nakład własnej pracy. Naukowo algorytmik związany z meta i hiper heurystykami, uczestnik międzynarodowych konkursów w programowaniu zespołowym.
Architekt oprogramowania z ponad 10-letnim doświadczeniem w branży aplikacji internetowych. Entuzjasta programowania funkcyjnego. Autor kilku bibliotek open source.
OLX
Tomasz Gramza jest liderem zespołu wyszukiwarki w Grupie OLX, gdzie praktykuje podejście Experiment Driven Development oraz wspiera rozwój personalny i zawodowy członków zespołu. W organizacji kieruje realizacją wizji modularyzacji platformy przez wykorzystanie Domain Driven Development na poziomie strategicznym oraz rozwojem innowacyjności poprzez wykorzystanie uczenia maszynowego i sztucznej inteligencji.
Z Grupą OLX jest związany od 2013 roku. W tym czasie miał istotny wkład w przekształcenie małego zespołu programistów w skalowalny dział produktowo-technologiczny, będący częścią globalnej organizacji. Zwiększył jakość dostarczanego oprogramowania, budując kompetencje i środowisko testerskie w firmie od zera i doprowadzając do włączenia roli testera do każdego zespołu. Zmodernizował i ujednolicił komunikację pomiędzy serwisami i klientami w różnych regionach, wdrażając kompletną architekturę i dobre praktyki wykorzystania REST API. Skutecznie przyspieszył rozwój platformy, minimalizując bazę legacy code na korzyść clean code i logicznie wydzielając kolejne poddomeny do kontekstów ograniczonych. Zminimalizował udział ręcznej moderacji ogłoszeń do niespełna 10%, tworząc zespół, który dostarcza usługę automatycznej klasyfikacji ogłoszeń i wykorzystuje uczenie maszynowe do budowy modeli predykcyjnych. Podniósł bezpieczeństwo platformy, rozwiązując wszystkie główne ryzyka określane przez OWASP, aktualizując mechanizmy szyfrowania wrażliwych danych oraz koordynując wdrożenie pełnego szyfrowania ruchu. Tomasz zainicjował kulturę dzielenia się wiedzą podczas wewnątrzfirmowych Tech Talks, integrację podczas kreatywnych hackathonów oraz coroczny konkurs uczenia maszynowego dla poznańskich studentów o nazwie Data Ninja.
Tomasz w wolnym czasie interesuje się zdecentralizowanym przetwarzaniem i technologiami wykorzystującymi blockchain. Jest fascynatem energii słonecznej, jej optymalnego przetwarzania i "ruchu" Słońca. Ciągle odnajduje powiązania pomiędzy działaniem ludzkiego mózgu, a architekturą sieci neuronowych wykorzystywanych do rozwiązywania określonych problemów. Niepokoi go fakt, że za jego życia technologia umożliwi zbudowanie sztucznej inteligencji o potencjale ludzkiego mózgu.
EmailLabs
Programista PHP z 7 letnim doświadczeniem w rozwijaniu aplikacji webowych. W firmie Vercom S.A. od początku związany z projektami EmailLabs oraz SMSLabs. Miłośnik programowania, elektroniki oraz motoryzacji.
OLX
Programista z kilkuletnim doświadczeniem. Obecnie pracuję w OLX, gdzie zajmuję się obszarem związanym z monetyzacją.
Przelewy24
Programista PHP oraz Scrum Master w Przelewy24. Programowaniem zajmuję się od około 10 lat. Posiadam także doświadczenie w pracy z Angular oraz NodeJS. Uważam się za osobę otwartą, pozytywną i lubiącą podejmować ryzyko. Interesuję się coachingiem, sportem oraz podróżowaniem. Głęboko wierzę w Karmę oraz prawo przyciągania. W życiu kieruje się zasadą, że rozwój wynika ze zmian i nie można się bać ich podejmować. Sprawdza się to we wszystkich dziedzinach życia. Także w programowaniu.
RST Software
Programista z 7-letnim doświadczeniem. Profesjonalną przygodę z programowaniem rozpoczął od pracy w Naszej Klasie, gdzie zajmował się utrzymaniem portalu i rozwojem API. Interesuje go tworzenie zwinnego kodu i architektury oraz wiedza o tym, jak coś działa.
RST Software
Łukasz zajmuje się tworzeniem aplikacji internetowych od 2006 roku. Pracował dla wielu firm, z których dwie (Gadu-Gadu i Nasza-klasa) dostarczały usługi dla milionów użytkowników. Przeszedł całkiem długą drogę, zaczynając jako programista, by później zostać liderem i architektem. Interesuje go projektowanie wydajnych i skalowalnych aplikacji internetowych, tworzenie kodu wysokiej jakości oraz zgłębianie motywów ludzkiego działania.
Espeo Software
Software engineer w Espeo, na co dzień zajmujący się wielowarstwowymi aplikacjami intensywnie przetwarzającymi dane. Zwolennik minimalizmu, efektywne wykorzystanie narzędzi pozwala mu zminimalizować nakład własnej pracy. Naukowo algorytmik związany z meta i hiper heurystykami, uczestnik międzynarodowych konkursów w programowaniu zespołowym.
Cocoders
Programista PHP z ponad siedmioletnim stażem pracy w branży. Ekspert w Symfony oraz pasjonat tematów związanych z szeroko pojętą jakością oprogramowania. Posiada doświadczenie w pracy z metodykami zwinnymi. Gracz zespołowy. By dostarczyć jak najlepsze oprogramowanie skupia się na poznaniu mechanizmów biznesowych klienta, używając do tego technik BDD. Posiada certyfikaty ZCE z PHP5 oraz certyfikat z Symfony.
EmailLabs
Jestem PHP Developerem w firmie Vercom współpracującym przy projektach, takich jak Emaillabs oraz SMSLabs. Programowaniem interesuje się od dłuższego czasu, przez co zacząłem studiować na Politechnice Poznańskiej na kierunku informatyka na wydziale informatyki gdzie uzyskałem tytuł inżyniera.
EmailLabs
Programista PHP z 7 letnim doświadczeniem w rozwijaniu aplikacji webowych. W firmie Vercom S.A. od początku związany z projektami EmailLabs oraz SMSLabs. Miłośnik programowania, elektroniki oraz motoryzacji.
PHPers to otwarte, darmowe spotkania dla programistów PHP (ale zapraszamy oczywiście wszystkich), chcących poszerzyć swoje horyzonty. Na spotkaniach prezentujemy wykłady o PHP, ale też i o całym ekosystemie, jaki otacza aplikacje pisane w tym języku.
Międzynarodowe Targi Poznańskie
ul. Głogowska 14
60-734 Poznań