10 июн. 2009 г.

Piwik - open source alternative to Google Analytics.

Есть, оказывается, целых два плагина для trac, с помощью которых можно приделать к нему статистику посещений ака гугл, но! Один из плагинов, вовсе не гугл статистика, как мне казалось ранее, а открытая альтернатива Google – Piwik.

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

screen-demo

9 июн. 2009 г.

Девочка узрела

В журнале F5 (www.f5.ru 15 08.06.09 — 14.06.09) опубликовали статью о девочке-китаянке, которая находит и закрывает китайские порно-сайты:

“Ей всего десять. И она — ночной кошмар китайской интернет-порнографии.
Маленькая бойкая девчонка отыскивает в Сети порносайты, заявляет о них
в полицию, а та их закрывает.”

Ссылка на pdf журнала:

http://www.f5.ru/uploads/numbers_pdf/228c68f910de743752c904ef8206315f.pdf

3 июн. 2009 г.

Дайджест интересного за несколько дней

Ext JS 3.0 RC2 Release

Интересное в этом посте - “Several new examples”:

- REST support for stores has been included

- multiple providers together

Uncharted 2: Among Thieves

Прекольная игруха. Надо смотреть ролик по ссылке…

Трейлер к игре: Tom Clancy's Splinter Cell: Conviction

http://games-tv.ru/treilers/tom_clancys_splinter_cell_conviction/gameplay_2 - мега супер. Геймплей похож на смесь хитмена и казино рояль (фильм про бонда).

Installing Django, Solr, Varnish and Supervisord with Buildout

- новый полезный рецепт buildout

Лучшие бесплатные CMS на файлах (движки сайтов без баз данных)

- субж.

2 июн. 2009 г.

Кандидатский экзамен по философии

Ровно год назад сдавал кандидатский экзамен по философии. Для облегчения жизни написал минималистический django-проект, в котором собрал ответы на вопросы по экзамену. Сверстал все в pure html и выложил в web: http://f.labwr.ru/. Экзамен написал почти не пользуясь на 4. Потом ставил эксперименты на этом проекте и для подтверждения результатов прикручивал аналитику гугла. В конце-концов убрал его, но через несколько месяцев снова опубликовал для подстраховки Маши, во время сдачи вступительных в аспирантуру.

После этого забыл про сайт на несколько месяцев. Какого же было мое удивление, когда я обнаружил, что на сайте ежемесячно около 3 000 посещений. Узнав об этом сразу обложил билеты контекстной рекламой.

Эксперимент продолжается.

Дипломы АСОИУ ТГНГУ 2009

В этом году решил побыть в роли рецензента дипломных проектов на кафедре ИВТ, а секретарь кафедры тому и рада – отправила ко мне, на данный момент, уже 8 дипломников (всего их около 60-ти должно быть). Большая часть защищается на этой неделе, поэтому читать долго некогда, но 20-30 минут на такие дипломы даже при очень вдумчивом чтении более чем достаточно.
В этом году волевым решением заведующего кафедрой нормоконтроль принимают руководители дипломных проектов (читай: не принимает никто).
Качество дипломов, однако, тоже ползет вниз. Большая часть – “асучивание складов”. Меня, как рецензента, просят написать считаю ли я тему дипломного проекта актуальной - приходится врать…

25 мая 2009 г.

Ребята из cural.ru развлекаются на официальном портале Администрации города Тюмени


В RSS ленту google reader пару раз уже падало сообщение вроде этого:

CURAL

Похоже так их менеджеры объясняют друг другу или клиентам на примерах как работать с CMS’кой.

20 мая 2009 г.

Django: RadioSelect для всех CharField с choices в форме

Давным-давно понадобилось мне сделать так, чтоб все поля с выбором значений в автогенерируемой django из модели форме были не селектами, а RadioButtons’ами. Задал я вопрос на форуме маньяков, но не получил на него ответа… Долгое время мне это было и не нужно, но теперь появилось осознание того, как это надо сделать.

Ниже код. В нем Zayavka – класс модели, ZayavkaForm – сгенерированная форма, __init__ - метод этой самой формы:



def __init__(self, *args, **kwargs):
opts = Zayavka._meta
for f in opts.fields:
if f.get_internal_type() == 'CharField' and f.choices:
ZayavkaForm.base_fields[f.name] = forms.CharField(label=zayavka.get_field(f.name).verbose_name,
help_text = zayavka.get_field(f.name).help_text,
widget=forms.RadioSelect(choices=zayavka.get_field(f.name).choices),
required=not(zayavka.get_field(f.name).blank))
super(ZayavkaForm, self).__init__(*args, **kwargs)

Может быть не очень изящно, но с задачей справляется.