Дмитpий Hecтepук

Блог о программировании — C#, F#, C++, архитектура, и многое другое

Обзор нескольких .Net-ориентированных книг от O’Reilly

23 комментария

С момента публикации предыдущих двух обзоров книг (от Apress и Manning) прошло много времени и вот, сейчас пришло время поговорить про еще одно издательство, которое кормит нас .Net-разработчиков хорошими (и не очень) публикациями. Сегодня мы будем говорить про O’Reilly – издательство с картинками всяких интересных животных на обложке. Особенно мне запомнилась гадюка (по английски – «asp») в книжке про ASP. Итак, вперед!


C# 4.0 in a Nutshell


Ха! Уверен что большинство из вас могли угадать, какая книга у меня будет первой. Действительно, не я один считаю «C# in a Nutshell» феноменальным трудом. Почему, спрашивается? Во-первых, это самый полный reference который вы сможете найти. Количество покрытых тем позволит начинающим разработчикам очень эффективно поднять свои знания по BCL, в то время как опытным разработчикам эта книжка будет служить полезным reference manual. Также, эта книга хороша как coffee-table book, в которую можно периодически поглядывать в поисках вдохновления.

Помимо широкого охвата и глубины обсуждаемых топиков (но это не Рихтер конечно, хотя они почти одно издательство), есть еще пара причин, по которым мне нравится эта книга. Во-первых, у O’Reilly отличная типографика. Мне редко бросаются в глаза детали оформления, но книги серии In a Nutshell очень читабельны, а диаграммы в них – просто супер, и тут мне кажется, с O’Reilly не сравнится никто.

Офтоп: Помнится в своё время я даже хотел скопировать стиль их диаграмм в Visio. Кажется у меня в то время ничего не получилось.

Еще одна причина – это то, что книжку можно попробовать, причем авторы выкладывают в сеть ключевую главу – по многопоточности. Текущую редакцию можно скачать тут.

Ну и последнее – авторы книги являются также авторами супер-мега-полезной утилиты под названием LinqPad. Для тех кто (на другой планете или просто) не знает что это такое, LinqPad – это программа которая позволяет писать запросы на базы через Linq – то есть вместо SQL можно использовать C# и привычные конструкты Linq. Результаты очень опрятно представлены – я собственноручно копировал их и вставлял в отчеты без каких либо проблем. Программа, кстати, бесплатна, но за syntax highlighting не грех заплатить – оно того стоит!

Вообщем, книга стоит наверное 3× своей стоимости, и является абсолютным must have-ом! Моя копия уже вся затаскана, и это показатель!

5 stars5 stars5 stars5 stars5 stars

RESTful .NET


Это одна из двух promotional книг которые мне прислало издательство. Вторая – по рефакторингу SQL приложений – мне как-то не особо нужна если учесть мою текущую озабоченность NoSQL вообщем и MongoDB в частности. Возвращаясь к «RESTful .Net» это, конечно же, книжка про реализацию representational state transfer (REST) в WCF. Книжечка маленькая, тонкая, что понятно если учесть что объяснить как работает REST в WCF – это несложное занятие.

Если REST – это просто, то WCF – не совсем. И соответственно в книге очень много различных обсуждений на тему работы с WCF – или даже борьбы (например, как избавиться от .svc – это ведь уже не проблема?) В книжке также очень много других инфраструктурных привязок – WF, Silverlight, и т.п. Темы покрыты достаточно хорошо (в контексте REST, конечно). Что меня беспокоит так это порой ненужный материал – например, примеры «ручного» программирования WCF. Также, как-то маловато было сказано о том, какие сервисы нынче используют REST и для чего. А еще какое-то философствование в начале на тему REST vs. RPC – как-то мне не по себе от этого.

После прочтения книги остается впечатление что нужно покупать серьезный труд по WCF дабы понять все от α и до Ω. Хотя даже эта книжка уже кажется «тяжелой» в плане сложности, и вины автора в этом нет. И еще – ради справедливости следует упомянуть что у O’Reilly есть еще одна книга – RESTful Web Services – которая возможно покрывает вопрос REST на более глубоком уровне, и без ограничений WCF. Есть также книга рецептов. Я не смотрел ни одну из этих книг.

3 stars3 stars3 stars3 stars3 stars

Mastering Regular Expressions и Regular Expression Cookbook


Возвращаемся к известным книжкам. Mastering Regular Expressions – это одна из вечных книг. Вечна она потому, что регулярные выражения никуда не денутся – даже через 100 лет! (Это я наверное загнул, но идея понятня.) «Регулярки» – это фактически отдельный DSL, и знать его полезно если хочется быстро что-то вытащить из строки но нет абсолютно никакого желания писать свой собственный парсер. Хотя с другой стороны, есть ситуации, когда использование регулярок это как раз зло – например при вытягивании данных из HTML.

В связи со всем этим, как часто бывает у O’Reilly, у нас есть две книги – одна теоретическая, другая с конкретными «рецептами». Теоретическая книжка научит вас языку регулярных выражений. Думаю мало кто будет спорить что это «нужно знать», хотя (имхо) быть экспертом в регулярках совсем не обязательно, особенно когда есть такие программы как Expresso которые, если что, сами вас научат что да как. Сама книжка конечно покрывает не только .Net – в ней фигурируют разные языки. Секция по .Net конечно радует – в ней покрыт API (а, насколько я знаю, он не изменен со времен 2006 года когда была написана книга) и даже такие «сложные вещи» как компиляция выражений в отдельные сборки. Сама проблема regex’ов тоже объяснена достаточно глубоко – достаточно для того чтобы писать такие выражения, которые никто кроме вас не поймет.


Парадокс в том, что на бытовом уровне, вторая книжка – Regular Expression Cookbook – делает первую как бы ненужной. Нет, конечно синтаксис знать надо, но де факто этот синтаксис различается между платформами, и тут Regular Expression Cookbook берет верх – с первой же главы она показывает различия между разными языками (C#, Perl, JavaScript). Дальше, как по прогрессии, примерами идут простые паттерны (например «отдельные слова»), ну и так дальше по наклонной вверх.

Читать эту книгу невозможно (хотя некоторые гики попробуют!) – это скорее книга, в которую вы будете заглядывать периодически чтобы получить ответ на какой-то конкретный вопрос. Поскольку примеры приведены на нескольких языках, для .Net-чиков книга действительно полезна, но только если вы согласны что львиная доля книги – не для вас вообще. Несмотря на это, у меня от этой книги достаточно позитивное впечатление – и с глубиной там нормально (каждый кейс детально описан, что хорошо для гиков), и с утилитарностью тоже (кейсы полезные). Единственное, что пожалуй бросилось в глаза это последняя глава, в которой пропагандируется «смертный грех» RegEx’ов – их использование с HTML. Да, эта тема уже неоднократно поднималась на SO и других ресурсах, поэтому видеть такое в книге – no fun at all.

Попробую порезюмировать – Mastering Regular Expressions это книга must have, и в принципе является «классикой» (насколько это можно сказать про книгу которую не Фаулер написал) несмотря на зубодробильную сложность. Да и книжка с рецептами тоже мне понравилась – уж больно прагматичные и полезные рецепты в ней содержатся.

Mastering Regular Expressions
5 stars5 stars5 stars5 stars5 stars

Regular Expression Cookbook
4 stars4 stars4 stars4 stars4 stars

XSLT и XSLT Cookbook

Это мои «книжки детства» – я точно не знаю сколько им лет, но позреваю что много. Было время – я наверное еще в университете учился – когда мне казалось что XSLT можно использовать для всего чего угодно. Например для верстки сайтов. А потом оказалось, что если вывешивать, например, XML с указанием stylesheet, такие страницы будут открываться только в Internet Explorer. Но было это давно.

Начнем с книжки по XSLT – вообще, если честно, любая книжка которая описывает язык в котором практически нет библиотек и встроенных функций – это просто reference manual, некая «перепечатка мануалов» которая быстренько описывает синтаксис. В книге по XSLT фигурируют две основные вещи – XPath и собственно конструкты XSLT – такие как <xsl:for-each> и так далее. Как все это дело расползлось на 450 страниц – это объясняется в основном огромными примерами. Вот вы готовы смотреть кусок XML размером с 4 страницы? Я – нет, мне такой пример не нужен. А в книге как раз таких много.

Но это еще не все – реально самой книги тут 237 страниц, то есть чуть больше половины. Остальное – перепечатка нескольких reference-материалов, в частности по XSLT и XPath. Я всегда крайне враждебно отношусь к книгам который напрямую печатают «мануалы» т.к., во-первых, я и сам могу их печатать (если мне вдруг захочется убить дерево), а во-вторых потому что обычно если мне нужно что-то из мануала то я скорее гуглю, а в книге хочется как раз получить пример, обсуждение, обзор альтернатив. В связи с этим, собственно, я и склонен дать книге половину возможных «звездочек» – наверное если бы я сейчас покупал книгу по XSLT сейчас, я бы смотрел на альтернативы.

Первое, что вы должны знать про XSLT – это то, что это функциональный язык который, в отличии от XQuery вообще не позволяет держать изменяемые переменные. Поэтому идея о вменяемой обработке данных отпадает, не будь в XSLT возможности использовать Java или другие языки для трансформации. Поэтому книга рецептов XSLT – это отчасти страдания и фетишизм на тему того, как заставить функциональный язык (который по форме соответствует XML) вести себя как Java или C#.

Есть одна фундаментальная проблема, которая делает «рецепты» не такими выгодными в свете XSLT – это тот факт, что все те функциональные конструкты которые используются для благих целей настолько громоздки, что у вас быстрее заболит голова чем вы сможете разобраться, что же написано в книге, не говоря о копировании этого в своем коде (без XmlSpy вы просто умрете).

Мне понравилась секция (а точнее просто идея) использования XSLT для генерации структур на различных языках. В то время когда вышла книга (у меня первое издание), эта идея была очень модной – я даже как-то нашел статью в DDJ на тему того как можно из XML генерировать C++, Java и SQL. Тогда эта идея была интересной и даже сподвигла меня написать CodeGenUtils – add-in для VS2008 который делал сначала XSLT, а потом и XQuery трансформации. Тем не менее, если резюмировать – такое читать невозможно. Иметь солюшн, некий каталог – это реально. Но писать по этому книгу, причем, опять же, с нехилыми по размерам примерами – это как-то странновато. (В CookBook 650 страниц.)

Резюмируя, книжку по XSLT надо было бы поискать другую, а «рецепты» конечно более полезные и я сам в своё время генерировал из XSLT какие-то красиво форматированные TXT-файлы, но опять же, огромные примеры которые ни понять ни скопировать портят все впечатление. (А вообще, по-хорошему, надо смотреть скорее на XQuery, а еще лучше – бежать сломя голову от обеих технологий. :)

XSLT
2 stars2 stars2 stars2 stars2 stars

XSLT Cookbook
3 stars3 stars3 stars3 stars3 stars

Реклама

Written by Dmitri

7 сентября 2010 в 22:14

Опубликовано в .NET, Books

комментария 23

Subscribe to comments with RSS.

  1. Привет, Дмитрий, спасибо за качественные и детальные разборы книжных новинок!

    1. Используешь ли какую-либо читалку электронных книг (и покупаешь ли эти самые электронные книги)? Ведь преимущества э-буков очевидны: индексация содержимого, отсутствие механических повреждений, вся библиотека в кармане и лес в сохранности.

    2. Почему ведешь блог на ВП, а не, например, на МСДН?

    aeea

    8 сентября 2010 at 1:23

    • Ха, ответить проще простого:

      1. Нет, читалкой не пользуюсь, для меня не проблема купить все бумажное. Правда было дело что одно издательство заслало PDFы, но мне их если только на МакБуке читать.

      2. Понятия не имею. На МСДН ведут блоги сотрудники Microsoft. WordPress идеален в плане публикации кода, да и шаблон мне нравится.

      Dmitri

      8 сентября 2010 at 1:41

      • а намекни, пожалуйста, какие тут пряники для публикации кода?

        just1programmer

        8 сентября 2010 at 10:37

        • Поддержка SyntaxHighlighter. Посмотрите на альтернативы — на Хабре нужно подсветку делать самому (существенно хуже), на ГДН есть подсветка но (!!!) тег CODE верстается как параграф (ну что за идиотизм, а?). Что касается движков, я тут не силен, но к N2 нужно прикручивать, BlogEngine.net вообще какой-то фейловый. Заставить Windows LiveWriter или Adobe Contribute правильно верстать код — эпичный квест, и даже после него вы не получите идеальную верстку не-кодовой части.

          Dmitri

          8 сентября 2010 at 13:00

        • На Хабре недавно таки сделали подсветку кода: http://habrahabr.ru/blogs/announcements/103389/

          Idsa

          8 сентября 2010 at 13:11

        • Недавно, это не прошло и 2 лет, как это надо было сделать, тут уже просто для галочки.

          Checker

          8 сентября 2010 at 15:53

        • Вот-вот, я их где-то год назад просил. К тому же сделали глупо, свой тег вместо [ sourcecode ], отсебятина которой не нужно. Впрочем, я сейчас на Хабр выкладываю только ссылки т.к. карма меня не волнует, а по переходам так и так очень даже неплохо!

          Dmitri

          8 сентября 2010 at 16:37

  2. Было время – я наверное еще в университете учился – когда мне казалось что XSLT можно использовать для всего чего угодно. Например для верстки сайтов.

    XSLT действительно используют для верстки сайтов, правда, в основном шаблон накладывается на серверной стороне.

    Idsa

    8 сентября 2010 at 8:05

    • Верю. Знаю. Но не считаю это идеальным решением по причине ограниченности XSLT.

      Dmitri

      8 сентября 2010 at 13:01

  3. >Хотя с другой стороны, есть ситуации, когда использование регулярок это как раз зло – например при вытягивании данных из HTML.

    Что-то я пропустил в этой жизни и разговоры на SO об этом,в чем беда?

    Checker

    8 сентября 2010 at 9:24

  4. Спасибо, все обзоры,несмотря на краткость,достаточно информативны

    Юрий Кельберг

    8 сентября 2010 at 9:24

  5. Снова, спасибо за хорошие обзоры книг. По Regex как раз на работе надо будет делать доклад.

    Сергей

    8 сентября 2010 at 22:31

  6. Дмитрий вы написали что
    когда использование регулярок это как раз зло – например при вытягивании данных из HTML.
    Что посоветуете в данном случае если приходится иметь дело как раз с Html?

    Сергей

    8 сентября 2010 at 22:35

    • Сначала использую SgmlReader чтобы привести HTML к форме XML. А потом можно делать XElement.Load() и использовать в своё удовольствие.

      Dmitri

      8 сентября 2010 at 23:02

  7. Дмитрий можете подсказать как вы заказываете книги,
    так как в моем городе нет таких книг в магазинах,
    а хотелось бы приобресть бумажный вариант.
    особенно C# 4.0 in a Nutshell

    Сергей

    8 сентября 2010 at 22:39

    • Заказываю с Amazon.co.uk с доставкой либо в Англию, либо в Швецию. Дальше либо сам заезжаю забираю, либо мне привозят. В магазинах у вас и не будет изданий на анлгийском языке, так что я советую делать также. А переводы покупать категорически не рекомендую.

      Dmitri

      8 сентября 2010 at 23:05

  8. Спасибо большое Дмитрий еще раз.

    Сергей

    9 сентября 2010 at 19:25

  9. А посоветуйте, книги по WCF, буду очень признателен. И что вы думаете про книгу «Programming WCF Services» от O’Reilly?

    Андрей

    24 сентября 2010 at 10:36

    • Я, если честно, в этом не очень разбираюсь. У меня по WCF только «Restful .Net», и всё :)

      Dmitri

      25 сентября 2010 at 8:56

  10. Дмитрий, есть ли в вашей библиотеке прочтенные книги по SOA (Service oriented architecture) и опыт? Что можете посоветовать по данной тематике (книги, блоги специалистов), если сталкивались?

    Akim Khalilov

    17 января 2012 at 13:47


Оставить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: