Итак, мы с вами полны решимости сломать какую-нибудь капчу. С одной стороны, капча не должна быть слишком простой или уже кем-то сломанной, потому что так не интересно. С другой, выбрав слишком сложную капчу можно потратить кучу времени на ее взлом и не добиться никакого результата. Также желательно, чтобы капча использовалась на каком-нибудь более-менее известном сайте, чтобы наш опыт имел хоть какое-то подобие практической значимости.

У каждого из нас, само собой разумеется, есть богатейший опыт распознавания капч. Капчи бывают разные — всевозможные логические («кликните на синий кружочек», «на каких картинках изображены котята?» и так далее), звуковые, есть даже капчи, предлагающие выбрать самую красивую фотографию. Но самыми распространенными на сегодняшний день остаются капчи с искаженным изображением букв и/или цифр. На этой неделе мы узнаем, как написать программу (понятное дело, на Haskell), автоматически распознающую одну из таких капч, притом не самую заурядную.

В общем, начитавшись Хайкина, у меня стали чесаться лапки поделать что-нить интересненькое с нейронными сетями. Писать, понятное дело, при этом я собирался на Haskell. Беглый поиск по Hackage выявил наличие множества библиотек для работы с нейронными сетями, из которых instinct и HaskellNN не только неплохо выглядели, но и устанавливались. Однако у этих библиотек есть большой недостаток (помимо фатального), заключающийся в том, что они не способны использовать всю мощь современных многоядерных процессоров за счет параллелизма. Что было дальше, вы уже и сами поняли :)

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

В этом выпуске: обучение нейронных сетей при помощи генетических алгоритмов, всякая распределенщина на языке Go, как написать морской бой на Haskell и развернуть Erlang-приложение в Heroku, как правильно работать с временными рядами, и не только. Предыдущие выпуски: март 2014, февраль 2014, январь 2014, декабрь 2013.

Как некоторым из вас может быть известно, я имею кое-какой опыт записи подкастов. В частности, недавно мы коллегами закончили записывать первый сезон EaxCast и после майских праздников планируем начать записывать второй. В этой же заметке я хочу поделиться своим скромным опытом в этом, как оказалось, довольно нелегком деле, на случай если кому-то из читателей это интересно.

Мы с вами уже перестали бояться монад, но всякие непонятные стрелочки в коде типа <>, <$>, <*> и <|> по-прежнему повергают нас в ужас. Сегодня мы выясним, что и здесь бояться особо нечего. Как и в случае с монадами, здесь имеют место быть обыкновенные классы типов и функции для работы с ними. Все просто.

Есть два взгляда на распределенные отказоустойчивые системы — теоретический и практический. В то время, как теоретики (a.k.a distributed systems nerds) пиарят так называемые NewSQL базы данных, рассуждают о Paxos и векторных часах, большинство практикующих программистов относятся к подобным решениям с некоторым скепсисом. Ведь инженерия — это штука про компромиссы. У любого решения всегда есть плюсы и минусы, не исключая NewSQL. Так или иначе, в реальных системах, как правило, все еще используется PostgreSQL и другие традиционные реляционные СУБД.

Темы седьмого выпуска: Erlang R17, GHC 7.8.1, MongoDB 2.6, все о модели акторов, транзакционной памяти и девушках в белорусском геймдеве, зачем Валера заставил себя пощупать Scala с Rx и почему он осуждает Akka, как учить Java в третьем тысячелетии, битва не на жизнь, а на смерть между Akka и Erlang, и не только. Предыдущие выпуски: шестой, пятый, четвертый, третий.

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