Одиннадцатый десяток прочитанных книг и журналов

20 мая 2015

Успешно ассимилировал очередную пачку литературы. В этот раз мой выбор пал на подозрительно большое количество книг о всяких там Cassandra, Kafka и прочих Couchbase’ах, а также парочку книг о современном С++. Другие мои рецензии на прочитанные книги вы найдете здесь: десятый десяток, девятый десяток, восьмой десяток, седьмой десяток.

Cassandra Design PatternsCassandra Design Patterns
Sanjay Sharma

Относительно свежая (январь 2014) книжка по Cassandra, а точнее — способах ее использования. Всего в книге перечислено 15 паттернов использования Cassandra, например, materialized view, graph problems, search engine и time series analytics, один анти-паттерн messaging queue, а также множество мелких замечаний о том, что нужно и что не нужно делать при работе с этой СУБД. Для каждого паттерна приводится описание проблемы, почему традиционные РСУБД плохо подходят или не подходят вовсе для решения этой проблемы, и как здесь может помочь Cassandra. Книга очень структурированная, все просто и по делу, кода нет. Категорически рекомендовано к прочтению всеми, кто интересуется NoSQL и Cassandra в частности.

Getting Started with Google GuavaGetting Started with Google Guava
Bill Bejeck

Guava — это Java-библиотека, которая включает в себя мелкие удобняшки для работы с файлами и строками, а также функциональное программирование, различные коллекции, в том числе неизменяемые, ряд примитивов для многопоточных приложений, включая собственные футуры, напоминающие футуры в Scala, навороченные кэши с оптимизациями для многопоточных приложений, временем жизни значений и так далее. Из интересного также можно отметить тип Optional, реализацию фильтра блума, MurmurHash, а также EventBus.

ФП, неизменяемые коллекции и футуры в Guava конечно же оказались дико убоги по сравнению со ними же в Scala. Не удивительно, что многие программисты на Java пренебрежительно относятся к ФП, если они его так представляют. Хотя то, что дает Guava, все же лучше, чем совсем ничего.

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

Building MicroservicesBuilding Microservices
Sam Newman

Эта книга почему-то активно пиарилась в блоге Nginx.

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

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

Getting Started with Couchbase ServerGetting Started with Couchbase Server
MC Brown

Хотелось составить общее впечатление о Couchbase, а тут под руку попалась совсем небольшая книжка на эту тему. Как оказалось, это действительно хорошее введение в Couchbase (не путать с CouchDB!). Couchbase представляет собой распределенное KV-хранилище, делающее особый акцент на скорости. Скорость эта достигается путем помещения «горячих» данных в память. У значений может быть время жизни. Есть умные клиенты для Си, Java и других языков. Также есть совместимый с протоколом Memcached интерфейс. В этом случае клиенты должны работать через специальную проксю под названием Moxi.

Админка у Couchbase, судя по скриншотам, просто великолепная. Есть список серверов и их состояние, онлайн или не онлайн, какие бакеты сколько памяти из отведенной квоты используют, как там поживают их реплики, управление всем этих хозяйством и так далее. Только из-за нее так и хочется поставить Coucbase и поскорее с ним поиграться!

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

Learning Apache Kafka, 2nd EditionLearning Apache Kafka, 2nd Edition
Nishant Garg

Неплохая вводная книжка по Kafka, рассказывающая про установку Kafka, работу с ней из Java, а также интеграцию Kafka со Storm и Hadoop. К сожалению, как показывает опыт, с системами вроде Kafka по одним только книжкам не разобраться, нужно устанавливать, настраивать, разбирать поведение в граничных случаях и пытаться понять, о каких косяках авторы книг и документации решили тактично умолчать.

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

Testing in ScalaTesting in Scala
Daniel Hinojosa

Небольшая и на удивление приятная книжка, которая мне лично помогла систематизировать обрывки знаний об SBT (с этими вашими IDE все быстро забывается) и написании тестов в Scala. В книге речь идет о ScalaTest, в котором можно писать тесты очень разными способами, подключая тот или иной eDSL по вкусу, Specs2, в котором тесты выполняются параллельно (сомнительная идея, поскольку тесты могут конфликтовать друг с другом, что приведет к большим трудностям), а также EasyMock, Mockito, ScalaMock и ScalaCheck.

В общем и целом книга понравилась. Скалолазам очень советую ознакомиться, даже если вам кажется, что вы уже и так все знаете об SBT и тестировании в мире Scala.

Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14
Scott Meyers

К прочтению этой книги меня подтолкнуло желание разобраться, что же там такое интересное появилось в последних стандартах языка С++. Особенно большое впечатление произвели constexpr и rvalue references. Первые — это упрощенное метапрограммирование, позволяющее вычислять значения, возвращаемые функциями, на этапе компиляции. Как сишные макросы, только с типами и повторным использованием на этапе выполнения. Вторые в ряде случаев позволяют избежать ненужных копирований объектов.

Надо признать, местами книга довольно сложна для восприятия. Предварительно советую прочитать какой-нибудь свежий учебник по С++, охватывающий возможности C++11 и C++14. И название на самом деле немного врет. Было бы правильнее назвать книгу «Пятьдесят новых тонких моментов в C++11/14». То есть, это не столько обзор новых возможностей языка, сколько объяснение поведения этих возможностей в ряде граничных случаев. Что, безусловно, всем, кто пишет на C++, нужно иметь в виду. Вообще, у Майерса все книги хороши.

24 Days of Rust24 Days of Rust
Zbigniew Siciarz

Это на самом деле никакая не книга, а серия постов в блоге siciarz.net. Аналогично сериям «24 days of Hackage» и «24 Days of GHC Extensions», написанных Oliver Charles, только про Rust, а не Haskell.

В статьях рассматривается работа с JSON и CSV, посылка HTTP-запросов, работа с PostgreSQL и Redis, генерация UUID, а также утилита Racer, написание своей FUSE файловой системы, и другие моменты. Вообще, на тему языка Rust пишется довольно много интересных статей. Мне, к примеру, очень понравились Fearless Concurrency with Rust и Rust Means Never Having to Close a Socket. Думаю, уже пора заводить какой-нибудь каталог статей. Тем не менее, в отношении языка Rust я все еще настроен очень скептически.

Professional C++, 3rd EditionProfessional C++, 3rd Edition
Marc Gregoire

Учебник по C++ с учетом нововведений C++11/14. В том числе рассматривается многопоточность, работа с регулярными выражениями, и прочие возможности стандарной библиотеки. Кроме того, автор учит отладке с помощью gdb, поиску утечек памяти, профайлингу gprof’ом (а также отладке и профайлингу с помощью Visual Studio), и многим другим практическим вещам. Есть и довольно непростые для восприятия моменты, например, написание своего контейнера по аналогии с тем, как это сделано в STL, или метапрограммирование на шаблонах.

Много говорится вообще о хороших практиках в программировании, есть главы про code style, дизайн программ в целом, модели разработки (водопадная, спиральная, вот это все), и другие подобного рода вещи. Есть даже appendix о том, как подготовиться по этой книге к собеседованию!

Я считаю, книга просто великолепная. Шикарный учебник и справочник по современному C++. Обязателен к прочтению любому программисту на этом языке, а также к перечитыванию случайных глав перед сном.

The Performance of Open Source ApplicationsThe Performance of Open Source Applications
Tavish Armstrong

Решил все-таки добить серию, тем более, что в последней книге 180 страниц всего лишь. Интереснее всего было прочитать про браузеры Mozilla Firefox и Google Chrome, ориентированную на быструю компиляцию систему сборки Ninja, быстрый DOM-парсер формата XML с поддержкой XPath под названием Pugixml, а также распределенное key-value хранилище Infinispan, CMS Zotonic и HTTP сервер Warp.

Есть просто шикарные главы, особенно в начале, а есть и откровенный маркетинговый булшит. В общем, я снова разочарован. Как и два тома «The Architecture of Open Source Applications», в целом книга потянет на слабенькую четверочку. Если вы не станете ее читать, то не много потеряете. Очень жаль, что хорошие книги по оптимизации программ попадаются редко, тема эта очень интересная.

 

Также я начинал читать несколько книг, которые в итоге не пошли. «Netty in Action» я осилил до третьей главы. Понял, что Java безнадежна и так писать в третьем тысячелетии нельзя. Кому может прийти в голову работать с Netty напрямую при условии наличия удобных оберток типа Finagle на данный момент для меня остается загадкой. «Continuous Delivery and DevOps — A Quickstart Guide, 2nd Edition» осилил до 53-ей страницы (начало третьей главы). Книга оказалась совершенно не технической, а о том, как правильно протащить DevOps в кровавый энтерпрайз. В общем, совершенно оторванная от реальности. «Алгоритмы. Построение и анализ. 3-е издание» осилил до 6-ой главы, первые 179 страниц. Слишком много анализа, слишком мало алгоритмов. Очень трудно заставить себя читать дальше.

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

Дополнение: Двенадцатый десяток прочитанных книг и журналов

Метки: .


Вы можете прислать свой комментарий мне на почту, или воспользоваться комментариями в Telegram-группе.