Архив за [undefined]

5 инструментов без которых я не могу работать продуктивно

Принимаю эстафету от FX'а

Мой список:

  1. Eclipse - уже всеми частями тела прилип к этой IDE, хотя и не всё в ней нравится, но всё равно без неё не представляю себе работу. Недавно открыл для себя EasyEclipse - не нравится стало меньше чего:)
  2. GoogleReader - как потрясающий источник информации и знаний(!). Там у меня уже около 400 фидов. Не все, конечно, полезные и толковые (а чистить как вы понимаете лень:)), но есть такие которые дают мне ценнейшую информацию. Если надоедает работать и хочется отдохнуть, то читаю парочку отобранных записей. Расслабляет:)
  3. Firefox 2 - тормозит жутко, но обвешанный плагинами - не имеет альтернативы
  4. Python Library Reference - хоть и не совсем инструмент, но работы я без документации себе не представляю
  5. Интернет как таковой

Это конечно не всё, но что первое пришло в голову, а значит самое ценное:)

Передаю эстафету:

P.S.: Обещанный пост про кеширование готовится. Задержка связанна с небольшим завалом на работе.

Кеширование. Инвалидация сигналами. Аперитив

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

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

Ещё хочу отметить, что система уже некоторое время успешно применяется в данном блоге.

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

Используя такой мощный инструмент как сигналы в django, который позволяет независимым приложениям и компонентам в них взаимодействовать друг с другом, можно решить эти проблемы. Обычно сигналы сообщают, что в системе произошло некоторое событие и на него ...

Мультиязычность. Проблемы выбора?

Знак вопроса в заголовке заметили? Не спроста он там. Поскольку если в вопросе индексирования я утверждал, что выбрать есть из чего и это маленькая но проблема (как и всегда чем больше вариантов, тем больше головной боли по поводу выбора лучшего), то тут, на мой взгляд, всё более очевидно.

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

Итак, сейчас существует несколько реализаций для мультиязычности контента базы:

Есть ещё, как бонус, ряд приложений, которые позволяют редактировать gettext *.po файлы через стандартную джанговскую админку:

И во всех группах есть свои явные лидеры по удобству и функциональности.

Начнем разбор первой группы, где приложения для предоставления перевода контента из базы данных.

Первым на растерзание попадает transdb. Идея хранить перевод поля модели в виде сериализованных питон-словаря - только мне кажется бредовой? Как делать выборки по отдельным языкам? Как поиск осуществлять? Как в админке с этими словарями работать? Много вопросов. Так же, большой удар по производительности - всегда будут выбираться все переводы для конкретного объекта. Необходимость в специальном фильтре для вывода значений в шаблонах. В общем явно плохая идея - хранить перевод в ...

А вы уже видели новый неголливудский блокбастер о newforms-admin?

Если нет, тогда обязательно посмотрите: http://blog.michaeltrier.com/2008/2/9/django-screencasts-7-newforms-admin-i

Смотреть, откинувшись на спинку стула, тем, кто уже давно присматривается к ветке newforms-admin, но боится её сам попробовать.

Режиссер, актер и продюсер Майкл Триер. Он же обещает сиквел с новыми поворотами сюжета и счастливым концом.

Ждем....

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

Допиливаем djapian. Встречайте django-xapian!

Обновление от 24 февраля 2009 года: проект я прекратил развивать, т.к. получил полный доступ к проекту Djapian. Все нижеперчисленные идеи уже туда портированы, успели проэволюционировать и дополниться другими. Так что смело пользуйтись самим Djapian.

Проблема выбора реализации для индексирования/поиска на сайте, поднятая мною недавно, пришла к своему разрешению. Как я уже говорил, остановился я на djapian. Но в том виде, в котором было данное приложение, его использовать было практически невозможно.

Решил немножко подкрутить там гайки и обтесать под свои нужды. Но поскольку изменений накопилось много, то я завел отдельный проект для моей ветки. Назвал я его просто и без затей django-xapian. И конечно же выкладываю в открытый доступ свои наработки. Вот домашняя страничка проекта http://webnewage.org/projects/p/django-xapian/

Основные изменения по сравнению с оригиналом:

  • Код подтянут до транка джанги
  • Исправлен NameError, который ставил крест на использовании оригинала:)
  • Объекты обрабатываются только при срабатывании пользовательского триггера, а не просто по событию
  • Перенесен сервис индексировани из отдельно скрипта в команду manage.py
  • Оптимизирован процесс индексирования - убраны лишние действия, которые выполнял исходный скрипт, не отфильтровывая неактуальные уже изменения в объектах.
  • Убрана махинация с неймспейсами
  • Добавлена возможность индексирования не только непосредственно полей данных модели и но результатов выполнения методов, либо связанных ...