SlideShare una empresa de Scribd logo
1 de 21
Descargar para leer sin conexión
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!

Más contenido relacionado

Similar a Chicago boss - Altenwald - Betabeers X Córdoba

Ppiosprogramacion 090925153826-phpapp01[1]Principios de Programación
Ppiosprogramacion 090925153826-phpapp01[1]Principios de Programación Ppiosprogramacion 090925153826-phpapp01[1]Principios de Programación
Ppiosprogramacion 090925153826-phpapp01[1]Principios de Programación Vladimir Pomares
 
MuleSoft Buenos Aires Meetup Introducción Dataweave
MuleSoft Buenos Aires Meetup Introducción DataweaveMuleSoft Buenos Aires Meetup Introducción Dataweave
MuleSoft Buenos Aires Meetup Introducción DataweaveFlorenciaCattelani
 
00 introducción a Python
00 introducción a Python00 introducción a Python
00 introducción a PythonJuan Rodríguez
 
Programando con Python
Programando con PythonProgramando con Python
Programando con PythonMario IC
 
Tema 2 - Programación básica en C (III)
Tema 2  - Programación básica en C (III)Tema 2  - Programación básica en C (III)
Tema 2 - Programación básica en C (III)Pablo Haya
 
Openmeetings+En+Xp
Openmeetings+En+XpOpenmeetings+En+Xp
Openmeetings+En+Xpguestad4dd2f
 
Python - Programación para machos
Python - Programación para machosPython - Programación para machos
Python - Programación para machosJorge Hernandez
 
Practica integradora1 identifica los sistemas operativos para instalar y conf...
Practica integradora1 identifica los sistemas operativos para instalar y conf...Practica integradora1 identifica los sistemas operativos para instalar y conf...
Practica integradora1 identifica los sistemas operativos para instalar y conf...Noemi Jara
 
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
Magallanes, Herramienta de despliegue PHP sencilla y poderosa�Magallanes, Herramienta de despliegue PHP sencilla y poderosa�
Magallanes, Herramienta de despliegue PHP sencilla y poderosaFco Javier Núñez Berrocoso
 
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez.NET UY Meetup
 
Programación modular estructurada.ppt
Programación modular estructurada.pptProgramación modular estructurada.ppt
Programación modular estructurada.pptLeydi Hernandez
 

Similar a Chicago boss - Altenwald - Betabeers X Córdoba (20)

Ppiosprogramacion 090925153826-phpapp01[1]Principios de Programación
Ppiosprogramacion 090925153826-phpapp01[1]Principios de Programación Ppiosprogramacion 090925153826-phpapp01[1]Principios de Programación
Ppiosprogramacion 090925153826-phpapp01[1]Principios de Programación
 
Lenguajes de Programacion
Lenguajes de ProgramacionLenguajes de Programacion
Lenguajes de Programacion
 
Programacion
ProgramacionProgramacion
Programacion
 
MuleSoft Buenos Aires Meetup Introducción Dataweave
MuleSoft Buenos Aires Meetup Introducción DataweaveMuleSoft Buenos Aires Meetup Introducción Dataweave
MuleSoft Buenos Aires Meetup Introducción Dataweave
 
Principios de Programacion
Principios de ProgramacionPrincipios de Programacion
Principios de Programacion
 
00 introducción a Python
00 introducción a Python00 introducción a Python
00 introducción a Python
 
Introducción
IntroducciónIntroducción
Introducción
 
Programando con Python
Programando con PythonProgramando con Python
Programando con Python
 
Acmar trucos de visual basic(2)
Acmar   trucos de visual basic(2)Acmar   trucos de visual basic(2)
Acmar trucos de visual basic(2)
 
Tema 2 - Programación básica en C (III)
Tema 2  - Programación básica en C (III)Tema 2  - Programación básica en C (III)
Tema 2 - Programación básica en C (III)
 
Openmeetings+En+Xp
Openmeetings+En+XpOpenmeetings+En+Xp
Openmeetings+En+Xp
 
Parte i curso c
Parte i curso cParte i curso c
Parte i curso c
 
Unidad 2 curso c
Unidad 2 curso cUnidad 2 curso c
Unidad 2 curso c
 
Python - Programación para machos
Python - Programación para machosPython - Programación para machos
Python - Programación para machos
 
Practica integradora1 identifica los sistemas operativos para instalar y conf...
Practica integradora1 identifica los sistemas operativos para instalar y conf...Practica integradora1 identifica los sistemas operativos para instalar y conf...
Practica integradora1 identifica los sistemas operativos para instalar y conf...
 
NIVEL DE PROGRAMACIÓN WEB INTRODUCCIÓN
NIVEL DE PROGRAMACIÓN WEB INTRODUCCIÓNNIVEL DE PROGRAMACIÓN WEB INTRODUCCIÓN
NIVEL DE PROGRAMACIÓN WEB INTRODUCCIÓN
 
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
Magallanes, Herramienta de despliegue PHP sencilla y poderosa�Magallanes, Herramienta de despliegue PHP sencilla y poderosa�
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
 
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
 
Programación modular estructurada.ppt
Programación modular estructurada.pptProgramación modular estructurada.ppt
Programación modular estructurada.ppt
 
Vim python-mode
Vim python-modeVim python-mode
Vim python-mode
 

Último

Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1ivanapaterninar
 
Análisis de Artefactos Tecnologicos (3) (1).pdf
Análisis de Artefactos Tecnologicos  (3) (1).pdfAnálisis de Artefactos Tecnologicos  (3) (1).pdf
Análisis de Artefactos Tecnologicos (3) (1).pdfsharitcalderon04
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfKarinaCambero3
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docxobandopaula444
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerenciacubillannoly
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificialcynserafini89
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesEdomar AR
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfFernandoOblitasVivan
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 

Último (20)

Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1
 
El camino a convertirse en Microsoft MVP
El camino a convertirse en Microsoft MVPEl camino a convertirse en Microsoft MVP
El camino a convertirse en Microsoft MVP
 
Análisis de Artefactos Tecnologicos (3) (1).pdf
Análisis de Artefactos Tecnologicos  (3) (1).pdfAnálisis de Artefactos Tecnologicos  (3) (1).pdf
Análisis de Artefactos Tecnologicos (3) (1).pdf
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdf
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerencia
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificial
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, Aplicaciones
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdf
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 

Chicago boss - Altenwald - Betabeers X Córdoba

  • 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
  • 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
  • 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. OOP vs Actor Model
  • 9. OOP vs Actor Model
  • 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. -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. 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. 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. 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. 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. Rendimiento ➔ 10 veces más rápido que PHP ➔ PHP renderiza a 150-600ms ➔ ChicagoBoss renderiza a 10ms o menos
  • 19. Libro en castellano Descarga PDF gratuita Compra en Papel http://erlang.bosqueviejo.net
  • 21. Agradecimientos ○ Organización de BetaBeers Córdoba ○ ¡A todos vosotros por asistir!