В прошлой части мы познакомились с теорией, касающейся устройства Riak. Сегодня же придется запачкать руки — установить и настроить Riak под Ubuntu Linux, а также познакомиться с REST API этой СУБД.
Настало время разобраться, что представляет собой Riak, как установить и настроить его в Ubuntu Linux, а также узнать, как использовать некоторые его возможности через REST API. Эта памятка не заменит вам чтения книг по Riak, но поможет составить общее впечатление об этой СУБД.
Возможность Erlang'а производить прозрачный обмен сообщениями между процессами, работающими на разных физических машинах, бесспорно, является интересной и порой весьма практичной. Но не факт, что эту возможность следует использовать именно в вашем проекте. Хотя далее по тексту речь будет идти об Erlang, многое из написанного также относится и к распределенным акторам в Akka или Cloud Haskell.
Взаимодействие процессов в Erlang происходит путем обмена сообщений. И хотя сообщения в Erlang дешевы, они не бесплатны. Бездумная посылка сообщений неправо и налево может привести не только к существенному замедлению работы всего приложения, но и к его аварийному завершению.
В заметке Генерация почти осмысленных текстов на Haskell (опубликованной полтора года назад… как быстро летит время!) был упомянут подход к генерации статей, заключающийся в написании обзоров цифровой техники на основе их характеристик. Недавно у меня дошли руки до реализации этой идеи, правда, на Erlang, а не на Haskell.
Помните, как я пытался доказать, что горячее обновление кода — бесполезная штука и что не нужно им пользоваться? Как выяснилось, я был не вполне прав. Есть по крайней мере три случая, в которых горячее обновление кода может быть довольно удобным.
Принял участие в недавнем конкурсе по функциональному программированию и занял в нем первое место. В этой заметке вы найдете описание задачи, которую требовалось решить в рамках конкурса, а также мое решение этой задачи на языке программирования Erlang.
В этой заметке рассматривается написание автоматических тестов на Erlang. Автотесты помогают находить не только мелкие ошибки, случайно допущенные при внесении изменений в коде, но и серьезные, сложные в обнаружении, ошибки, такие, как состояние гонки. Также тесты полезны по той причине, что чем больше ситуаций и способов использования модуля в них проверяется, тем более продуманные интерфейсы мы пишем.
Многие программы на Erlang прекрасно распараллеливаются. Если некая задача разбивается на независимые части, мы можем просто создать для каждой части отдельный процесс. Однако процессы в Erlang хоть и дешевые, но не бесплатные. Бездумно наплодив кучу процессов, можно с легкостью уронить все приложение. Давайте попробуем решить эту проблему, создав пул процессов фиксированного размера. Задания будут раздаваться этим процессам при помощи gen_server’а, хранящего очередь задач.
В заметке о двенадцати эффективных методах оптимизации программ мемоизация была названа в качестве одного из эффективных методов. Сегодня совместными усилиями мы напишем небольшую библиотеку на Erlang, которая упростит использование этой оптимизации в наших программах. Заодно мы попрактикуемся в использовании ETS.