Что-то я решил молодость вспомнить. Перед тем, как меня понесло в сторону Perl, юниксов и всякой функциональщины, я долгое время игрался с сями, ассемблером и WinAPI. Сейчас все это начинает потихоньку забываться, а жаль, потому что, как мы уже выясняли, знать всякие низкоуровневые вещи полезно.

В этом выпуске: почему теория категорий бесполезна, запуск OpenBSD с флешки, миграция схем БД в Erlang, переписанный на Haskell текстовый редактор Vim, уникальный формат данных, в бесконечное количество раз быстрее Protobuf, и не только. Предыдущие выпуски: сентябрь 2013, август 2013, июль 2013, июнь 2013.

Один из наиболее запутанных вопросов при изучении Haskell — это обработка исключений. Многие учебники, в том числе LYH, повествуют об исключениях, описанных в стандарте Haskell 98, создавая тем самым ошибочное впечатление, что в Haskell нельзя объявлять собственные исключения. А в RWH, например, в качестве «современных» функций для работы с исключениями называются throwDyn, catchDyn и прочие. В результате многие хаскелисты не понимают и боятся исключений, а асинхронные исключения так и вовсе считают какой-то черной магией. Благодаря этой небольшой заметке вы узнаете, как же на самом деле в Haskell обрабатываются исключения.

В прошлой части мы познакомились с теорией, касающейся устройства Riak. Сегодня же придется запачкать руки — установить и настроить Riak под Ubuntu Linux, а также познакомиться с REST API этой СУБД.

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

Настало время разобраться, что представляет собой Riak, как установить и настроить его в Ubuntu Linux, а также узнать, как использовать некоторые его возможности через REST API. Эта памятка не заменит вам чтения книг по Riak, но поможет составить общее впечатление об этой СУБД.

В этом выпуске: как в Ubuntu установить Oracle JDK, что делать, если в Erlang возникает ошибка emfile, как собрать PDF с помощью ImageMagick, и не только. Предыдущие выпуски мини заметок: четырнадцатый, тринадцатый, двенадцатый, одиннадцатый.

В последнее время все больше людей выбирают языки программирования с динамической типизацией. Сторонники динамической типизации утверждают, что на изучение Erlang’а требуется две недели, после чего можно сразу начать писать боевой код. Что все равно интернеты динамически типизированы, что ошибки типизации быстро находятся и легко устраняются, а настоящую проблему представляют сложные логические ошибки, где статическая типизация все равно не помогла бы. Что статическая типизация — это медленно и скучно, а на Clojure можно легко написать свой Mortal Kombat за два вечера. Давайте же выясним, почему на самом деле вы не должны хотеть динамической типизации.

MessagePack — это формат, напоминающий JSON, только более быстрый и более компактный. Например, {"a":1,"b":2} занимает 13 байт в JSON, 19 байт в BSON и всего лишь 7 байт в MessagePack. MessagePack RPC представляет собой протокол удаленного вызова процедур, основанный на MessagePack. Полная реализация MessagePack RPC предоставляет синхронный и асинхронный обмен сообщениями по TCP, UDP или через Unix-сокеты. Давайте выясним, как работать со всем этим хозяйством в Haskell.

В минувшую субботу «Запискам программиста» исполнилось четыре года. По уже сложившейся традиции, в честь этого события я вкратце расскажу, какие изменения претерпел блог за прошедший год, и сделаю несколько скриншотов на память.