Archive for December, 2007

Просмотр SQL запросов, сделанных Django ORM

Частая задача, которая встаёт при использовании Django в серьёзных проектах - знать, какие именно запросы генерирует Django ORM. Неподготовленного человека просмотр этих SQL запросов (вернее их количества) может привести в шок ) Например, если поле объекта является ForeignKey(null=True), то при выводе этого поля у множества объектов, на каждый объект будет делаться запрос для этого поля и даже select_related() не поможет.

Подобные проблемы решаются различными ухищрениями типа:
- http://web-brains.com/2007/12/06/selecte_related_and_foreign_key/
- http://piranha.org.ua/blog/2007/10/31/related-objects/

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

Настройка awstats, nginx и logrotate

Я уже четыре раза раза устанавливал связку awstas & nginx & logrotate и у меня сложилось более-менее внятное понимание работы этой троицы, о чём бы я и хотел рассказать. В первую очередь статья предназначена тем людям, которые решат использовать awstats & nginx на своих VDS и dedicated серверах.
 

Утечка памяти в Django ORM

Предыстория. Напарсил полмиллиона записей и решил их скриптом (на базе моделей и ORM django) обработать. Но вот незадача - на 143 тысяче скрипт умирал от нехватки памяти.

Стал я, значит, думать, кто виноват и что делать. Конечно, легче всего было свалить всё на django ORM. что я и сделал ) Найдя виноватого, я с чистой совестью пошёл читать всяческие документации и дискуссии в django developers на тему мемори ликов. Выяснил две вещи:
- я неправильно понимал работу django ORM
- memory leaks в django orm отсутствуют
 

Деньги, деньги, дребеденьги.

Мне 24 года, живу на съёмной квартире. У меня нет машины, ноутбука и я не разу не выехал за пределы своей страны повидать мир. Да, конечно, смотреть на мир с точки зрения монетизации собственной жизни немного наивно и неуклюже. Но иногда так стоит делать )

Если я в 2008 году не заработаю бабла, предлагаю официально считать меня долбоёбом )

select_related() and ForeignKey(null=True)

Есть такая штука в django - selecte_related. Если вы присовокупите её к какому-нить QuerySet, то она сделает вот что: начнёт сказать по полям ForeignKey объектов из QuerySet и подгружать объекты, если у тех есть ForeignKey, то у них тоже подгрузит что-нибудь и т.д. Глубину проникновения можно регулировать параметром depth. Но есть у этой штуки один недостаток: она не работает с ForeignKey, которые могут быть null.
 

Чо ваще происходит?

Движок блога обновлён. Теперь он работает на http://trac.piranha.org.ua/ [trac.piranha.org.ua]
Я решил присоединиться к разработке движка Александра Соловьёва.
Все старые комментарии я удалил т.к. не хотелось возиться с отсеиванием спама и конвертацией их в новый формат. Если кто-то захочет использовать наш движок у себя на сайте, будем очень рады - нам нужны бетатестеры.