Elixir
Elixir es un lenguaje de programación funcional y concurrente basado en Erlang, que corre sobre la plataforma BEAM.
Elixir permite fabricar aplicaciones concurrentes de altas prestaciones, con la posibilidad de correr en simultáneo miles de hilos si es necesario, gracias a su potente máquina virtual y a sus capacidades de cluster. Elixir, y sobre todo Erlang, se encuentran en lugares muy curiosos, como redes de telecomunicaciones o plataformas de mensajería instantánea como WhatsApp.
Sin embargo, uno de los grandes puntos actualmente de Elixir es la creación de aplicaciones web de alta resiliencia gracias a frameworks como Phoenix. No es ni de lejos el único framework para servir tráfico HTTP en Elixir, pero se ha convertido en el principal, por agrupar todo lo que hace falta para construir una aplicación web, desde el acceso a base de datos, hasta las vistas JSON o HTML que necesitas para crear tu aplicación fullstack o API.
-
Lección 📈 En tendenciaFunciones anónimas
Una función anónima es una función aislada que en vez de ser declarada de manera formal (por ejemplo, dentro de un módulo), se declara como una expresión más que podría ser asignada a variables. -
Lección 📈 En tendencia¿Cómo hacer rutas dinámicas en Phoenix y Plug?
Cuando se declaran las rutas en un router de Plug o de Phoenix es posible indicar rutas dinámicas si se utilizan símbolos como el dos puntos o el asterisco. Por ejemplo, /users/:id o /file/*path. En este tutorial exploramos el funcionamiento de este tipo de parámetros de ruta, vemos cómo capturarlos... -
Lección 📈 En tendenciaMicroservicios en Elixir con Plug
Plug es una biblioteca que usada junto a un servidor web como Cowboy o Bandit permite crear cómodamente aplicaciones web mediante un pequeño lenguaje declarativo, sin necesidad de instalar todo un framework como Phoenix, algo que puede ser útil en el mundo de los microservicios. Veamos cómo agregar Plug a... -
Lección 📈 En tendenciaEstrategias para crear un Supervisor
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. -
Lección 📈 En tendenciaCómo crear un Supervisor Tree
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. -
Lección 📈 En tendenciaCómo enviar mensajes con un GenServer
Siguiendo en el tour de los GenServer, las funciones más importantes de un GenServer son, sobre todo, handle_call; y también, handle_cast. Usaremos handle_call para gestionar llamadas síncronas por parte de los clientes que se conecten a nuestro servidor; y handle_cast para las llamadas asíncronas. 00:00 impl handle_call 06:05 GenServer.call 08:53... -
Lección 📈 En tendenciaCómo pasar mensajes entre procesos
Con las primitivas send y receive podemos hacer que dos procesos se intercambien información, que es el método de comunicación por defecto en Elixir, teniendo procesos aislados que se comunican mediante un sistema de bandejas de entrada bajo un modelo de actores. -
Lección 📈 En tendenciaDependencias
Normalmente en Elixir el código que escribimos no vive aislado, sino que es habitual utilizar funciones escritas en otros proyectos con los que nos conectamos, para reutilizar módulos y no programar lo mismo dos veces. hex.pm es el gestor de paquetes primario de Elixir para estos fines y en este... -
Lección 📈 En tendenciamix
Mix es una herramienta que forma parte de Elixir que sirve para gestionar un proyecto, manteniendo múltiples archivos .ex con los distintos módulos que forman nuestro programa. También nos permiten compilar aplicaciones para distribuirlas, instalar nuevas dependencias, y mantener una suite de tests para comprobar el estado de nuestro proyecto. -
Lección 📈 En tendenciaRangos y Streams
A diferencia de Enum.map y Enum.filter, con Stream.map y Stream.filter podemos obtener Streams. Un Stream en Elixir permite hacer procesamiento pospuesto: Elixir sabe que quiero procesar una colección con una función, pero no ejecuta el cómputo hasta que no haga falta, algo que en algunas ocasiones es ventajoso para hacer...