<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-4278740335154445587</id><updated>2009-10-04T03:49:08.482+03:00</updated><title type='text'>Dixon's blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://dixon-che.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4278740335154445587/posts/default'/><link rel='alternate' type='text/html' href='http://dixon-che.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Dixon</name><uri>http://www.blogger.com/profile/17211048553882919623</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>4</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4278740335154445587.post-76057025224215430</id><published>2009-08-26T16:09:00.008+03:00</published><updated>2009-08-26T18:11:20.264+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='visualization'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='pygraphviz'/><title type='text'>Визуализация моделей в Django</title><content type='html'>На определенном этапе разработки сайтов на &lt;a href="http://www.djangoproject.com/"&gt;Django&lt;/a&gt; встала необходимость визуализировать модели и связи между ними - держать все в голове стало сложно.
&lt;br /&gt;
Погуглил и решил что на данном этапе меня вполне устроят возможности &lt;a href="http://code.google.com/p/django-command-extensions/"&gt;django_extensions&lt;/a&gt;.
&lt;br /&gt;
В базовые возможности данного приложение входит команда graph_models из модуля &lt;a href="http://code.google.com/p/django-command-extensions/wiki/GraphModels"&gt;GraphModels&lt;/a&gt;.
&lt;br /&gt;
Но обо всем по-порядку:
У данного приложения есть зависимости поэтому в начале нужно установить &lt;a href="http://networkx.lanl.gov/pygraphviz/"&gt;pygraphviz&lt;/a&gt;
&lt;br /&gt;
В gentoo я это делаю так:
&lt;pre&gt;&lt;code class="shell"&gt;$ emerge dev-python/pygraphviz&lt;/code&gt;&lt;/pre&gt;
хотя вполне можно обойтись универсальным методом: 
&lt;pre&gt;&lt;code class="shell"&gt;$ easy_install pygraphviz&lt;/code&gt;&lt;/pre&gt;
Далее нужно установить &lt;a href="http://code.google.com/p/django-command-extensions/"&gt;django_extensions&lt;/a&gt;
Можно установить его &lt;a href="http://code.google.com/p/django-command-extensions/wiki/InstallationInstructions"&gt;стандартно&lt;/a&gt;:
$ cd django-command-extensions
&lt;pre&gt;&lt;code class="shell"&gt;$ python setup.py install&lt;/code&gt;&lt;/pre&gt;
Но я предпочитаю, чтобы все от чего зависит проект было вместе с проектом, поэтому я поступаю так:
&lt;pre&gt;&lt;code class="shell"&gt;
$ cd project_root
$ hg clone http://hgsvn.trbs.net/django-command-extensions/django_extensions
&lt;/code&gt;&lt;/pre&gt;
Далее стандартно добавляю django_extensions к списку установленных приложений:
&lt;pre&gt;&lt;code class="python"&gt;INSTALLED_APPS += ('django_extensions',)&lt;/code&gt;&lt;/pre&gt;
Все! Приложение можно использовать с данными Вашего проекта.
&lt;br /&gt;
Все возможности его я описать не в состоянии, тема данного поста команда graph_models.
&lt;br /&gt;
Собственно это дополнительная команда для &lt;a href="http://docs.djangoproject.com/en/dev/ref/django-admin/#ref-django-admin"&gt;manage.py&lt;/a&gt;, т.е. ее нужно запускать в командной строке как syncdb или runserver
&lt;br /&gt;
Из всех возможностей синтаксиса данной команды я вынес для себя следующие варианты использования:
&lt;br /&gt;
1. Вывод диаграммы всех установленных приложений:
&lt;pre&gt;&lt;code class="shell"&gt;$ python manage.py graph_models -o models_diagramm.png&lt;/code&gt;&lt;/pre&gt;

Ключ -o означает в какой файл выводить.
&lt;br /&gt;
2. То же самое, но с группировкой по приложениям - таблицы будут не перемешаны как попало, а сгруппированы по принадлежности к приложениям красивой рамочкой.

&lt;pre&gt;&lt;code class="shell"&gt;$ python manage.py graph_models -g -o models_diagramm.png&lt;/code&gt;&lt;/pre&gt;
3. Когда проекты достаточно большие вывод всех моделей понимания не вносит, поэтому есть возможность заказать себе на вывод только те приложения которые интересуют в данный момент:

&lt;pre&gt;&lt;code class="shell"&gt;$ python manage.py graph_models -g -o models_diagramm.png polls&lt;/code&gt;&lt;/pre&gt;
В конец команды можно дописывать через пробел имена именно тех приложений, которые интересуют.
&lt;br /&gt;
Если не использовать ключ -o будет генерироваться .dot файл, что с ним делать потом я не разобрался :)
Было бы интересно найти никсовую программу которая бы позволяла вносить дополнительные комментарии, двигать блоки так как удобно, кастомизировать цвета вывода...
&lt;br /&gt;
P.S. Примеры вывода смотреть на &lt;a href="http://code.google.com/p/django-command-extensions/wiki/GraphModels"&gt;официальной странице&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4278740335154445587-76057025224215430?l=dixon-che.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dixon-che.blogspot.com/feeds/76057025224215430/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4278740335154445587&amp;postID=76057025224215430&amp;isPopup=true' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4278740335154445587/posts/default/76057025224215430'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4278740335154445587/posts/default/76057025224215430'/><link rel='alternate' type='text/html' href='http://dixon-che.blogspot.com/2009/08/django.html' title='Визуализация моделей в Django'/><author><name>Dixon</name><uri>http://www.blogger.com/profile/17211048553882919623</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08309386295113101612'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4278740335154445587.post-4199415616894263924</id><published>2009-08-26T10:25:00.002+03:00</published><updated>2009-08-26T10:28:19.498+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='test'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Я - хороший PHP-программист :)</title><content type='html'>Прошел тест!
&lt;br /&gt;
&lt;a href="http://www.corp.mamba.ru/test/promo.phtml"&gt;&lt;img border="0" src="http://www.corp.mamba.ru/test/widget.phtml?id=40838" /&gt;&lt;/a&gt;
&lt;br /&gt;
Аж стыдно!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4278740335154445587-4199415616894263924?l=dixon-che.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dixon-che.blogspot.com/feeds/4199415616894263924/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4278740335154445587&amp;postID=4199415616894263924&amp;isPopup=true' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4278740335154445587/posts/default/4199415616894263924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4278740335154445587/posts/default/4199415616894263924'/><link rel='alternate' type='text/html' href='http://dixon-che.blogspot.com/2009/08/php.html' title='Я - хороший PHP-программист :)'/><author><name>Dixon</name><uri>http://www.blogger.com/profile/17211048553882919623</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08309386295113101612'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4278740335154445587.post-3612286376782381839</id><published>2008-10-01T12:34:00.016+03:00</published><updated>2008-10-01T15:49:52.952+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='highlight'/><category scheme='http://www.blogger.com/atom/ns#' term='code'/><title type='text'>Подсветка кода</title><content type='html'>Задался таки вопросом подсветки кода.&lt;br /&gt;
Код для теста:&lt;br /&gt;
&lt;pre&gt;&lt;code class="python"&gt;
from django.db import models

class Poll(models.Model):
    question = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')

class Choice(models.Model):
    poll = models.ForeignKey(Poll)
    choice = models.CharField(max_length=200)
    votes = models.IntegerField()
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
Быстро погуглив нашел рецепт: http://blogohelp.blogspot.com/2008/08/bloggercom.html &lt;br /&gt;
В котором описано, что нужно использовать утилиту &lt;a href="http://softwaremaniacs.org/about/"&gt;Ивана Сагалаева&lt;/a&gt; &lt;a href="http://softwaremaniacs.org/soft/highlight/"&gt;highlight.js&lt;/a&gt;, вообще я о ней сразу вспомнил как только задался вопросом подсветки кода, но не знал как прикрутить эту утилиту в blogger.
Там довольно странно дан совет использовать в качестве исходника утилиты файл highlight.js прямо с блога автора. Так делать НЕ нужно!&lt;br /&gt;
Я развернул библиотеку скрипта на одном из своих проектов и загружаю от туда, так как загрузить обычные файлы в blogger способа не нашел.
&lt;br /&gt;
Как пользоваться утилитой читайте на &lt;a href="http://softwaremaniacs.org/soft/highlight/description/"&gt;сайте автора&lt;/a&gt;.&lt;br /&gt;
Как прикрутить ее в blogger описано у blogohelp. Просто в разделе управления блогом открываем вкладку «Макет» далее «Изменить HTML» и вставляем между &amp;lt;head&amp;gt; и &amp;lt;/head&amp;gt; строки линкования и инициализации скрипта.&lt;br /&gt;
Единственное, нигде явно не указано (а для меня почемуто &lt;a href="http://softwaremaniacs.org/forum/highlightjs/4741/"&gt;было&lt;/a&gt; не очевидно), что еще к странице нужно прилинковать файл css с теми стилями, которые вы хотите использовать, что прописывается тоже в заголовочной части макета. &lt;br /&gt;
&lt;pre&gt;&lt;code class="html"&gt;
&amp;lt;link href="js/highlight/styles/default.css" 
rel="stylesheet" type="text/css" /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
PS: В начале не работало, когда в настройках было выставлено менять каждый перенос строк на тег br, что соответственно рвало код.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4278740335154445587-3612286376782381839?l=dixon-che.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dixon-che.blogspot.com/feeds/3612286376782381839/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4278740335154445587&amp;postID=3612286376782381839&amp;isPopup=true' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4278740335154445587/posts/default/3612286376782381839'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4278740335154445587/posts/default/3612286376782381839'/><link rel='alternate' type='text/html' href='http://dixon-che.blogspot.com/2008/10/blog-post_01.html' title='Подсветка кода'/><author><name>Dixon</name><uri>http://www.blogger.com/profile/17211048553882919623</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08309386295113101612'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4278740335154445587.post-5214536551410344560</id><published>2008-10-01T11:39:00.003+03:00</published><updated>2008-10-01T13:46:45.171+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='блог'/><title type='text'>Старт</title><content type='html'>Многие ведут блоги... &lt;br /&gt;Давно хотелось быть как все :)
&lt;br /&gt;
После перебора массы вариантов (livejournal, wordpress, самому написать), решил завести аккаунт здесь. Не нужно трать много времени на создание, искать хостинг для установки движка, и как-то тут красивше чем livejournal (это конечно субъективно). К томуже данный сервис предоставляет OpenID, связан с picasa, наверное и календарь сюда можно интегрировать - еще не разобрался. Короче - много вкусностей.
&lt;br /&gt; 
Но главное с минимумом усилий позволяет делать главное - вести блог. Этим и займусь. Посты будут в основном содержания: программисстского (python, Django), филосовского (за жизнь). Моих мнений и суждений будет меньше (это точно никому не интересно).
&lt;br /&gt;&lt;br /&gt;
ЗЫ: А интересно код он (blogger) подсвечивать умеет?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4278740335154445587-5214536551410344560?l=dixon-che.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dixon-che.blogspot.com/feeds/5214536551410344560/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4278740335154445587&amp;postID=5214536551410344560&amp;isPopup=true' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4278740335154445587/posts/default/5214536551410344560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4278740335154445587/posts/default/5214536551410344560'/><link rel='alternate' type='text/html' href='http://dixon-che.blogspot.com/2008/10/blog-post.html' title='Старт'/><author><name>Dixon</name><uri>http://www.blogger.com/profile/17211048553882919623</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08309386295113101612'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>