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++, JavaScr...
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...
¿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 qu...
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.

○...
-module(ascensor).
-behaviour(gen_fsm).
-compile([export_all]). % para simplificar, cambiar por -export().

Ejemplo
Finite...
Modelos
○
○

Soporte base de datos SQL y NoSQL:
❖
❖
❖
❖
❖
❖
❖

○

Riak
DynamoDB
Mnesia
MongoDB
Tokyo Tyrant
MySQL
PostgreS...
Rutas
➔

Basado en Rails y Django:

% Front page
{“/”, [{controller, “users”}, {action, “index”}]}.
% Error pages
{404, [{...
Controlador
➔

Basado en REST

➔

Salidas disponibles
◆
◆
◆
◆
◆

➔

Template (vista)
JSON
JSONP
Plain Text
Stream

Código
...
Vista
➔

Basado en DTL (Django Template Library) Compatible al 99%

<html>
<head>
<title>{{ webtitle }}</title>
</head>
<b...
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!
Upcoming SlideShare
Loading in...5
×

Chicago boss - Altenwald - Betabeers X Córdoba

380

Published on

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

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
380
On Slideshare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Chicago boss - Altenwald - Betabeers X Córdoba

  1. 1. ChicagoBoss Manuel Ángel Rubio Jiménez
  2. 2. ¿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
  3. 3. Desarrollo web
  4. 4. ¿Qué es Erlang?
  5. 5. ¿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
  6. 6. ¿Quién usa Erlang?
  7. 7. 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.
  8. 8. OOP vs Actor Model
  9. 9. OOP vs Actor Model
  10. 10. Apache vs Yaws
  11. 11. 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
  12. 12. -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).
  13. 13. 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]).
  14. 14. 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”} ]}.
  15. 15. 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, []}.
  16. 16. 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>
  17. 17. Rendimiento ➔ 10 veces más rápido que PHP ➔ PHP renderiza a 150-600ms ➔ ChicagoBoss renderiza a 10ms o menos
  18. 18. Libros en inglés
  19. 19. Libro en castellano Descarga PDF gratuita Compra en Papel http://erlang.bosqueviejo.net
  20. 20. ¿Preguntas?
  21. 21. Agradecimientos ○ Organización de BetaBeers Córdoba ○ ¡A todos vosotros por asistir!
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×