В этой заметке рассматривается написание автоматических тестов на Erlang. Автотесты помогают находить не только мелкие ошибки, случайно допущенные при внесении изменений в коде, но и серьезные, сложные в обнаружении, ошибки, такие, как состояние гонки. Также тесты полезны по той причине, что чем больше ситуаций и способов использования модуля в них проверяется, тем более продуманные интерфейсы мы пишем.
Многие программы на Erlang прекрасно распараллеливаются. Если некая задача разбивается на независимые части, мы можем просто создать для каждой части отдельный процесс. Однако процессы в Erlang хоть и дешевые, но не бесплатные. Бездумно наплодив кучу процессов, можно с легкостью уронить все приложение. Давайте попробуем решить эту проблему, создав пул процессов фиксированного размера. Задания будут раздаваться этим процессам при помощи gen_server’а, хранящего очередь задач.
В заметке о двенадцати эффективных методах оптимизации программ мемоизация была названа в качестве одного из эффективных методов. Сегодня совместными усилиями мы напишем небольшую библиотеку на Erlang, которая упростит использование этой оптимизации в наших программах. Заодно мы попрактикуемся в использовании ETS.
В сей заметке рассматривается код на Scala, генерирующий электронную таблицу в формате xlsx, содержащую, помимо данных в ячейках, формулы, графики и украшательства вроде выделения текста жирным шрифтом. Как обычно, по ходу изложения объясняются особенности языка Scala, которые ранее не были рассмотрены в этом блоге.
Сегодня мы научимся строить графики, гистограммы и круговые диаграммы в Scala. В этом нам поможет замечательная библиотека Scala Chart, которая представляет собой обертку над широко известной в мире Java библиотекой JFreeChart. Также будут объяснены некоторые интересные возможности и особенности Scala, которые ранее не рассматривались в этом блоге.
Недавно мне захотелось прикрутить к блогу виджет, содержащий список самых просматриваемых заметок. Поскольку WordPress не собирает соответствующую статистику, количество просмотров предполагалось брать из LiveInternet. Обычная задача из серии «скачать и пропарсить», берем Perl и вперед. Но ведь мы уже много раз так делали, не интересно. Давайте лучше посмотрим, как справится с этой задачей Scala.
В этой заметке будет показано, как в Scala послать письмо через гугловые SMTP-сервера с помощью пакета JavaMail. Притом не какое-нибудь простое письмо, а с прикрепленным файлом, в кодировке UTF-8 и с HTML, содержащим картинки. Функциональщины как таковой не будет, зато мы увидим, как выглядит использование Java-библиотек из Scala, а также ознакомимся с той частью Scala, которая «почти как Java, только лучше».
В этой заметке мы познакомися с утилитой sbt. Мы научимся собирать с ее помощью проекты на Scala, устанавливать сторонние библиотеки, а также узнаем, как собрать jar, который будет работать на любой машине, где есть Java, без установки каких-либо зависимостей. Напоминаю, что установка sbt была рассмотрена в посте, опубликованном в этот понедельник.
Перепробовав странные и никому на практике ненужные Haskell, OCaml, Perl 6, Common Lisp, Vala, Go, а также немного D, что, впрочем, не было отражено в этом блоге, я решил обратить свое внимание на Scala. Этот язык заинтересовал меня тем, что он отдаленно напоминает OCaml, только без этих ужасных параметризованных модулей, зато с разными плюшками и под JVM, что в последнее время я не склонен считать за недостаток. К тому же, достоверно известно, что на Scala уже сегодня пишут вполне себе реальные проекты, и в их число входит далеко не один только Twitter.
Как вам хорошо известно, некоторые языки программирования, например, Erlang, поддерживают горячее обновление кода, то есть, обновление кода программы без ее остановки. Часто эта способность преподносится в качестве существенного преимущества языка программирования, который ею обладает, над языками, в которых горячего обновления кода нет. Однако чем больше я думаю о горячем обновлением кода, тем больше склоняюсь к мысли, что на практике оно никому не нужно. И вот почему.