<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" 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>Mon, 07 Oct 2024 05:16:17 +0000</lastBuildDate><category>bash</category><category>python</category><category>ссылки</category><category>javascript</category><category>linux</category><category>jetbrains pycharm</category><category>php</category><category>кодер</category><category>ssh</category><category>mongodb</category><category>perl</category><category>vim</category><category>web</category><category>код с душком</category><category>1с</category><category>301</category><category>backup</category><category>cron</category><category>css</category><category>git</category><category>google chrome</category><category>haskell</category><category>jquery</category><category>kate</category><category>lambda</category><category>location</category><category>map-reduce</category><category>mysql</category><category>nginx</category><category>redirect</category><category>rewrite</category><category>soap</category><category>wdsl</category><category>админ</category><category>книги</category><category>метапрограммирование</category><category>рефакторинг</category><title>Кодовая польза</title><description>Полезные советы. Упрощаем виртуальную жизнь доступными средствами.</description><link>http://code-hints.ns-keip.ru/</link><managingEditor>noreply@blogger.com (Nikita)</managingEditor><generator>Blogger</generator><openSearch:totalResults>33</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4664086825463125663.post-4651651573343575846</guid><pubDate>Wed, 14 Mar 2012 19:30:00 +0000</pubDate><atom:updated>2012-03-15T01:30:51.218+06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">css</category><category domain="http://www.blogger.com/atom/ns#">javascript</category><category domain="http://www.blogger.com/atom/ns#">web</category><title>twitter bootstrap: ширина модального окна</title><description>Многие не без причины любят &lt;a href=&quot;http://twitter.github.com/bootstrap/&quot; target=&quot;_blank&quot;&gt;twitter bootstrap&lt;/a&gt;. Среди его плагинов есть &lt;a href=&quot;http://twitter.github.com/bootstrap/javascript.html#modals&quot; target=&quot;_blank&quot;&gt;Modal dialog&lt;/a&gt;. И он замечателен. А если знать как модифицировать его ширину, жизнь становится вообще сказкой. No exception.&lt;br /&gt;
&lt;br /&gt;
Вот как это можно сделать:&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-color: #fbfbfb; border-bottom-color: rgb(204, 204, 204); border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; border-bottom-style: solid; border-bottom-width: 1px; border-color: initial; border-image: initial; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-style: initial; border-top-color: rgb(204, 204, 204); border-top-left-radius: 3px; border-top-right-radius: 3px; border-top-style: solid; border-top-width: 1px; color: #333333; font-family: &#39;Bitstream Vera Sans Mono&#39;, Courier, monospace; font: inherit; line-height: 19px; margin-bottom: 15px; margin-top: 15px; overflow-x: auto; overflow-y: auto; padding-bottom: 6px; padding-left: 10px; padding-right: 10px; padding-top: 6px;&quot;&gt;&lt;code style=&quot;background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; border-bottom-style: none; border-color: initial; border-color: initial; border-color: initial; border-image: initial; border-left-style: none; border-right-style: none; border-style: initial; border-top-left-radius: 3px; border-top-right-radius: 3px; border-top-style: none; border-width: initial; border-width: initial; font-family: &#39;Bitstream Vera Sans Mono&#39;, Courier, monospace; font: inherit; line-height: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt; $(&#39;#feedback-modal&#39;).modal({
        backdrop: true,
        keyboard: true
    }).css({
        width: &#39;auto&#39;,
        &#39;margin-left&#39;: function () {
            return -($(this).width() / 2);
        }
    });&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
Рецепт подкинул некто rviscomi, вот здесь:&amp;nbsp;&lt;a href=&quot;https://github.com/twitter/bootstrap/issues/675#issuecomment-3664958&quot;&gt;https://github.com/twitter/bootstrap/issues/675#issuecomment-3664958&lt;/a&gt;.</description><link>http://code-hints.ns-keip.ru/2012/03/twitter-bootstrap.html</link><author>noreply@blogger.com (Nikita)</author><thr:total>9</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4664086825463125663.post-1306888422311753639</guid><pubDate>Wed, 29 Feb 2012 18:23:00 +0000</pubDate><atom:updated>2012-03-01T00:23:01.049+06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">haskell</category><category domain="http://www.blogger.com/atom/ns#">lambda</category><category domain="http://www.blogger.com/atom/ns#">кодер</category><title>haskell: (+1) - функция, (-1) - число</title><description>Именно это надо знать, чтобы не попасть в смешную ситуацию с вызовом анонимной &quot;функции&quot;. Итак, вот что говорит &lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;prelude&lt;/span&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;Prelude&amp;gt; :t (+1)
(+1) :: Num a =&amp;gt; a -&amp;gt; a

Prelude&amp;gt; :t (-1)
(-1) :: Num a =&amp;gt; a
&lt;/pre&gt;</description><link>http://code-hints.ns-keip.ru/2012/03/haskell-1-1.html</link><author>noreply@blogger.com (Nikita)</author><thr:total>0</thr:total></item><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=&quot;text-align: center;&quot;&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;</description><link>http://code-hints.ns-keip.ru/2011/12/linux-disk-usage.html</link><author>noreply@blogger.com (Nikita)</author><thr:total>2</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#">bash</category><category domain="http://www.blogger.com/atom/ns#">linux</category><category domain="http://www.blogger.com/atom/ns#">ssh</category><title>ssh: принудительный вход по паролю</title><description>&lt;pre style=&quot;background: #ffffff; color: black;&quot;&gt;ssh &lt;span style=&quot;color: #44aadd;&quot;&gt;-o&lt;/span&gt; PubkeyAuthentication&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;no user@machine
&lt;/pre&gt;
&lt;br /&gt;
Такая команда может оказаться полезной, если у вас возникают проблемы при &lt;a href=&quot;http://draft.blogger.com/code-hints.ns-keip.ru/2011/09/ssh.html&quot;&gt;авторизации по ключу&lt;/a&gt;.
</description><link>http://code-hints.ns-keip.ru/2011/09/ssh_20.html</link><author>noreply@blogger.com (Nikita)</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#">jetbrains pycharm</category><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">ссылки</category><title>[Ссылка] JetBrains PyCharm 2.0 EAP</title><description>Вышел early access preview второй версии PyCharm:&lt;br /&gt;
&lt;a href=&quot;http://confluence.jetbrains.net/display/PYH/JetBrains+PyCharm+Preview&quot;&gt;http://confluence.jetbrains.net/display/PYH/JetBrains+PyCharm+Preview&lt;/a&gt;</description><link>http://code-hints.ns-keip.ru/2011/09/jetbrains-pycharm-20-eap.html</link><author>noreply@blogger.com (Nikita)</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>2012-09-13T16:44:57.305+06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">bash</category><category domain="http://www.blogger.com/atom/ns#">linux</category><category domain="http://www.blogger.com/atom/ns#">ssh</category><category domain="http://www.blogger.com/atom/ns#">ссылки</category><title>ssh вход без пароля</title><description>Чтобы заходить по ssh на какой-то сервер (&lt;i&gt;SOME_HOST&lt;/i&gt;), мы должны сделать примерно следующее:&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;cat ~/.ssh&lt;span style=&quot;color: #808030;&quot;&gt;/&lt;/span&gt;id_rsa.pub &lt;span style=&quot;color: #808030;&quot;&gt;|&lt;/span&gt; ssh login&lt;span style=&quot;color: #808030;&quot;&gt;@&lt;/span&gt;&lt;i&gt;SOME_HOST&lt;/i&gt; &#39;cat &lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; .ssh&lt;span style=&quot;color: #808030;&quot;&gt;/&lt;/span&gt;authorized_keys&#39;
&lt;/pre&gt;
&lt;br /&gt;
То есть дописать наш публичный ключик в .ssh/authorized_keys на сервере. Разумеется, необходимо позаботиться, чтобы эти файлы и каталоги существовали. Чуть подробнее об этом:&amp;nbsp;&lt;a href=&quot;http://linuxproblem.org/art_9.html&quot;&gt;http://linuxproblem.org/art_9.html&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;update:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Анонимный читатель сообщил &lt;b&gt;более простой способ&lt;/b&gt; &lt;a href=&quot;http://xgu.ru/wiki/ssh-copy-id&quot;&gt;входа без пароля — посредством утилиты ssh-copy-id&lt;/a&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;ssh-copy-id -i ~/.ssh/id_rsa.pub user@host&lt;/pre&gt;
</description><link>http://code-hints.ns-keip.ru/2011/09/ssh.html</link><author>noreply@blogger.com (Nikita)</author><thr:total>4</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#">jetbrains pycharm</category><category domain="http://www.blogger.com/atom/ns#">kate</category><category domain="http://www.blogger.com/atom/ns#">vim</category><category domain="http://www.blogger.com/atom/ns#">ссылки</category><title>Подсветка синтаксиса</title><description>Подсветка синтаксиса – это то, без чего нам теперь уже не обойтись и мы, конечно, благодарны средам разработки, которые одарили нас этим чудом. Но как экспортировать эти чудеса в html для интернетов? Есть несколько способов:&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Воспользоваться самой IDE. Так вы получите подсветку в стиле, привычном для вас и, возможно, ваших коллег (или соучастников сообщества, в которое вы обратились), &amp;nbsp;Например, &lt;a href=&quot;http://www.jetbrains.com/pycharm/&quot;&gt;JetBrains Pycharm&lt;/a&gt; (а также &lt;a href=&quot;http://netbeans.org/&quot;&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=&quot;text/css&quot;&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=&quot;s1&quot;&gt;def &lt;/span&gt;&lt;span class=&quot;s0&quot;&gt;setUp(self): 
        self.group = TestGroup() 
        self.moderation_rules = ModerationRule.get_many(data_getter=&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;lambda &lt;/span&gt;&lt;span class=&quot;s0&quot;&gt;x: moderation_rules)&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class=&quot;s0&quot;&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 и выводит его в отдельном &quot;окне&quot;, что позволяет его сохранить (&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=&quot;http://www.linux.org.ru/&quot;&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=&quot;http://tohtml.com/&quot;&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;
</description><link>http://code-hints.ns-keip.ru/2010/09/blog-post.html</link><author>noreply@blogger.com (Nikita)</author><thr:total>4</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=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;expandtab&lt;/span&gt;, которая позволяет при нажатии на клавишу TAB вставлять в текст пробелы. Делается это так:
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #003816; color: #3a3a3a; font-family: Helvetica, Arial, sans-serif; font-size: 13px; line-height: 23px;&quot;&gt;&lt;pre style=&quot;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;&quot;&gt;:set expandtab&lt;/pre&gt;
&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Набрать команду &lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;retab&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #003816; color: #3a3a3a; font-family: Helvetica, Arial, sans-serif; font-size: 13px; line-height: 23px;&quot;&gt;&lt;pre style=&quot;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;&quot;&gt;:retab&lt;/pre&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
Взято &lt;a href=&quot;http://vim.wikia.com/wiki/Converting_tabs_to_spaces&quot;&gt;отсюда&lt;/a&gt;.</description><link>http://code-hints.ns-keip.ru/2011/08/vim.html</link><author>noreply@blogger.com (Nikita)</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#">bash</category><category domain="http://www.blogger.com/atom/ns#">jetbrains pycharm</category><category domain="http://www.blogger.com/atom/ns#">linux</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=&quot;background: #ffffff; color: black;&quot;&gt;&lt;span style=&quot;color: dimgrey;&quot;&gt;#!/bin/sh&lt;/span&gt;

&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;[&lt;/span&gt; $1 &lt;span style=&quot;color: #808030;&quot;&gt;]&lt;/span&gt;
&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;then&lt;/span&gt;
    VER&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;$1
&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;else&lt;/span&gt;
    &lt;span style=&quot;color: #bb7977; font-weight: bold;&quot;&gt;echo&lt;/span&gt; &lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;Which version of pycharm ide do you want do download?&quot;&lt;/span&gt;
    &lt;span style=&quot;color: #bb7977; font-weight: bold;&quot;&gt;read&lt;/span&gt; VER
&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;fi&lt;/span&gt;

NAME&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;PyCharm-$VER&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;.&lt;/span&gt;tar&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;.&lt;/span&gt;gz
EXTRACTED&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;pycharm-$VER

&lt;span style=&quot;color: #bb7977; font-weight: bold;&quot;&gt;cd&lt;/span&gt; ~&lt;span style=&quot;color: #40015a;&quot;&gt;/bin&lt;/span&gt;
wget &lt;span style=&quot;color: #44aadd;&quot;&gt;-c&lt;/span&gt; http&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #40015a;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #40015a;&quot;&gt;/download&lt;/span&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;.&lt;/span&gt;jetbrains&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #40015a;&quot;&gt;com/python&lt;/span&gt;&lt;span style=&quot;color: #40015a;&quot;&gt;/&lt;/span&gt;$NAME
tar xzf $NAME
unlink pycharm
ln &lt;span style=&quot;color: #44aadd;&quot;&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 не поменяли структуру каталогов, из которых происходит скачивание.</description><link>http://code-hints.ns-keip.ru/2011/07/pycharm.html</link><author>noreply@blogger.com (Nikita)</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#">301</category><category domain="http://www.blogger.com/atom/ns#">location</category><category domain="http://www.blogger.com/atom/ns#">nginx</category><category domain="http://www.blogger.com/atom/ns#">redirect</category><category domain="http://www.blogger.com/atom/ns#">rewrite</category><title>Глобальный 301 редирект на/с &quot;www.&quot; версию домена в 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&#39;ом.&lt;br /&gt;
&lt;br /&gt;
В общем для мазохистов-любителей длинных имён и прочих эмо есть вариант редиректа с без &quot;www&quot; на &quot;www&quot;:&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background: #f6f8ff; color: #000020;&quot;&gt;server &lt;span style=&quot;color: #406080;&quot;&gt;{&lt;/span&gt;
  server_name ~^&lt;span style=&quot;color: #406080;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #308080;&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;color: #200080; font-weight: bold;&quot;&gt;!&lt;/span&gt;www&lt;span style=&quot;color: #0f69ff;&quot;&gt;\.&lt;/span&gt;&lt;span style=&quot;color: #406080;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #406080;&quot;&gt;;&lt;/span&gt;
  rewrite ^ http&lt;span style=&quot;color: #308080;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #40015a;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #40015a;&quot;&gt;/www&lt;/span&gt;&lt;span style=&quot;color: #200080; font-weight: bold;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #007d45;&quot;&gt;$host&lt;/span&gt;&lt;span style=&quot;color: #007d45;&quot;&gt;$request_uri&lt;/span&gt; permanent&lt;span style=&quot;color: #406080;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #406080;&quot;&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;br /&gt;
да, почему-то принято упоминать, что автор решения Игорь Сысоев.&lt;br /&gt;
&lt;br /&gt;
Для прочих же, кто не стремится нажимать лишние клавиши преобразование из &quot;www&quot; в без &quot;www&quot;&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background: #f6f8ff; color: #000020;&quot;&gt;server &lt;span style=&quot;color: #406080;&quot;&gt;{&lt;/span&gt;
  server_name ~^&lt;span style=&quot;color: #406080;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #308080;&quot;&gt;?&lt;/span&gt;=www&lt;span style=&quot;color: #0f69ff;&quot;&gt;\.&lt;/span&gt;&lt;span style=&quot;color: #406080;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #406080;&quot;&gt;;&lt;/span&gt;
  &lt;span style=&quot;color: #200080; font-weight: bold;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #406080;&quot;&gt;(&lt;/span&gt; &lt;span style=&quot;color: #007d45;&quot;&gt;$host&lt;/span&gt; ~&lt;span style=&quot;color: #308080;&quot;&gt;*&lt;/span&gt; &lt;span style=&quot;color: #1060b6;&quot;&gt;&quot;www.(.*)&quot;&lt;/span&gt;&lt;span style=&quot;color: #406080;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #406080;&quot;&gt;{&lt;/span&gt;
    &lt;span style=&quot;color: #7779bb; font-weight: bold;&quot;&gt;set&lt;/span&gt; &lt;span style=&quot;color: #007d45;&quot;&gt;$unwww&lt;/span&gt; &lt;span style=&quot;color: #007d45;&quot;&gt;$1&lt;/span&gt;&lt;span style=&quot;color: #406080;&quot;&gt;;&lt;/span&gt;
  &lt;span style=&quot;color: #406080;&quot;&gt;}&lt;/span&gt;
  rewrite ^ &lt;span style=&quot;color: #007d45;&quot;&gt;$scheme&lt;/span&gt;&lt;span style=&quot;color: #308080;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #40015a;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #40015a;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #007d45;&quot;&gt;$unwww&lt;/span&gt;&lt;span style=&quot;color: #007d45;&quot;&gt;$request_uri&lt;/span&gt; permanent&lt;span style=&quot;color: #406080;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #200080; font-weight: bold;&quot;&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; вариант с/без &quot;www&quot; (убираем то, с чего редиректим), а то не сработает!</description><link>http://code-hints.ns-keip.ru/2011/05/301-www-nginx.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>4</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=&quot;http://codaset.com/&quot;&gt;codaset.com&lt;/a&gt;&amp;nbsp;который, &lt;a href=&quot;http://ariejan.net/2009/09/08/codaset-com-github-but-better/&quot;&gt;как известно, &quot;как github только лучше&quot;&lt;/a&gt;&amp;nbsp;(в частности&amp;nbsp;предлагает бесплатно 1 приватный проект для разработки с не ограниченным количеством участников и больше места). Соответственно по работе там один акк, а личный - другой и у них&lt;b&gt; разные ssh ключи для доступа&lt;/b&gt; (что тоже логично, как мне кажется), рабочий и личный. Личный у меня на флешке на шифрованном виртуальном диске.&lt;br /&gt;
&lt;br /&gt;
Проблема в том, что пытаясь залепить &lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;push&lt;/span&gt; в репу из личного проекта система подхватывает рабочий публичный ключ (т.к. она уже работала с этим сервером) и соответсвенно не пускает меня с левым ключём в частный репозиторий.&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: large;&quot;&gt;Выходы есть такие:&lt;/span&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;ol&gt;&lt;li&gt;Можно добавить рабочий ключ в список допущенных в личном репозитории, но! Страдает приватность, т.к. на работе мало ли кто имеет доступ к ПК и вообще.&lt;/li&gt;
&lt;li&gt;Можно убирать рабочий ключ и заливать в папку&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt; ~/.ssh/&lt;/span&gt; свой и потом менять - ну это понятно не наш метод. Да и забыть можно ключь свой на работе, что тоже не кошерно.&lt;/li&gt;
&lt;/ol&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: large;&quot;&gt;Наш метод:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
В файл&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt; ~/.ssh/config&lt;/span&gt; добавляем описания хостов&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-color: white; color: #181615;&quot;&gt;Host GitQnub
  &lt;span style=&quot;color: #006e28;&quot;&gt;Hostname=&lt;/span&gt;codaset.com
  &lt;span style=&quot;color: #006e28;&quot;&gt;IdentityFile=&lt;/span&gt;/media/truecrypt1/qnub

Host GitWork
  &lt;span style=&quot;color: #006e28;&quot;&gt;Hostname=&lt;/span&gt;codaset.com
  &lt;span style=&quot;color: #006e28;&quot;&gt;IdentityFile=&lt;/span&gt;~/.ssh/work/work
&lt;/pre&gt;&lt;br /&gt;
Как видно рабочие ключи нужно также перенести из папки &lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;~/.ssh&lt;/span&gt; т.к. она по умолчанию просматривается системой на предмет наличия ключей.&lt;br /&gt;
&lt;br /&gt;
Соответственно &lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;IdentityFile&lt;/span&gt; это путь к ключу для данного репозитория (свой и рабочий). Остаётся только заменить домен &lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;Hostname&lt;/span&gt; в параметре &lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;url&lt;/span&gt; файла &lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;.git/config&lt;/span&gt; вашего проекта на значение &lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;Host&lt;/span&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: large;&quot;&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=&quot;background-color: white; color: #0057ae;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #181615;&quot;&gt;[remote &quot;origin&quot;]&lt;/span&gt;&lt;/b&gt;
 url &lt;span style=&quot;color: #006e28;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #bf0303;&quot;&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=&quot;background-color: white; color: #0057ae;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #181615;&quot;&gt;[remote &quot;origin&quot;]&lt;/span&gt;&lt;/b&gt;
 url &lt;span style=&quot;color: #006e28;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #bf0303;&quot;&gt; git@GitWork:work/work-project.git&lt;/span&gt;
&lt;/pre&gt;&lt;br /&gt;
После этого команды &lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;git fetch&lt;/span&gt;, &lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;git push&lt;/span&gt; и &lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;git pull&lt;/span&gt; будут использовать назначенные ключи для назначенных репозиториев. Аналогичная штука работает и с &lt;b&gt;github&lt;/b&gt;.</description><link>http://code-hints.ns-keip.ru/2010/12/ssh-git.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>2</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=&quot;Apple-style-span&quot; style=&quot;-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre style=&quot;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;&quot;&gt;rand_color &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: purple;&quot;&gt;{&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #0000e6;&quot;&gt;&#39;#&#39;&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;+&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;Math&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;round&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;Math&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;random&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;*&lt;/span&gt; Math&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;pow&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #008c00;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #008c00;&quot;&gt;24&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;toString&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #008c00;&quot;&gt;16&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt; &lt;span style=&quot;color: purple;&quot;&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;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;&quot;&gt;&lt;span style=&quot;color: purple;&quot;&gt;
&lt;/span&gt;&lt;/pre&gt;</description><link>http://code-hints.ns-keip.ru/2010/11/js.html</link><author>noreply@blogger.com (Nikita)</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#">cron</category><category domain="http://www.blogger.com/atom/ns#">linux</category><title>Звездочки Crontab</title><description>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhN4um-X06iCA3W4burlHGp9AusEoy1PDXHkGkUn8-HMEGzzoQ5Z60Qd4M0hezU3NmW6u_C-4GMGPG8H4jYF4-dDw8cstSnH1tRMDY4cuuVHbX0EW0H-ZHwmFaIq3LaTpytvLsBw4T6SW8/s1600/linux_crontab_syntax.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;129&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhN4um-X06iCA3W4burlHGp9AusEoy1PDXHkGkUn8-HMEGzzoQ5Z60Qd4M0hezU3NmW6u_C-4GMGPG8H4jYF4-dDw8cstSnH1tRMDY4cuuVHbX0EW0H-ZHwmFaIq3LaTpytvLsBw4T6SW8/s320/linux_crontab_syntax.gif&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;</description><link>http://code-hints.ns-keip.ru/2010/10/crontab.html</link><author>noreply@blogger.com (Nikita)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhN4um-X06iCA3W4burlHGp9AusEoy1PDXHkGkUn8-HMEGzzoQ5Z60Qd4M0hezU3NmW6u_C-4GMGPG8H4jYF4-dDw8cstSnH1tRMDY4cuuVHbX0EW0H-ZHwmFaIq3LaTpytvLsBw4T6SW8/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#">mongodb</category><category domain="http://www.blogger.com/atom/ns#">ссылки</category><title>ссылка: mongodb основы map/reduce</title><description>&lt;a href=&quot;http://kylebanker.com/blog/2009/12/mongodb-map-reduce-basics/&quot;&gt;Map-Reduce Basics&lt;/a&gt;: очень неплохая статья об агрегировании данных в MongoDB с помощью map/reduce.</description><link>http://code-hints.ns-keip.ru/2010/10/mongodb-mapreduce.html</link><author>noreply@blogger.com (Nikita)</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=&quot;text-align: center;&quot;&gt;&lt;/div&gt;&lt;pre style=&quot;background-color: white; color: black; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt;datetime.strptime(sys.argv[&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt;], &lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt;&#39;%H:%M&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt;)&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;С помощью которого можно сделать, например, простой-простой будильник (простой-простой, потому что будет работать в рамках одной даты, например, с 3 ночи до 7 утра, что бывает достаточно для программиста, админа или еще какого-нибудь гика).&lt;/div&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: white; color: black;&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: grey;&quot;&gt;#-*- coding: UTF-8 -*-&lt;/span&gt;&lt;/i&gt;
&lt;span style=&quot;color: magenta;&quot;&gt;import&lt;/span&gt; time
&lt;span style=&quot;color: magenta;&quot;&gt;import&lt;/span&gt; os
&lt;span style=&quot;color: magenta;&quot;&gt;import&lt;/span&gt; sys
&lt;span style=&quot;color: magenta;&quot;&gt;from&lt;/span&gt; datetime &lt;span style=&quot;color: magenta;&quot;&gt;import&lt;/span&gt; datetime

&lt;b&gt;def&lt;/b&gt; play():
    command &lt;b&gt;=&lt;/b&gt; &lt;span style=&quot;color: #dd0000;&quot;&gt;&quot;totem ~/bin/alarm.pls &amp;gt;/dev/null 2&amp;gt;/dev/null&quot;&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=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt;datetime.strptime(sys.argv[&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt;], &lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt;&#39;%H:%M&#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt;)&lt;/span&gt;.time():
            time.sleep(&lt;span style=&quot;color: blue;&quot;&gt;1&lt;/span&gt;)
    &lt;b&gt;except&lt;/b&gt;:
        &lt;b&gt;print&lt;/b&gt; &lt;span style=&quot;color: #dd0000;&quot;&gt;&quot;Invalid hour:minute value!&quot;&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=&quot;color: maroon;&quot;&gt;__name__&lt;/span&gt; &lt;b&gt;==&lt;/b&gt; &lt;span style=&quot;color: #dd0000;&quot;&gt;&quot;__main__&quot;&lt;/span&gt;:
    main()

&lt;/pre&gt;</description><link>http://code-hints.ns-keip.ru/2010/09/python.html</link><author>noreply@blogger.com (Nikita)</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=&quot;http://document.kremlin.ru/doc.asp?ID=054318&quot;&gt;&quot;О дне программиста&quot;&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=&quot;background-color: white; color: black;&quot;&gt;&lt;span style=&quot;color: magenta;&quot;&gt;from&lt;/span&gt; datetime &lt;span style=&quot;color: magenta;&quot;&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=&quot;color: blue;&quot;&gt;1&lt;/span&gt;, day&lt;b&gt;=&lt;/b&gt;&lt;span style=&quot;color: blue;&quot;&gt;1&lt;/span&gt;) &lt;b&gt;+&lt;/b&gt; timedelta(&lt;span style=&quot;color: blue;&quot;&gt;256&lt;/span&gt;)

&lt;b&gt;if&lt;/b&gt; &lt;span style=&quot;color: maroon;&quot;&gt;__name__&lt;/span&gt; &lt;b&gt;==&lt;/b&gt; &lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;__main__&#39;&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=&quot;background: #ffffff; color: black;&quot;&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;function&lt;/span&gt; prog_date&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: purple;&quot;&gt;{&lt;/span&gt;
    today &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;new&lt;/span&gt; Date&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;
    today&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;setMonth&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #008c00;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #008c00;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;
    today&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;setDate&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #008c00;&quot;&gt;256&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;return&lt;/span&gt; today&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: purple;&quot;&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;
* А эту функцию так мы вообще выполним:&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;script type=&quot;text/javascript&quot;&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;</description><link>http://code-hints.ns-keip.ru/2010/09/2010.html</link><author>noreply@blogger.com (Nikita)</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#">mongodb</category><category domain="http://www.blogger.com/atom/ns#">python</category><title>Python и mongodb: забрать значения из курсора</title><description>Очень полезной особенностью API Python для &lt;a href=&quot;http://www.mongodb.org/&quot;&gt;MongoDB&lt;/a&gt; (&lt;a href=&quot;http://api.mongodb.org/python/1.8.1%2B/index.html&quot;&gt;pymongo&lt;/a&gt;) является то, что мы всегда можем достать значения из ленивого курсора: для этого просто нужно использовать преобразование в &lt;a href=&quot;http://docs.python.org/tutorial/datastructures.html#more-on-lists&quot;&gt;list&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;span style=&quot;color: magenta;&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; pymongo &lt;/span&gt;&lt;span style=&quot;color: magenta;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; Connection&lt;/span&gt;

&lt;span style=&quot;color: black;&quot;&gt;c &lt;/span&gt;&lt;span style=&quot;color: magenta;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; Connection&lt;/span&gt;&lt;span style=&quot;color: magenta;&quot;&gt;()&lt;/span&gt;
&lt;span style=&quot;color: black;&quot;&gt;db &lt;/span&gt;&lt;span style=&quot;color: magenta;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; c&lt;/span&gt;&lt;span style=&quot;color: magenta;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;database&#39;&lt;/span&gt;&lt;span style=&quot;color: magenta;&quot;&gt;]&lt;/span&gt;
&lt;span style=&quot;color: black; font-weight: bold;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; db.users.find&lt;/span&gt;&lt;span style=&quot;color: magenta;&quot;&gt;()&lt;/span&gt;
&lt;span style=&quot;color: grey; font-style: italic;&quot;&gt;# выведет курсор MongoDB: &lt;pymongo.cursor.cursor 0xb71077=&quot;&quot; at=&quot;&quot; object=&quot;&quot;&gt;&lt;/pymongo.cursor.cursor&gt;&lt;/span&gt;
&lt;span style=&quot;color: black; font-weight: bold;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt;list&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: magenta;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt;db.users.find&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: magenta;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt;())&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;color: grey; font-style: italic;&quot;&gt;# выведет список объектов из базы: [{u&#39;username&#39;: u&#39;user&#39;, u&#39;visitor&#39;: False ... }, ...]&lt;/span&gt;
&lt;/pre&gt;</description><link>http://code-hints.ns-keip.ru/2010/08/python-mongodb.html</link><author>noreply@blogger.com (Nikita)</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=&quot;color: #ff00ff;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; string&lt;/span&gt;
&lt;span style=&quot;color: #ff00ff;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; random&lt;/span&gt;

&lt;span style=&quot;font-weight: bold;color: #000000;&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; randstring&lt;/span&gt;&lt;span style=&quot;color: #ff00ff;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;n&lt;/span&gt;&lt;span style=&quot;color: #ff00ff;&quot;&gt;):&lt;/span&gt;
&lt;span style=&quot;color: #000000;&quot;&gt;    a &lt;/span&gt;&lt;span style=&quot;color: #ff00ff;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; string.ascii_letters &lt;/span&gt;&lt;span style=&quot;color: #ff00ff;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; string.digits&lt;/span&gt;
&lt;span style=&quot;color: #000000;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;font-weight: bold;color: #000000;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;&#39;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.join&lt;/span&gt;&lt;span style=&quot;color: #ff00ff;&quot;&gt;([&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;random.choice&lt;/span&gt;&lt;span style=&quot;color: #ff00ff;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;color: #ff00ff;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-weight: bold;color: #000000;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; i &lt;/span&gt;&lt;span style=&quot;font-weight: bold;color: #000000;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #800000;&quot;&gt;range&lt;/span&gt;&lt;span style=&quot;color: #ff00ff;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;n&lt;/span&gt;&lt;span style=&quot;color: #ff00ff;&quot;&gt;)])&lt;/span&gt;

&lt;span style=&quot;font-weight: bold;color: #000000;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; randstring&lt;/span&gt;&lt;span style=&quot;color: #ff00ff;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;color: #ff00ff;&quot;&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;br /&gt;
Здесь мы создали и вывели на печать строку из 10 рандомных символов.</description><link>http://code-hints.ns-keip.ru/2010/08/python_19.html</link><author>noreply@blogger.com (Nikita)</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#">python</category><category domain="http://www.blogger.com/atom/ns#">метапрограммирование</category><category domain="http://www.blogger.com/atom/ns#">ссылки</category><title>(Ссылка) Python: конфликты метаклассов</title><description>Весьма неплохая статья о разрешении конфликтов метаклассов в Python.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://code.activestate.com/recipes/204197-solving-the-metaclass-conflict/&quot;&gt;http://code.activestate.com/recipes/204197-solving-the-metaclass-conflict/&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;</description><link>http://code-hints.ns-keip.ru/2010/08/python.html</link><author>noreply@blogger.com (Nikita)</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=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: &#39;Times New Roman&#39;; font-size: medium;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: &#39;Times New Roman&#39;; font-size: medium;&quot;&gt;&lt;pre style=&quot;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;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px;&quot;&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;function&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt; 
    &lt;/span&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;return&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt; getElementById&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt; 
&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;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;&quot;&gt;&lt;span style=&quot;color: purple;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&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=&quot;http://jquery.org/&quot;&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=&quot;Apple-style-span&quot; style=&quot;-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre style=&quot;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;&quot;&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;function&lt;/span&gt; f&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;arg1&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; arg2&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: purple;&quot;&gt;{&lt;/span&gt;

$&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&#39;#some_selector&#39;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: dimgrey;&quot;&gt;// ...&lt;/span&gt;

&lt;span style=&quot;color: purple;&quot;&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;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;&quot;&gt;&lt;span style=&quot;color: purple;&quot;&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial;&quot;&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;Стало:&lt;br /&gt;
&lt;pre style=&quot;background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial;&quot;&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial;&quot;&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;function&lt;/span&gt; f&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;arg1&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt;arg2&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: purple;&quot;&gt;{&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;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;&quot;&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;$&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: purple;&quot;&gt;{&lt;/span&gt;
        $&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&#39;#some_selector&#39;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: dimgrey;&quot;&gt;// ... code&lt;/span&gt;
    &lt;span style=&quot;color: purple;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;jQuery&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;

&lt;span style=&quot;color: purple;&quot;&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;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;&quot;&gt;&lt;span style=&quot;color: purple;&quot;&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;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;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;; white-space: normal;&quot;&gt;Здесь мы создаем анонимную функцию и сразу же ее вызываем. Она представляет собой старую функцию с несколько измененной сигнатурой: в качестве параметра она получит jQuery, а &quot;старые&quot; аргументы будут доступны ей благодаря &lt;a href=&quot;http://habrahabr.ru/blogs/webdev/38642/&quot;&gt;замыканиям&lt;/a&gt;.&lt;/span&gt;&lt;/pre&gt;</description><link>http://code-hints.ns-keip.ru/2010/07/javascript-jquery.html</link><author>noreply@blogger.com (Nikita)</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=&quot;http://www.jetbrains.com/pycharm/&quot;&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=&quot;text-align: center;&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt;find -type f -name &#39;*.pyc&#39; -exec rm {} \;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;</description><link>http://code-hints.ns-keip.ru/2010/08/python-pyc.html</link><author>noreply@blogger.com (Nikita)</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=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #cc00cc; font-weight: bold;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt;find&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt; -type f -name &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt;&#39;*.py&#39;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt; -exec &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #cc00cc; font-weight: bold;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt;cat&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt;{}&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt;\;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: black; font-weight: bold;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt;|&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #cc00cc; font-weight: bold;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt;wc&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt; -l&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;
Так с помощью командной строки мы можем узнать количество строк кода в нашем проекте.</description><link>http://code-hints.ns-keip.ru/2010/07/bash_19.html</link><author>noreply@blogger.com (Nikita)</author><thr:total>10</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=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a bitly=&quot;BITLY_PROCESSED&quot; href=&quot;http://blog.g2peru.com/wp-content/uploads/2009/06/php-mysql.gif&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;176&quot; src=&quot;http://blog.g2peru.com/wp-content/uploads/2009/06/php-mysql.gif&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Бывает нужно получить единственное значение из MySQL и огород из запроса и получения строки из результата, а потом использования значения полученного массива кажется явно лишним.&lt;br /&gt;
&lt;br /&gt;
Т.е. стандартное (академическое) решение выглядит так:&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-color: white; clear: both; color: #141312;&quot;&gt;&lt;b&gt;&lt;!--?php&lt;/b--&gt;
&lt;span style=&quot;color: #5555ff;&quot;&gt;$sql&lt;/span&gt; = &lt;span style=&quot;color: #452886;&quot;&gt;mysqli_query&lt;/span&gt;&lt;span style=&quot;color: #006e28;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #bf0303;&quot;&gt;&quot;SELECT COUNT(*) FROM `table` WHERE `col`=&#39;value&#39;;&quot;&lt;/span&gt;&lt;span style=&quot;color: #006e28;&quot;&gt;);&lt;/span&gt; &lt;i&gt;&lt;span style=&quot;color: #888786;&quot;&gt;// получаем данные&lt;/span&gt;&lt;/i&gt;
&lt;span style=&quot;color: #5555ff;&quot;&gt;$row&lt;/span&gt; = &lt;span style=&quot;color: #452886;&quot;&gt;mysqli_fetch_assoc&lt;/span&gt;&lt;span style=&quot;color: #006e28;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #5555ff;&quot;&gt;$sql&lt;/span&gt;&lt;span style=&quot;color: #006e28;&quot;&gt;);&lt;/span&gt; &lt;i&gt;&lt;span style=&quot;color: #888786;&quot;&gt;// получаем строку в массив&lt;/span&gt;&lt;/i&gt;
&lt;span style=&quot;color: #452886;&quot;&gt;echo&lt;/span&gt; &lt;span style=&quot;color: #5555ff;&quot;&gt;$row&lt;/span&gt;&lt;span style=&quot;color: #006e28;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #bf0303;&quot;&gt;&#39;COUNT(*)&#39;&lt;/span&gt;&lt;span style=&quot;color: #006e28;&quot;&gt;];&lt;/span&gt; &lt;i&gt;&lt;span style=&quot;color: #888786;&quot;&gt;// используем значение массива
// неудобная переменная,&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span style=&quot;color: #888786;&quot;&gt;нужно одно значение, а используем массив

// можно присвоить значение новой переменной&lt;/span&gt;&lt;/i&gt;
&lt;span style=&quot;color: #5555ff;&quot;&gt;$count&lt;/span&gt; = &lt;span style=&quot;color: #5555ff;&quot;&gt;$row&lt;/span&gt;&lt;span style=&quot;color: #006e28;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #bf0303;&quot;&gt;&#39;COUNT(*)&#39;&lt;/span&gt;&lt;span style=&quot;color: #006e28;&quot;&gt;];&lt;/span&gt;

&lt;i&gt;&lt;span style=&quot;color: #888786;&quot;&gt;// либо переопределить массив в переменную&lt;/span&gt;&lt;/i&gt;
&lt;span style=&quot;color: #5555ff;&quot;&gt;$row&lt;/span&gt; = &lt;span style=&quot;color: #5555ff;&quot;&gt;$row&lt;/span&gt;&lt;span style=&quot;color: #006e28;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #bf0303;&quot;&gt;&#39;COUNT(*)&#39;&lt;/span&gt;&lt;span style=&quot;color: #006e28;&quot;&gt;];&lt;/span&gt;

&lt;i&gt;&lt;span style=&quot;color: #888786;&quot;&gt;// но это либо дополнительная переменная,&lt;/span&gt;&lt;/i&gt;
&lt;i&gt;&lt;span style=&quot;color: #888786;&quot;&gt;// либо не логичное название переменной,&lt;/span&gt;&lt;/i&gt;
&lt;i&gt;&lt;span style=&quot;color: #888786;&quot;&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=&quot;background-color: white; color: #141312;&quot;&gt;&lt;b&gt;&lt;!--?php&lt;/b--&gt;
&lt;span style=&quot;color: #5555ff;&quot;&gt;$sql&lt;/span&gt; = &lt;span style=&quot;color: #452886;&quot;&gt;mysqli_query&lt;/span&gt;&lt;span style=&quot;color: #006e28;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #bf0303;&quot;&gt;&quot;SELECT COUNT(*) FROM `table` WHERE `col`=&#39;value&#39;;&quot;&lt;/span&gt;&lt;span style=&quot;color: #006e28;&quot;&gt;);&lt;/span&gt; &lt;i&gt;&lt;span style=&quot;color: #888786;&quot;&gt;// получаем данные&lt;/span&gt;&lt;/i&gt;
&lt;span style=&quot;color: #452886;&quot;&gt;list&lt;/span&gt;&lt;span style=&quot;color: #006e28;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #5555ff;&quot;&gt;$count&lt;/span&gt;&lt;span style=&quot;color: #006e28;&quot;&gt;)&lt;/span&gt; = &lt;span style=&quot;color: #452886;&quot;&gt;mysqli_fetch_array&lt;/span&gt;&lt;span style=&quot;color: #006e28;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #5555ff;&quot;&gt;$sql&lt;/span&gt;&lt;span style=&quot;color: #006e28;&quot;&gt;);&lt;/span&gt; &lt;i&gt;&lt;span style=&quot;color: #888786;&quot;&gt;// получаем строку в массив и 
// первое значение сразу присваиваем переменной&lt;/span&gt;&lt;/i&gt;
&lt;span style=&quot;color: #452886;&quot;&gt;echo&lt;/span&gt; &lt;span style=&quot;color: #5555ff;&quot;&gt;$count&lt;/span&gt;&lt;span style=&quot;color: #006e28;&quot;&gt;;&lt;/span&gt; &lt;i&gt;&lt;span style=&quot;color: #888786;&quot;&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;</description><link>http://code-hints.ns-keip.ru/2010/07/mysql-php-2.html</link><author>noreply@blogger.com (Anonymous)</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=&quot;http://code-hints.ns-keip.ru/2010/07/bash_12.html&quot;&gt;предыдущих постов&lt;/a&gt; поступило предложение сделать скрипт, который позволил бы время от времени чистить папку с архивами, чтобы в ней оставалось лишь определенное количество файлов (разумеется, самых свежих).&lt;br /&gt;
&lt;strong&gt;Хинт:&lt;/strong&gt; Для этих целей можно использовать редактор awk, запустив следующую команду из директории с архивами:&lt;br /&gt;
&lt;pre style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #cc00cc; font-weight: bold;&quot;&gt;ls&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; -t &lt;/span&gt;&lt;span style=&quot;color: black; font-weight: bold;&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #cc00cc; font-weight: bold;&quot;&gt;awk&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&#39;NR&amp;gt;=10 {print;}&#39;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; /dev/stdin &lt;/span&gt;&lt;span style=&quot;color: black; font-weight: bold;&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #cc00cc; font-weight: bold;&quot;&gt;xargs&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; -i &lt;/span&gt;&lt;span style=&quot;color: #cc00cc; font-weight: bold;&quot;&gt;rm&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;{}&lt;/span&gt;&lt;/pre&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;ls -t&lt;/span&gt; выводит список файлов, сортируя его по времени создания&lt;br /&gt;
команда awk NR&amp;gt;=10 {print;} выводит из файла строки, номера которых больше 10.&amp;nbsp;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;/dev/stdin&lt;/span&gt;&amp;nbsp;в качестве имени файла позволяет использовать стандартный поток ввода (что делает ls -t через пайп).&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;xargs -i rm {} &lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;удаляет файлы, имена которых приходят через пайп от awk.&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;Таким образом, мы оставляем в директории только 10 самых новых файлов.&lt;/span&gt;</description><link>http://code-hints.ns-keip.ru/2010/07/bash_14.html</link><author>noreply@blogger.com (Nikita)</author><thr:total>3</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#">backup</category><category domain="http://www.blogger.com/atom/ns#">bash</category><title>Bash: быстрый бэкап</title><description>Если вам нужно периодически делать бэкапы тех или иных директорий, вы можете воспользоваться date для формирования имени:&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #cc00cc; font-weight: bold;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;tar&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt; -czf ~/archived_folder_&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: black; font-weight: bold;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #cc00cc; font-weight: bold;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;date&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt; +&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #dd0000;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&#39;%Y%m%d_%H%M&#39;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: black; font-weight: bold;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;.tar.gz &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: black; font-weight: bold;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;/working_folder/&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;&gt; &lt;/span&gt;
&lt;/pre&gt;&lt;pre style=&quot;text-align: center;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;
&lt;/span&gt;&lt;/pre&gt;Данная команда создает в домашней папке архив arсhived_folder (с добавлением года, месяца, дня и времени: archived_folder_20100712_1242.tar.gz) из папки working_folder (в текущей директории).</description><link>http://code-hints.ns-keip.ru/2010/07/bash_12.html</link><author>noreply@blogger.com (Nikita)</author><thr:total>1</thr:total></item></channel></rss>