18 апреля 2014 г.

Когда хочется многого. Erlang

14 апреля я дал себе обещание каждый день знакомиться как минимум с одним из общеизвестных алгоритмов и писать его реализацию на чем угодно. У меня есть списочек, которого должно хватить примерно на две недели неторопливого вечернего чтива и труда после основной работы. Если кому интересно, список выглядит следующим образом: Dijkstra's algorithm, Floyd-Warshall, Traveling Salesman, A*, Bloom filter, breadth-first iterative search, binary search, k-way merge, buble/selection/insertion sort. in-place quick sort, bucket/radix sort, closest pair.

В общем, пока я успешно выполняю свой «план» и готов сказать, что это очень интересное и эффективное средство для расширения кругозора и избавления от того, что я называю «мозговой стагнацией».

Но я чувствую, что у меня опять возникает ситуация, о которой я уже писал. В очередном порыве знакомства с «новым» я вновь обратил свое внимание на Erlang, а недавний пост avva о нём же подстегнул моё любопытство.
После прочтения нескольких статей и написания пары утилит, я привязался к эрланговскому pattern-matching, реализации акторов, абсолютно прозрачному message passing между процессами и другим фишкам.

Сегодня я проснулся с желанием реализовать на эрланге своё key-value хранилище. Пока концепция зарождается в моей голове и выглядит несколько туманно, но я определенно хочу видеть там следующее:
  • в качестве ключей должна быть возможность использования данных типа string, list, hash;
  • атомарные операции над значениями (конкатенация строк, добавление/удаление данных листа...);
  • возможность сортировать значения, взятые по нескольким ключам;
  • возможность задавать ключам время жизни;
  • фильтр Блума для проверки наличия ключа без обращения к диску;
  • внешний REST API;
  • возможно, веб-интерфейс.

На выходных начну делать базовый функционал.

Минутка лирики. Мне кажется, что при текущем развитии таких инструментов как AngularJS, подобного хранилища в связке с простым веб-сервером, отдающим статику, должно хватить для любого простого веб-сервиса. То есть можно обойтись полностью без бэкенда, делая запросы прямиком в API хранилища, реализуя всю логику прямо на клиенте. Наверное, где-то уже так и делают, а, может быть, это просто мои фантазии.

P.S. Как оказалось, вести дневник итогов каждый месяц мне очень сложно. Я не вел его аж с ноября. Очень многое произошло за это время. Из основного сообщу, что я теперь счастливый муж: мы с Ю. сыграли свадьбу, а на «медовый месяц» улетели в Израиль :)

Комментариев нет:

Отправить комментарий