среда, 29 ноября 2006 г.

“Бородавки” в Python (Python Warts)

Эта статья - перевод известной статьи Andrew KuchlingPython Warts.
Слово "wart" дословно переводится с английского как "бородавка", и именно в этом контексте используется в английском программистском сленге. Словарь Lingvo также содержит аналогичный перевод этого слова в том же контексте, уже для русского программистского сленга. В своей практике я такого термина в русском языке не встречал, но поверю словарю и не стану изобретать более "приятного" перевода :)

Python Warts — это то, что обязательно к прочтению начинающими программистами на Python, но также не будет вредно и для опытных зубров.

вторник, 28 ноября 2006 г.

Важное дополнение к статье о трансляции кодировок — HTML character entities.

В предыдущей статье я показал, как можно написать middleware для Django, которая транслирует данные запроса из "внешней" кодировки во "внутреннюю" и обратно. Обсуждение статьи в LiveJournal вскрыло серьезный недостаток первого подхода к решению данной проблемы.

вторник, 21 ноября 2006 г.

Трансляция charset в объектах request и response в Django

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

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

Что делаем? Пишем middleware.

пятница, 17 ноября 2006 г.

ScientificPython, распределенные вычисления

Разработчики ScientificPython включили в новую версию модуль для распределенных вычислений (анонс). Для организации вычислений запускаются master и slave-процессы, мастер раздает задания, slave их выполняют, и master собирает результаты. В принципе, должно быть не очень сложно организовать цепочки, в которых master-процессы могут быть slave для других master-процесов. Для коммуникации используется Pyro, что позволит распределить процессы по неограниченному количеству машин. Само собой, задачи могут быть и не только "научные", а сугубо практические. К примеру, распределенные поисковые алгоритмы.

вторник, 7 ноября 2006 г.

Декораторы функций и методов в Python

Начиная с версии 2.4 в Python введена новая синтаксическая конструкция — декоратор функции/метода. С ее помощью можно "декорировать" функции — дополнять их новой функциональностью без внесения изменений в сами функции и методы. Слово "декоратор" часто используется в связи с паттеном Декоратор, описанным в знаменитой книге "Банды четырех". Это не совсем тот случай, имейте в виду, хотя некоторое сходство имеется. В этой статье я опишу механизм декораторов и рассмотрю примеры его применения.

четверг, 2 ноября 2006 г.

Дескрипторы в Python

Попробую дать определение, что такое классы-дескрипторы. Классы-дескрипторы — это классы "нового стиля" (new-style classes), которые определяют один или несколько специальных методов, перечисленных ниже. Эти методы переопределяют процедуру доступа к атрибуту класса через класс или экземпляр класса (класс тоже нового стиля) в том случае, если в качестве этого атрибута выступает экземпляр класса-дескриптора. Кто понял это с первого раза, тому пирожок.

Постоянные читатели