<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-4664086825463125663</atom:id><lastBuildDate>Thu, 16 Feb 2012 16:46:39 +0000</lastBuildDate><category>linux</category><category>soap</category><category>javascript</category><category>301</category><category>админ</category><category>mysql</category><category>web</category><category>php</category><category>1с</category><category>perl</category><category>ssh</category><category>bash</category><category>mongodb</category><category>google chrome</category><category>rewrite</category><category>метапрограммирование</category><category>кодер</category><category>kate</category><category>jquery</category><category>location</category><category>рефакторинг</category><category>код с душком</category><category>git</category><category>python</category><category>книги</category><category>nginx</category><category>wdsl</category><category>jetbrains pycharm</category><category>redirect</category><category>vim</category><category>map-reduce</category><category>cron</category><category>backup</category><category>ссылки</category><title>Кодовая польза</title><description /><link>http://code-hints.ns-keip.ru/</link><managingEditor>noreply@blogger.com (keip)</managingEditor><generator>Blogger</generator><openSearch:totalResults>31</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/ns-keip/code-hints" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="ns-keip/code-hints" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4664086825463125663.post-190012814803633576</guid><pubDate>Thu, 01 Dec 2011 17:51:00 +0000</pubDate><atom:updated>2011-12-02T10:24:27.784+06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">linux</category><title>linux: свободное место на диске (df - disk free)</title><description>&lt;pre style="text-align: center;"&gt;df -h&lt;/pre&gt;
&lt;br /&gt;
С помощью этой команды вы можете получить отчет об использовании дисков: сколько места на осталось на диске, сколько места занято — и все в приятном читабельном виде (ключ -h, то есть human readable — именно для этого)&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;$ df -h
Файловая система      Разм  Исп  Дост  Исп% смонтирована на
/dev/sda2              20G  4,6G   14G  25% /
tmpfs                 5,0M     0  5,0M   0% /lib/init/rw
udev                  989M     0  989M   0% /dev
tmpfs                 398M  856K  397M   1% /var/run/shm
tmpfs                 199M  932K  198M   1% /var/run
/dev/sda3              25G  3,6G   20G  16% /home
/dev/sdb1             466G  166G  300G  36% /media/WD
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4664086825463125663-190012814803633576?l=code-hints.ns-keip.ru' alt='' /&gt;&lt;/div&gt;</description><link>http://code-hints.ns-keip.ru/2011/12/linux-disk-usage.html</link><author>noreply@blogger.com (keip)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4664086825463125663.post-8699236467027236680</guid><pubDate>Tue, 20 Sep 2011 11:17:00 +0000</pubDate><atom:updated>2011-09-20T17:18:19.600+06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">linux</category><category domain="http://www.blogger.com/atom/ns#">bash</category><category domain="http://www.blogger.com/atom/ns#">ssh</category><title>ssh: принудительный вход по паролю</title><description>&lt;pre style="background: #ffffff; color: black;"&gt;ssh &lt;span style="color: #44aadd;"&gt;-o&lt;/span&gt; PubkeyAuthentication&lt;span style="color: #808030;"&gt;=&lt;/span&gt;no user@machine
&lt;/pre&gt;
&lt;br /&gt;
Такая команда может оказаться полезной, если у вас возникают проблемы при &lt;a href="http://draft.blogger.com/code-hints.ns-keip.ru/2011/09/ssh.html"&gt;авторизации по ключу&lt;/a&gt;.
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4664086825463125663-8699236467027236680?l=code-hints.ns-keip.ru' alt='' /&gt;&lt;/div&gt;</description><link>http://code-hints.ns-keip.ru/2011/09/ssh_20.html</link><author>noreply@blogger.com (keip)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4664086825463125663.post-6249140622367657245</guid><pubDate>Tue, 20 Sep 2011 05:09:00 +0000</pubDate><atom:updated>2011-09-20T11:09:07.097+06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ссылки</category><category domain="http://www.blogger.com/atom/ns#">jetbrains pycharm</category><category domain="http://www.blogger.com/atom/ns#">python</category><title>[Ссылка] JetBrains PyCharm 2.0 EAP</title><description>Вышел early access preview второй версии PyCharm:&lt;br /&gt;
&lt;a href="http://confluence.jetbrains.net/display/PYH/JetBrains+PyCharm+Preview"&gt;http://confluence.jetbrains.net/display/PYH/JetBrains+PyCharm+Preview&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4664086825463125663-6249140622367657245?l=code-hints.ns-keip.ru' alt='' /&gt;&lt;/div&gt;</description><link>http://code-hints.ns-keip.ru/2011/09/jetbrains-pycharm-20-eap.html</link><author>noreply@blogger.com (keip)</author><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4664086825463125663.post-3781180344409917338</guid><pubDate>Fri, 16 Sep 2011 10:00:00 +0000</pubDate><atom:updated>2011-09-16T16:00:14.355+06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">linux</category><category domain="http://www.blogger.com/atom/ns#">bash</category><category domain="http://www.blogger.com/atom/ns#">ссылки</category><category domain="http://www.blogger.com/atom/ns#">ssh</category><title>ssh вход без пароля</title><description>Чтобы заходить по ssh на какой-то сервер (&lt;i&gt;SOME_HOST&lt;/i&gt;), мы должны сделать примерно следующее:&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial;"&gt;&lt;span style="color: black;"&gt;cat ~/.ssh&lt;span style="color: #808030;"&gt;/&lt;/span&gt;id_rsa.pub &lt;span style="color: #808030;"&gt;|&lt;/span&gt; ssh login&lt;span style="color: #808030;"&gt;@&lt;/span&gt;&lt;i&gt;SOME_HOST&lt;/i&gt; 'cat &lt;/span&gt;&lt;span style="color: #808030;"&gt;&amp;gt;&amp;gt;&lt;/span&gt; .ssh&lt;span style="color: #808030;"&gt;/&lt;/span&gt;authorized_keys'
&lt;/pre&gt;
&lt;br /&gt;
То есть дописать наш публичный ключик в .ssh/authorized_keys на сервере. Разумеется, необходимо позаботиться, чтобы эти файлы и каталоги существовали. Чуть подробнее об этом:&amp;nbsp;&lt;a href="http://linuxproblem.org/art_9.html"&gt;http://linuxproblem.org/art_9.html&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4664086825463125663-3781180344409917338?l=code-hints.ns-keip.ru' alt='' /&gt;&lt;/div&gt;</description><link>http://code-hints.ns-keip.ru/2011/09/ssh.html</link><author>noreply@blogger.com (keip)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4664086825463125663.post-7280435284434403901</guid><pubDate>Sat, 20 Aug 2011 09:00:00 +0000</pubDate><atom:updated>2011-08-21T01:21:59.170+06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">vim</category><category domain="http://www.blogger.com/atom/ns#">kate</category><category domain="http://www.blogger.com/atom/ns#">ссылки</category><category domain="http://www.blogger.com/atom/ns#">jetbrains pycharm</category><title>Подсветка синтаксиса</title><description>Подсветка синтаксиса – это то, без чего нам теперь уже не обойтись и мы, конечно, благодарны средам разработки, которые одарили нас этим чудом. Но как экспортировать эти чудеса в html для интернетов? Есть несколько способов:&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Воспользоваться самой IDE. Так вы получите подсветку в стиле, привычном для вас и, возможно, ваших коллег (или соучастников сообщества, в которое вы обратились), &amp;nbsp;Например, &lt;a href="http://www.jetbrains.com/pycharm/"&gt;JetBrains Pycharm&lt;/a&gt; (а также &lt;a href="http://netbeans.org/"&gt;NetBeans&lt;/a&gt;) предлагает удобную подсветку синтаксиса с возможностью выбрать кусок текста, который надо подсветить.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Минус:&lt;/b&gt;&amp;nbsp;стили подсветки не инлайнятся и в код вашего сообщения, если вы куда-то этот код отправляете,&amp;nbsp;необходимо вставлять также и блок со стилем. Это не всегда удобно (например, мне сейчас пришлось так сделать).&lt;br /&gt;
&lt;style type="text/css"&gt;
.ln { color: rgb(0,0,0); font-weight: normal; font-style: normal; }
.s0 { }
.s1 { color: rgb(0,0,128); font-weight: bold; }
.s2 { color: rgb(128,128,128); font-style: italic; }
.s3 { color: rgb(0,0,255); }
.s4 { color: rgb(0,128,0); font-weight: bold; }
&lt;/style&gt;&lt;pre&gt;&lt;span class="s1"&gt;def &lt;/span&gt;&lt;span class="s0"&gt;setUp(self): 
        self.group = TestGroup() 
        self.moderation_rules = ModerationRule.get_many(data_getter=&lt;/span&gt;&lt;span class="s1"&gt;lambda &lt;/span&gt;&lt;span class="s0"&gt;x: moderation_rules)&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="s0"&gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Использовать редактор &lt;b&gt;VIM&lt;/b&gt;. &lt;br /&gt;
Не все знают, что в vim есть поддержка экспорта в HTML. Для этого существует команда &lt;b&gt;:TOhtml&lt;/b&gt;, которая генерирует html-код в стиле vim и выводит его в отдельном "окне", что позволяет его сохранить (&lt;b&gt;:w&lt;/b&gt;).&lt;br /&gt;
&lt;ul&gt;&lt;b&gt;Плюсы:&lt;/b&gt;
&lt;li&gt;Имеется почти на каждом компьютере с unix-подобной ОС.&lt;/li&gt;
&lt;li&gt;VIM такой VIM. Все-таки vim - это круто. Когда вы его используете, вы как бы соприкасаетесь с историей (жаль, это нужно далеко не всегда).&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;&lt;b&gt;Минусы:&lt;/b&gt;
&lt;li&gt;Вам в 80% случаях придется не по вкусу то, что он нагенерировал (или вы собираетесь вставить код на &lt;a href="http://www.linux.org.ru/"&gt;какой-нибудь черный фон&lt;/a&gt;?).&lt;/li&gt;
&lt;li&gt;Непонятно, как изменить цветовую схему того, что он выдает.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;br /&gt;
&lt;li&gt;Использовать сервис в интернете для подсветки синтаксиса. Например, &lt;a href="http://tohtml.com/"&gt;tohtml.com&lt;/a&gt; (а вообще их более 9000). Это, наверное, самый оптимальный вариант, так как код, изготовляемый сервисом, уже готов для вставки в различные формы на форумах, блогах итд.&lt;br /&gt;
&lt;ul&gt;&lt;b&gt;Плюсы:&lt;/b&gt;
&lt;li&gt;Код здесь получается довольно приятным по цвету и все стили - инлайнятся, поэтому не нужно вставлять никаких дополнительных блоков&lt;/li&gt;
&lt;li&gt;Поддерживается множество языков программирования, а также множество вариантов расцветки.&lt;/li&gt;
&lt;li&gt;Не нужно иметь IDE под рукой - сервис работает достаточно быстро и, разумеется, везде, где есть интернет.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;&lt;b&gt;Минусы:&lt;/b&gt;
&lt;li&gt;Возможно, вам покажется непривычной расцветка кода, которую вам предложит сервис&lt;/li&gt;
&lt;/ul&gt;
* более удобные реализации данной фичи есть, например, в редакторе kate (но это потребует кучу библиотек для KDE).&lt;br /&gt;
&lt;/li&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/ol&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4664086825463125663-7280435284434403901?l=code-hints.ns-keip.ru' alt='' /&gt;&lt;/div&gt;</description><link>http://code-hints.ns-keip.ru/2010/09/blog-post.html</link><author>noreply@blogger.com (keip)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4664086825463125663.post-724521669305183402</guid><pubDate>Fri, 19 Aug 2011 08:57:00 +0000</pubDate><atom:updated>2011-08-19T14:58:13.539+06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">vim</category><title>Vim: как заменить табы на пробелы</title><description>Достаточно простой способ замены табов на пробелы предлагает vim. Для этого нужно:&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Воспользоваться опцией &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;expandtab&lt;/span&gt;, которая позволяет при нажатии на клавишу TAB вставлять в текст пробелы. Делается это так:
&lt;span class="Apple-style-span" style="background-color: #003816; color: #3a3a3a; font-family: Helvetica, Arial, sans-serif; font-size: 13px; line-height: 23px;"&gt;&lt;pre style="background-color: #f2f2f2; border-bottom-color: rgb(217, 217, 217); border-bottom-style: solid; border-bottom-width: 1px; border-color: initial; border-left-color: rgb(217, 217, 217); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(217, 217, 217); border-right-style: solid; border-right-width: 1px; border-style: initial; border-top-color: rgb(217, 217, 217); border-top-style: solid; border-top-width: 1px; font-style: inherit; line-height: 14px; overflow-x: auto; overflow-y: auto; padding-bottom: 12px; padding-left: 12px; padding-right: 12px; padding-top: 12px; vertical-align: baseline;"&gt;:set expandtab&lt;/pre&gt;
&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Набрать команду &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;retab&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="background-color: #003816; color: #3a3a3a; font-family: Helvetica, Arial, sans-serif; font-size: 13px; line-height: 23px;"&gt;&lt;pre style="background-color: #f2f2f2; border-bottom-color: rgb(217, 217, 217); border-bottom-style: solid; border-bottom-width: 1px; border-color: initial; border-left-color: rgb(217, 217, 217); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(217, 217, 217); border-right-style: solid; border-right-width: 1px; border-style: initial; border-top-color: rgb(217, 217, 217); border-top-style: solid; border-top-width: 1px; font-style: inherit; line-height: 14px; overflow-x: auto; overflow-y: auto; padding-bottom: 12px; padding-left: 12px; padding-right: 12px; padding-top: 12px; vertical-align: baseline;"&gt;:retab&lt;/pre&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
Взято &lt;a href="http://vim.wikia.com/wiki/Converting_tabs_to_spaces"&gt;отсюда&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4664086825463125663-724521669305183402?l=code-hints.ns-keip.ru' alt='' /&gt;&lt;/div&gt;</description><link>http://code-hints.ns-keip.ru/2011/08/vim.html</link><author>noreply@blogger.com (keip)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4664086825463125663.post-5174944035299734306</guid><pubDate>Wed, 06 Jul 2011 06:09:00 +0000</pubDate><atom:updated>2011-07-06T12:10:03.502+06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">linux</category><category domain="http://www.blogger.com/atom/ns#">bash</category><category domain="http://www.blogger.com/atom/ns#">jetbrains pycharm</category><category domain="http://www.blogger.com/atom/ns#">python</category><title>Jetbrains Pycharm: полуавтоматическое обновление</title><description>В Pycharm есть очень много полезных фич, но лично мне не хватает автоматического обновления. К счастью, это очень просто лечится примерно таким bash-скриптом.&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background: #ffffff; color: black;"&gt;&lt;span style="color: dimgrey;"&gt;#!/bin/sh&lt;/span&gt;

&lt;span style="color: maroon; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #808030;"&gt;[&lt;/span&gt; $1 &lt;span style="color: #808030;"&gt;]&lt;/span&gt;
&lt;span style="color: maroon; font-weight: bold;"&gt;then&lt;/span&gt;
    VER&lt;span style="color: #808030;"&gt;=&lt;/span&gt;$1
&lt;span style="color: maroon; font-weight: bold;"&gt;else&lt;/span&gt;
    &lt;span style="color: #bb7977; font-weight: bold;"&gt;echo&lt;/span&gt; &lt;span style="color: #0000e6;"&gt;"Which version of pycharm ide do you want do download?"&lt;/span&gt;
    &lt;span style="color: #bb7977; font-weight: bold;"&gt;read&lt;/span&gt; VER
&lt;span style="color: maroon; font-weight: bold;"&gt;fi&lt;/span&gt;

NAME&lt;span style="color: #808030;"&gt;=&lt;/span&gt;PyCharm-$VER&lt;span style="color: maroon; font-weight: bold;"&gt;.&lt;/span&gt;tar&lt;span style="color: maroon; font-weight: bold;"&gt;.&lt;/span&gt;gz
EXTRACTED&lt;span style="color: #808030;"&gt;=&lt;/span&gt;pycharm-$VER

&lt;span style="color: #bb7977; font-weight: bold;"&gt;cd&lt;/span&gt; ~&lt;span style="color: #40015a;"&gt;/bin&lt;/span&gt;
wget &lt;span style="color: #44aadd;"&gt;-c&lt;/span&gt; http&lt;span style="color: #808030;"&gt;:&lt;/span&gt;&lt;span style="color: #40015a;"&gt;/&lt;/span&gt;&lt;span style="color: #40015a;"&gt;/download&lt;/span&gt;&lt;span style="color: maroon; font-weight: bold;"&gt;.&lt;/span&gt;jetbrains&lt;span style="color: maroon; font-weight: bold;"&gt;.&lt;/span&gt;&lt;span style="color: #40015a;"&gt;com/python&lt;/span&gt;&lt;span style="color: #40015a;"&gt;/&lt;/span&gt;$NAME
tar xzf $NAME
unlink pycharm
ln &lt;span style="color: #44aadd;"&gt;-s&lt;/span&gt; $EXTRACTED pycharm&lt;/pre&gt;&lt;br /&gt;
Использование:&lt;br /&gt;
sh ./download_pycharm.sh 1.5.2&lt;br /&gt;
либо&lt;br /&gt;
sh ./download_pycharm.sh&lt;br /&gt;
&lt;br /&gt;
Как видим, скрипт получает от нас номер нужной версии Pycharm, либо сам спрашивает. скачать. Затем, он выкачивает архив, распаковывает и складывает в подкаталог &lt;i&gt;bin&lt;/i&gt;&amp;nbsp;нашего домашнего каталога + играет с символическими ссылками, чтобы в ~/bin/pycharm можно было всегда найти свежую версию IDE.&lt;br /&gt;
&lt;br /&gt;
Разумеется, скрипт работает только пока ребята в JetBrains не поменяли структуру каталогов, из которых происходит скачивание.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4664086825463125663-5174944035299734306?l=code-hints.ns-keip.ru' alt='' /&gt;&lt;/div&gt;</description><link>http://code-hints.ns-keip.ru/2011/07/pycharm.html</link><author>noreply@blogger.com (keip)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4664086825463125663.post-7005508427575777696</guid><pubDate>Mon, 16 May 2011 11:02:00 +0000</pubDate><atom:updated>2011-05-16T17:05:55.598+06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">location</category><category domain="http://www.blogger.com/atom/ns#">301</category><category domain="http://www.blogger.com/atom/ns#">nginx</category><category domain="http://www.blogger.com/atom/ns#">rewrite</category><category domain="http://www.blogger.com/atom/ns#">redirect</category><title>Глобальный 301 редирект на/с "www." версию домена в nginx</title><description>Для чего если можно просто указать все версии домена в &lt;code&gt;server_name&lt;/code&gt;? Чтоб не слетали куки. А то авторизованный на &lt;code&gt;example.com&lt;/code&gt; человек оказывается не авторизован на &lt;code&gt;www.example.com&lt;/code&gt; куда его привела скажем ссылка из уведомления о новом ответе на форуме. Это очень раздражает.&lt;br /&gt;
&lt;br /&gt;
Подчтеннейшая публика! Предлагаю Вам вариант универсального редиректа на все виртуальные серваки управляемые целевым nginx'ом.&lt;br /&gt;
&lt;br /&gt;
В общем для мазохистов-любителей длинных имён и прочих эмо есть вариант редиректа с без "www" на "www":&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background: #f6f8ff; color: #000020;"&gt;server &lt;span style="color: #406080;"&gt;{&lt;/span&gt;
  server_name ~^&lt;span style="color: #406080;"&gt;(&lt;/span&gt;&lt;span style="color: #308080;"&gt;?&lt;/span&gt;&lt;span style="color: #200080; font-weight: bold;"&gt;!&lt;/span&gt;www&lt;span style="color: #0f69ff;"&gt;\.&lt;/span&gt;&lt;span style="color: #406080;"&gt;)&lt;/span&gt;&lt;span style="color: #406080;"&gt;;&lt;/span&gt;
  rewrite ^ http&lt;span style="color: #308080;"&gt;:&lt;/span&gt;&lt;span style="color: #40015a;"&gt;/&lt;/span&gt;&lt;span style="color: #40015a;"&gt;/www&lt;/span&gt;&lt;span style="color: #200080; font-weight: bold;"&gt;.&lt;/span&gt;&lt;span style="color: #007d45;"&gt;$host&lt;/span&gt;&lt;span style="color: #007d45;"&gt;$request_uri&lt;/span&gt; permanent&lt;span style="color: #406080;"&gt;;&lt;/span&gt;
&lt;span style="color: #406080;"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;br /&gt;
да, почему-то принято упоминать, что автор решения Игорь Сысоев.&lt;br /&gt;
&lt;br /&gt;
Для прочих же, кто не стремится нажимать лишние клавиши преобразование из "www" в без "www"&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background: #f6f8ff; color: #000020;"&gt;server &lt;span style="color: #406080;"&gt;{&lt;/span&gt;
  server_name ~^&lt;span style="color: #406080;"&gt;(&lt;/span&gt;&lt;span style="color: #308080;"&gt;?&lt;/span&gt;=www&lt;span style="color: #0f69ff;"&gt;\.&lt;/span&gt;&lt;span style="color: #406080;"&gt;)&lt;/span&gt;&lt;span style="color: #406080;"&gt;;&lt;/span&gt;
  &lt;span style="color: #200080; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #406080;"&gt;(&lt;/span&gt; &lt;span style="color: #007d45;"&gt;$host&lt;/span&gt; ~&lt;span style="color: #308080;"&gt;*&lt;/span&gt; &lt;span style="color: #1060b6;"&gt;"www.(.*)"&lt;/span&gt;&lt;span style="color: #406080;"&gt;)&lt;/span&gt;&lt;span style="color: #406080;"&gt;{&lt;/span&gt;
    &lt;span style="color: #7779bb; font-weight: bold;"&gt;set&lt;/span&gt; &lt;span style="color: #007d45;"&gt;$unwww&lt;/span&gt; &lt;span style="color: #007d45;"&gt;$1&lt;/span&gt;&lt;span style="color: #406080;"&gt;;&lt;/span&gt;
  &lt;span style="color: #406080;"&gt;}&lt;/span&gt;
  rewrite ^ &lt;span style="color: #007d45;"&gt;$scheme&lt;/span&gt;&lt;span style="color: #308080;"&gt;:&lt;/span&gt;&lt;span style="color: #40015a;"&gt;/&lt;/span&gt;&lt;span style="color: #40015a;"&gt;/&lt;/span&gt;&lt;span style="color: #007d45;"&gt;$unwww&lt;/span&gt;&lt;span style="color: #007d45;"&gt;$request_uri&lt;/span&gt; permanent&lt;span style="color: #406080;"&gt;;&lt;/span&gt;
&lt;span style="color: #200080; font-weight: bold;"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;br /&gt;
Автор решения Ваш покорный слуга :)&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;ВНИМАНИЕ!&lt;/b&gt; Всё это дело вставляется в начало блока &lt;code&gt;http&lt;/code&gt; файла &lt;code&gt;nginx.conf&lt;/code&gt; и не забываем убирать в конфах виртуальных серваков из &lt;code&gt;server_name&lt;/code&gt; вариант с/без "www" (убираем то, с чего редиректим), а то не сработает!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4664086825463125663-7005508427575777696?l=code-hints.ns-keip.ru' alt='' /&gt;&lt;/div&gt;</description><link>http://code-hints.ns-keip.ru/2011/05/301-www-nginx.html</link><author>noreply@blogger.com (Вадим Лопатюк)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4664086825463125663.post-1821395623522036682</guid><pubDate>Wed, 22 Dec 2010 06:54:00 +0000</pubDate><atom:updated>2010-12-22T11:57:54.836+05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">git</category><category domain="http://www.blogger.com/atom/ns#">ssh</category><title>Индивидуальные ssh ключи для разных git проектов</title><description>Ситуация - 2 проекта в разных&amp;nbsp;&lt;b&gt;git&lt;/b&gt; репозиториях. Скажем один с работы один личный. Допустим тебе срочно нужно подправить что-то в личном проекте, ты находишься на работе а нужно загрузить обновлённые файли в репозиторий. Я пользуюсь сервисом &lt;a href="http://codaset.com/"&gt;codaset.com&lt;/a&gt;&amp;nbsp;который, &lt;a href="http://ariejan.net/2009/09/08/codaset-com-github-but-better/"&gt;как известно, "как github только лучше"&lt;/a&gt;&amp;nbsp;(в частности&amp;nbsp;предлагает бесплатно 1 приватный проект для разработки с не ограниченным количеством участников и больше места). Соответственно по работе там один акк, а личный - другой и у них&lt;b&gt; разные ssh ключи для доступа&lt;/b&gt; (что тоже логично, как мне кажется), рабочий и личный. Личный у меня на флешке на шифрованном виртуальном диске.&lt;br /&gt;
&lt;br /&gt;
Проблема в том, что пытаясь залепить &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;push&lt;/span&gt; в репу из личного проекта система подхватывает рабочий публичный ключ (т.к. она уже работала с этим сервером) и соответсвенно не пускает меня с левым ключём в частный репозиторий.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;Выходы есть такие:&lt;/span&gt;&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;ol&gt;&lt;li&gt;Можно добавить рабочий ключ в список допущенных в личном репозитории, но! Страдает приватность, т.к. на работе мало ли кто имеет доступ к ПК и вообще.&lt;/li&gt;
&lt;li&gt;Можно убирать рабочий ключ и заливать в папку&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt; ~/.ssh/&lt;/span&gt; свой и потом менять - ну это понятно не наш метод. Да и забыть можно ключь свой на работе, что тоже не кошерно.&lt;/li&gt;
&lt;/ol&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Наш метод:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
В файл&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt; ~/.ssh/config&lt;/span&gt; добавляем описания хостов&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background-color: white; color: #181615;"&gt;Host GitQnub
  &lt;span style="color: #006e28;"&gt;Hostname=&lt;/span&gt;codaset.com
  &lt;span style="color: #006e28;"&gt;IdentityFile=&lt;/span&gt;/media/truecrypt1/qnub

Host GitWork
  &lt;span style="color: #006e28;"&gt;Hostname=&lt;/span&gt;codaset.com
  &lt;span style="color: #006e28;"&gt;IdentityFile=&lt;/span&gt;~/.ssh/work/work
&lt;/pre&gt;&lt;br /&gt;
Как видно рабочие ключи нужно также перенести из папки &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;~/.ssh&lt;/span&gt; т.к. она по умолчанию просматривается системой на предмет наличия ключей.&lt;br /&gt;
&lt;br /&gt;
Соответственно &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;IdentityFile&lt;/span&gt; это путь к ключу для данного репозитория (свой и рабочий). Остаётся только заменить домен &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Hostname&lt;/span&gt; в параметре &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;url&lt;/span&gt; файла &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;.git/config&lt;/span&gt; вашего проекта на значение &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Host&lt;/span&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;Пример:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Было:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background-color: white; color: #0057ae;"&gt;&lt;b&gt;&lt;span style="color: #181615;"&gt;[remote "origin"]&lt;/span&gt;&lt;/b&gt;
 url &lt;span style="color: #006e28;"&gt;=&lt;/span&gt;&lt;span style="color: #bf0303;"&gt; git@codaset.com:work/work-project.git&lt;/span&gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;b&gt;Стало:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background-color: white; color: #0057ae;"&gt;&lt;b&gt;&lt;span style="color: #181615;"&gt;[remote "origin"]&lt;/span&gt;&lt;/b&gt;
 url &lt;span style="color: #006e28;"&gt;=&lt;/span&gt;&lt;span style="color: #bf0303;"&gt; git@GitWork:work/work-project.git&lt;/span&gt;
&lt;/pre&gt;&lt;br /&gt;
После этого команды &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;git fetch&lt;/span&gt;, &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;git push&lt;/span&gt; и &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;git pull&lt;/span&gt; будут использовать назначенные ключи для назначенных репозиториев. Аналогичная штука работает и с &lt;b&gt;github&lt;/b&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4664086825463125663-1821395623522036682?l=code-hints.ns-keip.ru' alt='' /&gt;&lt;/div&gt;</description><link>http://code-hints.ns-keip.ru/2010/12/ssh-git.html</link><author>noreply@blogger.com (Вадим Лопатюк)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4664086825463125663.post-2117796713280606550</guid><pubDate>Wed, 10 Nov 2010 07:18:00 +0000</pubDate><atom:updated>2010-11-10T12:20:47.317+05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">javascript</category><title>Рандомный цвет в js</title><description>&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: black;"&gt;rand_color &lt;span style="color: #808030;"&gt;=&lt;/span&gt; &lt;span style="color: maroon; font-weight: bold;"&gt;function&lt;/span&gt;&lt;span style="color: #808030;"&gt;(&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt; &lt;span style="color: purple;"&gt;{&lt;/span&gt; &lt;span style="color: maroon; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: #0000e6;"&gt;'#'&lt;/span&gt; &lt;span style="color: #808030;"&gt;+&lt;/span&gt; &lt;span style="color: #808030;"&gt;(&lt;/span&gt;Math&lt;span style="color: #808030;"&gt;.&lt;/span&gt;&lt;span style="color: maroon; font-weight: bold;"&gt;round&lt;/span&gt;&lt;span style="color: #808030;"&gt;(&lt;/span&gt;Math&lt;span style="color: #808030;"&gt;.&lt;/span&gt;&lt;span style="color: maroon; font-weight: bold;"&gt;random&lt;/span&gt;&lt;span style="color: #808030;"&gt;(&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt; &lt;span style="color: #808030;"&gt;*&lt;/span&gt; Math&lt;span style="color: #808030;"&gt;.&lt;/span&gt;&lt;span style="color: maroon; font-weight: bold;"&gt;pow&lt;/span&gt;&lt;span style="color: #808030;"&gt;(&lt;/span&gt;&lt;span style="color: #008c00;"&gt;2&lt;/span&gt;&lt;span style="color: #808030;"&gt;,&lt;/span&gt; &lt;span style="color: #008c00;"&gt;24&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: #808030;"&gt;.&lt;/span&gt;&lt;span style="color: maroon; font-weight: bold;"&gt;toString&lt;/span&gt;&lt;span style="color: #808030;"&gt;(&lt;/span&gt;&lt;span style="color: #008c00;"&gt;16&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt; &lt;span style="color: purple;"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: black;"&gt;&lt;span style="color: purple;"&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4664086825463125663-2117796713280606550?l=code-hints.ns-keip.ru' alt='' /&gt;&lt;/div&gt;</description><link>http://code-hints.ns-keip.ru/2010/11/js.html</link><author>noreply@blogger.com (keip)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4664086825463125663.post-5265567238740629424</guid><pubDate>Tue, 19 Oct 2010 05:02:00 +0000</pubDate><atom:updated>2010-10-19T11:02:00.062+06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">linux</category><category domain="http://www.blogger.com/atom/ns#">cron</category><title>Звездочки Crontab</title><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_yvNznWjt3MI/TL0l-aHJ4fI/AAAAAAAABGw/cgB1Yxht0kI/s1600/linux_crontab_syntax.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="129" src="http://1.bp.blogspot.com/_yvNznWjt3MI/TL0l-aHJ4fI/AAAAAAAABGw/cgB1Yxht0kI/s320/linux_crontab_syntax.gif" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4664086825463125663-5265567238740629424?l=code-hints.ns-keip.ru' alt='' /&gt;&lt;/div&gt;</description><link>http://code-hints.ns-keip.ru/2010/10/crontab.html</link><author>noreply@blogger.com (keip)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_yvNznWjt3MI/TL0l-aHJ4fI/AAAAAAAABGw/cgB1Yxht0kI/s72-c/linux_crontab_syntax.gif" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4664086825463125663.post-1406353471067385773</guid><pubDate>Wed, 13 Oct 2010 04:35:00 +0000</pubDate><atom:updated>2010-10-13T10:35:47.798+06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">map-reduce</category><category domain="http://www.blogger.com/atom/ns#">ссылки</category><category domain="http://www.blogger.com/atom/ns#">mongodb</category><title>ссылка: mongodb основы map/reduce</title><description>&lt;a href="http://kylebanker.com/blog/2009/12/mongodb-map-reduce-basics/"&gt;Map-Reduce Basics&lt;/a&gt;: очень неплохая статья об агрегировании данных в MongoDB с помощью map/reduce.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4664086825463125663-1406353471067385773?l=code-hints.ns-keip.ru' alt='' /&gt;&lt;/div&gt;</description><link>http://code-hints.ns-keip.ru/2010/10/mongodb-mapreduce.html</link><author>noreply@blogger.com (keip)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4664086825463125663.post-7887216072978895948</guid><pubDate>Mon, 27 Sep 2010 04:58:00 +0000</pubDate><atom:updated>2010-09-27T10:58:32.937+06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">python</category><title>Python: парсим дату</title><description>Иногда достаточно напряжной задачей бывает парсинг даты или времени. Это часто происходит совсем не в силу сложности задачи, а просто от отсутствия понимания, что здесь никакого велосипеда изобретать не нужно, а просто надо правильно использовать ресурсы стандартной библиотеки питона (), которые предлагают элегантные способы решения данной задачи.&lt;br /&gt;
Вашему вниманию предлагается ненапряжный (оттяжный) способ парсинга даты в питоне&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&lt;/div&gt;&lt;pre style="background-color: white; color: black; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;datetime.strptime(sys.argv[&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;], &lt;/span&gt;&lt;span style="color: #dd0000;"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;'%H:%M'&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;)&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: left;"&gt;С помощью которого можно сделать, например, простой-простой будильник (простой-простой, потому что будет работать в рамках одной даты, например, с 3 ночи до 7 утра, что бывает достаточно для программиста, админа или еще какого-нибудь гика).&lt;/div&gt;&lt;br /&gt;
&lt;pre style="background-color: white; color: black;"&gt;&lt;i&gt;&lt;span style="color: grey;"&gt;#-*- coding: UTF-8 -*-&lt;/span&gt;&lt;/i&gt;
&lt;span style="color: magenta;"&gt;import&lt;/span&gt; time
&lt;span style="color: magenta;"&gt;import&lt;/span&gt; os
&lt;span style="color: magenta;"&gt;import&lt;/span&gt; sys
&lt;span style="color: magenta;"&gt;from&lt;/span&gt; datetime &lt;span style="color: magenta;"&gt;import&lt;/span&gt; datetime

&lt;b&gt;def&lt;/b&gt; play():
    command &lt;b&gt;=&lt;/b&gt; &lt;span style="color: #dd0000;"&gt;"totem ~/bin/alarm.pls &amp;gt;/dev/null 2&amp;gt;/dev/null"&lt;/span&gt;
    os.popen(command)

&lt;b&gt;def&lt;/b&gt; main():
    &lt;b&gt;try&lt;/b&gt;:
        &lt;b&gt;while&lt;/b&gt; datetime.now().time() &lt;b&gt;&amp;lt;&lt;/b&gt; &lt;span class="Apple-style-span" style="font-size: x-large;"&gt;datetime.strptime(sys.argv[&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;], &lt;/span&gt;&lt;span style="color: #dd0000;"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;'%H:%M'&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;)&lt;/span&gt;.time():
            time.sleep(&lt;span style="color: blue;"&gt;1&lt;/span&gt;)
    &lt;b&gt;except&lt;/b&gt;:
        &lt;b&gt;print&lt;/b&gt; &lt;span style="color: #dd0000;"&gt;"Invalid hour:minute value!"&lt;/span&gt;
    &lt;b&gt;finally&lt;/b&gt;:
        play()
        &lt;b&gt;return&lt;/b&gt;

&lt;b&gt;if&lt;/b&gt; &lt;span style="color: maroon;"&gt;__name__&lt;/span&gt; &lt;b&gt;==&lt;/b&gt; &lt;span style="color: #dd0000;"&gt;"__main__"&lt;/span&gt;:
    main()

&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4664086825463125663-7887216072978895948?l=code-hints.ns-keip.ru' alt='' /&gt;&lt;/div&gt;</description><link>http://code-hints.ns-keip.ru/2010/09/python.html</link><author>noreply@blogger.com (keip)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4664086825463125663.post-3524937847529925516</guid><pubDate>Mon, 13 Sep 2010 02:00:00 +0000</pubDate><atom:updated>2010-09-13T08:00:01.346+06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">javascript</category><category domain="http://www.blogger.com/atom/ns#">python</category><title>День программиста-2010</title><description>Поздравляем программистов всех стран с их профессиональным праздником - днем программиста! Вот вам указ об официальном празднике:&amp;nbsp;&lt;a href="http://document.kremlin.ru/doc.asp?ID=054318"&gt;"О дне программиста"&lt;/a&gt;.&lt;br /&gt;
Пусть даже разбег дат у нас небольшой - 13 сентября в простой год, о 365 днях, и 12 сентября - в високосный, о 366),&amp;nbsp;мы все равно запасли для вас разные способы узнать, когда же он будет, на таких языках программирования как Python и JavaScript (хотели бы сами получить варианты на хаскелле и каком-нибудь брейнфаке):&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;python:&lt;/b&gt;&lt;br /&gt;
&lt;pre style="background-color: white; color: black;"&gt;&lt;span style="color: magenta;"&gt;from&lt;/span&gt; datetime &lt;span style="color: magenta;"&gt;import&lt;/span&gt; date, timedelta

&lt;b&gt;def&lt;/b&gt; prog_date():
    today &lt;b&gt;=&lt;/b&gt; date.today()
    &lt;b&gt;return&lt;/b&gt; today.replace(month&lt;b&gt;=&lt;/b&gt;&lt;span style="color: blue;"&gt;1&lt;/span&gt;, day&lt;b&gt;=&lt;/b&gt;&lt;span style="color: blue;"&gt;1&lt;/span&gt;) &lt;b&gt;+&lt;/b&gt; timedelta(&lt;span style="color: blue;"&gt;256&lt;/span&gt;)

&lt;b&gt;if&lt;/b&gt; &lt;span style="color: maroon;"&gt;__name__&lt;/span&gt; &lt;b&gt;==&lt;/b&gt; &lt;span style="color: #dd0000;"&gt;'__main__'&lt;/span&gt;:
    &lt;b&gt;print&lt;/b&gt; prog_date()
&lt;/pre&gt;&lt;br /&gt;
&lt;b&gt;javascript:&lt;/b&gt;&lt;br /&gt;
&lt;pre style="background: #ffffff; color: black;"&gt;&lt;span style="color: maroon; font-weight: bold;"&gt;function&lt;/span&gt; prog_date&lt;span style="color: #808030;"&gt;(&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt; &lt;span style="color: purple;"&gt;{&lt;/span&gt;
    today &lt;span style="color: #808030;"&gt;=&lt;/span&gt; &lt;span style="color: maroon; font-weight: bold;"&gt;new&lt;/span&gt; Date&lt;span style="color: #808030;"&gt;(&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;
    today&lt;span style="color: #808030;"&gt;.&lt;/span&gt;&lt;span style="color: maroon; font-weight: bold;"&gt;setMonth&lt;/span&gt;&lt;span style="color: #808030;"&gt;(&lt;/span&gt;&lt;span style="color: #008c00;"&gt;0&lt;/span&gt;&lt;span style="color: #808030;"&gt;,&lt;/span&gt; &lt;span style="color: #008c00;"&gt;1&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;
    today&lt;span style="color: #808030;"&gt;.&lt;/span&gt;&lt;span style="color: maroon; font-weight: bold;"&gt;setDate&lt;/span&gt;&lt;span style="color: #808030;"&gt;(&lt;/span&gt;&lt;span style="color: #008c00;"&gt;256&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;
    &lt;span style="color: maroon; font-weight: bold;"&gt;return&lt;/span&gt; today&lt;span style="color: purple;"&gt;;&lt;/span&gt;
&lt;span style="color: purple;"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;
* А эту функцию так мы вообще выполним:&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;script type="text/javascript"&gt;
function prog_date() {
    today = new Date();
    today.setMonth(0, 1);
    today.setDate(256);
    return today;
}
document.write(prog_date());
&lt;/script&gt;&lt;br /&gt;
&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4664086825463125663-3524937847529925516?l=code-hints.ns-keip.ru' alt='' /&gt;&lt;/div&gt;</description><link>http://code-hints.ns-keip.ru/2010/09/2010.html</link><author>noreply@blogger.com (keip)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4664086825463125663.post-9103039798859591222</guid><pubDate>Thu, 19 Aug 2010 06:10:00 +0000</pubDate><atom:updated>2010-08-19T13:00:47.782+06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">mongodb</category><title>Python и mongodb: забрать значения из курсора</title><description>Очень полезной особенностью API Python для &lt;a href="http://www.mongodb.org/"&gt;MongoDB&lt;/a&gt; (&lt;a href="http://api.mongodb.org/python/1.8.1%2B/index.html"&gt;pymongo&lt;/a&gt;) является то, что мы всегда можем достать значения из ленивого курсора: для этого просто нужно использовать преобразование в &lt;a href="http://docs.python.org/tutorial/datastructures.html#more-on-lists"&gt;list&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;span style="color: magenta;"&gt;from&lt;/span&gt;&lt;span style="color: black;"&gt; pymongo &lt;/span&gt;&lt;span style="color: magenta;"&gt;import&lt;/span&gt;&lt;span style="color: black;"&gt; Connection&lt;/span&gt;

&lt;span style="color: black;"&gt;c &lt;/span&gt;&lt;span style="color: magenta;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; Connection&lt;/span&gt;&lt;span style="color: magenta;"&gt;()&lt;/span&gt;
&lt;span style="color: black;"&gt;db &lt;/span&gt;&lt;span style="color: magenta;"&gt;=&lt;/span&gt;&lt;span style="color: black;"&gt; c&lt;/span&gt;&lt;span style="color: magenta;"&gt;[&lt;/span&gt;&lt;span style="color: #dd0000;"&gt;'database'&lt;/span&gt;&lt;span style="color: magenta;"&gt;]&lt;/span&gt;
&lt;span style="color: black; font-weight: bold;"&gt;print&lt;/span&gt;&lt;span style="color: black;"&gt; db.users.find&lt;/span&gt;&lt;span style="color: magenta;"&gt;()&lt;/span&gt;
&lt;span style="color: grey; font-style: italic;"&gt;# выведет курсор MongoDB: &lt;pymongo.cursor.cursor 0xb71077="" at="" object=""&gt;&lt;/pymongo.cursor.cursor&gt;&lt;/span&gt;
&lt;span style="color: black; font-weight: bold;"&gt;print&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: maroon;"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;list&lt;/span&gt;&lt;/span&gt;&lt;span style="color: magenta;"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;db.users.find&lt;/span&gt;&lt;/span&gt;&lt;span style="color: magenta;"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;())&lt;/span&gt;&lt;/span&gt;
&lt;span style="color: grey; font-style: italic;"&gt;# выведет список объектов из базы: [{u'username': u'user', u'visitor': False ... }, ...]&lt;/span&gt;
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4664086825463125663-9103039798859591222?l=code-hints.ns-keip.ru' alt='' /&gt;&lt;/div&gt;</description><link>http://code-hints.ns-keip.ru/2010/08/python-mongodb.html</link><author>noreply@blogger.com (keip)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4664086825463125663.post-6924309543330394280</guid><pubDate>Thu, 19 Aug 2010 06:00:00 +0000</pubDate><atom:updated>2010-08-19T12:00:03.085+06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">python</category><title>Python: произвольная строка</title><description>Часто возникает необходимость сгенерировать строку из случайных символов (например, для того, чтобы задать пароль). Язык Python позволяет сделать это быстро и элегантно:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;span style="color: #ff00ff;"&gt;import&lt;/span&gt;&lt;span style="color: #000000;"&gt; string&lt;/span&gt;
&lt;span style="color: #ff00ff;"&gt;import&lt;/span&gt;&lt;span style="color: #000000;"&gt; random&lt;/span&gt;

&lt;span style="font-weight: bold;color: #000000;"&gt;def&lt;/span&gt;&lt;span style="color: #000000;"&gt; randstring&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;(&lt;/span&gt;&lt;span style="color: #000000;"&gt;n&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;):&lt;/span&gt;
&lt;span style="color: #000000;"&gt;    a &lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; string.ascii_letters &lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; string.digits&lt;/span&gt;
&lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="font-weight: bold;color: #000000;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #dd0000;"&gt;''&lt;/span&gt;&lt;span style="color: #000000;"&gt;.join&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;([&lt;/span&gt;&lt;span style="color: #000000;"&gt;random.choice&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;(&lt;/span&gt;&lt;span style="color: #000000;"&gt;a&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;)&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="font-weight: bold;color: #000000;"&gt;for&lt;/span&gt;&lt;span style="color: #000000;"&gt; i &lt;/span&gt;&lt;span style="font-weight: bold;color: #000000;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;range&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;(&lt;/span&gt;&lt;span style="color: #000000;"&gt;n&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;)])&lt;/span&gt;

&lt;span style="font-weight: bold;color: #000000;"&gt;print&lt;/span&gt;&lt;span style="color: #000000;"&gt; randstring&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;10&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;br /&gt;
Здесь мы создали и вывели на печать строку из 10 рандомных символов.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4664086825463125663-6924309543330394280?l=code-hints.ns-keip.ru' alt='' /&gt;&lt;/div&gt;</description><link>http://code-hints.ns-keip.ru/2010/08/python_19.html</link><author>noreply@blogger.com (keip)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4664086825463125663.post-4625156113750819556</guid><pubDate>Mon, 09 Aug 2010 06:00:00 +0000</pubDate><atom:updated>2010-08-09T12:00:00.986+06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ссылки</category><category domain="http://www.blogger.com/atom/ns#">метапрограммирование</category><category domain="http://www.blogger.com/atom/ns#">python</category><title>(Ссылка) Python: конфликты метаклассов</title><description>Весьма неплохая статья о разрешении конфликтов метаклассов в Python.&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&lt;a href="http://code.activestate.com/recipes/204197-solving-the-metaclass-conflict/"&gt;http://code.activestate.com/recipes/204197-solving-the-metaclass-conflict/&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4664086825463125663-4625156113750819556?l=code-hints.ns-keip.ru' alt='' /&gt;&lt;/div&gt;</description><link>http://code-hints.ns-keip.ru/2010/08/python.html</link><author>noreply@blogger.com (keip)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4664086825463125663.post-6884740166895819802</guid><pubDate>Mon, 09 Aug 2010 03:00:00 +0000</pubDate><atom:updated>2010-08-07T13:04:29.593+06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">javascript</category><category domain="http://www.blogger.com/atom/ns#">jquery</category><title>JavaScript, jQuery: обертки</title><description>Когда-то можно было пользоваться такой функцией без всякого сомнения:&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: 'Times New Roman'; font-size: medium;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: 'Times New Roman'; font-size: medium;"&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: black;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px;"&gt;&lt;span style="color: maroon; font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;function&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;$&lt;/span&gt;&lt;span style="color: #808030;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;id&lt;/span&gt;&lt;span style="color: #808030;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt; &lt;/span&gt;&lt;span style="color: purple;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt; 
    &lt;/span&gt;&lt;span style="color: maroon; font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;return&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt; getElementById&lt;/span&gt;&lt;span style="color: #808030;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;id&lt;/span&gt;&lt;span style="color: #808030;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span style="color: purple;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt; 
&lt;/span&gt;&lt;span style="color: purple;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: black;"&gt;&lt;span style="color: purple;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
Теперь же, когда многие используют библиотеку &lt;a href="http://jquery.org/"&gt;jQuery&lt;/a&gt;, объявление подобной функции может привести к неработоспособности другого кода, так как $ является синонимом для jQuery.&lt;br /&gt;
&lt;br /&gt;
В таком случае можно либо явно указывать jQuery вместо знака доллара, либо прибегнуть к более изящному решению - оберткам:&lt;br /&gt;
&lt;br /&gt;
Было:&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: black;"&gt;&lt;span style="color: maroon; font-weight: bold;"&gt;function&lt;/span&gt; f&lt;span style="color: #808030;"&gt;(&lt;/span&gt;arg1&lt;span style="color: #808030;"&gt;,&lt;/span&gt; arg2&lt;span style="color: #808030;"&gt;)&lt;/span&gt; &lt;span style="color: purple;"&gt;{&lt;/span&gt;

$&lt;span style="color: #808030;"&gt;(&lt;/span&gt;&lt;span style="color: #0000e6;"&gt;'#some_selector'&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: dimgrey;"&gt;// ...&lt;/span&gt;

&lt;span style="color: purple;"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: black;"&gt;&lt;span style="color: purple;"&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial;"&gt;&lt;span style="color: maroon; font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;Стало:&lt;br /&gt;
&lt;pre style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial;"&gt;&lt;span style="color: maroon; font-weight: bold;"&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial;"&gt;&lt;span style="color: maroon; font-weight: bold;"&gt;function&lt;/span&gt; f&lt;span style="color: #808030;"&gt;(&lt;/span&gt;arg1&lt;span style="color: #808030;"&gt;,&lt;/span&gt;arg2&lt;span style="color: #808030;"&gt;)&lt;/span&gt; &lt;span style="color: purple;"&gt;{&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: black;"&gt;&lt;span style="color: #808030;"&gt;(&lt;/span&gt;&lt;span style="color: maroon; font-weight: bold;"&gt;function&lt;/span&gt;&lt;span style="color: #808030;"&gt;(&lt;/span&gt;$&lt;span style="color: #808030;"&gt;)&lt;/span&gt; &lt;span style="color: purple;"&gt;{&lt;/span&gt;
        $&lt;span style="color: #808030;"&gt;(&lt;/span&gt;&lt;span style="color: #0000e6;"&gt;'#some_selector'&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: dimgrey;"&gt;// ... code&lt;/span&gt;
    &lt;span style="color: purple;"&gt;}&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: #808030;"&gt;(&lt;/span&gt;jQuery&lt;span style="color: #808030;"&gt;)&lt;/span&gt;

&lt;span style="color: purple;"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: black;"&gt;&lt;span style="color: purple;"&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: black;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; white-space: normal;"&gt;Здесь мы создаем анонимную функцию и сразу же ее вызываем. Она представляет собой старую функцию с несколько измененной сигнатурой: в качестве параметра она получит jQuery, а "старые" аргументы будут доступны ей благодаря &lt;a href="http://habrahabr.ru/blogs/webdev/38642/"&gt;замыканиям&lt;/a&gt;.&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4664086825463125663-6884740166895819802?l=code-hints.ns-keip.ru' alt='' /&gt;&lt;/div&gt;</description><link>http://code-hints.ns-keip.ru/2010/07/javascript-jquery.html</link><author>noreply@blogger.com (keip)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4664086825463125663.post-303922562621492326</guid><pubDate>Sat, 07 Aug 2010 07:00:00 +0000</pubDate><atom:updated>2010-08-07T13:00:04.230+06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">bash</category><category domain="http://www.blogger.com/atom/ns#">jetbrains pycharm</category><category domain="http://www.blogger.com/atom/ns#">python</category><title>Python: коварство рефакторинга (об удалении *.pyc файлов)</title><description>Python компилирует свои скрипты при первом запуске программы (точнее - при первом импорте из срипта, питон пытается сделать последующие обращения к скрипту чуть быстрее путем компиляции его в файл с расширением&amp;nbsp;.pyc), потом он сначала ищет откомпилированный скрипт и только если его не находит - обращается к исходнику (.py).&lt;br /&gt;
&lt;br /&gt;
Коварство рефакторинга (в частности, в среде разработки &amp;nbsp;&lt;a href="http://www.jetbrains.com/pycharm/"&gt;PyCharm от JetBrains&lt;/a&gt;) заключается в том, что если вы переименовываете один из модулей (например, old_module -&amp;gt; new_module), то вам необходимо вручную прописать импорты в других модулях. Иначе может получиться довольно забавная ситуация: вы в новом модуле добавляете какой-то функционал, а программа при запуске импортирует .pyc файлы старого модуля, ни сколько не ругается и, разумеется, выполняет старый код.&lt;br /&gt;
&lt;br /&gt;
Удалять старые компилированные файлы можно, например, такой командой:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;find -type f -name '*.pyc' -exec rm {} \;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4664086825463125663-303922562621492326?l=code-hints.ns-keip.ru' alt='' /&gt;&lt;/div&gt;</description><link>http://code-hints.ns-keip.ru/2010/08/python-pyc.html</link><author>noreply@blogger.com (keip)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4664086825463125663.post-733360330638039693</guid><pubDate>Mon, 19 Jul 2010 03:00:00 +0000</pubDate><atom:updated>2010-07-19T09:00:01.008+06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">bash</category><title>Bash: подсчет количества строк</title><description>&lt;pre style="text-align: center;"&gt;&lt;span style="color: #cc00cc; font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;find&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt; -type f -name &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #dd0000;"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;'*.py'&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt; -exec &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #cc00cc; font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;cat&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;{}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;\;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: black; font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;|&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #cc00cc; font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;wc&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt; -l&lt;/span&gt;&lt;/span&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/4664086825463125663-733360330638039693?l=code-hints.ns-keip.ru' alt='' /&gt;&lt;/div&gt;</description><link>http://code-hints.ns-keip.ru/2010/07/bash_19.html</link><author>noreply@blogger.com (keip)</author><thr:total>8</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4664086825463125663.post-2440891502323444222</guid><pubDate>Thu, 15 Jul 2010 03:00:00 +0000</pubDate><atom:updated>2010-07-15T13:43:02.374+06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">mysql</category><category domain="http://www.blogger.com/atom/ns#">php</category><title>Единственное значение из mysql на php в 2 строки</title><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a bitly="BITLY_PROCESSED" href="http://blog.g2peru.com/wp-content/uploads/2009/06/php-mysql.gif" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="176" src="http://blog.g2peru.com/wp-content/uploads/2009/06/php-mysql.gif" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;Бывает нужно получить единственное значение из MySQL и огород из запроса и получения строки из результата, а потом использования значения полученного массива кажется явно лишним.&lt;br /&gt;
&lt;br /&gt;
Т.е. стандартное (академическое) решение выглядит так:&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background-color: white; clear: both; color: #141312;"&gt;&lt;b&gt;&lt;!--?php&lt;/b--&gt;
&lt;span style="color: #5555ff;"&gt;$sql&lt;/span&gt; = &lt;span style="color: #452886;"&gt;mysqli_query&lt;/span&gt;&lt;span style="color: #006e28;"&gt;(&lt;/span&gt;&lt;span style="color: #bf0303;"&gt;"SELECT COUNT(*) FROM `table` WHERE `col`='value';"&lt;/span&gt;&lt;span style="color: #006e28;"&gt;);&lt;/span&gt; &lt;i&gt;&lt;span style="color: #888786;"&gt;// получаем данные&lt;/span&gt;&lt;/i&gt;
&lt;span style="color: #5555ff;"&gt;$row&lt;/span&gt; = &lt;span style="color: #452886;"&gt;mysqli_fetch_assoc&lt;/span&gt;&lt;span style="color: #006e28;"&gt;(&lt;/span&gt;&lt;span style="color: #5555ff;"&gt;$sql&lt;/span&gt;&lt;span style="color: #006e28;"&gt;);&lt;/span&gt; &lt;i&gt;&lt;span style="color: #888786;"&gt;// получаем строку в массив&lt;/span&gt;&lt;/i&gt;
&lt;span style="color: #452886;"&gt;echo&lt;/span&gt; &lt;span style="color: #5555ff;"&gt;$row&lt;/span&gt;&lt;span style="color: #006e28;"&gt;[&lt;/span&gt;&lt;span style="color: #bf0303;"&gt;'COUNT(*)'&lt;/span&gt;&lt;span style="color: #006e28;"&gt;];&lt;/span&gt; &lt;i&gt;&lt;span style="color: #888786;"&gt;// используем значение массива
// неудобная переменная,&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span style="color: #888786;"&gt;нужно одно значение, а используем массив

// можно присвоить значение новой переменной&lt;/span&gt;&lt;/i&gt;
&lt;span style="color: #5555ff;"&gt;$count&lt;/span&gt; = &lt;span style="color: #5555ff;"&gt;$row&lt;/span&gt;&lt;span style="color: #006e28;"&gt;[&lt;/span&gt;&lt;span style="color: #bf0303;"&gt;'COUNT(*)'&lt;/span&gt;&lt;span style="color: #006e28;"&gt;];&lt;/span&gt;

&lt;i&gt;&lt;span style="color: #888786;"&gt;// либо переопределить массив в переменную&lt;/span&gt;&lt;/i&gt;
&lt;span style="color: #5555ff;"&gt;$row&lt;/span&gt; = &lt;span style="color: #5555ff;"&gt;$row&lt;/span&gt;&lt;span style="color: #006e28;"&gt;[&lt;/span&gt;&lt;span style="color: #bf0303;"&gt;'COUNT(*)'&lt;/span&gt;&lt;span style="color: #006e28;"&gt;];&lt;/span&gt;

&lt;i&gt;&lt;span style="color: #888786;"&gt;// но это либо дополнительная переменная,&lt;/span&gt;&lt;/i&gt;
&lt;i&gt;&lt;span style="color: #888786;"&gt;// либо не логичное название переменной,&lt;/span&gt;&lt;/i&gt;
&lt;i&gt;&lt;span style="color: #888786;"&gt;// либо с самого начала нужно было использовать правильное название...&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/pre&gt;&lt;b&gt;&lt;br /&gt;
В принципе предлагаемый вариант немного удобнее для последующего использования:&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background-color: white; color: #141312;"&gt;&lt;b&gt;&lt;!--?php&lt;/b--&gt;
&lt;span style="color: #5555ff;"&gt;$sql&lt;/span&gt; = &lt;span style="color: #452886;"&gt;mysqli_query&lt;/span&gt;&lt;span style="color: #006e28;"&gt;(&lt;/span&gt;&lt;span style="color: #bf0303;"&gt;"SELECT COUNT(*) FROM `table` WHERE `col`='value';"&lt;/span&gt;&lt;span style="color: #006e28;"&gt;);&lt;/span&gt; &lt;i&gt;&lt;span style="color: #888786;"&gt;// получаем данные&lt;/span&gt;&lt;/i&gt;
&lt;span style="color: #452886;"&gt;list&lt;/span&gt;&lt;span style="color: #006e28;"&gt;(&lt;/span&gt;&lt;span style="color: #5555ff;"&gt;$count&lt;/span&gt;&lt;span style="color: #006e28;"&gt;)&lt;/span&gt; = &lt;span style="color: #452886;"&gt;mysqli_fetch_array&lt;/span&gt;&lt;span style="color: #006e28;"&gt;(&lt;/span&gt;&lt;span style="color: #5555ff;"&gt;$sql&lt;/span&gt;&lt;span style="color: #006e28;"&gt;);&lt;/span&gt; &lt;i&gt;&lt;span style="color: #888786;"&gt;// получаем строку в массив и 
// первое значение сразу присваиваем переменной&lt;/span&gt;&lt;/i&gt;
&lt;span style="color: #452886;"&gt;echo&lt;/span&gt; &lt;span style="color: #5555ff;"&gt;$count&lt;/span&gt;&lt;span style="color: #006e28;"&gt;;&lt;/span&gt; &lt;i&gt;&lt;span style="color: #888786;"&gt;// используем переменную&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/pre&gt;&lt;b&gt;&lt;br /&gt;
ООП вариант сообразите по аналогии...&lt;/b&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4664086825463125663-2440891502323444222?l=code-hints.ns-keip.ru' alt='' /&gt;&lt;/div&gt;</description><link>http://code-hints.ns-keip.ru/2010/07/mysql-php-2.html</link><author>noreply@blogger.com (Вадим Лопатюк)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4664086825463125663.post-5788806877370739164</guid><pubDate>Wed, 14 Jul 2010 06:00:00 +0000</pubDate><atom:updated>2010-07-14T12:00:04.048+06:00</atom:updated><title>Bash: оставим только новые файлы (как удалять устаревшие архивы)</title><description>В комментариях к одному из &lt;a href="http://code-hints.ns-keip.ru/2010/07/bash_12.html"&gt;предыдущих постов&lt;/a&gt; поступило предложение сделать скрипт, который позволил бы время от времени чистить папку с архивами, чтобы в ней оставалось лишь определенное количество файлов (разумеется, самых свежих).&lt;br /&gt;
&lt;strong&gt;Хинт:&lt;/strong&gt; Для этих целей можно использовать редактор awk, запустив следующую команду из директории с архивами:&lt;br /&gt;
&lt;pre style="text-align: center;"&gt;&lt;span style="color: #cc00cc; font-weight: bold;"&gt;ls&lt;/span&gt;&lt;span style="color: black;"&gt; -t &lt;/span&gt;&lt;span style="color: black; font-weight: bold;"&gt;|&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #cc00cc; font-weight: bold;"&gt;awk&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #dd0000;"&gt;'NR&amp;gt;=10 {print;}'&lt;/span&gt;&lt;span style="color: black;"&gt; /dev/stdin &lt;/span&gt;&lt;span style="color: black; font-weight: bold;"&gt;|&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #cc00cc; font-weight: bold;"&gt;xargs&lt;/span&gt;&lt;span style="color: black;"&gt; -i &lt;/span&gt;&lt;span style="color: #cc00cc; font-weight: bold;"&gt;rm&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: maroon;"&gt;{}&lt;/span&gt;&lt;/pre&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;ls -t&lt;/span&gt; выводит список файлов, сортируя его по времени создания&lt;br /&gt;
команда awk NR&amp;gt;=10 {print;} выводит из файла строки, номера которых больше 10.&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;/dev/stdin&lt;/span&gt;&amp;nbsp;в качестве имени файла позволяет использовать стандартный поток ввода (что делает ls -t через пайп).&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;xargs -i rm {} &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;удаляет файлы, имена которых приходят через пайп от awk.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Таким образом, мы оставляем в директории только 10 самых новых файлов.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4664086825463125663-5788806877370739164?l=code-hints.ns-keip.ru' alt='' /&gt;&lt;/div&gt;</description><link>http://code-hints.ns-keip.ru/2010/07/bash_14.html</link><author>noreply@blogger.com (keip)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4664086825463125663.post-9076915143391351529</guid><pubDate>Mon, 12 Jul 2010 06:43:00 +0000</pubDate><atom:updated>2010-07-12T12:43:58.805+06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">bash</category><category domain="http://www.blogger.com/atom/ns#">backup</category><title>Bash: быстрый бэкап</title><description>Если вам нужно периодически делать бэкапы тех или иных директорий, вы можете воспользоваться date для формирования имени:&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="text-align: center;"&gt;&lt;span style="color: #cc00cc; font-weight: bold;"&gt;&lt;span class="Apple-style-span"&gt;tar&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;span class="Apple-style-span"&gt; -czf ~/archived_folder_&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black; font-weight: bold;"&gt;&lt;span class="Apple-style-span"&gt;`&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #cc00cc; font-weight: bold;"&gt;&lt;span class="Apple-style-span"&gt;date&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;span class="Apple-style-span"&gt; +&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #dd0000;"&gt;&lt;span class="Apple-style-span"&gt;'%Y%m%d_%H%M'&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black; font-weight: bold;"&gt;&lt;span class="Apple-style-span"&gt;`&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;span class="Apple-style-span"&gt;.tar.gz &lt;/span&gt;&lt;/span&gt;&lt;span style="color: black; font-weight: bold;"&gt;&lt;span class="Apple-style-span"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;span class="Apple-style-span"&gt;/working_folder/&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"&gt; &lt;/span&gt;
&lt;/pre&gt;&lt;pre style="text-align: center;"&gt;&lt;span class="Apple-style-span"&gt;
&lt;/span&gt;&lt;/pre&gt;Данная команда создает в домашней папке архив arсhived_folder (с добавлением года, месяца, дня и времени: archived_folder_20100712_1242.tar.gz) из папки working_folder (в текущей директории).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4664086825463125663-9076915143391351529?l=code-hints.ns-keip.ru' alt='' /&gt;&lt;/div&gt;</description><link>http://code-hints.ns-keip.ru/2010/07/bash_12.html</link><author>noreply@blogger.com (keip)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4664086825463125663.post-2366891740777885930</guid><pubDate>Sun, 11 Jul 2010 14:10:00 +0000</pubDate><atom:updated>2010-07-11T20:10:21.288+06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">wdsl</category><category domain="http://www.blogger.com/atom/ns#">soap</category><category domain="http://www.blogger.com/atom/ns#">php</category><category domain="http://www.blogger.com/atom/ns#">1с</category><title>Возвращаемые значения 1С SOAP в PHP</title><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.soap.od.ua/1/soap_mint.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="150" src="http://www.soap.od.ua/1/soap_mint.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;В SOAP как и в других нормальных программерских технологиях есть значения передаваемые и возвращаемые. Так вот, если Ваш 1С кодер есть Вам мозг и утверждает, что нужно передавать в SOAP переменную (или ссылку на неё) в которой будет возвращаться значение - не верьте ему. На самом деле возвращаемое значение/я идёт/ут дополнительными массивами/объектами в возвращаемом результате вызова SOAP метода.&lt;br /&gt;
&lt;br /&gt;
Недавний пример. 1Сник заявляет, что нужно вызывать метод&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;CheckBalances(OrderData, TradeBalances)&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;при этом &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;TradeBalances&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt; это пустая переменная в которой будет возвращаться результат (вообще в PHP реализации SOAP не понятно как передать ссылку на переменную в именованном массиве, да и вообще странно это...). На самом деле оказалось надо так:&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;CheckBalances(OrderData)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
а &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;TradeBalances&lt;/span&gt; возвращается следующим элементом массива в возвращаемом результирующем объекте SOAP. Типа:&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;$SOAPresult = $SOAPclient-&amp;gt;CheckBalances(OrderData);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
и результат&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="font-family: 'Courier New', Courier, monospace;"&gt;stdClass Object
(
    [return] =&lt;span class="Apple-style-span" style="white-space: normal;"&gt;&amp;gt;&lt;/span&gt; stdClass Object
        (
            [success] =&amp;gt; 
            [message] =&amp;gt; 
        )

    [TradeBalances] =&amp;gt; stdClass Object
        (
             ...
        )
)&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4664086825463125663-2366891740777885930?l=code-hints.ns-keip.ru' alt='' /&gt;&lt;/div&gt;</description><link>http://code-hints.ns-keip.ru/2010/07/1-soap-php.html</link><author>noreply@blogger.com (Вадим Лопатюк)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4664086825463125663.post-3686696993079572668</guid><pubDate>Sat, 10 Jul 2010 06:14:00 +0000</pubDate><atom:updated>2010-07-10T12:14:34.274+06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">javascript</category><category domain="http://www.blogger.com/atom/ns#">web</category><category domain="http://www.blogger.com/atom/ns#">google chrome</category><category domain="http://www.blogger.com/atom/ns#">кодер</category><title>JavaScript: быстрый просмотр кода функции/метода</title><description>Часто веб-разработчику приходится искать ту или иную JavaScript-функцию на сайте (например, чтобы понять, как работает доставшийся ему в наследство код и исправить). Учитывая, что функции пишутся &amp;nbsp;в разных файлах и вставляются в страницу с помощью &lt;script src="..."&gt;
&lt;/script&gt; этот процесс может оказаться весьма хлопотным.&lt;br /&gt;
&lt;b&gt;хинт:&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;Вариант 1:&lt;/b&gt; любой браузер умеет скачивать "веб-страницу полностью". Можно воспользоваться этой фичей и потом произвести поиск нужной функции в соответствующей папке, в которой содержатся файлы, относящиеся к скачанной веб-странице.&lt;br /&gt;
&lt;b&gt;плюсы:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;поддерживается любым браузером&lt;/li&gt;
&lt;li&gt;как только вы найдете функцию, вы можете сразу приступить к ее правке&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;b&gt;минусы:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;браузер&amp;nbsp;может не скачать то, что лежит за пределами сайта (и правильно сделает: зачем ему скачивать, например, код яндексовой баннерки)&lt;/li&gt;
&lt;li&gt;это все равно не так быстро, как следующий способ:)&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;b&gt;Вариант 2:&lt;/b&gt;&amp;nbsp;в браузерах Google Chrome и Firefox (+firebug) есть возможность работать с консолью JavaScript. Надо зайти в эту консоль и набрать имя (но не просто вызвать ее: то есть набирать&amp;nbsp;&lt;i&gt;func_name&lt;/i&gt; вместо &lt;i&gt;func_name()&lt;/i&gt;) нужной функции.&lt;/div&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_yvNznWjt3MI/TDgMpOXmxkI/AAAAAAAAA_8/alxmuBsY40o/s1600/1.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="155" src="http://1.bp.blogspot.com/_yvNznWjt3MI/TDgMpOXmxkI/AAAAAAAAA_8/alxmuBsY40o/s400/1.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;пример использования консоли Google Chrome для быстрого просмотра исходного кода функции showOrHideDateFields&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div&gt;&lt;b&gt;плюсы:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;это достаточно быстро&lt;/li&gt;
&lt;li&gt;вы можете таким образом просмотреть (и вызвать) любую функцию, которая загружена в память, а не только те, которые выкачаются.&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;b&gt;минусы:&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;браузер должен поддерживать консоль JavaScript (Google Chrome точно пожжерживает)&lt;/li&gt;
&lt;li&gt;все равно непонятно, где лежит код этой функции:)&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4664086825463125663-3686696993079572668?l=code-hints.ns-keip.ru' alt='' /&gt;&lt;/div&gt;</description><link>http://code-hints.ns-keip.ru/2010/07/javascript.html</link><author>noreply@blogger.com (keip)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_yvNznWjt3MI/TDgMpOXmxkI/AAAAAAAAA_8/alxmuBsY40o/s72-c/1.png" height="72" width="72" /><thr:total>0</thr:total></item></channel></rss>

