Мультисайтовость в django trunk
Наконец-то появиалсь функциональность мультисайтинга в Django Framework. Напомню что раньше надо было для каждого сайта держать отдельную instance фреймвока (в смысле или отдельный fastcgi процесс или отдельно сконфигурированный виртуальный хост с mod_python).
В конфигурации проекта (settings.py) надо указывать SITE_ID, который в базе соответствует какому-то домену. И для каждого домена нужно было держать отдельный settings.py с соответствующим SITE_ID из базы.
Теперь в транк попал патч и новый middleware, который позволит в рамках одного проекта обслуживать несколько доменов. Домены будут определяться ”на лету”.
Теперь можно писать вот такие конструкции:
HOST_MIDDLEWARE_URLCONF_MAP = {
"company.com": "mydjango.app.company_urls",
"blog.example.com": "mydjango.app.blog_urls",
}
Подробнее на сайте автора и тикет.
Борьба с утечкой памяти в ruby (mephisto и sqlite) 3
Пока мой блог развивается и читателей у меня не сильно много, позволяю себе немного заняться его наворачиванием и переделкой.
В очередной раз решился побороть проблему утечки памяти движка моего блога typo. Суть в том, что по непонятным для меня причинам, rails движок этот тек самым наглым образом (до 200 Мб за сутки). Обидно было больше потому, что на хостинге крутятся еще несколько проектов на rails и у них с памятью все стабильно. В общем долго я плевался на этот typo и решил в итоге попробывать перейти на новый и активно развивающийся движок Mephisto.
Мой Typo работал на sqlite базе и поэтому Mephisto я решил ставить тоже на sqlite. Но какое было разочарование после вечера ковыряний и переделываний… Mephisto также противно тек.
Отдельно хочу написать о впечатлениях о Mephisto. Движок уже довольно обкатанный, работает нормально. Из typo сконвертировался на раз. Все делал по доке Converting Typo to Mephisto из официальной wiki. Есть уже неплохой набор тем, из которых можно намостырить что-то свое. Единственной проблемой после перехода на Mephisto были поломанные slug у каждого поста. Их видать скрипт переноса тупо ставит в значение title. А русский, как известно, в урлах отображается не совсем читабельно :-)
Возвращаясь к теме утечки памяти оказалось, что виноват в этом не typo, а ruby sqlite бекенд к базе. Обидно, но нашел я эту информацию как раз в рассылке Mephisto. После этого я решил сменить базу с sqlite на postgresql и остаться на typo. Но тут оказалось не все так просто. Почему-то база у меня никак не смогла встать красиво. Нехватало sequences в postgresql schema. У меня в запасе были еще два способа добиться результата. Я решил пойти самым простым. Сконвертировал базу в MySQL. Её schema была в порядке.
Перенос данных очень удобно делать с помощью скрипта из комплекта Rail Application Installer, называется rails-backup и rails-restore. Данные конвертируются в YAML и потом восстанавливаются в любую базу. Конвертация прошла успешно и я жду что текучка закончится. Если нет, то в запасе есть еще одна идея :-) В дебаггер совсем не хочется лезть :-) надеюсь обойдется.
Update: Вторым и последним способом был установка Mephisto на Postgresql, но все обошлось. Так что блог остается под управлением Typo и на базе MySQL.
Просмотр картинок в админке django
Пример как можно просматривать thumbnail-ы в админке django.
Достаточно в модели добавить метод image_preview который бы возвращал html-тег . Только нужно включить для метода опцию allow_tags. И добавить этот метод в свойство list_display класса конфигурации админки Admin.
См. пример кода.
def image_preview(self):
return "<img src='%s' alt=''/>" % (self.get_image_url())
image_preview.allow_tags = True
class Admin:
list_display = ('image', 'image_preview',)
Мои пять копеек про Exception #2
Прошла еще одна конференция в Киеве по языку программирования Python—Exception #2. И я там был, как говориться, мед пиво пил :)
К сожалению послушать смог только один доклад, Евгения—“Взаимодействие Python с другими языками”.
Впечатление крайне положительное от доклада. Чувствуется плотный так сказать background профессиональный. Хоть у меня направленность по программированию в сторону веба, но такие академические знания нужны любому программисту в любой сфере.
Могу сказать отдельно что мне больше всего был интересен момент про оптимизацию python-программ. Были наглядные примеры и с кодом и с результатом на вполне реальной задаче. Теперь некоторые моменты лучше уложились (по полочкам :-) в голове.
Сделал немного фотографий, к сожалению качество практически никакое из-за слабого освещения в зале (вспышка не справилась). Фотографии смотреть тут.






