Todos los vídeos

Typespecs (parte 2, tipos propios y t())

A medida que desarrollemos estructuras de datos más complejas, el sistema de tipos de Elixir se nos quedará corto. Por suerte lo podemos extender creando nuestras propias definiciones de tipos para fabricar abstracciones sobre otras estructuras más complejas.

Typespecs (parte 1, usando tipos básicos)

Con los type specs se pueden especificar los tipos de los parametros y retornos de las funciones para que herrramientas como Dialyzer puedan analizar de forma estática el código a fin de comprobar que se pasen los parámetros de forma correcta en el código.

Aplicaciones (parte 2)

Un ejemplo real con la librería Plug de cómo podemos incorporar distintos procesos en el GenServer que debe declararse en una Aplication. Además, por qué hace falta no-halt.

Aplicaciones (parte 1)

En la máquina BEAM una aplicación consiste en un supervisor y una configuración. El código fuente del paquete compone la aplicación, y la configuración permite parametrizar el comportamiento de la aplicación.

Un resumen sobre procesos OTP

Hemos visto demasiadas cosas en la última docena de episodios. ¡Es hora de poner un poco de orden con un mindmap que ayude a aclarar las ideas!

Supervisores (parte 3)

Finalmente, la diferencia entre start_link/2 y start_link/3 y el uso de init/2 para desacoplar la creación de un Supervisor de la especificación de los procesos supervisados y de las opciones de supervisión.

Supervisores (parte 2)

Más sobre las child-specs y las estrategias para lanzar supervisores, y cómo crear supervisores usando módulos separados.

Supervisores (parte 1)

Un supervisor es un tipo de proceso que permite controlar automáticamente el ciclo de vida de otros procesos (o GenServers) reiniciándolos automáticamente al detectar un fallo que los tumbe.

Operadores y funciones para mapas y keyword lists

Veamos qué operadores tenemos a nuestra disposición para trabajar con keyword lists. Con mapas es un poco más complicado porque no nos vale el operador ++, pero tenemos el módulo Map para hacer todo este tipo de cosas.

Procesos con nombres propios

Registrar un nombre en un proceso (o un GenServer, o un Supervisor) tiene ventajas frente a dejarlos anónimos en términos de identificarlos. Además, cómo podemos explorar en el observer información sobre procesos (como su nombre, por ejemplo).

Por duración
Por tema