Тоби Сегаран «Программируем коллективный разум»

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

Книга «Программируем коллективный разум» в основном посвящена алгоритмам классификации и кластеризации, хотя есть главы, посвященные другим темам вроде создания собственного поисковика, генетическим алгоритмам и генетическому программированию. Почти все описанные алгоритмы применяются в духе Web 2.0, используя анализ поведения пользователей на разных сайтах, которые предоставляют свой API. Но что особенно приятно удивило, так это то, что все примеры написаны на языке Python.

Вот какие алгоритмы описываются в книге:

  • Коллаборативная фильтрация. Или, говоря человечески языком, алгоритмы, которые могут рекомендовать вам какие-то покупки, сайты или музыку в зависимости от оценок, которые вы поставили другим подобным вещам. По таким алгоритмам работает навязывание покупок в интернет-магазинах или подбор музыки на last.fm. В конце главы приводится пример, который будет рекомендовать вам ссылки из сервиса del.icio.us.
  • Алгоритмы группировки (кластеризации). Создаваемый пример анализирует RSS-каналы блогов и пытается их автоматически разделить на группы в виде дерева в зависимости от частоты слов, которые попадаются в блоге. Заодно Сегаран рассказывает как можно сделать так, чтобы названия блогов расположились на плоскости кучками в зависимости от их близости в плане рассматриваемых тем.
  • Отдельная глава посвящена построению поисковиков – созданию паука и, самое главное, рассматриваются алгоритмы ранжирования ссылок, в том числе и с учетом ссылок страниц друг на друга, создавая, таким образом, аналог Google PageRank. Еще интересно, что в этой же главе есть пример, где для выдачи наиболее релевантных ссылок используется нейронная сеть, которая обучается по мере того как пользователь щелкает на понравившиеся ему ссылки.

Читать далее ‘Тоби Сегаран «Программируем коллективный разум»’ »

Компьютерра закрывается. И про другие мертвые журналы

kompyuterra-zakryvaetsya-i-pro-drugie-mertvye-zhurnaly

Ну вот, под конец года список плохих новостей пополнился еще одним событием – закрывается журнал «Компьютерра», на следующей неделе должен выйти последний выпуск. Если честно, в последнее время я его читал не часто, последний купленный журнал был еще июньский, да и вообще я его почитывал не регулярно, но все-равно жалко. За последний год «Компьютерра» как-то сильно похудела, а теперь вот и такой ее не будет.

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

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

А вообще, это второй хороший журнал, который нас покидает. Первым был журнал «Программист», который выходил всего три года с 2001 по 2003 года. Не знаю был ли «Программист» первым журналом, посвященным только программированию, но единственным, про который я знал. Был еще близкий к нему по духу Хакер, но он как-то прошел мимо меня. А вот «Программист» был отличным журналом, такое ощущение, что он был вообще без недостатков, да и на форуме сайта журнала собралась отличная компания, которая устраивала оффлайновые встречи, на которые, к своему стыду, я так ни разу и не сходил. Кстати, на торрентах можно скачать многие выпуски «Программиста».

А еще, помнится, из хороших журналов была «Подводная лодка», правда, я ее читал еще в конце 90-ых годов, позже она мне попадалась, но что-то совсем не понравилась. До сих пор где-то у меня лежит выпуск со статьей про то, что Win 98 провалилась по сравнению с Win 95 и про то, что пиратство – это нормально. И именно из этого журнала я узнал про MatLab, которым начал пользоваться только лет 5 назад (а потом его променял на Python :) ).

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

Книга Агурова «C#. Разработка компонентов в MS Visual Studio 2005/2008″

Книга Агурова C#. Разработка компонентов в MS Visual Studio 2005/2008 coverКогда-то давно мне попалась англоязычная книжка по разработке компонентов для .NET под названием «.NET Windows forms custom controls» (думаю, что эту книгу можно найти без проблем в электронном виде, а еще она есть на google books). В тот момент, когда она вышла, только появился .NET 1.0, но она все-равно оказалась полезной. Спустя какое-то время, когда стал активно использовать .NET, я удивлялся, почему у нас не издают подобных книг (в переводе или своих авторов), вроде тема интересная, но в то же время в MSDN как-то все, что связано с созданием компонентов описано обрывочно, и найти там нужный класс, не зная его имени, не так просто.

И вот примерно месяц назад в книжном магазине случайно увидел книгу Павла Агурова «C#. Разработка компонентов в MS Visual Studio 2005/2008″, которую на днях и дочитал.

В целом книга тоже оказалась полезной и иметь ее под рукой при создании собственных компонентов стоит. Несмотря на то, что на обложке книги упоминается Visual Studio 2008, про WPF ничего не написано, о чем автор честно признается на первых страницах, а все 400 с лишним страниц посвящены Windows Forms, что для меня даже лучше, потому что на WPF я так и не перешел, и пока переходить не хочется.

По структуре книга напоминает что-то вроде HOWTO или сборника рецептов. Каждая глава посвящена какой-нибудь одной теме (архитектура компонентов, дизайнеры, сервисы, конвертеры типов, сериализация и т.д.), а внутри каждой главы разные пункты описывают как сделать ту или иную вещь, например, например, как работать со Smart Tags, как добавить к компоненту новые маркеры и т.п. В каждом разделе есть пример разработки какого-нибудь простенького компонента.

С одной стороны такая структура – это то, чего не хватает в MSDN, и по ней можно быстро отыскать как делать ту или иную штуку, а с другой – хотелось бы поподробнее почитать про внутреннюю работу дизайнеров и других частей .NET, в том числе хотелось бы получше узнать описываемые классы, не заглядывая в MSDN. Поэтому недостаток такой структуры изложения в том, что после прочтения книги все-равно будет трудно понять что нужно делать, если появится задача, не описанная в книге. В уже упомянутой книге «.NET Windows forms custom controls» в одной из глав есть полный (надеюсь) список классов, интерфейсов и атрибутов, связанные с дизайнером, а в книге Агурова есть только список атрибутов.

В итоге все-равно книжка мне понравилась, читается она очень даже легко и может неплохо дополнить MSDN, или точнее MSDN может неплохо дополнить книгу, потому что начинать поиски нужного класса проще именно с этой книги. Ее содержание можно посмотреть, например, здесь.

Книга Уоррена «Алгоритмические трюки для программистов»

Книга Уоррена Алгоритмические трюки для программистов algПрочитал недавно книгу Уоррена «Алгоритмические трюки для программистов» (в оригинале она называется «Hacker’s Delight»), любопытная оказалась книжка, хотя алгоритмы, рассмотренные в ней, довольно специфические.

Эта книга отличается от других изданий про алгоритмы тем, что в ней не рассматриваются такие глобальные вопросы как сортировка, оптимизация функций, структуры данных и тому подобные. В ней описываются большей частью алгоритмы, связанные с двоичной логикой и представлением чисел (в основном целых) в компьютере. Основной упор сделан на алгоритмы оптимизации небольших операций, таких как целочисленное деление, извлечение корня или взятие логарифма от целых чисел.

Многие алгоритмы явно предназначены для того, чтобы их реализовали на ассемблере, причем иногда для процессоров, более редких, чем x86 (например, часто упоминаются процессоры IBM, а иногда опоминаются и древние компьютеры еще 60-ых годов прошлого века). Автор пишет, что многие примеры из книги могут пригодиться тем, кто создает компиляторы. Для примера приведу описание некоторых задач, разбираемых автором: как обнулить крайний справа единичный бит (01011000 -> 01010000), округление к кратному степени двойки, подсчет единичных битов в слове, поиск строки битов и тому подобные. Почти для каждого алгоритма автор пытается оценить количество необходимых тактов процессора, иногда с учетом распараллеливания.

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

Ближе к концу книги есть глава, посвященная системам счисления с необычными основаниями, такие как -2, -1+i, -1-i. Такие системы счисления никто в здравом уме применять не будет, но почитать про них все-равно интересно.

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

Не сказал бы, что эту книгу нужно обязательно прочитать всем, но для общего развития вполне можно, тем более она не такая большая (меньше 300 страниц). Читается книга не очень легко, а местами и тяжеловато, в ней приличное количество математических формул, иногда даже попадаются доказательства каких-то теорем. Мне было интересно читать даже не столько про сами алгоритмы, сколько про сами задачи, которые решались.

Книгу можно рассматривать как небольшой сборник рецептов про битовые операции. Книга издавалась несколько раз, последнее издание 2007 года.

В электронном виде найти ее можно без проблем.

Про книгу «Django. Разработка веб-приложений на Python»

Про книгу Django. Разработка веб приложений на Python django Помните, недавно я писал о том, что выходит книга про веб-программирование на Python и Django? Так вот, я ее дочитал, оказалась очень хорошей книгой, очень она мне понравилась.

Ее нельзя назвать очень уж глубокой, она именно для тех, кто никогда не имел дела с Django, но для новичков все расставляет по своим местам. Это я уж по себе сужу, потому что сколько пользовался Питоном, но сайты на нем никогда не делал.

Особенно понравилась манера изложения. Авторы в каждой главе книги умудряются не только рассказать как работает Django, но и заодно сделать какое-то сравнительно полезное веб-приложение. Благодаря этому становится понятно и как работает Django, и как это можно использовать. При этом авторы не обращают особого внимания на оформление создаваемого сайта, поэтому приводимый код остается довольно коротким и наглядным.

Читать далее ‘Про книгу «Django. Разработка веб-приложений на Python»’ »

Выходит книга «Django. Разработка веб-приложений на Python»

Выходит книга Django. Разработка веб приложений на Python djangoВот знаете, нравится мне сайт books.ru, они мне теперь присылают оповещения о новых книгах про Python (уж не помню что я там включал). Вот сегодня от них узнал, что выходит новая книга про веб-программирование с помощью Django. Самое интересное, что как раз недавно я его решил поковырять, а то уж больно интересно как это делать сайты на Python, а то от PHP меня как-то всегда воротило.

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

Не читая ее трудно сказать насколько она хорошая, но по содержанию вроде бы неплохая. По крайней мере есть и про использование баз данных, и про Ajax. Смущает, что она всего 456 страниц, есть у меня какое-то предубеждение к техническим книгам тоньше 500-600 страниц, но посмотрим. Здорово, что год издания книги в оригинале тоже 2009.

Но обложка, конечно, что-то с чем-то на Хабре уже развернулась целая дискуссия по поводу того что-то такого делает мужик со змеей. А книг по Python становится все больше и больше, что приятно.

Джеффри Фридл «Регулярные выражения»

Джеффри Фридл Регулярные выражения regularТолько что дочитал книгу Джеффри Фридла «Регулярные выражения». Если говорить коротко, то издательство O’Reilly держит планку, книжка стоящая.

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

Вторая часть посвящена обсуждению обработки регулярных выражений. Здесь описывается работа трех типов механизмов регулярных выражений, которые встречаются: так называемые недетерминированный конечный автомат (НКА), детерминированный конечный автомат (ДКА) и POSIX НКА. В основном книга посвящена работе с НКА, который применяется в большинстве распространенных языках программирования (C#/VB.NET, Java, Perl и присутствует в PHP в виде функций preg).

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

В четвертой части подробно описываются возможности разных языков и сред (Perl, Java, .NET, PHP), касающихся работы с регулярными выражениями. На обложке еще упоминается Ruby, но в книге он затронут вскользь, но так же мельком проскакивает и Python с Tcl. Хотя я и не пишу на Perl’е (и надеюсь, что в ближайшее время не буду :) ), но главу, посвященную только этому языку прочитал с удовольствием, интересно было узнать что в нем такого есть, чего нет в других языках.

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

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

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

Выходит еще одна книжка по Python

Выходит еще одна книжка по Python python3Ура! Среди книжек по Python ожидается пополнение. Скоро должна выйти книга Программирование на Python 3. Подробное руководство, автор Саммерфилд М. Сначала у меня было скептическое отношение к книге, думал, что там будет обычное описание языка, но после просмотра оглавления понял, что ошибался. Эта книжка, похоже, ориентирована уже на практическое использование Python. По крайней мере меня там заинтересовали главы про работу с XML, включая DOM и SAX, работу с сетями, БД (SQL и DBM). Есть глава про процессы и потоки.

В общем, как выйдет, надо будет купить. Я от такой книжки не отказался бы и по Python 2.6, пока у меня переход на Python 3 не ожидается, хотя кто знает. А то, что книжек по Питону выходит все больше и больше, это радует.

Scan Tailor. Программа для обработки отсканированных книг

scan-tailor-programma-dlya-obrabotki-otskanirovannykh-knig

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

Программа является бесплатной, да еще и с открытыми кодами, если версия под Винду, а можно из исходников скомпилить и под Линух. Официальный сайт – http://scantailor.sourceforge.net/.

Книжки сканирую я, к счастью, не часто, а вот обрабатывать уже отсканированные кем-то иногда приходится, в основном чтобы разрезать отсканированные развороты страниц на отдельные страницы. Описать программу Scan Tailor я решил на примере такой обработки. Для экспериментов взял первую попавшуюся книжку в формате DJVU с двойными страницами (первой попалась книга Ю.Ю. Ненахова «Чудо-оружие третьего рейха») и для начала преобразовал все страницы в формат TIFF, потому что для Scan Tailor исходными данными являются отсканированные рисунки. Для преобразования DJVU -> TIFF я использовал программу DjvuOCR. В результате у меня получилось 310 файлов TIFF каждый из которых содержал по две страницы.

Читать далее ‘Scan Tailor. Программа для обработки отсканированных книг’ »

Высоцкий в серии ЖЗЛ

Высоцкий в серии ЖЗЛ vysockij book 150Давно у меня лежала на КПК книжка Вл. Новикова про Высоцкого из серии ЖЗЛ, и вот, наконец, дошла очередь и до нее. Оказалось, что эта книга является хорошим примером того как тараканы в мозгах автора мешают написать хорошую книжку.

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

А вот что раздражает, так это то, что автора постоянно уносит на антисоветский оффтопик, особенно в первой половине книги. Иногда было такое ощущение, что книгу писала какая-нибудь Новодворская в штанах. У автора явно какие-то детские обиды на СССР (или даже не только на него), причем я понимаю, когда его ругают по делу, но когда что-то просто так все подряд поливают грязью только за то, что это «что-то» советское – это уже маразм. В книге от автора досталось, например, Олимпиаде 80-ого года. Здесь есть две фразы, полностью характеризующая аффтара, первая как раз и связана с Олимпиадой:

Читать далее ‘Высоцкий в серии ЖЗЛ’ »