Подтвердить что ты не робот

Какие интересные проекты нужно решать в Эрланге для обучения?

Недавно я обнаружил Erlang, и теперь я проработал пару учебных пособий. К настоящему моменту я с нетерпением жду возможности реализовать что-то в качестве хобби. Меня не интересует еще один чат-сервер. Я хотел бы закодировать что-то более интересное (да, я знаю, что это довольно нечеткий термин), который также управляем, поэтому я могу закончить его в свое свободное время.

Любые предложения?

Изменить: проект должен предпочтительно выделять силы Erlang (concurrency, распределенные).

4b9b3361

Ответ 1

Что-то для себя, подумайте о написании простого сервера; то, что, например, запросы на дату/время службы или - немного странный - демон HTTP, который обслуживает только статический контент.

Лучшая часть Erlang - это способ обработки concurrency; воспользуйтесь этим.

Ответ 2

  • Создайте распределенную систему, которая ищет твиттер-каналы в реальном времени и позволяет любому пользователю выполнять поиск с веб-интерфейса.

  • Создайте распределенную файловую систему. Внедрение распределенных B * Trees или B + Trees в качестве основы этой файловой системы. Сделайте это в erlang.

  • Создайте хранилище с распределенным ключом поверх распределенной файловой системы, построенной на шаге 2.

  • Создайте распределенный веб-индекс (который будет использоваться распределенной системой веб-поиска) поверх хранилища значений ключей.

  • Создайте распределенный компоновщик. Расширенная автоматизация построения обеспечивает обработку удаленного агента для распределенных сборок и/или распределенной обработки.

  • Создайте бэкэнд MMORPG, который использует распределенное хранилище состояния игры/игрока и распределенную обработку пользовательских запросов.

Ответ 4

Некоторые вещи из моего обильного списка ToDo, которые будут хорошими учебными упражнениями и полезными для сообщества erlang в целом:

  • Профиль всех доступных хранилищ Key/Value:

    • Напишите библиотеку для тестирования вставки, поиска, удаления, поиска для различных магазинов K/V.
    • Создайте набор тестов, в котором люди могут запускать
    • Заставьте его работать с ets, dets, proplists, gb_trees, dict, orddict, redblack trees, bdb, tokyocabinet,...
    • Произведите красивые графики
    • Легко обновлять, вносить вклад и запускать на любом компьютере.
  • напишите новую процедуру io_lib: format, которая использует именованные параметры:

    • io_lib: nformat ( "Привет там ~ {name} s ~ n.", [{name, "Bob" }]).
    • Это полезно для интернационализации, если положение параметров изменяется при изменении языка строки формата.
  • Расширить erl -make (make.erl)

    • Разрешить добавление путей кода (так что вам не нужно делать erl -pa LibraryPath -make)
    • Компилировать/загружать модули поведения перед модулями, реализующими эти поведения
    • Правильно обрабатывайте иерархические модули (в частности, путь вывода)

Ответ 5

Это точно не отвечает на ваш вопрос, но если вы ищете интересный бесплатный проект с открытым исходным кодом, написанный в Erlang, вы обязательно должны проверить CouchDB. На веб-сайте:

Apache CouchDB является распределенным, отказоустойчивость и отсутствие схемы доступная доступная для документов база данных через API RESTful HTTP/JSON. среди другие функции, он обеспечивает надежную, инкрементная репликация с двунаправленное обнаружение конфликтов и разрешение, а также является индексируемый с использованием табличного представления с JavaScript, действующим в качестве язык определения вида по умолчанию.

CouchDB написан в Erlang, но может легко получить доступ к любым окружающей среды, которая делать запросы HTTP. Есть множество сторонних клиентов библиотеки, которые делают это еще проще для различных языков программирования и среды.

Сайт CouchDB содержит более подробную информацию. Счастливое кодирование!

Ответ 6

найти что-то, что erlang не имеет, что вы понимаете и любите. Я сделал это с etap https://github.com/ngerakines/etap/ Теперь ник взял на себя управление и использовал его внутри игры EA. Было весело делать и, как предыдущий плакат, было чем-то реальным, поэтому я научился обслуживать реальные проблемы, работающие над ним.

Ответ 7

Система индексирования/поиска файлов. Это было сделано в интро-проекте, но я переключился на что-то еще.

После того, как вы его заработаете, вы можете перенести индексы в mnesia, а затем распространить эту вещь на другие узлы, чтобы иметь целый сетевой индекс.