<?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' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2454414780341458679</id><updated>2011-12-23T00:42:55.217+02:00</updated><category term='обновление'/><category term='django gmail libgmail'/><category term='setup'/><category term='hack'/><category term='templates'/><category term='hp530'/><category term='smtp'/><category term='дизайн'/><category term='javascript'/><category term='ubunty'/><category term='CSS'/><category term='optiarc'/><category term='regedit'/><category term='ajax'/><category term='startupers'/><category term='engine'/><category term='интернет-магазины vCard микроформаты'/><category term='violet'/><category term='YouTube'/><category term='dma'/><category term='pio'/><category term='django'/><category term='game'/><category term='флешмоб'/><category term='godin'/><category term='установка'/><category term='purple'/><category term='tags'/><category term='карта'/><category term='python'/><category term='любарта'/><category term='rpg'/><category term='django-tagging'/><category term='Text Link Ads'/><category term='optimization'/><category term='замок'/><category term='app'/><category term='fido'/><category term='IE'/><category term='cow'/><category term='tagging'/><category term='code'/><category term='луцк'/><category term='web 3.0'/><category term='seth'/><category term='vista'/><category term='google'/><title type='text'>Хроники дяди Вовы</title><subtitle type='html'>Питон изменил мой моск.
Сохранить - Да/Нет?</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://konkursof.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://konkursof.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>:)</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>44</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2454414780341458679.post-7629489840801842015</id><published>2009-09-30T10:35:00.001+03:00</published><updated>2009-09-30T10:37:32.016+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='замок'/><category scheme='http://www.blogger.com/atom/ns#' term='карта'/><category scheme='http://www.blogger.com/atom/ns#' term='любарта'/><category scheme='http://www.blogger.com/atom/ns#' term='луцк'/><title type='text'>Замок Любарта</title><content type='html'>&lt;iframe src="http://elutsk.net/map/zamok-lyubarta/?width=500&amp;amp;height=400" frameborder="0" height="400" scrolling="no" width="500"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2454414780341458679-7629489840801842015?l=konkursof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://konkursof.blogspot.com/feeds/7629489840801842015/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2454414780341458679&amp;postID=7629489840801842015' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/7629489840801842015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/7629489840801842015'/><link rel='alternate' type='text/html' href='http://konkursof.blogspot.com/2009/09/blog-post.html' title='Замок Любарта'/><author><name>:)</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2454414780341458679.post-2142385268007525619</id><published>2008-11-02T10:38:00.002+02:00</published><updated>2008-11-02T11:41:07.321+02:00</updated><title type='text'>MS SQL Server</title><content type='html'>Понадобилось скачать сабж. Буду учить брата переводить 1С 7.7 на SQL. Нашёл на оф. сайте:&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=ru&amp;amp;FamilyID=220549b5-0b07-4448-8848-dcc397514b41"&gt;Microsoft SQL Server 2005 Express Edition&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=C243A5AE-4BD1-4E3D-94B8-5A0F62BF7796&amp;amp;displaylang=ru"&gt;Microsoft SQL Server Management Studio Express&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Експресс версия имеет ограничение на 1 процессор и размер базы в 4Гб. А так - ничего, вполне функциональная.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2454414780341458679-2142385268007525619?l=konkursof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://konkursof.blogspot.com/feeds/2142385268007525619/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2454414780341458679&amp;postID=2142385268007525619' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/2142385268007525619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/2142385268007525619'/><link rel='alternate' type='text/html' href='http://konkursof.blogspot.com/2008/11/ms-sql-server.html' title='MS SQL Server'/><author><name>:)</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2454414780341458679.post-3415729395991880188</id><published>2008-10-30T12:46:00.003+02:00</published><updated>2008-10-30T12:51:14.173+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pio'/><category scheme='http://www.blogger.com/atom/ns#' term='regedit'/><category scheme='http://www.blogger.com/atom/ns#' term='optiarc'/><category scheme='http://www.blogger.com/atom/ns#' term='dma'/><category scheme='http://www.blogger.com/atom/ns#' term='hp530'/><title type='text'>HP 530 - dvd привод работает в PIO-mode</title><content type='html'>В настройках IDE установлено "DMA если доступно", но привод упорно отказывался повиноватся и работал только в PIO. В результате запись диска занимала около часа и одно ядро поцессора и паралельно что-либо делать на ноутбуке было "некомфортно".&lt;br /&gt;&lt;br /&gt;Гугление на тему обновления драйверов или прошивки не дало результата. Вся проблемма оказалась в настройках реестра.&lt;br /&gt;&lt;br /&gt;Открываем HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96A-E325-11CE-BFC1-08002BE10318}\000x&lt;br /&gt;&lt;br /&gt;В подветках есть параметры MasterIdDataChecksum и SlaveIdDataChecksum. Удаляем их и перезагружаемся.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2454414780341458679-3415729395991880188?l=konkursof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://konkursof.blogspot.com/feeds/3415729395991880188/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2454414780341458679&amp;postID=3415729395991880188' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/3415729395991880188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/3415729395991880188'/><link rel='alternate' type='text/html' href='http://konkursof.blogspot.com/2008/10/hp-530-dvd-pio-mode.html' title='HP 530 - dvd привод работает в PIO-mode'/><author><name>:)</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2454414780341458679.post-2086182130015593735</id><published>2008-10-17T13:04:00.003+03:00</published><updated>2008-10-17T13:38:22.277+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ubunty'/><category scheme='http://www.blogger.com/atom/ns#' term='smtp'/><category scheme='http://www.blogger.com/atom/ns#' term='setup'/><title type='text'>Установка SMTP сервера на Ubuntu</title><content type='html'>Установить мейл-сервер проще простого. Соединяемся по SSH (например, с помощью Putty) и:&lt;br /&gt;&lt;br /&gt;sudo apt-get install postfix&lt;br /&gt;Возможно понадобится ключ --fix-missing&lt;br /&gt;&lt;br /&gt;Программа установки попросит установить несколько параметров. Вниматено читаем тексты с подсказками и конфигурируем.&lt;br /&gt;&lt;br /&gt;Затем:&lt;br /&gt;sudo dpkg-reconfigure postfix&lt;br /&gt;&lt;br /&gt;И релоад: /etc/init.d/postfix reload&lt;br /&gt;&lt;br /&gt;И всё. У вас есть свой SMTP сервер :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2454414780341458679-2086182130015593735?l=konkursof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://konkursof.blogspot.com/feeds/2086182130015593735/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2454414780341458679&amp;postID=2086182130015593735' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/2086182130015593735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/2086182130015593735'/><link rel='alternate' type='text/html' href='http://konkursof.blogspot.com/2008/10/smtp-ubuntu.html' title='Установка SMTP сервера на Ubuntu'/><author><name>:)</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2454414780341458679.post-8521416715525424243</id><published>2008-10-16T11:45:00.004+03:00</published><updated>2008-10-16T11:49:45.302+03:00</updated><title type='text'>Вы заметили баннер справа?</title><content type='html'>Прочитал сегодня на Хабре заметку о фонде "Подари жизнь!" и не просто смог не добавить их баннер на свои стартапы и блоги. Потратил 10 минут, а может так статься, кому-то это спасет жизнь. У наших давних друзей в понедельник умерла девочка. 22 года, как говорится жить да жить. Маленька дочурка осталась без мамы.&lt;br /&gt;&lt;br /&gt;Не будьте чёрствыми. Будьте людьми.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2454414780341458679-8521416715525424243?l=konkursof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://konkursof.blogspot.com/feeds/8521416715525424243/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2454414780341458679&amp;postID=8521416715525424243' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/8521416715525424243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/8521416715525424243'/><link rel='alternate' type='text/html' href='http://konkursof.blogspot.com/2008/10/blog-post.html' title='Вы заметили баннер справа?'/><author><name>:)</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2454414780341458679.post-2312178284783128480</id><published>2008-08-12T19:24:00.005+03:00</published><updated>2008-10-19T14:02:13.718+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ubunty'/><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='установка'/><title type='text'>Готовлю голый Ubuntu сервер для Django проекта</title><content type='html'>Итак, у меня в руках голый девелопмент сервер на Ubuntu. Задача: настроить сервер для проекта на Django framework.&lt;br /&gt;&lt;br /&gt;Процесс установки всего добра (по редакции гугля плюс немного отсебятины):&lt;br /&gt;&lt;br /&gt;sudo apt-get install python&lt;br /&gt;sudo apt-get install subversion&lt;br /&gt;sudo apt-get install mysql-server&lt;br /&gt;sudo apt-get install python-mysqldb&lt;br /&gt;sudo apt-get install python-imaging&lt;br /&gt;sudo apt-get install libapache2-mod-python&lt;br /&gt;&lt;br /&gt;/etc/init.d/apache2 restart&lt;br /&gt;&lt;br /&gt;Открываю вкладочку Фаерфокса по адресу сервера и...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;It works!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Идем дальше:&lt;br /&gt;&lt;br /&gt;sudo apt-get install phpmyadmin&lt;br /&gt;&lt;br /&gt;&lt;a href="http://адреснашегосервера/phpmyadmin"&gt;http://адреснашегосервера/phpmyadmin&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Django берем с svn, временно сохраняем в какую-то папочку:&lt;br /&gt;svn co &lt;a href="http://code.djangoproject.com/svn/django/trunk/"&gt;http://code.djangoproject.com/svn/django/trunk/&lt;/a&gt;&lt;br /&gt;Затем из trunk - python setup.py install&lt;br /&gt;Установщик скопирует фреймворк в папку пакетов Питона.&lt;br /&gt;&lt;br /&gt;красота :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2454414780341458679-2312178284783128480?l=konkursof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://konkursof.blogspot.com/feeds/2312178284783128480/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2454414780341458679&amp;postID=2312178284783128480' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/2312178284783128480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/2312178284783128480'/><link rel='alternate' type='text/html' href='http://konkursof.blogspot.com/2008/08/ubuntu-django.html' title='Готовлю голый Ubuntu сервер для Django проекта'/><author><name>:)</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2454414780341458679.post-656369747103251315</id><published>2008-08-10T12:36:00.004+03:00</published><updated>2008-08-10T12:45:51.619+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='обновление'/><category scheme='http://www.blogger.com/atom/ns#' term='django-tagging'/><title type='text'>Обновляемся</title><content type='html'>Плавно перехожу на транковую версию Django. Предыдущие проекты писал на 0.96, и, как оказалось сильно отстал от жизни.&lt;br /&gt;&lt;br /&gt;Например, официальная версия &lt;a href="http://code.google.com/p/django-tagging/"&gt;django-tagging&lt;/a&gt; 0.2.1 не работает с транком Django :) Нужно использовать svn версию: &lt;a href="http://django-tagging.googlecode.com/svn/trunk/"&gt;http://django-tagging.googlecode.com/svn/trunk/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Или вот еще, при импорте теперь нужно писать полный путь, включая имя проекта. т.е.&lt;br /&gt;&lt;blockquote&gt;from appname.models import * &lt;/blockquote&gt;&lt;br /&gt;не прокатит, нужно писать&lt;br /&gt;&lt;blockquote&gt;from projectname.appname.models import *&lt;/blockquote&gt;&lt;br /&gt;Иначе может произойти двойной импорт. Всё бы ничего, но в случае двойного импорта newforms админка матюкнётся AlreadyRegistered и валидация не пройдет.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2454414780341458679-656369747103251315?l=konkursof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://konkursof.blogspot.com/feeds/656369747103251315/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2454414780341458679&amp;postID=656369747103251315' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/656369747103251315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/656369747103251315'/><link rel='alternate' type='text/html' href='http://konkursof.blogspot.com/2008/08/blog-post.html' title='Обновляемся'/><author><name>:)</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2454414780341458679.post-6116689325162193747</id><published>2008-07-09T16:36:00.004+03:00</published><updated>2008-07-09T16:37:56.997+03:00</updated><title type='text'>Вы основатель революционного стартапа?</title><content type='html'>&lt;a href="http://startupers.ru/submit_startup/"&gt;&lt;span style="font-size:180%;"&gt;[Расскажите о своём проекте]&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2454414780341458679-6116689325162193747?l=konkursof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://konkursof.blogspot.com/feeds/6116689325162193747/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2454414780341458679&amp;postID=6116689325162193747' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/6116689325162193747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/6116689325162193747'/><link rel='alternate' type='text/html' href='http://konkursof.blogspot.com/2008/07/blog-post.html' title='Вы основатель революционного стартапа?'/><author><name>:)</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2454414780341458679.post-6205935969922765874</id><published>2008-06-19T13:52:00.002+03:00</published><updated>2008-06-19T13:57:37.467+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='code'/><category scheme='http://www.blogger.com/atom/ns#' term='optimization'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>Популярные AJAX библиотеки теперь можно загружать с сервера Google</title><content type='html'>&lt;p&gt;Google Code начал хостить популярные библиотеки JavaScript - JQuery, Prototype и другие. &lt;/p&gt;&lt;p&gt;А знаете, что это значит? Можно указать в своей странице загружать эти .js с сервера Google. И библиотеки будут загружатся пользовательским браузером всего один раз, независимо от количества посещаемых сайтов. &lt;/p&gt;&lt;p&gt;&lt;a href="http://code.google.com/apis/ajaxlibs/"&gt;http://code.google.com/apis/ajaxlibs/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Утянуто у &lt;a href="http://www.rossp.org/"&gt;rossp&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2454414780341458679-6205935969922765874?l=konkursof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://konkursof.blogspot.com/feeds/6205935969922765874/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2454414780341458679&amp;postID=6205935969922765874' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/6205935969922765874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/6205935969922765874'/><link rel='alternate' type='text/html' href='http://konkursof.blogspot.com/2008/06/ajax-google.html' title='Популярные AJAX библиотеки теперь можно загружать с сервера Google'/><author><name>:)</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2454414780341458679.post-1234597377865343811</id><published>2008-06-02T15:06:00.003+03:00</published><updated>2008-06-02T15:15:32.292+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Text Link Ads'/><title type='text'>Установка Text Link Ads на Python-сайте</title><content type='html'>Решил использовать сервис Text Link Ads для продажи ссылок с одного своего англоязычного сервиса (PR страниц 3-4). И столкнулся с тем, что для сайта на платформе Python/Django они не предлагают готового Ad-кода.&lt;br /&gt;&lt;br /&gt;Гугление не дало результата и я включил моск.&lt;br /&gt;&lt;br /&gt;Для сайтов на платформе Blogger они предлагают размещать RSS-поток с ссылками. Почему бы не использовать и мне такой вариант, подумал я. Все просто - берем RSS-гаджет и подключаем его к своему TLA-аккаунту.&lt;br /&gt;&lt;br /&gt;Мне приглянулся &lt;a href="http://www.google.com/ig/directory?synd=open&amp;num=24&amp;url=http://google.jeeva-con.com/simple_rss/simple_rss.xml&amp;output=html"&gt;"Simple rss reader"&lt;/a&gt; из гаджетов Google. Простотой в настройке и установке.&lt;br /&gt;&lt;br /&gt;Что получилось, можно посмотреть на &lt;a href="http://gettingtasksdone.com/"&gt;Getting tasks done&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2454414780341458679-1234597377865343811?l=konkursof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://konkursof.blogspot.com/feeds/1234597377865343811/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2454414780341458679&amp;postID=1234597377865343811' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/1234597377865343811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/1234597377865343811'/><link rel='alternate' type='text/html' href='http://konkursof.blogspot.com/2008/06/text-link-ads-python.html' title='Установка Text Link Ads на Python-сайте'/><author><name>:)</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2454414780341458679.post-8515569810255579427</id><published>2008-05-29T17:06:00.003+03:00</published><updated>2008-05-29T17:14:13.669+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='app'/><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='rpg'/><category scheme='http://www.blogger.com/atom/ns#' term='engine'/><category scheme='http://www.blogger.com/atom/ns#' term='fido'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='game'/><title type='text'>Игра ФИДО 2.0 - античитерское обновление #1</title><content type='html'>Не так давно я запустил на Хабре весть об игре &lt;a href="http://fido2.appspot.com/"&gt;Фидо 2&lt;/a&gt;. Вполне ожидаемая реакция - за два часа сервер лёг. Но вот чего я не ожидал (да, наивный, верю в человеческую честность), так это такого количества читерских запросов. Они то и положили веб-приложение.&lt;br /&gt;&lt;br /&gt;Больше всего народу понравилось закачивать старый злан на файлопомойки, ускорять время и взламывать себе подобных :) Вполне закономерно, что в обновлении я ограничил бонусы от закачки, поставил триггер на проверку продолжительности игрового дня и увеличил защиту атакуемого игрока. Кстати, теперь при атаке, независимо от опыта у атакуемого есть возможность отбится даже без фаервола ;)&lt;br /&gt;&lt;br /&gt;Вот так-то.&lt;br /&gt;Исходники в помощь: &lt;a href="http://code.google.com/p/fido2/"&gt;http://code.google.com/p/fido2/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2454414780341458679-8515569810255579427?l=konkursof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://konkursof.blogspot.com/feeds/8515569810255579427/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2454414780341458679&amp;postID=8515569810255579427' title='Комментарии: 5'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/8515569810255579427'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/8515569810255579427'/><link rel='alternate' type='text/html' href='http://konkursof.blogspot.com/2008/05/20-1.html' title='Игра ФИДО 2.0 - античитерское обновление #1'/><author><name>:)</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2454414780341458679.post-9120328333759997639</id><published>2008-05-26T14:52:00.001+03:00</published><updated>2008-05-26T14:56:09.420+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='app'/><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='engine'/><category scheme='http://www.blogger.com/atom/ns#' term='templates'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>Django и Google App Engine: шаблоны и статические файлы</title><content type='html'>В &lt;a href="http://konkursof.blogspot.com/2008/05/django-google-app-engine-12.html"&gt;предыдущем посте&lt;/a&gt; было рассказано, как создать простейший проект на GAE + Django. Сейчас давайте попробуем подключить к проекту шаблоны Django и поддержку статических файлов - таблиц стилей, скриптов и картинок.&lt;br /&gt;&lt;br /&gt;Наш Django проект будет называтся &lt;strong&gt;dvk&lt;/strong&gt;, и содержать приложение &lt;strong&gt;main&lt;/strong&gt;. В папке приложения создаем каталог для шаблонов &lt;strong&gt;templates&lt;/strong&gt;:&lt;br /&gt;&lt;blockquote&gt;dvk/&lt;br /&gt;main.py&lt;br /&gt;app.yaml&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dvk/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;manage.py&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;settings.py&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;urls.py&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;main/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;__init__.py&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;models.py&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;views.py&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;templates/&lt;/strong&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Чтобы среда знала, где искать файлы шаблонов, нужно прописать путь в файле настроек проекта settings.py&lt;br /&gt;&lt;blockquote&gt;import os&lt;br /&gt;ROOT_PATH = os.path.dirname(__file__)&lt;br /&gt;&lt;br /&gt;TEMPLATE_DIRS = (&lt;br /&gt;&amp;nbsp;&amp;nbsp;ROOT_PATH + "/main/templates",&lt;br /&gt;)&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Теперь можно создать файл шаблона &lt;strong&gt;main.html&lt;/strong&gt; в папке шаблонов. Наш шаблон не будет делать ничего сверх полезного :) Просто скажем браузеру "Hello world!"&lt;br /&gt;&lt;blockquote&gt;Hello world!&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Для вывода страницы создадим процедуру-контроллер в файле views.py и привяжем её к обработке запроса главной страницы сайта в urls.py&lt;br /&gt;&lt;blockquote&gt;#dvk/dvk/main/views.py &lt;br /&gt;from django.shortcuts import render_to_response&lt;br /&gt;&lt;br /&gt;def index(request):&lt;br /&gt;&amp;nbsp;&amp;nbsp;return render_to_response("main.html")&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;#dvk/dvk/urls.py &lt;br /&gt;from django.conf.urls.defaults import *&lt;br /&gt; &lt;br /&gt;urlpatterns = patterns("",&lt;br /&gt;&amp;nbsp;&amp;nbsp;(r"^$", "dvk.main.views.index"),&lt;br /&gt;)&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Теперь можно протестировать наше приложение - &lt;strong&gt;dev_appserver.py dvk&lt;/strong&gt;&lt;br /&gt;Откройте браузер с адресом http://127.0.0.1:8080/ и у вас отобразится "Hello world!" :-)&lt;br /&gt;&lt;br /&gt;Чтобы Google App Engine обрабатывал статические файлы, нужно в файле настроек GAE приложения включить в секцию &lt;strong&gt;handlers&lt;/strong&gt; параметр &lt;strong&gt;static_dir&lt;/strong&gt;:&lt;br /&gt;&lt;blockquote&gt;application: dvk&lt;br /&gt;version: 1&lt;br /&gt;runtime: python&lt;br /&gt;api_version: 1&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;handlers:&lt;br /&gt;- url: /static&lt;br /&gt;  static_dir: static&lt;br /&gt;&lt;br /&gt;...&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Параметр url указывает, по какому адресу будут доступны файлы, а значение параметра static_dir - имя и расположение папки. В нашем примере она располагается в корне проекта и имеет имя &lt;strong&gt;static&lt;/strong&gt;. Теперь в шаблонах можно обращаться к статическим файлам, например для загрузки таблицы стилей: &lt;strong&gt;link href="/static/main.css" type="text/css" rel="stylesheet"&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Использованные материалы:&lt;br /&gt;&lt;a href="http://thomas.broxrost.com/2008/04/20/django-on-google-app-engine-templates-and-static-files/"&gt;Django on Google App Engine: Templates and static files&lt;/a&gt;&lt;br /&gt;&lt;a href="http://code.google.com/appengine/docs/configuringanapp.html#Static_File_Handlers"&gt;Configuring an App&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2454414780341458679-9120328333759997639?l=konkursof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://konkursof.blogspot.com/feeds/9120328333759997639/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2454414780341458679&amp;postID=9120328333759997639' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/9120328333759997639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/9120328333759997639'/><link rel='alternate' type='text/html' href='http://konkursof.blogspot.com/2008/05/django-google-app-engine-css-js.html' title='Django и Google App Engine: шаблоны и статические файлы'/><author><name>:)</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2454414780341458679.post-2608511515261524108</id><published>2008-05-09T12:33:00.008+03:00</published><updated>2008-05-11T16:42:27.821+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='app'/><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='engine'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>Django приложение на Google App Engine в 12 шагов</title><content type='html'>В этом туториале рассказывается, как создать простое &lt;a href="http://www.djangoproject.com/"&gt;Django&lt;/a&gt; приложение с использованием Google App Engine. Предполагается, что у вас уже есть аккаунт в &lt;a href="http://code.google.com/appengine/"&gt;Google App Engine&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1.&lt;/strong&gt; Для начала нужно зарегистрировать имя приложения в GAE и установить у себя &lt;a href="http://code.google.com/appengine/docs/gettingstarted/devenvironment.html"&gt;тулкит&lt;/a&gt;. Среда Google App Engine работает только с Python 2.5 (2.5.1, 2.5.2). Вместе с Питоном должен быть установлен и Django 0.96 (0.96.1) (.../python/libsite-packages/django).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2.&lt;/strong&gt; Создайте папку для вашего приложения. Имя и размещение не имеет значения. У меня папка называется "&lt;strong&gt;dvk&lt;/strong&gt;".&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;3.&lt;/strong&gt; В папке приложения создайте файл main.py&lt;br /&gt;&lt;blockquote&gt;import os, sys&lt;br /&gt;&lt;br /&gt;os.environ["DJANGO_SETTINGS_MODULE"] = "dvk.settings"&lt;br /&gt;&lt;br /&gt;ROOT_PATH = os.path.dirname(__file__)&lt;br /&gt;sys.path.append(ROOT_PATH)&lt;br /&gt;&lt;br /&gt;# Google App Engine imports.&lt;br /&gt;from google.appengine.ext.webapp import util&lt;br /&gt;&lt;br /&gt;# Force Django to reload its settings.&lt;br /&gt;from django.conf import settings&lt;br /&gt;&lt;br /&gt;settings._target = None&lt;br /&gt;&lt;br /&gt;import django.core.handlers.wsgi&lt;br /&gt;import django.core.signals&lt;br /&gt;import django.db&lt;br /&gt;import django.dispatch.dispatcher&lt;br /&gt;&lt;br /&gt;# Unregister the rollback event handler.&lt;br /&gt;django.dispatch.dispatcher.disconnect(&lt;br /&gt;django.db._rollback_on_exception,&lt;br /&gt;django.core.signals.got_request_exception)&lt;br /&gt;&lt;br /&gt;def main():&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;# Create a Django application for WSGI.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;application = django.core.handlers.wsgi.WSGIHandler()&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;# Run the WSGI CGI handler with that application.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;util.run_wsgi_app(application)&lt;br /&gt;&lt;br /&gt;if __name__ == "__main__":&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;main()&lt;/blockquote&gt;&lt;br /&gt;Этот файл запускается на выполнение, когда пользователь открывает в браузере страницу вашего веб-приложения.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;4.&lt;/strong&gt; Создайте файл app.yaml&lt;br /&gt;&lt;blockquote&gt;application: dvk&lt;br /&gt;version: 1&lt;br /&gt;runtime: python&lt;br /&gt;api_version: 1&lt;br /&gt;&lt;br /&gt;handlers:&lt;br /&gt;- url: /static&lt;br /&gt;  static_dir: static&lt;br /&gt;&lt;br /&gt;- url: /.*&lt;br /&gt;  script: main.py&lt;/blockquote&gt;&lt;br /&gt;Имя приложения естественно подставьте по своему вкусу :)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;5.&lt;/strong&gt; Из папки приложения выполните команду создания нового Django-проекта:&lt;br /&gt;&lt;blockquote&gt;django-admin.py startproject dvk&lt;/blockquote&gt;&lt;br /&gt;Маленькое замечание: Всего у нас будет 2 папки проектов - папка GAE-проекта и папка Django-проекта внутри неё. Внешний проект выполняет роль обёртки.&lt;br /&gt;&lt;blockquote&gt;dvk/&lt;br /&gt;main.py&lt;br /&gt;app.yaml&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dvk/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;manage.py&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;settings.py&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;urls.py&lt;/blockquote&gt;&lt;br /&gt;В файле настроек Django-проекта settings.py нужно удалить всё, что относиться к настройкам БД, админке, аутентификации и сессиям. Google App Engine не поддерживает модели Django, поэтому эти модули работать не будут.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;6.&lt;/strong&gt; Теперь можно протестировать наше GAE+Django приложение&lt;br /&gt;&lt;blockquote&gt;cd ..&lt;br /&gt;dev_appserver.py dvk&lt;br /&gt;&lt;br /&gt;INFO     2008-04-08 19:08:10,023 appcfg.py] Checking for updates to the SDK.&lt;br /&gt;INFO     2008-04-08 19:08:10,384 appcfg.py] The SDK is up to date.&lt;br /&gt;INFO     2008-04-08 19:08:10,404 dev_appserver_main.py] Running application dvk on port 8080: http://localhost:8080&lt;/blockquote&gt;&lt;br /&gt;Откройте браузер с адресом http://127.0.0.1:8080/ и у вас отобразится стандартная страница Django с сообщением &lt;em&gt;It worked!&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;7.&lt;/strong&gt; Создайте Django апликейшн в папке Django-проекта.&lt;br /&gt;&lt;blockquote&gt;manage.py startapp main&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;8.&lt;/strong&gt; Теперь самое время добавить модель данных. Мы создадим простой класс Visitor, который будет хранить информацию обо всех посетителях сайта.&lt;br /&gt;&lt;blockquote&gt;#.../dvk/dvk/main/models.py&lt;br /&gt;from google.appengine.ext import db&lt;br /&gt;&lt;br /&gt;class Visitor(db.Model):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ip = db.StringProperty()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;added_on = db.DateTimeProperty(auto_now_add=True)&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;При добавлении или изменении моделей в Google App Engine не требуется проводить синхронизацию с базой данных. Она выполняется автоматически.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;9.&lt;/strong&gt; Теперь создадим процедуру-контроллер. Она будет записывать в базу данных параметры посетителя нашей веб-страницы и отображать список всех посетителей.&lt;br /&gt;&lt;blockquote&gt;#.../dvk/dvk/main/views.py&lt;br /&gt;from django.http import HttpResponse&lt;br /&gt;from dvk.main.models import Visitor&lt;br /&gt;&lt;br /&gt;def main(request):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;visitor = Visitor()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;visitor.ip = request.META["REMOTE_ADDR"]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;visitor.put()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;result = ""&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;visitors = Visitor.all()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;visitors.order("-added_on")&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for visitor in visitors:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;result += visitor.ip + u" visited on " + unicode(visitor.added_on) + u""&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return HttpResponse(result)&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;10.&lt;/strong&gt; В файле диспетчера URL-ов укажем, что наша процедура ответственна за обработку запроса главной страницы сайта.&lt;br /&gt;&lt;blockquote&gt;#.../dvk/dvk/main/urls.py&lt;br /&gt;from django.conf.urls.defaults import *&lt;br /&gt;&lt;br /&gt;urlpatterns = patterns("",&lt;br /&gt;(r"^$", "mashname.main.views.main"),&lt;br /&gt;)&lt;/blockquote&gt;&lt;br /&gt;&lt;strong&gt;11.&lt;/strong&gt; Протестируйте своё приложение открыв окно браузера по адресу http://127.0.0.1:8080/. При каждом обновлении веб-страницы будет добавлятся новая строка и соответственно новый объект Visitor будет записан в БД. GAE также автоматически создает админ-панель приложения - http://127.0.0.1:8080/_ah/admin/&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;12.&lt;/strong&gt; Теперь можно заливать наше приложение на GAE: appcfg.py update dvk&lt;br /&gt;При первом выполнении команда попросит авторизироваться.&lt;br /&gt;&lt;br /&gt;Использованные материалы: &lt;br /&gt;&lt;a href="http://code.google.com/appengine/articles/django.html"&gt;Running Django on Google App Engine&lt;/a&gt;&lt;br /&gt;&lt;a href="http://thomas.broxrost.com/2008/04/08/django-on-google-app-engine/"&gt;Django on Google App Engine in 13 simple steps&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;__________________________________&lt;br /&gt;Мои переводы:&lt;br /&gt;&lt;a href="http://startupers.ru/webworker/start_business_starting_startup/"&gt;Начинайте бизнес создавая стартап&lt;/a&gt;&lt;br /&gt;&lt;a href="http://startupers.ru/a/the_fr_interview_y_combinators_paul_graham/"&gt;Интервью Пола Грэма для Found|READ&lt;/a&gt;&lt;br /&gt;&lt;a href="http://startupers.ru/webworker/what_does_21_century_workplace_look_like/"&gt;Как выглядит рабочее место в XXI веке&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2454414780341458679-2608511515261524108?l=konkursof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://konkursof.blogspot.com/feeds/2608511515261524108/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2454414780341458679&amp;postID=2608511515261524108' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/2608511515261524108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/2608511515261524108'/><link rel='alternate' type='text/html' href='http://konkursof.blogspot.com/2008/05/django-google-app-engine-12.html' title='Django приложение на Google App Engine в 12 шагов'/><author><name>:)</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2454414780341458679.post-4550334449988690973</id><published>2008-04-16T16:52:00.001+03:00</published><updated>2008-04-16T16:54:40.656+03:00</updated><title type='text'>Перевод статьи Web Worker Tip: Don’t Go Dark</title><content type='html'>Перевёл еще одну интересную статью с Web Worker Daily&lt;br /&gt;&lt;br /&gt;&lt;a class="article_title" href="http://startupers.ru/webworker/web_worker_tip_dont_go_dark/"&gt;Не уходи в тень, будь на виду! &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Большое преимущество независимой работы это возможность находиться в окружении, которое нравиться – в домашнем офисе, интернет-кафе, или коворкинг центре. Хоть даже в парке, лишь бы Wi-Fi тянул. И совсем необязательно постоянно быть в офисе заказчика.&lt;br /&gt;&lt;br /&gt;Но это палка о двух концах: вы можете заплатить за свою свободу уходом в категорию "ни слуху, ни духу". Заказчикам очень важно получать от вас сигналы&lt;a href="http://startupers.ru/webworker/"&gt;...&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2454414780341458679-4550334449988690973?l=konkursof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://konkursof.blogspot.com/feeds/4550334449988690973/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2454414780341458679&amp;postID=4550334449988690973' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/4550334449988690973'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/4550334449988690973'/><link rel='alternate' type='text/html' href='http://konkursof.blogspot.com/2008/04/web-worker-tip-dont-go-dark.html' title='Перевод статьи Web Worker Tip: Don’t Go Dark'/><author><name>:)</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2454414780341458679.post-1576514809506719216</id><published>2008-04-09T16:56:00.003+03:00</published><updated>2008-04-09T17:00:09.490+03:00</updated><title type='text'>Перевел 2 статьи с Web Worker Daily</title><content type='html'>&lt;strong&gt;Альтернативы домашнему офису&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Есть некая ирония в том, что-бы быть веб-работником и проводить в домашнем офисе большую часть времени.&lt;br /&gt;&lt;br /&gt;У вас есть возможности и технологии работать в любом месте где вы только захотите, и всё же большую часть времени вы сидите в компьютерном кресле - и наверное, редко видите солнечный свет. Временами у вас возникает сильное желание сменить декорации. Так почему-бы и нет? Новое окружение может повысить вашу креативность, дать свежее видение, или просто снова расшевелить старый проект.&lt;br /&gt;&lt;br /&gt;Если у вас появилось желание покинуть привычное рабочеее пространство, &lt;a href="http://startupers.ru/webworker/alternatives_to_the_home_office/"&gt;вот несколько альтернатив&lt;/a&gt;...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;7 советов как повысить продуктивность работы с Firefox&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Для многих из нас Firefox это браузер, в котором мы проводим большую часть дня. Эти советы помогут сделать более эффективной &lt;a href="http://startupers.ru/webworker/7_tips_for_firefox_efficiency/"&gt;работу в Firefox&lt;/a&gt;...&lt;br /&gt;&lt;br /&gt;Полный перевод читайте на Стартаперах в разделе &lt;a href="http://startupers.ru/webworker/"&gt;"Инструменты бедуина".&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2454414780341458679-1576514809506719216?l=konkursof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://konkursof.blogspot.com/feeds/1576514809506719216/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2454414780341458679&amp;postID=1576514809506719216' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/1576514809506719216'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/1576514809506719216'/><link rel='alternate' type='text/html' href='http://konkursof.blogspot.com/2008/04/2-web-worker-daily.html' title='Перевел 2 статьи с Web Worker Daily'/><author><name>:)</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2454414780341458679.post-4363145931374181902</id><published>2008-04-09T10:40:00.004+03:00</published><updated>2008-04-09T10:43:03.331+03:00</updated><title type='text'>Анализ страницы на плотность ключевых слов</title><content type='html'>Нашел для себя неплохую онлайн-тулзу для анализа страницы на плотность слов - &lt;a href="http://vface.controlstyle.ru/ns.php"&gt;http://vface.controlstyle.ru/ns.php&lt;/a&gt;&lt;br /&gt;Умеет различать различные словоформы, что очень приятно. Паралельно умеет оценивать "тошноту" страницы :)&lt;br /&gt;Сейчас буду мучить страницы &lt;a href="http://startupers.ru/"&gt;Стартаперов.Ру&lt;/a&gt; :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2454414780341458679-4363145931374181902?l=konkursof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://konkursof.blogspot.com/feeds/4363145931374181902/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2454414780341458679&amp;postID=4363145931374181902' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/4363145931374181902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/4363145931374181902'/><link rel='alternate' type='text/html' href='http://konkursof.blogspot.com/2008/04/blog-post_09.html' title='Анализ страницы на плотность ключевых слов'/><author><name>:)</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2454414780341458679.post-933877629034612581</id><published>2008-04-03T12:22:00.004+03:00</published><updated>2008-04-03T12:29:13.767+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='startupers'/><category scheme='http://www.blogger.com/atom/ns#' term='violet'/><category scheme='http://www.blogger.com/atom/ns#' term='cow'/><category scheme='http://www.blogger.com/atom/ns#' term='purple'/><title type='text'>Фиолетовая корова</title><content type='html'>Вчера по совету в блоге Сета Година искал на Фликере картинку с фиолетовой коровой для проекта &lt;a href="http://startupers.ru/"&gt;Стартаперы.РУ&lt;/a&gt;&lt;br /&gt;&lt;div&gt;С фиолетовыми коровами было туго, поэтому решил изменить цвет на пурпурный. Все равно в Фотошопе всё можно исправить :))) &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Нашел вот такую забавную буренку:&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5184947360992429106" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_e7B1a7ZYVgk/R_SiJ18NhDI/AAAAAAAAAB4/i5WJNYPhWNA/s400/557616422_21cb8fe269_o.jpg" border="0" /&gt;Фотограф: &lt;a href="http://www.flickr.com/photos/diything/"&gt;adiything&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2454414780341458679-933877629034612581?l=konkursof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://konkursof.blogspot.com/feeds/933877629034612581/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2454414780341458679&amp;postID=933877629034612581' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/933877629034612581'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/933877629034612581'/><link rel='alternate' type='text/html' href='http://konkursof.blogspot.com/2008/04/blog-post_1689.html' title='Фиолетовая корова'/><author><name>:)</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_e7B1a7ZYVgk/R_SiJ18NhDI/AAAAAAAAAB4/i5WJNYPhWNA/s72-c/557616422_21cb8fe269_o.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2454414780341458679.post-3861367645382780038</id><published>2008-04-03T11:34:00.003+03:00</published><updated>2008-04-03T12:30:19.752+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Фоновая загрузка файлов на сервер</title><content type='html'>Все, кто пользуется GMail замечали, что приаттаченные файлы потихоньку загружаются на сервер через несколько секунд бездействия и затем поля с именами файлов заменяются на чекбоксы.&lt;br /&gt;&lt;br /&gt;Похожий функционал я реализовал в одном Django-проекте с помощью JQuery.&lt;br /&gt;При выборе ползователем логотипа для визитки, файл логотипа прозрачно загружается на сервер, обрабатывается и затем "отдается" браузеру. и пользователь видит, что в макете логотип поменялся на выбранный им.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Реализация &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;После загрузки страницы запускается периодический вызов функции &lt;strong&gt;LoadLogotype()&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&amp;lt;script type="'text/javascript'" src="'/appmedia/jquery.js'"&gt;&amp;lt;/script&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;script language="JavaScript" type="text/javascript"&gt;&lt;br /&gt;var previous_logo = "";&lt;br /&gt;&lt;br /&gt;//-----------------------------------------------------------------------------&lt;br /&gt;function LoadLogotype() {&lt;br /&gt;  var card_logo = $("#card_logo").val();&lt;br /&gt;&lt;br /&gt;  if ((card_logo != "") &amp;amp;&amp;amp; (previous_logo != card_logo)) {&lt;br /&gt;    previous_logo = card_logo;&lt;br /&gt;    document.getElementById("uploadphoto").submit();&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;//-----------------------------------------------------------------------------&lt;br /&gt;$(function() {&lt;br /&gt;  setInterval("LoadLogotype()", 1000);&lt;br /&gt;});&lt;br /&gt;&amp;lt;/script&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Функция LoadLogotype() проверяет, выбран или изменился ли файл логотипа и, если это так, то отправляет форму &lt;strong&gt;"uploadphoto"&lt;/strong&gt; на сервер.&lt;br /&gt;&lt;br /&gt;Форма имеет параметр &lt;strong&gt;target="upload_frame"&lt;/strong&gt;, то-есть она не будет инициировать переход на другую страницу. Все изменения будут касаться только скрытого фрейма. После отправки формы в этом фрейме загрузиться отданный сервером результат.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;…&lt;br /&gt;&lt;br /&gt;&amp;lt;form id="uploadphoto" target="upload_frame" enctype="multipart/form-data" action="/upload_logo/" method = "post"&gt;&lt;br /&gt;  Логотип: &amp;lt;input id="card_logo" name="card_logo" type="file"&gt;&lt;br /&gt;&amp;lt;/form&gt;&lt;br /&gt;&lt;br /&gt;…&lt;br /&gt;&lt;br /&gt;&amp;lt;iframe id="upload_frame" name="upload_frame" style="display:none"&gt;&lt;br /&gt;&lt;br /&gt;…&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Серверная функция обработки загрузки логотипа сохраняет файл в папке пользователя. Также загружаемый файл проверяется по списку alloved_files – защита от загрузки пользователем неразрешенных файлов.&lt;br /&gt;Как результат функция отдает URL к файлу.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;#------------------------------------------------------------------------------&lt;br /&gt;def upload_logo(request):&lt;br /&gt;    'Handles upload of logo images'&lt;br /&gt;&lt;br /&gt;    alloved_files = ('.jpg', '.jpeg', '.png', '.gif')&lt;br /&gt;&lt;br /&gt;    id = request.session['our_id']&lt;br /&gt;    path = settings.MEDIA_ROOT + 'uploads/%s/' % id&lt;br /&gt;&lt;br /&gt;    if not os.path.isdir(path):&lt;br /&gt;        try:&lt;br /&gt;            os.makedirs(path)&lt;br /&gt;        except:&lt;br /&gt;            return "Error: could not create directory to upload files!"&lt;br /&gt;&lt;br /&gt;    for image_file in request.FILES:&lt;br /&gt;        filename = request.FILES[image_file]['filename']&lt;br /&gt;        name, ext = os.path.splitext(filename)&lt;br /&gt;        if ext not in alloved_files:&lt;br /&gt;            continue&lt;br /&gt;&lt;br /&gt;        if filename == '':&lt;br /&gt;            continue&lt;br /&gt;&lt;br /&gt;        content = request.FILES[image_file]['content']&lt;br /&gt;&lt;br /&gt;        f = open(path + filename, 'wb')&lt;br /&gt;        try:&lt;br /&gt;            f.write(content)&lt;br /&gt;        finally:&lt;br /&gt;            f.close()&lt;br /&gt;&lt;br /&gt;    content = {&lt;br /&gt;        "image": "/appmedia/uploads/%s/%s" % (id, filename),&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    return render_to_response("done.html", content, context_instance=RequestContext(request))&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Результат рендеринга шаблона &lt;strong&gt;done.html&lt;/strong&gt; попадет в невидимый IFRAME &lt;strong&gt;"upload_frame"&lt;/strong&gt;. Скрипт находит в родительском документе элемент &lt;strong&gt;"card_logotype"&lt;/strong&gt; и заменяет URL картинки на отданный сервером.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&amp;lt;html&gt;&lt;br /&gt;&amp;lt;head&gt;&lt;br /&gt;&amp;lt;script language="JavaScript" type="text/javascript"&gt;&lt;br /&gt;    parent.document.getElementById('card_logotype').src="{{image}}"&lt;br /&gt;&amp;lt;/script&gt;&lt;br /&gt;&amp;lt;/head&gt;&lt;br /&gt;&amp;lt;body&gt;&lt;br /&gt;&amp;lt;/body&gt;&lt;br /&gt;&amp;lt;/html&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;В результате пользователь видит изменение логотипа на выбранную картинку. Весь процесс происходит без полного обновления страницы. Изменяется лишь содержимое скрытого фрейма и картинка логотипа.&lt;br /&gt;&lt;br /&gt;Посмотреть как это работает, можно здесь: &lt;a href="http://bicards.pythondevside.com/"&gt;http://bicards.pythondevside.com/&lt;/a&gt;&lt;br /&gt;Кросс-пост в &lt;a href="http://habrahabr.ru/blog/django/39064.html"&gt;Хабрахабр&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2454414780341458679-3861367645382780038?l=konkursof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://konkursof.blogspot.com/feeds/3861367645382780038/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2454414780341458679&amp;postID=3861367645382780038' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/3861367645382780038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/3861367645382780038'/><link rel='alternate' type='text/html' href='http://konkursof.blogspot.com/2008/04/blog-post_03.html' title='Фоновая загрузка файлов на сервер'/><author><name>:)</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2454414780341458679.post-1423213851553482124</id><published>2008-04-02T10:22:00.002+03:00</published><updated>2008-04-02T10:28:43.483+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='seth'/><category scheme='http://www.blogger.com/atom/ns#' term='godin'/><title type='text'>Настойчивость</title><content type='html'>Быть настойчивым не значит использовать одну и ту же тактику для достижения цели снова и снова. Это утомляет.&lt;br /&gt;Настойчивость - это двигаться к одной и той же цели.&lt;br /&gt;&lt;br /&gt;Оригинал: &lt;a href="http://sethgodin.typepad.com/seths_blog/2008/03/persistence.html"&gt;Persistence&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2454414780341458679-1423213851553482124?l=konkursof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://konkursof.blogspot.com/feeds/1423213851553482124/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2454414780341458679&amp;postID=1423213851553482124' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/1423213851553482124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/1423213851553482124'/><link rel='alternate' type='text/html' href='http://konkursof.blogspot.com/2008/04/blog-post_7160.html' title='Настойчивость'/><author><name>:)</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2454414780341458679.post-79738892206381001</id><published>2008-04-02T10:03:00.002+03:00</published><updated>2008-04-02T10:10:20.230+03:00</updated><title type='text'>Где искать отличные, захватывающие фото</title><content type='html'>Если вам нужны фотографии для презентации, сайта или брошюры - попробуйте поискать на Фликере (Flickr).&lt;br /&gt;Откройте &lt;a href="http://www.flickr.com/search/advanced/"&gt;расширенный поиск&lt;/a&gt;, установите флажок "Искать только фотографии с &lt;strong&gt;Creative Commons&lt;/strong&gt;-лицензией" и ищите на здоровье. Этот тип лицензий позволяет свободно использовать фотографии в ваших работах. Такой себе подарок фотографов вам.&lt;br /&gt;&lt;br /&gt;Уперто с: &lt;a href="http://sethgodin.typepad.com/seths_blog/2008/03/where-to-find-g.html"&gt;http://sethgodin.typepad.com/seths_blog/2008/03/where-to-find-g.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2454414780341458679-79738892206381001?l=konkursof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://konkursof.blogspot.com/feeds/79738892206381001/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2454414780341458679&amp;postID=79738892206381001' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/79738892206381001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/79738892206381001'/><link rel='alternate' type='text/html' href='http://konkursof.blogspot.com/2008/04/blog-post_02.html' title='Где искать отличные, захватывающие фото'/><author><name>:)</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2454414780341458679.post-6568289486620165764</id><published>2008-04-01T14:18:00.003+03:00</published><updated>2008-04-01T14:27:40.315+03:00</updated><title type='text'>Внешний вид TinyMCE</title><content type='html'>В проектах в качестве WYSIWYG редактора я пользуюсь &lt;a href="http://tinymce.moxiecode.com/"&gt;TiniMCE&lt;/a&gt;. Аргументация ? Просто нравиться он мне и всё тут :)&lt;br /&gt;&lt;br /&gt;В полной выкладке он получаеться очень навороченным и занимает много места на странице. А для небольших форм, где всего-то нужно черкнуть пару строчек текста, достаточно нескольких основных функций - атрибуты текста, создание списков и вставка гиперссылок.&lt;br /&gt;&lt;br /&gt;Вот конфигурация TinyMCE, которая прижилась у меня:&lt;br /&gt;&lt;blockquote&gt;tinyMCE.init({&lt;br /&gt;mode : "textareas",&lt;br /&gt;theme : "advanced",&lt;br /&gt;theme_advanced_buttons1 : "bold,italic,underline,separator,justifyleft,justifycenter,justifyright, justifyfull,bullist,numlist,undo,redo,link,unlink",&lt;br /&gt;theme_advanced_buttons2 : "",&lt;br /&gt;theme_advanced_buttons3 : "",&lt;br /&gt;theme_advanced_toolbar_location : "top",&lt;br /&gt;theme_advanced_toolbar_align : "left",&lt;br /&gt;extended_valid_elements : "a[namehreftargettitleonclick],img[classsrcborder=0alttitlehspacevspacewidthheightalignonmouseoveronmouseoutname],hr[classwidthsizenoshade],font[facesizecolorstyle],span[classalignstyle]"&lt;br /&gt;});&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2454414780341458679-6568289486620165764?l=konkursof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://konkursof.blogspot.com/feeds/6568289486620165764/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2454414780341458679&amp;postID=6568289486620165764' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/6568289486620165764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/6568289486620165764'/><link rel='alternate' type='text/html' href='http://konkursof.blogspot.com/2008/04/tinymce.html' title='Внешний вид TinyMCE'/><author><name>:)</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2454414780341458679.post-1453437210807964771</id><published>2008-04-01T14:14:00.003+03:00</published><updated>2008-04-02T10:01:37.971+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><title type='text'>Перевод DjangoBook</title><content type='html'>&lt;a href="http://moikrug.ru/users/P034675917/"&gt;Руслан Попов&lt;/a&gt; сделал практически полный перевод DjangoBook на русский язык.&lt;br /&gt;Перевод постоянно дополняеться.&lt;br /&gt;Ссылка: &lt;a href="http://cargo.caml.ru/djangobook"&gt;http://cargo.caml.ru/djangobook&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2454414780341458679-1453437210807964771?l=konkursof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://konkursof.blogspot.com/feeds/1453437210807964771/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2454414780341458679&amp;postID=1453437210807964771' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/1453437210807964771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/1453437210807964771'/><link rel='alternate' type='text/html' href='http://konkursof.blogspot.com/2008/04/djangobook.html' title='Перевод DjangoBook'/><author><name>:)</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2454414780341458679.post-5299234672454292935</id><published>2008-04-01T11:18:00.005+03:00</published><updated>2008-04-20T13:18:45.844+03:00</updated><title type='text'>Поисковый системы + сайт</title><content type='html'>Решил сделать заметку для себя, что-бы не гуглить постоянно.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;Добавить URL - Яндех&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://webmaster.yandex.ru/"&gt;http://webmaster.yandex.ru/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Включить свой URL в Google&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://www.google.com/addurl/"&gt;http://www.google.com/addurl/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Поисковик Yahoo&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://search.yahoo.com/info/submit.html"&gt;http://search.yahoo.com/info/submit.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Статистика запросов - Яндех &lt;/strong&gt;&lt;br /&gt;&lt;a href="http://wordstat.yandex.ru/"&gt;http://wordstat.yandex.ru/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2454414780341458679-5299234672454292935?l=konkursof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://konkursof.blogspot.com/feeds/5299234672454292935/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2454414780341458679&amp;postID=5299234672454292935' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/5299234672454292935'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/5299234672454292935'/><link rel='alternate' type='text/html' href='http://konkursof.blogspot.com/2008/04/blog-post.html' title='Поисковый системы + сайт'/><author><name>:)</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2454414780341458679.post-5756718181511929702</id><published>2008-04-01T10:16:00.003+03:00</published><updated>2008-04-01T10:21:21.473+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='дизайн'/><title type='text'>10 принципов хорошего дизайна - Дитер Рамс</title><content type='html'>Дитер Рамс - промдизайнер компании Braun в 50-х - 60-х годах. Его работы вдохновляют дизайнеров Apple по сей день.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Стремление к простоте и честности дизайна всегда декларировалось Рамсом и сформулировано в его 10-ти принципах хорошего дизайна:&lt;br /&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Хороший дизайн инновационен&lt;/li&gt;&lt;li&gt;Хороший дизайн делает продукт удобным&lt;/li&gt;&lt;li&gt;Хороший дизайн эстетичен&lt;/li&gt;&lt;li&gt;Хороший дизайн помогает понять продукт&lt;/li&gt;&lt;li&gt;Хороший дизайн ненавязчив&lt;/li&gt;&lt;li&gt;Хороший дизайн честен&lt;/li&gt;&lt;li&gt;Хороший дизайн надежен&lt;/li&gt;&lt;li&gt;Хороший дизайн проработан до последней детали&lt;/li&gt;&lt;li&gt;Хороший дизайн не конфликтует со средой&lt;/li&gt;&lt;li&gt;Хороший дизайн это как можно меньше дизайна&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Подробнее о &lt;a href="http://www.designmuseum.org/design/dieter-rams" target="_blank"&gt;Дитере Рамсе&lt;/a&gt; и &lt;a href="http://www.io.tudelft.nl/public/vdm/fda/rams/index.htm" target="_blank"&gt;его работах&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2454414780341458679-5756718181511929702?l=konkursof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://konkursof.blogspot.com/feeds/5756718181511929702/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2454414780341458679&amp;postID=5756718181511929702' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/5756718181511929702'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/5756718181511929702'/><link rel='alternate' type='text/html' href='http://konkursof.blogspot.com/2008/04/10.html' title='10 принципов хорошего дизайна - Дитер Рамс'/><author><name>:)</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2454414780341458679.post-8267695523251406914</id><published>2008-03-10T14:55:00.001+02:00</published><updated>2008-06-02T14:57:21.114+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tagging'/><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Облако тэгов - Django tagging для Django 0.96 #2</title><content type='html'>Продолжение &lt;a href="http://konkursof.blogspot.com/2008/03/django-tagging-django-096.html"&gt;возни с тэгами&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;Django-tagging 0.2.1 я не похачил, а наоборот - взял всё самое лучшее из него и перенёс в версию 0.1. Таким образом получилось совместимое с Django 0.96 приложение с готовыми инструментами для создания облака тэгов.&lt;br /&gt;&lt;br /&gt;Скачать можно &lt;a href="http://labs.pythondevside.com/files/tagging_01_with_cloud.zip"&gt;с моего сайта (34Kb)&lt;/a&gt;. Просто распакуйте архив в папку проекта и добавьте это приложение в INSTALLED_APPS.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;#settings.py&lt;br /&gt;...&lt;br /&gt;INSTALLED_APPS = (&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'myproject.tagging',&lt;br /&gt;)&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Очень просто добавить тэги к любой модели вашего проекта. Для этого нужно импортировать из django-tagging поле TagField&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;#models.py&lt;br /&gt;...&lt;br /&gt;from tagging.fields import TagField&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;class Item(models.Model):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tags = TagField()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;За что мне особенно понравилось это приложение, так это за простоту и мощь использования тэгов в шаблонах страниц. Например, следующий код я использую на главной странице для вывода облака тэгов:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;#index.html&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;{% tag_cloud_for_model social.Item as item_tags %}&lt;br /&gt;&lt;br /&gt;{% for tag in item_tags %}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;a href="" class="tag" style="font-size:1{{tag.font_size}}pt"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{{tag}}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/a&amp;gt;&lt;br /&gt;{% endfor %}&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Это пример вывода на страницу всех тэгов объекта:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;#item.html&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;{% tags_for_object recipe as tag_list %}&lt;br /&gt;{% for tag in tag_list %}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;a class="tag" href=""&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{{tag}}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/a&amp;gt;&lt;br /&gt;{% endfor %}&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2454414780341458679-8267695523251406914?l=konkursof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://konkursof.blogspot.com/feeds/8267695523251406914/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2454414780341458679&amp;postID=8267695523251406914' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/8267695523251406914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/8267695523251406914'/><link rel='alternate' type='text/html' href='http://konkursof.blogspot.com/2008/03/django-tagging-django-096-2.html' title='Облако тэгов - Django tagging для Django 0.96 #2'/><author><name>:)</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2454414780341458679.post-8650729340518815294</id><published>2008-03-01T14:52:00.000+02:00</published><updated>2008-06-02T14:53:18.783+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tags'/><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='django-tagging'/><title type='text'>Django tagging для Django 0.96</title><content type='html'>"django-tagging - Джанго приложение, позволяющее добавлять к объектам любой модели тэги и делающее процесс работы с тэгами проще".&lt;br /&gt;http://code.google.com/p/django-tagging/&lt;br /&gt;&lt;br /&gt;На &lt;a href="http://code.google.com/p/django-tagging/downloads/list"&gt;странице скачивания&lt;/a&gt; в можно скачать самую новую на текущий момент версию - django-tagging 0.2.1&lt;br /&gt;&lt;br /&gt;Для меня проблемма в том, что эта версия не работает с Django 0.96 который установлен на хостинге.&lt;br /&gt;&lt;br /&gt;Путем несложных умозаключений пришёл к выводу, что старую версию на сервере никто не удалял. Для того что-бы в списке показались все файлы, выбрал опцию поиска "All downloads". Предположение оказалось верным - вот она, &lt;a href="http://django-tagging.googlecode.com/files/tagging-0.1.zip"&gt;django-tagging 0.1&lt;/a&gt;.&lt;br /&gt;Прекрасно заработала в моём проекте. Из минусов версии 0.1 хочу отметить отсутствие облака тэгов.&lt;br /&gt;&lt;br /&gt;p.s.: Скорее всего прийдеться таки похачить django-tagging 0.2.1 на предмет совместимости с Django 0.96. Очень уж нужно облако тэгов. О результатах обещаю сообщить :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2454414780341458679-8650729340518815294?l=konkursof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://konkursof.blogspot.com/feeds/8650729340518815294/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2454414780341458679&amp;postID=8650729340518815294' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/8650729340518815294'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/8650729340518815294'/><link rel='alternate' type='text/html' href='http://konkursof.blogspot.com/2008/03/django-tagging-django-096.html' title='Django tagging для Django 0.96'/><author><name>:)</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2454414780341458679.post-451253899054056542</id><published>2008-02-29T18:29:00.004+02:00</published><updated>2008-02-29T18:36:17.288+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vista'/><title type='text'>Windows Vista не определяет флешку</title><content type='html'>Это широкораспостраненая проблемма в Windows Vista. После вставки флешки в USB порт, Vista долго ищет драйвера и никогда их не находит.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Решение: &lt;/strong&gt;&lt;br /&gt;Вытащить флешку, удалить из директории &lt;strong&gt;\windows\inf\&lt;/strong&gt; файлы:&lt;br /&gt;DRVINDEX.DAT&lt;br /&gt;INFPUB.DAT&lt;br /&gt;INFSTOR.DAT&lt;br /&gt;INFSTRNG.DAT&lt;br /&gt;INFCACHE.*&lt;br /&gt;SETUPAPI.*&lt;br /&gt;&lt;br /&gt;Вставить флешку. Если автоматически драйвера не установятся - из диспетчера устройств установить драйвер вручную с опцией автоматического поиска (для поиска указать директорию windows\system32). Флешка должна успешно установиться.&lt;br /&gt;&lt;br /&gt;Решение подсказал &lt;strong&gt;IgorZaz&lt;/strong&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2454414780341458679-451253899054056542?l=konkursof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://konkursof.blogspot.com/feeds/451253899054056542/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2454414780341458679&amp;postID=451253899054056542' title='Комментарии: 5'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/451253899054056542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/451253899054056542'/><link rel='alternate' type='text/html' href='http://konkursof.blogspot.com/2008/02/windows-vista.html' title='Windows Vista не определяет флешку'/><author><name>:)</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2454414780341458679.post-8176182670236706214</id><published>2008-02-27T10:58:00.010+02:00</published><updated>2008-02-27T11:21:39.727+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django gmail libgmail'/><title type='text'>Связка GMail + Django</title><content type='html'>Про Google Mail не слышал только ленивый. ИМХО, это самая прогрессивная веб-почта. Как адепту Django мне очень приятно думать, что любимый фреймворк тоже самый прогрессивный :)&lt;br /&gt;&lt;br /&gt;Но речь не о том, кто круче. Речь о замечательной библиотеке &lt;a href="http://libgmail.sourceforge.net/"&gt;libGmail &lt;/a&gt;для Python. Используя эту библиотеку очень просто получать и отправлять письма с GMail.&lt;br /&gt;Например, следующий код отправляет уведомление о необходимости активации аккаунта новому пользователю сервиса:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;    import libgmail&lt;br /&gt;    ...&lt;br /&gt;&lt;br /&gt;    to_email = request.user.email&lt;br /&gt;    activation_link = &lt;a href="http://dontbeevil.com/activate/%s/"&gt;http://dontbeevil.com/activate/%s/&lt;/a&gt; % request.COOKIES["sessionid"]&lt;br /&gt;    ga = libgmail.GmailAccount(&lt;a href="mailto:dontbeevil@gmail.com"&gt;dontbeevil@gmail.com&lt;/a&gt;, "ourpassword")&lt;br /&gt;    ga.login()&lt;br /&gt;    subject = "Администрация сервиса"&lt;br /&gt;    msg = "Дорогой пользователь! Для активации аккаунта воспользуйтесь этой ссылкой: %s" % activation_link&lt;br /&gt;    gmsg = libgmail.GmailComposedMessage(to_email, subject, msg)&lt;br /&gt;    ga.sendMessage(gmsg)&lt;br /&gt;    ...&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Еще с помощью libGMail можно использовать свой аккаунт GMail как POP или SMTP сервер.&lt;br /&gt;Библиотека распостраняеться по лицензии GPL 2.0.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2454414780341458679-8176182670236706214?l=konkursof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://konkursof.blogspot.com/feeds/8176182670236706214/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2454414780341458679&amp;postID=8176182670236706214' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/8176182670236706214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/8176182670236706214'/><link rel='alternate' type='text/html' href='http://konkursof.blogspot.com/2008/02/gmail-django.html' title='Связка GMail + Django'/><author><name>:)</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2454414780341458679.post-4780326795604528213</id><published>2008-02-26T14:31:00.004+02:00</published><updated>2008-02-26T14:50:33.914+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='флешмоб'/><title type='text'>5 инструментов без которых я не могу работать продуктивно</title><content type='html'>Подключаюсь к флешмобу разработчиков, который затеял &lt;a href="http://blog.termit.name/5-instrumentov-bez-kotoryx-ya-ne-mogu-rabotat-produktivno/"&gt;TermiT&lt;/a&gt;.&lt;br /&gt;Вот моё ТОП 5 инструментов:&lt;br /&gt;&lt;br /&gt;1. &lt;a href="http://www.mozilla-europe.org/ru/"&gt;Firefox &lt;/a&gt;+ &lt;a href="http://www.getfirebug.com/"&gt;Firebug&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;2. &lt;a href="http://www.eclipse.org/"&gt;Eclipse&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;3. &lt;a href="http://www.ghisler.com/"&gt;Total Commander&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;4. &lt;a href="http://ru.wikipedia.org/wiki/Рюкзак"&gt;Рюкзак&lt;/a&gt; с ноутбуком.&lt;br /&gt;&lt;br /&gt;5. &lt;a href="http://www.google.com/"&gt;Интернет&lt;/a&gt;, куда уж без коллективного разума.&lt;br /&gt;&lt;br /&gt;Передаю эстафету &lt;a href="http://tapo4ok.livejournal.com/"&gt;tapo4ku&lt;/a&gt;, &lt;a href="http://andrewscater.livejournal.com/"&gt;andrewscater&lt;/a&gt;, &lt;a href="http://i-love-python.livejournal.com/"&gt;i-love-python&lt;/a&gt;, &lt;a href="http://glader.livejournal.com/"&gt;glader&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2454414780341458679-4780326795604528213?l=konkursof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://konkursof.blogspot.com/feeds/4780326795604528213/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2454414780341458679&amp;postID=4780326795604528213' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/4780326795604528213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/4780326795604528213'/><link rel='alternate' type='text/html' href='http://konkursof.blogspot.com/2008/02/5.html' title='5 инструментов без которых я не могу работать продуктивно'/><author><name>:)</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2454414780341458679.post-803771752821326855</id><published>2008-02-26T11:28:00.002+02:00</published><updated>2008-02-26T11:32:16.958+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><title type='text'>Список полезных ресурсов по Django</title><content type='html'>Сегодня дошли руки оформить список ссылок ресурсов по фреймворку &lt;a href="http://www.djangoproject.com/"&gt;Django&lt;/a&gt;. В процессе составления использована информация с форума &lt;a href="http://python.com.ua/forum/viewtopic.php?id=1535"&gt;Python.com.ua&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2454414780341458679-803771752821326855?l=konkursof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://konkursof.blogspot.com/feeds/803771752821326855/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2454414780341458679&amp;postID=803771752821326855' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/803771752821326855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/803771752821326855'/><link rel='alternate' type='text/html' href='http://konkursof.blogspot.com/2008/02/django.html' title='Список полезных ресурсов по Django'/><author><name>:)</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2454414780341458679.post-3205454130332644481</id><published>2008-02-25T17:52:00.006+02:00</published><updated>2008-02-25T18:12:17.607+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='интернет-магазины vCard микроформаты'/><title type='text'>Сервис автозаполнения форм</title><content type='html'>Вчера, по ссылке из Хабрахабр я зашёл в интернет-магазин купить диск с подшивкой журнала "&lt;a href="http://habrahabr.ru/blog/i_am_clever/36483.html"&gt;Наука и Жизнь&lt;/a&gt;" за 1990-2005 гг. И снова прошёл унизительную процедуру допроса в виде заполнения здоровенной формы оформления заказа: ФИО, е-мейл, телефон, адрес - одно и тоже. Каждый раз. Это стандартная процедура во всех интернет-магазинах. Это процедура, в которой программы каждый раз показывают свою тупость.&lt;br /&gt;&lt;br /&gt;Разумеется, есть автозаполнение в браузере. Но создатели магазинов умудряются каждый раз придумывать новые идентификаторы для полей  ввода.&lt;br /&gt;&lt;br /&gt;Микроформат. Было бы здорово указать ссылку на страницу с vCard с которой магазин считает мою персональную информацию. Я раздаю бумажные визитки всем знакомым и случайным встречным. Это не конфиденциальная информация, скорее даже - наоборот.&lt;br /&gt;&lt;br /&gt;Почему программе интернет-магазина не спросить меня "визитку"?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2454414780341458679-3205454130332644481?l=konkursof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://konkursof.blogspot.com/feeds/3205454130332644481/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2454414780341458679&amp;postID=3205454130332644481' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/3205454130332644481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/3205454130332644481'/><link rel='alternate' type='text/html' href='http://konkursof.blogspot.com/2008/02/blog-post_25.html' title='Сервис автозаполнения форм'/><author><name>:)</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2454414780341458679.post-164121464459643366</id><published>2008-02-23T23:51:00.003+02:00</published><updated>2008-02-24T00:00:04.763+02:00</updated><title type='text'>Python 2.5.2</title><content type='html'>Доступна новая версия Питона.&lt;br /&gt;&lt;br /&gt;Python 2.5.2 являеться вторым багфикс-релизом Python 2.5. По сравнении с версией Python 2.5.1 исправлено более 100 ошибок. Версия 2.5.2 полностью совместима с 2.5.1 и 2.5. По словам разработчиков они работают только над вылавливанием багов и повышением производительности интерпретатора. &lt;a href="http://www.python.org/download/releases/2.5.2/"&gt;Оригинал на английском&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2454414780341458679-164121464459643366?l=konkursof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://konkursof.blogspot.com/feeds/164121464459643366/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2454414780341458679&amp;postID=164121464459643366' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/164121464459643366'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/164121464459643366'/><link rel='alternate' type='text/html' href='http://konkursof.blogspot.com/2008/02/python-252.html' title='Python 2.5.2'/><author><name>:)</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2454414780341458679.post-850860635270126068</id><published>2008-02-23T15:55:00.006+02:00</published><updated>2008-02-23T23:46:14.085+02:00</updated><title type='text'>Книга «Не мешайте мне работать!»</title><content type='html'>Вчера скачал книгу Стаса Давыдова &lt;a href="http://motivateme.ru/book/"&gt;«Не мешайте мне работать!»&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Жесть! Вспомнил своё устройство на работу и сам рабочий процесс в "Волынской Софтовой Компании". Солидная фирма, крутые перспективы каръерного роста, "круче нас только яйца и горы" и т.д.&lt;br /&gt;&lt;br /&gt;Демотивация - она кругом. Только и разговоров - "ты должен", "сделаешь это и будешь на хорошем счету" и т.д. Разве так сложно предложить за дополнительную работу немного денег? Я ведь кот. И хожу на работу исключительно ради денег. Хочешь преданности корпоративным идеалам - заведи собаку!&lt;br /&gt;&lt;br /&gt;&lt;img src="http://motivateme.ru/comics/3-preview.png" /&gt;&lt;br /&gt;&lt;br /&gt;Рекомендую к прочтению всем утомленным работникам и работницам.&lt;br /&gt;&lt;a href="http://motivateme.ru/book/"&gt;http://motivateme.ru/book/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2454414780341458679-850860635270126068?l=konkursof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://konkursof.blogspot.com/feeds/850860635270126068/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2454414780341458679&amp;postID=850860635270126068' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/850860635270126068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/850860635270126068'/><link rel='alternate' type='text/html' href='http://konkursof.blogspot.com/2008/02/blog-post_23.html' title='Книга «Не мешайте мне работать!»'/><author><name>:)</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2454414780341458679.post-878136149894269501</id><published>2008-02-20T22:26:00.008+02:00</published><updated>2008-02-20T23:23:12.188+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web 3.0'/><title type='text'>Персональные социальные сети</title><content type='html'>Ехал домой и вспомнил жаркий разговор недельной давности. Тогда, в Карпатах, я с группой стартаперов из &lt;a href="http://gwt.org.ua/"&gt;GWT Community&lt;/a&gt; обсуждал пути развития Веба. Социальные сети сделали нас более дружественными и открытыми. Инициатива "&lt;a href="http://code.google.com/intl/ru/apis/opensocial/"&gt;OpenSocial&lt;/a&gt;" от Google сделает в недалёком будущем пользователей более свободными от владельцев социальных сетей.&lt;br /&gt;&lt;br /&gt;Мы будем подобны кочевникам, перемещаясь из одного сервиса в другой. Ничего не теряя, только расширяя свой "социальный граф". Для определения этого состояния отлично подходит поговорка "&lt;em&gt;Всё своё ношу с собой&lt;/em&gt;".&lt;br /&gt;&lt;br /&gt;В OpenSocial "&lt;em&gt;Сервер опционален&lt;/em&gt;", "&lt;em&gt;...при желании приложение можно разместить на собственных серверах...&lt;/em&gt;", новые корневые доменные имена. Прочувствуйте &lt;strong&gt;ЭТО&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;В начале были персональные авторские сайты. Контент создавался владельцем-автором. Веб 1.0. Следующее поколение ударилось в другую крайность - право на создание контента отдали народу [&lt;a href="http://www.webplanet.ru/news/reading-room/2006/3/20/we_3_0.html"&gt;ссылка для любопытных&lt;/a&gt;]. Важной составляющей контента стали разнообразные связи между информацией, в том числе - связи социальные.&lt;br /&gt;&lt;br /&gt;Но пользователь всё еще зависим от произвола владельцев сервиса. Не так давно я наткнулся на описание сервиса управления задачами &lt;a href="http://8apps.com/"&gt;http://8apps.com/&lt;/a&gt;. Мне он понравился и каково же было моё разочарование, когда в окне появился текст "8apps is now closed" ("сервис 8 приложений закрыт"). А как быть  пользователям, создавшим в этом сервисе свой контент? Ты потратил время, изучил еще одни правила работы с человеко-машинной системой, создал и упорядочил свои задачи и контакты, организовал работу... и - Бамс!!! Создатель стартапа наигрался и всё - приехали!&lt;br /&gt;&lt;br /&gt;Еще одной проблемой является безграничная доступность наших данных владельцам сервисов. Имена, конспиративные квартиры, явки и т.д. Социальный Веб заставляет нас верить в честность и добрые помыслы администрации социальных сетей.&lt;br /&gt;&lt;br /&gt;Как вариант развития Веба мне нравиться идея &lt;strong&gt;Персональных социальных сетей.&lt;/strong&gt; Это миллиарды индивидуальных доменов с установленными персональными социальными CMS. Весь контент находиться в ведении автора контента.&lt;br /&gt;&lt;br /&gt;Представьте, что вы купили хостинг и зарегистрировали свой домен - например, &lt;a href="http://petr.grushevinchuk/"&gt;http://petr.grushevinchuk&lt;/a&gt; (.grushevinchuk - это корневой (!) домен). Как мы сейчас устанавливаем WordPress для создания блога, так и для создания персональной социальной сети будет достаточно установить что-то вроде SocialPress. И всё!&lt;br /&gt;&lt;br /&gt;Ваша личная социальная сеть готова. Забираете свой "соц. багаж" с FaceBook (или Orkut, кому как больше нравиться) и продолжаете развивать свою социальную жизнь - френдите, комментируете, делитесь фотками и событиями и т.д. Но вся эта информация храниться на вашем личном социальном сервисе. Можно создавать записи только "для друзей" или полностью "личные" и быть уверенными, что после покупки сервиса ЧЧ ваш аккаунт не попадет в руки очень_интересующихся.&lt;br /&gt;&lt;br /&gt;Можно вообще обойтись без централизованного сервера и распылять контент по Сети. Подтверждение авторства может осуществляться через контроль ДНК с мобильного терминала. Но это уже другая история...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2454414780341458679-878136149894269501?l=konkursof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://konkursof.blogspot.com/feeds/878136149894269501/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2454414780341458679&amp;postID=878136149894269501' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/878136149894269501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/878136149894269501'/><link rel='alternate' type='text/html' href='http://konkursof.blogspot.com/2008/02/blog-post_20.html' title='Персональные социальные сети'/><author><name>:)</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2454414780341458679.post-2709381871284860141</id><published>2008-02-19T16:53:00.010+02:00</published><updated>2008-02-23T16:08:56.938+02:00</updated><title type='text'>В продолжение темы автономных Джанго-приложений</title><content type='html'>Продолжение поста &lt;a href="http://konkursof.blogspot.com/2008/02/1.html"&gt;1 минута для старта&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Моё маленькое приложение на базе Instant Django работало прекрастно, пока им пользовался один человек. Потом "програмка" понравилась всем сотрудникам отдела и они дружно начали юзать её по сети. И програмка начала дружно виснуть :)&lt;br /&gt;&lt;br /&gt;Поспрашивав &lt;a href="http://softwaremaniacs.org/forum/viewtopic.php?id=1656"&gt;здесь &lt;/a&gt;и &lt;a href="http://groups.google.com/group/django-users/browse_thread/thread/42a3f373639e3d5c"&gt;здесь &lt;/a&gt;получил ценный ответ:&lt;br /&gt;"Девелопмент веб-сервер, входящий в состав Джанго не предназначен для обработки запросов от нескольких пользователей."&lt;br /&gt;&lt;br /&gt;То-есть запустив &lt;strong&gt;manage.py runserver &lt;/strong&gt;только один пользователь сможет комфортно работать с приложением. Для работы нескольких пользователей нужно использовать другой веб-сервер. Например - &lt;a href="http://www.apache.org/"&gt;Апач&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Меня не устраивала перспектива топать к друзьям в офис и обьяснять их руководству, зачем им нужен Апач. Тем более что бос был не в курсе, что его подопечные юзают "левое" приложение.&lt;br /&gt;&lt;br /&gt;Решением стало использование веб-сервера &lt;a href="http://cherrypy.org/"&gt;CherryPy &lt;/a&gt;из фреймворка TurboGears. Как использовать CherryPy с Django подробно описано у &lt;a href="http://www.gordontillman.info/Development/DjangoCherryPy"&gt;Гордона Тиллмана&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Вкратце:&lt;br /&gt;1. скачать пакет с CherryPy и поместить его в папку ../Python/lib/site-packages/&lt;br /&gt;2. в папке нашего Джанго-приложения создать 2 файла конфигурации: pieserver.conf и pieserver.py&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;pieserver.conf&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;[global]&lt;br /&gt;server.socket_host = "127.0.0.1" #IP вашей машины&lt;br /&gt;server.socket_port = 8080&lt;br /&gt;server.thread_pool = 10&lt;br /&gt;log.screen=True&lt;br /&gt;environment = 'production'&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;pieserver.py&lt;/strong&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;import sys&lt;br /&gt;import os&lt;br /&gt;import cherrypy&lt;br /&gt;&lt;br /&gt;from django.core.handlers.wsgi import WSGIHandler&lt;br /&gt;from django.core.servers.basehttp import AdminMediaHandler&lt;br /&gt;&lt;br /&gt;os.environ["DJANGO_SETTINGS_MODULE"] = "YOURSITE.settings"&lt;br /&gt;&lt;br /&gt;class DjangoApp(object):&lt;br /&gt;    django_conf = {&lt;br /&gt;        '/YOURAPP/media' : {&lt;br /&gt;            'tools.staticdir.on' : True,&lt;br /&gt;            'tools.staticdir.root' : os.path.abspath(os.path.join(os.path.dirname(__file__),'YOURPROJECT','YOURAPP')),&lt;br /&gt;            'tools.staticdir.dir' : 'media',&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;if __name__ == '__main__':&lt;br /&gt;    sys.path.insert(0,"..")&lt;br /&gt;    conf = os.path.join(os.path.dirname(__file__), 'pieserver.conf')&lt;br /&gt;    cherrypy.config.update(conf)&lt;br /&gt;    cherrypy.tree.graft(AdminMediaHandler(WSGIHandler()), '/')&lt;br /&gt;    cherrypy.server.quickstart()&lt;br /&gt;    cherrypy.engine.start()&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Подкоректируйте параметры &lt;strong&gt;staticdir&lt;/strong&gt; по своему вкусу.&lt;br /&gt;&lt;br /&gt;Настройка закончена. Осталось запустить &lt;strong&gt;pieserver.py&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2454414780341458679-2709381871284860141?l=konkursof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://konkursof.blogspot.com/feeds/2709381871284860141/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2454414780341458679&amp;postID=2709381871284860141' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/2709381871284860141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/2709381871284860141'/><link rel='alternate' type='text/html' href='http://konkursof.blogspot.com/2008/02/blog-post.html' title='В продолжение темы автономных Джанго-приложений'/><author><name>:)</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2454414780341458679.post-7419658083629613514</id><published>2008-02-17T23:33:00.016+02:00</published><updated>2008-02-22T20:40:49.500+02:00</updated><title type='text'>Переводы статей Пола Грэма (Paul Graham)</title><content type='html'>&lt;p&gt;По адресу &lt;a href="http://tony.stereoclick.com/"&gt;http://tony.stereoclick.com/&lt;/a&gt; силами Антона Рубана была собрана лучшая по-моему мнению подборка ссылок на переводы статей Пола Грема.&lt;br /&gt;Теперь эта страница больше не существует. Увы.&lt;br /&gt;&lt;br /&gt;Вот её копия из кеша &lt;a href="http://web.archive.org/"&gt;WayBackMachine&lt;/a&gt;:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.computerra.ru/think/315270/"&gt;Microsoft мертва&lt;/a&gt; Оригинал: &lt;a href="http://paulgraham.com/microsoft.html"&gt;Microsoft is Dead&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://shadtchnev.livejournal.com/140770.html"&gt;Для чего не не создавать стартап?&lt;/a&gt; Оригинал: &lt;a href="http://paulgraham.com/notnot.html"&gt;Why to Not Not Start a Startup&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.perevedem.ru/article/investors.htm"&gt;Как провести презентацию для инвесторов&lt;/a&gt; Оригинал: &lt;a href="http://paulgraham.com/articles.html"&gt;How to Present to Investors&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.perevedem.ru/article/america.htm"&gt;Почему стартапы концентрируются в Америке&lt;/a&gt; Оригинал: &lt;a href="http://paulgraham.com/america.html"&gt;Why Startups Condense in America&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://shadtchnev.livejournal.com/67958.html"&gt;Как стать кремниевой долиной&lt;/a&gt;Оригинал: &lt;a href="http://www.paulgraham.com/siliconvalley.html"&gt;How to Be Silicon Valley&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Перевод поста в блоге &lt;a href="http://blog.perevedem.ru/?p=31"&gt;"Копирование идеи стартапа"&lt;/a&gt; Оригинал: &lt;a href="http://paulgraham.infogami.com/blog/copy"&gt;Being Copied&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.perevedem.ru/article/hardest_lessons.htm"&gt;Самые трудные уроки для стартапов&lt;/a&gt; Оригинал: &lt;a href="http://www.paulgraham.com/startuplessons.html"&gt;The Hardest Lessons for Startups to Learn&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.gotsulyak.com/2006/02/post15"&gt;Как делать то, что любишь но так, чтобы за это ничего не было.&lt;/a&gt; Оригинал: &lt;a href="http://paulgraham.com/love.html"&gt;How to do what you love&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://sergeybiryukov.ru/2006/02/09/horoshee-i-plohoe-otlyinivanie/"&gt;Хорошее и плохое отлынивание&lt;/a&gt; Оригинал: &lt;a href="http://paulgraham.com/procrastination.html"&gt;Good and bad procrastination&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://xmlhack.ru/texts/06/web20/web20.html"&gt;Веб 2.0&lt;/a&gt; Оригинал: &lt;a href="http://paulgraham.com/web20.html"&gt;Web 2.0&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://the-notebook.org/21/04/2006/idei-dlya-startapa/"&gt;Идеи для стартапа&lt;/a&gt; Оригинал: &lt;a href="http://www.paulgraham.com/ideas.html"&gt;Ideas for Startups&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.computerra.ru/think/222115/"&gt;Что бизнес мог бы взять от свободного ПО&lt;/a&gt; Оригинал: &lt;a href="http://paulgraham.com/opensource.html"&gt;What Business Can Learn from Open Source&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.perevedem.ru/article/hiring_is_obsolete_full.htm"&gt;Наем устарел&lt;/a&gt; Оригинал: &lt;a href="http://paulgraham.com/hiring.html"&gt;Hiring is Obsolete&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.perevedem.ru/article/why-smart-people-have-bad-ideas.htm"&gt;Почему умным людям приходят в голову глупые идеи&lt;/a&gt; Оригинал: &lt;a href="http://paulgraham.com/bronze.html"&gt;Why Smart People Have Bad Ideas&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.livejournal.com/users/thesz/5621.html"&gt;Коротко о литераторстве&lt;/a&gt; Оригинал: &lt;a href="http://web.archive.org/web/20070814014137/http:/paulgraham.com/writing44.html"&gt;Writing, Briefly&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Как начать новое предприятие&lt;a href="http://www.maxkir.com/sd/HowToStartYourCompany.html"&gt;Как начать новое дело&lt;/a&gt; Оригинал: &lt;a href="http://paulgraham.com/start.html"&gt;How to Start a Startup&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.livejournal.com/users/nixxbox/63008.html"&gt;То, что вы хотели бы знать заранее&lt;/a&gt; Оригинал: &lt;a href="http://paulgraham.com/hs.html"&gt;What You'll Wish You'd Known&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.perevedem.ru/article/the-bubble.htm"&gt;В чем интернет-бум оказался прав&lt;/a&gt;Оригинал: &lt;a href="http://paulgraham.com/bubble.html"&gt;What the Bubble Got Right&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.mehras.net/rus/pg_essay_age_ru.html"&gt;Век Сочинения&lt;/a&gt; Оригинал: &lt;a href="http://paulgraham.com/essay.html"&gt;The Age of the Essay&lt;/a&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://m0sia.ru/graham/pythonparadox"&gt;"Парадокс питона"&lt;/a&gt; Оригинал: &lt;a class="en" href="http://paulgraham.com/pypar.html"&gt;The Python Paradox&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.computerra.ru/print/think/35350/"&gt;Первоклассные хакеры&lt;/a&gt; Оригинал: &lt;a href="http://paulgraham.com/gh.html"&gt;Great Hackers&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://the-notebook.org/26/01/2006/kak-stat-bogatyim/"&gt;Как стать богатым&lt;/a&gt; Оригинал: &lt;a href="http://paulgraham.com/wealth.html"&gt;How to Make Wealth&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.computerra.ru/hitech/35042/"&gt;Языки программирования через сто лет&lt;/a&gt; Оригинал: &lt;a href="http://paulgraham.com/hundred.html"&gt;The Hundred-Year Language&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.melikyan.com/dalshe/articles/power.html"&gt;Краткость - сила&lt;/a&gt; Оригинал: &lt;a href="http://paulgraham.com/power.html"&gt;Succinctness is Power&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.nestor.minsk.by/sr/2003/07/30710.html"&gt;Lisp: побеждая посредственность&lt;/a&gt; Оригинал: &lt;a href="http://www.paulgraham.com/avg.html"&gt;Beating the Averages&lt;/a&gt; &lt;p&gt;&lt;/p&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2454414780341458679-7419658083629613514?l=konkursof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://konkursof.blogspot.com/feeds/7419658083629613514/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2454414780341458679&amp;postID=7419658083629613514' title='Комментарии: 5'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/7419658083629613514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/7419658083629613514'/><link rel='alternate' type='text/html' href='http://konkursof.blogspot.com/2008/02/paul-graham.html' title='Переводы статей Пола Грэма (Paul Graham)'/><author><name>:)</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2454414780341458679.post-1992890736005925398</id><published>2008-02-02T19:19:00.000+02:00</published><updated>2008-02-02T19:27:08.537+02:00</updated><title type='text'>1 минута для старта</title><content type='html'>Пишу автономное приложение на Python+Django. Нужно, что бы оно работало без установки и настройки на других компьютерах. Погуглив, нашел - &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Instant Django&lt;/span&gt;, &lt;a href="http://www.instantdjango.com"&gt;http://www.instantdjango.com&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;В комплекте&lt;/span&gt;: Python 2.5, Django trunk, PIL, SVN, Sqlite3. Всё распаковывается в одну папку и запускаеться файлом start.bat. Платформа готова для поддержки жизнеобеспечения нашего приложения :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2454414780341458679-1992890736005925398?l=konkursof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://konkursof.blogspot.com/feeds/1992890736005925398/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2454414780341458679&amp;postID=1992890736005925398' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/1992890736005925398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/1992890736005925398'/><link rel='alternate' type='text/html' href='http://konkursof.blogspot.com/2008/02/1.html' title='1 минута для старта'/><author><name>:)</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2454414780341458679.post-5277859380871046353</id><published>2008-01-23T17:46:00.000+02:00</published><updated>2008-01-23T17:58:44.986+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='YouTube'/><title type='text'>Потоковое видео - это можно!</title><content type='html'>&lt;div&gt;Дать пользователям возможность показать себя в конкурсе с помощью видеоролика - &lt;/div&gt;&lt;div&gt;это будет круто, подумал я. Осталось добавить поддержку потокового видео в сервис.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Это оказалось совсем несложно, все элементарно:&lt;/div&gt;&lt;div&gt; - Адрес видеоролика YouTube выглядит примерно так: http://www.youtube.com/watch?v=CtQjOkL6YlM (или http://ru.youtube.com/watch?v=CtQjOkL6YlM если это RuTube)&lt;/div&gt;&lt;div&gt; - Идентификатор видеофайла здесь находится как значение параметра - &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;CtQjOkL6YlM&lt;/span&gt;&lt;/div&gt;&lt;div&gt; - Адрес к превью - http://img.youtube.com/vi/&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;CtQjOkL6YlM&lt;/span&gt;/default.jpg&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Что-бы поместить плеер в страницу нужно заюзать следующую конструкцию:&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;lt;object width='425' height='355'&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&amp;lt;param name='movie' value='http://www.youtube.com/v/&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;CtQjOkL6YlM&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;&amp;amp;rel=1'&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&amp;lt;/param&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&amp;lt;param name='wmode' value='transparent'&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&amp;lt;/param&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&amp;lt;embed src='http://www.youtube.com/v/&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;CtQjOkL6YlM&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;&amp;amp;rel=1' type='application/x-shockwave-flash' wmode='transparent' width='425' height='355'&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt; &lt;/span&gt;&amp;lt;/embed&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;lt;/object&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;div&gt;Значения параметров &lt;span class="Apple-style-span" style="font-weight: bold; "&gt;width&lt;/span&gt; и &lt;span class="Apple-style-span" style="font-weight: bold; "&gt;height&lt;/span&gt; можно свободно варьировать.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Вот собственно и все дела с потоковым видео :)&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2454414780341458679-5277859380871046353?l=konkursof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://konkursof.blogspot.com/feeds/5277859380871046353/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2454414780341458679&amp;postID=5277859380871046353' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/5277859380871046353'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/5277859380871046353'/><link rel='alternate' type='text/html' href='http://konkursof.blogspot.com/2008/01/blog-post_23.html' title='Потоковое видео - это можно!'/><author><name>:)</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2454414780341458679.post-1685538592004749407</id><published>2008-01-23T17:38:00.000+02:00</published><updated>2008-01-23T17:45:40.477+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IE'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><category scheme='http://www.blogger.com/atom/ns#' term='hack'/><title type='text'>Центровка в DIV по вертикали - хак для IE</title><content type='html'>Написав в CSS "vertical-align: middle;" можно получить вертикальное выравнивание контента внутри DIV в Firefox, Opera, Safari. Но не в Internet Explorer.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;lt;div class="contest_logo"&gt;&lt;br /&gt;&amp;lt;img src="http://www.blogger.com/{{%20featured_contest.contest.get_logo%20}}" /&gt;&lt;br /&gt;&amp;lt;/div&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Высота DIVа класса "contest_logo" фиксированная. Это рамка логотип конкурса. Конкурсы выводяться списком. Вот &lt;a href="http://konkursof.net/search/"&gt;здесь&lt;/a&gt;.&lt;br /&gt;Но вот картинки-логотипы имеют разную высоту. И их нужно выровнять внутри рамки по вертикали.&lt;br /&gt;&lt;br /&gt;Решение для "нормальных" броузеров:&lt;br /&gt;&lt;blockquote&gt;.contest_logo {&lt;br /&gt;width: 252px;&lt;br /&gt;height: 213px;&lt;br /&gt;padding: 4px;&lt;br /&gt;border:1px solid #9dbaec;&lt;br /&gt;text-align: center;&lt;br /&gt;display: table-cell;&lt;br /&gt;vertical-align: middle;&lt;br /&gt;&lt;br /&gt;}&lt;/blockquote&gt;&lt;br /&gt;Но в IE это не работает. Погуглив немного, нашел элегантное решение:&lt;br /&gt;&lt;blockquote&gt;.contest_logo img {&lt;br /&gt;vertical-align: middle;&lt;br /&gt;margin-top: expression((213-height)/2 + "px");&lt;br /&gt;}&lt;/blockquote&gt;&lt;br /&gt;IE поддерживает использование в CSS оператора expression(), внутри которого&lt;br /&gt;можно поместить код на JavaScript.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2454414780341458679-1685538592004749407?l=konkursof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://konkursof.blogspot.com/feeds/1685538592004749407/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2454414780341458679&amp;postID=1685538592004749407' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/1685538592004749407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/1685538592004749407'/><link rel='alternate' type='text/html' href='http://konkursof.blogspot.com/2008/01/div-ie.html' title='Центровка в DIV по вертикали - хак для IE'/><author><name>:)</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2454414780341458679.post-5887635271156677279</id><published>2008-01-22T15:37:00.000+02:00</published><updated>2008-02-23T15:38:48.410+02:00</updated><title type='text'>Документация по Django в одном файле</title><content type='html'>Один хороший человек взял и скомпилировл всю документацию из&lt;br /&gt;&lt;a href="http://www.djangoproject.com/documentation/"&gt;http://www.djangoproject.com/documentation/&lt;/a&gt;&lt;br /&gt;в виде CHM-файла. Честь ему и слава!&lt;br /&gt;&lt;br /&gt;Скачать можно отсюда:&lt;br /&gt;&lt;a href="http://charupload.wordpress.com/2007/12/02/django-documentation-chm/"&gt;http://charupload.wordpress.com/2007/12/02/django-documentation-chm/ &lt;/a&gt;&lt;br /&gt;(1,3Мб)&lt;br /&gt;&lt;br /&gt;з.ы.: только что скачал. Файл регулярно обновляеться ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2454414780341458679-5887635271156677279?l=konkursof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://konkursof.blogspot.com/feeds/5887635271156677279/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2454414780341458679&amp;postID=5887635271156677279' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/5887635271156677279'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/5887635271156677279'/><link rel='alternate' type='text/html' href='http://konkursof.blogspot.com/2008/01/django.html' title='Документация по Django в одном файле'/><author><name>:)</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2454414780341458679.post-5299663850443018064</id><published>2008-01-15T12:56:00.000+02:00</published><updated>2008-01-15T13:13:39.806+02:00</updated><title type='text'>Всему своё время</title><content type='html'>Есть время собирать камни, и есть время выносить мусор. Или как-то так. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Когда же оно наступает, это "правильное время" что-то делать? ИМХО, тут нужно положиться на чутье, сигналы от подсознания. Когда подсознание тихо шепчет - "давай, действуй", - вот тогда и наступило время Икс.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;У нас в сервисе не было предусмотрено места для рекламы. С другой стороны, мысли размещать контекстную рекламу на страницах были. Вчера послеобеда (угу, кто же на голодный желудок работает) решил добавить на главной странице панель для 10ти свежих комментариев. Симпатично получилось. И динамично, что тоже плюс для ботов поисковых систем. &lt;a href="http://konkursof.net/"&gt;Можете посмотреть&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;И вот тут до меня дошло! На остальных страницах ведь тоже появилась эта панель. И если на главной странице её назначение - выводить комментарии, - то на остальных страницах она пустует. Немного поправив CSS я сделал е пригодной для размещения стандартных баннеров 150х200. До трех штук на странице. Уже сейчас количество страниц превышает 200 (страницы конкурсов, участников конкурсов, списков участников и т.д.).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Вечером того же дня для пустующих рекламных площадок нашелся рекламодатель. Вот так - всему своё время.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2454414780341458679-5299663850443018064?l=konkursof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://konkursof.blogspot.com/feeds/5299663850443018064/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2454414780341458679&amp;postID=5299663850443018064' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/5299663850443018064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/5299663850443018064'/><link rel='alternate' type='text/html' href='http://konkursof.blogspot.com/2008/01/blog-post_15.html' title='Всему своё время'/><author><name>:)</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2454414780341458679.post-3210371157207440678</id><published>2008-01-14T10:00:00.000+02:00</published><updated>2008-01-14T12:04:26.179+02:00</updated><title type='text'>Что же тебе нужно?</title><content type='html'>Сегодня пытался выбить из потенциального заказчика признание, что же ему нужно на_самом_деле? Победа над конкурентами, успех! Да? А мне почему-то показалось - больше функций, картинок, текста. Чем сложнее представление о проекте с самого начала, тем больше вероятность затягивания.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Мы поставили в проекте "&lt;a href="http://konkursof.net/"&gt;Конкурсоф.Нет&lt;/a&gt;" в приоритете не функциональность. Приоритет - запуск в продакшн. Да, вы наверное подумаете, что это глупо - предоставлять пользователям не рабочую версию программы. И разумеется будете правы.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Но, я говорю о _работоспособном_ веб-приложении. Вся прелесть Веба в том, что можно проводить обновление незаметно для пользователей. Повторю - пользователям не требуется устанавливать новую версию сервиса каждый раз, когда они заходят на сайт.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Когда мне нужно написать пару строк текста, я напишу его и в обычном текст-боксе. Однако, большинство разработчиков сервисов почему-то считают, что без WYSIWYG редактора ну просто не обойтись. Плюс еще пару-тройку таких "жизненно важных" функций, и запуск сервиса откладываеться на месяц, два и т.д.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Простите, но к этому времени мы уже получим долю рынка!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Почитайте &lt;a href="http://gettingreal.37signals.com/GR_rus.php"&gt;Getting Real&lt;/a&gt; на ночь. Очень протрезвляет.&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;ul id=""&gt;&lt;li&gt;Меньше возможностей&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Меньше опций и настроек&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Меньше структура компании&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Меньше встреч и абстракций&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Меньше обещаний&lt;/li&gt;&lt;/ul&gt;Да, вот так это работает.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2454414780341458679-3210371157207440678?l=konkursof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://konkursof.blogspot.com/feeds/3210371157207440678/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2454414780341458679&amp;postID=3210371157207440678' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/3210371157207440678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/3210371157207440678'/><link rel='alternate' type='text/html' href='http://konkursof.blogspot.com/2008/01/blog-post_14.html' title='Что же тебе нужно?'/><author><name>:)</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2454414780341458679.post-7974166604603769817</id><published>2008-01-13T23:51:00.000+02:00</published><updated>2008-01-15T12:58:41.633+02:00</updated><title type='text'>Дисклаймер</title><content type='html'>Мой друг (а теперь и партнер по стартапу) давно мечтал проводить конкурсы. Сколько я его помню, он носился с этой идеей. Еще у него была одна болезнь, к которой судя по моим личным наблюдениям, склонны начинающие веб-программисты. "Нужно написать свой движек! Движек - это ключ" и т.д.&lt;div&gt;&lt;br /&gt;&lt;div&gt;В начале декабря у меня было довольно много свободного времени (странно, но у меня почему-то всегда оно есть), и одного вечера мы обсуждали глобальные проблеммы развития социальных сервисов. Как принято у нас в екс-ссср - на кухне.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Тема проведения конкурсов опять всплыла. И по необьяснимому стечению обстоятельств на это время у меня был прототип социального сервиса. Вот за что я люблю смесь Питон+Джанго, так это за молниеносное прототипирование.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Ок-ей, сказал я через две недели - будем делать сервис. Сколько себя помню, у меня складывается такое ощущение, что каждой идее нужно помариноваться. У меня срок мариновки идей аккурат две недели.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Вот и весь дисклаймер :)&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2454414780341458679-7974166604603769817?l=konkursof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://konkursof.blogspot.com/feeds/7974166604603769817/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2454414780341458679&amp;postID=7974166604603769817' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/7974166604603769817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/7974166604603769817'/><link rel='alternate' type='text/html' href='http://konkursof.blogspot.com/2008/01/blog-post_13.html' title='Дисклаймер'/><author><name>:)</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2454414780341458679.post-3441837987116537936</id><published>2008-01-13T23:43:00.000+02:00</published><updated>2008-01-13T23:49:22.254+02:00</updated><title type='text'>Со Старым Новым Годом, друзья!</title><content type='html'>Первую запись в блоге хочется посвятить чему-нибудь приятному, настраивающему на хороший лад. Например - сказкам. Рассказывайте своим детишкам сказки, импровизируйте и будьте оригинальны. И еще раз - С Новым Старым Годом!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2454414780341458679-3441837987116537936?l=konkursof.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://konkursof.blogspot.com/feeds/3441837987116537936/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2454414780341458679&amp;postID=3441837987116537936' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/3441837987116537936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2454414780341458679/posts/default/3441837987116537936'/><link rel='alternate' type='text/html' href='http://konkursof.blogspot.com/2008/01/blog-post.html' title='Со Старым Новым Годом, друзья!'/><author><name>:)</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
