Categories: ,
Posted by: buriy
Я постепенно мигрирую на git. За последнее время я избавился практически от всех своих svn репозиториев, и перевел половину bzr репозиториев на git.
Список преимуществ и недостатков git расписывать не буду, скажу только о том, что мне больше всего льстит в последнее время: это git для django.
Как известно, репозиторий django это svn. И самый большой его недостаток — невозможность добавить свои патчи в дерево django один раз, а потом пользоваться ими на разных компьютерах, и чтобы патчи при этом не теряли актуальности. При помощи git это всё легко, при этом у меня есть возможность обновить django, откатить на любую версию, вытащить любую версию. И всё это даже в оффлайне :)
Если вы хотите такое повторить у себя, воспользуйтесь git-svn (а не тем, что у django есть git репозиторий — он слишком редко обновляется).
Команды, которые вам понадобятся:
git-svn clone (создать репозиторий
git-svn fetch (обновиться)
git-svn rebase (актуализировать свои изменения)
git commit (сохранить свои изменения)
Так же рекомендую для винды добавить настройку
git config —add autocrlf false
(если вы устанавливали git под windows через msysgit, то вместо минуса команды пишутся через пробел)
Это позволит вам не получать изменения каждый раз, когда вы сохранили файл под виндой.
Поскольку в первый раз выкачка из россии происходит медленно, рекомендую сделать git-svn clone —bare на каком-нибудь вашем знакомом американском сервере, а потом оттуда обновляться через git push/git pull.

p.s. deseb я обновляю тоже в git репозитории, а изменения пока что не выливаю наружу (git-svn dcommit). готовьтесь. намного более качественная версия для 1.0 на подходе! ;)
Posted by: buriy
Вспоминаю, что когда-то я обещал писать про django.
Сегодняшняя тема — эволюция баз данных для django.
Я — один из двух создателей deseb.
deseb — это Django External Schema Evolution Branch, то есть инструмент для эволюции баз данных для django. Да, юные любители ruby on rails, это практически ваши миграции, только с более простым DSL и конструирующиеся автоматически по изменениям модели.
Ну а тем, кто с rails не знаком, расскажу поподробнее.

Основа django — модели. Обычно они находятся в файлах models.py в разных папках внутри проекта. deseb умеет сравнивать содержимое моделей и текущую схему базы данных, и вносить в эту схему изменения. Таким образом, программист django вообще может не знать sql, или же изучать sql, глядя на вывод django и deseb, но никогда не писать sql самому. Наконец-то! :)
Сообразительные, но малознакомые с django, спросят — а как же переименование?
Как deseb поймет, что столбец или таблицу нужно переименовать? Конечно, он и не поймёт, пока вы не добавите полям и таблицам для переименования дополнительный аттрибут aka=… для указания их старых имён! Вот из-за этого аттрибута и пришлось сделать deseb внешним относительно django.

Ссылки по теме:
главная страница проекта — http://deseb.googlecode.com/
подробное рассмотрение миграций для django: http://code.djangoproject.com/wiki/SchemaEvolution

Проект находится в альфа-статии. Текущие хорошо поддерживаемые базы данных — postgresql и mysql. Плохо поддерживаемый — sqlite.
Я знаю несколько имеющихся мелких проблем, однако, скорее всего, они будут пребывать в состоянии “не дошли руки”, пока вы мне не поможете.
С радостью и очень быстро, скорее всего в тот же день, приму и закоммичу багфиксы ;)
Categories: , ,
Posted by: buriy
Немного меняю формат блога.
Изначально он задумывался просто так, “чтобы был”.
Теперь буду писать раз в неделю (а может и чаще) о том, что вы хотели бы от меня услышать.
Особенно охотно буду писать статьи про Django.
Что бы вы хотели узнать от меня о Django?
О программировании на Python вообще?
О программировании вообще?
О моих других увлечениях?
О жизни/психологии/мотивации/личностном росте?

Предложения пишите в комментариях к этому посту или почтой (чтобы мне не терять список предложений).
Categories: , , ,
Posted by: buriy
Цитируя Андрея Таранцова:
Сегодня будет великий день! Я начну переход с Eclipse 3.1 на Eclipse 3.3 :)
Пожелаем ему удачи в рефакторинге кода двухлетней давности.

У меня тоже сегодня великий день.
Я сегодня узнал про то, что с полями моделей в Django можно делать преинтереснейшие вещи:
class DomainInfo(Model):
  def preview(self):
    return ‘<img src=”/media/%s”/>’ % self.screenshot
  preview.allow_tags = True
  preview.short_description = ‘screenshot’

И после этого в админке можно будет наблюдать поле с названием screenshot, в котором отражаются симпатичные картинки.
Categories: , ,
Posted by: buriy
I’m publishing the current state of my openid solution. It’s based on Simon Willison’s django-openid consumer
It allows developers to connect User class with OpenID accounts.
The problem with empty passwords is not solved and web interface for “user profiles” allowing to assigning openid to users is not done.
But you could login with openid and the system will create account for you, and will get data from simple registration.
I will change my solution in a way written in this google groups thread.
But I’m happy now because time passes and I need the solution right now.

My openid-solution is here

p.s. I apologize that it’s not adapted for using in your projects, better to think it’s the proof of the concept.

Posted by bur on May 12, 2007

Categories: ,
Posted by: buriy
Наконец-то прикрутил RSS. Это было бы невыносимо просто, если я бы знал, что если сделать url-regexp на корень сайта, который работает по include(), то он из него в следующий url-regexp не пойдет, и что сообщение об ошибке говорит именно об этом. Вот так абсолютно неинформативное сообщение об ошибке дало мне вволю потрразобраться с feed-ами. :)
Categories: , ,
Posted by: buriy
Когда я открыл для себя django, мне стало интересно, как можно написать блог за час. Поглядев building-blog-django я понял, что нужно делать (в смысле, copy-paste еще никто не отменял). Однако оно не хотело работать. Виною был pre-magic-removal билд django, но я никак не мог найти более позднюю версию для post-magic-removal билда. Ну и тем более не мог понять, на что нужно заменять нерабочие участки кода. Увы, полной интуитивности не получилось.
Потом, помучавшись и набравшись опыта (часов 6 прошло, наверное), я понял, что лучше использовать родные решения. Взял weblog с сайта django, взял библиотечку tags с сайта http://softwaremaniacs.org/.
После этого осталось еще прикрутить понравившийся мне стиль с системы блоггинга nucleus.
Я в нем исправил только одну штуку — цвет ссылок.
Профессионального дизайнерского чувства стиля у меня нет. Зато есть чувство чертежного стиля, когда сразу замечаешь неровные линии или криво нестыкующиеся блоки, и еще есть чувство локтя, то есть иногда очень хочется спросить у товарищей по поводу полученного результата. Например, сейчас очень хочется. Вам нравится этот сайт? :)