пятница, 16 сентября 2011 г.

Как установить PIL из исходников в Ubuntu 11.04

PIL (Python Image Library) - это библиотека для работы с изображениями в Python.
В Ubuntu эту библиотеку можно установить из репазитория. Но т.к. я использую в разработке zc.buildout и стараюсь создавать пакеты для деплоя максимально независимые от того, что установлено в системном Python-е , то убунтовский репазиторий мне не подходит. Следовательно PIL у меня собирается из исходников.

Начиная с Ubuntu 11.04 в системе произошли некоторые изменения, в результате которых установка PIL из исходников несколько затруднилась.

понедельник, 8 августа 2011 г.

Что такое исключение NotYet и с чем его едят

Надо сказать, что исключение NotYet штука не частая, но от того и менее понятная начинающим (и не очень начинающим) разработчикам использующим в работе ZTK и ZODB.

вторник, 26 июля 2011 г.

OpenID провайдер для BlueBream: Начало

При выборе решения для создания SSO аутентификации мой окончательный выбор пал на OpenID.

воскресенье, 10 июля 2011 г.

вторник, 5 июля 2011 г.

FreeBSD: установка пакетов с расширениями для CPython

Одной из отличительных сторон FreeBSD по отношению к Linux является отличие в путях расположения некоторых файлов и частей системы. Непосредственно к установке питоновских пакетов с расширениями для CPython относятся пути: /usr/include и /usr/lib. В FreeBSD эти пути расположены тут: /usr/local/include и /usr/local/lib.

пятница, 1 июля 2011 г.

Scribe - сервер логирования в реальном времени

Не давно я запустил в продакшене приложение для сбора статистики прочтений авторских материалов и расчёта гонорара. Собственно счётчик показов был стандартный JavaScript + img. На стороне сервера данные фиксируются в лог-файле и раз в час производится обработка логов.
Исходя из особенностей обработки статистики и удобства работы с логами к ним предъявлялись следующие требования:
  • логи должны ротироватся ровно в полночь
  • в имени лог-файла должна быть соответствующая дата
  • в лог можно писать одновременно из нескольких процессов
Первые два пункта без проблем решаются стандартными средствами питоновского модуля logging и хендлера TimedRotatingFileHandler. А вот для того, что бы реализовать третий пункт треубется специальный, отдельно запущенный сервер логирования (есть конечно варианты реализации с использованием модуля multiprocessing, но мне этот вариант не нравится).

понедельник, 11 апреля 2011 г.

Автоматическое подключение зависимостей в BlueBream

Всерьёз занявшись разработкой проекта с использованием BlueBream я столкнулся с одним существенным неудобством. В конфигурационном файле приложения необходимо было подключить конфигурации всех компонентов, которые я использую. Под словом "всех" я понимаю не только те компоненты функционал которых я использую непосредственно, но и те от которых зависят первые. А это уже не менее сотни компонентов и уследить за ними всеми не так просто - очень легко допустить ошибку. Ну и сам факт того, что один и тот же пакет надо подключать к проекту в двух местах (в setup.py и configure.zcml) тоже увеличивает шанс появления ошибок.

пятница, 18 февраля 2011 г.

Buildout-рецепт для создания Django проекта

На днях опубликовал в "сырной лавке" свой buildout-рецепт для создания Django проекта - cykooz.djangorecipe. Рецепт основан на коде давно не обновляющегося рецепта от Jeroen Vloothuis - djangorecipe.

понедельник, 14 февраля 2011 г.

Напутствие для начинающих изучать BlueBream

Для меня в своё время наиболее сложным в изучении Zope3 (BB) было перейти на другой способ абстракции, который предоставляется базовым и вездесущим для ZCA паттерном "Адаптер". Около года я в вялотекущем режиме переваривал мануалы, изучал примеры и пытался, что то делать сам, но с трудом понимал - как все те кусочки, из которых состоит Zope3 и описаны в книге Филиппа, объединить в один работающий сайт.