Git, Bazaar и русские имена файлов

git-bazaar-i-russkie-imena-fajjlov

Я уже давно проникся идеей распределенных систем контроля версий (VCS) и до сих пор использовал Git, которым был в целом доволен. Но так как в последнее время я частично стал пользоваться Linux’ом, то возникла одна проблема с хранением исходников Outwiker’а, о которой я уже как-то говорил, но напомню еще раз.

Суть проблемы состоит в том, что в исходниках Outwiker’а лежат файлы справки, которые имеют русские имена. Эти файлы создавались в Windows, поэтому кодировки имен – cp1251. При получении этих файлов из репозитория под Linux’ом кодировка имен файлов сохраняется, и по умолчанию в консоли показываются вопросики вместо имен. Это решается сменой кодировки консоли, но Outwiker будет видеть эти файлы все-равно искореженными. Имена файлов под Linux’ом можно преобразовать в нужную кодировку, но тогда с точки зрения git это будут новые (точнее переименованные) файлы, что нам не надо.

Читать далее ‘Git, Bazaar и русские имена файлов’ »

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

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

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

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

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

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

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

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

Алекс Макки. Введение в .NET 4.0 и Visual Studio 2010 для профессионалов book net 40В апреле 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’ »

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

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

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

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

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

Про wxPython

pro-wxpython

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

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

Немного настораживает ситуация с обновлением самой библиотеки 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. Outliner для программистов gluebox 01 300x261

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

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

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

Книга «Программируем коллективный разум» в основном посвящена алгоритмам классификации и кластеризации, хотя есть главы, посвященные другим темам вроде создания собственного поисковика, генетическим алгоритмам и генетическому программированию. Почти все описанные алгоритмы применяются в духе 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 может неплохо дополнить книгу, потому что начинать поиски нужного класса проще именно с этой книги. Ее содержание можно посмотреть, например, здесь.