среда, 27 сентября 2006 г.

Межпроцессная диспетчеризация событий в web-приложениях Python, часть 1

В своей статье о диспетчеризации событий в Python я описал использование пакета PyDispatcher, который используется в качетстве диспетчера событий в среде Django. Это — хороший способ, позволяющий различным частям приложения, которые могут быть не связаны друг с другом непосредственно, успешно взаимодействовать и реагировать на изменения. Такая схема прекрасно работает в том случае, если все приложение функционирует в рамках одного процесса в системе.

понедельник, 25 сентября 2006 г.

Диспетчеризация событий в Python

Если вы смотрели исходный код Django, вы могли заметить такие строки:

[python]
from django.dispatch import dispatcher
......
# ниже
dispatcher.send(signal=signals.pre_init, sender=self.__class__, args=args, kwargs=kwargs)
[/python]

Что они делают? Это - вызовы функций библиотеки PyDispatcher, которая с некоторых пор поставляется вместе с Django и используется для диспетчеризации событий в процессе исполнения программы на языке Python.

среда, 20 сентября 2006 г.

О Python, code style


Python требует быть дисциплинированным с отступами для блоков кода.
Про то, что это хорошо сказывается на читабельности, мы знаем. Но у этого требования есть еще и обратная сторона. Если много вложенных блоков, то это частенько требует много отступов, и из-за этого ясность кода на python страдает - читать лесенками не очень привычно, и код перестает выглядеть по-питоновски (часто просто ширины экрана не хватает).
Т.о. python просто заставляет выделять циклы и прочие куски кода определенного назначения в отдельные классы и функции. После этих процедур код становится настолько простым и понятным, что жопа, по привычке чуствующая подвох, иногда подкидывает подозрения, что получившийся код просто не может работать — слишком уж он прост и напоминает псевдокод.
Обычно, делая что-либо на python, я занимаюсь таким рефакторингом on-line машинально, и как бы по собственной воле. Недавно я осознал, что язык меня к этому просто принуждает.
И правильно делает.

понедельник, 11 сентября 2006 г.

Строители парусников


Пару дней назад терпел шоппинг, скучал. Хорошо, когда попадаются рядом магазины ненужных вещей - "мужские" магазины с рядами красивых, совершенно безобидных моделей оружия, магазинчики с глобусами, картинками и заморскими поделками, магазины с цветами в горшках ...
В одном таком стояла модель парусника. Двухмачтового. Любоваться можно очень долго. Даже не потому, что парусник просто красив. Восприятие приходит как бы слоями. Сначала смотришь на силуэт. Обычно на этом и останавливаешься, но только если нет времени заглянуть на следующий слой. Сотни мелких деталей, мачты, бушприт, все на своем месте, ничего лишнего, у каждой детали свое понятное назначение.
У меня было еще несколько минут, и я увидел то, на что раньше не обращал внимания. Веревки. Да он весь просто обмотан веревками! На небольшой модели их сотни метров наверное. Понимаешь, что вся конструкция, абсолютно вся, ну разве что за исключением корпуса, который без всего остального просто никуда не поплывет, просто не в состоянии не то что выдерживать хотя бы малейший ветерок, но даже быть устойчивой без сотен канатов, веревок и бечевки, сотен блоков и десятков лебедок, хитро развешанных и натянутых по всему судну.

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

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