Собственные фильтры полей в админке Django

30.07.2009

Django

Пока Правильное Решение проблемы страдает в джанговском Trac'е уже два с половиной года от смены майнтейнеров и архитектурной астронавтики, мне как раз потребовалось это сегодня для Афиши. Оказывается, никого ждать не надо , и это вполне решаемо уже сейчас, хоть и с небольшим хаком процесса регистрации. Задача У нас есть ...

GPS Data Logger

22.06.2009

Разное

"Dear Lazyweb..." Я тут подумал, что в отпуске очень хочу таскать за собой маленький лёгенький GPS-приёмничек, который бы тупо логил GPS-информацию со временем. Чтобы потом эти данные прошить в сделанные фотографии, чтобы потом на Яндекс.Фотках они автоматически к карте привязывались. Но вот проблема. Устройств таких в мире — полно, а ...

Кеш - не хак

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

Частные проблемы использования django-evolution

16.06.2009

Django

Сегодняшний день для меня ознаменовался эпичной битвой с django-evolution. С различными неудобствами этого приложения мы в разработке сначала Куда Все Идут, а потом Афиши сталкиваемся уже довольно давно. Сегодняшний же случай наконец заставил меня перебороть лень и изложить эти проблемы для публики. Должен, тем не менее, обязательно сказать, что не ...

Отрывание префикса пути

08.06.2009

Python

Как-то раз я уже веселил народ питоновой задачкой про move_month. Было весело и полезно, мне понравилось! Ловите новую задачку. Дано: абсолютное имя файла загруженного питоньего модуля sys.path — список директорий, в которых его можно найти для простоты положим, что пути в sys.path показывают на уникальные директории (на практике это может ...

Зачем нужны сигналы

На днях у меня в форуме возникли почти подряд два топика про сигналы. Оба напомнили мне давно закравшееся в голове подозрение о том, что для многих сигналы — это магия из серии "если что-то не выходит, наверняка для этого нужны сигналы" :-). Хочу раскрыть тему, потому как рамки форумного ответа ...

Четвертый

25.05.2009

Разное

Четвертый год моего блоговедения закончился довольно длинным творческим отпуском. Поэтому итоговый пост я пишу аж через 3 недели после 4 мая — реального дня рождения блога. Итоги Несмотря на то, что постов за прошедший блогогод я написал меньше обычного, парочку знаменательных событий вспомнить таки хочется. Просто для истории. Дописал и ...

DocHub? DocPad? DocBucket?

29.03.2009

Разное

Большая часть документации в интернете — отстой. Полный Отстой! Это при условии, что она вообще есть. Да, есть очень редкие исключения: Django, Python (в некоторой степени), но их исчезающе мало. Отчего так? От того, что у большинства программистов скилл формулирования мыслей, скажем честно, развит хреново. А тем, у кого он ...

Django 1.1 beta

26.03.2009

Django

Как многие, без сомнения, знают, недавно вышла Django 1.1 beta. Там в release notes все самое вкусное перечислено, а я немножко вокруг покомментирую. Одна из когда-то давно слезно просимых фич — загрузка объектов с неполным списком полей (aka "defer/only"). Раньше это делалось через .values(), но результатом запроса был тупой набор ...

{% media %}

21.03.2009

Django

Незабвенный герой Анатолия Папанова говаривал, что ежели человек идиот, то это надолго. Мне сейчас кажется, что я как раз в такой ситуации :-). Это я о том, как в джанговских шаблонах делать ссылки на JS, CSS и прочую media. Я всегда пропагандировал простой способ: прокидывать в шаблоны переменную MEDIA_URL, используя ...

Еще один

16.03.2009

Django

isagalaev@isagalaev:~$ curl -is http://afisha.yandex.ru/ | grep Server: Server: lighttpd / Pony Powered! Вот! Подробности позже. И, наверное, даже не у меня...

OpenID: мифы и суеверия

22.02.2009

OpenID

Составил тут небольшую компиляцию разъяснений по поводу различных недопониманий вокруг OpenID по мотивам комментариев к предыдущей статье, а также по своим предыдущим наблюдениям. Надеюсь, что получился хороший полный FAQ, который поможет разобраться тем, кто "слышал о", задумывается ввести у себя на сайте вход по OpenID, но питает естественное недоверие к ...

Антипаттерн входа по OpenID

Давно замечаю в использовании OpenID на разных сайтах одну и ту же особенность, которая меня, как пропагандиста технологии, сильно печалит. Написать об этом пост я все ленился, но недавнее замечание коллеги о том, не сделать ли у меня на форуме "нормальный вход", показало, что откладывать больше нельзя! Прежде, чем перейти ...

Задачка про move_month

21.01.2009

Python

Рефакторил сегодня древние уголки кода и наткнулся на две функции: add_month и sub_month, которые принимают дату и соответственно либо увеличивают ее на календарный месяц, либо уменьшают. Главное, зачем они очевидно нужны — корректная обработка перехода в следующий и предыдущий год. И вот, глядя на их код, у меня родилась задачка, ...

Кодировка статических файлов в lighttpd под Ubuntu

17.01.2009

Ubuntu

Только что удалось, кажется, более-менее правильно победить давно мучающую читателей "Учебника" проблему, которую на днях снова озвучили. Проблема, казалось бы, дурацкая и простая, но вот не давалась долгое время. Пишу этот пост-мортем, чтобы мне рассказали, как это сделать еще лучше, и чтобы это потом поисковиками находилось. Итак, есть статические .html, ...

Джанговские агрегации

15.01.2009

Django

Сделали: http://docs.djangoproject.com/en/dev/topics/db/aggregation/! Особо приглянувшиеся мне вещи: Store.objects.annotate(Count('books__authors')) Store — это магазин, у него many-to-many на Book, у которого есть many-to-many на Author. Тут делается join по всем нужным таблицам и group by на них. * Book.objects.annotate(num_authors=Count('authors')).filter(num_authors__gt=1) Я очень рад, что having не стали делать отдельным понятием. Это просто фильтр. А ...

Изменённые данные в форме

14.01.2009

Django

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

Dropbox

Я когда-то рассказывал, что для синхронизации файлов между домом и работой стал использовать subversion. Это устраивало меня до какого-то времени, но недавно я все это заменил на Dropbox, и пребываю нынче в свинячьем востороге :-) Начну с того, что было неудобно с subversion. Первую проблему я озвучил прямо тогда же ...

Как работает SM.Org

Недавно расквитался в первом приближении с давно висящей и давящую на голову задачкой: опубликовал исходный код всех Джанго-приложений, которые поддерживают разные части SoftwareManiacs.Org. И меня посетила мысль поделиться тем, как оно вообще у меня тут все живет. Сайт SoftwareManiacs.Org работает на VPS-сервере (у компании TekTonic) и представляет собой сборную солянку ...