Головатый, Каплан-Мосс. «Django. Подробное руководство»

Django. Подробное руководствоНедавно вышла новая книга про Django – фреймворк для веб-приложений -, которая называется «Django. Подробное руководство». Это уже вторая книга про Django на русском языке, про первую я уже писал.

«Django. Подробное руководство» написана двумя авторами самого фреймворка (А. Головатый и Д. Каплан-Мосс), так что эту книгу можно считать источником из первых рук. Если прошлогодняя книга (авторы Дж. Форсье, П. Биссекс и У. Чан) это скорее руководство для ознакомления с Django, то новая книга описывает возможности фреймворка намного подробнее. Авторы во введении признались, что их цель – сделать читателей экспертами по Django.

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

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

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

Читать далее ‘Головатый, Каплан-Мосс. «Django. Подробное руководство»’ »

Алекс Макки. «Введение в .NET 4.0 и Visual Studio 2010 для профессионалов»

Макки. Введение в .NET 4.0В апреле Microsoft выпустил 4-ю версию .NET Framework. Полистав обзоры новых возможностей в интернете, решил, что пора переходить на эту новую версию (сейчас использую .NET 2.0), а для этого желательно что-нибудь поподробнее почитать про новый Framework. Неожиданно попалась книжка А. Макки «Введение в .NET 4.0 и Visual Studio 2010 для профессионалов», в которой как раз и описываются изменения, произошедшие в .NET 4.0. Вчера дочитал эту книжку и могу сказать, что она ужасна, но давайте все по порядку.

В принципе, в книге описывается все то, что я от нее ожидал – только изменения в .NET 4 без описания языка C#, а то попадалась одна книжка, где на обложке красуется C# 2010, но 90% содержание там – обучение языку C#. В этой книге все нормально, считается, что сам язык и основные библиотеки вы уже знаете на уровне .NET 3.5, и по сути автор предлагает развернутый changelog.

Начинается книга с обзора новых возможностей среды Visual Studio 2010, где автор пробегается но основным новым фичам. Такой беглый обзор раздражает, потому что представление об одной возможности еще не успевает сложиться, а автор уже переключается на другую. Правда, автор еще во введении предупреждает, что он не собирается описывать каждое нововведение очень уж подробно, а жаль, я, конечно, не ждал от него уровня Рихтера, но хотелось бы что-то похожее. Кстати, Рихтер уже написал новое издание книги CLR VIA C#, где описаны возможности .NET 4.0, когда она выйдет на русском языке неизвестно, но на английском ее уже можно скачать.

Читать далее ‘Алекс Макки. «Введение в .NET 4.0 и Visual Studio 2010 для профессионалов»’ »

wxPython. Windows vs. Linux

wxpython-windows-vs-linux

Хоть мне и нравится библиотека wxPython для создания интерфейса питоновских программ, но есть в ней одна неприятная особенность. Дело в том, что часто поведение одного и того же кода в разных операционках у библотеки отличается. В таких случаях приходится плясать с бубном и что-то подправлять таким образом, чтобы, с одной стороны, поведение программы в одной ОС осталось таким каким же, как оно было задумано и как уже работает, а, с другой стороны, чтобы в других ОС работало точно так же.

Иногда эти шаманства связаны с махинациями сайзерами, а вот вчера я столкнулся с очень неприятным поведением класса wx.Image, от которого не ждал никакого подвоха.

Итак, предыстория. Сижу под Windows, делаю OutWiker (скоро выложу новую версию). Все крупные изменения уже сделаны, под Windows все нормально, пришло время проверить их под Linux. Запускаю VirtualBox с Ubuntu 10.04, запускаю там OutWiker и… все работает. Не веря своему счастью, запускаю юнит-тесты, надеясь, что, раз внешне все нормально, то запуск этих тестов станет простой формальностью.

Читать далее ‘wxPython. Windows vs. Linux’ »

Книга Джошуа Кериевски «Рефакторинг с использованием шаблонов»

Рефакторинг с использованием шаблоновДочитал на днях сабжевую книжку. Вышла она еще в 2008 году, но мне она попалась только недавно. По идее, читать ее надо было бы после книги Фаулера «Рефакторинг. Улучшение существующего кода», на которую Кириевски постоянно ссылается, но до Фаулера я пока не добрался, хотя это и не особо затруднило чтение. Вторая книга, которую лучше всего прочитать заранее, это «Приемы объектно-ориентированного проектирования. Паттерны проектирования» банды четырех.

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

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

Читать далее ‘Книга Джошуа Кериевски «Рефакторинг с использованием шаблонов»’ »

Про wxPython

pro-wxpython

Где-то года полтора назад (в конце 2008 года) я выкладывал обзор дизайнеров интерфейса для wxPython. На днях решил посмотреть что же изменилось за это время. Прошелся по упомянутым в обзоре сайтам и, честно говоря, удивился, что за это время из всех программ обновлялась только wxGlade. Беглый поиск по гуглу тоже не дал никаких новых IDE или дизайнеров.

Жаль, что такие полезные программы не развиваются. Правда, есть парочка платных софтин для построения интерфейса на wxPython/wxWidgets, которые обновлялись не так давно, но мы их считать не будем. :P

Немного настораживает ситуация с обновлением самой библиотеки wxPython. Последняя версия (2.8.10.1) вышла 14 мая прошлого года, осенью прошлого года вышла версия 2.9 wxWidgets, на основе которой построена wxPython, но библиотека wxPython до сих пор не обновилась. Правда, покопавшись в рассылке wxPython обнаружилось, что версия 2.9 должна скоро выйти, вроде бы уже есть предварительные сборки.

Еще жаль, что wxPython не поддерживает Python 3.x, и когда начнется работа по портированию на него не понятно. Все в той же рассылке писали, что разработчики обсуждали, а не начать ли работу по портированию в этом году, чем все это закончилось я так и не понял, до этого писали, что портирование на Python 3.x имеет у разработчиков низкий приоритет.

Если честно, то очень расстраивает то, что такая замечательная библиотека как wxPython так медленно развивается. С точки зрения пользователя мне намного больше нравятся проги, написанный под wxPython, чем под pyGTK. Все-таки wxPython/wxWidgets для отображения интерфейса использует API той среды, где программа запускается. Поэтому, например, в винде все диалоги открытия/сохранения окон будут выглядеть привычно для пользователя, в отличие от того же pyGTK.

DreamPie. Хорошая замена IDLE (консоль для Python)

dreampie-khoroshaya-zamena-idle-konsol-dlya-python

Вот знаете, меня всегда интересовало, зачем разработчики Python мучились и делали консоль IDLE, если она по удобству даже хуже, чем стандартная виндовая или линуксовая консоль. Нет, я, конечно, понимаю, что там есть раскраска, автодополнение и подсказки по параметрам функций, но как же там неудобно вводить текст…

Это я все не для того, чтобы устроить очередной холивар, оказывается есть действительно удобная Python-консоль. Называется она DreamPie.

DreamPie. Хорошая замена IDLE (консоль для Python) dreampie 00 300x229

Читать далее ‘DreamPie. Хорошая замена IDLE (консоль для Python)’ »

GlueBox. Outliner для программистов

gluebox-outliner-dlya-programmistov

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

Но главная «необычность» GlueBox заключается в том, что здесь нет привычного визуального редактора (есть непривычный визуальный редактор), хотя внешне по скриншоту этого не скажешь. На самом деле визуальное представление строится по дереву, которое расположено слева. Это с одной стороны несколько замедляет ввод содержимого, а с другой – повышает структурированность представления.

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

Пожалуй, это проще всего показать на примере. Обратите внимание на следующий скриншот.

Gluebox. Внешний вид

Читать далее ‘GlueBox. Outliner для программистов’ »

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

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

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

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

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

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

Книга Агурова «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 года.

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