Chicago boss - Altenwald - Betabeers X Córdoba
Upcoming SlideShare
Loading in...5
×
 

Chicago boss - Altenwald - Betabeers X Córdoba

on

  • 370 views

Charla sobre ChicagoBoss y Erlang/OTP dada en el Betabeers número 10 de Córdoba.

Charla sobre ChicagoBoss y Erlang/OTP dada en el Betabeers número 10 de Córdoba.

Statistics

Views

Total Views
370
Views on SlideShare
327
Embed Views
43

Actions

Likes
0
Downloads
1
Comments
0

5 Embeds 43

http://altenwald.org 29
http://feedly.com 9
http://www.linkedin.com 3
http://digg.com 1
http://www.feedspot.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Chicago boss - Altenwald - Betabeers X Córdoba Chicago boss - Altenwald - Betabeers X Córdoba Presentation Transcript

    • ChicagoBoss Manuel Ángel Rubio Jiménez
    • ¿Quién soy? ○ Programador desde los 12 años... unos 20 años programando en: Perl, Python, Ruby, PHP, Java, C/C++, JavaScript, Pascal, Modula-2, Basic y Erlang. ○ Administrador de sistemas desde los 22 años... unos 10 años administrando Windows, GNU/Linux y BSD. ○ En definitiva... DevOps. ○ Fundador de Altenwald y Freelance. ○ Contacto: ○ Blog: http://bosqueviejo.net ○ Twitter: @MRonErlang
    • Desarrollo web
    • ¿Qué es Erlang?
    • ¿Qué es Erlang? ○ Nació en 1986 como una extensión de Prolog en los laboratorios Ericsson. ○ Lenguaje ○ ¿Funcional o no? ... mejor híbrido. ○ Orientado a la Concurrencia... Modelo Actor ○ Máquina Virtual o Plataforma ○ Gestión y Planificador de Procesos (soporta más de 1.000.000 procs) ○ Gestor de Memoria ○ Intérprete de comandos (shell) ○ Interfaz transparente para comunicación entre nodos ○ Características ○ Distribuido ○ Tolerante a fallos ○ Escalable ○ Cambio de código en caliente
    • ¿Quién usa Erlang?
    • Progresión Informática ○ Carrera de los Hertzios vs Cores Cuando estás en un atasco de tráfico con un Porsche, todo lo que puedes hacer es consumir más combustible que el resto estando parado. La escalabilidad va de construir carreteras más anchas, no coches más rápidos. -- Steve Swartz ○ Programación Orientada a Objetos se atribuye a Alan Kay (Smalltalk) ○ Modelo Actor se atribuye a Carl Hewitt por un estudio de 1977.
    • OOP vs Actor Model
    • OOP vs Actor Model
    • Apache vs Yaws
    • Comportamientos - OTP App ○ gen_server: servidores genéricos, actores base. ○ gen_fsm: máquinas de estados finitos. ○ gen_event: manejadores de eventos. ○ supervisor: supervisión de procesos. ○ application: estructura de aplicación. Sup Sup Srv Srv FSM
    • -module(ascensor). -behaviour(gen_fsm). -compile([export_all]). % para simplificar, cambiar por -export(). Ejemplo Finite State Machine start_link() -> gen_fsm:start_link({local, ?MODULE}, ?MODULE, [], []). init([]) -> {ok, planta_baja, []}. planta_baja(bajar, State) -> io:format("Beeep!, opcion incorrecta~n", []), {next_state, planta_baja, State}; planta_baja(subir, State) -> io:format("Subiendo a la planta primera~n", []), {next_state, planta_primera, State}. planta_primera(bajar, State) -> io:format("Bajando a la planta baja~n", []), {next_state, planta_baja, State}; planta_primera(subir, State) -> io:format("Subiendo a la planta segunda~n", []), {next_state, planta_segunda, State}. planta_segunda(bajar, State) -> io:format("Bajando a la planta primera~n", []), {next_state, planta_primera, State}; planta_segunda(subir, State) -> io:format("Beeep!, opcion incorrecta~n", []), {next_state, planta_segunda, State}. % agregamos funciones para facilitar las llamadas % estas son opcionales: boton_subir() -> gen_fsm:send_event(?MODULE, subir). boton_bajar() -> gen_fsm:send_event(?MODULE, bajar).
    • Modelos ○ ○ Soporte base de datos SQL y NoSQL: ❖ ❖ ❖ ❖ ❖ ❖ ❖ ○ Riak DynamoDB Mnesia MongoDB Tokyo Tyrant MySQL PostgreSQL Código muy simple: -module(users,[Id,Name,Password,Email]). -compile([export_all]).
    • Rutas ➔ Basado en Rails y Django: % Front page {“/”, [{controller, “users”}, {action, “index”}]}. % Error pages {404, [{controller, “error”}, {action, “err404”}]}. % Other examples: {“/login”, [{controller, “users”}, {action, “login”}]}. {“/reset/(?<code>[0-9a-f]+)”, [ {controller, “user”}, {action, “reset”} ]}.
    • Controlador ➔ Basado en REST ➔ Salidas disponibles ◆ ◆ ◆ ◆ ◆ ➔ Template (vista) JSON JSONP Plain Text Stream Código -module(myapp_users_controller,[Req,SessionID]). -compile([export_all]). index(‘GET’, []) -> {ok, []}.
    • Vista ➔ Basado en DTL (Django Template Library) Compatible al 99% <html> <head> <title>{{ webtitle }}</title> </head> <body> <table> {% for user in users %} <tr> <td>{{ user.name }}</td> <td>{{ user.email }}</td> </tr> {% endfor %} </body> </html>
    • Rendimiento ➔ 10 veces más rápido que PHP ➔ PHP renderiza a 150-600ms ➔ ChicagoBoss renderiza a 10ms o menos
    • Libros en inglés
    • Libro en castellano Descarga PDF gratuita Compra en Papel http://erlang.bosqueviejo.net
    • ¿Preguntas?
    • Agradecimientos ○ Organización de BetaBeers Córdoba ○ ¡A todos vosotros por asistir!