Krzysztof Rychlicki-Kicior
Language: Polish
Dawno temu, gdy w kodzie HTML królowały znaczniki FONT i MARQUEE, a zamiast AJAX-a stosowano ukryte ramki, błyskawiczną i dwustronną komunikację z serwerem można było osiągnąć jedynie za pomocą specjalnych wtyczek - np. we wszelkiej maści czatach królowała wówczas Java i applety. Z upływem lat sytuacja poprawiła się, dzięki zastosowaniu AJAX-a czy long pollingu, jednak wciąż była daleka od ideału. Na szczęście, obecnie programiści są w znacznie lepszej sytuacji - dzięki WebSocketom bez żadnego problemu są w stanie zaimplementować komunikację w czasie rzeczywistym, niezbędną np. do gier online, aplikacji do komunikacji czy aplikacji finansowych.
W ramach tego wykładu słuchacze zapoznają się z różnymi koncepcjami stosowanymi w komunikacji pomiędzy przeglądarką a serwerem HTTP, z uwzględnieniem WebSocketów. Oprócz tego zostaną przedstawione mechanizmy obsługi WS od strony serwera, na przykładzie Node.js i Socket.IO. Różne rozwiązania zostaną poddane porównaniu pod kątem wydajności. Mimo licznych zalet, WebSockety niosą za sobą pewne problemy - zostaną one również poddane analizie.
Adrian Chlubek: Dowiemy się, czym jest Swoole, w jakim celu został stworzony i jakie funkcjonalności oferuje – wszystko to na żywych przykładach. Przede wszystkim jednak spróbujemy odpowiedzieć sobie na pytanie: czy używanie Swoole ma sens?
Repozytorium z przykładami: https://github.com/achlubek/swoole_experiments
Dokumentacja Swoole: https://www.swoole.co.uk/docs/
Projektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa aplikacjiAntoni Orfin
Część pierwsza prezentacji pochodzącej z warsztatów skupiających się na zagadnieniach projektowania i wytwarzania wysokowydajnych i skalowalnych serwisów webowych.
Prezentacja opisuje problemy związane z warstwą aplikacji:
- Rodzaje skalowania
- Architektury nastawione na zapewnienie wysokiej wydajności i skalowalności
- Zagadnienia Load-Balancingu
- Metody cache'owanie - n-Tier Cache, Varnish, Redis
- Service Oriented Architecture
Ataki po stronie klienta w publicznych punktach dostępowychPawel Rzepa
Ataki po stronie klienta w publicznych punktach dostępowych”.
Coraz więcej restauracji i hoteli decyduje się na otwarcie publicznych punktów dostępowych. Wizja darmowego surfowania po Internecie wydaje się dla wielu atrakcyjna, ale czy na pewno bezpieczna? Czy można przechwycić dane przesyłane do "bezpiecznej" aplikacji? Czy szyfrowanie to droga dla paranoików, czy jedyne słuszne rozwiązanie?
GWINT: Przetwarzanie rozproszone z wykorzystaniem komunikacji asynchronicznej...GOG.com dev team
GWINT jako gra online nastawiona na obsługę milionów graczy wymaga wyjątkowo skalowalnej architektury. Opowiemy między innymi o tym:
– jak API zbudowane na Symfony w modelu mikro serwisów wykorzystuje asynchroniczną komunikację pomiędzy usługami i klientem (system notyfikacji),
– jak optymalizujemy procesowanie zdarzeń wymagających współpracy kilku usług (kolejki zadań), jak monitorujemy i testujemy integrację poszczególnych webservice’ów. Przewiną się także technologie takie jak: PHP7, HHVM, RabbitMq, Redis,
Krzysztof Sobczak GOG.com Team
Adrian Chlubek: Czy PHP jest gotowy na websockety? Czy architektura samego języka nie stoi na przeszkodzie? Zobaczymy jakie mamy możliwości pracy z Websocketami, porównamy trzy popularne rozwiązania umożliwiające taką komunikację, a następnie odpowiemy sobie na pytanie – czy to ma sens?
Adrian Chlubek: Dowiemy się, czym jest Swoole, w jakim celu został stworzony i jakie funkcjonalności oferuje – wszystko to na żywych przykładach. Przede wszystkim jednak spróbujemy odpowiedzieć sobie na pytanie: czy używanie Swoole ma sens?
Repozytorium z przykładami: https://github.com/achlubek/swoole_experiments
Dokumentacja Swoole: https://www.swoole.co.uk/docs/
Projektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa aplikacjiAntoni Orfin
Część pierwsza prezentacji pochodzącej z warsztatów skupiających się na zagadnieniach projektowania i wytwarzania wysokowydajnych i skalowalnych serwisów webowych.
Prezentacja opisuje problemy związane z warstwą aplikacji:
- Rodzaje skalowania
- Architektury nastawione na zapewnienie wysokiej wydajności i skalowalności
- Zagadnienia Load-Balancingu
- Metody cache'owanie - n-Tier Cache, Varnish, Redis
- Service Oriented Architecture
Ataki po stronie klienta w publicznych punktach dostępowychPawel Rzepa
Ataki po stronie klienta w publicznych punktach dostępowych”.
Coraz więcej restauracji i hoteli decyduje się na otwarcie publicznych punktów dostępowych. Wizja darmowego surfowania po Internecie wydaje się dla wielu atrakcyjna, ale czy na pewno bezpieczna? Czy można przechwycić dane przesyłane do "bezpiecznej" aplikacji? Czy szyfrowanie to droga dla paranoików, czy jedyne słuszne rozwiązanie?
GWINT: Przetwarzanie rozproszone z wykorzystaniem komunikacji asynchronicznej...GOG.com dev team
GWINT jako gra online nastawiona na obsługę milionów graczy wymaga wyjątkowo skalowalnej architektury. Opowiemy między innymi o tym:
– jak API zbudowane na Symfony w modelu mikro serwisów wykorzystuje asynchroniczną komunikację pomiędzy usługami i klientem (system notyfikacji),
– jak optymalizujemy procesowanie zdarzeń wymagających współpracy kilku usług (kolejki zadań), jak monitorujemy i testujemy integrację poszczególnych webservice’ów. Przewiną się także technologie takie jak: PHP7, HHVM, RabbitMq, Redis,
Krzysztof Sobczak GOG.com Team
Adrian Chlubek: Czy PHP jest gotowy na websockety? Czy architektura samego języka nie stoi na przeszkodzie? Zobaczymy jakie mamy możliwości pracy z Websocketami, porównamy trzy popularne rozwiązania umożliwiające taką komunikację, a następnie odpowiemy sobie na pytanie – czy to ma sens?
LocalStack to framework udostępniający łatwe w użyciu mocki usług stosu AWS. Podczas prezentacji Maciej skorzystał z serwisu zbudowanego z użyciem serverlessowego Boilerplate autorstwa The Software House oraz skorzystał z takich usług AWS jak API Gateway, DynamoDB, Lambda, StepFunctions czy SQS. Następnie omówił podejście do testowania rozwiązania. Dzięki prezentacji możecie poznać wady i zalety LocalStack. A na koniec Maciej pokazuje przepływ testowy w GitHub Actions, który zwiększy pewność przyszłych zmian.
Franciszek Krasowski: Zastanawialiście się kiedyś nad tym, czym jest PHP-PM? Jak działa? Jak wypada w porównaniu do innych popularnych rozwiązań? Czy jest wystarczająco stabilny? Franciszek Krasowski odpowie na wszystkie te pytania (a także na te, których jeszcze nie zadaliście).
O tworzeniu rozwiązań mobilnych z punktu widzenia front-end dewelopera. Omówienie istniejących rozwiązań oraz głębsza analiza biblioteki NativeScript wraz z demem.
Demo #1: https://github.com/pawelkondraciuk/nativescript-hello-world-demo-1
Demo #2: https://github.com/pawelkondraciuk/sample-groceries-demo-2
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...The Software House
Niezależnie od tego, czy jesteście developerami, sysadminami, czy też DevOps Engineers – prawie na pewno mieliście doświadczenie z webowymi panelami dostawców usług infrastrukturalnych takich jak AWS, GCP czy też OVH. Z poziomu tych paneli da się “wyklikać” wszystko, czego potrzeba, ale… czy aby na pewno tędy droga? Środowiskiem bardziej naturalnym dla każdego inżyniera jest wszakże edytor tekstu (czy też IDE) oraz różnorakie polecenia wydawane komputerowi w formie skryptów. Czemu by więc z tego nie skorzystać? Jeśli od klikania bez możliwości pomyłki boli Was ręka, zainwestuj w podkładkę pod mysz… ale przede wszystkim wpadnij na prelekcję Piotra, na której to opowie o założeniach podejścia IaC, jego zaletach oraz przedstawi najpopularniejsze narzędzia.
Prabin Tamang is a chef based in Dubai with over 15 years of experience working in restaurants across Dubai. He has held roles including Sous Chef, Chef de Partie, and Sushi Chef. His career objective is to build a career as a chef in a dynamic team environment where he can utilize his skills and grow professionally. He has a Higher Secondary Education certificate from Nepal and additional training in areas like HACCP, First Aid, and Health and Safety.
Organization development (OD) is a deliberately planned effort using a sequence of planned activities and events to help an organization improve its performance and effectiveness. There are three basic approaches to OD: the behavioral approach focuses on changing behaviors, the structural approach aims to change organizational structure, and the technical approach provides new tools and techniques.
LocalStack to framework udostępniający łatwe w użyciu mocki usług stosu AWS. Podczas prezentacji Maciej skorzystał z serwisu zbudowanego z użyciem serverlessowego Boilerplate autorstwa The Software House oraz skorzystał z takich usług AWS jak API Gateway, DynamoDB, Lambda, StepFunctions czy SQS. Następnie omówił podejście do testowania rozwiązania. Dzięki prezentacji możecie poznać wady i zalety LocalStack. A na koniec Maciej pokazuje przepływ testowy w GitHub Actions, który zwiększy pewność przyszłych zmian.
Franciszek Krasowski: Zastanawialiście się kiedyś nad tym, czym jest PHP-PM? Jak działa? Jak wypada w porównaniu do innych popularnych rozwiązań? Czy jest wystarczająco stabilny? Franciszek Krasowski odpowie na wszystkie te pytania (a także na te, których jeszcze nie zadaliście).
O tworzeniu rozwiązań mobilnych z punktu widzenia front-end dewelopera. Omówienie istniejących rozwiązań oraz głębsza analiza biblioteki NativeScript wraz z demem.
Demo #1: https://github.com/pawelkondraciuk/nativescript-hello-world-demo-1
Demo #2: https://github.com/pawelkondraciuk/sample-groceries-demo-2
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...The Software House
Niezależnie od tego, czy jesteście developerami, sysadminami, czy też DevOps Engineers – prawie na pewno mieliście doświadczenie z webowymi panelami dostawców usług infrastrukturalnych takich jak AWS, GCP czy też OVH. Z poziomu tych paneli da się “wyklikać” wszystko, czego potrzeba, ale… czy aby na pewno tędy droga? Środowiskiem bardziej naturalnym dla każdego inżyniera jest wszakże edytor tekstu (czy też IDE) oraz różnorakie polecenia wydawane komputerowi w formie skryptów. Czemu by więc z tego nie skorzystać? Jeśli od klikania bez możliwości pomyłki boli Was ręka, zainwestuj w podkładkę pod mysz… ale przede wszystkim wpadnij na prelekcję Piotra, na której to opowie o założeniach podejścia IaC, jego zaletach oraz przedstawi najpopularniejsze narzędzia.
Prabin Tamang is a chef based in Dubai with over 15 years of experience working in restaurants across Dubai. He has held roles including Sous Chef, Chef de Partie, and Sushi Chef. His career objective is to build a career as a chef in a dynamic team environment where he can utilize his skills and grow professionally. He has a Higher Secondary Education certificate from Nepal and additional training in areas like HACCP, First Aid, and Health and Safety.
Organization development (OD) is a deliberately planned effort using a sequence of planned activities and events to help an organization improve its performance and effectiveness. There are three basic approaches to OD: the behavioral approach focuses on changing behaviors, the structural approach aims to change organizational structure, and the technical approach provides new tools and techniques.
The document contains analyses of music videos based on their portrayal of gender roles, race, sexuality, materialism, and violence. It includes summaries of the music videos for the songs "If I Were a Boy" by Beyoncé, "Welcome to Miami" by Will Smith, "Anaconda" by Nicki Minaj, "If I Were a Rich Girl" by Gwen Stefani, and "Please Don't Leave Me" by Pink. The analyses describe the behaviors, appearances, and messages conveyed in each music video.
The document discusses how to identify and manage files and folders on a computer. It defines a file as a group of information of the same type that can be identified by its name, type, and size. A folder is used to organize files and folders. It then provides activities to demonstrate how to create, rename, copy, delete, and move both files and folders, such as creating a folder with your name on drive C, renaming it, copying it to the desktop, and deleting it from drive C. The activities are also done with a text file to demonstrate file management.
The document provides information about purchasing a 3Com 7900-000.017-1.00 power adapter from Launch 3 Telecom. It includes the product details, payment and shipping options, warranty information, and additional services offered by Launch 3 Telecom such as repairs, maintenance contracts, and equipment de-installation. Customers can purchase the power adapter by phone, email, or by clicking a link to send a request for quote. Orders placed before 3PM will ship same day via carriers like UPS or FedEx.
in L zone a society is already created and land is already purchased and membership is also open, Please have details on web site http://lzonepsu.in or email on lzonepsu@gmail.com or call on 8800057000 for further discussion.
El documento habla sobre el Día de San Valentín, celebrado el 14 de febrero. Originalmente era una festividad cristiana en honor a San Valentín, pero ahora es una celebración popular del amor y la amistad en muchos países. Se conmemora expresando afecto a las parejas y con regalos como flores y chocolate.
MODELING DAILY NET SHORTWAVE RADIATION OVER RUGGED SURFACES USING MODIS ATMOS...grssieee
The document summarizes a study modeling daily net shortwave radiation (NSSR) over rugged surfaces using MODIS atmospheric products. It presents the background of the study, data and methodology used, results and discussion. The results show good agreement between modeled and observed NSSR values for different locations with R^2 values from 0.71 to 0.93. However, there are errors from spatial resolution gaps and coarse MODIS data. The conclusion is that terrain attenuates NSSR under clear sky while clouds play a greater role under cloudy sky, and MODIS can be used to moderately map NSSR over rugged surfaces.
O documento descreve o projeto industrial da ENERCON em Portugal, incluindo a instalação de fábricas para a produção de pás eólicas, torres de betão e geradores. O projeto criou centenas de empregos e permitiu a exportação dos produtos para vários países europeus, aumentando a competitividade das empresas portuguesas.
El documento define lo que es un planeta según la Unión Astronómica Internacional. Para ser considerado un planeta, un cuerpo celeste debe orbitar una estrella, tener suficiente masa para alcanzar un equilibrio hidrostático esférico, y haber barrido su órbita de planetesimales. Según esta definición, el Sistema Solar contiene 8 planetas pero Plutón ahora se clasifica como un planeta enano. Los objetos que orbitan otras estrellas se denominan exoplanetas y deben cumplir con los mismos criterios.
Krótka prezentacja na temat możliwości platformy Google Web Toolkit oraz przedstawienie sposobu stworzenia nowego projektu dla GWT w środowisku Eclipse.
PLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFXPROIDEA
Zaprezentowany zostanie obecny status rozwiązań NFV. Ich historyczne znaczenie w przeszłości, zmiany na rynku, które doprowadziły do ponownego odkrycia tej technologii. Pokazane zostana możliwe scieżki rozwoju rozwiązań NFV i co w chwili obecnej stanowi blokadę do szerszego wdrożenia tych technologii. Zaprezentowane zostaną przykłady implementacji technolgoii NFV z wykorzystaniem rozwiązań Juniper vSRX vMX oraz produktów z rodziny NFX
4Developers 2015: Szybciej niż Struś Pędziwiatr - WebSockets w aplikacjach webowych - Krzysztof Rychlicki-Kicior
1. Szybciej, niż Struś Pędziwiatr
WebSockets w aplikacjach webowych
Krzysztof Rychlicki-Kicior
Jack of all trades @
Ph.D. student & T.A. @ Politechnika Łódzka
2. Plan prezentacji
• Protokół HTTP i jego ograniczenia
• Ramki, Java, AJAX, czyli jak to dawniej bywało
• WebSockets – komunikacyjna magia teraz w Twojej
przeglądarce
• Struś Pędziwiatr czy Wile E. Coyote – porównanie
wydajności
3. HTTP
• Żądanie + odpowiedź = …i żyli długo i szczęśliwie…
• …ale czy aby na pewno?
• HTTP powstał jako protokół do obsługi powiązanych
ze sobą dokumentów hipertekstowych – obecnie
jest używany w znacznie szerszym kontekście
4. HTTP – problemy
• Jedno połączenie na jeden zasób – rozwiązane (keep
alive)
• Bezstanowość (brak sesji) – rozwiązane (sesje,
udostępniane przez popularne frameworki webowe)
• Jednostronność komunikacji – to klient decyduje o
komunikacji z serwerem – ?
• Wydajność – protokół HTTP wprowadza spory narzut,
który utrudnia komunikację w czasie rzeczywistym – ?
5. Powrót do przeszłości
• Przedstawione ograniczenia są znane od dawna i w
rozmaity sposób próbowano sobie z nimi radzić
• Rozwiązania można podzielić na dwie grupy:
natywne i wtyczki
• Do rozwiązań natywnych można zaliczyć iframe,
AJAX, rozwiązania typu long-polling
• Najpopularniejsze rozwiązania zewnętrzne opierały
się o applety Javy i aplikacje Flashowe
6. Ramki (iframe)
• Jedna z uniwersalnych metod
• Niewidoczna ramka (np. wymiary 0x0) wysyła
żądania cyklicznie lub na zasadzie tzw. forever
frame
7. AJAX
• Tradycyjnie AJAX jest używany do wykonywania
żądań "w tle"
• Dzięki zdarzeniu onreadystatechange, istnieje
możliwość przesyłania cząstkowych odpowiedzi,
podobnie jak w przypadku ramki
• Problem w tym podejściu (podobnie jak forever
frame) wynika z owego braku ograniczeń
8. Long polling
• Rozwiązanie stanowią techniki oparte o long-polling
• Żądanie jest utrzymywane dopóty, dopóki nie
zostaną przesłane dane, jednak z pewnym
czasowym ograniczeniem.
• W razie braku otrzymanych danych, klient ponawia
żądanie
9. Long polling – AJAX
• Nie jest to stricte nowa technika
• Sposób zastosowania AJAX-a zgodnie z założeniami
long pollingu
10. Long polling – JSONP
• AJAX nie może być powszechnie używany do
wywołań międzyserwerowych (cross-domain)
• Możliwość taką daje importowanie skryptów za
pomocą znacznika <script>:
<script src="http://serwer/uzytkownicy/1?callback=odpowiedz"
type="text/javascript"></script>
<script>
function odpowiedz(dane)
{
// skorzystaj z obiektu dane
}
</script>
11. Long polling – JSONP
• Serwer nie zwraca wyłącznie obiektu w formacie
JSON
• Konieczne jest "opakowanie" go w wywołanie
funkcji – w efekcie w kodzie strony jest importowany
następujące wywołanie:
odpowiedz({"ID":1, "Login":"jan12345"});
12. Rozwiązania zewnętrzne
• Java i applety – które królowały w latach 90. –
zapewniały wydajną komunikację za pomocą
gniazd TCP
• Konieczność posiadania Javy
• Dostępność dodatkowych portów
• Odrębna infrastruktura po stronie serwera
13. Rozwiązania zewnętrzne
• Pozostałe wady appletów:
o utrudniona komunikacja z resztą strony internetowej
o niespójny interfejs użytkownika
o certyfikaty, ostrzeżenia, etc…
14. Rozwiązania zewnętrzne
• Z nastaniem nowego wieku popularność zyskała
technologia Adobe Flash
• Zalety i wady podobne, jak w przypadku Javy
• Oprócz klasycznych gniazd TCP, Flash (a dokładnie
Flex) oferuje wsparcie dla wydajnych metod
integracji klientów i serwera (np. BlazeDS)
15. Nowe koncepcje
• Server-sent Events – serwer otrzymuje w pełni
funkcjonalne narzędzie do przesyłania
komunikatów do klientów
• SSE nie są obsługiwane w IE, a ponadto umożliwiają
one jedynie komunikację od serwera do klienta
• WebSockets – pozwalają na dwustronną
komunikację pomiędzy klientem, a serwerem, za
pomocą dedykowanego protokołu
16. WebSockets
• Dwukierunkowy kanał komunikacyjny, który
pozwala na przesyłanie danych z minimalnym
narzutem, w porównaniu do klasycznego protokołu
HTTP
• NIE jest to implementacja klasycznych gniazd TCP
ani UDP, mimo że zasada działania jest podobna
• Nie jest ograniczony tylko do przeglądarki: można
pisać aplikacje desktopowe z wykorzystaniem
zewnętrznych bibliotek, np. Jetty (w Javie)
17. WebSockets
Procedura nawiązania połączenia WebSockets:
1. Klient wysyła zwykłe żądanie HTTP pod adres URI
spełniający wymagania WebSockets:
2. Żądanie zawiera prośbę o wykonanie tzw.
Upgrade w celu rozpoczęcia komunikacji
dwukierunkowej w trybie full-duplex
3. Komunikacja dwukierunkowa jest prowadzona
niezależnie od innych żądań kierowanych do
serwera
ws://serwer.com/gra
18. WebSockets
• Połączenie WebSocket jest zrywane w momencie
przeładowania lub przejścia do innej strony
• Z tego względu, aplikacje intensywnie
wykorzystujące WS funkcjonują w obrębie jednej
strony
19. WebSockets
• Gniazda webowe pozwalają na transfer danych
tekstowych, jak i binarnych
• Podobnie jak w przypadku protokołu HTTP, tak i
WebSockety potrafią korzystać z protokołu SSL.
Zakładając wsparcie po stronie serwera, w kodzie
klienta wystarczy zastosować scheme wss.
20. WebSockets
• Po stronie serwera, WebSockety muszą być
zaimplementowane dodatkowo.
• Wsparcie dla WS jest obecne w licznych
technologiach server-side, takich jak Java EE 7,
ASP.NET czy Node.js
21. WebSockets
• Implementacja po stronie klienta jest trywialna:
var socket = new WebSocket("ws://localhost/czat");
socket.onmessage = function(evt) {
// korzystaj z evt.data
}
socket.send('Hello, World!’);
22. WebSockets
• Również po stronie serwera obsługa nie sprawia
zazwyczaj problemu:
@ServerEndpoint(value="/czat")
public class CzatEndpoint {
@OnMessage
public void handle(String msg, Session ses){
}
// pozostałe adnotacje: @OnOpen, @OnClose,
// @OnError
}
23. WebSockets
• W porównaniu do tradycyjnych gniazd sieciowych,
WebSockety oferują znacznie bardziej przejrzyste
API:
o otwarcie sesji
o zamknięcie sesji
o wysłanie komunikatu
o odebranie komunikatu
o obsługa błędów
24. Wydajność
• Jedną z kluczowych zalet WebSocketów jest ich
wydajność, zwłaszcza w przypadku przesyłania
dużej liczby małych komunikatów
• W takich sytuacjach narzut związany z
wykonywaniem żądań HTTP staje się ogromny
25. Wydajność
• Na potrzeby niniejszej prezentacji wykonałem
proste testy z wykorzystaniem technologii Node.JS i
biblioteki Socket.IO
• Socket.IO pozwala na stosowanie różnych
transportów przezroczyście dla programisty
• Obecnie, Socket.IO udostępnia WebSockety i XHR-
polling
26. Wydajność
• Scenariusz: 500 komunikatów przesyłanych
sekwencyjnie
• Testy były przeprowadzane lokalnie, aby
zlikwidować niepotrzebne opóźnienie
• Wyniki:
o WebSockets – 2542 ms
o XHR-polling – 12431 ms
27. Praktyczne zastosowania
• Narzędzia do komunikacji w czasie rzeczywistym
(czaty, narzędzia do pracy wspólnej – wirtualne
tablice, itd.)
• Gry
• Aplikacje finansowe