RSocket to reaktywny protokół sieciowy wspierany m.in. przez the Linux Foundation i twórców Springa. W Internecie możecie znaleźć dużo hype’u i aplikacji typu hello world, ta prezentacja ma na celu skupienie się bardziej na tym, jak RSocket może wpłynąć na działanie naszych aplikacji. Porozmawiamy, w jaki sposób możemy wycisnąć więcej szybkości z kodu pozostając przy “tradycyjnym” HTTP, ale wprowadzając Server-Sent Events, a także o przypadkach użycia, gdzie RSocket faktycznie wprowadza nową jakość.
RSocket to reaktywny protokół sieciowy wspierany m.in. przez the Linux Foundation i twórców Springa. W Internecie możecie znaleźć dużo hype’u i aplikacji typu hello world, ta prezentacja ma na celu skupienie się bardziej na tym, jak RSocket może wpłynąć na działanie naszych aplikacji. Porozmawiamy, w jaki sposób możemy wycisnąć więcej szybkości z kodu pozostając przy “tradycyjnym” HTTP, ale wprowadzając Server-Sent Events, a także o przypadkach użycia, gdzie RSocket faktycznie wprowadza nową jakość.
Optymalizacyjna magia, czyli jak wyciągać króliki z kapelusza SzymonSadlo
Wydajność aplikacji to trudny temat, często specyficzny dla danej aplikacji, a optymalizacja czasami postrzegana jest jako czarna magia. Czy z tego kapelusza można wyciągać białe króliki? Można. Na bazie konkretnej aplikacji pokażę na co zwracać uwagę oraz jakie usprawnienia wprowadzać, aby ze swojego kodu, od podstaw, krok po kroku wyciągnać coraz więcej.
Allegro Tech Talks Poznań #4: Jak przyspieszyć SOLRa w kilku prostych krokach. allegro.tech
40 milionów wyszukiwań dziennie, setki tysięcy uaktualizacji indeksu czyni z Allegro.pl drugą co do wielkości wyszukiwarkę w Polsce. Nie wszyscy wiedzą, że główną wyszukiwarkę ofertową w Allegro.pl napędza Apache SOLR. Opowiemy o naszych doświadczeniach z optymalizacją zapytań do SOLRa, o tym jak udało nam się znacznie zmniejszyć czasy odpowiedzi i zwiększyć stabilność działania naszego searcha. W czasie prezentacji poruszymy kwestie związane z tworzeniem schematu, wykorzystaniem odpowiednich typów danych, wykorzystania cachea, efektywnego filtrowania i innych optymalizacji, które udało nam się wdrożyć z sukcesem.
Wygłoszono w trakcie czwartej edycji Allegro Tech Talks w Poznaniu.
Adam Dudczak - Starszy programista w Grupie Allegro, pracuje z Javą i technologiami powiązanymi od 2004 roku. Na codzień pracuje nad wyszukiwarką allegro.pl. Jeden z liderów Poznań JUG (http://www.jug.poznan.pl) i współorganizator konferencji GeeCON (http://geecon.org).
Przemysław Szeremiota - Starszy programista w Grupie Allegro od 2008. Zaczynał pracę w zespole wydajności programując w C/C++, przeżył fascynację Javascriptem i zaznał Javy, obecnie doskonale czuje się pływając w mieszance Basha i JQ. W wolnych chwilach przetłumaczył ponad 70 książek technicznych.
DTrace, czyli jak zobaczyć to czego nie widać.Semihalf
"Szanowny Panie, Pana program działa, ale niestety wolno. Czy da się go przyspieszyć?" Który programista nie spotkał się z takim stwierdzeniem niech pierwszy rzuci kamień. W prezentacji poruszamy tematykę analizy wydajności programów za pomocą narzędzia DTrace.
Ajax to nowe podejście do tworzenia witryn internetowych bazujące na różnorodnych technologiach, takich jak HTML i JavaScript, obiekty XMLHttpRequest, style CSS, model DOM czy XML. Charakterystyczne dla stron budowanych zgodnie z tym podejściem jest to, że nie wymagają one przeładowywania. Dzięki temu, że przesyłane są tylko niezbędne dane, takie witryny internetowe działają w sposób zbliżony do standardowych aplikacji. Daje to wiele nowych możliwości, dlatego Ajax zasłużenie szybko zyskał dużą popularność.
"Ajax. Ćwiczenia" to zbiór praktycznych ćwiczeń pokazujących, jak za pomocą technologii związanych z Ajaksem oraz języka PHP wykonywać operacje pozwalające tworzyć bardziej reaktywne witryny. Wykonując kolejne ćwiczenia, nauczysz się między innymi wysyłać i pobierać dane za pomocą obiektów XMLHttpRequest oraz dynamicznie aktualizować strony. Dowiesz się, w jaki sposób Ajax współpracuje ze skryptami PHP oraz jak obsługiwać dane XML. Poznasz także wiele różnych technik pozwalających na efektywne przesyłanie informacji między serwerem a przeglądarką w synchroniczny i asynchroniczny sposób. Dzięki lekturze tej książki nauczysz się tworzyć bogatsze i bardziej reaktywne witryny internetowe.
* Przesyłanie danych za pomocą obiektów XMLHttpRequest
* Współpraca Ajaksa z PHP
* Obsługa danych XML
* Przesyłanie danych w różnych formatach
* Generowanie kodu po stronie serwera
* Obiekty JSON
Tchnij więcej życia w swoje witryny internetowe.
Docker jest wspaniałą technologią. Przy pomocy Dockera w prosty sposób możemy rozwiązać jeden problem, a na jego miejsce stworzyć dwa inne, nowe, bardziej skomplikowane... Co jest powodem takiego stanu rzeczy? Czy przyczyną jest architektura Dockera? Brak zrozumienia? A może coś więcej?
O mojej skrzynce z narzędziami, w której znajdziemy: #ansible #terraform #packer #docker #vagrant #capistrano.
Video: https://www.youtube.com/watch?v=fPZ7JZJGPTE
Presentation created by Bartosz Zaczyński from Grand Parade Poland. Prepared for Startup LAB #6 - Real Time Web apps, event hosted by Business Link Kraków.
Wykład ze styczniowego spotkania grupy UW@IT pt. "Ansible w praktyce".
Ansible jest narzędziem wykorzystywanym do automatyzacji codziennych działań związanych z tworzeniem oraz utrzymaniem infrastruktury IT.
Tysiące użytkowników, miliony zapytań HTTP, miliardy odwołań do bazy danych, dziesiątki tysięcy osobogodzin inwestowanych przez firmy na optymalizacje aplikacji webowych, miliony dolarów (czy też euro) wydawanych na infrastrukturę, wszystko to po aby nasz system zapewniał użytkownikom odpowiedni komfort pracy i zadowalający czas odpowiedzi.
I gdy już wszystkie optymalizacje zapytań do bazy danych zostaną zastosowane, indeksy wypolerowane na wysoki połysk, czasowa złożoność obliczeniowa wszystkich metod będzie dążyć do O(1), a system dalej nie będzie spełnił wyśrubowanych warunków SLA, zawsze pozostaje wyprawa na "ostatni przylądek dobrej nadziei", czyli pełne niebezpieczeństw i ekscytujących przygód krainy, gdzie wasze dane będą na was czekać w ultra wydajnych, skalowalnych i stabilnych serwerach cache.
Chciałbym was, drodzy słuchacze, łagodnie wprowadzić w świat cache. Cache dla aplikacji webowych, opowiedzieć o stosowanych topologiach, wykorzystaniach cache w poszczególnych warstwach aplikacji, świat algorytmów "cache eviction", rozproszonych serwerów cache (i "data grids") oraz znanych i też przemilczanych "sekretów" i problemów, z którymi się spotkacie podczas implementacji cache w waszym systemie. Wszystko z wykorzystaniem takich rozwiązań jak memcached, redis, infinispan i ehcache.
The document discusses type-driven development in Scala. It covers various techniques for preventing bugs using static types, including value classes, Option types, dependent types, the IO monad, and validation. Advanced concepts from libraries like Scalaz and Shapeless are also mentioned, such as path dependent types, sized types, and using numbers as types. While static types add complexity, the document argues they can help catch bugs earlier by allowing compilers to validate code correctness.
Optymalizacyjna magia, czyli jak wyciągać króliki z kapelusza SzymonSadlo
Wydajność aplikacji to trudny temat, często specyficzny dla danej aplikacji, a optymalizacja czasami postrzegana jest jako czarna magia. Czy z tego kapelusza można wyciągać białe króliki? Można. Na bazie konkretnej aplikacji pokażę na co zwracać uwagę oraz jakie usprawnienia wprowadzać, aby ze swojego kodu, od podstaw, krok po kroku wyciągnać coraz więcej.
Allegro Tech Talks Poznań #4: Jak przyspieszyć SOLRa w kilku prostych krokach. allegro.tech
40 milionów wyszukiwań dziennie, setki tysięcy uaktualizacji indeksu czyni z Allegro.pl drugą co do wielkości wyszukiwarkę w Polsce. Nie wszyscy wiedzą, że główną wyszukiwarkę ofertową w Allegro.pl napędza Apache SOLR. Opowiemy o naszych doświadczeniach z optymalizacją zapytań do SOLRa, o tym jak udało nam się znacznie zmniejszyć czasy odpowiedzi i zwiększyć stabilność działania naszego searcha. W czasie prezentacji poruszymy kwestie związane z tworzeniem schematu, wykorzystaniem odpowiednich typów danych, wykorzystania cachea, efektywnego filtrowania i innych optymalizacji, które udało nam się wdrożyć z sukcesem.
Wygłoszono w trakcie czwartej edycji Allegro Tech Talks w Poznaniu.
Adam Dudczak - Starszy programista w Grupie Allegro, pracuje z Javą i technologiami powiązanymi od 2004 roku. Na codzień pracuje nad wyszukiwarką allegro.pl. Jeden z liderów Poznań JUG (http://www.jug.poznan.pl) i współorganizator konferencji GeeCON (http://geecon.org).
Przemysław Szeremiota - Starszy programista w Grupie Allegro od 2008. Zaczynał pracę w zespole wydajności programując w C/C++, przeżył fascynację Javascriptem i zaznał Javy, obecnie doskonale czuje się pływając w mieszance Basha i JQ. W wolnych chwilach przetłumaczył ponad 70 książek technicznych.
DTrace, czyli jak zobaczyć to czego nie widać.Semihalf
"Szanowny Panie, Pana program działa, ale niestety wolno. Czy da się go przyspieszyć?" Który programista nie spotkał się z takim stwierdzeniem niech pierwszy rzuci kamień. W prezentacji poruszamy tematykę analizy wydajności programów za pomocą narzędzia DTrace.
Ajax to nowe podejście do tworzenia witryn internetowych bazujące na różnorodnych technologiach, takich jak HTML i JavaScript, obiekty XMLHttpRequest, style CSS, model DOM czy XML. Charakterystyczne dla stron budowanych zgodnie z tym podejściem jest to, że nie wymagają one przeładowywania. Dzięki temu, że przesyłane są tylko niezbędne dane, takie witryny internetowe działają w sposób zbliżony do standardowych aplikacji. Daje to wiele nowych możliwości, dlatego Ajax zasłużenie szybko zyskał dużą popularność.
"Ajax. Ćwiczenia" to zbiór praktycznych ćwiczeń pokazujących, jak za pomocą technologii związanych z Ajaksem oraz języka PHP wykonywać operacje pozwalające tworzyć bardziej reaktywne witryny. Wykonując kolejne ćwiczenia, nauczysz się między innymi wysyłać i pobierać dane za pomocą obiektów XMLHttpRequest oraz dynamicznie aktualizować strony. Dowiesz się, w jaki sposób Ajax współpracuje ze skryptami PHP oraz jak obsługiwać dane XML. Poznasz także wiele różnych technik pozwalających na efektywne przesyłanie informacji między serwerem a przeglądarką w synchroniczny i asynchroniczny sposób. Dzięki lekturze tej książki nauczysz się tworzyć bogatsze i bardziej reaktywne witryny internetowe.
* Przesyłanie danych za pomocą obiektów XMLHttpRequest
* Współpraca Ajaksa z PHP
* Obsługa danych XML
* Przesyłanie danych w różnych formatach
* Generowanie kodu po stronie serwera
* Obiekty JSON
Tchnij więcej życia w swoje witryny internetowe.
Docker jest wspaniałą technologią. Przy pomocy Dockera w prosty sposób możemy rozwiązać jeden problem, a na jego miejsce stworzyć dwa inne, nowe, bardziej skomplikowane... Co jest powodem takiego stanu rzeczy? Czy przyczyną jest architektura Dockera? Brak zrozumienia? A może coś więcej?
O mojej skrzynce z narzędziami, w której znajdziemy: #ansible #terraform #packer #docker #vagrant #capistrano.
Video: https://www.youtube.com/watch?v=fPZ7JZJGPTE
Presentation created by Bartosz Zaczyński from Grand Parade Poland. Prepared for Startup LAB #6 - Real Time Web apps, event hosted by Business Link Kraków.
Wykład ze styczniowego spotkania grupy UW@IT pt. "Ansible w praktyce".
Ansible jest narzędziem wykorzystywanym do automatyzacji codziennych działań związanych z tworzeniem oraz utrzymaniem infrastruktury IT.
Tysiące użytkowników, miliony zapytań HTTP, miliardy odwołań do bazy danych, dziesiątki tysięcy osobogodzin inwestowanych przez firmy na optymalizacje aplikacji webowych, miliony dolarów (czy też euro) wydawanych na infrastrukturę, wszystko to po aby nasz system zapewniał użytkownikom odpowiedni komfort pracy i zadowalający czas odpowiedzi.
I gdy już wszystkie optymalizacje zapytań do bazy danych zostaną zastosowane, indeksy wypolerowane na wysoki połysk, czasowa złożoność obliczeniowa wszystkich metod będzie dążyć do O(1), a system dalej nie będzie spełnił wyśrubowanych warunków SLA, zawsze pozostaje wyprawa na "ostatni przylądek dobrej nadziei", czyli pełne niebezpieczeństw i ekscytujących przygód krainy, gdzie wasze dane będą na was czekać w ultra wydajnych, skalowalnych i stabilnych serwerach cache.
Chciałbym was, drodzy słuchacze, łagodnie wprowadzić w świat cache. Cache dla aplikacji webowych, opowiedzieć o stosowanych topologiach, wykorzystaniach cache w poszczególnych warstwach aplikacji, świat algorytmów "cache eviction", rozproszonych serwerów cache (i "data grids") oraz znanych i też przemilczanych "sekretów" i problemów, z którymi się spotkacie podczas implementacji cache w waszym systemie. Wszystko z wykorzystaniem takich rozwiązań jak memcached, redis, infinispan i ehcache.
The document discusses type-driven development in Scala. It covers various techniques for preventing bugs using static types, including value classes, Option types, dependent types, the IO monad, and validation. Advanced concepts from libraries like Scalaz and Shapeless are also mentioned, such as path dependent types, sized types, and using numbers as types. While static types add complexity, the document argues they can help catch bugs earlier by allowing compilers to validate code correctness.
The document discusses Scala and OrientDB for building scalable applications. It describes Scala as a concise and type-safe programming language. OrientDB is presented as a NoSQL database that supports both document and graph data models. The document argues that OrientDB's data model can better represent domain models than traditional relational or document databases. It also suggests that functional programming patterns in Scala can help create robust data access code for OrientDB. Examples show how to model data, perform queries and updates in Scala applications connected to OrientDB.
This document discusses using Slick, a Scala query compiler, to provide typesafe queries for the NoSQL database OrientDB. It proposes that Slick could generate query objects at compile time to check queries, and could embed queries directly into OrientDB using a macro system for further type safety and performance. This could improve testability, simplify data access code, and help OrientDB and Slick gain more users by addressing needs of both NoSQL and typesafe query advocates. It calls for contributions to the OrientDB and Slick open source projects and a new slick-orientdb module.
Type driven development focuses on using types and defensive programming techniques like tests and contracts to prevent bugs. It discusses using option types, validation, dependent types, and value classes to build a typesafe database and ultimate code. The document promotes using Scala libraries like Scalaz and Shapeless together with Slick to achieve type-driven development.
Asynchroniczny PHP & komunikacja czasu rzeczywistego z wykorzystaniem websock...Polcode
autor: Łukasz Adamczewski, Starszy Programista PHP w Polcode
@lukeadamczewski
Prezentacja 'Asynchroniczny PHP & komunikacja czasu rzeczywistego z wykorzystaniem websocketów' została wygłoszona 17 września 2015 roku podczas 'PHPers Łódź #1', pierwszego spotkania programistów PHP w Łodzi. Firma Polcode miała przyjemność być jednym ze sponsorów tego wydarzenia.
Monitoring systemu. Dlaczego mój kardiolog jest bogatym człowiekiem?The Software House
Wojciech Wójcik: W temacie monitorowania systemów IT powiedziano już oceany słów na niezliczonych prezentacjach. Przedstawię wam jednak opowieść o mitologicznym Prometheuszu. Opowieść, która mogłaby konkurować z Grą o tron, a Koronę Królów zjadłaby na przystawkę. W jej trakcie zdradzę wam sekrety monitorowania Kubernetes, ale i nie tylko. Miejcie jednak na uwadze, że nie wszystkie potyczki się wygrywa – dzięki czemu zaszczycę was też możliwością wysłuchania ciekawych historii o fuckupach.
Warsztaty: Podstawy PHP
Część 2: Omówienie składni języka PHP (wersja 7)
Prowadzący: Krzysztof Ożóg, CTO Codesushi
Omówienie składni języka PHP (wersja 7):
1) Instalacja interpretera języka PHP
2) Deklaracja zmiennych i stałych
3) Operatory i ich priorytet
4) Struktury kontrolne
5) Definiowanie funkcji
6) Alternatywna składnia, czyli PHP jako system szablonów
7) Model obiektowy
a) Klasy
b) interface -y
c) Dziedziczenie
d) Magic methods
e) Autoloader
f) Obsługa błędów i wyjątków
g) PDO - interface komunikacji z bazami danych
h) Omówienie biblioteki standardowej PHP
i) Omówienie rozszerzenia SPL
j) Standardy PSR
k) Standardy kodowania PSR-1 i PSR-2
l) Composer, standardy PSR-0 i PSR-4 i Packagist
4Developers 2015: Property-based testing w języku Scala - Paweł GrajewskiPROIDEA
Paweł Grajewski
Language: Polish
Techniki Test-driven development (TDD) oraz Behavior-driven development (BDD) są dziś powszechnie stosowaną metodą poprawy jakości wytwarzanego oprogramowania. Obie zakładają w swej konstrukcji budowę zestawu przypadków testowych, ale stworzenie poprawnego i kompletnego zestawu takich przypadków jest nie lada sztuką. Często nie jesteśmy w stanie przewidzieć wszystkich sytuacji brzegowych, w skutek czego nie możemy być pewni na ile w rzeczywistości poprawny jest kod naszej aplikacji
Z pomocą może przyjść nam technika property-based testing, która w miejsce testowania poprawności działania systemu dla skończonego zbioru przypadków testowych wprowadza koncepcję “badania jego właściwości”. Idea ta zrodziła się już wiele lat temu, a dzisiaj znowu wraca do łask wraz ze wzrostem popularności funkcyjnych języków programowania. Zaufało jej już wiele dużych, złożonych projektów m.in. projekt kompilatora języka Scala oraz framework Akka. Prawidłowo zastosowana jest w stanie zapewnić wymierne korzyści - zwiększyć pokrycie kodu testami, ale przede wszystkim uchronić nas przed wieloma typowymi niedopatrzeniami.
Prezentacja przybliży koncepcję property-based testing oraz zademonstruje tę technikę na przykładach.
4Developers 2015: Orleans - aplikacje, które skalują i dystrybuują się same -...PROIDEA
Krzysztof Suszka
Language: Polish
Duża dostępność chmur spowodowała, że tworzenie olbrzymich, skalowalnych systemów stało się dostępne dla każdego. Jednak sama chmura nie rozwiązuje wszystkich problemów. Nadal trzeba włożyć sporo wysiłku w taką konstrukcję systemu, która pozwoli z tej chmury efektywnie korzystać. Orleans jest eksperymentalną platformą, która próbuje odnieść się do tego problemu, zrzucając z programisty obowiązek myślenia o fizycznej dystrybucji elementów aplikacji. Orleans dostarcza API zbudowane w oparciu o sprawdzony Actor Model. W czasie prelekcji przedstawione zostaną podstawowe mechanizmy działania tej platformy oraz prosty przykład pokazujący fragment jej możliwości.
Porażka nie wchodzi w grę, czyli o niezawodnościKamil Grabowski
Bank? System sterowania farmą paneli fotowoltaicznych? A może największy w Polsce punkt wymiany ruchu internetowego? Co wspólnego mają te systemy?Podczas tej prezentacji chciałbym podzielić się z Wami moim przemyśleniami oraz doświadczeniem, które zdobyłem podczas rozwijania i utrzymywania aplikacji od których wymaga się, aby były niezawodne.
Silverlight i PHP - jak budować interfejs nowoczesnych aplikacji internetowych?PHPCon Poland
Autor: Michał Żyliński
Projektujesz serwisy lub aplikacje internetowe i czujesz, że popadasz w rutynę? Zobacz, co może zaoferować Silverlight, ninja i czarny koń technologii RIA.
31. Drools - przykłady $order : Order() not Contract( this after [-*,10m] $order ) $contract : Contract() not Activation( this after [1s,134d] $contract) $activation : not Activation( this during $waitingRoom ) $contract : Contract( this coincides[15s, 10s] $order ) rule "sendParcel" when $order : Order() not CancelOrder(order == $order) then System.out.println(“sendParcel); end
84. Drools drool /drul/ – verb (used without object) 1. to water at the mouth, as in anticipation of food; salivate; drivel. 2. to show excessive pleasure or anticipation of pleasure. 3. to talk foolishly. – noun 4. saliva running down from one's mouth; drivel.
99. Drools – język opisu reguł import pl.touk.javarsovia.model.* global pl.touk.javarsovia.utils.Sender sender rule "normalClient" when $customer : Customer(status == Customer.Status.normal) $order : Order(state == Order.State.NEW, customer == $customer) then sender.send( "direct:normal" , $o); end
100. Drools – język opisu reguł rule "sendParcel" when $order : Order() $confirmation : WarehouseConfirmation(order == $order) not CancelOrder(order == $order) then sender.send( "direct:parcel" , $confirmation) end
101. Przykład użycia KnowledgeBuilder knowledgeBuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); knowledgeBuilder.add( new ClassPathResource( "orderRules.drl" ),ResourceType.DRL); KnowledgeBase knowledgeBase = KnowledgeBaseFactory.newKnowledgeBase(); knowledgeBase.addKnowledgePackages( knowledgeBuilder.getKnowledgePackages()); StatefulKnowledgeSession statefulKnowledgeSession = knowledgeBase.newStatefulKnowledgeSession();
102. Przykład użycia - cd StatefulKnowledgeSession statefulKnowledgeSession = knowledgeBase.newStatefulKnowledgeSession(); statefulKnowledgeSession.setGlobal( "sender" , sender); Order order = new Order(); statefulKnowledgeSession.insert(order); statefulKnowledgeSession.fireAllRules();
108. Drools Fusion - Eventy declare Order @role(event) @expires(365d) @ duration ( duration ) end public class Order { public long getDuration() { return 5000; } public long getTimestamp() { return createTime.getDate(); } }
109. Drools Fusion - predykaty $order : Order() not Contract( this after [-*,-10m] $order ) $contract : Contract() not Activation( this after [1s,134d] $contract) $activation : not Activation( this during $waitingRoom ) $contract : Contract( this coincides[15s, 10s] $order )