Дело было вечером, делать было нечего, и я пошел гулять по интернетам в поисках существующих встраиваемых (embedded) баз данных для Erlang. Вот, скажем, есть у нас приложенька, которая работает с небольшими (десяток-другой гигабайт) объемами не саммых ценных в системе данных. Ну не поднимать же Riak кластер только ради этой приложеньки и не таскать же за ней повсюду PostgreSQL? В общем, посмотрел я на существующие решения (DETS, Mnesia, Bitcask, LevelDB, SQLite, Innostore, HanoiDB) и пошел классно писать очередной ненужный KV-велосипед.

Время от времени я заглядываю на Toster.ru и иногда даже отвечаю там на вопросы. Чаще всего люди спрашивают две вещи — как стать программистом и как правильно спроектировать схему базы данных. Мне лично кажется очень странным, что так много людей задают последний вопрос. Мне почему-то всегда казалось, что это такая простая вещь, которую умеют вообще все. Но, раз так много людей интересуются, здесь я постараюсь дать достаточно развернутый и в то же время краткий ответ.

Примем за рабочую теорию, что мы здесь все взрослые и осознаем важность использования менеджера пакетов. Есть много способов упаковать приложение, написанное на Erlang, в deb, rpm или еще какого формата пакет. Здесь я опишу один из множества таких способов, основанный на использовании утилиты FPM.

Темы четвертого выпуска: история того, как, и главное — почему, Сергей перешел с Java на Erlang, что делать в случае, если ведущие EaxCast не хотят объяснять Paxos, саморазвитие в программировании, а также о том, что не все конференции одинаково полезны. Предыдущие выпуски: третий, второй, первый.

Предыстория. Некоторое время назад в комментариях к заметке Работа с нитями/потоками в Haskell Роман совершенно справедливо заметил, что задачу перебора хэшей было бы куда правильнее решать, используя, например, пакет parallel. Перебор хэшей был выбран мной, как универсальная задача, с помощью которой можно продемонстрировать работу и с MVars, и с транзакционной памятью, и с монадами Par/Eval. Чтобы не приходилось придумывать новую задачу для каждого нового поста.

В этом выпуске: сетевое программирование на Idris, Haskell на Xen, подборка правильных подкастов о программировании на английском языке, и не только. Предыдущие выпуски: январь 2014, декабрь 2013, ноябрь 2013, октябрь 2013.

Этот выпуск мини змаеток полностью посвящается замечательному языку программирования Haskell. Сегодня мы узнаем, что в ghci можно просматривать документацию, что в Haskell есть глобальные переменные и интерполяция строк, а также о других интересных вещах. Предыдущие выпуски: шестнадцатый, пятнадцатый, четырнадцатый, тринадцатый.

Темы третьего выпуска: где используется Erlang, о профессиональной этике, Riak, почему все неправильно понимают CAP-теорему, а также о движении NewSQL и базах данных ActorDB, VoltDB, Spanner, Scalaris, Hibari, RethinkDB, FoundationDB, InfiniSQL и Calvin. Предыдущие выпуски: второй, первый.

Ранее мы выяснили, как на Haskell работать с базами данных, писать REST API, генерировать и читать JSON-стримы, работать с конфигами и писать логи. Для полного счастья осталось разве что научится ходить в Graphite. После этого можно спокойно протаскивать Haskell в продакшн, пописывая на нем небольшие RESTful сервисы. Так чего же мы ждем?

Чем больше метрик вы пишите, тем лучше. Метрики помогают найти в программе места, нуждающиеся в оптимизации. По метрикам вы можете понять, что именно послужило причиной сбоя в ночь с субботы на воскресенье. Если в очередном билде имеется баг, который не удалось найти в тестовом окружении, вы сразу же узнаете об этом во время выкатки. Одним из наиболее распространенных решений для сбора метрик является Graphite.