Erlang Web Scalable & Reliable web framework ErlLounge, Kraków Lipiec 2009 (wersja rozszerzona dla czytelników off-line;))

Slides:



Advertisements
Podobne prezentacje
Polish Road to Standardization of Archival Description Central Archives of Historical Records, Warsaw Central Archives of Historical Records, Warsaw 25.
Advertisements

Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP.
Usługi sieciowe Wykład 9 VPN
Java Server Faces Tomasz Nowak.
C++ w Objectivity Marcin Michalak s1744. Pomocne pakiety: Data Definition Language (DDL). Standard Template Library (STL). Active Schema.
Software Engineering 0. Information on the Course Leszek J Chmielewski Faculty of Applied Informatics and Mathematics (WZIM) Warsaw University of Life.
STL - Standard Template Library Autor: Błażej Chodarcewicz rainbow.mimuw.edu.pl/~bc189380/STL/
Co nowego w Ganymede © 2008 by Jacek Pospychala; made available under the EPL v1.0.
Mirosław Ochodek Sponsorzy: JFace Jak jeszcze szybciej tworzyć interfejsy? ECESIS Eclipse Community Education Project An.
Team Building Copyright, 2003 © Jerzy R. Nawrocki Requirements Engineering Lecture.
Windows Server 2008 Jarosław Kurek WZIM SGGW 1. Instalacja windows server instalacja wersji Enterprise 2. Instalacja z funkcją Bitlockera – wymagany.
Łukasz Monkiewicz.
Warstwy aplikacji sieciowych
„Tworzenie aplikacji sieciowych w języku Java”
Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego Tworzenie aplikacji sieciowych w języku Java Networking Prezentacja.
Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego Tworzenie aplikacji sieciowych w języku Java Java – overview.
MS SQL SERVER udział w rynku. Source: Gartner Dataquest (May 2006) Company Market Share (%) Market Share (%) Growth (%) Oracle6, ,
MS ASP.NET 2005/2006
1 Building Integration System - Training Internal | ST-IST/PRM1 | 02/2008 | © Robert Bosch GmbH All rights reserved, also regarding any disposal,
Wstępna struktura serwisu internetowego BTW events wersja 1.0 Warszawa,
More Secure and Dependable 1.User Account Protection, more secure boot, anti-spyware and anti-phishing 2.Restart Manager (fewer reboots) 3.Instant-on.
Tadeusz Janasiewicz IT Group, Tadeusz Janasiewicz, WSUS, IT Group, r.
Mobilność maszyn wirtualnych w Hyper-V
Framework 2 oraz Scala Bartosz Jankiewicz Credit Suisse _ _ _ __ | | __ _ _ _| | | '_ \| |/ _' | || |_| | __/|_|\____|\__.
Prof. dr hab. Hubert Izdebski. Projekt : Odpowiedź na wyzwania gospodarki opartej na wiedzy: nowy program nauczania na WSHiP. Projekt współfinansowany.
Najpopularniejsze aplikacje ASP.NET i PHP.
Avaya IP Office - Wersja 8
P ISZ MNIEJ, RÓB WIĘCEJ - ZASTOSOWANIE J Q UERY Kamil Szumański s4126.
Do you know who I am? Czy wiesz kim ja jestem Soy alguien con quien convives a diario Im somebody you live with every day.. Jestem kims z kim żyjesz.
SQL i internet PHP i MySQL. Programy MySQL: serverMySQL: server WWW serverWWW server Interpreter PHPInterpreter PHP Przeglądarka stron wwwPrzeglądarka.
Node.js – Serverside Javascript
O Rubym słów kilka… Simple Pinger O mnie: Maciej Mensfeld ruby
. Four levels of education management: - Federal authorities, including the Department of Education; - The state authorities; - The local authority.
YOUR PARTNER IN WIND ENERGY PROJECTS
Piotr Nowak Development Manager Construction Innovation and Development Department The Chartered Institute of Building.
Theory of Computer Science - Basic information
Zarządzanie magazynem danych - Storage Spaces w Windows Server 2012 oraz w Windows 8 Błażej Miśkiewicz MCTMCP MCSA MCTS MCITP.
Damian Wojdan Kraków,
IDIOMS & PROVERBS Why not to enrich your language with such great phrases and expressions?...
WYDZIAŁ DS. OCHRONY PRAW WŁASNOŚCI INTELEKTUALNEJ SŁUŻBA CELNA RZECZPOSPOLITEJ POLSKIEJ Protection of Intellectual Property Rights in the Customs Service.
1 © 2006 Cisco Systems, Inc. All rights reserved.SEC Agenda Cisco Business Partner Wymogi bezpieczeństwa współczesnej architektury sieciowej CISCO Self-Defending.
Click to show the screen.
Wybrane dane statystyczne dotyczące przestępczości w Polsce DOKUMENTACJA ORAZ SPOSÓB WYKONANIA BAZY DANYCH W PROGRAMIE ACCESS.
Prezentacja z przedmiotu „systemy wizyjne”
Szkoła w chmurze.
Na podstawie: The Illusion Of Life Disney Animation.
ST/PRM2-EU | April 2013 | © Robert Bosch GmbH All rights reserved, also regarding any disposal, exploitation, reproduction, editing, distribution,
The Grumpy Test If at least one of these pictures does not make you smile, then you are grumpy and need to go back to bed. Test na ponuraka Jak nie usmiechniesz.
Zend Framework Framework php Antonczak Lukasz. Dlaczego Zend Framework Zend Framework jest frameworkiem dla PHP5 rozwijanym przez społeczność użytkowników.
Podstawy licencjonowania Exchange, SharePoint oraz Lync.
Technologie tworzenia aplikacji internetowych
Automatyzacja testów akceptacyjnych
xHTML jako rozszerzenie HTML
Instalacja serwera WWW na komputerze lokalnym
Polskie cyfrowe miasto ? Marzenia a rzeczywistość. Maxymilian Bylicki - Zakopane, Polskie cyfrowe miasto - marzenia a rzeczywistość Maxymilian.
Stare Miasto w Krakowie Obiekt ze Światowej Listy UNESCO.
ZAGADKOWA NIEDZIELA AUDYCJA PROGRAMU TRZECIEGO POLSKIEGO RADIA Cezary Rubin Gimnazjum im. Adama Mickiewicza w Brodach, kl. I A.
KINECT – czyli z czym to się je?. Damian Zawada
PolGIS jako nowoczesny system do paszportyzacji sieci
IBM Tivoli Storage Manager Strojenie A Presentation by Paweł Krawczyk June 8, 2011.
Rozdział 3: Bezpieczeństwo w sieci opartej na systemie Windows 2000.
Specjalizacja "Dziennikarstwo On-line„ HTML – XHTML Część 4 Prowadzący: Dariusz Jaruga
Cataloguing, retrieving and translating scholarly texts in English Semestr letni 2013/2014 Dr Monika Krakowska.
TROCHĘ HISTORII Marek Zając PO CO UŻYWAĆ OPENCL? Marek Zając.
Silverlight 4 dla Windows Phone 7
1.
Piotr Czapiewski Wydział Informatyki ZUT.  Extensible Markup Language  Język znaczników  Human-readable and machine-readable  Niezależny od platformy.
BVMS 3.0 Moduł 13: Opcje zapisu iSCSI
Wydział Elektroniki Kierunek: AiR Zaawansowane metody programowania Wykład 6.
Connecticut Core Standards for English Language Arts & Literacy
Zapis prezentacji:

Erlang Web Scalable & Reliable web framework ErlLounge, Kraków Lipiec 2009 (wersja rozszerzona dla czytelników off-line;))

Dziś Dlaczego? Dlaczego? Kto? Kto? Co? Co? Jak? Jak? Co dalej? Co dalej? Jak zacząć? Jak zacząć?

Dlaczego? Naturalny frontend dla systemów napisanych w Erlang/OTP Naturalny frontend dla systemów napisanych w Erlang/OTP Wsparcie dla skalowalności w każdej warstwie: Wsparcie dla skalowalności w każdej warstwie: HTTP servers: Yaws and INETS… HTTP servers: Yaws and INETS… Cache i dystrybucja sesji Cache i dystrybucja sesji Databases: Mnesia, CouchDB… Databases: Mnesia, CouchDB… Zarządzanie kodem (Buildability, Integrity) Zarządzanie kodem (Buildability, Integrity) Paradygmat MVC Paradygmat MVC Nie ma Erlanga w templatach HTML Nie ma Erlanga w templatach HTML Rozszerzalność (plugins) Rozszerzalność (plugins)

Kto? ETC ETC SourceForge SourceForge BitBucket BitBucket

Jak to działa? Przetwarzanie requestu z serwera HTTP Przetwarzanie requestu z serwera HTTP Przetwarzanie danych Przetwarzanie danych Rozwijanie dynamicznych danych w templatach (za pomocą wpartów lub DTL) Rozwijanie dynamicznych danych w templatach (za pomocą wpartów lub DTL)

OUT IN

OUT Dispatcher Dispatcher – Przyjazne URL na bazie regexpów Controllers, Docroot, Templates Controllers, Docroot, Templates – Dostępne za pomocą reguł dispatchera {rodzaj, URL pattern, {moduł, funkcja}}. {rodzaj, URL pattern, {moduł, funkcja}}. {dynamic, "^/index.html$", {main, home}}. {dynamic, "^/index.html$", {main, home}}. {dynamic, delegate, "^/user", "config/dispatcher/user.conf"}. {dynamic, delegate, "^/user", "config/dispatcher/user.conf"}. {static, "^/about$", "about.html"}. {static, "^/about$", "about.html"}. {static, "^style.css$", enoent}. {static, "^style.css$", enoent}.

OUT Templates Templates – Zgodne z XHTML – Budowane przez wtpl Wparts Wparts – Dynamiczne znaczniki Wtypes Wtypes – Formatowanie wg. typu

OUT Form builder Form builder – Generowane na podstawie typów Caching Caching – Binarna postać stron i18n i18n – Tłumaczenia – Wiele języków config/languages/pl.conf file: {"pass", "Hasło"}. template: template:

IN Request dictionary & sesja Request dictionary & sesja – Podręczna pamięć o długości życia requestu wpart:fget("post", "form_input"), wpart:fget("post", "form_input"), wpart:fget("session", "username"), wpart:fget("session", "username"), wpart:fset("node", node()) wpart:fset("node", node()) And then in your template: And then in your template: Wtypes Wtypes - automatyczna walidacja

IN Dataflow Dataflow - Funkcyjne szeregowanie przetwarzania requestu Annotations Annotations – Meta opis dataflowu Distribution Distribution – Dwupoziomowa architektura – każdy z poziomów rozproszony horyzontalnie e-Components e-Components – Mechanizm rozszerzeń i wtyczek (paypal, e_backup)

Annotations Meta-language kontrolowania realizacji requestu Meta-language kontrolowania realizacji requestu Definiują funkcje przed i po właściwym kontrolerze Definiują funkcje przed i po właściwym kontrolerze – Autoryzacja – Walidacja danych wejsciowych Przykładowe zastosowania po zwroceniu tokenu dla servera Przykładowe zastosowania po zwroceniu tokenu dla servera – Invalidacja zawartości cache – Asynchroniczne (względem requestu) operacje np. na dysku lub w logach.

Annotations -module(my_utils).-export([logme/4]).-include_lib("eptic/include/e_annotation.hrl").?BEFORE. logme(AnnArgs, Mod, Fun, ControllerArgs) -> io:format("~s~n", [AnnArgs]), io:format("~s~n", [AnnArgs]), {proceed, ControllerArgs}. {proceed, ControllerArgs}. -module(controller). -export([my_fun/0]). […] ?LOGME("Calling my_fun"). my_fun() -> wpart:fget("post", "id"), […]

Budowanie formularzy Forularze z defaultowymi wartosciami (edycja) Forularze z defaultowymi wartosciami (edycja) Szkielet formularza oparty na: Szkielet formularza oparty na: HTML table - HTML table - Paragraph - Paragraph - List - List - Div - Div -

Formularze Reprezentacja typów I formularzy za pomocą recordów Reprezentacja typów I formularzy za pomocą recordów article.hrl article.hrl -record(article, { id, id, text, text, hide hide }). }). -record(article_types, { id = {integer, […]}, id = {integer, […]}, title = {string, […]}, title = {string, […]}, hide = {enum, […]} hide = {enum, […]} }). }). templates/article.html <wpart:form type="article" action="/article/create" />

Caching Caching – realizacja kontrolera, action caching Caching – realizacja kontrolera, action caching {dynamic, "^/blog/list", {blog, list}, [{cache, persistent]}. {dynamic, "^/blog/list", {blog, list}, [{cache, persistent]}. Cache – strony statyczne Cache – strony statyczne {static, "^/faq$", "doc/faq.html", [{cache, normal}]}. {static, "^/faq$", "doc/faq.html", [{cache, normal}]}. Cache – template scope Cache – template scope SOME CONTENT SOME CONTENT</wpart:cache>

Cache - Invalidacja regexp regexp Precyzyjne działanie za pomocą anotacji Precyzyjne działanie za pomocą anotacji?INVALIDATE(["^/blog/list"]). update_blog() -> [update your database here...] [update your database here...] {template, "blog.html"}. {template, "blog.html"}.?INVALIDATE_GROUPS(["menus"]). update_menu() -> [update your database here...] [update your database here...] {template, "blog.html"}. {template, "blog.html"}.

Distribution Front End Front End – HTTP server – Dispatcher – Cache tables – Static content Back End Back End – Invalidator – Controllers – Templates – Database

Stress testing One machine for Erlang Web application and one for Tsung One machine for Erlang Web application and one for Tsung – Intel Core 2 Due 2.4 GHz – 3 GB DDR2 RAM – Erlang R12-5, no hipe – Suse 11 Application implemented with Application implemented with – INETS or Yaws 1.80 – Mnesia as database – dispatcher, template inheritance – Erlang Web cache or memcached (through merle)

Stress testing Erlang Web cache Erlang Web cache Inets server Inets server Tsung (HTTP 1.1 connections) Tsung (HTTP 1.1 connections) – 1500 pages / sec Memcached through merle Memcached through merle Inets server Inets server Tsung (HTTP 1.1 connections) Tsung (HTTP 1.1 connections) – 1000 pages / sec

Plugins bin/e_component.erl list - lists all the e_components bin/e_component.erl list - lists all the e_components bin/e_component.erl search Keyword bin/e_component.erl search Keyword bin/e_component.erl details Name bin/e_component.erl details Name bin/e_component.erl install Name bin/e_component.erl install Name bin/e_component.erl path Path install Name bin/e_component.erl path Path install Name

Przykłady erlang-consulting.com erlang-consulting.com

Przykłady umbria-rentals.com umbria-rentals.com

Przykłady erlang-consulting.com erlang-consulting.com umbria-rentals.com umbria-rentals.com protest-project.eu protest-project.eu

Przykłady erlang-consulting.com erlang-consulting.com umbria-rentals.com umbria-rentals.com protest-project.eu protest-project.eu erlang-web.org erlang-web.org

Przykłady erlang-consulting.com erlang-consulting.com umbria-rentals.com umbria-rentals.com protest-project.eu protest-project.eu erlang-web.org erlang-web.org erlang-factory.com erlang-factory.com

Zasoby Projekt: (przykładowe tworzenie aplikacji krok po kroku) Projekt: (przykładowe tworzenie aplikacji krok po kroku) Wiki: Wiki: Ropozytorium Ropozytorium

Pytania

Więcej -> Dziękuję