25 дек. 2010 г.

“Проблема детства”

Господа, подскажите пожалуйста, что за “проблему детства” упомянул Д.А. Медведев в итогах года? У детства есть проблема? Что за проблема?

Видимо теперь, когда Анатолич об этом заговорил, у детей действительно возникнет масса проблем - за них теперь возьмутся.

Далее с ответов Д.А. в видео.

Далее по ходу видео уточняют, что говорили про проблемы не одиноких детей и не наркоманов. Что же за проблема-то тогда?

Медведев: “нужно в регионах сделать полномочных представителей оп правам детей”. Блин, в регионах появятся свои Астаховы со схожими полномочиями. Мало вам было одного, нате кучу.

Они будут проявлять такое же рвение – писец.

Перлы:

“В прошедшем году мы вышли из кризиса” - потому то видимо и происходит повышение налоговых пенсионных ставок.

Д.А. про Америку: “Главный недостаток демократий – приход к власти людей с разным мнением…” (действительно, у нас такой шнягой не болеют - вся вертикаль с удовольствием делает общее дело, и название тому делу “курс президента”).

Владение землей - “возможность жить по человечески”. Прорывает все же, понимает, что не по человечески живем.

“Коррумпированных деятелей надо задвигать назад”. Да нет, Анатолич, их надо судить. Задвигать никого никуда не надо, т.к. пока вы продолжаете задвигать, число коррупционеров только растет.

27-ая минут: спасибо, кэп!

В общем впечатление, что смотришь театральную постановку, в которой главный герой говорит не просто по тексту роли, а ещё и зная реакцию зала добавляет очевидно приятные для людей обещания, которые все равно никто никогда выполнять не станет.




24 дек. 2010 г.

Django и django-cms

Сегодня (или вчера?) вышли 2 важных для меня промежуточных релиза: первый Django 1.3 beta 1 и django-cms-2.1-rc-1. Нужно ли говорить, что django-cms 2.1 мы все ждем уже почти год? В последнее время сообщество, работающее на этом проект сильно перетрясли. За последний месяц там появилось 2 мейнтейнера и вообще как-то все оживилось и все зашевелилось. Правда, не обошлось и без казусов – на сколько я понял в порыве интенсификации развития версии 2.1 убили переводы к 2.0.2 версии (на трансфикс) для русского языка.

Попутно с первой бета к django вышли 2 секуритификса для версии 1.1 и 1.2, т.е. 1.2.4 и 1.1.3. Такие вещи я ставлю не глядя, за что меня конечно нужно срочно гнобить в комментариях.

UPD. Почему мы ждали django-cms? Потому что там есть Frontend Editing.




linode и slicehost

Да, братцы, linode круче slicehost в 1000 раз:

  • пинги до ДЦ в London, England, UK – в районе 90-110 мс. (этот ДЦ появился недавно).
  • 512 ОЗУ по цене 256 в slicehost’е
  • чрезвычайно адекватная админка с красивыми графиками
  • и, по-моему, более адекватное железо и гипервизор.

На 1 линод 512 мне удалось перенести проекты с 3 slicehost’ов 256. У меня свободный своп и проекты летают, в сравнении со слайсом. При том, что никакого кеша на них пока нет. Вот так-то. Советую использовать.




23 дек. 2010 г.

Новости, Django-multihost и uwsgi.

15-го ноября в 23:23 у меня родился сын – Дениска. Здоровый пацан с весом в 3.470 и ростом 52 см. С тех пор было как-то не до ведения блога.


В книге “Человеческий фактор: успешные проекты и команды” (Том ДеМарко, Тимоти Листер), купленной по совместной акции АйМобилко и Альфа-банка (я у них каждый месяц покупаю виртуальную карты для оплаты своего VPS’'а), вычитал про интересную особенность мозга: когда работаешь в наушниках, та часть мозга, которая отвечает за озарения, внезапные прозрения и вообще техническую гениальную-виртуозность тупо отключается. Она занята прослушивание музыки. Так что если хотите не просто программировать, а программировать с озарениями и проблесками творческой мысли – работайте в тишине. Для меня, кстати, это значит, что день придется делить на 2 рабочих куска с 8 до 11 и с 22 до 24, т.к. только в эти промежутки некому меня отвлекать.


Кстати, о моем VPS’е: недавно пришлось срочно перенести на него проект с десятком инстансов, запущенных под разными gunicorn’ами (с разными настройками). Нужно ли говорить, что такой проект кушал очень много памяти, а поскольку каждый инстанс не высоконагруженный (20-30 уников в день), то такой подход – неоправданная расточительность.

Решать такие проблемы можно с помощью django-multihost. Это такая middleware, которая переписывает SITE_ID на лету, на основе сравнения кусков HTTP_HOST с доменами прописанных сайтов (django.contrib.sites).


В 14-ой федоре, которая теперь у меня на рабочем десктопе, в репах nginx 8.53. Для меня эта версия примечательна поддержкой uwsgi,  достаточно просто конфигурируемый в таком окружении (uwgsi в тестах производительности занимает первые места).

Если ещё не пробовали – попробуйте.




26 нояб. 2010 г.

Вечерняя поверка в Пхеньяне

Как и всегда - гениально!

Конвертор .РФ в .xn--p1ai

С этими новыми .РФ доменами сплошная морока. Нужно прописывать их в виде .xn—p1ai, а в logol.ru эта форма нигде не отображается. Ну вот и сервис в помощь нашелся:

http://xn--b1abai3aqb.xn--p1ai/ (гоголев.рф)

Вообще, можно конечно и без него обойтись: вводите .РФ домен в адресную строку chrome-браузера, копируете в буфер и вставляете в блокнот, например.




19 нояб. 2010 г.

Как ссориться с почтой.

Если читать лень, то суть поста в том, что у почты есть телефонная “линия качества”, которую они не афишируют.  Номер линии 8-800-2005-888.

10 нояб. 2010 г.

8 нояб. 2010 г.

Линкотека 8.11.2010

Интересный проект для администрирования postgresql схем, пользователей и прочего:

http://pypi.python.org/pypi/django-postgresql-manager

 

Расписания для гостиничных номеров (надо ходить по ссылкам на странице, чтоб найти скриншот):

http://pypi.python.org/pypi/ZaK/0.4

snap1

 

Новый эпизод подкаста Django Dose:

http://djangodose.com/podcasts/community-catchup/episode/30/

 

Новые рецепты для Django на русском:

http://djbook.ru/examples/

 

Все уже используют, а я только раскачался. Встречайте Django-SocialAuth и пост о нем:

http://uswaretech.com/blog/2009/08/django-socialauth-login-via-twitter-facebook-openid-yahoo-google/

 

Из комментов к одному из предыдущих постов про вконтакт приложение для merchant API вконтакте от kmike:

http://pypi.python.org/pypi/django-vkontakte-merchant

 

Ещё приятная новость: в программе Вести.net  Плюшев рассказал об отказе Microsoft от silverlight в пользу html5. Стандарты становятся стандартными, ура!




28 окт. 2010 г.

Удивительное рядом * 2

Сегодня с утра, после того, как отвел сына в школу, включил обновление приложений на моем HTC Hero. FBReader обновился до версии 0.7.12 и начал валится с ошибкой. В FBReader’е (а может это android такой) в таких ситуациях предлагается отправить traceback разработчику. Так вот, я его отправил и лег спать (8:19 (GMT+05:00)), а в 8:22 мне пришел ответ от разработчика “Fixed in 0.7.13, sorry.”. В 10 утра я проснулся и скачал 0.7.13 версию, в которой этого бага уже не было. Удивительные скорости реакции, не правда ли?

 

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

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

В какой-то момент сна я понял, что хочу в нем оказаться (материализоваться или что-то в этом роде) – это вторая часть сна. В ней я уже по всем законам физики в своем привычном теле путешествую по этому же городу, но, конечно, по значительно меньшей его части. В какой-то момент я дохожу до большой стройки с плитами разложенными в форме какой-то сложной фигуры-фундамента для будущего здания. Я прохожу этот участок и оборачиваясь вижу, что где-то позади произошел взрыв. Это не смущает меня, но дальше я двигаюсь быстрей.

В какой-то момент я оказываюсь на песчаной дорожке, по которой идут люди, но к этому моменту от долгого бега у меня кончаются силы и я падаю лицом вниз прям на эту дорожку. Голова моя, однако, при этом повернута на лево и я вижу как ко мне приближается девушка в фиолетовом плаще (или пальто – сейчас я уже не так хорошо помню). В ней я узнаю девушку, с которой встречался ещё в школе. Мы вместе идем дальше. Разговариваем. Среди прочих тем выясняется, что я нахожусь в альтернативной реальности, в которой мы с ней не расставались. У нас есть сын Пашка, которого мы так назвали по совету друзей (были действительно такие друзья, но чтоб они что-то такое советовали я не помню). Во время этой беседы, всего содержания которой я передавать не стану, я вижу где-то справа за домами ещё один взрыв, похожий на первый. Через некоторое время я просыпаюсь, но в сознаний у меня остаются чьи-то слова, мол: “не бойся оказаться в эпицентре взрыва (которые происходили на фоне), бойся проснуться, т.к. тогда ты не останешься в этой реальности”. Видимо, чтоб в ней остаться, нужно именно во взрыв попасть?

 

Как проснулся, сразу вспомнил пост про чьего-то друга, который употреблял в разговорах фразу “в той жизни”, обозначавшую принадлежности описываемого им события ко второй жизни этого человека – жизни во сне.

 

UPD.




26 окт. 2010 г.

SuperBoxSelect для ExtJS

Он реально крут! Советую всем, кто когда-либо собирается делать формы на ExtJS присмотреться к нему:

http://technomedia.co.uk/SuperBoxSelect/examples3.html

Наиболее приятная (для меня) его часть в том, что допилить djangoextjs для генерации форм с ним сможет даже однорукий дебил.




24 окт. 2010 г.

Ext JS 3.3.0

11 октября вышла 3.3.0 версия ExtJS. Список изменений можно смотреть по адресу http://www.sencha.com/products/js/CHANGES_ext-3.3.0.html. К сожалению, чуда не свершилось – в списке изменений нет исправлений в работе форме через ext.direct, а формы не сабмитятся Печальная рожица.




22 окт. 2010 г.

Updates: django-reversion и cmsplugin_gallery

Хочу акцентировать ваше внимание на двух инструментах для django-cms:

http://github.com/etianen/django-reversion (вообще, можно использовать в проектах на джанго без django-cms) – позволяет хранить ревизии объектов, в django-cms используется для восстановления удаленных страниц.

http://www.django-cms.org/en/extensions/gallery-plugin/detail/ – галерея с Drag&Drop для 2.1 версии, которая все никак не появиться…




20 окт. 2010 г.

Браузеры в песочнице

Протестировать свою очередную веб-поделку во всех популярных браузерах порой не просто, а держать в одной ОСи установленными более 2 версии IE вообще невозможно (или возможно?). Аналогичные проблемы? “Песочница” в помощь: http://spoon.net/Browsers/ (Microsoft Internet Explorer 6-9beta, Mozilla Firefox 2 –4beta, Google Chrome видимо 5 и 6, Apple Safari 3-5, Opera 9 и 10).




17 окт. 2010 г.

Changing Education Paradigms

Прекрасная презентация о необходимости изменения (в широком смысле) образовательной системы. Очень советую посмотреть.

14 окт. 2010 г.

Перепост по розыску г. Тюмень

Перепост по розыску г. Тюмень



'''
12 октября 2010 года из дома по адресу: г. Тюмень, ул. Комбинатская, 42-а, ушла и до настоящего времени не вернулась Анисимова Анна Андреевна 1998 года рождения.
На вид 11 лет, низкого роста, телосложение худощавое, лицо овальное, по цвету смуглое, глаза голубые, волосы волнистые, светло-русые.
Одета: плащ тёмно-зелёного цвета, сапоги чёрного цвета.
Последний раз Анисимову Анну видели на перекрёстке улиц Л. Толстого – Пролетарской, недалеко от стройки, она разговаривала с незнакомым мужчиной, которому на вид 30 – 35 лет, лицо круглое, щёки полные, среднего роста, полного телосложения, на голове кепка, одет в куртку, брюки тёмно-зелёного цвета. Недалеко от них стояла автомашина «Жигули»-классика тёмно-зелёного цвета.
Предположительно, может находиться в районе садоводческих обществ д. Метелёвой.
Всем, кто располагает сведениями о местонахождении Анисимовой Анны, просьба обратиться в отдел милиции № 8 УВД по г. Тюмени по телефонам: 43-02-02, 79-41-64, 29-11-50 или 02.
Контактные телефоны родителей: 8-922-485-34-00, 8-912-994-19-78.
'''

К.О. об excel в python.

Недавно я задавался вопросом о изменении существующих файлов excel в python. В процессе изучения задача обросла новыми требованиями, но все же стало ясно, что продолжать пользоваться pyExcelerator для генерации “похожих” на существующие файлы клонов я не хочу (долго, сложно, муторно, не точно). На помощь пришел кэп – сайт называется http://www.python-excel.org/.

Там ссылки на 3 библиотеки xlrd (чтение), xlwt (запись) и xlutils, которая объединяет использование первых двух. Кроме того, на сайте есть ссылки на примеры и документацию.




12 окт. 2010 г.

Вконтакте и джанги с питонами.

Обертка для методов API Вконтакте:

http://bitbucket.org/kmike/vkontakte/src/

http://bitbucket.org/kmike/django-vkontakte-iframe/src

Документация по методам:

http://vkontakte.ru/page2369282

Есть ещё мерчант, хотелось бы поиметь нативное API и к нему:

http://vkontakte.ru/pages.php?o=-1&p=Merchant%20API

но я тут не один такой умный

http://moikrug.ru/vacancies/168071264/




ExcelResponse

Опробовал ExcelResponse с http://bitbucket.org/kmike/django-excel-response/src.  Понравилась возможность выгружать эксель вот таким простым способом:


def excelview(request):

    data = [

        ['Column 1''Column 2'],

        [1,2],

        [23,67]

    ]

    return ExcelResponse(data, 'my_data')


Далее, буду переписывать под свои нужды, т.к. мне почти всегда нужно переопределить default стиль оформления.

Было бы конечно круто найти инструмент, позволяющий писать в готовый шаблон данными, но мне пока не удалось. Может быть читатель был удачливее меня?




7 окт. 2010 г.

Используем “укротитель” ссылок от Google в django.

На самом деле, кончено не “укротитель”, а “укорачиватель” ссылок: http://djangosnippets.org/snippets/2220/


import urllib

import json



def GooGL(url):

    params = urllib.urlencode({'security_token'None'url': url})

    f = urllib.urlopen('http://goo.gl/api/shorten', params)

    return json.loads(f.read())['short_url']


Пример для адреса сниппета:


>>> = 'http://djangosnippets.org/snippets/2220/'

>>> GooGL(l)

'http://goo.gl/HSal'


5 окт. 2010 г.

Django 1.3

Релиз планируется на 17 января 2011. 18 октября уже наверное можно будет пощупать нововведения: логирование и основанные на классах views (подробней на djangoproject.com).




Сказ о inlineformset_factory в Django

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


# in views

from django.forms.models import inlineformset_factory

...

@render_to('my_template.html')

def step2(request, hash):

    h = get_object_or_404(ModelWithHash, hash=hash)

    MyFormSet = inlineformset_factory(ModelWithHash, \

                RelatedWithModelWithHashModel, extra=1)

    if request.POST:

        formset = MyFormSet (request.POST, instance=h)

        if formset.is_valid():

            formset.save()

            formset = MyFormSet(instance=h) # Затер лишние формы

    else:

        formset = MyFormSet(instance=h)

    return {

        'formset':formset,

    }


Уже используете? Где пригодилось?




29 сент. 2010 г.

А кому job’овый сайт?

http://pypi.python.org/pypi/django-jobs

Демо-версия django-проекта:

http://demoboard.jobboardshq.com/

 

Видимо, за использование онлайн-версии, как сервиса, они собираются брать деньги:

http://www.jobboardshq.com/pricing/




Такой домашний Гвидо ван Россум



UPD:
Брэд Фитцпатрик

Собрать мысли в кучку: мониторинг качества кода в Django-проектах

Очень советую всем django-фанам хотя бы просмотреть слайд доклада

“MONITORING CODE QUALITY IN YOUR DJANGO PROJECT”

Peter Baumgartner - DjangoCon 2010

http://lincolnloop.com/static/slides/2010-djangocon/code-quality.html#slide1




28 сент. 2010 г.

Библиотека для генерации xlsx файлов (python)

http://xlsx.dowski.com/
Полезность библиотеки можно было бы ставить под сомнение пару лет назад, теперь её использование выглядит логичным, новые версии офиса проникают на компьютеры офисных работников.
А что думает по этому поводу читатель?

27 сент. 2010 г.

Графики на Open Flash Chart из python’а

Нашел крайне интересную штуку для рисования графиков, использующую Open Flash Chart. Сырцы тут: http://github.com/btbytes/pyofc2, ну лучше начинать знакомство с этой страницы: http://btbytes.github.com/pyofc2/. Тут есть демо-версии графиков, с кодом на python.

image 

А для django можно использовать в качестве опоры демо http://github.com/btbytes/djofc2_demo.




Рекомендую gunicorn на nginx

Друзья, с удовольствием рекомендую все попробовать gunicorn в связке с nginx. Такое содружество удобно и быстро. Я правда, пока не могу сказать, что достаточно долго тестировал связку. В интернетах не так много материалов по настройке, но пусть вас это не останавливает.




19 сент. 2010 г.

wordoff.org на Django

На прекрасном сервисе, который я вчера использовал для упрощения своей нелегкой жизни :), оказывается используется Django. Как не сложно догадаться из названия, сайт чистит текст от разметки Word’а. Тому я уже написал, что у него выставлен DEBUG = True.

image




6 сент. 2010 г.

Конец батареечной эпопеи

Вот и закончилась успешно история о покупке мной новой батарейки для моего рабочего ноута. Началось все с неудачного опыта, но я продолжал поиски и нашел  www.powerbatt.ru. Внимание, это не реклама, а мое личное мнение: фирма реально хороша! И пусть Вас не смущают надписи “Title” в заголовке страницы, неправильно сверстанные шаблоны автоматических писем от CMSки и прочие мелочи – батарейки они привозят.
Мне например, после оплаты 1 сентября, аккумулятор отправили EMS’ом из default city в Тюмень. Посылка пришла на “сортировочный пункт” в Тюмени 3-го, а получил я её в руки сегодня.
Общение с консультантом тоже весьма порадовало. Я попал на Шаповалова Максима, который стойко вынес все мои нападки и ответил на все вопросы. Я даже в начале звонил их секретарю, чтобы убедится, что такая фирма существует. Секретарь немного смутившись ответила: “да, мы существуем” :)).
Батарея держит около 5 часов. Бе-бе-бе!

UPD. Батареи хватило примерно на 10 месяцев, после чего он сдохла. Директор с прошлой работы покупал там же батарею для своего sony - сдохла через 6 месяцев.

26 авг. 2010 г.

django-projector – годная (с оговорками) альтернатива trac’у

django-projector – это инструмент управления проектами, написанный на django. Он умеет много всего интересного, но пока не оброс неизбежной нелогичностью состыковок этого множества. В отличии от trac’а он “из коробки” заточен под большое кол-во проектов  (судя по демо, на которой, кстати, надо регистрироваться) и поддерживает деление на команды.

Авторы, видимо замученные гонениями общественности, оправдываются “Don't get us wrong, Trac is great tool but we believe that django's pluggable applications are far easier to configure and deploy.” и тут с ними трудно согласится, хотя звучит вроде бы, логично (установить и сконфигурировать всё это, ещё и написанное по разному – тоже задача не для новичка).

Да ,ещё: django-projector работает с mercurial, а поддержку других scm пока только планируют.

В общем, надо будет как-нибудь попробовать…




Цены на звонки в Россию из Gmail

Статья на хабре о звонках из ГуглоПочты http://habrahabr.ru/blogs/google/102657/

Russia
$0.04

Russia - Globaltel
$0.07

Russia - Mobile
$0.06

Russia - Moscow
$0.02

Russia - Saint Petersburg
$0.02

 

На мой взгляд, вполне конкурентные.

Цены взяты со страницы https://www.google.com/voice/rates




24 авг. 2010 г.

Cx_Oracle, XE Client и собственно Oracle

Я уже писал, что под виндой отхватил кучу багов и зависаний при работе с XE Client’ом Oracle из cx_Oracle (python-ячья библиотека). Чудесным образом прошлый раз проблема решилась, но недавно (а ничего не менялось) возникла снова, причем, с удвоенной силой (стало валиться и намертво вещать консоль в два раза чаще). Очередное прозрение заключается в использовании dll библиотек из instantclient’а вместо XE Client’а. Вот эти файлы с скопировал в windows\system32

oraociei11.dll
oci.dll
ociw32.dll
oraocci11.dll

Вряд ли нужны все 4-ре, но дальше париться и выяснять не хочется…




16 авг. 2010 г.

3D здания на карте Тюмени в Google Maps

Оказывается, силами энтузиастов, на карты Google нанесено приличное количество Тюменских домов.

Видимо, большинство моделей сделано Павлом Жилиным, но специально я этот вопрос не изучал, поэтому точно не знаю.

Соответствующая страница в Google ЗD-моделях: http://sketchup.google.com/3dwarehouse/search?uq=1661028888684852130107921&scoring=m

image image image image image image image image image




5 авг. 2010 г.

Shakira-Hips Don't Lie(Metal Version)

Введение в HTML и CSS – intuit.ru

Всё, это последний на сегодня :).

Диплом Интернет-Университета Информационных Технологий: Введение в HTML и CSS




Основы работы с инструментами Яндекс – intuit.ru

Гы-гы. Второй курс за утро, но особого героизма тут нет – оба курсы очень простые.

Диплом Интернет-Университета Информационных Технологий: Основы работы с инструментами Яндекс



Основы работы с XHTML и CSS - intuit.ru

Минут за 10 экстерном сдал очередной экзамен на intuit.ru. Этот тест удивляет почти полным отсутствием “левых” вопросов, которыми обычно грешат тесты на intuit.ru.

Интуит, как всегда, дает красивый диплом:

Диплом Интернет-Университета Информационных Технологий: Основы работы с XHTML и CSS

А вот цена “бумаги” выросла со 100 до 400 рублей.

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




2 авг. 2010 г.

Длина колонки с email-адресом

RFC 2821

локальная часть адреса

Максимальный размер имени пользователя или локальной части адреса составляет 64 символа.

домен

Максимальный размер доменного имени составляет 255 символов.

Итого: 64+255 ( и видимо + “@”) = 320.




22 июл. 2010 г.

Библиотека для работы с Google Chart в Python

Речь о pygooglechart: http://pygooglechart.slowchop.com/.

Примеры выглядят довольно просто:


from pygooglechart import QRChart

# Create a 250x250 QR chart

chart = QRChart(250250)

chart.add_data('Hello, World!')

# "Level H" error correction with a 0 pixel margin

chart.set_ec('H'0)

chart.download('qr-hello.png')





21 июл. 2010 г.

Курс USD на python


import urllib

import elementtree.ElementTree as etree # elementtree 1.3



url = 'http://www.cbr.ru/scripts/XML_daily.asp'

root = etree.parse(urllib.urlopen(url)).getroot()

root.find('Valute[@ID="R01235"]').find('Value').text





20 июл. 2010 г.

Site/host tracking?

Добрый!

С периодичностью в полгода начинаю париться о мониторинге доступности хостов. Варианты с тяжелыми и большими, но всеобъемлющими NMS (network monitoring and management systems), типа nagios, обсуждать не хочется. Задачи у меня проще - хочу, чтоб система своевременно сообщила мне, что какой-то из моих сайтов лежит.

Тут все можно не хитро формализовать. Выбрать и описать виды тестов (доступность, поиск фразы на странице, проверка HTTP статуса) и накалякать свой велосипед. Можно взять чужой, готовый велосипед. Пример для django: monjo (по необъяснимой причине, мне лень искать ссылку на сей замечательнейший продукт).

Однако, любое свое решение (кроме баш-скрипта) рискует быть ресурсоемким, а запускать распределенную сеть систем мониторинга хотелось бы с нескольких доступных хостов, в том числ и с VDSов.

Как быть? Какими инструментами Вы пользуетесь для решения аналогичных проблем?

14 июл. 2010 г.

Jino, как оно вообще?

Решил присмотреться к джино, как к django-хостингу, но пока наблюдениям не рад. Развернуть тестовый проект у меня не получилось. Может быть я и непроходимо туп, но всё делал по инструкции. Эксперимент закончился не успев толком начаться. Я словил 504-ую, которая держится уже 3 минуты.

В кабинете управления услугами в разделе django есть кнопка “перезагрузить”, что тоже немало доставляет.

Правду говорят, что у сайтов на jino uptime не бывая 100%?




6 июл. 2010 г.

Олег Леонидович Цвырко

Я родом из Ишима. В этом городе каждое здание принято называть именем Ершова, каждый второй - гопник и ничего интересного в этом городе нет.

Есть преподаватель информатики, который бескорыстно вкладывается в детей – учит их информатике. Он, во многом, определил мои цели в жизни, за что ему и спасибо. Дима Орлецкий взял у него интервью. Смотрите видео запись на www.vishime.ru:

http://vishime.ru/blogs/2010/06/28/oleg-leonidovich-cvyrko/




28 июн. 2010 г.

django-compress и CDN

Можно в этом блоге смело открывать новую рубрику - “надо было внимательней читать документацию”. В ней я бы писал о находках, которые делаю после полугода использования продукта.

Например сегодня узнал, что django-compress можно научить работать с CDN-ами с помощью простого конфига:


COMPRESS_CSS = {

    'group_one': {

        'source_filenames': ('css/style.css''css/foo.css''css/bar.css'),

        'output_filename''css/one_compressed.css',

        'extra_context': {

            'media''screen,projection',

            'prefix''http://cdn.example.com/'

        },

    },

}





24 июн. 2010 г.

Formunculous – создаем формы в Django через админку

В данном видео показан процесс создания форм в Formunculous прям из админки django.

 

http://formunculous.org/



Sotmarket.ru

История с заказом батарейки продолжается. На днях пришло письмо с просьбой внести предоплату, хотя реально заказ был оплачен 13-го мая, о чем я уже разговаривал с их менеджером. Тогда, на следующий день после оплаты, меня интересовал причина по которой в личном кабинете на сайте sotmarket.ru у меня не менялся статус заказа.

Вообще, история потрясающая – эти уроды обманули меня с наличием товара (1), тянули со статусом заказа, хоть деньги и получили (2). С самого первого нашего общения с менеджером выяснилось, что они вообще не знают когда придет товар (3). “Возможно через 2 недели, но точно сказать не могу…”. То есть sotmarket.ru рады взять деньги, но реально привезти товар в обозримые сроки - нет.

Итак, по словам одного из менеджеров во время нашей последней беседы с момента заказа прошло 49 дней (это было пару дней назад), а они по прежнему не знают когда придет товар. “Наверное недели через 2, нот точно Вам сказать не могу” – сказал мне менеджер опять. Да ну? Не эти же 2 недели Вы называли 29 дней назад?

Ну ладно, это херня, если не считать того, что теперь для возврата денег мне нужно заполнить “бумажку” в которой должны быть по новой указаны все реквизиты плательщика. Зачем? Деньги поступают из банка - это не “черный ящик”, реквизиты можно получить. Зачем клиентов то мурыжить? Я этого не понимаю.

В общем братцы, Вы как хотите, а я больше ничего никогда в это конторе покупать не стану и Вам не советую!




18 июн. 2010 г.

Всякие интересности…

Не могу больше скрывать от всех эти ссылки – слишком уж интересные.

http://www.slideshare.net/digi604/django-cmskey – интересная презентация Django-CMS.

http://www.google.com/talk/service/badge/New - Google Talk chatback badge – бесплатный онлайн чат от гугла (как у меня в блоге “чат со мной”).

http://www.google.com/talk/service/a/concepter.ru/badge/New – версия предыдущего chatback badge для доменов в Google Apps (нужно заменить concepter.ru на название вашего домена)

http://javascript.ru/blog/mycoding/Izuchaem-ExtJS – интересная объемная статья по изучению ExtJS, который теперь вообще-то sencha

http://pyplanet.org/ - “виртуальная площадка на русском языке для обмена опыта между начинающими программистами и гуру питона” - растет и развивается, так что поглядывайте!

http://www.tyumen-city.ru/dom/index.php - информационно-справочной системой «Ваш дом» для Тюменцев - нужные адреса, телефоны, границы избирательных округов, время приема граждан депутатами Тюменской городской Думы («Ваш депутат», «Участковые», «Квартальные», «Управляющие компании», «Поликлиники»).




16 июн. 2010 г.

Как же меня за**ло ожидание android 2.1 на HTC Hero


Энгейдж сегодня сообщил, что долгожданная прошивка появилась, а затем извинился и объяснил, что вышла очередная ошибка. Видимо, такие утки создаются не просто так, а для подогрева интереса аудитории...

12 июн. 2010 г.

Почему Россия не Америка?

По наводке Фрица Моргена начал читать книгу "Почему Россия не Америка" Андрея Паршева. Я не очень продвинулся пока, но с удовольствием рекомендую эту книгу. Для меня многие наблюдения автора были настоящим открытием. Например, рассуждения о географических особенностях нашей бескрайней и влиянии этих особенностей на экономику (чему собственно и посвящена книга).

Читать книгу приятно. Стиль повествования легкий и понятный даже программистам без экономического образования...

Есть ли среди подписчиков уже читавшие книгу?

7 июн. 2010 г.

Братик

Он оказывается, ещё и экологией занимается. Нашел благодаря скотнику.
Кстати, мопед его...

А Вы часто видитесь со своими родственниками?

Правильный tinymce-конфиг

Оказывается, в tinymce конфиге есть несколько крайне полезных мне опции:
mode : "exact",

elements : "id_content"

- включит tinymce только для textareas с перечисленными через запятую id. Flatpages в django используют id_content.
relative_urls : false,

convert_urls : false,

remove_script_host : false

- все 3 опции помогут сохранить url от обработки tinymce’ем.
force_p_newlines : false

- теоретически, редактор перестанет оборачивать текст в тэг <p>. Практически же, у меня эта опция не заработала.
Весь мой мини-конфиг, который я то и дело использую в админке django-проектов выглядит так:
tinyMCE.init({

    mode : "exact",

    elements : "id_content",

    theme : "advanced",

    language: "ru",

    accessibility_warnings: true,

    width: "800px",

    theme_advanced_toolbar_location : "top",

    relative_urls : false,

    convert_urls : false,

    remove_script_host : false,

    force_br_newlines : true,

    force_p_newlines : false

});

Может кому-то пригодиться…

Денис Попов

Уже пару дней наблюдаю за историей Дениса Попова, но эта статья на лукоморье окончательно довела до истерики. Так держать, Денис! Даешь iПопов!

Шевчук о встрече с Путиным и маршах несогласных

27 мая 2010 г.

Сотмаркет наглишен бабкен пиздунг. Батарейка 2.

Заказал батарейку в софтмаркете, о чем уже писал. Так вот, sotmarket.ru – это нифига не “более-менее вменяемое место для покупки”. Это место не вменяемое. Уроды на сайте при покупке  и заказе батарейки везде показывали “есть в наличии”. С удовольствием выдают страницы с квитанциями на оплату, показывают статус заказа и др. и пр. И ни одна собака не предупредила меня, что батарейки на самом деле в наличии нет, а реальное состояние дел надо выяснять по телефону.
В итоге, батарейка оплачена (4500), но в наличии появиться в лучшем случае через 2 недели, при том никто мне не гарантирует, что через 2 недели она будет. Никаких извинений по этому поводу мне никто не приносил. Все (онлайн консультант, тетя на телефонной линии софтмаркета, персональный менеджер) считают, что все произошедшее в порядке вещей.
Посылаю лучи поноса этой “замечательной” организации и никому не советуют покупать в sotmarket’е.

UPD 18.04.2012 Позвали работать в сотмаркете php-программистом. Блин, что с это конторой не так? Я python-программист, не php.

Django 1.2 и 1.2.1. Проблемы с контекстом?

После переезда с 1.1.1 на 1.2, а затем и на 1.2.1, заметил одну особенность: в некоторых ситуация в шаблонах теперь нет привычного контекста user’а. У меня это проявляется в следующем случае. Есть базовый шаблон (base.html), от него наследуется шаблон, в который подставляется (include’ом) шаблон-кусок. Так вот в последнем (шаблоне-куске) не видится user. В 1.1.1 таких проблем 100% не было.

Не знаете в чем тут может быть дело? Я тут threadlocals’ом выкручиваюсь…




26 мая 2010 г.

Параллели с методами разработки через тестирование

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

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

Бред, или эту идею можно использовать?




19 мая 2010 г.

Ширина Django-tinymce редактора в django-cms

Столкнулся с очередной неприятностью – в django-cms с подключенным tinymce редактор по умолчанию фиксированной ширины. Решение много проще, чем я в начале думал. Оказывается, django-tinymce использует переопределение дефолтного конфига через Ваш файл настроек проекта. Пример моего конфига:


TINYMCE_JS_URL = MEDIA_URL + 'js/tinymce/jscripts/tiny_mce/tiny_mce.js'

TINYMCE_JS_ROOT = MEDIA_ROOT + 'js/tinymce/jscripts/tinymce/jscripts/tiny_mce'

TINYMCE_DEFAULT_CONFIG = {

    'theme'"advanced",

    'width'"100%",

    'height'"500px",

}


16 мая 2010 г.

Как определить раздел в django-cms?

На одном из django-сайтов, активно использующих django-cms, понадобилось менять флэшку в зависимости от раздела. Не придумал ничего лучше смотреть кусок пути:


{% ifequal request.path_info|slice:":10" '/ekologiya' %}

...

{% endifequal %}


Дело в том, что в джанго-цмс у страниц может быть множество потомков, потому то и приходиться смотреть на кусок uri.

Может быть Вам известен более правильный путь? (более, т.к. этот тоже работает :) )

 

ЗЫ. Конкурс на угадывание сайта, для которого это понадобилось: приз – ссылка с 3 моих сайтов (кому только они нужны?) на сайт угадавшего.

15 мая 2010 г.

О-оу-и-я-и-е! Батарейка

У моего рабочего Dell XPS M1330 давненько уже сдохла батарея (был перепад напряжения). Нашел в России только одно более-менее вменяемое место для покупки:

http://www.sotmarket.ru/product/akb_dell_xps_m1330_pov_emk.html

4500 – цена, кончено, убийственная, но что делать?

Заказал, жду теперь…

Скрипт для раскрутки twitter аккаунта на python (tweepy)

Привет, друзья!

Недавно начал писать сайт для автораскрутки в twitter. В основе скрипт, который фоловит друзей друзей. Написано отвратно, но при соблюдении рекомендации результат дает:


import tweepy



for user in TwiAccount.objects.all():

    auth = tweepy.BasicAuthHandler(your_user_name, your_user_password)



    def follow_his_friends(username):

        user = tweepy.api.get_user(username)

        for friend in user.friends():

                try:

                    tweepy.API(auth).create_friendship(friend.id)

                except:

                    follow_his_friends(friend.screen_name)



    follow_his_friends('markeyev')


Tweepy, кстати, невероятно хорош - когда я искал python-библиотеку он был лучшим по соотношению понятность/возможности.

Функциональности у него тоже хватает – есть даже авторизация по openid. Собственно openid я и планирую использовать для сайта, т.к. не каждый доверить не знакомому сервису свой аккаунт.

Подобные скрипты очень востребованы на зарубежных сайтах фриланса и будут продаваться до тех пор пока твиттер присылает уведомления о новых фоловерах и не уведомляет об отписавшихся. Стратегия продвижения благодаря этой особенности проста как мычание: фоловить по 50-100 аккаунтов в день (чтоб не забанили за strange activity) и затем быстренько от них отписываться.

Опыты показали, что strange activity наступает при 700 новых фоловингах в день (то есть когда Вы фоловите кого-либо).

Стали бы Вы пользоваться таким сервисом, который я пишу, или может мне бросить эту дурацкую затею?

14 мая 2010 г.

www.russned.tv

Вот и подошел к  концу первый этап разработки www.russned.tv – это видеохостинг на django. Из названия ясно, что сайт сделан для наших друзей - Русской недели. При разработке использована куча всяких django-приложений:

  • django-cms (с кучищей плагинов)
  • django-profile (понадобиться для регистрации и, поздней, для добавления роликов пользователями)
  • django-ratings
  • django-ajaxcomments
  • + набор собственных приложений, которые теперь переносятся из проекта в проект.

У некоторых роликов есть полная avi-версия.

Django-сообществу возможно, будут интересны следующие куски кода этого проекта:

1. Список последних просмотренных роликов


videos = MyVideo.objects.annotate(last=Max('videoview__when')).order_by('-last')[:limit]


Между прочим, универсальный вариант GROUP BY средствами django ORM’а.

2. Ролики отсортированные по соотношению рейтинга к кол-ву голосов:


videos = MyVideo.objects.extra(select={

        'a_rating''rating_score/rating_votes'

    }).order_by('-a_rating')[:limit]


Это специфика использования djangoratings – кто использовал поймет ;)

3. Ролики с сортировкой по кол-ву комментариев (только откомментированные):


videos = MyVideo.objects.annotate(comments_count=Count('comments')).\

        exclude(comments_count=0).order_by('-comments_count')[:limit]


В основе файл models:


class MyVideo(models.Model):

    ...

    title = models.CharField(_(u'название'), max_length=250, unique=True)

    desc = models.TextField(_(u'описание'), max_length=250, null=True, blank=True)

    category = models.ForeignKey(Category, verbose_name=_(u'категория'), blank=True, null=True)

    tags = TagAutocompleteField()



    rating = RatingField(range=5, weight=1, can_change_vote=True, allow_anonymous=False)



    comments = generic.GenericRelation(Comment, content_type_field="content_type", object_id_field="object_pk")



class VideoView(models.Model):

    video = models.ForeignKey(MyVideo)

    when = models.DateTimeField(auto_now_add=True)

    user = models.ForeignKey(User, null=True, blank=True, editable=False)


Смотрите, качайте, советуйте друзьям! www.russned.tv.

Яша и мой блог

Яндекс уверен, что на страницах моего блога полно скрытого текста. Я.Вебмастер мне об этом давно говорит, но вот что странно: с момента наступления санкций со стороны Яши к моему блогу кол-во подписчиков в RSS увеличилось с 22 до 107 (107 появился сегодня), а кол-во постоянных читателей с 14 до 28. Может быть кто-то знает в чем тут разгадка?

13 мая 2010 г.

О пользе мозга

Пришёл забавный спам:

Здравствуйте!
Я составил коммерческое предложение на продвижение вашего сайта - gmail.com
Пожалуйста ознакомитесь:
Схема работы:
…бла…бла..бла..

Если у вас возникнут какие либо вопросы, обращаетесь:

С уважением, Владислав.

Владислав, спасибо кончено, но gmail’у Ваша раскрутка не нужна.




26 апр. 2010 г.

i18n для tiny_mce

Друзья, сегодня я потратил 2 часа своей жизни на поиск решения проблемы, виной которой была кривая транслитерация на русской tiny_mce. Файл tinymce/jscripts/tiny_mce/themes/advanced/langs/ru.js безбожно закосячен. С его легкой руки в advanced теме видны арабские письмена, суть которых понять невозможно.

Найти виновного и оторвать яйца – первое желание, сменившееся на данный момент апатией.

UPD (12.05.2010): взял с офф.сайта новую русификацию от  сегодняшнего числа – все работает отлично. Превед разработчикам!




16 апр. 2010 г.

Смотрим SQL запросы в Django

А Вы знали, что SQL-запросы в джанго можно смотреть так?

Версия 1.1 и ниже:


# В django 1.1 и ниже:



>>> from foo.models import Bar

>>> Bar.objects.get(pk=1)

<Bar: Bar object>

>>> from django.db import connection

>>> connection.queries

[{'time''0.071''sql'u'SELECT "foo_bar"."id", "foo_bar"."name", "foo_bar"."age", "foo_bar"."created" FROM "foo_bar" WHERE "foo_bar"."id" = 1 '}]



# А в 1.2 будет так:



>>> from foo.models import Bar

>>> str(Bar.objects.filter(name='Mike').query)

'SELECT "foo_bar"."id", "foo_bar"."name", "foo_bar"."age", "foo_bar"."created" FROM "foo_bar" WHERE "foo_bar"."name" = Mike '


* Пример с DjangoAdvent, если ещё не читали – прочтите!

11 апр. 2010 г.

PyDev и Django

В связи с переездом, как я и писал ранее, все на свете произошло без моего ведома. Вот и ещё один пример: PyDev обзавелся поддержкой django. По ссылке далее интересная статья о фичах новой версии PyDev.

Коротко:

  • Можно создавать джанго проекты, используя контекстное меню IDE
  • Можно вызывать основные команды пряямо в IDE (syncdb, test, shell)
  • Можно запускать как django-проект (IDE найдет manage.py и допишет к нему runserver)

- мелочи кончено, но приятно.

Сам я пользуюсь Aptana, но там естественно, PyDev тоже обновился и все указанное поддерживает. Всем советую попробовать!

10 апр. 2010 г.

Хитрое наследование в шаблонах django

В одном из постов увидел пример “техники”, который раньше использовал в проекте с большим кол-вом приложении и шаблонов. Суть в использовании “прокси-шаблонов” между базовым и конченым шаблонами.

Например, для следующей структуры приложении

  • apps
    • common
    • blogs
    • news
    • etc…

Подготовлена следующая структура шаблонов:

  • templates
    • base.html (страница с разметкой на блоки, в блоках default контент)
    • index.html (сетка главной)
    • page.html (для страниц с placeholder’ами для django-cms)
    • news
      • news_base.html (прокси шаблон для новостей с названием раздела, например; наследуется от base.html)
      • news_list.html (наследуется от news_base.html)
      • new_detail.html (наследуется от news_base.html)
      • etc…
    • blogs
      • blogs_base.html (-||-||-)
      • blog_post.html (-||-||-)
      • etc…

Под наследованием шаблонов, естественно, понимается использование инструкции {% extends %}. Такие конструкции могут быть весьма полезны при использовании “местных” библиотек и стилей в разделе, приложении для публикации баннеров с делением по разделам и пр.

Например использование “местных” библиотек и стилей можно реализовать следующим образом:


<!-- base.html -->

{% spaceless %}{% load i18n %}<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

    <head>

        <title>{% block title %}{% trans 'Мой супер сайт' %}{% endblock %}</title>

        <link href="{{ MEDIA_URL }}styles.css" rel="stylesheet" type="text/css">

        <!--[if IE 6]>

        <style>

        .my-div {width: 100px;}

        </style>

        <![EndIf]-->


        {% block extrahead %}

        <link rel="icon" href="{{ MEDIA_URL}}bitmaps/favicon.ico" type="image/x-icon">

        <link rel="shortcut icon" href="{{ MEDIA_URL}}bitmaps/favicon.ico" type="image/x-icon">

        {% endblock %}

    </head>

<body>



<!-- base_news.html -->

{% extends 'base.html' %}

{% block extrahead %}

        <script type="text/javascript" src="{{ MEDIA_URL }}tinymce/jscripts/tiny_mce/tiny_mce.js"></script>

        <link href="{{ SITE_MEDIA_URL }}menu.css" rel="stylesheet" type="text/css">

        <link rel="icon" href="{{ MEDIA_URL}}bitmaps/news_favicon.ico" type="image/x-icon">

        <link rel="shortcut icon" href="{{ MEDIA_URL}}bitmaps/news_favicon.ico" type="image/x-icon">

{% endblock extrahead %}


Однако я так уже давно не пишу – стараюсь использовать django-compress везде, где только можно.

Для добавления дополнительных скриптов и стилей в наследниках base_news.html можно использовать инструкцию {{ block.super }} внутри блока extrahead.

А Вы используете такие фишечки в своих джанго проектах?