chicago boss - altenwald - betabeers x córdoba
DESCRIPTION
Charla sobre ChicagoBoss y Erlang/OTP dada en el Betabeers número 10 de Córdoba.TRANSCRIPT
![Page 1: Chicago boss - Altenwald - Betabeers X Córdoba](https://reader035.vdocuments.pub/reader035/viewer/2022062710/559e1a5e1a28abcf5b8b45b6/html5/thumbnails/1.jpg)
ChicagoBossManuel Ángel Rubio Jiménez
![Page 2: Chicago boss - Altenwald - Betabeers X Córdoba](https://reader035.vdocuments.pub/reader035/viewer/2022062710/559e1a5e1a28abcf5b8b45b6/html5/thumbnails/2.jpg)
¿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
![Page 3: Chicago boss - Altenwald - Betabeers X Córdoba](https://reader035.vdocuments.pub/reader035/viewer/2022062710/559e1a5e1a28abcf5b8b45b6/html5/thumbnails/3.jpg)
Desarrollo web
![Page 4: Chicago boss - Altenwald - Betabeers X Córdoba](https://reader035.vdocuments.pub/reader035/viewer/2022062710/559e1a5e1a28abcf5b8b45b6/html5/thumbnails/4.jpg)
¿Qué es Erlang?
![Page 5: Chicago boss - Altenwald - Betabeers X Córdoba](https://reader035.vdocuments.pub/reader035/viewer/2022062710/559e1a5e1a28abcf5b8b45b6/html5/thumbnails/5.jpg)
¿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
![Page 6: Chicago boss - Altenwald - Betabeers X Córdoba](https://reader035.vdocuments.pub/reader035/viewer/2022062710/559e1a5e1a28abcf5b8b45b6/html5/thumbnails/6.jpg)
¿Quién usa Erlang?
![Page 7: Chicago boss - Altenwald - Betabeers X Córdoba](https://reader035.vdocuments.pub/reader035/viewer/2022062710/559e1a5e1a28abcf5b8b45b6/html5/thumbnails/7.jpg)
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.
![Page 8: Chicago boss - Altenwald - Betabeers X Córdoba](https://reader035.vdocuments.pub/reader035/viewer/2022062710/559e1a5e1a28abcf5b8b45b6/html5/thumbnails/8.jpg)
OOP vs Actor Model
![Page 9: Chicago boss - Altenwald - Betabeers X Córdoba](https://reader035.vdocuments.pub/reader035/viewer/2022062710/559e1a5e1a28abcf5b8b45b6/html5/thumbnails/9.jpg)
OOP vs Actor Model
![Page 10: Chicago boss - Altenwald - Betabeers X Córdoba](https://reader035.vdocuments.pub/reader035/viewer/2022062710/559e1a5e1a28abcf5b8b45b6/html5/thumbnails/10.jpg)
Apache vs Yaws
![Page 11: Chicago boss - Altenwald - Betabeers X Córdoba](https://reader035.vdocuments.pub/reader035/viewer/2022062710/559e1a5e1a28abcf5b8b45b6/html5/thumbnails/11.jpg)
Comportamientos - OTP
○ 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 FSM
Srv
App
![Page 12: Chicago boss - Altenwald - Betabeers X Córdoba](https://reader035.vdocuments.pub/reader035/viewer/2022062710/559e1a5e1a28abcf5b8b45b6/html5/thumbnails/12.jpg)
-module(ascensor).-behaviour(gen_fsm).-compile([export_all]). % para simplificar, cambiar por -export(). 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).
EjemploFiniteStateMachine
![Page 13: Chicago boss - Altenwald - Betabeers X Córdoba](https://reader035.vdocuments.pub/reader035/viewer/2022062710/559e1a5e1a28abcf5b8b45b6/html5/thumbnails/13.jpg)
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]).
![Page 14: Chicago boss - Altenwald - Betabeers X Córdoba](https://reader035.vdocuments.pub/reader035/viewer/2022062710/559e1a5e1a28abcf5b8b45b6/html5/thumbnails/14.jpg)
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”}]}.
![Page 15: Chicago boss - Altenwald - Betabeers X Córdoba](https://reader035.vdocuments.pub/reader035/viewer/2022062710/559e1a5e1a28abcf5b8b45b6/html5/thumbnails/15.jpg)
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, []}.
![Page 16: Chicago boss - Altenwald - Betabeers X Córdoba](https://reader035.vdocuments.pub/reader035/viewer/2022062710/559e1a5e1a28abcf5b8b45b6/html5/thumbnails/16.jpg)
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>
![Page 17: Chicago boss - Altenwald - Betabeers X Córdoba](https://reader035.vdocuments.pub/reader035/viewer/2022062710/559e1a5e1a28abcf5b8b45b6/html5/thumbnails/17.jpg)
Rendimiento
➔ 10 veces más rápido que PHP
➔ PHP renderiza a 150-600ms
➔ ChicagoBoss renderiza a 10ms o menos
![Page 18: Chicago boss - Altenwald - Betabeers X Córdoba](https://reader035.vdocuments.pub/reader035/viewer/2022062710/559e1a5e1a28abcf5b8b45b6/html5/thumbnails/18.jpg)
Libros en inglés
![Page 19: Chicago boss - Altenwald - Betabeers X Córdoba](https://reader035.vdocuments.pub/reader035/viewer/2022062710/559e1a5e1a28abcf5b8b45b6/html5/thumbnails/19.jpg)
Libro en castellano
Descarga PDF gratuita
http://erlang.bosqueviejo.net
Compra en Papel
![Page 20: Chicago boss - Altenwald - Betabeers X Córdoba](https://reader035.vdocuments.pub/reader035/viewer/2022062710/559e1a5e1a28abcf5b8b45b6/html5/thumbnails/20.jpg)
¿Preguntas?
![Page 21: Chicago boss - Altenwald - Betabeers X Córdoba](https://reader035.vdocuments.pub/reader035/viewer/2022062710/559e1a5e1a28abcf5b8b45b6/html5/thumbnails/21.jpg)
Agradecimientos
○ Organización de BetaBeers Córdoba
○ ¡A todos vosotros por asistir!