Примем за рабочую теорию, что мы здесь все взрослые и осознаем важность использования менеджера пакетов. Есть много способов упаковать приложение, написанное на 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.

Суровая действительность такова, что, начиная с какого-то момента, программист не может так просто взять и покинуть некогда выбранную им нишу. Дело тут не в том, что веб-разработчика ни за что не возьмут в геймдев. Взять-то возьмут, но, за неимением соответсвующего опыта, платить будут ощутимо меньше. Даже разница в 10к рублей — это не так уж и мало, если умножить на 12 месяцев. И вот, бедный программист вынужден всю жизнь заниматься примерно одними и теми же задачами. Не удивительно, что рано или поздно к нему в гости приходят тоска и безысходность, типа «я занимаюсь всякой рутиной, а настоящие пацаны где-то пишут игровые движки и ПО для управления шаттлами».

Помните, мы когда-то писали телефонную книгу на Haskell и прикручивали к ней веб-интерфейс? У этой телефонной книги есть существенный недостаток. Дело в том, что соединение с базой данных устанавливается только один раз, при запуске приложения. Если во время работы программы соединение порвется, для его восстановления телефонную книгу придется перезапустить. Кроме того, наличие всего лишь одного соединения делает параллельную обработку нескольких запросов в лучшем случае невозможным, а в худшем — чреватой ошибками. Сегодня мы этот ужасный недостаток устраним!