<?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-6223781663727322959</id><updated>2012-02-16T17:13:32.755+04:00</updated><category term='resize'/><category term='flash'/><category term='quota'/><category term='postgresql'/><category term='rio-travel.ru'/><category term='bug'/><category term='добавление'/><category term='info'/><category term='migrate'/><category term='poll'/><category term='House'/><category term='service'/><category term='порт'/><category term='psql'/><category term='grow'/><category term='wsgi. конфигурация'/><category term='win32'/><category term='module'/><category term='mouse'/><category term='lays'/><category term='copy'/><category term='nginx'/><category term='genius'/><category term='fresh'/><category term='email'/><category term='multi'/><category term='lag'/><category term='unicode'/><category term='составной'/><category term='сеть'/><category term='russian'/><category term='facebook'/><category term='table'/><category term='linq'/><category term='uuid'/><category term='времени'/><category term='1.0.1'/><category term='pgbouncer'/><category term='lock'/><category term='пример'/><category term='example'/><category term='success'/><category term='voicecards.ru'/><category term='postback'/><category term='django'/><category term='no mic'/><category term='root'/><category term='desktop'/><category term='cygrunsrv'/><category term='load balancing'/><category term='libplugin_rrd'/><category term='окно'/><category term='dpi'/><category term='fix'/><category term='network'/><category term='datetime'/><category term='ubuntu'/><category term='notification'/><category term='error'/><category term='account'/><category term='munin'/><category term='python 2.6'/><category term='ec2'/><category term='cluster'/><category term='sensitivity'/><category term='keep alive'/><category term='rsa'/><category term='домен'/><category term='gitolite'/><category term='pub'/><category term='template'/><category term='logo'/><category term='sync'/><category term='lenovo s10'/><category term='свой'/><category term='plugin'/><category term='emit'/><category term='image'/><category term='fail2ban'/><category term='comments'/><category term='update'/><category term='share'/><category term='комментарий'/><category term='s06e02'/><category term='transaction'/><category term='xid'/><category term='ошибка'/><category term='бекап'/><category term='english'/><category term='rrd'/><category term='connect'/><category term='яндекс'/><category term='remote'/><category term='freetds'/><category term='ssh'/><category term='linq 2 xml'/><category term='size'/><category term='gae'/><category term='оформление'/><category term='jinja2'/><category term='seo'/><category term='podarki.ru'/><category term='clodo'/><category term='centos 5'/><category term='too long'/><category term='dr.'/><category term='log'/><category term='index'/><category term='s06e01'/><category term='install'/><category term='русский'/><category term='laser'/><category term='xsl'/><category term='amazon ec2'/><category term='сео'/><category term='chkconfig'/><category term='encoding'/><category term='url rewrite'/><category term='django-admin'/><category term='cherokee'/><category term='how to'/><category term='potolok-perstige.ru'/><category term='disk'/><category term='just in time'/><category term='nunit'/><category term='insert'/><category term='psycopg2'/><category term='портфолио'/><category term='c#'/><category term='hint'/><category term='managment'/><category term='подлость'/><category term='маркет'/><category term='yml'/><category term='utf8'/><category term='время'/><category term='.net'/><category term='vim'/><category term='limit'/><category term='backup'/><category term='asp'/><category term='открыть'/><category term='xml'/><category term='centos'/><category term='репозиторий'/><category term='mysql'/><category term='init.d'/><category term='xc0010014'/><category term='social net'/><category term='visual studio 2008 express'/><category term='utf-8'/><category term='пользователь'/><category term='munin-node'/><category term='jinja'/><category term='filter'/><category term='CouchDB'/><category term='custom'/><category term='html'/><category term='color'/><category term='werkzeug'/><category term='memcached'/><category term='crop'/><category term='selectel'/><category term='иконки'/><category term='newid'/><category term='sqlcmd'/><category term='минусы'/><category term='google app engine'/><category term='url'/><category term='pyodbc'/><category term='ttf'/><category term='debugging'/><category term='map'/><category term='tinymce'/><category term='social'/><category term='spidermonkey'/><category term='help'/><category term='iis6'/><category term='mssql'/><category term='partitioning'/><category term='switch'/><category term='memcache'/><category term='синхронизация'/><category term='скрипт'/><category term='delete'/><category term='rrdtool'/><category term='bank'/><category term='python'/><category term='amazon'/><category term='script'/><category term='domain'/><category term='windows'/><category term='compiz'/><category term='оконный менеджер'/><category term='транзакция'/><category term='ebs'/><category term='linux'/><category term='debug'/><category term='чпу'/><category term='plproxy'/><category term='key'/><category term='ttd'/><category term='10.04'/><category term='stored procedure'/><category term='php'/><category term='bulkload'/><category term='sqlalchemy'/><category term='trigger'/><category term='uwsgi'/><category term='yandex'/><category term='chart'/><category term='mongodb'/><category term='481'/><category term='tahoma'/><category term='time'/><category term='1gb'/><category term='terminal'/><category term='epic fail'/><category term='upload'/><category term='drupal'/><category term='search'/><category term='net 2.0'/><category term='480'/><category term='настройка'/><category term='mic'/><category term='read-only'/><title type='text'>FunBlog</title><subtitle type='html'>Личный блог Фунтикова Виталия.
Web-Developer/Веб-разработчик</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>79</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-795052022827022104</id><published>2011-12-13T14:09:00.001+04:00</published><updated>2011-12-13T14:09:06.159+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='too long'/><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='error'/><title type='text'>Django: value too long for type character varying(50)</title><content type='html'>Попал на непонятно откуда вылезающую ошибку "value too long for type character varying(50)". Оказалось - в Meta у модели слишком длинное название было (verbose_plural). В следствии чего django не мог создать права для app.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-795052022827022104?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/795052022827022104/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=795052022827022104' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/795052022827022104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/795052022827022104'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2011/12/django-value-too-long-for-type.html' title='Django: value too long for type character varying(50)'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-2265685075079986133</id><published>2011-11-02T12:52:00.003+04:00</published><updated>2011-11-02T12:53:14.405+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='munin'/><category scheme='http://www.blogger.com/atom/ns#' term='win32'/><category scheme='http://www.blogger.com/atom/ns#' term='munin-node'/><title type='text'>Munin-node-win32. Баг с внешними плагинами.</title><content type='html'>История такова: очень не хотелось писать плагин для Win-сервера, однако пришлось. Хитрый плагин считывает лог веб-сервера и в результате я получаю графики времени генерации страниц сайта. Я отслеживал некоторые тяжелые страницы.&lt;br /&gt;&lt;br /&gt;Однако всё испортил баг в munin-node-win32!&lt;br /&gt;&lt;br /&gt;А именно - сервером мунина не считывался конфиг плагина из-за перевода строки windows-way.&lt;br /&gt;&lt;br /&gt;Ужас. Пришлось поставить Visual C++, взять с github'а исходники, исправить их, скомпилировать... И вот он - &lt;a href="http://github.com/funvit/munin-node-win32"&gt;http://github.com/funvit/munin-node-win32&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Исполняемый файл - в каталоге Release. Всё работает, проверил в win 2003 server.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-2265685075079986133?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/2265685075079986133/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=2265685075079986133' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/2265685075079986133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/2265685075079986133'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2011/11/munin-node-win32.html' title='Munin-node-win32. Баг с внешними плагинами.'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-863152350833283525</id><published>2011-06-22T14:47:00.000+04:00</published><updated>2011-06-22T14:47:39.717+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='480'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='centos'/><category scheme='http://www.blogger.com/atom/ns#' term='481'/><title type='text'>CentOS. MySQL - ошибка при запуске (481)</title><content type='html'>В очередной раз поднимая очередной сервер, попал на ошибку запуска mysql. Ругался, что файл переводов ошибок содержит только 480 строк, а нужно - 481.&lt;br /&gt;&lt;br /&gt;Как оказалось, установилась версия 5.0.92 из репозитория CentALT.&lt;br /&gt;&lt;br /&gt;Так вот, если отключить репозиторий (я просто файл репозитория убрал) - то ставится 5.0.77, которая нормально запускается!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-863152350833283525?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/863152350833283525/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=863152350833283525' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/863152350833283525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/863152350833283525'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2011/06/centos-mysql-481.html' title='CentOS. MySQL - ошибка при запуске (481)'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-4522350360991093888</id><published>2011-06-21T16:03:00.001+04:00</published><updated>2011-06-21T16:03:07.918+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='centos'/><category scheme='http://www.blogger.com/atom/ns#' term='репозиторий'/><category scheme='http://www.blogger.com/atom/ns#' term='nginx'/><title type='text'>CentOS 5. Установка nginx</title><content type='html'>Сперва подключить репозиторий&lt;br /&gt;&lt;pre&gt;rpm -ihv http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;потом установить&lt;br /&gt;&lt;pre&gt;yum install nginx&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-4522350360991093888?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/4522350360991093888/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=4522350360991093888' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/4522350360991093888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/4522350360991093888'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2011/06/centos-5-nginx.html' title='CentOS 5. Установка nginx'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-716807990230505231</id><published>2011-06-08T17:01:00.001+04:00</published><updated>2011-06-21T17:25:24.342+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rsa'/><category scheme='http://www.blogger.com/atom/ns#' term='gitolite'/><category scheme='http://www.blogger.com/atom/ns#' term='добавление'/><category scheme='http://www.blogger.com/atom/ns#' term='key'/><category scheme='http://www.blogger.com/atom/ns#' term='пользователь'/><category scheme='http://www.blogger.com/atom/ns#' term='pub'/><title type='text'>Gitolite - добавление пользователя</title><content type='html'>Добавить пользователя или другое рабочее место (например - лаптоп) - легко:&lt;br /&gt;&lt;br /&gt;1. Сгенерировать rsa ключ&lt;br /&gt;2. скопировать его на сервер в папку tmp&lt;br /&gt;3. переключиться на пользователя, на котором успановлен gitolite (у меня - git)&lt;br /&gt;sudo su - gitolite&lt;br /&gt;4. добавить ключь gl-setup /tmp/user.pub&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/6223781663727322959-716807990230505231?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/716807990230505231/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=716807990230505231' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/716807990230505231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/716807990230505231'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2011/06/gitolite.html' title='Gitolite - добавление пользователя'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-1405804638763459688</id><published>2011-05-17T15:37:00.000+04:00</published><updated>2011-05-17T15:37:11.737+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='chkconfig'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='init.d'/><title type='text'>Linux. Добавление и включение скрипта в init.d</title><content type='html'>Проверка скрипта:&lt;br /&gt;&lt;pre&gt;chkconfig --list имя_скрипта&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Добавление: &lt;br /&gt;&lt;pre&gt;chkconfig --add имя_скрипта&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Включить: &lt;br /&gt;&lt;pre&gt;chkconfig имя_скрипта on&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-1405804638763459688?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/1405804638763459688/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=1405804638763459688' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/1405804638763459688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/1405804638763459688'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2011/05/linux-initd.html' title='Linux. Добавление и включение скрипта в init.d'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-3472973704256675776</id><published>2011-05-06T22:18:00.002+04:00</published><updated>2011-05-06T22:20:53.254+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django-admin'/><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='mongodb'/><title type='text'>Django + MongoDB</title><content type='html'>&lt;h4&gt;Рабочая связка&lt;/h4&gt;* &lt;a href="https://bitbucket.org/wkornewald/django-nonrel"&gt;django-nonrel&lt;/a&gt;&lt;br /&gt;* &lt;a href="https://github.com/django-mongodb-engine/mongodb-engine"&gt;django-mongodb-engine&lt;/a&gt;&lt;br /&gt;* &lt;a href="https://bitbucket.org/wkornewald/djangotoolbox"&gt;djangotoolbox&lt;/a&gt; (setup.py mongo-engine поставит сам)&lt;br /&gt;* &lt;a href="https://bitbucket.org/fhahn/django-permission-backend-nonrel"&gt;permission-backend-nonrel&lt;/a&gt; (вернет группы и права в систему доступа)&lt;br /&gt;&lt;br /&gt;Работает админка. У моделей можно использовать OneToOneField и ManyToManyField.&lt;br /&gt;&lt;br /&gt;Обязательно в settings.py добавить:&lt;br /&gt;* djangotoolbox&lt;br /&gt;* permission_backend_nonrel&lt;br /&gt;&lt;br /&gt;Модели пишутся стандартно.&lt;br /&gt;&lt;br /&gt;Минус - у моделей всегда id=ObjectId. Не смотрел, возможно ли это изменить.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Локализация&lt;/h4&gt;Русская локализация работает только если локаль в settings = ru.&lt;br /&gt;&lt;br /&gt;Не забывать: &lt;br /&gt;* создать каталог locale в корне проекта&lt;br /&gt;* django-admin.py makemessages -l ru (создает файл для переводов)&lt;br /&gt;* django-admin.py compilemessages&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Начальная установка проекта&lt;/h4&gt;django-admin.py startproject mySite&lt;br /&gt;правка settings.py&lt;br /&gt;django-admin.py syncdb&lt;br /&gt;зайти через консоль монго в django_site и выбрать id сайта ( db.django_site.findOne() ) - он нужен в settings (пример: "4dc3b2ef8ddf87288d00001d").&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-3472973704256675776?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/3472973704256675776/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=3472973704256675776' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/3472973704256675776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/3472973704256675776'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2011/05/django-mongodb.html' title='Django + MongoDB'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-3051249198186007911</id><published>2011-03-24T15:25:00.000+03:00</published><updated>2011-03-24T15:25:52.240+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hint'/><category scheme='http://www.blogger.com/atom/ns#' term='lock'/><category scheme='http://www.blogger.com/atom/ns#' term='update'/><category scheme='http://www.blogger.com/atom/ns#' term='mongodb'/><category scheme='http://www.blogger.com/atom/ns#' term='multi'/><title type='text'>MongoDB обновление множества записей</title><content type='html'>Обнаружил неприятную особенность. При частом использовании:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;update(&lt;br /&gt;    query={Field:{$in:[x],$nin:[y]}},&lt;br /&gt;    update={$addToSet:{Field:z}},&lt;br /&gt;    multi=true&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;монго плодит кучу под-процессов (и соединений) и сильно лочит коллекцию. Что приводит к 90% локу и зависанию скрипта.&lt;br /&gt;&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/6223781663727322959-3051249198186007911?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/3051249198186007911/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=3051249198186007911' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/3051249198186007911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/3051249198186007911'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2011/03/mongodb.html' title='MongoDB обновление множества записей'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-678856896853685845</id><published>2011-03-24T12:03:00.001+03:00</published><updated>2011-03-24T12:03:31.728+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gitolite'/><category scheme='http://www.blogger.com/atom/ns#' term='centos'/><title type='text'>Gitolite - удобно!</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Очень советую использовать на сервере с git-репозиториями gitolite.&amp;nbsp;&lt;a target="_blank" href="http://chodex.ru/ustanovka-gitolite/"&gt;Инструкция&lt;/a&gt;.&amp;nbsp;Обязательно ставить под пользователем &lt;b&gt;git&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Gitosis у меня не заработал - при push выдавал неизлечимую ошибку.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-678856896853685845?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/678856896853685845/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=678856896853685845' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/678856896853685845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/678856896853685845'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2011/03/gitolite.html' title='Gitolite - удобно!'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-6999047000208326103</id><published>2011-02-10T12:42:00.001+03:00</published><updated>2011-02-10T12:43:41.146+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='clodo'/><category scheme='http://www.blogger.com/atom/ns#' term='selectel'/><title type='text'>Clodo.ru - не оправдывает моих надежд</title><content type='html'>Вчера (9.02.2011) была последняя капля. LA достиг 10 и машина умерла. В панели весело отображалось 2ТБ из 15 ГБ диска. Это интересно как???&lt;br /&gt;&lt;br /&gt;Кроме того, когда я поднял минимум памяти с 512 до 1,5 ГБ и перезапустил сервер - ничего не изменилось. Как было 512 так и осталось (т.е. выше никак не росло).&lt;br /&gt;&lt;br /&gt;Сегодня опять мой скрипт довел сервер до la 8.&lt;br /&gt;&lt;br /&gt;Срочно уползаю на selectel.ru! Там la нормально держится на 3-4 и память честно выделяется...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-6999047000208326103?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/6999047000208326103/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=6999047000208326103' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/6999047000208326103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/6999047000208326103'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2011/02/clodoru.html' title='Clodo.ru - не оправдывает моих надежд'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-4217284203601002994</id><published>2011-02-09T13:58:00.004+03:00</published><updated>2011-03-24T11:59:53.269+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='centos'/><category scheme='http://www.blogger.com/atom/ns#' term='clodo'/><category scheme='http://www.blogger.com/atom/ns#' term='fail2ban'/><title type='text'>Clodo.ru - обязательно ставьте fail2ban.</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Сегодня слегка озадачился - а не атакуют ли мой сервер (который вообще то никак не фигурирует в интернете)?&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;sudo cat /var/log/secure* | grep 'Failed password' | grep sshd | awk '{print $1,$2}' | sort | uniq -c&lt;br /&gt;&lt;br /&gt;232 Feb 1&lt;br /&gt;800 Feb 2&lt;br /&gt; 15 Feb 4&lt;br /&gt; 15 Feb 7&lt;br /&gt;238 Feb 8&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Ого!!! Срочно ставлю fail2ban!&lt;br /&gt;&lt;br /&gt;Шаги такие:&lt;br /&gt;1. поставить пакет (yum install fail2ban)&lt;br /&gt;2. настроить конфиг (ssh jail, проверьте правильность имени файла лога!)&lt;br /&gt;3. прописать емаил для рута (sudo vi /etc/aliases)&lt;br /&gt;4. включить fail2ban (/etc/init.d/fail2ban start)&lt;br /&gt;5. добавить его в init.d (chkconfig fail2ban on)&lt;br /&gt;&lt;br /&gt;P.S.: проверьте - установлен ли sendmail (/usr/sbin/sendmail)!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-4217284203601002994?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/4217284203601002994/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=4217284203601002994' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/4217284203601002994'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/4217284203601002994'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2011/02/clodoru-fail2ban.html' title='Clodo.ru - обязательно ставьте fail2ban.'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-279914012036392402</id><published>2011-02-03T15:24:00.000+03:00</published><updated>2011-02-03T15:24:43.774+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='yandex'/><category scheme='http://www.blogger.com/atom/ns#' term='маркет'/><category scheme='http://www.blogger.com/atom/ns#' term='seo'/><category scheme='http://www.blogger.com/atom/ns#' term='yml'/><category scheme='http://www.blogger.com/atom/ns#' term='сео'/><category scheme='http://www.blogger.com/atom/ns#' term='яндекс'/><title type='text'>YML и СЕОшные развлечения</title><content type='html'>По работе столкнулся с интересной ситуацией - многие интернет магазины используют трюк с подменой символов в названии товаров. Т.е. есть слово "cумка". Они заменяют букву "с" на английскую "c".&lt;br /&gt;&lt;br /&gt;Зачем? Да вот какой-то гений понял, что это даст больше уникального контента для поискового робота. Ладно. Всё по-умному - заменяют только в названии товара, а в описании обязательно дублируют слово в правильном виде.&lt;br /&gt;&lt;br /&gt;Кому интересно - вбейте в поисковики (советую гугл) "сумка" (и замените первую букву). Результат вас поразит.&lt;br /&gt;&lt;br /&gt;Но всё бы хорошо, но эти горе-сеошники совсем не понимают, что они портят контент сайта. Почему? Да потому что, когда интернет-магазин вдруг решит работать с Яндекс-Маркетом... Да, да! Название товара то - уникальное... И кривое.&lt;br /&gt;&lt;br /&gt;Хотя возможно яндекс это знает и заменяет обратно. Но вот мне дают xml-файл. Я его обрабатываю и вижу битые слова. И мне приходится как то это решать!&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/6223781663727322959-279914012036392402?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/279914012036392402/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=279914012036392402' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/279914012036392402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/279914012036392402'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2011/02/yml.html' title='YML и СЕОшные развлечения'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-170729154773555915</id><published>2011-01-17T17:18:00.002+03:00</published><updated>2011-01-17T17:21:14.535+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='example'/><category scheme='http://www.blogger.com/atom/ns#' term='bank'/><category scheme='http://www.blogger.com/atom/ns#' term='пример'/><category scheme='http://www.blogger.com/atom/ns#' term='transaction'/><category scheme='http://www.blogger.com/atom/ns#' term='транзакция'/><category scheme='http://www.blogger.com/atom/ns#' term='mongodb'/><category scheme='http://www.blogger.com/atom/ns#' term='account'/><title type='text'>MongoDB. Реализация транзакции между двумя коллекциями.</title><content type='html'>Привычной SQL-транзакции в mongodb нет. Однако есть атомарные команды для изменения документа (одного!). Что позволяет реализовать двойную бух-запись. &lt;br /&gt;&lt;br /&gt;Пример: есть коллекция организаций и журнал сумм на списание с организаций.&lt;br /&gt;&lt;br /&gt;Получается такая реализация:&lt;br /&gt;&lt;br /&gt;Вместо выполнения всей sql-транзакции - в коллекцию журнала добавляется запись о списании суммы с организации. Всё. Остальное - делает робот-скрипт (в этом примере - он работает строго в один поток!)&lt;br /&gt;&lt;br /&gt;Что делает робот:&lt;br /&gt;1. Находит не обработанную запись в коллекции журнала&lt;br /&gt;2. В коллекции организаций у соответствующей организации за одну команду изменяется баланс и лог-поле (типа LogId + TimeStamp) &lt;b&gt;Важно!:&lt;/b&gt; &lt;i&gt;предварительно нужно проверить - не совпадает ли идентификатор журнальной записи с LogId. Если совпало - то значит скрипт запущен после сбоя, и уменьшать баланс не надо!&lt;/i&gt;&lt;br /&gt;3. В коллекции журнала записи добавляется флаг "Обработана"=true&lt;br /&gt;&lt;br /&gt;На 2 и 3 шаге нужно проверять getLastError(safe-mode) - если произошла ошибка - можно повторить шаг (только не бесконечно, а, например, 10 раз. если все плохо - то нужно как-то оповестить админа или программиста).&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/6223781663727322959-170729154773555915?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/170729154773555915/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=170729154773555915' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/170729154773555915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/170729154773555915'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2011/01/mongodb.html' title='MongoDB. Реализация транзакции между двумя коллекциями.'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-8261299364563746154</id><published>2011-01-14T13:28:00.001+03:00</published><updated>2011-10-31T17:55:04.397+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='munin'/><category scheme='http://www.blogger.com/atom/ns#' term='plugin'/><category scheme='http://www.blogger.com/atom/ns#' term='mongodb'/><category scheme='http://www.blogger.com/atom/ns#' term='chart'/><title type='text'>MongoDB + Munin = графики</title><content type='html'>На сайте mongodb оказалась не работающая (для меня) инструкция. Покопав гугл нашел решение:&lt;br /&gt;&lt;br /&gt;Плагины нужно скопировать в /usr/share/munin/plugins&lt;br /&gt;и сделать симлинки по пути /etc/munin/plugins&lt;br /&gt;потом проверить конфиг ноды:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;munin-node-configure&lt;br /&gt;...&lt;br /&gt;mongo_btree                | yes  |&lt;br /&gt;mongo_conn                 | yes  |&lt;br /&gt;mongo_lock                 | yes  |&lt;br /&gt;mongo_mem                  | yes  |&lt;br /&gt;mongo_ops                  | yes  |&lt;br /&gt;...&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;перезапустить ноду:&lt;br /&gt;&lt;pre&gt;sudo /etc/init.d/munin-node restart&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Вот теперь на веб-странице графиков появилась группа mongodb.&lt;br /&gt;&lt;br /&gt;P.S.: &lt;a href="https://github.com/erh/mongo-munin/"&gt;https://github.com/erh/mongo-munin/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-8261299364563746154?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/8261299364563746154/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=8261299364563746154' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/8261299364563746154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/8261299364563746154'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2011/01/mongodb-munin.html' title='MongoDB + Munin = графики'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-8067483526796788512</id><published>2010-12-17T16:47:00.000+03:00</published><updated>2010-12-17T16:47:23.134+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='centos'/><category scheme='http://www.blogger.com/atom/ns#' term='email'/><category scheme='http://www.blogger.com/atom/ns#' term='root'/><title type='text'>CentOS: почтовые алиасы. Установка е-майла для root.</title><content type='html'>&lt;pre&gt;sudo vi /etc/aliases # задать алиас root: &lt;мой e-mail&gt;&lt;br /&gt;sudo newaliases&lt;br /&gt;echo "hello from `hostname`" | mail -s "test" root&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-8067483526796788512?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/8067483526796788512/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=8067483526796788512' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/8067483526796788512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/8067483526796788512'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2010/12/centos-root.html' title='CentOS: почтовые алиасы. Установка е-майла для root.'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-4368141625099429516</id><published>2010-12-17T14:52:00.001+03:00</published><updated>2010-12-17T15:06:43.370+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='notification'/><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='color'/><title type='text'>Django | Стандартные цвета оповещений</title><content type='html'>Часто в каких-то своих проектах приходится писать свою систему оповещений (notifications) на сайте. И лучше использовать стандартное оформление, например из Django:&lt;br /&gt;&lt;br /&gt;.information {&lt;br /&gt;background: #dedfff;&lt;br /&gt;color: #406299;&lt;br /&gt;border-color:#5b7299;&lt;br /&gt;}&lt;br /&gt;.error {&lt;br /&gt;background: #ffe1da;&lt;br /&gt;border-color: #f34f4f;&lt;br /&gt;color: #be0b0b;&lt;br /&gt;}&lt;br /&gt;.success {&lt;br /&gt;background: #e2f9e3;&lt;br /&gt;border-color: #9c9;&lt;br /&gt;color: #080;&lt;br /&gt;}&lt;br /&gt;.warning {&lt;br /&gt;background:#fff8bf;&lt;br /&gt;border-color: #ffd324;&lt;br /&gt;color:#eb830c;&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-4368141625099429516?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/4368141625099429516/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=4368141625099429516' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/4368141625099429516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/4368141625099429516'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2010/12/django.html' title='Django | Стандартные цвета оповещений'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-1143983167555975373</id><published>2010-12-14T11:50:00.000+03:00</published><updated>2010-12-14T11:50:45.374+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='открыть'/><category scheme='http://www.blogger.com/atom/ns#' term='clodo'/><category scheme='http://www.blogger.com/atom/ns#' term='порт'/><title type='text'>clodo.ru | Виртуальный сервер. Порты.</title><content type='html'>q: CentOS. Как открыть порт?&lt;br /&gt;a: &lt;br /&gt;&lt;pre&gt;iptables -I INPUT -p tcp --dport 81 -j ACCEPT&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-1143983167555975373?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/1143983167555975373/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=1143983167555975373' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/1143983167555975373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/1143983167555975373'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2010/12/clodoru-%D0%B2%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80-%D0%BF%D0%BE%D1%80%D1%82%D1%8B.html' title='clodo.ru | Виртуальный сервер. Порты.'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-1214325034666395998</id><published>2010-10-23T00:38:00.002+04:00</published><updated>2010-10-23T00:40:44.018+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='disk'/><category scheme='http://www.blogger.com/atom/ns#' term='info'/><category scheme='http://www.blogger.com/atom/ns#' term='grow'/><category scheme='http://www.blogger.com/atom/ns#' term='amazon ec2'/><category scheme='http://www.blogger.com/atom/ns#' term='quota'/><category scheme='http://www.blogger.com/atom/ns#' term='ebs'/><category scheme='http://www.blogger.com/atom/ns#' term='amazon'/><category scheme='http://www.blogger.com/atom/ns#' term='ec2'/><category scheme='http://www.blogger.com/atom/ns#' term='resize'/><title type='text'>Amazon. Виртуальные машины. Про дисковое пространство.</title><content type='html'>Оказалось, что в описании машин &lt;b&gt;устаревшая&lt;/b&gt; информация о размерах дисков. Я долго ломал голову и пробовал уменьшать образы (к слову - это были тестовые образы по 20 - 40 гиг, и использовал я micro-instance, т.к. это самый дешевый вариант для тестов)... Но после уменьшения - машина либо не стартовала, либо не отвечала по ssh (что скорее всего означало то, что опять таки не запустилась).&lt;br /&gt;&lt;br /&gt;Вобщем я рискнул и создал High Memory &lt;b&gt;Extra Large&lt;/b&gt;, в инфо о котором написано о 420 Гиг диске. Выбрал образ Amazon 64bit. Ну и к моей радости после добавления я увидел, что к машине подключен образ всего то 10 Гиг! Ура!&lt;br /&gt;&lt;br /&gt;Смысл в том, что мне не нужно было указанных 420 Гиг, а нужно было всего то 100-200. И очень не хотелось платить за излишек. Так что теперь и не придется.&lt;br /&gt;&lt;br /&gt;Однако стоит упомянуть и про увеличение размера диска. Так вот - увеличение работает! Шаги :&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Сделать snapshot с нужного образа&lt;/li&gt;&lt;li&gt;Сделать новый образ из snapshot`а, при этом будет возможность изменить размер&lt;/li&gt;&lt;li&gt;Заменить исходный образ или подключить новый к машине&lt;/li&gt;&lt;li&gt;Подмонтировать новый диск в lunix`e (странно, но при использовании образа амазоновского линукса, диски монтируются как &lt;b&gt;xv&lt;/b&gt;da вместо &lt;b&gt;s&lt;/b&gt;da)&lt;/li&gt;&lt;li&gt;Воспользоватся resize2fs утилитой&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Все! После - нужно перезапустить машину. Да, кстати, увеличивать можно даже тот образ, с которого загрузилась машина.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-1214325034666395998?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/1214325034666395998/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=1214325034666395998' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/1214325034666395998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/1214325034666395998'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2010/10/amazon.html' title='Amazon. Виртуальные машины. Про дисковое пространство.'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-1560401853209597436</id><published>2010-10-13T16:26:00.001+04:00</published><updated>2010-10-29T18:51:54.479+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='index'/><category scheme='http://www.blogger.com/atom/ns#' term='составной'/><category scheme='http://www.blogger.com/atom/ns#' term='hint'/><category scheme='http://www.blogger.com/atom/ns#' term='mongodb'/><title type='text'>MongoDB. Составные индексы.</title><content type='html'>Только что, играясь с запросами, обнаружил, что mongo использует составной (из нескольких полей) индекс для поиска по одному полю (это одно поле есть в составном)!&lt;br /&gt;&lt;br /&gt;Т.е. нет нужды как в SQL делать по несколько индексов (по разному составленных)!&lt;br /&gt;&lt;br /&gt;UPDATE: &lt;br /&gt;Пример:&lt;br /&gt;Есть индекс A,B,C. Так вот, в запросах по A или A,B - будет работать индекс! А вот для B или B,C - нет.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-1560401853209597436?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/1560401853209597436/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=1560401853209597436' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/1560401853209597436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/1560401853209597436'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2010/10/mongodb.html' title='MongoDB. Составные индексы.'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-8570070280494872952</id><published>2010-10-12T11:42:00.003+04:00</published><updated>2010-10-12T11:43:02.018+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='1gb'/><category scheme='http://www.blogger.com/atom/ns#' term='utf8'/><category scheme='http://www.blogger.com/atom/ns#' term='utf-8'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><title type='text'>1gb.ru + SSH = UTF-8? Решение</title><content type='html'>Что бы при работе через SSH правильно работала кодировка UTF-8 - нужно в ~/.bashrc добавить:&lt;br /&gt;&lt;pre&gt;export LANG=ru_RU.utf8&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-8570070280494872952?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/8570070280494872952/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=8570070280494872952' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/8570070280494872952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/8570070280494872952'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2010/10/1gb-ssh-utf-8.html' title='1gb.ru + SSH = UTF-8? Решение'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-2204311900555953865</id><published>2010-10-12T11:34:00.000+04:00</published><updated>2010-10-12T11:34:35.612+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vim'/><category scheme='http://www.blogger.com/atom/ns#' term='encoding'/><title type='text'>VIM. Меню для смены кодировки</title><content type='html'>В vim можно создавать свои меню и если добавить в .vimrc следующие строки:&lt;br /&gt;&lt;pre&gt;set wildmenu&lt;br /&gt;&lt;br /&gt;set wcm=&amp;lt;Tab&amp;gt;&lt;br /&gt;&lt;br /&gt;menu Encoding.koi8-r :e ++enc=koi8-r ++ff=unix&amp;lt;CR&amp;gt;&lt;br /&gt;&lt;br /&gt;menu Encoding.windows-1251 :e ++enc=cp1251 ++ff=dos&amp;lt;CR&amp;gt;&lt;br /&gt;&lt;br /&gt;menu Encoding.cp866 :e ++enc=cp866 ++ff=dos&amp;lt;CR&amp;gt;&lt;br /&gt;&lt;br /&gt;menu Encoding.utf-8 :e ++enc=utf8 &amp;lt;CR&amp;gt;&lt;br /&gt;&lt;br /&gt;menu Encoding.koi8-u :e ++enc=koi8-u ++ff=unix&amp;lt;CR&amp;gt;&lt;br /&gt;&lt;br /&gt;map &amp;lt;F8&amp;gt; :emenu Encoding.&amp;lt;TAB&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;То по нажатию F8 можно будет выбрать из меню, в какой кодировке редактировать текущий файл. По-моему, очень удобная фича.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://habrahabr.ru/blogs/vim/28181/#comment_738122"&gt;Оригинал&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-2204311900555953865?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/2204311900555953865/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=2204311900555953865' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/2204311900555953865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/2204311900555953865'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2010/10/vim.html' title='VIM. Меню для смены кодировки'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-4571612853929658777</id><published>2010-09-29T15:30:00.001+04:00</published><updated>2010-09-29T15:34:26.573+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rrd'/><category scheme='http://www.blogger.com/atom/ns#' term='cherokee'/><category scheme='http://www.blogger.com/atom/ns#' term='rrdtool'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='libplugin_rrd'/><title type='text'>Ubuntu-server | Cherokee web-server &amp; RRDTool</title><content type='html'>В последних версиях (&gt;1) замечательно интегрированы графики. Только вот при установке через apt-get почему то не устанавливается libplugin_rrd.so. Решение простое&lt;br /&gt;&lt;pre&gt;sudo apt-get install libcherokee-mod-rrd&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-4571612853929658777?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/4571612853929658777/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=4571612853929658777' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/4571612853929658777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/4571612853929658777'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2010/09/cherokee-web-server-rrdtool.html' title='Ubuntu-server | Cherokee web-server &amp; RRDTool'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-8035493695173628861</id><published>2010-08-26T12:33:00.000+04:00</published><updated>2010-08-26T12:33:13.669+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='log'/><category scheme='http://www.blogger.com/atom/ns#' term='CouchDB'/><title type='text'>CouchDB | Если вдруг падает и не запускается...</title><content type='html'>... замечал на версии до 1.0.0, что при большом размере лог-файла - не запускается. Решение - затирать лог.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-8035493695173628861?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/8035493695173628861/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=8035493695173628861' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/8035493695173628861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/8035493695173628861'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2010/08/couchdb.html' title='CouchDB | Если вдруг падает и не запускается...'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-6035306605408663338</id><published>2010-08-26T12:31:00.000+04:00</published><updated>2010-08-26T12:31:48.862+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='spidermonkey'/><category scheme='http://www.blogger.com/atom/ns#' term='1.0.1'/><category scheme='http://www.blogger.com/atom/ns#' term='CouchDB'/><category scheme='http://www.blogger.com/atom/ns#' term='centos 5'/><title type='text'>CenoOS 5 + CouchDB 1.0.1. Как скомпилировать.</title><content type='html'>Удалось скомпилировать CouchDB 1.0.1 на CentOS 5.&lt;br /&gt;&lt;br /&gt;Основная сложность была в том, что бы найти js библиотеку SpiderMonkey. А она - &lt;a href="http://ftp.mozilla.org/pub/mozilla.org/js/js-1.7.0.tar.gz"&gt;тут&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Компилировать так:&lt;br /&gt;&lt;pre&gt;make BUILD_OPT=1 -f Makefile.ref &amp;&amp; cp *.{h,tbl} /usr/include/ &amp;&amp; cd Linux_All_OPT.OBJ &amp;&amp; cp *.h /usr/include/ &amp;&amp; mkdir -p /usr/{bin,lib}/ &amp;&amp; cp js /usr/bin/ &amp;&amp; cp libjs.so /usr/lib/&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://couchdb.apache.org/downloads.html"&gt;CouchDB&lt;/a&gt; компилируется как обычно&lt;br /&gt;&lt;pre&gt;./configure&lt;br /&gt;make&lt;br /&gt;make install&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-6035306605408663338?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/6035306605408663338/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=6035306605408663338' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/6035306605408663338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/6035306605408663338'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2010/08/cenoos-5-couchdb-101.html' title='CenoOS 5 + CouchDB 1.0.1. Как скомпилировать.'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-5719867566061034397</id><published>2010-08-10T18:13:00.000+04:00</published><updated>2010-08-10T18:13:18.444+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cherokee'/><category scheme='http://www.blogger.com/atom/ns#' term='success'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='uwsgi'/><title type='text'>Ура! Удалось на Centos 5 запустить cherokee + uwsgi</title><content type='html'>Наконец то получилось запустить это связку под Centos 5 (2.6.27.41-170.2.117.fc10.i686.PAE). &lt;br /&gt;&lt;br /&gt;Версии:&lt;br /&gt;&lt;ul&gt; &lt;li&gt;Cherokee: 1.0.8&lt;/li&gt; &lt;li&gt;uwsgi:  uWSGI 0.9.6-dev (скомпилировано под Python 2.6)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Все скомпилировано из свежих репозиториев. Ранее у меня не получалось настроить чероки - визард не находил uwsgi. Сейчас в новой версии - все супер!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-5719867566061034397?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/5719867566061034397/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=5719867566061034397' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/5719867566061034397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/5719867566061034397'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2010/08/centos-5-cherokee-uwsgi.html' title='Ура! Удалось на Centos 5 запустить cherokee + uwsgi'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-8338670016792100080</id><published>2010-08-10T11:59:00.000+04:00</published><updated>2010-08-10T11:59:18.471+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='comments'/><category scheme='http://www.blogger.com/atom/ns#' term='url'/><category scheme='http://www.blogger.com/atom/ns#' term='русский'/><category scheme='http://www.blogger.com/atom/ns#' term='facebook'/><category scheme='http://www.blogger.com/atom/ns#' term='xid'/><category scheme='http://www.blogger.com/atom/ns#' term='чпу'/><title type='text'>FaceBook. fb:comments и страницы с русскими УРЛами.</title><content type='html'>Столкнулся с добавлением на сайт комментариев через API Facebook`а. В результате - пришлось прикрутить их javascript-API код. &lt;br /&gt;&lt;br /&gt;Но получилась большая проблема - на страницах с русским УРЛом комментирование не работало. После нажатия на кнопку "Отправить" вылезало сообщение "Temporary error". Случайно обнаружил, что на страницах с английским УРЛом все работает. Стал копать описание. И смотреть, что отрисовывает API. И заметил, что в скрытом инпуте "xid" - мой русский урл! Ага! Почитав документацию понял, что это - уникальный ID страницы.&lt;br /&gt;&lt;br /&gt;Так что решение простое - в fb:comments добавить xid="[тут_английский_id]". На моем примере - id получился article_134.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-8338670016792100080?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/8338670016792100080/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=8338670016792100080' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/8338670016792100080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/8338670016792100080'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2010/08/facebook-fbcomments.html' title='FaceBook. fb:comments и страницы с русскими УРЛами.'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-6652717988588250550</id><published>2010-08-03T11:48:00.001+04:00</published><updated>2010-08-03T11:49:45.771+04: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='compiz'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='desktop'/><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='ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='10.04'/><title type='text'>Ubuntu 10.04 Восстановление оконного менеджера и иконок на рабочем столе</title><content type='html'>Вчера "прошел квест" - восстанавливал оконный менеджер и иконки на десктопе. Так как в результате удаления какого-то софта, что то важное отвалилось. И я остался без десктопа - не было ни иконок, ни меню по правой кнопке. И у окон пропало оформление - рамка и кнопки с заголовком.&lt;br /&gt;&lt;br /&gt;Как оказалось, оконный менеджер в последних версиях - это compiz. А декстоп - это наутилус, просто загруженный в стартапе.&lt;br /&gt;&lt;br /&gt;Решение - добавить в "запускаемые программы" compiz и nautilus. Я думаю, что при первой инсталяции они прописаны где-то еще на запуск. Но и такой способ - вполне оправдан.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-6652717988588250550?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/6652717988588250550/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=6652717988588250550' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/6652717988588250550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/6652717988588250550'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2010/08/ubuntu-1004.html' title='Ubuntu 10.04 Восстановление оконного менеджера и иконок на рабочем столе'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-7367035909596191548</id><published>2010-07-09T17:17:00.002+04:00</published><updated>2010-07-09T17:17:59.705+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='crop'/><category scheme='http://www.blogger.com/atom/ns#' term='image'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><category scheme='http://www.blogger.com/atom/ns#' term='resize'/><category scheme='http://www.blogger.com/atom/ns#' term='asp'/><title type='text'>dot.Net c# - Подрезка и изменение размера изображения.</title><content type='html'>&lt;pre&gt;System.Drawing.Image image = System.Drawing.Image.FromFile(src);  &lt;br /&gt;int srcWidth=image.Width;&lt;br /&gt;int srcHeight=image.Height; &lt;br /&gt;int thumbHeight=(srcHeight/srcWidth)*thumbWidth;&lt;br /&gt;Bitmap bmp = new Bitmap(thumbWidth, thumbHeight);  &lt;br /&gt;&lt;br /&gt;System.Drawing.Graphics gr = System.Drawing.Graphics.FromImage(bmp); &lt;br /&gt;gr.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality  ; &lt;br /&gt;gr.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality; &lt;br /&gt;gr.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High; &lt;br /&gt;&lt;br /&gt;System.Drawing.Rectangle rectDestination = new System.Drawing.Rectangle(0, 0, thumbWidth, thumbHeight);&lt;br /&gt;gr.DrawImage(image, rectDestination, 0, 0, srcWidth, srcHeight, GraphicsUnit.Pixel);  &lt;br /&gt;&lt;br /&gt;bmp.Save(dest); &lt;br /&gt;  &lt;br /&gt;bmp.Dispose();&lt;br /&gt;image.Dispose();&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-7367035909596191548?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/7367035909596191548/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=7367035909596191548' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/7367035909596191548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/7367035909596191548'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2010/07/dotnet-c.html' title='dot.Net c# - Подрезка и изменение размера изображения.'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-3712209039219839989</id><published>2010-06-17T19:45:00.000+04:00</published><updated>2010-06-17T19:45:55.658+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='social'/><category scheme='http://www.blogger.com/atom/ns#' term='url'/><category scheme='http://www.blogger.com/atom/ns#' term='share'/><category scheme='http://www.blogger.com/atom/ns#' term='social net'/><title type='text'>Шаринг ссылки в соцсети</title><content type='html'>Памятка на описание API:&lt;br /&gt;&lt;a href="http://wiki.developers.facebook.com/index.php/Facebook_Share"&gt;http://wiki.developers.facebook.com/index.php/Facebook_Share&lt;/a&gt;&lt;br /&gt;&lt;a href="http://vkontakte.ru/pages.php?act=share"&gt;http://vkontakte.ru/pages.php?act=share&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.tweetmeme.com/2009/04/06/tweetmeme-button/"&gt;http://help.tweetmeme.com/2009/04/06/tweetmeme-button/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-3712209039219839989?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/3712209039219839989/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=3712209039219839989' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/3712209039219839989'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/3712209039219839989'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2010/06/blog-post.html' title='Шаринг ссылки в соцсети'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-2367718541780952563</id><published>2010-04-23T11:09:00.000+04:00</published><updated>2010-04-23T11:09:48.834+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xc0010014'/><category scheme='http://www.blogger.com/atom/ns#' term='managment'/><category scheme='http://www.blogger.com/atom/ns#' term='mssql'/><title type='text'>MSSQL Managment studio - ошибка 0xc0010014 при добавлении нового плана</title><content type='html'>Понадобилось мне добавить новую задачу на MSSQL сервер. Решил воспользоваться графическим редактором студии. Элемент бросается перетаскиванием, но при попытке его редактировать - вылезает ошибка 0xc0010014.&lt;br /&gt;&lt;br /&gt;Нашел лечение:&lt;br /&gt;&lt;pre&gt;%windir%\syswow64\regsvr32 "%ProgramFiles(x86)%\Microsoft SQL Server\90\dts\binn\dts.dll"&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-2367718541780952563?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/2367718541780952563/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=2367718541780952563' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/2367718541780952563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/2367718541780952563'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2010/04/mssql-managment-studio-0xc0010014.html' title='MSSQL Managment studio - ошибка 0xc0010014 при добавлении нового плана'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-1328368685544453110</id><published>2010-04-14T13:23:00.000+04:00</published><updated>2010-04-14T13:23:07.223+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='win32'/><category scheme='http://www.blogger.com/atom/ns#' term='nginx'/><category scheme='http://www.blogger.com/atom/ns#' term='iis6'/><title type='text'>IIS6+ nginx на одной машине</title><content type='html'>В связи с хайлоадом (перегрузкой) сервера с IIS6, решил посмотреть, что будет, если закрыть iis nginx`ом. И статичные файлы отдавать тоже nginx`ом. Однако что то не срослось - и iis не сбавил темпов загрузки процессора. Nginx вообще его не кушал.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-1328368685544453110?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/1328368685544453110/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=1328368685544453110' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/1328368685544453110'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/1328368685544453110'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2010/04/iis6-nginx.html' title='IIS6+ nginx на одной машине'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-1639171458796187170</id><published>2010-04-02T12:19:00.000+04:00</published><updated>2010-04-02T12:19:41.680+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='service'/><category scheme='http://www.blogger.com/atom/ns#' term='win32'/><category scheme='http://www.blogger.com/atom/ns#' term='nginx'/><category scheme='http://www.blogger.com/atom/ns#' term='cygrunsrv'/><title type='text'>nginx под win32 как сервис</title><content type='html'>Nginx - штука гордая. Особенно под windows. Запускать нужно через start, чтоб отдельный процесс запустился. Озадачился запускать nginx как сервис. Проще всего через утилитку cygrunsrv.exe. &lt;br /&gt;&lt;br /&gt;Тут тоже свои шаманства:&lt;br /&gt;&lt;pre&gt;cygrunsrv.exe --install nginx -p c:\nginx\nginx.exe --neverexits -a "-p c:\nginx"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Ключ --neverexits нужен, т.к. nginx "форкается" (порождает отдельный процесс).&lt;br /&gt;Ключ -a нужен что бы передать путь, где находится сам nginx. Иначе не найдет куда писать логи.&lt;br /&gt;&lt;br /&gt;А вот прикрутить ротацию логов пока не получилось, ругается, что не может найти какой-то файл (смутно думаю, что пид-файл)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;reload_logs.bat&lt;/b&gt;:&lt;br /&gt;&lt;pre&gt;cd c:\nginx\logs\&lt;br /&gt;ren access.log access-%DATE%.log&lt;br /&gt;ren error.log error-%DATE%.log&lt;br /&gt;cd ..&lt;br /&gt;nginx -s reopen&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-1639171458796187170?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/1639171458796187170/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=1639171458796187170' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/1639171458796187170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/1639171458796187170'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2010/04/nginx-win32.html' title='nginx под win32 как сервис'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-8044033661809129606</id><published>2010-03-11T19:35:00.001+03:00</published><updated>2010-03-11T19:36:59.790+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='комментарий'/><category scheme='http://www.blogger.com/atom/ns#' term='xsl'/><category scheme='http://www.blogger.com/atom/ns#' term='html'/><title type='text'>XSL - ужас!</title><content type='html'>XSL - шаблоны. Вроде удобно, понятно. Циклы, проверки, подгрузка шаблонов. Но... как сделать обычный HTML-комментарий? Шаблонизатор съедает его!&lt;br /&gt;&lt;br /&gt;Оказалось нужно &lt;br /&gt;&lt;pre&gt;&amp;#60;!-- я коммент --&amp;#62;&lt;br /&gt;&lt;/pre&gt;мутировать в ужас:&lt;br /&gt;&lt;pre&gt;&amp;#60;xsl:text disable-output-escaping="yes"&amp;#62;&amp;amp;#60;!-- я коммент --&amp;amp;#62;&amp;#60;/xsl:text&amp;#62;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Омг! И скрипты... тоже... нужно мутировать...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-8044033661809129606?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/8044033661809129606/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=8044033661809129606' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/8044033661809129606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/8044033661809129606'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2010/03/xsl.html' title='XSL - ужас!'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-6350700366930136233</id><published>2010-03-03T13:58:00.001+03:00</published><updated>2011-01-21T14:40:01.016+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python 2.6'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='centos 5'/><title type='text'>Python 2.6 в CentOS5</title><content type='html'>Подсмотрено &lt;a href="http://phpsuxx.blogspot.com/2009/11/python-264-centos-54.html"&gt;тут&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;wget http://python.org/ftp/python/2.6.4/Python-2.6.4.tar.bz2&lt;br /&gt;&lt;br /&gt;tar -xjf Python-2.6.4.tar.bz2&lt;br /&gt;&lt;br /&gt;cd Python-2.6.4&lt;br /&gt;&lt;br /&gt;yum install -y gcc make zlib-devel bzip2-devel openssl-devel readline-devel sqlite-devel gdbm-devel ncurses-devel&lt;br /&gt;&lt;br /&gt;./configure --prefix=/opt/python26 --with-zlib=/usr/include&lt;br /&gt;&lt;br /&gt;make&lt;br /&gt;&lt;br /&gt;make install&lt;br /&gt;&lt;br /&gt;ln -s /opt/python26/bin/python2.6 /usr/bin/python2.6&lt;br /&gt;&lt;br /&gt;python2.6 -V&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Теперь 2.6 версия вызывается через python2.6&lt;br /&gt;&lt;br /&gt;Установка easy_install:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;wget http://pypi.python.org/packages/2.6/s/setuptools/setuptools-0.6c11-py2.6.egg#md5=bfa92100bd772d5a213eedd356d64086&lt;br /&gt;&lt;br /&gt;sh setuptools-0.6c11-py2.6.egg&lt;br /&gt;&lt;br /&gt;ln -s /opt/python26/bin/easy_install-2.6 /usr/bin/easy_install-2.6&lt;br /&gt;&lt;br /&gt;easy_install-2.6 --help&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Соответственно вызывать через easy_install-2.6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-6350700366930136233?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/6350700366930136233/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=6350700366930136233' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/6350700366930136233'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/6350700366930136233'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2010/03/python-26-centos5.html' title='Python 2.6 в CentOS5'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-1182440652247538467</id><published>2010-03-03T12:23:00.001+03:00</published><updated>2010-03-03T12:24:23.686+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pyodbc'/><category scheme='http://www.blogger.com/atom/ns#' term='freetds'/><category scheme='http://www.blogger.com/atom/ns#' term='unicode'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='centos 5'/><title type='text'>Настройка работы с MSSQL с линукса (CentOS 5)</title><content type='html'>Столкнулся с написанием скриптов для работы на линукс-сервере с MsSQL-базой на питоне. Основная проблема - сообщение типа&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;pyodbc.ProgrammingError: ('42000', '[42000] [FreeTDS][SQL Server]Unicode data in a Unicode-only collation or ntext data cannot be sent to clients using DB-Library (such as ISQL) or ODBC version 3.7 or earlier. (4004) (SQLExecDirectW)')&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Как же так? Просто нужно настроить использование правильной версии драйвера.&lt;br /&gt;&lt;br /&gt;Итак. Первое - запись о драйвере в /etc/odbcinst.ini&lt;br /&gt;&lt;pre&gt;[FreeTDS]&lt;br /&gt;Description=TDS driver&lt;br /&gt;Driver=/usr/lib/libtdsodbc.so&lt;br /&gt;Setup=/usr/lib/libtdsS.so&lt;br /&gt;FileUsage=1&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Второе - добавить запись о сервере в /etc/freetds.conf&lt;br /&gt;&lt;pre&gt;[myServer]&lt;br /&gt;    host=192.168.0.2&lt;br /&gt;    port=1433&lt;br /&gt;    tds version=8.0&lt;br /&gt;&lt;/pre&gt;Особенно прошу учесть "табы" перед параметрами! У меня без них запись не срабатывала!&lt;br /&gt;&lt;br /&gt;Третье - добавить DSN-запись в /etc/odbc.ini&lt;br /&gt;&lt;pre&gt;[myDNS]&lt;br /&gt;Description=my dsn&lt;br /&gt;Driver=FreeTDS&lt;br /&gt;Database=my_db&lt;br /&gt;Servername=myServer&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Теперь код для работы с бд выглядит так:&lt;br /&gt;&lt;pre&gt;import pyodbc&lt;br /&gt;conn = pyodbc.connect("dsn=myDSN;UID=%s;PWD=%s;" % ('sa','pass'))&lt;br /&gt;cursor=conn.cursor()&lt;br /&gt;cursor.execute("select 'test' as x;")&lt;br /&gt;row=cursor.fetchone()&lt;br /&gt;if row:&lt;br /&gt;    print row&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Успехов!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-1182440652247538467?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/1182440652247538467/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=1182440652247538467' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/1182440652247538467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/1182440652247538467'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2010/03/mssql-centos-5.html' title='Настройка работы с MSSQL с линукса (CentOS 5)'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-8908956615104022483</id><published>2010-02-18T16:47:00.001+03:00</published><updated>2010-02-26T12:49:35.691+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='map'/><category scheme='http://www.blogger.com/atom/ns#' term='CouchDB'/><category scheme='http://www.blogger.com/atom/ns#' term='emit'/><title type='text'>CouchDB | Тонкости map-функции</title><content type='html'>Никогда не пишите в map-функции &lt;br /&gt;&lt;pre&gt;emit(doc._id, doc);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;т.к. при вызове view на жестком диске создается индекс-файл, который будет содержать значения doc._id и doc! &lt;br /&gt;&lt;br /&gt;UPDADE: doc - т.е. будут все поля документа.&lt;br /&gt;&lt;br /&gt;Возвращайте только новые, просчитанные данные. Ибо есть ключик include_docs=true, при наличии которого БД отдаст кроме того, что в emit ещё и сами документы!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-8908956615104022483?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/8908956615104022483/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=8908956615104022483' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/8908956615104022483'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/8908956615104022483'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2010/02/couchdb-map.html' title='CouchDB | Тонкости map-функции'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-6344856801143314624</id><published>2010-02-03T14:41:00.000+03:00</published><updated>2010-02-03T14:41:18.738+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='скрипт'/><category scheme='http://www.blogger.com/atom/ns#' term='CouchDB'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><category scheme='http://www.blogger.com/atom/ns#' term='keep alive'/><title type='text'>CouchDB | Простенький скрипт для keep-alive</title><content type='html'>CouchDB запускается как фоновый процесс. Но он не умеет подниматься в случае ошибки.&lt;br /&gt;Вот пример простого скрипта, который через curl проверяет - активен ли процесс и если нет - перезапускает его:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;#!/bin/bash&lt;br /&gt;&lt;br /&gt;echo "Checking, is CouchDB is alive..."&lt;br /&gt;#замените адрес на свой!&lt;br /&gt;ANSWER=$(curl http://192.168.0.5:5984 -s)&lt;br /&gt;&lt;br /&gt;if test $ANSWER&lt;br /&gt;then&lt;br /&gt;    echo "CouchDB is alive!"&lt;br /&gt;else&lt;br /&gt;    echo "Trying to restart..."&lt;br /&gt;&lt;br /&gt;    /etc/init.d/couchdb restart&lt;br /&gt;fi&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Скрипт можно усложнить - например, после рестарта проверить - запустился ли. Если нет - отсылать письмо админу :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-6344856801143314624?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/6344856801143314624/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=6344856801143314624' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/6344856801143314624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/6344856801143314624'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2010/02/couchdb-keep-alive.html' title='CouchDB | Простенький скрипт для keep-alive'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-5787922661647285327</id><published>2010-01-26T13:22:00.003+03:00</published><updated>2010-01-26T13:43:40.113+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='migrate'/><category scheme='http://www.blogger.com/atom/ns#' term='copy'/><category scheme='http://www.blogger.com/atom/ns#' term='mssql'/><category scheme='http://www.blogger.com/atom/ns#' term='table'/><category scheme='http://www.blogger.com/atom/ns#' term='psql'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><category scheme='http://www.blogger.com/atom/ns#' term='psycopg2'/><title type='text'>Python + Psycopg2 + Win32 | Ошибка при большом кол-ве подключений к БД</title><content type='html'>Написав простецкий скрипт на питоне для копирования данных таблицы с MSSQL в PostgreSQL (+ конвертация некоторых полей) напоролся на ошибку - "psycopg.OperationalError, could not connect to server: Address already in use". Запускал скрипт я на Win32, Python2.6, Psycopg2 2.0.13. Долго ковырял гугль. Нашлась &lt;a href="http://lists.initd.org/pipermail/psycopg/2006-January/004421.html" target="_blank"&gt;тема&lt;/a&gt;. И хотя она оказалась решенной ещё в 2006 году - я эту ошибку всё равно получал. Да, библиотека у меня судя по её номеру - намного "новее"...&lt;br /&gt;&lt;br /&gt;Помучав мозг и посмотрев на код работы с psql, я увидел, что для вставки каждой строки данных я каждый раз открываю и закрываю соединение... Вот оно! А что, если открыть соединение 1 раз и кидать инсерты? Да, так и быстрее и не получаю ошибку! (вот в фоне уже 80К строк обработано, только нужно учесть, что я соединился с pgBouncer).&lt;br /&gt;&lt;br /&gt;Ну или можно вставить time.sleep(3*60) после каждых 2К строк...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-5787922661647285327?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/5787922661647285327/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=5787922661647285327' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/5787922661647285327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/5787922661647285327'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2010/01/python-psycorg2-win32.html' title='Python + Psycopg2 + Win32 | Ошибка при большом кол-ве подключений к БД'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-7355441417735717671</id><published>2010-01-21T11:53:00.001+03:00</published><updated>2010-01-21T11:53:08.575+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='laser'/><category scheme='http://www.blogger.com/atom/ns#' term='dpi'/><category scheme='http://www.blogger.com/atom/ns#' term='mouse'/><category scheme='http://www.blogger.com/atom/ns#' term='switch'/><category scheme='http://www.blogger.com/atom/ns#' term='sensitivity'/><category scheme='http://www.blogger.com/atom/ns#' term='genius'/><title type='text'>Genius NetScroll 220 Laser | Мышь. Понижение чувствительности.</title><content type='html'>OMG! Все мучался - мышь ЛЕТАЕТ! Оказалось есть переключение dpi (влияет на  чувствительность). Знаете как? ХАХА! Нажатием лк+пк+колеса!&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/6223781663727322959-7355441417735717671?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/7355441417735717671/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=7355441417735717671' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/7355441417735717671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/7355441417735717671'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2010/01/genius-netscroll-220-laser.html' title='Genius NetScroll 220 Laser | Мышь. Понижение чувствительности.'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-4623655655435969430</id><published>2010-01-21T10:36:00.000+03:00</published><updated>2010-01-21T10:36:13.907+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='подлость'/><category scheme='http://www.blogger.com/atom/ns#' term='sqlcmd'/><category scheme='http://www.blogger.com/atom/ns#' term='mssql'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><title type='text'>MSSQL | Подлость. Никогда не доверяйте!</title><content type='html'>Был обычный день. Настал момент в базе данных у одной таблицы сменить тип с &lt;b&gt;text&lt;/b&gt; на &lt;b&gt;ntext&lt;/b&gt;. А таблица на &lt;i&gt;500к&lt;/i&gt; строк. И важная - жуть! Ок, Sql managment studio создала скрипт. Интересно, но скрипт создавал временную таблицу, копировал в неё оригинальную, потом дропал оригинальную и переименовывал временную в название оригинала. Вроде - все нормально, все обернуто транзакциями. &lt;br /&gt;&lt;br /&gt;Да вот только обернуто то не все вместе, а каждая команда по отдельности! Ну в результате - сначала мешали внешние ключи. А потом просто - оригинальная таблица дропнулась и временной не видно!? ВСЁ! &lt;br /&gt;&lt;br /&gt;П&lt;b&gt;рощайте данные!&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Да, есть бекап. Ночной. Общий на &lt;b&gt;50Г&lt;/b&gt;иг. Шутки в сторону. Микрософт не научил студию восстанавливать таблицы по одной. Финиш. А точнее - пипец!&lt;br /&gt;&lt;br /&gt;Но я умный. У меня есть машина-дублер. Правда она - на постгресе!&lt;br /&gt;&lt;br /&gt;В общем поимел я секса с &lt;b&gt;sqlcmd&lt;/b&gt; и конвертированием ~300Мегового бекапа в стиле INSERT INTO TABLE. Хорошо что была линукс-машина и хвала vim! Особенно его комманде глобальной замены &lt;b&gt;%s/что_искать/на_что_менять/gn&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Для интереса - sqlcmd работает по стандарту. Т.е. каждая команда должна завершаться &lt;strike&gt;пинком&lt;/strike&gt; командой GO. Но кроме того из-за огромного размера - каждый инсерт пришлось обернуть в транзакцию. &lt;br /&gt;&lt;br /&gt;Типа:&lt;br /&gt;&lt;pre&gt;begin tran;&lt;br /&gt;insert into ...;&lt;br /&gt;commit tran;&lt;br /&gt;go&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Ну и конечно же вызов sqlcmd с флагом кодировки -f 65001 (это utf-8).&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/6223781663727322959-4623655655435969430?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/4623655655435969430/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=4623655655435969430' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/4623655655435969430'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/4623655655435969430'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2010/01/mssql.html' title='MSSQL | Подлость. Никогда не доверяйте!'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-4240719038984708883</id><published>2009-12-17T11:41:00.000+03:00</published><updated>2009-12-17T11:41:19.188+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='bug'/><category scheme='http://www.blogger.com/atom/ns#' term='sqlalchemy'/><category scheme='http://www.blogger.com/atom/ns#' term='mssql'/><category scheme='http://www.blogger.com/atom/ns#' term='fix'/><title type='text'>SQLAlchemy + MSSQL + Stored Procedure | Решение проблемы получения данных из хранимых процедур</title><content type='html'>Нашел решение. Нужно в скрипте хранимки вставить &lt;pre&gt;set nocount on;&lt;/pre&gt;Тогда данные получаются нормально.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-4240719038984708883?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/4240719038984708883/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=4240719038984708883' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/4240719038984708883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/4240719038984708883'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2009/12/sqlalchemy-mssql-stored-procedure.html' title='SQLAlchemy + MSSQL + Stored Procedure | Решение проблемы получения данных из хранимых процедур'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-2121007190551779543</id><published>2009-12-04T16:53:00.001+03:00</published><updated>2009-12-04T16:58:31.141+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jinja2'/><category scheme='http://www.blogger.com/atom/ns#' term='werkzeug'/><category scheme='http://www.blogger.com/atom/ns#' term='memcached'/><category scheme='http://www.blogger.com/atom/ns#' term='memcache'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='sqlalchemy'/><category scheme='http://www.blogger.com/atom/ns#' term='jinja'/><title type='text'>Werkzeug + SQLAlchemy + Jinja2 + Memcached = Маст трай</title><content type='html'>Да, да, да! Дошли таки руки! Django отложен в темный ящик, так как мне нужна бОльшая гибкость. Да и админка не нужна совсем в том проекте, который делаю (секрет :-).&lt;br /&gt;&lt;br /&gt;Хорошо, что перед встречей с werkzeug я поковырялся с GAE Python (сделал нечто вроде блога). Это помогло мне сделать этакий фреймворк для обработки запросов.&lt;br /&gt;К примеру сделал свой базовый класс Controller. Это объект с response и request классами внутри. &lt;br /&gt;&lt;br /&gt;Куски класса:&lt;br /&gt;&lt;pre&gt;class Controller():&lt;br /&gt;    def __init__(self, request):&lt;br /&gt;    def get(self): #вызывается при get-запросе&lt;br /&gt;    def post(self): #вызывается при post-запросе&lt;br /&gt;    def render_template(self, template, **context): #так вызывается шаблонизатор&lt;br /&gt;    def preprocess(self): # дергается в конце инициализации. сюда можно навесить декоратор для проверки прав доступа&lt;br /&gt;&lt;/pre&gt;Кроме того, Controller при каждой инициализации создает в себе объект self.current_user - думаю понятно что это :-)&lt;br /&gt;&lt;br /&gt;Еще очень обрадовал шаблонизатор:&lt;br /&gt;- он кэширует шаблоны! (т.е. хранит их в своем пре-компилед виде).&lt;br /&gt;- макросы (можно загружать из файла)&lt;br /&gt;&lt;br /&gt;Отдельно помучался с апачем + wsgi. Но как обычно - документация спасает.&lt;br /&gt;&lt;br /&gt;П.С.: просто надоел зависающий IIS6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-2121007190551779543?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/2121007190551779543/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=2121007190551779543' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/2121007190551779543'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/2121007190551779543'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2009/12/werkzeug-sqlalchemy-jinja2-memcached.html' title='Werkzeug + SQLAlchemy + Jinja2 + Memcached = Маст трай'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-5990185496384604288</id><published>2009-11-08T19:36:00.006+03:00</published><updated>2009-11-09T19:40:47.344+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cherokee'/><category scheme='http://www.blogger.com/atom/ns#' term='wsgi. конфигурация'/><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='uwsgi'/><category scheme='http://www.blogger.com/atom/ns#' term='настройка'/><title type='text'>Cherokee + uWSGI + Django How-To</title><content type='html'>Навеяно:&lt;br /&gt;&lt;a href="http://habrahabr.ru/blogs/python/67475/"&gt;http://habrahabr.ru/blogs/python/67475/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://m.habrahabr.ru/post/70531/"&gt;http://m.habrahabr.ru/post/70531/&lt;/a&gt;&lt;br /&gt;---&lt;br /&gt;&lt;br /&gt;Решил тут я попробывать веб-сервер cherokee для django-сайта. Обычно используется flup-прослойка, а я хотел задействовать &lt;a href="http://projects.unbit.it/uwsgi/"&gt;uwsgi&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Что я сделал (опишу успешные шаги):&lt;br /&gt;1. создал новый django-проект&lt;br /&gt;2. создал новый app "dummy" с простым выводом:&lt;br /&gt;&lt;pre&gt;def index(request):&lt;br /&gt;    return HttpResponse('hello from django!')&lt;br /&gt;&lt;/pre&gt;3. установил cherokee последнюю версию из svn (на сайте чероки &lt;a href="http://www.cherokee-project.com/doc/basics_installation_svn.html"&gt;описано как это сделать&lt;/a&gt;), т.к. в текущей 0.99.19 нет визарда для настройки uWSGI...&lt;br /&gt;4. сайты у меня находятся в каталоге /var/www-cherokee (владелец www-data)&lt;br /&gt;5. в каталог django1 я скопировал свой проект.&lt;br /&gt;6. в /var/www-cherokee нужно поместить uwsgi.xml - это конфигурационный файл для запуска джанго-сайта. содержание моего:&lt;br /&gt;&lt;pre&gt;&amp;lt;uwsgi&amp;gt;&lt;br /&gt;    &amp;lt;pythonpath&amp;gt;/var/www-cherokee/&amp;lt;/pythonpath&amp;gt;&lt;br /&gt;    &amp;lt;pythonpath&amp;gt;/var/www-cherokee/django1&amp;lt;/pythonpath&amp;gt;&lt;br /&gt;    &amp;lt;app mountpoint="/"&amp;gt;&lt;br /&gt;        &amp;lt;script&amp;gt;/django1/django_wsgi&amp;lt;/script&amp;gt;&lt;br /&gt;    &amp;lt;/app&amp;gt;&lt;br /&gt;&amp;lt;/uwsgi&amp;gt;&lt;br /&gt;&lt;/pre&gt;обратите внимание на пути в pythonpath - без них работать не будет.&lt;br /&gt;7. в /var/www-cherokee/django1 помещаем скрипт для вызова джанго (django_wsgi):&lt;br /&gt;&lt;pre&gt;#some code for run on cherokee web server&lt;br /&gt;&lt;br /&gt;import os&lt;br /&gt;import django.core.handlers.wsgi&lt;br /&gt;os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'&lt;br /&gt;application = django.core.handlers.wsgi.WSGIHandler()&lt;br /&gt;&lt;/pre&gt;8. в настройках cherokee (в которые легко попасть через sudo cherokee-admin -u и потом в браузере http://localhost:9090) нужно в разделе "Virtual Server: default" вызвать "wizards"-&gt;platforms -&gt;uWSGI -&gt;run wizard.&lt;br /&gt;так же в параметре "Interpreter" проверьте путь до конфига uwsgi.xml (у меня строка выглядит так: /usr/bin/uwsgi -s /tmp/cherokee-source11.sock -C -x /var/www-cherokee/uwsgi.xml )&lt;br /&gt;&lt;br /&gt;В принципе - все. Перезапустил сервер и в браузере увидел "hello..."&lt;br /&gt;&lt;br /&gt;П.С.: о сломанных копьях в процессе конфигурации я умолчу. если что - я настраивал по &lt;a href="http://yml-blog.blogspot.com/2009/11/how-to-set-up-cherokee-and-uwsgi.html"&gt;этому&lt;/a&gt; посту.&lt;br /&gt;П.П.С: если что то не работает (я сначала получал только "uwsgi error" в браузере) - попробуйте запустить в окне терминала строчку из настройки интерпретатора (/usr/bin/uwsgi -s /tmp/cherokee-source11.sock -C -x /var/www-cherokee/uwsgi.xml) и не закрывая его обновить страницу в браузере. потом в терминале можно увидеть ошибки (я так нашел неправильно указанный путь)... ВНИМАНИЕ! после запуска интерпретатора в ручную нужно удалять файл /tmp/cherokee-source11.sock (в моем случае)!&lt;br /&gt;&lt;br /&gt;---&lt;br /&gt;тесты: &lt;br /&gt;1. flup&lt;br /&gt;2. uWSGI&lt;br /&gt;&lt;br /&gt;= 1 =============&lt;br /&gt;Document Length:        18 bytes&lt;br /&gt;&lt;br /&gt;Concurrency Level:      10&lt;br /&gt;Time taken for tests:   102.068 seconds&lt;br /&gt;Complete requests:      10000&lt;br /&gt;Failed requests:        0&lt;br /&gt;Write errors:           0&lt;br /&gt;Total transferred:      1660166 bytes&lt;br /&gt;HTML transferred:       180018 bytes&lt;br /&gt;Requests per second:    97.97 [#/sec] (mean)&lt;br /&gt;Time per request:       102.068 [ms] (mean)&lt;br /&gt;Time per request:       10.207 [ms] (mean, across all concurrent requests)&lt;br /&gt;Transfer rate:          15.88 [Kbytes/sec] received&lt;br /&gt;&lt;br /&gt;Connection Times (ms)&lt;br /&gt;min  mean[+/-sd] median   max&lt;br /&gt;Connect:        0    1   1.8      0      39&lt;br /&gt;Processing:     3  101 241.3     39    3777&lt;br /&gt;Waiting:        0   98 236.6     38    3777&lt;br /&gt;Total:          3  102 241.3     40    3778&lt;br /&gt;&lt;br /&gt;Percentage of the requests served within a certain time (ms)&lt;br /&gt;50%     40&lt;br /&gt;66%     56&lt;br /&gt;75%     69&lt;br /&gt;80%     79&lt;br /&gt;90%    171&lt;br /&gt;95%    292&lt;br /&gt;98%   1125&lt;br /&gt;99%   1226&lt;br /&gt;100%   3778 (longest request)&lt;br /&gt;&lt;br /&gt;= 2 =============&lt;br /&gt;Document Length:        18 bytes&lt;br /&gt;&lt;br /&gt;Concurrency Level:      10&lt;br /&gt;Time taken for tests:   20.044 seconds&lt;br /&gt;Complete requests:      10000&lt;br /&gt;Failed requests:        0&lt;br /&gt;Write errors:           0&lt;br /&gt;Total transferred:      1660000 bytes&lt;br /&gt;HTML transferred:       180000 bytes&lt;br /&gt;Requests per second:    498.90 [#/sec] (mean)&lt;br /&gt;Time per request:       20.044 [ms] (mean)&lt;br /&gt;Time per request:       2.004 [ms] (mean, across all concurrent requests)&lt;br /&gt;Transfer rate:          80.88 [Kbytes/sec] received&lt;br /&gt;&lt;br /&gt;Connection Times (ms)&lt;br /&gt;min  mean[+/-sd] median   max&lt;br /&gt;Connect:        0    0   0.4      0       4&lt;br /&gt;Processing:     3   19   5.4     19      46&lt;br /&gt;Waiting:        3   19   5.3     19      46&lt;br /&gt;Total:          5   20   5.3     19      47&lt;br /&gt;&lt;br /&gt;Percentage of the requests served within a certain time (ms)&lt;br /&gt;50%     19&lt;br /&gt;66%     20&lt;br /&gt;75%     22&lt;br /&gt;80%     23&lt;br /&gt;90%     27&lt;br /&gt;95%     30&lt;br /&gt;98%     34&lt;br /&gt;99%     38&lt;br /&gt;100%     47 (longest request)&lt;br /&gt;&lt;br /&gt;= результат ======================&lt;br /&gt;flup/uWSGI&lt;br /&gt;Requests per second: 1 к 5&lt;br /&gt;Transfer rate: 1 к 5&lt;br /&gt;&lt;br /&gt;В основном 1 к 5!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-5990185496384604288?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/5990185496384604288/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=5990185496384604288' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/5990185496384604288'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/5990185496384604288'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2009/11/cherokee-uwsgi-django-how-to.html' title='Cherokee + uWSGI + Django How-To'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-1618384674486533149</id><published>2009-11-06T15:10:00.005+03:00</published><updated>2009-11-06T15:20:40.217+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='domain'/><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='google app engine'/><category scheme='http://www.blogger.com/atom/ns#' term='gae'/><title type='text'>GAE | Свой домен</title><content type='html'>На текущий момент можно сделать только:&lt;br /&gt;&lt;pre&gt;www.ваш_домен.все&lt;/pre&gt;&lt;br /&gt;Раньше можно было добавить в ДНС-записи А-запись с адресами гугла, но теперь так не сработает. Решение только одно - нужно где-то разместить сайт для домена 2ого уровня и сделать на нем редирект на www.домен. Я пока не искал как проще и за сколько такое сделать - у меня есть где повесить сайт-редирект. Еще вариант - можно купить домен у самого гугла (я не проверял). Или воспользоваться Web-forwarding (у ру-центра он есть).&lt;br /&gt;&lt;br /&gt;Я столкнулся с обычной настройкой "своего домена" на app в GAE. Ру-центр. Самое важное - нужно зарегистрироваться в службах Google, так как это единственная возможность привязать свой домен к GAE приложению (я по глупости пытался как "частное лицо" найти решение).&lt;br /&gt;Далее - нужна услуга ДНС-мастер secondary. &lt;br /&gt;&lt;br /&gt;Далее всё по гуглу. В службах Google нужно выполнить "подтверждение владением домена". И добавить в ДНС записи:&lt;br /&gt;&lt;pre&gt;google_ваша_строка_даст_гугл СNAME google.com.&lt;br /&gt;www CNAME ghs.google.com.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;И учтите, что домен должен быть делегирован. Я по малоопытности прождал 2 дня. Потом погуляв по личному кабинету настройки доменов увидел, что нужный мне домен не делегирован...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-1618384674486533149?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/1618384674486533149/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=1618384674486533149' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/1618384674486533149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/1618384674486533149'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2009/11/gae.html' title='GAE | Свой домен'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-4263699627139051596</id><published>2009-10-28T16:44:00.001+03:00</published><updated>2009-10-28T16:45:47.100+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='custom'/><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='filter'/><category scheme='http://www.blogger.com/atom/ns#' term='template'/><category scheme='http://www.blogger.com/atom/ns#' term='how to'/><category scheme='http://www.blogger.com/atom/ns#' term='google app engine'/><category scheme='http://www.blogger.com/atom/ns#' term='gae'/><title type='text'>DJANGO | Шаблоны | Свой фильтр в условиях GAE</title><content type='html'>О`кей. Расскажу как сделать свой фильтр для Django 0.96 (для работы в Google App Engine). Конечно на питоне!&lt;br /&gt;&lt;br /&gt;1. в корне проекта создаем файл 'django_template_custom_filters.py':&lt;br /&gt;&lt;pre&gt;# coding: utf-8&lt;br /&gt;&lt;br /&gt;from google.appengine.ext import webapp&lt;br /&gt;&lt;br /&gt;register = webapp.template.create_template_register()&lt;br /&gt;&lt;br /&gt;def fctitle(text):&lt;br /&gt;    """&lt;br /&gt;    First char title&lt;br /&gt;    """&lt;br /&gt;    result=''&lt;br /&gt;    if text and len(text)&gt;0:&lt;br /&gt;        result=text[0]&lt;br /&gt;        result=result.title()+text.__getslice__(1,len(text))&lt;br /&gt;        return result&lt;br /&gt;    else:&lt;br /&gt;        return ''&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;register.filter(fctitle)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;2. В нужном контроллере (скрипт, который дергается по урл'у):&lt;br /&gt;&lt;pre&gt;webapp.template.register_template_library('django_template_custom_filters')&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;3. Теперь в шаблоне можно:&lt;br /&gt;&lt;pre&gt;&amp;lt;h1&amp;gt;{{article.title|fctitle}}&amp;lt;/h1&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-4263699627139051596?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/4263699627139051596/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=4263699627139051596' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/4263699627139051596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/4263699627139051596'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2009/10/django-gae.html' title='DJANGO | Шаблоны | Свой фильтр в условиях GAE'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-7065496259016840193</id><published>2009-10-15T16:54:00.000+04:00</published><updated>2009-10-15T16:54:24.220+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='help'/><category scheme='http://www.blogger.com/atom/ns#' term='debug'/><category scheme='http://www.blogger.com/atom/ns#' term='how to'/><category scheme='http://www.blogger.com/atom/ns#' term='debugging'/><category scheme='http://www.blogger.com/atom/ns#' term='just in time'/><category scheme='http://www.blogger.com/atom/ns#' term='fix'/><title type='text'>Just-In-Time debugging. Error. Лечение</title><content type='html'>Нарвался на "секс" - при запуске различных программ вылезало предупреждение, что не установлен дебаггер Just-In-Time. Глупый микрософт предлагал исправить это через настройку в Visual Studio. Но! у меня express edition! OMG! Он этого не умеет!&lt;br /&gt;&lt;br /&gt;Оказалось все просто. Обычно с рождения используется Dr.Watson. Так вот его просто нужно "вернуть"!&lt;br /&gt;&lt;pre&gt;drwtsn32 -i&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-7065496259016840193?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/7065496259016840193/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=7065496259016840193' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/7065496259016840193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/7065496259016840193'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2009/10/just-in-time-debugging-error.html' title='Just-In-Time debugging. Error. Лечение'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-4452485051573258127</id><published>2009-10-09T15:11:00.001+04:00</published><updated>2009-11-17T13:40:24.290+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='install'/><category scheme='http://www.blogger.com/atom/ns#' term='ошибка'/><category scheme='http://www.blogger.com/atom/ns#' term='fresh'/><category scheme='http://www.blogger.com/atom/ns#' term='connect'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><title type='text'>PostgreSQL. Обычные ошибки при новой установке</title><content type='html'>Сегодня начал поднимать сервер на линуксе. Постгрес стоит. Свежий. Но с другой машины - не пускает.&lt;br /&gt;&lt;br /&gt;1. Свежая установка постгреса не имеет пароля для пользователя postgres. Правится так:&lt;br /&gt;&lt;pre&gt;su postgres&lt;br /&gt;psql&lt;br /&gt;alter user postgres with password ‘mypasswd’;&lt;br /&gt;&lt;/pre&gt;2. Внешние коннекты могут быть настроены не правильно. pgAdmin может подсказать:&lt;br /&gt;&lt;pre&gt;#pg_hba.conf&lt;br /&gt;host    all    all    192.168.0.0/24    md5&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-4452485051573258127?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/4452485051573258127/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=4452485051573258127' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/4452485051573258127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/4452485051573258127'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2009/10/postgresql.html' title='PostgreSQL. Обычные ошибки при новой установке'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-4852691480902493424</id><published>2009-09-30T19:08:00.000+04:00</published><updated>2009-09-30T19:08:01.078+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bulkload'/><category scheme='http://www.blogger.com/atom/ns#' term='datetime'/><category scheme='http://www.blogger.com/atom/ns#' term='google app engine'/><category scheme='http://www.blogger.com/atom/ns#' term='gae'/><title type='text'>GAE. Bulkload. Загрузка дампа. Дата-время.</title><content type='html'>Если ваш дамп содержит поле дата-время вида 2000-05-30 23:15:34.943 то закачать можно только с конвертацией, например:&lt;br /&gt;&lt;pre&gt;('When',lambda x: datetime.datetime.strptime(x.split('.')[0], '%Y-%m-%d %H:%M:%S')),&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Причем миллисекунды - отсекаются. Т.к. питон 2.5 их не знает...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-4852691480902493424?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/4852691480902493424/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=4852691480902493424' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/4852691480902493424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/4852691480902493424'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2009/09/gae-bulkload_30.html' title='GAE. Bulkload. Загрузка дампа. Дата-время.'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-1227521086600571440</id><published>2009-09-29T12:05:00.002+04:00</published><updated>2009-09-29T12:05:54.429+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='s06e02'/><category scheme='http://www.blogger.com/atom/ns#' term='epic fail'/><category scheme='http://www.blogger.com/atom/ns#' term='House'/><category scheme='http://www.blogger.com/atom/ns#' term='english'/><title type='text'>Dr. House s06e02 Epic fail [eng]</title><content type='html'>&lt;a href="http://video.yandex.ru/users/fun-vit/view/2/"&gt;House.S06E02.Epic.Fail.REAL.HDTV.XviD-FQM&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-1227521086600571440?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/1227521086600571440/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=1227521086600571440' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/1227521086600571440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/1227521086600571440'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2009/09/dr-house-s06e02-epic-fail-eng.html' title='Dr. House s06e02 Epic fail [eng]'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-2022637404017268500</id><published>2009-09-28T15:32:00.002+04:00</published><updated>2009-09-29T22:23:10.972+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='минусы'/><category scheme='http://www.blogger.com/atom/ns#' term='google app engine'/><title type='text'>GAE. Bulkload. Итог.</title><content type='html'>Жаль, но моё решение (на первый взгляд) - не использовать GAE. &lt;br /&gt;Почему?:&lt;br /&gt;* самое неприятное - ограничение на CPU. &lt;br /&gt;&lt;small&gt;причем его нельзя как-то запланировать и просчитать&lt;/small&gt;&lt;br /&gt;* ограничение на селекты &lt;br /&gt;&lt;small&gt;в принципе - оно может и правильное, но как быть, если я хочу показывать, что у меня есть, например, 5000 объявлений в базе? про шардинг я читал - все это - изврат&lt;/small&gt;&lt;br /&gt;* нет join`ов - не удобно работать (фильтровать) связанные объекты. &lt;br /&gt;&lt;small&gt;можно плодить дополнительные объекты - но ведь это костыли!!!&lt;/small&gt;&lt;br /&gt;* огромное неприятное - нет возможности наблюдать на сервером.&lt;br /&gt;&lt;small&gt;например - когда упадет... когда держишь несколько машин - можно повесить вачдог, чтоб письмо на почту слал... или оптимизация кода...&lt;/small&gt;&lt;br /&gt;* ждать индексации - издевательство&lt;br /&gt;&lt;small&gt;вот залил я дамп, хочу тест сделать - селект с фильтром по полю - фиг вам! нельзя, пока не построится индекс!!!&lt;br /&gt;&lt;/small&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/6223781663727322959-2022637404017268500?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/2022637404017268500/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=2022637404017268500' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/2022637404017268500'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/2022637404017268500'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2009/09/gae-bulkload_2797.html' title='GAE. Bulkload. Итог.'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-6054026966835412450</id><published>2009-09-28T11:43:00.000+04:00</published><updated>2009-09-28T11:43:11.690+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bulkload'/><category scheme='http://www.blogger.com/atom/ns#' term='русский'/><category scheme='http://www.blogger.com/atom/ns#' term='unicode'/><category scheme='http://www.blogger.com/atom/ns#' term='google app engine'/><title type='text'>GAE. Bulkload. Загрузка дампа. Русский язык.</title><content type='html'>Столкнулся с загрузкой дампа, в котором есть строки с русским языком. Загрузчик ругался...&lt;br /&gt;Решение (пример, русский текст в свойстве Name. просто добавляем лямбда-функцию для конвертации)&lt;br /&gt;&lt;pre&gt;class Organization_Shop(db.Model):&lt;br /&gt; Id=db.StringProperty()&lt;br /&gt; Name=db.StringProperty()&lt;br /&gt; Deleted=db.BooleanProperty()&lt;br /&gt; &lt;br /&gt;class Organization_Shop_Loader(Loader):&lt;br /&gt; def __init__(self):&lt;br /&gt;  Loader.__init__(&lt;br /&gt;   self, &lt;br /&gt;   'Organization_Shop',&lt;br /&gt;   [('Id',str),&lt;br /&gt;   ('Name',lambda x: unicode(x, 'utf-8')),&lt;br /&gt;   ('Deleted',bool)]&lt;br /&gt;  )&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-6054026966835412450?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/6054026966835412450/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=6054026966835412450' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/6054026966835412450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/6054026966835412450'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2009/09/gae-bulkload_28.html' title='GAE. Bulkload. Загрузка дампа. Русский язык.'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-8425758265104630498</id><published>2009-09-24T11:55:00.000+04:00</published><updated>2009-09-24T11:55:43.271+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bulkload'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='google app engine'/><title type='text'>GAE. Bulkload. Загрузка дампа.</title><content type='html'>Изучаю Google App Engine. Тестирую. Столкнулся с необходимостью загрузить дамп таблицы. Много времени потратил, пытаясь сделать все по инструкции. Оказалось - она несколько устаревшая что-ли...&lt;br /&gt;&lt;br /&gt;Публикую мой рабочий пример:&lt;br /&gt;Конфиг app.yaml:&lt;br /&gt;&lt;pre&gt;application: fun-test&lt;br /&gt;version: 2&lt;br /&gt;runtime: python&lt;br /&gt;api_version: 1&lt;br /&gt;&lt;br /&gt;handlers:&lt;br /&gt;- url: /remote_api&lt;br /&gt;  script: $PYTHON_LIB/google/appengine/ext/remote_api/handler.py&lt;br /&gt;  login: admin&lt;br /&gt;&lt;br /&gt;- url: /.*&lt;br /&gt;  script: main.py&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Класс для загрузки .csv - uploader.py (обратите внимание - класс bulkloader не подключен, в коде фигурирует просто Loader):&lt;br /&gt;&lt;pre&gt;# coding=UTF-8&lt;br /&gt;import datetime&lt;br /&gt;from google.appengine.ext import db&lt;br /&gt;&lt;br /&gt;class Test(db.Model):&lt;br /&gt; Name=db.StringProperty()&lt;br /&gt; LastName=db.StringProperty()&lt;br /&gt; &lt;br /&gt;class TestLoader(Loader):&lt;br /&gt; def __init__(self):&lt;br /&gt;  Loader.__init__(&lt;br /&gt;   self, &lt;br /&gt;   'Test',&lt;br /&gt;   [('Name',str),&lt;br /&gt;   ('LastName',str)]&lt;br /&gt;  )   &lt;br /&gt; &lt;br /&gt;loaders = [TestLoader]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Дамп d.csv:&lt;br /&gt;&lt;pre&gt;Jonny, Lee&lt;br /&gt;Carl,Donny&lt;br /&gt;Nick,Cookie&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Вызов процесса аплоада дампа: (обратите внимание на то, что вызывается bulkloader.py - в текущей версии appcfg.py у меня не умеет делать аплоад! Вызов для удобства разбиваю на строки...)&lt;br /&gt;&lt;pre&gt;C:\Program Files\Google&gt;c:\Python25\python.exe &lt;br /&gt;google_appengine/bulkloader.py&lt;br /&gt;--filename=testapp/d.csv&lt;br /&gt;--kind=Test&lt;br /&gt;--url=http://localhost:8080/remote_api&lt;br /&gt;--config_file=testapp/uploader.py&lt;br /&gt;--app_id=fun-test&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Вот. Только так у меня сейчас и работает. Успехов!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-8425758265104630498?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/8425758265104630498/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=8425758265104630498' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/8425758265104630498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/8425758265104630498'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2009/09/gae-bulkload.html' title='GAE. Bulkload. Загрузка дампа.'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-2882118734169091497</id><published>2009-09-22T11:01:00.001+04:00</published><updated>2009-09-22T14:23:04.911+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='s06e02'/><category scheme='http://www.blogger.com/atom/ns#' term='s06e01'/><category scheme='http://www.blogger.com/atom/ns#' term='House'/><category scheme='http://www.blogger.com/atom/ns#' term='dr.'/><title type='text'>House, dr. s06e01</title><content type='html'>а-ха-ха-ха! супер. в моих липких лапках Хаус 6.1+2&lt;br /&gt;в заставке - композиция радиохеад! (оччень хорошая)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://video.yandex.ru/users/fun-vit/view/1/?cauthor=fun-vit&amp;cid=1"&gt;Видео&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-2882118734169091497?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/2882118734169091497/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=2882118734169091497' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/2882118734169091497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/2882118734169091497'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2009/09/blog-post_22.html' title='House, dr. s06e01'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-3964164854022674499</id><published>2009-09-07T14:34:00.000+04:00</published><updated>2009-09-07T14:35:46.024+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='visual studio 2008 express'/><category scheme='http://www.blogger.com/atom/ns#' term='ttd'/><category scheme='http://www.blogger.com/atom/ns#' term='nunit'/><title type='text'>NUnit и Visual Studio 2008 Express</title><content type='html'>&lt;a href="http://www.dijksterhuis.org/setting-up-nunit-for-c-unit-testing-with-visual-studio-c-express-2008/"&gt;Ссылка&lt;/a&gt; на англоязычный блог - как установить...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-3964164854022674499?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/3964164854022674499/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=3964164854022674499' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/3964164854022674499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/3964164854022674499'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2009/09/nunit-visual-studio-2008-express.html' title='NUnit и Visual Studio 2008 Express'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-5033785410437593778</id><published>2009-08-12T14:56:00.000+04:00</published><updated>2009-08-12T15:00:40.057+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mssql'/><category scheme='http://www.blogger.com/atom/ns#' term='lag'/><category scheme='http://www.blogger.com/atom/ns#' term='insert'/><category scheme='http://www.blogger.com/atom/ns#' term='trigger'/><title type='text'>MSSQL: вставка большого кол-ва строк в таблицу с триггером</title><content type='html'>Наткнулся на большие задержки локов на важных таблицах. Оказалось если на таблице висит триггер на вставку, и вставить много-много строк (в моём случае было около 50 000) - очень долго выполняется вставка (около 30 сек). Лечится временным выключением триггера (если это позволительно логикой триггера):&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;disable [trigger_name] on [table_name];&lt;/pre&gt;&lt;br /&gt;Включение - enable.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-5033785410437593778?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/5033785410437593778/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=5033785410437593778' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/5033785410437593778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/5033785410437593778'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2009/08/mssql.html' title='MSSQL: вставка большого кол-ва строк в таблицу с триггером'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-1600035869916215262</id><published>2009-07-03T10:31:00.001+04:00</published><updated>2009-07-03T10:33:42.624+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='remote'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='terminal'/><title type='text'>Windows. Удаленный вход. Терминальная лицензия - обход</title><content type='html'>Админы люди ленивые. Кончился "льготный" период пользования терминальным сервисом - не пускает. Но если очень нужно - то можно:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;mstsc /v:192.168.0.1 /console&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-1600035869916215262?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/1600035869916215262/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=1600035869916215262' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/1600035869916215262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/1600035869916215262'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2009/07/windows.html' title='Windows. Удаленный вход. Терминальная лицензия - обход'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-621595046591223144</id><published>2009-05-29T14:49:00.000+04:00</published><updated>2009-05-29T14:52:11.590+04:00</updated><title type='text'>Для тех, у кого есть вопросы касательно plProxy\pbBouncer</title><content type='html'>... изниняйте!, я еще не перешел к внедрению в своих проектах, т.к. занят программой-репликатором MSSQL-2-PostgreSQL... и по этому ничего путного не знаю (кроме моих переводов)...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-621595046591223144?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/621595046591223144/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=621595046591223144' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/621595046591223144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/621595046591223144'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2009/05/plproxypbbouncer.html' title='Для тех, у кого есть вопросы касательно plProxy\pbBouncer'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-8040629091311444152</id><published>2009-04-24T10:21:00.000+04:00</published><updated>2009-04-24T10:24:30.140+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='search'/><category scheme='http://www.blogger.com/atom/ns#' term='mssql'/><category scheme='http://www.blogger.com/atom/ns#' term='stored procedure'/><title type='text'>MSSQL: Поиск по текстам хранимых процедур</title><content type='html'>При написании программы-репликатора mssql-to-postgresql, столкнулся с необходимостью найти все хранимые процедуры, где используется какая-либо таблица.&lt;br /&gt;Решение:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;SELECT ROUTINE_NAME, ROUTINE_DEFINITION &lt;br /&gt;FROM INFORMATION_SCHEMA.ROUTINES &lt;br /&gt;WHERE ROUTINE_DEFINITION LIKE '%искомый текст%' &lt;br /&gt;AND ROUTINE_TYPE='PROCEDURE'&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-8040629091311444152?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/8040629091311444152/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=8040629091311444152' title='Комментарии: 4'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/8040629091311444152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/8040629091311444152'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2009/04/mssql_23.html' title='MSSQL: Поиск по текстам хранимых процедур'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-7745796063606540165</id><published>2009-04-17T11:12:00.000+04:00</published><updated>2009-04-24T10:21:21.552+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sync'/><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='time'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>WINDOWS: Синхронизация времени</title><content type='html'>Для синхронизации времени между серверами в сети я обычно делаю timesync.bat в корне диска C&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;NET TIME \\имя_мастер_сервера /SET /YES&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;и делаю задание в шедулере (Scheduled Tasks) на запуск этого bat`ника каждое утро...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-7745796063606540165?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/7745796063606540165/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=7745796063606540165' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/7745796063606540165'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/7745796063606540165'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2009/04/windows.html' title='WINDOWS: Синхронизация времени'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-4629819699569728685</id><published>2009-04-17T10:26:00.000+04:00</published><updated>2009-04-17T10:42:28.724+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='сеть'/><category scheme='http://www.blogger.com/atom/ns#' term='network'/><category scheme='http://www.blogger.com/atom/ns#' term='backup'/><category scheme='http://www.blogger.com/atom/ns#' term='net 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='mssql'/><category scheme='http://www.blogger.com/atom/ns#' term='бекап'/><title type='text'>MSSQL: Бекап на другую машину по сети</title><content type='html'>Зачем?&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Нехватка места на локальном сервере&lt;/li&gt;&lt;br /&gt;&lt;li&gt;FailOver (если накроется сервер - бекап останется)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Как?&lt;br /&gt;1. Установить сетевое устройство для бекапа можно только запросом&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;USE master;&lt;br /&gt;GO&lt;br /&gt;EXEC sp_addumpdevice &amp;#146;disk&amp;#146;, &amp;#146;networkdevice&amp;#146;,&lt;br /&gt;&amp;#146;\\&amp;lt;servername&amp;gt;\&amp;lt;sharename&amp;gt;\&amp;lt;path&amp;gt;\&amp;lt;filename&amp;gt;.bak&amp;#146;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Памятка: нужно указывать полный путь до файла!&lt;br /&gt;&lt;br /&gt;2. Проще создать хранимую процедуру для вызова бекап-процесса&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;BACKUP DATABASE [ваша_бд] TO  &lt;br /&gt;[networkdevice] WITH NOFORMAT, INIT,  &lt;br /&gt;NAME = N'имя_файла_не_важно', SKIP, REWIND, NOUNLOAD,  STATS = 10;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Памятка: имя файла реально не важно. т.к. сервер считает устройство чем-то типа 'Tape'.&lt;br /&gt;&lt;br /&gt;3. На сервере-хранителе бекапа нужно на шару поставить разрешения на запись для пользователя сервер-с-бд\имя_юзера (например sql)&lt;br /&gt;&lt;br /&gt;4. На сервере-бд создать такого же юзера.&lt;br /&gt;&lt;br /&gt;5. ОЧЕНЬ ВАЖНО - нужно, что бы MSSQL-сервер (служба) запускалась под созданным выше юзером. Т.к. иначе не будет доступа к 'шаре' (расшаренному каталогу на другом сервере).&lt;br /&gt;&lt;br /&gt;6. Сделать службу (Job). В адвансед-свойствах шага поставить запуск под юзером (см. выше).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-4629819699569728685?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/4629819699569728685/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=4629819699569728685' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/4629819699569728685'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/4629819699569728685'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2009/04/mssql.html' title='MSSQL: Бекап на другую машину по сети'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-8525869262266118756</id><published>2009-04-15T17:38:00.001+04:00</published><updated>2009-10-12T15:24:39.522+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pgbouncer'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><title type='text'>pgBouncer - Установка</title><content type='html'>Лучше всего взять новую версию и откомпилировать её. &lt;a href="http://pgfoundry.org/projects/pgbouncer"&gt;http://pgfoundry.org/projects/pgbouncer&lt;/a&gt;. Так же заметил присутствие в репозиториях Убунты.&lt;br /&gt;&lt;br /&gt;make и make install прошли успешно.&lt;br /&gt;&lt;br /&gt;Но для самосборной версии нужно:&lt;br /&gt;- сделать конфиг&lt;br /&gt;- создать скрипт запуска в /etc/init.d/&lt;br /&gt;&lt;br /&gt;Конфиг: (/etc/pgBouncer/pgbouncer.ini)&lt;br /&gt;&lt;pre style="font-size:11px"&gt;;; database name = connect string&lt;br /&gt;[databases]&lt;br /&gt;test = host=127.0.0.1 port=5432 dbname=test&lt;br /&gt;;;ОБЯЗАТЕЛЬНО db postgres&lt;br /&gt;postgres= host=127.0.0.1 port=5432 dbname=postgres&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;; foodb over unix socket&lt;br /&gt;foodb =&lt;br /&gt;&lt;br /&gt;; redirect bardb to bazdb on localhost&lt;br /&gt;;bardb = host=127.0.0.1 dbname=bazdb&lt;br /&gt;&lt;br /&gt;; acceess to dest database will go with single user&lt;br /&gt;;forcedb = host=127.0.0.1 port=300 user=baz password=foo client_encoding=UNICODE datestyle=ISO connect_query='SELECT 1'&lt;br /&gt;&lt;br /&gt;nondefaultdb = pool_size=50 reserve_pool=10&lt;br /&gt;&lt;br /&gt;; fallback connect string&lt;br /&gt;;* = host=testserver&lt;br /&gt;&lt;br /&gt;;; Configuation section&lt;br /&gt;[pgbouncer]&lt;br /&gt;&lt;br /&gt;;;;&lt;br /&gt;;;; Administrative settings&lt;br /&gt;;;;&lt;br /&gt;&lt;br /&gt;logfile = /var/log/pgBouncer/pgbouncer.log&lt;br /&gt;pidfile = /var/run/postgresql/pgbouncer.pid&lt;br /&gt;&lt;br /&gt;;;;&lt;br /&gt;;;; Where to wait for clients&lt;br /&gt;;;;&lt;br /&gt;&lt;br /&gt;; ip address or * which means all ip-s&lt;br /&gt;listen_addr = *&lt;br /&gt;listen_port = 6432&lt;br /&gt;unix_socket_dir = /var/run/postgresql&lt;br /&gt;&lt;br /&gt;;;;&lt;br /&gt;;;; Authentication settings&lt;br /&gt;;;;&lt;br /&gt;&lt;br /&gt;; any, trust, plain, crypt, md5&lt;br /&gt;auth_type = plain&lt;br /&gt;#auth_file = 8.0/main/global/pg_auth&lt;br /&gt;auth_file = /etc/pgBouncer/userlist.txt&lt;br /&gt;&lt;br /&gt;;;;&lt;br /&gt;;;; Users allowed into database 'pgbouncer'&lt;br /&gt;;;;&lt;br /&gt;&lt;br /&gt;; comma-separated list of users, who are allowed to change settings&lt;br /&gt;; user1, user2&lt;br /&gt;admin_users = postgres&lt;br /&gt;&lt;br /&gt;; comma-separated list of users who are just allowed to use SHOW command&lt;br /&gt;stats_users = stats, root&lt;br /&gt;&lt;br /&gt;;;;&lt;br /&gt;;;; Pooler personality questions&lt;br /&gt;;;;&lt;br /&gt;&lt;br /&gt;; When server connection is released back to pool:&lt;br /&gt;;   session      - after client disconnects&lt;br /&gt;;   transaction  - after transaction finishes&lt;br /&gt;;   statement    - after statement finishes&lt;br /&gt;pool_mode = session&lt;br /&gt;&lt;br /&gt;;&lt;br /&gt;; Query for cleaning connection immidiately after releasing from client.&lt;br /&gt;;&lt;br /&gt;; Query for 8.3+:&lt;br /&gt;;   DISCARD ALL;&lt;br /&gt;;&lt;br /&gt;; Older versions:&lt;br /&gt;;   RESET ALL; SET SESSION AUTHORIZATION DEFAULT&lt;br /&gt;;&lt;br /&gt;server_reset_query = &lt;br /&gt;&lt;br /&gt;;&lt;br /&gt;; Comma-separated list of parameters to ignore when given&lt;br /&gt;; in startup packet.  Newer JDBC versions require the&lt;br /&gt;; extra_float_digits here.&lt;br /&gt;;&lt;br /&gt;;ignore_startup_parameters = extra_float_digits&lt;br /&gt;&lt;br /&gt;;&lt;br /&gt;; When taking idle server into use, this query is ran first.&lt;br /&gt;;   SELECT 1&lt;br /&gt;;&lt;br /&gt;server_check_query = select 1&lt;br /&gt;&lt;br /&gt;; If server was used more recently that this many seconds ago,&lt;br /&gt;; skip the check query.  Value 0 may or may not run in immidiately.&lt;br /&gt;server_check_delay = 10&lt;br /&gt;&lt;br /&gt;;;;&lt;br /&gt;;;; Connection limits&lt;br /&gt;;;;&lt;br /&gt;&lt;br /&gt;; total number of clients that can connect&lt;br /&gt;max_client_conn = 100&lt;br /&gt;default_pool_size = 20&lt;br /&gt;&lt;br /&gt;; how many additional connection to allow in case of trouble&lt;br /&gt;reserve_pool_size = 5&lt;br /&gt;&lt;br /&gt;; if a clients needs to wait more than this many seconds, use reserve pool&lt;br /&gt;;reserve_pool_timeout = 3&lt;br /&gt;&lt;br /&gt;log_connections = 1&lt;br /&gt;log_disconnections = 1&lt;br /&gt;&lt;br /&gt;; log error messages pooler sends to clients&lt;br /&gt;log_pooler_errors = 1&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;; If off, then server connections are reused in LIFO manner&lt;br /&gt;;server_round_robin = 0&lt;br /&gt;&lt;br /&gt;;;;&lt;br /&gt;;;; Timeouts&lt;br /&gt;;;;&lt;br /&gt;&lt;br /&gt;;; Close server connection if its been connected longer.&lt;br /&gt;;server_lifetime = 1200&lt;br /&gt;&lt;br /&gt;;; Close server connection if its not been used in this time.&lt;br /&gt;;; Allows to clean unneccessary connections from pool after peak.&lt;br /&gt;;server_idle_timeout = 60&lt;br /&gt;&lt;br /&gt;;; Cancel connection attepmt if server does not answer takes longer.&lt;br /&gt;;server_connect_timeout = 15&lt;br /&gt;&lt;br /&gt;;; If server login failed (server_connect_timeout or auth failure)&lt;br /&gt;;; then wait this many second.&lt;br /&gt;;server_login_retry = 15&lt;br /&gt;&lt;br /&gt;;; Dangerous.  Server connection is closed if query does not return&lt;br /&gt;;; in this time.  Should be used to survive network problems,&lt;br /&gt;;; _not_ as statement_timeout. (default: 0)&lt;br /&gt;;query_timeout = 0&lt;br /&gt;&lt;br /&gt;;; Dangerous.  Client connection is closed if no activity in this time.&lt;br /&gt;;; Should be used to survive network problems. (default: 0)&lt;br /&gt;;client_idle_timeout = 0&lt;br /&gt;&lt;br /&gt;;; Disconnect clients who have not managed to log in after connecting&lt;br /&gt;;; in this many seconds.&lt;br /&gt;;client_login_timeout = 60&lt;br /&gt;&lt;br /&gt;;; Clean automatically created database entries (via "*") if they&lt;br /&gt;;; stay unused in this many seconds.&lt;br /&gt;; autodb_idle_timeout = 3600&lt;br /&gt;&lt;br /&gt;;;;&lt;br /&gt;;;; Low-level tuning options&lt;br /&gt;;;;&lt;br /&gt;&lt;br /&gt;;; buffer for streaming packets&lt;br /&gt;;pkt_buf = 2048&lt;br /&gt;&lt;br /&gt;;; networking options, for info: man 7 tcp&lt;br /&gt;&lt;br /&gt;;; linux: notify program about new connection only if there&lt;br /&gt;;; is also data received.  (Seconds to wait.)&lt;br /&gt;;; On Linux the default is 45, on other OS'es 0.&lt;br /&gt;;tcp_defer_accept = 0&lt;br /&gt;&lt;br /&gt;;; In-kernel buffer size (linux default: 4096)&lt;br /&gt;;tcp_socket_buffer = 0&lt;br /&gt;&lt;br /&gt;;; whether tcp keepalive should be turned on (0/1)&lt;br /&gt;;tcp_keepalive = 0&lt;br /&gt;&lt;br /&gt;;; following options are linux-specific.&lt;br /&gt;;; they also require tcp_keepalive=1&lt;br /&gt;&lt;br /&gt;;; count of keepaliva packets&lt;br /&gt;;tcp_keepcnt = 0&lt;br /&gt;&lt;br /&gt;;; how long the connection can be idle,&lt;br /&gt;;; before sending keepalive packets&lt;br /&gt;;tcp_keepidle = 0&lt;br /&gt;&lt;br /&gt;;; The time between individual keepalive probes.&lt;br /&gt;;tcp_keepintvl = 0&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Скрипт:&lt;br /&gt;(Исходник в папке /etc исходников. Я менял пути в начале скрипта...)&lt;br /&gt;&lt;pre style="font-size:11px"&gt;#!/bin/bash&lt;br /&gt;#&lt;br /&gt;# pgbouncer Start the PgBouncer PostgreSQL pooler.&lt;br /&gt;#&lt;br /&gt;# The variables below are NOT to be changed.  They are there to make the&lt;br /&gt;# script more readable.&lt;br /&gt;&lt;br /&gt;NAME=pgbouncer&lt;br /&gt;DAEMON=/usr/local/bin/$NAME&lt;br /&gt;PIDFILE=/var/run/postgresql/$NAME.pid&lt;br /&gt;CONF=/etc/pgBouncer/$NAME.ini&lt;br /&gt;OPTS="-d $CONF -u postgres"&lt;br /&gt;# note: SSD is required only at startup of the daemon.&lt;br /&gt;SSD=`which start-stop-daemon`&lt;br /&gt;ENV="env -i LANG=C PATH=/bin:/usr/bin:/usr/local/bin"&lt;br /&gt;&lt;br /&gt;trap "" 1&lt;br /&gt;&lt;br /&gt;# Check if configuration exists&lt;br /&gt;test -f $CONF || exit 0&lt;br /&gt;&lt;br /&gt;case "$1" in&lt;br /&gt;start)&lt;br /&gt;echo -n "Starting server: $NAME"&lt;br /&gt;$ENV $SSD --start --pidfile $PIDFILE --exec $DAEMON -- $OPTS &gt; /dev/null&lt;br /&gt;;;&lt;br /&gt;&lt;br /&gt;stop)&lt;br /&gt;echo -n "Stopping server: $NAME"&lt;br /&gt;start-stop-daemon --stop --pidfile $PIDFILE &lt;br /&gt;;;&lt;br /&gt;&lt;br /&gt;reload | force-reload)&lt;br /&gt;echo -n "Reloading $NAME configuration"&lt;br /&gt;start-stop-daemon --stop --pidfile $PIDFILE --signal HUP&lt;br /&gt;;;&lt;br /&gt;&lt;br /&gt;restart)&lt;br /&gt;$0 stop&lt;br /&gt;$0 start&lt;br /&gt;;;&lt;br /&gt;&lt;br /&gt;*)&lt;br /&gt;echo "Usage: /etc/init.d/$NAME {start|stop|reload|restart}"&lt;br /&gt;exit 1&lt;br /&gt;;;&lt;br /&gt;esac&lt;br /&gt;&lt;br /&gt;if [ $? -eq 0 ]; then&lt;br /&gt;echo .&lt;br /&gt;exit 0&lt;br /&gt;else&lt;br /&gt;echo " failed"&lt;br /&gt;exit 1&lt;br /&gt;fi&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Для автозапуска сделать файл pgbouncer gj пути /etc/default/ с содержимым:&lt;br /&gt;&lt;pre&gt;START=1&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Теперь подключатся нужно к порту 6432 (Он, кстати, стал стандартом...).&lt;br /&gt;Вобщем у меня всё заработало.&lt;br /&gt;&lt;br /&gt;Для просмотра диагностики pgBouncer`a &lt;br /&gt;&lt;pre&gt;sudo psql -p 6432 pgbouncer -U postgres&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Список команд - &lt;a href="http://pgbouncer.projects.postgresql.org/doc/usage.html#toc5"&gt;тут&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Для затравки:&lt;br /&gt;show help;&lt;br /&gt;show pools;&lt;br /&gt;show clients;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-8525869262266118756?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/8525869262266118756/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=8525869262266118756' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/8525869262266118756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/8525869262266118756'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2009/04/pgbalancer.html' title='pgBouncer - Установка'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-7099537397432824872</id><published>2009-04-15T13:00:00.000+04:00</published><updated>2009-04-15T13:16:46.607+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='install'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='plproxy'/><title type='text'>PlProxy - установка на убунту 8</title><content type='html'>Пришло время попробовать PlProxy.&lt;br /&gt;Для начала - нужно его установить:&lt;br /&gt;&lt;br /&gt;Нужно скачать последнюю версию с &lt;a href="http://pgfoundry.org/projects/plproxy"&gt;http://pgfoundry.org/projects/plproxy&lt;/a&gt; и распаковать её (я распаковал в /tmp/plproxy).&lt;br /&gt;&lt;br /&gt;Далее в описании процесса инсталляции сказано сделать &lt;br /&gt;&lt;pre&gt;make &lt;/pre&gt;&lt;br /&gt;...но мне ругалось на ошибки. &lt;br /&gt;Как оказалось нужно еще установить кое-что:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;sudo apt-get install libpq-dev&lt;br /&gt;sudo apt-get install postgresql-server-dev-8.3 &lt;br /&gt;sudo apt-get install flex&lt;br /&gt;sudo apt-get install bison&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;После этого нормально проходит&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;make&lt;br /&gt;make install&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Но на make installcheck мне ругнулось, что типа постгрес не отвечает на стандартном порту. Ну ладно. Я сделал далее как следует:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;psql -f /usr/share/contrib/plproxy.sql test&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Конечно же БД test уже существовала. Ругнулось на отсутствие пользователя root. Поскольку это тестирование - я выстренько сделал суперпользователя root в БД.&lt;br /&gt;&lt;br /&gt;Далее я создал еще одну БД ro1.&lt;br /&gt;В БД ro1 создал таблицу Test_1&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;CREATE TABLE test_1&lt;br /&gt;(&lt;br /&gt;  "Id" serial NOT NULL,&lt;br /&gt;  "Name" character varying(400) NOT NULL,&lt;br /&gt;  CONSTRAINT pk_id PRIMARY KEY ("Id")&lt;br /&gt;)&lt;br /&gt;WITH (OIDS=FALSE);&lt;br /&gt;ALTER TABLE test_1 OWNER TO postgres;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Вставил несколько строк (руками).&lt;br /&gt;&lt;br /&gt;Потом проверил работу plproxy-языка.&lt;br /&gt;&lt;br /&gt;Это в БД test:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;create or replace function test_plproxy(i_text text)&lt;br /&gt;returns setof text as $$&lt;br /&gt;&lt;br /&gt; connect 'dbname=ro1';&lt;br /&gt; select "Name" from Test_1 where "Id"=1;&lt;br /&gt; --select $1;&lt;br /&gt;&lt;br /&gt;$$ language plproxy;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Теперь с БД test выполняю&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;select test_plproxy('zzz');&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;И получаю ответ (не буду его приводить) - значит все &lt;span style="font-weight:bold;"&gt;работает&lt;/span&gt;!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-7099537397432824872?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/7099537397432824872/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=7099537397432824872' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/7099537397432824872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/7099537397432824872'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2009/04/plproxy-8.html' title='PlProxy - установка на убунту 8'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-501045323802567281</id><published>2009-04-07T23:24:00.001+04:00</published><updated>2009-09-22T11:56:39.876+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tahoma'/><category scheme='http://www.blogger.com/atom/ns#' term='how to'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='ttf'/><title type='text'>Ubuntu - Tahoma.ttf</title><content type='html'>Поскольку я занимаюсь и версткой - мне крайне необходим шрифт тахома в Убунте.&lt;br /&gt;Оказалось он есть в wine. Так что я установил wine &lt;pre&gt;sudo api-get install wine&lt;/pre&gt;&lt;br /&gt;Потом копируем 2 шрифта из &lt;pre&gt;/usr/share/wine/fonts/ (tahoma*)&lt;/pre&gt;в &lt;pre&gt;~/.fonts&lt;/pre&gt;(вроде можно и в /usr/share/fonts/truetype/ttf-liberation) и выполняем &lt;pre&gt;fc-cache -fv&lt;/pre&gt;&lt;br /&gt;После перезапуска FireFox нормально отображал этот шрифт.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-501045323802567281?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/501045323802567281/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=501045323802567281' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/501045323802567281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/501045323802567281'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2009/04/ubuntu-tahomattf.html' title='Ubuntu - Tahoma.ttf'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-5922360173853794870</id><published>2009-04-07T17:34:00.000+04:00</published><updated>2009-04-07T17:41:59.306+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='no mic'/><category scheme='http://www.blogger.com/atom/ns#' term='bug'/><category scheme='http://www.blogger.com/atom/ns#' term='mic'/><category scheme='http://www.blogger.com/atom/ns#' term='how to'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='lenovo s10'/><category scheme='http://www.blogger.com/atom/ns#' term='fix'/><title type='text'>Lenovo s10 | Вот я и купил себе лаптоп!</title><content type='html'>В реальности выглядит намного лучше, чем на фотках! Покупал на озоне, весь черный.&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;1 Гб памяти&lt;/li&gt;&lt;br /&gt;&lt;li&gt;160 Гб на диске&lt;/li&gt;&lt;br /&gt;&lt;li&gt;расширенная батарея!&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Установил убунту 9. всё заработало кроме микрофона встроенного. Но &lt;a href="http://ubuntuforums.org/showthread.php?p=6589810#post6589810"&gt;тут&lt;/a&gt; есть решение. (Нужно зарегистрироваться и скачать alsa-upgrade. Запустить с ключем -di - скрипт скачает нужные файлы и откомпилирует их, и установит.)&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/6223781663727322959-5922360173853794870?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/5922360173853794870/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=5922360173853794870' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/5922360173853794870'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/5922360173853794870'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2009/04/lenovo-s10.html' title='Lenovo s10 | Вот я и купил себе лаптоп!'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-2668194276916519268</id><published>2009-03-29T03:01:00.000+04:00</published><updated>2009-03-29T03:19:13.690+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='read-only'/><category scheme='http://www.blogger.com/atom/ns#' term='partitioning'/><category scheme='http://www.blogger.com/atom/ns#' term='cluster'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><category scheme='http://www.blogger.com/atom/ns#' term='plproxy'/><title type='text'>[Перевод] PostgreSQL кластер: партишинг с plproxy (часть 2)</title><content type='html'>&lt;a href="http://kaiv.wordpress.com/2007/09/02/postgresql-cluster-partitioning-with-plproxy-part-ii/"&gt;оригинал в блоге Kristo Kaiv&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;В предыдущем посте я описал как установить plproxy и сделать базовый вариант горизонтального кластера.&lt;br /&gt;Теперь взглянем на другое типичное применение в жизни: создание кластера только-чтение для вашей БД.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Разделение нагрузки на чтение.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Самое простое использование в жизни для &lt;a href="https://developer.skype.com/SkypeGarage/DbProjects/PlProxy"&gt;plproxy&lt;/a&gt; - использование для перенаправления запросов только-чтение на реплики "только-чтение" основной БД. Реплицированые БД могут быть заполнены данными с помощью Londiste из пакета &lt;a href="https://developer.skype.com/SkypeGarage/DbProjects/SkyTools"&gt;SkyTools&lt;/a&gt;. Описание установки может быть найдено тут. Или можно использовать Slony, который является более тяжелым решением и из моего опыта так же более труден в установке и поддержке, хотя и лучше документирован.&lt;br /&gt;&lt;br /&gt;Типичный кластер "только-чтение" изображен на схеме &lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_8J-eEoBbQF8/Sc6sv7n_5OI/AAAAAAAAAEg/Yf8539lpU4o/s1600-h/read_only_cluster_238x250shkl.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 190px; height: 200px;" src="http://3.bp.blogspot.com/_8J-eEoBbQF8/Sc6sv7n_5OI/AAAAAAAAAEg/Yf8539lpU4o/s200/read_only_cluster_238x250shkl.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5318378149430420706" /&gt;&lt;/a&gt;&lt;br /&gt;БД со знаком "p" имеют пул соединений. Мы используем PgBouncer но pgpool тоже хорошее решение.&lt;br /&gt;&lt;br /&gt;Пулы нужны для оптимизации кол-ва соединений с базами, плюс планы выполнения запросов кэшируются на основе выбранного соединения. Конечно все будет работать и без пулов. Пунктирные линии на схеме - реплики.&lt;br /&gt;&lt;br /&gt;В этой установке plproxy-функции определяют базу, к которой нужно перенаправить запрос. Запросы на чтение-запись идут к мастер-базе, а только-чтение к репликам "только-н-чтение".&lt;br /&gt;&lt;br /&gt;Настройка репликации проста, как только вы пройдете сложный процесс установки утилит skytools.&lt;br /&gt;&lt;br /&gt;Первое - давайте создадим конфигурацию для реплик и мастер-базы:&lt;br /&gt;&lt;br /&gt;файл replica1.ini&lt;br /&gt;&lt;br /&gt;[londiste]&lt;br /&gt;&lt;br /&gt;job_name = londiste_master_to_r1&lt;br /&gt;provider_db = dbname=write&lt;br /&gt;subscriber_db = dbname=ro1&lt;br /&gt;# значение будет использовано как идентификатор, так что не используйте точки и пробелы&lt;br /&gt;pgq_queue_name = londiste.write&lt;br /&gt;pidfile = %(job_name)s.pid&lt;br /&gt;logfile = %(job_name)s.log&lt;br /&gt;use_skylog = 0&lt;br /&gt;&lt;br /&gt;Файл replica2.ini практически такой же, только название задания и имя базы нужно изменить. Теперь установим Londiste на провайдере (мастер-базе) и подписчиках (r01, r02) и запусим демонов (службы) репликации:&lt;br /&gt;&lt;br /&gt;mbpro:~/temp kristokaiv$ londiste.py replica1.ini provider install&lt;br /&gt;mbpro:~/temp kristokaiv$ londiste.py replica1.ini subscriber install&lt;br /&gt;mbpro:~/temp kristokaiv$ londiste.py replica2.ini subscriber install&lt;br /&gt;mbpro:~/temp kristokaiv$ londiste.py replica1.ini replay -d&lt;br /&gt;mbpro:~/temp kristokaiv$ londiste.py replica2.ini replay -d&lt;br /&gt;&lt;br /&gt;Теперь нужно настроить тикер-процесс на базе данных, на которой производится запись. Тикер создает события синхронизации, так что чем чаще он запускается - тем меньше разницы в бд ro. Мой конфиг выглядит так:&lt;br /&gt;&lt;br /&gt;файл ticker_write.ini&lt;br /&gt;&lt;br /&gt;[pgqadm]&lt;br /&gt;job_name = ticker_write&lt;br /&gt;db = dbname=write&lt;br /&gt;# как часто запусткать задачу [минуты]&lt;br /&gt;maint_delay_min = 1&lt;br /&gt;# как часто проверять активность [секунды]&lt;br /&gt;loop_delay = 0.1&lt;br /&gt;logfile = %(job_name)s.log&lt;br /&gt;pidfile = %(job_name)s.pid&lt;br /&gt;use_skylog = 0&lt;br /&gt;&lt;br /&gt;Для запуска тикера как демон (служба) выполните:&lt;br /&gt;&lt;br /&gt;mbpro:~/temp kristokaiv$ pgqadm.py ticker_write.ini ticker -d&lt;br /&gt;&lt;br /&gt;Давайте создадим простую таблицу, которую мы будем реплицировать с мастера на репликантов "только-чтение".&lt;br /&gt;&lt;br /&gt;mbpro:~/temp kristokaiv$ psql -c "CREATE TABLE users (username text primary key, password text);" write&lt;br /&gt;&lt;br /&gt;mbpro:~/temp kristokaiv$ psql -c "CREATE TABLE users (username text primary key, password text);" ro1&lt;br /&gt;&lt;br /&gt;mbpro:~/temp kristokaiv$ psql -c "CREATE TABLE users (username text primary key, password text);" ro2&lt;br /&gt;&lt;br /&gt;Добавляем её к репликации&lt;br /&gt;&lt;br /&gt;mbpro:~/temp kristokaiv$ londiste.py replica1.ini provider add users&lt;br /&gt;mbpro:~/temp kristokaiv$ londiste.py replica1.ini subscriber add users&lt;br /&gt;mbpro:~/temp kristokaiv$ londiste.py replica2.ini subscriber add users&lt;br /&gt;&lt;br /&gt;Спустя некоторое время таблицы должны засинхронизироваться. Вставим новую запись в таблицу и проверим - появилась ли запись на обоих репликантах.&lt;br /&gt;&lt;br /&gt;Функции для вставки и выборки из таблицы users:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;CREATE OR REPLACE FUNCTION public.add_user(&lt;br /&gt;    in i_username text,&lt;br /&gt;    in i_password text,&lt;br /&gt;    out status_code text&lt;br /&gt;) AS $$&lt;br /&gt;BEGIN&lt;br /&gt;    PERFORM 1 FROM users WHERE username = i_username;&lt;br /&gt;    IF NOT FOUND THEN&lt;br /&gt;        INSERT INTO users (username, password) VALUES (i_username, i_password);&lt;br /&gt;        status_code = 'OK';&lt;br /&gt;    ELSE&lt;br /&gt;        status_code = 'user exists';&lt;br /&gt;    END IF;&lt;br /&gt;    RETURN;&lt;br /&gt;END; $$ LANGUAGE plpgsql SECURITY DEFINER;&lt;br /&gt;&lt;br /&gt;GRANT EXECUTE ON FUNCTION public.add_user(&lt;br /&gt;    in i_username text,&lt;br /&gt;    in i_password text,&lt;br /&gt;    out status_code text&lt;br /&gt;) TO plproxy;&lt;br /&gt;&lt;br /&gt;CREATE OR REPLACE FUNCTION login(&lt;br /&gt;    in i_username text,&lt;br /&gt;    in i_password text,&lt;br /&gt;    out status_code text&lt;br /&gt;) AS $$&lt;br /&gt;BEGIN&lt;br /&gt;    SELECT 'OK' FROM users u WHERE username = i_username AND password = i_password INTO status_code;&lt;br /&gt;    IF NOT FOUND THEN status_code = 'FAILED'; END IF;&lt;br /&gt;    RETURN;&lt;br /&gt;END; $$ LANGUAGE plpgsql SECURITY DEFINER;&lt;br /&gt;&lt;br /&gt;GRANT EXECUTE ON FUNCTION login(&lt;br /&gt;    in i_username text,&lt;br /&gt;    in i_password text,&lt;br /&gt;    out status_code text&lt;br /&gt;) TO plproxy;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Только для комфорта тех, кто реально попробует повторить эти шаги, привожу конфигурацию прокси-бд:&lt;br /&gt;&lt;br /&gt;cluster config:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;CREATE OR REPLACE FUNCTION plproxy.get_cluster_partitions (cluster_name text)&lt;br /&gt;RETURNS SETOF text AS $$&lt;br /&gt;BEGIN&lt;br /&gt;   IF cluster_name = 'readonly' THEN&lt;br /&gt;        RETURN NEXT 'host=127.0.0.1 dbname=ro1';&lt;br /&gt;        RETURN NEXT 'host=127.0.0.1 dbname=ro2';&lt;br /&gt;        RETURN;&lt;br /&gt;    ELSIF cluster_name = 'write' THEN&lt;br /&gt;        RETURN NEXT 'host=127.0.0.1 dbname=write';&lt;br /&gt;        RETURN;&lt;br /&gt;    END IF;&lt;br /&gt;    RAISE EXCEPTION 'no such cluster%', cluster_name;&lt;br /&gt;END; $$ LANGUAGE plpgsql SECURITY DEFINER;&lt;br /&gt;&lt;br /&gt;CREATE OR REPLACE FUNCTION plproxy.get_cluster_config(&lt;br /&gt;    in cluster_name text,&lt;br /&gt;    out key text,&lt;br /&gt;    out val text)&lt;br /&gt;RETURNS SETOF record AS $$&lt;br /&gt;BEGIN&lt;br /&gt;    RETURN;&lt;br /&gt;END;&lt;br /&gt;$$ LANGUAGE plpgsql;&lt;br /&gt;&lt;br /&gt;CREATE OR REPLACE FUNCTION plproxy.get_cluster_version(cluster_name text) RETURNS int AS $$&lt;br /&gt;    SELECT 1;&lt;br /&gt;$$ LANGUAGE SQL;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Последнее что осталось сделать - создать plproxy-функцию, которая перенаправляет вызов функции логина на бд только-чтение и функцию add_user на бд для записи (мастер).&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;CREATE OR REPLACE FUNCTION public.login(&lt;br /&gt;    in i_username text,&lt;br /&gt;    in i_password text,&lt;br /&gt;    out status_code text&lt;br /&gt;) AS $$&lt;br /&gt;CLUSTER 'readonly'; RUN ON ANY;&lt;br /&gt;$$ LANGUAGE plproxy;&lt;br /&gt;&lt;br /&gt;CREATE OR REPLACE FUNCTION public.add_user(&lt;br /&gt;    in i_username text,&lt;br /&gt;    in i_password text,&lt;br /&gt;    out status_code text&lt;br /&gt;) AS $$&lt;br /&gt;CLUSTER 'write';&lt;br /&gt;$$ LANGUAGE plproxy;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&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/6223781663727322959-2668194276916519268?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/2668194276916519268/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=2668194276916519268' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/2668194276916519268'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/2668194276916519268'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2009/03/postgresql-plproxy-2.html' title='[Перевод] PostgreSQL кластер: партишинг с plproxy (часть 2)'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_8J-eEoBbQF8/Sc6sv7n_5OI/AAAAAAAAAEg/Yf8539lpU4o/s72-c/read_only_cluster_238x250shkl.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-8706769317670861024</id><published>2009-03-29T00:48:00.000+03:00</published><updated>2009-03-29T03:19:46.415+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cluster'/><category scheme='http://www.blogger.com/atom/ns#' term='load balancing'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><category scheme='http://www.blogger.com/atom/ns#' term='plproxy'/><title type='text'>[Перевод] PostgreSQL кластер: партишинг с plproxy (часть 1)</title><content type='html'>&lt;a href="http://kaiv.wordpress.com/2007/07/27/postgresql-cluster-partitioning-with-plproxy-part-i/"&gt;оригинал в блоге Kristo Kaiv&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://translated.by/you/postgresql-cluster-partitioning-with-plproxy-part-i/"&gt;мой перевод на http://translated.by/you&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Skype разработал много полезных утилит для создания кластера баз данных и эта серия публикаций прольет свет на ранее недокументированный функционал. В основе - &lt;a href="https://developer.skype.com/SkypeGarage/DbProjects/PlProxy"&gt;plproxy&lt;/a&gt;. Лучшая фраза описать функциональность - "dblink на стероидах". Это короткое пособие объяснит, как установить plproxy, написать простые запросы к БД и установить простое горизонтальное масштабирование.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Партишинг для чайников.&lt;/span&gt;&lt;br /&gt;Партишинг позволяет вам распределить загрузку БД и сами данные между несколькими серверами. Принцип прост. Допустим вы имеете одну таблицу, которая содержит данные на пользователей. Но проблема - миллионы пользователей ежедневно входят по своим аккаунтам в систему. Это создает большую загрузку сервера, не говоря о огромных размерах БД. Первое - нужно определить критерий, по которому мы будем выбирать на каком сервере содержатся данные. Мы можем сделать это по первому символу и имени пользователя. Пользователи a-j попадают в первый сервер, а k-z во второй. Это будет работать. Но скорее всего нагрузка на серверы будет не равномерной. Распространенное решение - использовать партишинг основываясь на хэше первичного ключа, в нашем случае - имени пользователя. Использование хэша позволит размещать записи более равномерно между серверами. То, что вам нужно знать про функцию хэша - это то, что она просто вычисляет номер, основанный на любом введённом значении.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Пример:&lt;/span&gt;&lt;br /&gt;select hashtext('kristokaiv1') = 1116512480&lt;br /&gt;select hashtext('kristokaiv2') = 1440348351&lt;br /&gt;select hashtext('kristokaiv3') = -219299073&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Объяснение, как это работает - выходит за рамки этого пособия.&lt;/span&gt;&lt;br /&gt;Итак, допустим мы имеем 2 партиции, так что мы можем получить номер партиции основываясь на хэше имени пользователя.&lt;br /&gt;Пример: partition nr = hashtext($1) &amp; 1&lt;br /&gt;&lt;br /&gt;&amp;1 даст нам последний бит номера, который может быть 0 или 1. Это номер, которым мы можем выбрать партицию, на которой будут сохранены данные. Если 0 - данные попадут на партицию 0 и если 1 - на партицию 1.&lt;br /&gt;select hashtext('kristokaiv1') &amp; 1 = 0 -&gt; partition 0&lt;br /&gt;select hashtext('kristokaiv2') &amp; 1 = 1 -&gt; partition 1&lt;br /&gt;select hashtext('kristokaiv3') &amp; 1 = 1 -&gt; partition 1&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Как работает plproxy.&lt;/span&gt;&lt;br /&gt;Концепция очень проста - plproxy это новый язык для запросов в PostgreSQL БД, который позволяет делать запросы к удаленным БД также как это делает dblink. Синтаксис очень прост - следующий запрос создает новую plproxy-функцию в БД, которая при запуске подключится в БД remotedb, выполнит функцию get_user_email(text) и вернет результаты.&lt;br /&gt;&lt;br /&gt;localdb=#&lt;br /&gt;CREATE FUNCTION get_user_email(username text) RETURNS text AS $$&lt;br /&gt;CONNECT 'dbname=remotedb host=123.456.123.21 user=myuser';&lt;br /&gt;$$ LANGUAGE plproxy;&lt;br /&gt;&lt;br /&gt;Создадим функцию-пустышку в remotedb, которая будет отвечать на запрос&lt;br /&gt;&lt;br /&gt;remotedb=#&lt;br /&gt;create function get_user_email(text)&lt;br /&gt;returns text as $$&lt;br /&gt;select 'me@somewhere.com'::text;&lt;br /&gt;$$ language sql;&lt;br /&gt;&lt;br /&gt;При выполнении мы получим те же результаты, которые получаем по запросу на remotedb&lt;br /&gt;&lt;br /&gt;localdb=#&lt;br /&gt;select * from get_user_email('tere');&lt;br /&gt;get_user_email&lt;br /&gt;------------------&lt;br /&gt;me@somewhere.com&lt;br /&gt;(1 row)&lt;br /&gt;&lt;br /&gt;Конечно это только простой пример и я вернусь к более сложному синтаксу позже. Давайте посмотрим, как установить plproxy-язык.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Установка plproxy.&lt;/span&gt;&lt;br /&gt;Загрузить код можно с http://pgfoundry.org/projects/plproxy/ но я советую взять свежую версию из CVS (системы контроля версий).&lt;br /&gt;Должен быть установлен набор разработки PostgreSLQ. Каталог, где расположена утилита конфигурации постгреса (pg_config), должен быть включен в переменную $PATH.&lt;br /&gt;При этих условиях установка сводится к:&lt;br /&gt;&lt;br /&gt;$ make&lt;br /&gt;$ make install&lt;br /&gt;$ make installcheck&lt;br /&gt;&lt;br /&gt;Если у вас не получается заставить это работать - вы всегда можете попросить помощи. Финальный шаг - установить язык в БД. Это нельзя сделать как с другими языками (пользуясь утилитой createlang). Вы должны выполнить файл plproxy.sql, который создаст обработчик языка.&lt;br /&gt;&lt;br /&gt;Файл plproxy.sql должен быть где-то в каталоге contrib.&lt;br /&gt;$ psql -f /usr/local/pgsql/share/contrib/plproxy.sql queries&lt;br /&gt;CREATE FUNCTION&lt;br /&gt;CREATE LANGUAGE&lt;br /&gt;&lt;br /&gt;Всё. Можно проверить установку простой plproxy-функцией (см. в синтаксических примерах).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Установка первого кластера.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Давайте создадим простой кластер, который будет состоять из 3 БД (в моем примере они все используют один и тот же вариант PostgreSQL). Одна прокси-БД вызывает запросы и две разделенные БД (партиции) с данными. Горизантальное разделение сделано на основе имени пользователя. Это часто используемый способ, т.к. большинство данных в БД - это связанные с пользователем: логин, заказы, платы, настройки...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Настройка Кластера.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Настройки БД кластеров хранятся внутри plpgsql-функций, которые вызывает плпрокси.&lt;br /&gt;&lt;br /&gt;Существует 3 функции, которые вы должны создать для правильной конфигурации. Давайте создадим их в БД прокси.&lt;br /&gt;&lt;br /&gt;1) plproxy.get_cluster_version(cluster_name text)&lt;br /&gt;Эта функция вызывается при каждом запросе и она используется для отслеживания изменений конфигурации кластера (если возвращаемый ей номер больше, чем закешированное значение - конфигурация перезагружается). Давайте начнем с первой версии конфигурации. Пример:&lt;br /&gt;CREATE OR REPLACE FUNCTION plproxy.get_cluster_version(cluster_name text) RETURNS int AS $$&lt;br /&gt;BEGIN&lt;br /&gt;IF cluster_name = 'queries' THEN&lt;br /&gt;RETURN 1;&lt;br /&gt;END IF;&lt;br /&gt;END;&lt;br /&gt;$$ LANGUAGE plpgsql;&lt;br /&gt;&lt;br /&gt;2) plproxy.get_cluster_partitions(cluster_name text)&lt;br /&gt;Эта функция должна возвращать строки для соединения для всех партиций в правильном порядке.&lt;br /&gt;Из-за необоснованного ограничения общее кол-во должно быть кратно 2. Это необоснованное ограничение можно легко обойти, но это будет объяснено в другой раз.&lt;br /&gt;&lt;br /&gt;CREATE OR REPLACE FUNCTION plproxy.get_cluster_partitions(cluster_name text) RETURNS SETOF text AS $$&lt;br /&gt;BEGIN&lt;br /&gt;IF cluster_name = 'queries' THEN&lt;br /&gt;RETURN NEXT 'host=127.0.0.1 dbname=queries_0000';&lt;br /&gt;RETURN NEXT 'host=127.0.0.1 dbname=queries_0001';&lt;br /&gt;RETURN;&lt;br /&gt;END IF;&lt;br /&gt;RAISE EXCEPTION 'no such cluster: %', cluster_name;&lt;br /&gt;END;&lt;br /&gt;$$ LANGUAGE plpgsql SECURITY DEFINER;&lt;br /&gt;&lt;br /&gt;Если в строке соединения не указан логин для БД, будет использован текущий (CURRENT_USER). Так как плпрокси не знает ни одного пароля, разделенные БД должны разрешать соединения от БД прокси.&lt;br /&gt;&lt;br /&gt;3)plproxy.get_cluster_config(cluster_name text)&lt;br /&gt;Это эквивалент инициализационного файла. Функция должна возвращать параметры как пары ключь-значение. Все они - не обязательные, но нужно определить функцию-пустышку:&lt;br /&gt;CREATE OR REPLACE FUNCTION plproxy.get_cluster_config (cluster_name text, out key text, out val text)&lt;br /&gt;RETURNS SETOF record AS $$&lt;br /&gt;BEGIN&lt;br /&gt;RETURN;&lt;br /&gt;END;&lt;br /&gt;$$ LANGUAGE plpgsql;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Более подробно о параметрах и что они делают - читайте в документации plproxy.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Теперь установка завершена и можно начать "играть" с нашим новым кластером.&lt;br /&gt;&lt;br /&gt;Давайте создадим новую таблицу для хранения имен пользователей (логинов) на обеих партициях.&lt;br /&gt;&lt;br /&gt;#queries_0000=# CREATE TABLE users (username text PRIMARY KEY);&lt;br /&gt;#queries_0001=# CREATE TABLE users (username text PRIMARY KEY);&lt;br /&gt;&lt;br /&gt;Также нужно создать новую функцию, которая будет добавлять новые имена пользователей в таблицу:&lt;br /&gt;&lt;br /&gt;CREATE OR REPLACE FUNCTION insert_user(i_username text) RETURNS text AS $$&lt;br /&gt;BEGIN&lt;br /&gt;PERFORM 1 FROM users WHERE username = i_username;&lt;br /&gt;IF NOT FOUND THEN&lt;br /&gt;INSERT INTO users (username) VALUES (i_username);&lt;br /&gt;RETURN 'user created';&lt;br /&gt;ELSE&lt;br /&gt;RETURN 'user already exists';&lt;br /&gt;END IF;&lt;br /&gt;END;&lt;br /&gt;$$ LANGUAGE plpgsql SECURITY DEFINER;&lt;br /&gt;&lt;br /&gt;Теперь давайте создадим прокси-функцию в БД прокси, которая будет вызывать запросы на партициях.&lt;br /&gt;&lt;br /&gt;queries=#&lt;br /&gt;CREATE OR REPLACE FUNCTION insert_user(i_username text) RETURNS TEXT AS $$&lt;br /&gt;CLUSTER 'queries'; RUN ON hashtext(i_username);&lt;br /&gt;$$ LANGUAGE plproxy;&lt;br /&gt;&lt;br /&gt;Заполнение партиций случайными данными:&lt;br /&gt;SELECT insert_user('user_number_'||generate_series::text) FROM generate_series(1,10000);&lt;br /&gt;&lt;br /&gt;Теперь, если мы посмотрим во все БД мы увидим, что обе заполнены и заполнение почти равномерное.&lt;br /&gt;queries_0001 count(*) -&gt; 5071&lt;br /&gt;queries_0000 count(*) -&gt; 4930&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/6223781663727322959-8706769317670861024?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/8706769317670861024/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=8706769317670861024' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/8706769317670861024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/8706769317670861024'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2009/03/skype-plproxy.html' title='[Перевод] PostgreSQL кластер: партишинг с plproxy (часть 1)'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-5177749347675222027</id><published>2009-03-05T18:10:00.000+03:00</published><updated>2009-04-02T14:12:14.950+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='uuid'/><category scheme='http://www.blogger.com/atom/ns#' term='newid'/><category scheme='http://www.blogger.com/atom/ns#' term='mssql'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><title type='text'>MS SQL newid() для PostgreSQL</title><content type='html'>&lt;span style="font-weight:bold;"&gt;UPDATE:&lt;/span&gt;&lt;br /&gt;Как оказалось есть UUID. но нет функции-генератора.&lt;br /&gt;Так что я поменял тип возвращаемого результата на UUID.&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;В данный момент работаю над переходом с MSSQL на бесплатный PostgreSQL.&lt;br /&gt;Первое, на что напоролся - GUID`ов НЕТ!&lt;br /&gt;Поковырял функции постгреса и написал замену:&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-size:11px"&gt;&lt;br /&gt;drop function newid();&lt;br /&gt;create or replace function newid() returns uuid&lt;br /&gt;as $$&lt;br /&gt;&lt;br /&gt;DECLARE r varchar='';&lt;br /&gt; chars varchar='0123456789abcdef';&lt;br /&gt; i int:=1;&lt;br /&gt; pos int=0;&lt;br /&gt; one_char varchar(1);&lt;br /&gt;begin&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; while i&lt;=32 LOOP&lt;br /&gt;  pos=round(random()*15)+1;&lt;br /&gt;  one_char=cast (substr(chars,pos, 1) as varchar);&lt;br /&gt;  r=r||one_char;&lt;br /&gt;  if (length(r) in (8,13,18,23)) then r=r||'-'; end if;&lt;br /&gt;  i=i+1;&lt;br /&gt; end LOOP;&lt;br /&gt;&lt;br /&gt; return r;&lt;br /&gt;end&lt;br /&gt;$$&lt;br /&gt;  LANGUAGE 'plpgsql';&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-5177749347675222027?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/5177749347675222027/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=5177749347675222027' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/5177749347675222027'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/5177749347675222027'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2009/03/ms-sql-newid-postgresql.html' title='MS SQL newid() для PostgreSQL'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-5050747844845016660</id><published>2009-02-25T11:28:00.000+03:00</published><updated>2009-04-16T18:30:47.024+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='delete'/><category scheme='http://www.blogger.com/atom/ns#' term='mssql'/><title type='text'>MSSQL - удаление большого кол-ва записей</title><content type='html'>исследование темы - удаление большого кол-ва записей из БД.&lt;br /&gt;результат: скрипт для пошагового удаления.&lt;br /&gt;причем удалять придется не при запросе, а в автоматическом режиме. т.е. например раз в 10 часов...&lt;br /&gt;&lt;br /&gt;* памятка:&lt;br /&gt;нельзя удалять большое кол-во записей сразу, т.к.:&lt;br /&gt;1. распухнет лог транзакций&lt;br /&gt;2. может не хватить свободного места из-за п.1&lt;br /&gt;3. доолгооо будет удалятся&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;WHILE 1 = 1&lt;br /&gt;    BEGIN&lt;br /&gt;        DELETE  TOP (10000) --нужно использовать top т.к. rowcount в новых версиях не будет работать для delete&lt;br /&gt;        FROM    Table1 --таблица, откуда удалять&lt;br /&gt;        WHERE   ToBeDeleted = 't'  --флаг "для удаления"&lt;br /&gt;&lt;br /&gt;        WAITFOR DELAY '000:00:05' -- 5 задержка&lt;br /&gt;&lt;br /&gt;        IF @@ROWCOUNT = 0&lt;br /&gt;            BREAK &lt;br /&gt;    END&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-5050747844845016660?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/5050747844845016660/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=5050747844845016660' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/5050747844845016660'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/5050747844845016660'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2009/02/mssql.html' title='MSSQL - удаление большого кол-ва записей'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-2624828253883020305</id><published>2009-02-09T13:34:00.000+03:00</published><updated>2009-02-09T19:43:27.258+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='voicecards.ru'/><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='linq'/><category scheme='http://www.blogger.com/atom/ns#' term='linq 2 xml'/><title type='text'>NET 3.5. Linq. Пример получения списка категорий из xml-файла системы voicecards.ru</title><content type='html'>&lt;pre style="font-size:11px;  overflow:auto"&gt;&lt;br /&gt;XDocument xml = XDocument.Load(Page.MapPath("~/voicecards/xml/data.xml"));&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        try&lt;br /&gt;        {&lt;br /&gt;            var cards = (from x in xml.Descendants("voicecards").Elements("cards").Elements("card")&lt;br /&gt;                         join c in xml.Descendants("voicecards").Elements("categories").Elements("category") on x.Element("catid").Value equals c.Element("catid").Value&lt;br /&gt;                         select new&lt;br /&gt;                         {&lt;br /&gt;                             CardID = x.Element("cardid").Value,&lt;br /&gt;                             CatID = int.Parse(c.Element("catid").Value),&lt;br /&gt;                             CatName = c.Element("nameshort").Value,&lt;br /&gt;                             CatParentID = c.Element("parentid").Value,&lt;br /&gt;                             CatNameFull = c.Element("namefull").Value,&lt;br /&gt;                         }&lt;br /&gt;                             into s&lt;br /&gt;                             group s by new { s.CatID, s.CatName, s.CatNameFull, s.CatParentID } into g&lt;br /&gt;                             select new&lt;br /&gt;                             {&lt;br /&gt;                                 Count=g.Count(),&lt;br /&gt;                                 g.Key.CatID,&lt;br /&gt;                                 g.Key.CatName,&lt;br /&gt;                                 g.Key.CatNameFull,&lt;br /&gt;                                 g.Key.CatParentID&lt;br /&gt;                             }&lt;br /&gt;                             );&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        }&lt;br /&gt;        catch { }&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-2624828253883020305?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/2624828253883020305/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=2624828253883020305' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/2624828253883020305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/2624828253883020305'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2009/02/xml-voicecardsru.html' title='NET 3.5. Linq. Пример получения списка категорий из xml-файла системы voicecards.ru'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-7163545263855107698</id><published>2009-01-30T14:16:00.000+03:00</published><updated>2009-02-25T11:32:13.526+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='портфолио'/><category scheme='http://www.blogger.com/atom/ns#' term='podarki.ru'/><category scheme='http://www.blogger.com/atom/ns#' term='potolok-perstige.ru'/><category scheme='http://www.blogger.com/atom/ns#' term='rio-travel.ru'/><title type='text'>Портфолио...</title><content type='html'>&lt;span style="font-style:italic;"&gt;пояснение&lt;/span&gt;: моя часть работы - верстка (собаку съел) и кодинг.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_8J-eEoBbQF8/SYLiZzbpY5I/AAAAAAAAADc/rrM0E2PoiiQ/s1600-h/rio-travel.jpg"&gt;&lt;img style=" margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 186px;" src="http://1.bp.blogspot.com/_8J-eEoBbQF8/SYLiZzbpY5I/AAAAAAAAADc/rrM0E2PoiiQ/s200/rio-travel.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5297045044671898514" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;a target="_blank" href="http://rio-travel.ru"&gt;rio-travel.ru&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_8J-eEoBbQF8/SYLiQE4_UeI/AAAAAAAAADU/aF5eawD1fgM/s1600-h/potolok-perstige.ru+3.jpg"&gt;&lt;img style="margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 182px;" src="http://4.bp.blogspot.com/_8J-eEoBbQF8/SYLiQE4_UeI/AAAAAAAAADU/aF5eawD1fgM/s200/potolok-perstige.ru+3.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5297044877559681506" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;a target="_blank" href="http://potolok-perstige.ru"&gt;potolok-perstige.ru&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_8J-eEoBbQF8/SYLiD3TWZXI/AAAAAAAAADM/I3DqR81PWi4/s1600-h/podarki.ru+2.jpg"&gt;&lt;img style="margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 129px; height: 200px;" src="http://2.bp.blogspot.com/_8J-eEoBbQF8/SYLiD3TWZXI/AAAAAAAAADM/I3DqR81PWi4/s200/podarki.ru+2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5297044667753719154" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;a target="_blank" href="http://podarki.ru"&gt;podarki.ru&lt;/a&gt;&lt;br /&gt;Потрачено 90% от проработанных 2-ух лет. dotNet 2.0 (3.5)/MSSQL/JS/ да много всего.&lt;br /&gt;Моя работа в этом проекте - верстка и кодинг. Жуткое кол-во оптимизаций + кэширований.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-7163545263855107698?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/7163545263855107698/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=7163545263855107698' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/7163545263855107698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/7163545263855107698'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2009/01/blog-post.html' title='Портфолио...'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_8J-eEoBbQF8/SYLiZzbpY5I/AAAAAAAAADc/rrM0E2PoiiQ/s72-c/rio-travel.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-8947972184544675905</id><published>2008-07-11T17:34:00.000+04:00</published><updated>2008-07-11T17:47:23.373+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='url rewrite'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='net 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='bug'/><category scheme='http://www.blogger.com/atom/ns#' term='postback'/><category scheme='http://www.blogger.com/atom/ns#' term='asp'/><title type='text'>URL Rewrite - .NET</title><content type='html'>Столкнулся с необходимостью сделать ЧПУ (человеко-понятные урл`ы) на .NET`е.&lt;br /&gt;Первым под руку попался компонент &lt;a href="http://urlrewriting.net"&gt;urlrewriting.net&lt;/a&gt;. Всё было ок, пока не выяснилось, что PostBack`и не работают - не передается информация и IsPostBack=false. Поковырялся... и нашел другой компонент - &lt;a href="http://urlrewriter.net/"&gt;urlrewriter.net&lt;/a&gt; - он работал сразу, только вот ссылку в поле формы action не ту писал (а точнее вообще не писал, но хоть работало). Долго копал интернет - оказалось есть "чистый" способ. &lt;br /&gt;&lt;br /&gt;Оговорюсь - сайт на C# ASP.NET 2.0.&lt;br /&gt;&lt;br /&gt;Делаем в корне сайта папку App_Browsers. Создаем файл Form.browser с содержимым:&lt;br /&gt;&lt;code style="font-size: 11px;"&gt;&lt;br /&gt;&amp;lt;browsers&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;browser refID="Default"&amp;gt;&lt;br /&gt;    &amp;lt;controlAdapters&amp;gt;&lt;br /&gt;      &amp;lt;adapter controlType="System.Web.UI.HtmlControls.HtmlForm"&lt;br /&gt;               adapterType="FormRewriterControlAdapter" /&amp;gt;&lt;br /&gt;    &amp;lt;/controlAdapters&amp;gt;&lt;br /&gt;  &amp;lt;/browser&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/browsers&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;далее в папке App_Code создаем файл FormRewriter.cs с содержимым:&lt;br /&gt;&lt;code style="font-size: 11px;"&gt;&lt;br /&gt;using System;&lt;br /&gt;using System.Data;&lt;br /&gt;using System.Configuration;&lt;br /&gt;using System.Web;&lt;br /&gt;using System.Web.Security;&lt;br /&gt;using System.Web.UI;&lt;br /&gt;using System.Web.UI.WebControls;&lt;br /&gt;using System.Web.UI.WebControls.WebParts;&lt;br /&gt;using System.Web.UI.HtmlControls;&lt;br /&gt;&lt;br /&gt;/// &lt;summary&gt;&lt;br /&gt;/// Summary description for FormRewriter&lt;br /&gt;/// &lt;/summary&gt;&lt;br /&gt;public class FormRewriterControlAdapter : System.Web.UI.Adapters.ControlAdapter&lt;br /&gt;{&lt;br /&gt;    protected override void Render(System.Web.UI.HtmlTextWriter writer)&lt;br /&gt;    {&lt;br /&gt;        base.Render(new RewriteFormHtmlTextWriter(writer));&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;public class RewriteFormHtmlTextWriter : HtmlTextWriter&lt;br /&gt;{&lt;br /&gt;    public RewriteFormHtmlTextWriter(HtmlTextWriter writer)  : base(writer)&lt;br /&gt;    {&lt;br /&gt;        this.InnerWriter = writer.InnerWriter;&lt;br /&gt;    }&lt;br /&gt;    public override void WriteAttribute(string name, string value, bool fEncode)&lt;br /&gt;    {&lt;br /&gt;        if (name == "action")&lt;br /&gt;        {&lt;br /&gt;            HttpContext Context;&lt;br /&gt;            Context = HttpContext.Current;&lt;br /&gt;            if (Context.Items["ActionAlreadyWritten"] == null)&lt;br /&gt;            {&lt;br /&gt;                value = Context.Request.RawUrl;&lt;br /&gt;                Context.Items["ActionAlreadyWritten"] = true;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        base.WriteAttribute(name, value, fEncode);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Пояснение простое:&lt;br /&gt;1 - это обработчик для разных браузеров&lt;br /&gt;2 - это код, который подменяет тег action у формы.&lt;br /&gt;&lt;br /&gt;И PostBack теперь правильно работает...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-8947972184544675905?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/8947972184544675905/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=8947972184544675905' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/8947972184544675905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/8947972184544675905'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2008/07/url-rewrite-net.html' title='URL Rewrite - .NET'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-4595840834455810429</id><published>2008-04-22T14:10:00.000+04:00</published><updated>2008-04-22T14:44:19.621+04:00</updated><title type='text'>просто так...</title><content type='html'>&lt;object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="348" height="168" id="348x168" align="middle"&gt;&lt;param name="allowScriptAccess" value="sameDomain" /&gt;&lt;param name="movie" value="http://podarki.ru/media/podarki.ru.wanted.swf?var_gpic=http://member.podarki.ru/pictures/2a74a057-8d07-4a25-b913-459c3f0a0716.jpg&amp;var_icon=http://podarki.ru/images/blog_icon_jff.gif&amp;var_gn=Ноутбук Toshiba Satellite M100-179&amp;var_gwf=Хочу подарок ...просто так&amp;var_glink=http://podarki.ru/купить/Ноутбук_Toshiba_Satellite_M100-179_205091" /&gt;&lt;param name="loop" value="false" /&gt;&lt;param name="quality" value="high" /&gt;&lt;param name="bgcolor" value="#ffffff" /&gt;&lt;embed src="http://podarki.ru/media/podarki.ru.wanted.swf?var_gpic=http://member.podarki.ru/pictures/2a74a057-8d07-4a25-b913-459c3f0a0716.jpg&amp;var_icon=http://podarki.ru/images/blog_icon_jff.gif&amp;var_gn=Ноутбук Toshiba Satellite M100-179&amp;var_gwf=Хочу подарок ...просто так&amp;var_glink=http://podarki.ru/купить/Ноутбук_Toshiba_Satellite_M100-179_205091" loop="false" quality="high" bgcolor="#ffffff" width="348" height="168" name="348x168" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" &gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-4595840834455810429?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/4595840834455810429/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=4595840834455810429' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/4595840834455810429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/4595840834455810429'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2008/04/blog-post.html' title='просто так...'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-3526693954156388604</id><published>2008-03-21T19:56:00.000+03:00</published><updated>2008-03-21T19:59:29.541+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='poll'/><category scheme='http://www.blogger.com/atom/ns#' term='drupal'/><category scheme='http://www.blogger.com/atom/ns#' term='module'/><title type='text'>Drupal 5.7 | Модуль Poll - мой патч для анонимных голосующих</title><content type='html'>Родной модуль имел тупую систему фильтрации для анонимов - по ip! Я исправил.&lt;br /&gt;&lt;br /&gt;Используется куки, плюс задержка между повторными голосованиями - это должно спасать от флуда.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://drupal.ru/files/drupal-5.7-poll-update.zip"&gt;drupal-5.7-poll-update.zip&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-3526693954156388604?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/3526693954156388604/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=3526693954156388604' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/3526693954156388604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/3526693954156388604'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2008/03/drupal-57-poll.html' title='Drupal 5.7 | Модуль Poll - мой патч для анонимных голосующих'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-1799875907604855501</id><published>2008-03-21T16:58:00.000+03:00</published><updated>2008-03-21T17:00:26.644+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='limit'/><category scheme='http://www.blogger.com/atom/ns#' term='drupal'/><category scheme='http://www.blogger.com/atom/ns#' term='upload'/><category scheme='http://www.blogger.com/atom/ns#' term='size'/><title type='text'>Drupal - Закачка файлов - изменение настройки размера</title><content type='html'>Всё просто. в корне файл .htaccess , в конец добавить:&lt;br /&gt;&lt;br /&gt;php_value upload_max_filesize 40M&lt;br /&gt;php_value post_max_size 40M&lt;br /&gt;&lt;br /&gt;правда получается в 2 раза меньше... но работает!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-1799875907604855501?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/1799875907604855501/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=1799875907604855501' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/1799875907604855501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/1799875907604855501'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2008/03/drupal.html' title='Drupal - Закачка файлов - изменение настройки размера'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-4977523119760544145</id><published>2008-03-03T14:00:00.000+03:00</published><updated>2008-03-03T20:02:37.395+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='logo'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>PHP. Лого на загружаемое изображение.</title><content type='html'>Вот пример функции, которая вставляет лого (png с  прозрачностью) в изображение. Внимание! Скрипт должен запускаться с правами на chmod и удаление файлов.&lt;br /&gt;&lt;br /&gt;&lt;code style="font-size:12px"&gt;&lt;br /&gt;&lt;?&lt;br /&gt;// вставляет лого в пикчу&lt;br /&gt;//$logo_img - полный путь до лого в формате png с прозрачностью&lt;br /&gt;//$img - полный путь к обрабатываемому изображению&lt;br /&gt;function SetLogo($logo_img ,$img)&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;    $info = @getimagesize($img);&lt;br /&gt;    &lt;br /&gt;    //проверка расширения и доступности файла&lt;br /&gt;    if (!$info)&lt;br /&gt;        return -1;&lt;br /&gt;&lt;br /&gt;    switch( $info[2])&lt;br /&gt;    {&lt;br /&gt;        case "2": //jpg&lt;br /&gt;            $srcImage = @ImageCreateFromJPEG($img);                &lt;br /&gt;        break;&lt;br /&gt;            &lt;br /&gt;        case "1"://gif&lt;br /&gt;            $srcImage = ImageCreateFromGIF($img);&lt;br /&gt;        break;&lt;br /&gt;&lt;br /&gt;        case "3"://png&lt;br /&gt;            $srcImage = ImageCreateFromPNG($img);&lt;br /&gt;        break;&lt;br /&gt;        &lt;br /&gt;        default:&lt;br /&gt;            return -1;&lt;br /&gt;        break;&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    $logoImage = ImageCreateFromPNG($logo_img);&lt;br /&gt;    if (!$logoImage)&lt;br /&gt; return -1;&lt;br /&gt;&lt;br /&gt;    $srcWidth  = ImageSX($srcImage);&lt;br /&gt;    $srcHeight = ImageSY($srcImage);&lt;br /&gt;        &lt;br /&gt;    $logoWidth  = ImageSX($logoImage);&lt;br /&gt;    $logoHeight = ImageSY($logoImage);&lt;br /&gt;        &lt;br /&gt;    imageAlphaBlending($logoImage, false);&lt;br /&gt;    imageSaveAlpha($logoImage, true);&lt;br /&gt;    &lt;br /&gt;    $trcolor = ImageColorAllocate($logoImage, 255, 255, 255);&lt;br /&gt;    ImageColorTransparent($logoImage , $trcolor);&lt;br /&gt;    &lt;br /&gt;    $logo_inserted=false;&lt;br /&gt;    &lt;br /&gt;    if (($srcWidth&gt;$logoWidth) &amp;&amp; ($srcHeight&gt;$logoHeight))&lt;br /&gt;        $logo_inserted=imagecopy($srcImage, $logoImage, $srcWidth - $logoWidth, $srcHeight - $logoHeight, 0, 0, $logoWidth, $logoHeight);&lt;br /&gt;          &lt;br /&gt;    if ($logo_inserted)&lt;br /&gt;    {&lt;br /&gt;    &lt;br /&gt;        @chmod($img, 0777);&lt;br /&gt;        if (@unlink($img))&lt;br /&gt;        {&lt;br /&gt;          &lt;br /&gt;            switch( $info[2])&lt;br /&gt;            {&lt;br /&gt;                case "2"://jpg&lt;br /&gt;                    ImageJPEG($srcImage, $img, 100);&lt;br /&gt;                break;&lt;br /&gt;                &lt;br /&gt;                case "1"://gif&lt;br /&gt;                    ImageGIF($srcImage, $img);                    &lt;br /&gt;                break;&lt;br /&gt;&lt;br /&gt;                case "3"://png&lt;br /&gt;                    ImagePNG($srcImage, $img);                    &lt;br /&gt;                break;&lt;br /&gt;                &lt;br /&gt;            }&lt;br /&gt;        }   &lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    @ImageDestroy($srcImage);        &lt;br /&gt;}&lt;br /&gt;?&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-4977523119760544145?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/4977523119760544145/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=4977523119760544145' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/4977523119760544145'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/4977523119760544145'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2008/03/php.html' title='PHP. Лого на загружаемое изображение.'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-6293710031776300746</id><published>2008-02-16T00:50:00.000+03:00</published><updated>2008-12-09T01:36:33.068+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tinymce'/><category scheme='http://www.blogger.com/atom/ns#' term='drupal'/><title type='text'>Drupal 5. TinyMCE</title><content type='html'>Нужно скачать и установить модуль &lt;a href="http://drupal.org/project/tinymce"&gt;TinyMCE&lt;/a&gt; и сам &lt;a href="http://tinymce.moxiecode.com/"&gt;редактор&lt;/a&gt;.&lt;br /&gt;Редактор нужно положить в каталог modules/tinymce/tinymce.&lt;br /&gt;Теперь обязательно на странице ?q=admin/user/access поставьте какой-нибудь роли возможность пользоватся tinymce (иначе не смежете сделать следующий шаг).&lt;br /&gt;Потом в настройках нужно создать профиль для этого редактора (это не страшно, просто настраивается какие возможности он будет иметь) и поставить кучу галочек в  разделе Buttons and Plugins.&lt;br /&gt;Так же посмотрите другие разделы...&lt;br /&gt;&lt;br /&gt;В результате будет возможность использовать визуальный редактор:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_8J-eEoBbQF8/R7YM_Re13zI/AAAAAAAAAAY/l6LTEf2Oq-E/s1600-h/%D0%9E%D1%82%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D1%82%D1%8C+%D0%A1%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0+-+Drupal_1203113225624.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_8J-eEoBbQF8/R7YM_Re13zI/AAAAAAAAAAY/l6LTEf2Oq-E/s200/%D0%9E%D1%82%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D1%82%D1%8C+%D0%A1%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0+-+Drupal_1203113225624.png" alt="" id="BLOGGER_PHOTO_ID_5167331903618277170" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-6293710031776300746?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/6293710031776300746/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=6293710031776300746' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/6293710031776300746'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/6293710031776300746'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2008/02/drupal-5-tinymce.html' title='Drupal 5. TinyMCE'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_8J-eEoBbQF8/R7YM_Re13zI/AAAAAAAAAAY/l6LTEf2Oq-E/s72-c/%D0%9E%D1%82%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D1%82%D1%8C+%D0%A1%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0+-+Drupal_1203113225624.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-3472039110509370188</id><published>2008-02-16T00:15:00.000+03:00</published><updated>2008-02-16T01:17:31.101+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='drupal'/><category scheme='http://www.blogger.com/atom/ns#' term='module'/><title type='text'>Drupal 5. Вкусный набор добавочных модулей.</title><content type='html'>Мой (да и вообще общепризнанный) набор модулей для Друпала:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://drupal.org/project/views"&gt;Views&lt;/a&gt; - позволяет настраивать вывод информации о содержании (ноды).&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://drupal.org/project/cck"&gt;CCK (Content Construction Kit)&lt;/a&gt; - мега вещь! Дает возможность создавать новые типы полей у типов содержания.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://drupal.org/project/webform"&gt;WebForm&lt;/a&gt; - Возможность создавать веб-формы (опросники, формы).&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://drupal.org/project/jquery_update"&gt;jQuery_update&lt;/a&gt; - Обновление. (Кроме распаковки в каталог modules нужно файл jquery.js положить поверх старого в каталог misc)&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://drupal.org/project/viewfield"&gt;viewfield&lt;/a&gt; - Улучшение для модуля views.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://drupal.org/project/contemplate"&gt;contemplate&lt;/a&gt; - Улучшение шаблонизации. Можно для ноды делать свой шаблон. Так же дает возможность использовать файлы-шаблоны по типу: node-тип_ноды-поле.tpl.php.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://drupal.org/node/193423"&gt;taxonomy_redirect&lt;/a&gt; - дает возможность изменить ссылки таксономии.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://drupal.org/node/207449"&gt;admin_menu&lt;/a&gt; -Добавляет к админке вверх popup меню для быстрой навигации.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://drupal.org/project/pathauto"&gt;pathauto&lt;/a&gt; - Автоматически создаёт читаемые ссылки на ноду.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Чуть позже опишу пример использования CCK+Views для создания каталога продукции.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-3472039110509370188?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/3472039110509370188/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=3472039110509370188' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/3472039110509370188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/3472039110509370188'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2008/02/drupal-5_15.html' title='Drupal 5. Вкусный набор добавочных модулей.'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-6318535567536894490</id><published>2008-02-15T23:55:00.001+03:00</published><updated>2008-02-16T00:14:04.763+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='install'/><category scheme='http://www.blogger.com/atom/ns#' term='drupal'/><category scheme='http://www.blogger.com/atom/ns#' term='russian'/><title type='text'>Drupal 5. Установка и русский язык.</title><content type='html'>Пишу себе памятку :-)&lt;br /&gt;&lt;br /&gt;Нужно:&lt;br /&gt;- сам друпал- &lt;a href="http://drupal.org/"&gt;Сайт друпала&lt;/a&gt; (пока лучше брать 5-ую версию, т.к. под неё много модулей-дополнений)&lt;br /&gt;- русский язык- &lt;a href="http://drupal.ru/files/russianForDrupal53.zip"&gt;для версии 5.3&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;1. создаём базу даных (utf-8)&lt;br /&gt;2. распаковываем архив друпала&lt;br /&gt;3. распаковать "русский" в каталог друпала (поверх)&lt;br /&gt;4. теперь уже стартуем инсталляцию - просто открываем сайт в браузере.&lt;br /&gt;5. Выбрать "Русский Drupal" и язык "Русский"&lt;br /&gt;6. По умолчанию в русской версии создаёт сразу админскую запись- имя: admin, пароль: admin. Не забудьте сменить !!!&lt;br /&gt;&lt;br /&gt;подробно - &lt;a href="http://drupal.ru/node/4195"&gt;тут&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-6318535567536894490?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/6318535567536894490/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=6318535567536894490' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/6318535567536894490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/6318535567536894490'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2008/02/drupal-5.html' title='Drupal 5. Установка и русский язык.'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6223781663727322959.post-4207791593487005779</id><published>2008-02-12T10:25:00.000+03:00</published><updated>2008-12-09T01:36:33.136+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lays'/><category scheme='http://www.blogger.com/atom/ns#' term='flash'/><title type='text'>Lay`s - я победил систему :-)</title><content type='html'>Уря!&lt;br /&gt;Пришла супер флешка!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_8J-eEoBbQF8/R7FMWxe13yI/AAAAAAAAAAM/ISO5VOd_CGs/s1600-h/Photo%2833%29.jpg"&gt;&lt;img style="margin: 0pt 20px 10px 0pt; cursor: pointer;" src="http://4.bp.blogspot.com/_8J-eEoBbQF8/R7FMWxe13yI/AAAAAAAAAAM/ISO5VOd_CGs/s320/Photo%2833%29.jpg" alt="" id="BLOGGER_PHOTO_ID_5165994201694199586" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Минусы:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Нет лого Lay`s&lt;/li&gt;&lt;li&gt;128Mb&lt;/li&gt;&lt;/ul&gt;Плюсы:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Ошейник&lt;/li&gt;&lt;li&gt;USB-удлиннитель&lt;/li&gt;&lt;/ul&gt;А самое главное - это моя первая USB-флешка. Типа фишка - я не купил, а выйграл :)&lt;br /&gt;&lt;br /&gt;Способ победы - 3 карточки акции... в 3 часа ночи...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6223781663727322959-4207791593487005779?l=fun-vit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fun-vit.blogspot.com/feeds/4207791593487005779/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6223781663727322959&amp;postID=4207791593487005779' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/4207791593487005779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6223781663727322959/posts/default/4207791593487005779'/><link rel='alternate' type='text/html' href='http://fun-vit.blogspot.com/2008/02/lays.html' title='Lay`s - я победил систему :-)'/><author><name>FuN_ViT</name><uri>http://www.blogger.com/profile/07572662318307036024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_8J-eEoBbQF8/SkoEwbRwAoI/AAAAAAAAAFY/7gUtYRPxwZw/S220/fun_vit_face_2009.jpg.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_8J-eEoBbQF8/R7FMWxe13yI/AAAAAAAAAAM/ISO5VOd_CGs/s72-c/Photo%2833%29.jpg' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
