Szkolenie z EventSourcingu w .NET to nie czysta teoria, ale także dużo praktyki. W każdym module wykonamy kilka ćwiczeń ewoluując projekt od fazy wymagań i modelowania, po ostateczny jego kształt. Podczas rozwiązywania zadań ugruntujecie swoją wiedzę i zderzycie ją z realnymi wymaganiami projektowymi.
Plan szkoleniaPo antycznych czasach walk wielkich monolitów, po zachwycie związanym z mikroserwisami, przyszedł czas hype'u związanego z funkcjami i rozwiązaniami FaaS. Czy jest to coś czemu powinniśmy bezkrytycznie zaufać? Czy jest to środowisko, na które powinniśmy przepisać naszą aplikację po raz kolejny? Czy koniecznie wszystko musi być funkcją? Podczas prelekcji zaprezentuję drogę związaną z pewną usługą, gdzie po ewolucji, funkcje wykonywane są sporadycznie, pomimo transportowania i przetwarzania niemałej ilości danych. Ze względu na charakter prezentacji, podczas niej mogą pojawiś się takie hashtagi jak: #collaborativeDomain, #OAuth, #accessToken czy nudny w swej stabilności #AzureStorage.
Zapraszam do dołączenia do podróży w nieznane.
Szymon Kulec
Lider Warszawskiej Grupy .NET, architekt, technical leader, speaker, trener, software engineer. Microsoft MVP na rok 2017. Zainteresowany zarówno IT w skali makro (architektura), jak i mikro (performance i współczesny hardware). Miłośnik DDD i zorientowania na zdarzenia, a także dobrze wyseparowanych usług. Jego blog możecie znaleźć pod adresem https://blog.scooletz.com.
Zaiste dobrze jest testy pisać i oprogramowanie przed błędami wszelakimi chronić. Azaliż jednak kto powie nam, jak dobre nasze testy są, który kodzik przetestowany jest, a co umknęło naszej uwadze.
Podczas pracy nad biblioteką open source Rails Event Store zdecydowaliśmy by trzymać 100% mutation test coverage przy użyciu narzędzia mutant. Z tą decyzją żyjemy już 2.5 roku i prawie 3000 commitów, 200 pull requestów oraz 60 releasów.
W czasie prezentacji opowiem o lessons-learnt z tego wieloletniego doświadczenia.
Myślę, że prezentacja będzie bardzo ciekawa, bo nie znam żadnej biblioteki/organizacji, która tak rygorystycznie podchodzi do testowania i nie ma zmiłuj. Pomimo, że sam koncept jest dość prosty do zrozumienia, to jednak okazuje się, że diabeł tkwi w szczegółach (jak zawsze).
https://en.wikipedia.org/wiki/Quis_custodiet_ipsos_custodes%3F
MVCC to termin, który pojawia się dość często jak szukacie odpowiedzi na pytania dotyczące Postgres-a. Podczas prezentacji opowiem co to jest, jak jest zaimplementowane i jakie problemy niesie ze sobą. Pozwoli to Wam lepiej zrozumieć jak działa Wasza baza danych, podejmować bardziej świadome decyzje w kwestii optymalizacji i uniknąć dramatów na produkcji.
Michał Młoźniak
Programista/przedsiębiorca, zainteresowany wszystkimi aspektami wytwarzania oprogramowania: budowaniem i zarządzaniem zespołami, programowaniem, architekturą oraz rozwiązywaniem problemów. Współorganizator Warsaw Ruby User Group. Preferuje zgłębiać wiedzę o istniejących technologiach niż o co chwila pojawiających się językach programowania czy frameworkach. Kiedy nie programuje, możecie go znaleźć poszukującego ukrytych perełek na wyspie 本州.
Kodowanie znaków, jak wiele innych zadań w naszej branży, wydaje się proste i przewidywalne. Gdy jednak przyjrzeć się dokładnie, poprawny zapis polskich czy chińskich liter wcale nie jest taki oczywisty. Podczas tej pozornie banalnej prezentacji pokażę wam, jak trudną domeną jest Unicode. Jakie problemy, także z bezpieczeństwem, możemy napotkać. Ile pułapek kryje się w specyfikacji oraz jej implementacji w Javie. Na przykład czy wiedzieliście, że jeden symbol w UTF-32 może zajmować nawet… 28 bajtów? Nie mówiąc już o słowie roku 2015 wg Oxford English Dictionary, czyli… ‘’ (tak, emoji, o nich też będzie).
In the classic paper Data on the Outside versus Data on the Inside Pat Helland argued that data within a service boundary should be treated differently than data residing outside of it.
Here, I shall argue that the same applies to messages. Inside a service boundary messages are tightly coupled to the corresponding data manipulations. Sometimes it is even possible to enforce total order of messages.
The moment the message crosses the service boundary, it enters the no man's land where bad things happen. Messages get reordered, duplicated or even lost.
Join me in this talk to learn about some patterns you can use to get your messages safely to the other side.
EQL is a query language to make hierarchical selections of information from graphs. It's GraphQL's cooler brother and will help you solve problems you don't even realize you have. With your business domain modeled in graphs and your frontends built on rendering trees, EQL is the magic glue that connects the two. Warning: talk may include alien parens, healthy-dose of non-conformism, and may induce listener to functional programming.
JVM to złożona maszyna, która napędza nasze systemy. Codziennie w pocie czoła przerzuca terabajty obiektów pomiędzy kolejnymi generacjami w GC, generuje strumienie optymalnego kodu skompilowanego przez jeden z kompilatorów JIT, w międzyczasie próbując dogadać się z systemem operacyjnym. Jednak nie zawsze w naszej maszynowni wszystko przebiega zgodnie z planem. Gdzie szukać informacji? Jak odczytywać i interpretować wartości metryk? Kiedy winny jest JVM, nasza aplikacja, a w jakim przypadku system operacyjny?
Podczas tej sesji postaram się pokazać dostępne narzędzia, magiczne przełączniki i dostępne rozwiązania potrzebne w pracy każdego "kryminologa" JVM. Sesja będzie przeznaczona dla osób, które zaczynają przygodę z optymalizacją JVM. Porozmawiamy o zapisywaniu zdarzeń z JVM, narzędziach ukrytych w JDK,w tym także Java Mission Control i Flight Recorder i zobaczymy jak Java płonie :). Nie zapomnimy też o narzędziach dostępnych w systemie operacyjnym Linux.
Uzbrojeni w narzędzia i wiedzę, podczas tej sesji spróbujemy przekuć teorię w praktykę. Na naszej drodze staną zasobożerne procesy, wściekle pożerające CPU, RAM i IOOPS naszego systemu. Spróbujemy je odnaleźć i, korzystając z narzędzi, zidentyfikować źródło problemu. Na dostarczonych serwerach uruchomione będą procesy JVM, a my bez dostępu do kodu źródłowego oddamy się zawiłościom inwestygacji i wkroczymy w świat kryminalistyki JVM.
Ten rozdział poświęcimy JMH (Java Microbenchmark Harness), narzędziu które pozowoli nam pisać testy wydajnościowe naszego kodu. Poznamy API JMH, bogaty zestaw opcji oraz jak konstruować testy wydajnościowe by nie ulec iluzji, iż wszystko działa poprawnie. To wszystko na kilku przykładach, które między innymi porównają wydajność struktur danych dostępnych w Java SDK.
Zapraszam Was na podróż w głąb maszyny. Zabierzcie ze sobą terminal, Java 11, ulubione IDE i dziecięcą ciekawość. Warsztaty zakładają, że programujecie w Java na przyzwoitym poziomie, a JVM jest Wam obcy, jednak macie w sobie głód zrozumienia, jak to wszystko działa.
I przyszedł ten dzień w Twojej karierze. Tak długo na niego czekałeś. Zostałeś architektem. I teraz im wszystkim pokażesz jak się robi architekturę, głupcy.
Będzie seks, koks i Firefox.
Co prawda jeszcze nie masz pojęcia, że Twoje życie właśnie stało się żałosne, smutne i cała dziecięca radość spłynęła w rynsztok pełen utraconych nadziei i niespełnionych snów. Jeszcze nie wiesz, że architekt, to taki menedżer, ale bez zespołu.Jako architekt, będziesz negocjował, bo nigdy nie ma czasu na "architekcenie",będziesz edukował, bo nikt nie będzie rozumiał i będziesz tłumaczyć biznesowi trzyliterowe skróty, bo im się nie chce wychylić nosa ze swojej strefy komfortu.A wszystko to gołymi rękami.
Wszystko to dlatego, że architekci w naszej branży nie dorobili się narzędzi do wykonywania swojej pracy. Ich praca została sprowadzona do diagramów pełnych beczek, owali i strzałek i małych różowych karteczek, pokrytych z jednej strony klejem.
Czy tak musi być? Czy architektura może mieć solidne podstawy naukowe i nie być zbiorem błędnych założeń, miejskich legend, ciągle powtarzanych kłamstewek, które stają się prawdą, podlanych wysokoprocentowym testosteronem? Być może teorie systemów, złożoności, kolejek i obietnic mogą wnieść trochę światła w ten architektoniczny labirynt w którym grasują krótkie terminy i wyśrubowane wymagania, które nie mają przełożenia na rzeczywistość?
Pytanie tylko czy da się w te kilka kwadransów wytłumaczyć dynamikę systemów, model M/D/1, rozkład Poisson, kaskadowe awarie czy też balansujące pętle?
I jak te wszystkie techniki uchroniłby mnie od awarii, głupich decyzji i nieprzespanych nocy.
Jarosław Pałka
Od ponad 20 lat w branży IT, jako administrator baz danych, programista, architekt, manager i „inżynier od spraw katastrof”. Brałem udział w małych, średnich i nonsensownie dużych projektach, prowadzonych zgodnie zasadami „waterfall”, Agile oraz przy braku jakichkolwiek metodyk, z tym samym zawsze skutkiem. Co doprowadziło mnie do wniosku, że nie ważne co robisz tak długo, jak robisz to dobrze, w najprostszy z możliwych sposobów i używasz właściwych narzędzi które wykonają pracę za ciebie. W międzyczasie dałem się porwać ideą TDD oraz Software Craftmanship, do granic możliwości wyeksploatować tak piękne w swej prostocie pomysły jak REST i NoSQL, by potem porzucić je by zgłębić tajniki „system thinking” i zachwycić się siłą jaką niesie z sobą „metafora” i odkryć, że rządzą nami te same prawa „natury”. Niepokorny wyznawca kościoła JVM, badacz bytecode'u i JIT oraz wszelkiej maści parserów, interpreterów i kompilatorów. Od czasu do czasu można usłyszeć moje niskiej jakości żarty na temat architektury na konferencjach w Polsce. W chwilach trener w http://symentis.pl i autor bloga na http://geekyprimitives.wordpress.com/ oraz samozwańczy dyktator w radach programowych konferencji JDD oraz 4Developers.
Świat idzie do przodu, nowe technologie wymagają nowych narzędzi. Bez wsparcia IDE trudno stworzyć coś więcej niż HelloWorld, albo index.html - a czy warto próbować? Skoro mamy do dyspozycji te nowoczesne narzędzia, to dlaczego mielibyśmy ich nie używać? Porozmawiajmy o kilku ważnych korzyściach które wynikają z "powracania do korzeni", "ostrzenia piły" i #nopowertools. W tle przewinie się konsola, tmux, vim i śladowe ilości indoktrynacji.
Michał Borkowski
Michał jest programistą Java w PGS Software. Kiedy nie programuje, lubi dzielić się wiedzą z praktykantami i studentami. W wolnym czasie lubi eksperymentować z rozpraszaniem aplikacji i robić proste rzeczy od podstaw - wynajdować koło na nowo. Zwykle używa narzędzia odpowiedniego do zadania ale jego ulubione środowisko programistyczne to vim + tmux + czarno-biała konsola. Słynie z tego że dzieli się swoją skromną wiedzą z innymi w formie anegdotek, czy tego chcą czy nie.
Mała lekcja historii:
A teraz nagle orkiestracja to "must-have" i nie da się pracować bez niej.
Na przykładzie Kubernetes (ludzie mówią, że to teraz "TA" technologia) spojrzymy sobie na to czym jest orkiestracja, jakie problemy ona rozwiązuje (o ile je mamy) i co możemy uzyskać.
Piotr Stapp
Programista, inżynier, rzemieślnik, projektant i rowerzysta. Korzysta z każdej technologii, która prowadzi do celu. Wierzy w ludzi, a nie w papiery. Jest wyznawcą DevOps i wszelkiej automatyzacji.
Jak przystało na człowieka inteligentnego, prowadzi bloga – o tyle wyjątkowego, że regularnie pojawiają się tam nowe teksty: http://stapp.space/.
Do niedawna Ekspert IT w mBanku. Obecnie współtworzy nowy fintech – FinAi, w którym pracuje nad zamianą rzeczy skomplikowanych na proste. A to czasem bywa trudne.
Temat dostępności (a11y) zyskał ostatnio rozgłos wśród społeczności developerów i nie jest trudno zrozumieć, dlaczego... Według Światowej Organizacji Zdrowia na świecie żyje ponad miliard osób z niepełnosprawnościami. Te statystyki pozwalają nam zdać sobie sprawę, że przez nieumiejętne tworzenie aplikacji możemy nieumyślnie wykluczać gro osób blokując im dostęp do tworzonego przez nas oprogramowania. Chcemy jednak tworzyć produkty, które są naprawdę dla każdego - niezależnie od sposobu interakcji.
W tej prezentacji przejdziemy przez praktyczne przykłady pozwalające zadbać o dostępność aplikacji internetowych.
Dowiemy się jak dbać o poprawne działanie strony z czytnikami ekranu i innymi urządzeniami wejściowymi; do czego służą znaczniki ARIA i jak je wykorzystywać przy tworzeniu customowych komponentów. Przyjrzymy się stylom, które pomogą użytkownikom niedowidzącym łatwo i niezawodnie nawigować po stronach. Na koniec podpowiem co zrobić, aby wszystkie te zasady sprawnie zaimplementować w swojej codziennej pracy.
Dorota Owczarek
Specjalistka UX i Frontend z rozległą wiedzą informatyczną i wielką pasją do projektowania graficznego. Zajmuje się badaniami i projektowaniem UX oraz rozwojem i realizacją złożonych produktów IT.
Freelancing dał jej możliwość bycia częścią ekscytujących i ambitnych przedsięwzięć. Dla Doroty, projektowanie interfejsów użytkownika łączy się przede wszystkim z przejrzystym i użytecznym designem. Nieustannie poszukuje sposobów na ulepszenie lub uproszczenie interfejsów aplikacji, starając się wspierać użytkowników końcowych, stawiając ich potrzeby i wymagania na pierwszym miejscu.
W karierze programisty prędzej czy później pojawia się moment, kiedy może wstąpić na wyboistą ścieżkę prowadzenia zespołu. Najczęściej jednak z różnych powodów zaczyna być tylko przełożonym, a nie liderem. W prezentacji odpowiem na pytanie skąd się biorą liderzy ze wskazaniem mechanizmów biologicznych, które wpływają na to jak jesteśmy postrzegani w grupie. Wskażę też drogę, jaką powinni obierać liderzy, aby ich współpracownicy, z którymi mają na co dzień do czynienia, czuli się dobrze w swojej organizacji.
Jakub Hossa
Jakub jest programistą .NET z rodziny fullstack’owatych, egzorcystą SharePoint i liderem rzeszowskiego zespołu developerów w FABRITY. Od czasów studenckich stara się rozwijać środowisko IT w stolicy Podkarpacia, najpierw jako lider Rzeszowskiej Grupy .NET, teraz w szeregach grupy rg-dev. Jego głównym obszarem zainteresowań są algorytmy genetyczne i zagadnienia związane z budowaniem i prowadzeniem zespołów.