Do you want to pick up from where you left of?
Take me there

Lecciones: Avanzado

Llevando nuestro conocimiento al siguiente nivel, estas lecciones cubren los temas avanzados de Elixir y el BEAM.

Concurrencia en OTP

Hemos visto las abstracciones de Elixir para manejar concurrencia pero a veces necesitamos mayor control, para eso podemos usar los comportamientos OTP sobre los que está construido Elixir.

En este lección nos enfocaremos en el componente mas grande: GenServers

Supervisores OTP

Los supervisores son procesos especializados con un propósito: monitorear otros procesos. Estos supervisores nos permiten crear aplicaciones tolerantes a fallos que automáticamente restauren procesos hijos en caso de falla.

Distribución en OTP

Introducción a la distribución

Podemos ejecutar aplicaciones Elixir en un conjunto de nodos distribuidos diferentes ya sea en un único host o en múltiples hosts Elixir nos permite comunicarnos a través de estos nodos usando algunos mecanismos los cuales están fuera del objetivo de esta lección.

Metaprogramación

La Metaprogramación es el proceso de usar código para escribir código. En Elixir esto nos da la habilidad de extender el lenguaje para que encaje con nuestras necesidades y poder cambiar el código dinámicamente. Vamos a empezar mirando como Elixir está representado por detrás, luego vamos a modificarlo y finalmente podemos usar este conocimiento para extenderlo.

Unas palabras de advertencia: La Metaprogramación es complicada y solo debería ser usada cuando sea realmente necesario El abuso con seguridad acabará con código complejo que es difícil de mantener y depurar.

Proyectos Umbrella

Algunas veces un proyecto puede ser grande, demasiado grande incluso. Mix nos permite separar nuestro código en varias aplicaciones y hacer que nuestros proyectos de Elixir sean más manejables a medida que van creciendo.

Tipos y especificaciones

En esta lección vamos a aprender acerca de la sintaxis de @spec y @type. @spec es mas una sintaxis complementaria para escribir documentación la cual podría ser analizada por herramientas. @type nos ayuda a escribir código más legible y fácil de entender.

Comportamientos

Aprendimos acerca de Typespecs en la lección anterior, ahora vamos a aprender como requerir que un módulo implemente esas especificaciones. En Elixir, esta funcionalidad es referida como comportamientos.

Protocolos

En esta lección daremos un vistazo a los Protocolos, qué son y como los podemos utilizar en Elixir.