software2

Lo pequeño es Hermoso—La Biblioteca de Componentes de

Hace ya un tiempo que he estado haciendo mi
Cassandrasuplantación,
diciendo a todos los que te escuchen (y un par de personas que no) que nos
necesidad de escribir código en fragmentos más pequeños. Yo sé lo que pasa cuando se
no, como yo era el autor de uno de los mayores principios de los Rieles
aplicaciones (65kloc), y se convirtió en una pesadilla para trabajar con.

No quiero que lo mismo suceda en el Elixir mundo. Pero si me he
aprendido una cosa, es que usted no puede decirle a la gente que algo es un
buena idea y esperar a hacerlo.

No, tienes que hacer que sea más fácil hacer las cosas de la manera correcta.

Así que, estoy publicando una primera versión de mi Elixir Componente
biblioteca
.

Esta biblioteca facilita la tarea de escribir código como servidores (global, dinámico,
mancomunados, y el hambre de los consumidores), y hace que sea trivial para el paquete de estos
servidores como autónomo Elixir de aplicaciones (para que puedan ser utilizados como
dependencias en otras aplicaciones).

Por ejemplo, aquí es un trivial valor de clave de almacén, escrito como un simple
(no servidores) módulo:

defmodule KV hacer def create() ¿ %{} final def add_entry(tienda, k, v) hacer Mapa.poner(tienda, k, v) final def get_entry(tienda, k) Mapa.obtener(tienda, k) final
final

Llamada así:

iex> kv = KV.crear
iex> KV.add_entry(kv :nombre, "dave")
iex> KV.add_entry(kv :el lenguaje, el "elixir")
iex> KV.get_entry(kv :nombre) # => "dave"

Vamos a utilizar el componente de marco para que esto se vuelva independiente
los componentes que se pueden agregar a cualquier aplicación, como una dependencia:

defmodule KV hacer el uso de Componentes.De la estrategia.Dinámico, state_name: tienda, initial_state: %{}, top_level: verdadero def add_entry(tienda, k, v) hacer Mapa.poner(tienda, k, v) final def get_entry(tienda, k) Mapa.obtener(tienda, k) final
final

Luego de la actualización de la mezcla.exs para hacer KV de nivel superior de la aplicación:

def aplicación ¿ [ mod: { KV, [] }, .  .  . ]
final

Y ejecutarlo desde iex:

$ iex -S mix
iex> kv = KV.crear
iex> KV.add_entry(kv :nombre, "dave")
iex> KV.add_entry(kv :el lenguaje, el "elixir")
iex> KV.get_entry(kv :nombre) # => "dave"

Se ejecuta como una observación en la aplicación con una dinámica supervisor de la gestión de
el individuo servidor de procesos.

De todos modos, la filosofía de todo esto no es para guardar en la escritura. En lugar de la
la intención es empujar a las personas en la escritura de sus programas mediante el uso de un montón de
pequeño, componentes independientes, vinculados a través de las dependencias. Eso es lo que he hecho
sido de codificación durante el último año o así, y hasta ahora estoy muy, muy
que le gustaba.

Echa un vistazo Componente en github

Software almacen de Cea Ordenadores

Comentarios desactivados en Lo pequeño es Hermoso—La Biblioteca de Componentes de