¿Cuáles son algunos proyectos interesantes para resolver en Erlang con fines de aprendizaje? [cerrado]


Recientemente descubrí Erlang y ahora estoy trabajando mi camino a través de un par de tutoriales. Ahora estoy deseando implementar algo como un proyecto de hobby. No estoy realmente interesado en otro servidor de chat. Me gustaría codificar algo más interesante (sí, soy consciente de que este es un término bastante difuso) que también sea manejable, para que pueda terminarlo en mi tiempo libre.

Alguna sugerencia?

Editar: El proyecto debería resaltar preferentemente las fortalezas de Erlang (concurrencia, distribuida).

Author: BIBD, 2008-12-20

7 answers

Para algo para usted, considere escribir un servidor simple; algo que, por ejemplo, atienda solicitudes de fecha/hora o -- un poco más elegante an un demonio HTTP que solo sirve contenido estático.

La mejor parte de Erlang es la forma en que maneja la concurrencia; ejercita eso.

 14
Author: Charlie Martin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-01-04 06:54:05
  1. Construya un sistema distribuido que busque feeds de Twitter en tiempo real y permita a cualquier persona realizar búsquedas desde un front-end web.

  2. Construir un sistema de archivos distribuido. Implementar árboles B * distribuidos o Árboles B+como base de este sistema de archivos. Hazlo en Erlang.

  3. Cree un almacén de valores de clave distribuida sobre el sistema de archivos distribuido integrado en el paso 2.

  4. Construir un índice web distribuido (para ser utilizado por un motor de búsqueda web distribuido) en la parte superior del almacén de valores clave.

  5. Construye un enlazador distribuido. Advanced build automation ofrece procesamiento de agente remoto para compilaciones distribuidas y/o procesamiento distribuido.

  6. Construir un backend MMORPG que se basa en el almacenamiento distribuido del estado del juego / jugador y el procesamiento distribuido de las solicitudes de los usuarios.

 19
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-06-01 16:16:44
 10
Author: David Grant,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-12-20 15:58:13

Algunas cosas de mi copiosa lista de tareas que serían buenos ejercicios de aprendizaje y útiles para la comunidad de erlang en general:

  • Perfile todos los almacenes de Clave/Valor disponibles:

    • Escribir una biblioteca para probar insertar, buscar, eliminar, buscar tiempos para una variedad de tiendas K/V
    • Crear una suite de benchmark que la gente puede ejecutar
    • Haz que funcione con ets, dets, proplists, gb_trees, dict, orddict, redblack trees, bdb, tokyocabinet, ...
    • Producir gráficos bonitos
    • Facilita la actualización, la contribución y la ejecución en el equipo de cualquier persona
  • Escriba una nueva rutina io_lib: format que use parámetros con nombre:

    • io_lib: nformat ("Hi there ~{name}s~n.", [{name, "Bob"}]).
    • Esto es útil para la internacionalización si la posición de los parámetros cambia cuando cambia el idioma de la cadena de formato.
  • Extend erl-make (make.erl)

    • Permitir agregar rutas de código (de modo que no es necesario hacer erl-pa LibraryPath-make)
    • Compilar / cargar los módulos de comportamiento antes que los módulos que implementan esos comportamientos
    • Manejar correctamente los módulos jerárquicos (ruta de salida en particular)
 10
Author: archaelus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-12-20 16:24:04

Esto no responde exactamente a tu pregunta, pero si estás buscando un interesante proyecto gratuito de código abierto que esté escrito en Erlang, definitivamente deberías revisar CouchDB. Desde el sitio web:

Apache CouchDB es un sistema, tolerante a fallos y libre de esquemas base de datos orientada a documentos accesible a través de una API HTTP/JSON RESTful. Entre otras características, proporciona robusto, replicación incremental con detección de conflictos bidireccional y resolución, y es queryable y indexable usando una vista orientada a tablas motor con JavaScript actuando como el lenguaje de definición de vista predeterminado.

CouchDB está escrito en Erlang, pero puede se puede acceder fácilmente desde cualquier medio ambiente que proporciona medios para realizar solicitudes HTTP. Hay un multitud de clientes de terceros bibliotecas que hacen esto aún más fácil para una variedad de lenguajes de programación y entornos.

El sitio web de CouchDB tiene más detalles. Feliz la codificación!

 7
Author: William Brendel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-12-20 15:31:25

Encuentra algo que Erlang no tenga que entiendas y te guste. Lo hice con etap https://github.com/ngerakines/etap / Ahora nick se ha hecho cargo de la gestión y se usa internamente en EA games. Fue divertido de hacer y como un póster anterior era algo real, así que aprendí a servir a los problemas del mundo real trabajando en él.

 4
Author: Jeremy Wall,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-01-03 21:31:15

Sistema de indexación/búsqueda de archivos. Esto iba a por proyecto de introducción, pero he cambiado a otra cosa.

Una vez que lo tengas funcionando podrías mover los índices a mnesia, y luego extender la cosa a otros nodos a tener un índice de red completo.

 3
Author: John Bender,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-12-22 17:11:28