Если hslogger — это такая навороченная штуковина с уровнями логирования, какими-то деревьями, форматерами, хендлерами и syslog’ом, то пакет fast-logger предназначен для очень простого, но эффективного логирования в файлики. Эффективного, потому что fast-logger скейлится на многоядерных системах за счет создания отдельных буферов на каждое ядро процессора. Лог-записи попадают в различные буферы в зависимости от id нитки, делающей запись. При заполнении буфер сбрасывается на диск. Принцип такой же, как при шардинге — данные разделяются, нитки меньше мешают друг другу.

Темы двенадцатого выпуска: все, что вы хотели знать о Clojure и ClojureScript, но боялись спросить, с чего начать изучение Clojure, кто истинный наследник языка Lisp — Clojure или Haskell, что такое гомоиконность, как по скорости дожать Clojure до уровня Java, реактивное программирование и React, отличия виртуальной машины Erlang-а от JVM, а также какие чудеса позволяют творить макросы в Clojure. Предыдущие выпуски: одиннадцатый, десятый, девятый, восьмой.

Помните, как около года назад мы учились работать с базами данных в Haskell при помощи пакета HDBC, а также его форка HDBI, который от HDBC почти ничем не отличается? Тогда я отмечал, что вместо HDBC некоторые предпочитают использовать пакет postgresql-simple. Давайте попробуем разобраться, что это за пакет такой и почему он интереснее, чем HDBC. А также заодно познакомимся с пакетом postgresql-simple-migration.

На днях я дочитал очередной десяток книг, поэтому спешу поделиться с вами краткими рецензиями на них. В этот раз будет много рецензий на книги, как-то связанные с Java и JVM. Почему я вдруг так заинтересовался этой платформой, можно прочитать в заметке Быстрая настройка окружения для программирования на Java (теми, кто недолюбливает этот язык, но иногда вынужден иметь с ним дело). С другими моими рецензиями можно ознакомиться здесь: седьмой десяток, шестой десяток, пятый десяток, четвертый десяток.

Считается, что код, один раз написанный на Java, безо всяких проблем одинаково хорошо работает на любой платформе, под которую есть виртуальная машина. В первом приближении, если не использовать всякие там JNI, это действительно так. Но вот я, можно сказать, лишь недавно начал играться с языком, а уже успел столкнуться с ситуацией, когда на самом деле это нефига не так.