понедельник, 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 и описаны в книге Филиппа, объединить в один работающий сайт.

вторник, 5 октября 2010 г.

Установка gevent в FreeBSD

Один из моих сайтов на Zope2 использует в качестве WSGI сервера стандартный сервер из Paste. Я решил заменить его на более быстрый вариант - gevent.
Только вот незадача - setup.py из пакета gevent написан без учёта особеностей FreeBSD. В результате инсталятор не находил libevent, который необходим для компиляции расширеня для питона. Кроме того, setup.py содержал в себе вызов функции, которая пересобирала С-расширение в случае изменения исходников. При этом происходил прямой вызов компилятора cython, который в FreeBSD не доступен как системная команда (расположен в другой папке), и у обычных пользователей даже нету прав на его вызов.
Единственное подходящее в моём случае решение - пропатчить setup.py.
Написал о косяке в русскую группу gevent, надеюсь мой патч примут.

четверг, 9 сентября 2010 г.

Делаем из Plone 4 сервер CAS

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

вторник, 17 февраля 2009 г.

Перспективы Zope3 в современном мире?

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

среда, 8 октября 2008 г.

Особености работы IntIds при создании объекта "сайт".

Вот решил тут перейти от теории к практике и написать небольшую CMS-ку. Написал скин использующий z3c.layer.pagelett. Написал объект "Сайт". Сделал форму для его добавления используя z3c.forms. Естественно любой сайт должен содержать стандартный набор утилит, которые надо в нём создать и зарегистрировать. И первая из этих утилит это генератор уникальных числовых идентификаторов для объектов сайта - IntIds. Эта утилита обрабатывает событие добавления объекта в контейнер, тем самым регистрируя добавленный объект. Вот тут я и натолкнулся на мистику.