<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>0utPunk&#039;s Blog</title>
	<atom:link href="http://outpunk.name/feed/" rel="self" type="application/rss+xml" />
	<link>http://outpunk.name</link>
	<description>Обо всем понемногу</description>
	<lastBuildDate>Tue, 01 Jun 2010 10:10:38 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=abc</generator>
		<item>
		<title>Зеркалирование баз ESET NOD32</title>
		<link>http://outpunk.name/2010/06/eset-nod32-mirorring/</link>
		<comments>http://outpunk.name/2010/06/eset-nod32-mirorring/#comments</comments>
		<pubDate>Tue, 01 Jun 2010 10:08:52 +0000</pubDate>
		<dc:creator>0utPunk</dc:creator>
				<category><![CDATA[администрирование]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[NOD32]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://outpunk.name/?p=744</guid>
		<description><![CDATA[Есть у меня на работе роутер под FreeBSD, и есть пара десятков компьютеров с установленным NOD32. В целях экономии трафика был написан скрипт на Ruby для зеркалирования вирусных баз. Для того, чтобы воспользоваться скриптом, нужно установить пакет unrar и склонировать репозиторий с гитхаба: git clone git@github.com:OutPunk/nod32_mirror.git А затем подправить настройки в файле config.rb LOGIN, PASS [...]]]></description>
			<content:encoded><![CDATA[<p>Есть у меня на работе роутер под FreeBSD, и есть пара десятков компьютеров с установленным NOD32. В целях экономии трафика был написан <a href="http://github.com/OutPunk/nod32_mirror" target="_blank">скрипт на Ruby</a> для зеркалирования вирусных баз.</p>
<p>Для того, чтобы воспользоваться скриптом, нужно установить пакет unrar и склонировать репозиторий с гитхаба:<br />
<code><br />
git clone git@github.com:OutPunk/nod32_mirror.git<br />
</code><br />
А затем подправить настройки в файле config.rb<br />
<code><br />
LOGIN, PASS = 'логин', 'пароль' #ваш ключ от NOD32<br />
SAVE_PATH = '/путь/куда/надо/сохранять/базы'<br />
UPDATE_VER_URL = 'http://update.eset.com/eset_upd/update.ver' # Адрес файла update.ver, менять не нужно<br />
TEMP_DIR = '/tmp' # путь для распаковки update.ver<br />
VER_FILE = 'ver.yml' # файл для хранения версий полученных файлов<br />
</code><br />
Запускается скрипт просто:<br />
<code>/путь/до/скрипта/nod32_mirror/main.rb</code></p>
]]></content:encoded>
			<wfw:commentRss>http://outpunk.name/2010/06/eset-nod32-mirorring/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Восстановлениe развалившегося RAID на основе контроллера Adaptec 2610SA.</title>
		<link>http://outpunk.name/2010/04/adaptec-raid-recovering/</link>
		<comments>http://outpunk.name/2010/04/adaptec-raid-recovering/#comments</comments>
		<pubDate>Fri, 09 Apr 2010 08:37:35 +0000</pubDate>
		<dc:creator>0utPunk</dc:creator>
				<category><![CDATA[*nix]]></category>
		<category><![CDATA[администрирование]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Frenzy]]></category>
		<category><![CDATA[RAID]]></category>

		<guid isPermaLink="false">http://outpunk.name/?p=679</guid>
		<description><![CDATA[Случилась на работе ситуация — развалился от перегрева RAID 5 , сделанный на аппаратном контроллере Adaptec 2610SA, на файловом сервере с FreeBSD. После гугления были найдены UFS Explorer, RAID Reconstructor и R-Studio, умеющие программно собирать массив и предоставлять доступ к ФС в нем. Нас они не устроили по двум причинам: они не дружат с русскими [...]]]></description>
			<content:encoded><![CDATA[<p>Случилась на работе ситуация — развалился от перегрева RAID 5 , сделанный на аппаратном контроллере Adaptec 2610SA, на файловом сервере с FreeBSD. После гугления были найдены <a href="http://www.ufsexplorer.com/">UFS Explorer</a>, <a href="http://www.runtime.org/raid.htm">RAID Reconstructor</a> и <a href="http://www.data-recovery-software.net/">R-Studio</a>, умеющие программно собирать массив и предоставлять доступ к ФС в нем. Нас они не устроили по двум причинам: они не дружат с русскими именами файлов (а там таких много) и диски в массиве, как выяснилось, были битые. Еще подумав и погуглив чуток, пришли к простому очевидному решению, лежавшему на поверхности: восстановление массива непосредсвенно при помощи контроллера и Frenzy. Описанный способ, полагаю, будет работать и на других контроллерах.</p>
<p><span id="more-679"></span></p>
<p>Первым делом топаем в BIOS RAID контроллера и создаем массив заново. Обязательно с опцией «Quick Init», если вам дороги ваши данные. Затем засовываем диск с Frenzy, загружаемся как обычно, лезем в консоль и пишем<br />
<code><br />
scan_ffs -l /dev/aacd0 &gt; labels_file<br />
</code><br />
Естественно, вместо aacd0 пишем имя своего устройства. Эта команда найдет в массиве дисковые метки FreeBSD c UFS. Вывод будет примерно таким:<br />
<code><br />
X: 1048576 63 4.2BSD 2048 16384 0 # /<br />
X: 2324480 1504959 4.2BSD 2048 16384 0 # /var<br />
X: 1048576 3829439 4.2BSD 2048 16384 0 # /tmp<br />
X: 17042960 4878015 4.2BSD 2048 16384 0 # /usr<br />
</code><br />
Далее нам нужно в файле labels_file заменить символы «X» в начале строк на буквы, соответствующие дисковым меткам с UFS, примерно так:<br />
<code><br />
a: 1048576 63 4.2BSD 2048 16384 0 # /<br />
e: 2324480 1504959 4.2BSD 2048 16384 0 # /var<br />
f: 1048576 3829439 4.2BSD 2048 16384 0 # /tmp<br />
d: 17042960 4878015 4.2BSD 2048 16384 0 # /usr<br />
</code><br />
Затем смотрим, что у нас получится:<br />
<code><br />
#disklabel -R -n /dev/aacd0 labels_file<br />
disklabel: write to disk label supressed - label was as follows:<br />
# /dev/aacd0:<br />
8 partitions:<br />
#        size   offset    fstype   [fsize bsize bps/cpg]<br />
a:  1048576       63    4.2BSD     2048 16384     0<br />
c: 21921792        0    unused        0     0         # "raw" part, don't edit<br />
d: 17042960  4878015    4.2BSD     2048 16384     0<br />
e:  2324480  1504959    4.2BSD     2048 16384     0<br />
f:  1048576  3829439    4.2BSD     2048 16384     0<br />
</code><br />
и сохраняем метки на диск:<br />
<code><br />
disklabel -R /dev/aacd0 labels_file<br />
</code><br />
Теперь можно смело примонтировать разделы и забрать оттуда данные:<br />
<code><br />
mount /dev/aacd0a /mnt/aacd0a<br />
</code><br />
А можно и использовать массив дальше, если конечно, диски целые и есть нормальное охлаждение. И да, берегите свои данные и не паникуйте, если на первый взгляд кажется, что восстановить их маловероятно.</p>
]]></content:encoded>
			<wfw:commentRss>http://outpunk.name/2010/04/adaptec-raid-recovering/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Использование SVG для гибких, расширяемых и занятных фонов. Часть первая.</title>
		<link>http://outpunk.name/2010/01/using-svg-for-flexible-scalable-and-fun-backgrounds-part-1/</link>
		<comments>http://outpunk.name/2010/01/using-svg-for-flexible-scalable-and-fun-backgrounds-part-1/#comments</comments>
		<pubDate>Sun, 31 Jan 2010 10:52:41 +0000</pubDate>
		<dc:creator>0utPunk</dc:creator>
				<category><![CDATA[Browsers]]></category>
		<category><![CDATA[HTML/XHTML]]></category>
		<category><![CDATA[Переводы]]></category>
		<category><![CDATA[(X)HTML]]></category>
		<category><![CDATA[svg]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://outpunk.name/?p=634</guid>
		<description><![CDATA[Решил сделать вольно-раздолбайский перевод статьи о SVG с ALA. Это перевод первой части, в ближайшее время постараюсь перевести вторую. Масштабируемая векторная графика (SVG) состоит из кругов, прямоугольников и путей, представленных в XML и объединенных в изображения на веб-страницах. Вы можете применять сплошную заливку,  градиенты и некоторые фильтры  SVG — не все браузеры поддерживают все типы [...]]]></description>
			<content:encoded><![CDATA[<p>Решил сделать вольно-раздолбайский перевод статьи о SVG с ALA. Это перевод <a href="http://www.alistapart.com/articles/using-svg-for-flexible-scalable-and-fun-backgrounds-part-i/" target="_blank">первой части</a>, в ближайшее время постараюсь перевести вторую.</p>
<p><a href="http://ru.wikipedia.org/wiki/SVG" target="_blank">Масштабируемая векторная графика (SVG)</a> состоит из кругов, прямоугольников и путей, представленных в XML и объединенных в изображения на веб-страницах. Вы можете применять сплошную заливку,  градиенты и некоторые фильтры  SVG — не все браузеры поддерживают все типы фильтров. Вы можете включать текст, изображения и можете копировать ваши SVG столько, сколько хотите. Чаще всего SVG используется в графических программах, для создания диаграмм, иллюстраций, анимаций.  Однако, ничто не мешает нам использовать SVG для дизайна сайтов —это дает нам удивительно универсальные возможности в веб-дизайне, занятные в использовании. В этой вводной статье я рассмотрю некоторые важные моменты в работе с SVG, включая поддержку в браузерах. Во второй части мы рассмотрим, как найти и адаптировать SVG, которые вы можете найти в Сети, или как создать SVG-изображения самостоятельно и добавить их на вашу страницу.</p>
<p><span id="more-634"></span></p>
<h2>Дикий SVG</h2>
<p>Некоторые люди используют SVG для дизайна сайтов, обычно для значков топиков. Например, Sam Ruby, сопредседатель рабочей группы HTML5, <a href="http://intertwingly.net/blog/">использует SVG в постах своего блога</a>. Erik Dahlstrom из команды Opera <a href="http://my.opera.com/MacDev_ed/blog/" target="_blank">делает то же самое</a>, что и Jeff Schiller на <a href="http://codedread.com/">Codedread</a>.</p>
<p>Джефф использует SVG не только для иконок, но и встраивает в меню и весь его сайт использует векторную графику. На сайте <a href="http://emacsformacosx.com/">Emacs для Mac OS X</a> в основном используется SVG, чтобы увидеть масштабирование SVG в действии, изменить размер страницы.</p>
<p>Я <em>(т.е. автор статьи — прим. пер.)</em> использовал SVG для получения ц<a href="http://burningbird.net/technology/color-sampling-and-svg-gradients/" target="_blank">ветов градиента из фото, отображаемого в данный момент</a> (перезагрузите пару раз страницу, чтобы увидеть эффект), как <a href="http://svgfeed.burningbird.net/" target="_blank">причудливый элемент фона</a> и для <a href="http://frugalalgorithm.burningbird.net/" target="_blank">общей темы моих сайтов</a>.</p>
<h2>Когда можно и когда нельзя использовать SVG</h2>
<p>Вы можете использовать SVG везде, где вы используете GIF, JPEG или PNG. Используя SVG, вы предоставляете <em>инструкции по отрисовке</em>, а не растр.</p>
<p>Будучи векторным графикой, SVG может масштабироваться, чтобы вписаться в размер страницы, тогда как JPEG или GIF этого не могут совсем или, как минимум, не могут сделать это чисто. Эта масштабируемость может быть особенно полезна, когда пользователь просматривает страницу  и на таком маленьком устройстве, как iPhone, и на большом 32-дюймовом мониторе. На скриншотах ниже  показан сайт EMACS для OS X открытый браузере на весь экран и ужатом по вертикали. Обратите внимание, что изображение уменьшается так, чтобы вписаться в окно браузера, не нарушая при этом пропорций. Независимо от того, насколько велика страница, изображение масштабируется корректно.</p>
<div id="attachment_645" class="wp-caption aligncenter" style="width: 550px"><a href="http://outpunk.name/uploads/2010/01/figure1.png" rel="lightbox[634]"><img class="size-full wp-image-645 " title="Скриншот сайта EMACS для Mac OS X" src="http://outpunk.name/uploads/2010/01/figure1.png" alt="" width="540" height="309" /></a><p class="wp-caption-text">Скриншот сайта EMACS для Mac OS X</p></div>
<div id="attachment_647" class="wp-caption aligncenter" style="width: 550px"><a href="http://outpunk.name/uploads/2010/01/figure2.png" rel="lightbox[634]"><img class="size-full wp-image-647" title="Тот же сайт, но в уменьшенном окне браузера" src="http://outpunk.name/uploads/2010/01/figure2.png" alt="" width="540" height="205" /></a><p class="wp-caption-text">Тот же сайт, но в уменьшенном окне браузера</p></div>
<p>SVG так же не сильно нагружает канал. Неважно сколько графики передается клиенту, ведь она описывается при помощи XML. SVG может быть полезен, когда необходимо заполнить фон страницы графикой без повторяющихся элементов.</p>
<p>Каким бы хорошим SVG не был, существуют случая, когда вам не следует его использовать. Например, вы можете преобразовать фото в SVG, но преобразование не будет точным. К тому же ресурсов клиента может не хватить для отрисовки такого изображения. Я сконвертировал довольной сложный JPEG в <a href="http://burningbird.net/svg/garden5.svg" target="_blank">SVG</a> для тестирования. В результате повисла не только первая бета Хрома, но и компьютер, во время обработки SVG.</p>
<p>Итак, SVG не может заменить фото или сложные изображения, но для всего остального вполне подойдет. До того, как мы измажем руки во второй части этой статьи, нам важно узнать о поддержке SVG в браузерах.</p>
<h2><strong>Поддержка браузерами</strong></h2>
<p>Основные браузеры — Firefox,  Chrome,  Safari и Opera поддерживают SVG либо в виде файла, загружаемого в объект, либо встраиваемого непосредственно в XHTML кода. Джефф Шиллер, упомянутый ранее, поддерживает <a href="http://www.codedread.com/svg-support.php" target="_blank">график, показывающий поддержку SVG </a>в различных браузерах.</p>
<p>Как показано на графике, большинство основных браузеров поддерживают основные возможности SVG. Сюда входит поддержка шрифтов, изображений, графических элементов, таких как круги или пути, градиентов и некоторые фильтров. Не поддерживаются только более экзотические возможности.</p>
<p>Однако, нехватка более продвинутых функций не должна влиять на использование SVG в дизайне сайта, так как я не рекомендую использовать сложные SVG-изображения для фона страницы, потому что браузер потратит много времени на их отрисовку.</p>
<p>Стоит дважды подумать, прежде чем использовать анимированный фон,  т.к. людей раздражает шевеление странице, в особенности то,  от которого они не могут избавиться отключением яваскрипта.</p>
<p>Как упоминалось ранее, большинство основных браузеров поддерживает основные возможности SVG. Как всегда, существенным исключением является Internet Explorer.</p>
<h2><strong>Internet Explorer и SVG</strong></h2>
<p>Я одобряю использование SVG, но как было сказано, один из основных браузеров не поддерживает SVG, и этот браузер — Internet Explorer.  К счастью для нас, отсутствие поддержки SVG в IE больше не является для нас преградой.</p>
<p>Такие библиотеки, как <a href="http://code.google.com/p/svgweb/">SVGWeb</a>, <a href="http://www.amplesdk.com/">Ample SDK</a>, и <a href="http://raphaeljs.com/">Raphael</a> реализуют поддержку SVG в текущей и пршлых версиях IE. Вдобавок, спецификация HTML5 задействует встраивание <a href="http://dev.w3.org/html5/spec/Overview.html#svg-0" target="_blank">SVG в HTML</a>, тогда как до этого он поддерживался только в XHTML. Это расширило поддержку доктайпов,  а недавние новости о присоединении Microsoft к рабочей группе W3C SVG дает надежду, что IE все-таки начнет поддерживать SVG в девятой версии.</p>
<p>Тем временем, число мобильных устройств в вебе увеличивается, и ни одно из популярных устройств не зависит от IE. Вдобавок, растущая популярность минималистичного дизайна может быть использована для эффективного введения SVG на ваши сайты. Если сайт имеет привлекательный, но минималистичный дизайн, SVG может быть добавлен, как занятная инновация, и не важно, отобразится он или нет. Упомянутые ранее сайты, использующие SVG, в случае отсутствия поддержки со стороны браузера либо предоставляют альтернативную графику, либо предлагают читателю использовать браузер, поддерживающий SVG. (И не надо бить авторов за последний вариант — такой подход уже больше 10 лет работает для IE в браузерных войнах).</p>
<h2>Что насчет доступности?</h2>
<p>SVG предоставляет возможность использовать короткие и длинные текстовые альтернативы изображениям. Т.к. он основан на языке разметки, вы можете легко добавить название и описание при помощи элементов title и desc, как показано ниже.</p>
<p>К несчастью, поддержка этих элементов для чтения с экрана недостаточно, что создает проблему для сайтов, где доступность является обязательной.</p>
<blockquote><p><code><span style="font-family: 'Courier New'; color: black; font-size: x-small;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">svg</span> <span style="color: #ff0000;">xmlns:xlink</span><span style="color: #0000ff;">="http://www.w3.org/1999/xlink"</span> <span style="color: #ff0000;">version</span><span style="color: #0000ff;">="1.0"</span> <span style="color: #ff0000;">xmlns</span><span style="color: #0000ff;">="http://www.w3.org/2000/svg"</span><span style="color: #0000ff;">&gt;</span><br />
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">title</span><span style="color: #0000ff;">&gt;</span>Chimp on a tightrope<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">title</span><span style="color: #0000ff;">&gt;</span><br />
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">desc</span><span style="color: #0000ff;">&gt;</span>Older chimp walking across a tightrope between two trees at the St. Louis Zoo<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">desc</span><span style="color: #0000ff;">&gt;</span><br />
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">image</span> <span style="color: #ff0000;">xlink:href</span><span style="color: #0000ff;">="chimp.jpg"</span> <span style="color: #ff0000;">x</span><span style="color: #0000ff;">="0"</span> <span style="color: #ff0000;">y</span><span style="color: #0000ff;">="0"</span> <span style="color: #ff0000;">height</span><span style="color: #0000ff;">="402"</span> <span style="color: #ff0000;">width</span><span style="color: #0000ff;">="600"</span> <span style="color: #0000ff;">/&gt;</span><br />
<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">svg</span><span style="color: #0000ff;">&gt;</span></span></code></p>
<p><code> </code><code><span style="color: gray; font-size: xx-small;">* This source code was highlighted with <a href="http://virtser.net/blog/post/source-code-highlighter.aspx"><span style="color: gray; font-size: xx-small;">Source Code Highlighter</span></a>.</span></code></p></blockquote>
<p><code>Title</code> обычно используется в качестве заголовка документа в standalone SVG. И <code>title</code>, и <code>desc</code> также могут использоваться в более сложной разметке в других пространствах имен. Вдобавок, для более сложных метаданных существует элемент <code>metadata</code>, который может содержать RDF/XML для таких вещей, как информация об авторских правах и авторе.</p>
<p>Поскольку поддержка SVG для чтения с экрана скудна, можно использовать обработку на стороне сервера или XSLT для доступа к информации во встроенном в страницу SVG и генерировать HTML из элементов <code>title</code>, <code>desc</code>, и <code>metadata.</code> Для фона и изображений, используемых в качестве элементов дизайна, можно убрать элементы <code>title</code> и <code>desc</code> за ненадобностью.</p>
<p>Больше прочитать о доступности и SVG можно по следующим ссылкам:</p>
<ul>
<li><a href="http://www.w3.org/TR/SVG-access/" target="_blank">http://www.w3.org/TR/SVG-access/</a></li>
<li><a href="http://www.iheni.com/just-how-accessible-is-svg/" target="_blank">http://www.iheni.com/just-how-accessible-is-svg/</a></li>
<li><a href="http://www.w3.org/TR/SVGMobile12/access.html" target="_blank">http://www.w3.org/TR/SVGMobile12/access.html</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://outpunk.name/2010/01/using-svg-for-flexible-scalable-and-fun-backgrounds-part-1/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Ставим Python 2.6 на CentOS</title>
		<link>http://outpunk.name/2010/01/installinsg-python-2-6-on-centos/</link>
		<comments>http://outpunk.name/2010/01/installinsg-python-2-6-on-centos/#comments</comments>
		<pubDate>Sun, 17 Jan 2010 12:18:10 +0000</pubDate>
		<dc:creator>0utPunk</dc:creator>
				<category><![CDATA[*nix]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://outpunk.name/?p=628</guid>
		<description><![CDATA[Как известно, пакеты в CentOS не отличаются своей свежестью, например, python там 2.4. А хотелось бы 2.6. В таком случае нас выручит IUS Community Project, поддерживающий самые свежие пакеты для Red Hat Enterprise Linux и его клонов, в числе которых есть PHP, MySQL, Python и прочее ПО, характерное для RHEL и подобных дистрибутивов. В первую [...]]]></description>
			<content:encoded><![CDATA[<p>Как известно, пакеты в CentOS не отличаются своей свежестью, например, python там 2.4. А хотелось бы 2.6. В таком случае нас выручит <a href="http://iuscommunity.org/">IUS Community Project</a>, поддерживающий самые свежие пакеты для Red Hat Enterprise Linux и его клонов, в числе которых есть PHP, MySQL, Python и прочее ПО, характерное для RHEL и подобных дистрибутивов.<br />
<span id="more-628"></span><br />
В первую очередь необходимо скачать и поставить rpm-ки, добавляющие в /etc/yum.repos.d репозитории IUS и <a href="https://fedoraproject.org/wiki/EPEL">EPEL</a>.<br />
<code><br />
# wget http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/x86_64/epel-release-1-1.ius.el5.noarch.rpm<br />
# wget http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/x86_64/ius-release-1-2.ius.el5.noarch.rpm<br />
# yum localinstall epel-release-1-1.ius.el5.noarch.rpm ius-release-1-2.ius.el5.noarch.rpm --nogpgcheck<br />
</code><br />
Затем можно очистить метаданные репозиториев командой<br />
<code>#yum clean all</code><br />
и глянуть появившиеся свежие пакеты:<br />
<code><br />
# yum list available python26*<br />
Loaded plugins: fastestmirror<br />
Loading mirror speeds from cached hostfile<br />
 * addons: ftp.funet.fi<br />
 * base: ftp.funet.fi<br />
 * epel: mirror.fraunhofer.de<br />
 * extras: ftp.funet.fi<br />
 * ius: mirrors.ircam.fr<br />
 * updates: ftp.funet.fi<br />
Available Packages<br />
python26-debuginfo.i386                    2.6.4-1.ius.parallel.el5          ius<br />
python26-elixir.noarch                     0.6.1-1.ius.el5                   ius<br />
python26-httplib2.noarch                   0.5.0-1.ius.el5                   ius<br />
python26-jsonschema.noarch                 0.2a-1.ius.el5                    ius<br />
python26-lxml.i386                         2.0.11-1.ius.el5                  ius<br />
python26-lxml-debuginfo.i386               2.0.11-1.ius.el5                  ius<br />
python26-memcached.noarch                  1.43-5.ius.el5                    ius<br />
python26-mysqldb.i386                      1.2.3c1-1.ius.el5                 ius<br />
python26-mysqldb-debuginfo.i386            1.2.3c1-1.ius.el5                 ius<br />
python26-nose.noarch                       0.11.1-1.ius.el5                  ius<br />
python26-simplejson-debuginfo.i386         2.0.9-1.ius.el5                   ius<br />
python26-sqlalchemy.noarch                 0.5.5-1.ius.el5                   ius<br />
python26-test.i386                         2.6.4-1.ius.parallel.el5          ius<br />
python26-tools.i386                        2.6.4-1.ius.parallel.el5          ius<br />
</code><br />
Свежий Python ставится командой<br />
<code># yum install python26</code></p>
]]></content:encoded>
			<wfw:commentRss>http://outpunk.name/2010/01/installinsg-python-2-6-on-centos/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Пользуемся одной мышью и клавиатурой на разных компьютерах</title>
		<link>http://outpunk.name/2009/10/use-one-mouse-and-one-keyboard-on-several-computers/</link>
		<comments>http://outpunk.name/2009/10/use-one-mouse-and-one-keyboard-on-several-computers/#comments</comments>
		<pubDate>Wed, 28 Oct 2009 09:30:32 +0000</pubDate>
		<dc:creator>0utPunk</dc:creator>
				<category><![CDATA[Tips'n'Tricks]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[synergy]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[удобство]]></category>

		<guid isPermaLink="false">http://outpunk.name/?p=605</guid>
		<description><![CDATA[Несколько компьютеров на одном рабочем месте &#8211; это хорошо, но вот что плохо &#8211; это то, что приходится метаться между кучей мышек и клавиатур. Сейчас на моем рабочем месте две машины &#8211; десктоп с Arch Linux и ноутбук с Windows 7. Соотвественно, захотелось удобства, а как это сделать? Да очень просто! Для этого есть очень [...]]]></description>
			<content:encoded><![CDATA[<p>Несколько компьютеров на одном рабочем месте &#8211; это хорошо, но вот что плохо &#8211; это то, что приходится метаться между кучей мышек и клавиатур. Сейчас на моем рабочем месте две машины &#8211; десктоп с Arch Linux и ноутбук с Windows 7. Соотвественно, захотелось удобства, а как это сделать? Да очень просто!<br />
<span id="more-605"></span><br />
Для этого есть очень хорошая утилита &#8211; <a href="http://synergy2.sourceforge.net/">synergy</a>. Качаем <a href="http://sourceforge.net/projects/synergy2/files/">отсюда</a> клиент для Windows и устанавливаем. В арче это делается еще проще:<br />
<code>sudo pacman -Sy synergy</code><br />
Затем создаем файл с настройками сервера:<br />
<code>vi /home/outpunk/.synergy.conf</code><br />
следующего содержания:</p>
<pre>section: screens
	arch:
		switchCorners = all
	win7:
		switchCorners = all
end

section: links
	arch:
		left = win7
	win7:
		right = arch
end</pre>
<p>Для чего предназначена секция screen, понятно из названия. Опция switchCorners служит для того, чтобы synergy знала, переходить на другой дисплей или нет, когда указатель приближается к определенному углу. Я указал все. В секции links мы описываем положение дисплеев относительно друг друга.<br />
Этого конфига должно быть достаточно, теперь мы можем запустить сервер:<br />
<code>synergys -a 192.168.0.65 -n "arch"</code><br />
Здесь опция -a определяет адрес, на котором сервер будет ждать соединения от других машин, опция -n определяет имя экрана для данной машины, по умолчанию используется имя хоста. </p>
<p>Закончив с настройками на линукс-машине, переходим на windows. Запускаем Synergy, выбираем Use another computer&#8217;s shared keyboard and mouse (client), в поле Other Computer&#8217;s Host Name вписываем адрес сервера, в моем случае 192.168.0.65, жмем Start, в появившемся окне жмем ОК и наслаждаемся работой с одной мышью и клавиатурой (а заодно и общим буфером обмена).</p>
]]></content:encoded>
			<wfw:commentRss>http://outpunk.name/2009/10/use-one-mouse-and-one-keyboard-on-several-computers/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Шейпинг трафика для определенного приложения в Linux.</title>
		<link>http://outpunk.name/2009/10/%d1%88%d0%b5%d0%b9%d0%bf%d0%b8%d0%bd%d0%b3-%d1%82%d1%80%d0%b0%d1%84%d0%b8%d0%ba%d0%b0-%d0%b4%d0%bb%d1%8f-%d0%be%d0%bf%d1%80%d0%b5%d0%b4%d0%b5%d0%bb%d0%b5%d0%bd%d0%bd%d0%be%d0%b3%d0%be-%d0%bf%d1%80/</link>
		<comments>http://outpunk.name/2009/10/%d1%88%d0%b5%d0%b9%d0%bf%d0%b8%d0%bd%d0%b3-%d1%82%d1%80%d0%b0%d1%84%d0%b8%d0%ba%d0%b0-%d0%b4%d0%bb%d1%8f-%d0%be%d0%bf%d1%80%d0%b5%d0%b4%d0%b5%d0%bb%d0%b5%d0%bd%d0%bd%d0%be%d0%b3%d0%be-%d0%bf%d1%80/#comments</comments>
		<pubDate>Mon, 19 Oct 2009 06:52:54 +0000</pubDate>
		<dc:creator>0utPunk</dc:creator>
				<category><![CDATA[*nix]]></category>
		<category><![CDATA[Tips'n'Tricks]]></category>
		<category><![CDATA[Arch]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[trickle]]></category>

		<guid isPermaLink="false">http://outpunk.name/?p=599</guid>
		<description><![CDATA[Решил обновить свой Arch, а так как в Казахстане скорость канала оставляет желать лучшего, как-то не очень понравилось, что pacman съедает всю скорость. Решением оказался trickle. Ставим: sudo pacman -Sy trickle Запускаем обновление: sudo trickle -d 10 pacman -Syu Где параметр -d указывает скорость в Кб/с. Подробности смотрим в man trickle.]]></description>
			<content:encoded><![CDATA[<p>Решил обновить свой Arch, а так как в Казахстане скорость канала оставляет желать лучшего, как-то не очень понравилось, что pacman съедает всю скорость. Решением оказался <a href="http://monkey.org/~marius/pages/?page=trickle">trickle</a>.<br />
Ставим:<br />
<code> sudo pacman -Sy trickle</code><br />
Запускаем обновление:<br />
<code>sudo trickle -d 10 pacman -Syu</code><br />
Где параметр -d указывает скорость в Кб/с. Подробности смотрим в man trickle.</p>
]]></content:encoded>
			<wfw:commentRss>http://outpunk.name/2009/10/%d1%88%d0%b5%d0%b9%d0%bf%d0%b8%d0%bd%d0%b3-%d1%82%d1%80%d0%b0%d1%84%d0%b8%d0%ba%d0%b0-%d0%b4%d0%bb%d1%8f-%d0%be%d0%bf%d1%80%d0%b5%d0%b4%d0%b5%d0%bb%d0%b5%d0%bd%d0%bd%d0%be%d0%b3%d0%be-%d0%bf%d1%80/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Темы Gmail и Google Apps</title>
		<link>http://outpunk.name/2009/10/%d1%82%d0%b5%d0%bc%d1%8b-gmail-%d0%b8-google-apps/</link>
		<comments>http://outpunk.name/2009/10/%d1%82%d0%b5%d0%bc%d1%8b-gmail-%d0%b8-google-apps/#comments</comments>
		<pubDate>Thu, 15 Oct 2009 11:00:57 +0000</pubDate>
		<dc:creator>0utPunk</dc:creator>
				<category><![CDATA[Tips'n'Tricks]]></category>
		<category><![CDATA[Gmail]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Google Apps]]></category>

		<guid isPermaLink="false">http://outpunk.name/2009/10/%d1%82%d0%b5%d0%bc%d1%8b-gmail-%d0%b8-google-apps/</guid>
		<description><![CDATA[Если к вашему домену прикручены Google Apps и хочется поставить другую тему в Gmail, то достаточно к адресу вашей почты https://mail.google.com/a/domain.com/ добавить #settings/themes и перейти по адресу https://mail.google.com/a/domain.com/#settings/themes, чтобы появилась страница с выбором темы.]]></description>
			<content:encoded><![CDATA[<p> Если к вашему домену прикручены Google Apps и хочется поставить другую тему в Gmail, то достаточно к адресу вашей почты <a title="https://mail.google.com/a/madyankin.name/" href="https://mail.google.com/a/domain.com/">https://mail.google.com/a/domain.com/</a> добавить #settings/themes и перейти по адресу <a title="https://mail.google.com/a/madyankin.name/#settings/themes" href="https://mail.google.com/a/madyankin.name/#settings/themes"></a><a title="https://mail.google.com/a/madyankin.name/" href="https://mail.google.com/a/domain.com/#settings/themes">https://mail.google.com/a/domain.com/#settings/themes</a>, чтобы появилась страница с выбором темы.</p>
]]></content:encoded>
			<wfw:commentRss>http://outpunk.name/2009/10/%d1%82%d0%b5%d0%bc%d1%8b-gmail-%d0%b8-google-apps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Скрипт для создания виртуальных хостов Apache на FreeBSD</title>
		<link>http://outpunk.name/2009/08/apache-virtualhost-creating-script-on-freebsd/</link>
		<comments>http://outpunk.name/2009/08/apache-virtualhost-creating-script-on-freebsd/#comments</comments>
		<pubDate>Fri, 14 Aug 2009 16:34:32 +0000</pubDate>
		<dc:creator>0utPunk</dc:creator>
				<category><![CDATA[*nix]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Bind]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[администрирование]]></category>

		<guid isPermaLink="false">http://outpunk.name/?p=575</guid>
		<description><![CDATA[Хочу поделиться маленьким скриптиком на питоне, облегчающим мне жизнь. Код, конечно, не самый лучший, заготовки конфигов можно вынести в отдельные файлы и читать оттуда, то же самое можно сделать и с классами но мне было так удобнее. Так же можно логировать действия скрипта, но с этим вполне справляется перенаправление вывод скрипта в файл. Предполагается, что [...]]]></description>
			<content:encoded><![CDATA[<p>Хочу поделиться маленьким скриптиком на питоне, облегчающим мне жизнь. Код, конечно, не самый лучший, заготовки конфигов можно вынести в отдельные файлы и читать оттуда, то же самое можно сделать и с классами но мне было так удобнее. Так же можно логировать действия скрипта, но с этим вполне справляется перенаправление вывод скрипта в файл. Предполагается, что у вас настроены bind и apache, а также установлена утилита <a href="http://www.freebsdsoftware.org/security/apg.html">apg</a> для генерации паролей.<br />
<span id="more-575"></span></p>
<pre class="brush: python">
#!/usr/bin/env python

import string, sys, os, time
from subprocess import *

class User:
    &quot;&quot;&quot;Class to create a FreeBSD system account&quot;&quot;&quot;

    def __init__(self, login, shell = &quot;/usr/sbin/nologin&quot;, mode = &#039;711&#039;):
        &quot;&quot;&quot;Initialize&quot;&quot;&quot;
        self.login = login
        self.shell = shell
        self.mode = mode
        self.password = self.get_password()
        self.create()

    def get_password(self):
        &quot;&quot;&quot;Get a random password&quot;&quot;&quot;
        args = [&#039;apg&#039;, &#039;-n&#039;, &#039;1&#039;]
        output = Popen(args, stdout = PIPE).communicate()[0]
        return string.strip(output)

    def create(self):
        &quot;&quot;&quot;Method to create an account&quot;&quot;&quot;
        args = [&#039;echo&#039;, self.password]
        echo = Popen(args, stdout = PIPE)
        args = [
            &#039;/usr/sbin/pw&#039;, &#039;useradd&#039;,
            &#039;-n&#039;, self.login,
            &#039;-s&#039;, self.shell,
            &#039;-m&#039;, &#039;-M&#039;, self.mode, #create user&#039;s home directory
            &#039;-h&#039;, &#039;0&#039;
        ]
        pw = Popen(args, stdin = echo.stdout, stdout = PIPE)
        print pw.communicate()[0]
        print &quot;#######################################&quot;
        print &quot;Username:&quot; + self.login
        print &quot;Password:&quot; + self.password
        print &quot;#######################################&quot;

class VirtualHost:
    &quot;&quot;&quot;Class to create Apache&#039;s virtualhost and DNS zone&quot;&quot;&quot;

    def __init__(self, user, domain):
        self.user, self.domain = user, domain
        self.create_dirs_and_files()
        self.create_dns_zone()
        self.restart_named()
        self.create_vhost()
        self.restart_httpd()

    def create_dirs_and_files(self):
        homedir = &quot;/home/&quot; + self.user
        wwwdir = homedir + &quot;/public_html&quot;
        error_log  = homedir + &quot;/error_log&quot;
        access_log = homedir + &quot;/access_log&quot;
        print &quot;Creating Web directory&quot;
        uid = self.get_uid(self.user)
        gid = self.get_gid(&#039;www&#039;)
        os.mkdir(wwwdir, 0770)
        os.chown(wwwdir, uid, gid)
        print &quot;Creating log files&quot;
        Popen([&#039;touch&#039;, error_log], stdout = PIPE).communicate()[0]
        Popen([&#039;touch&#039;, access_log], stdout = PIPE).communicate()[0]
        os.chmod(error_log, 0660)
        os.chmod(access_log, 0660)
        os.chown(error_log, uid, gid)
        os.chown(access_log, uid, gid)

    def create_dns_zone(self):
        &quot;&quot;&quot;Creates specified DNS record&quot;&quot;&quot;

        import datetime
        date = datetime.date.today()
        version = date.strftime(&#039;%Y%m%d&#039;) + &#039;01&#039;
        zone = &quot;&quot;&quot;
$TTL 3600
@       86400   IN       SOA    ns1.domain.net. root.domain.net. (
                                                        %VERSION%; Serial
                                                        10800           ; Refresh
                                                                3600            ; Retry
                                                        604800          ; Expire
                                                        86400           ; Minimum TTL

                                        )
; Serial, Refresh, Retry, Expire, Neg. cache TTL

;DNS Servers
%DOMAIN%.       IN              NS      ns1.domain.net.
%DOMAIN%.       IN              NS      ns2.domain.net.

%DOMAIN%.   IN  A       123.456.789.1
localhost.domain.net.    IN      A       127.0.0.1

%DOMAIN%.   IN MX 0     %DOMAIN%.
; Machine names
mail            IN      CNAME   @

www             IN      CNAME   @
&quot;&quot;&quot;
        zone = string.replace(zone, &#039;%VERSION%&#039;, version)
        zone = string.replace(zone, &#039;%DOMAIN%&#039;, self.domain)

        zone_file = &#039;/etc/namedb/master/&#039; + self.domain + &#039;.db&#039;
        print &quot;Creating DNS record&quot;
        f = file(zone_file, &#039;w&#039;)
        f.write(zone)
        f.close()

        named_conf_string = &quot;&quot;&quot;
        zone &quot;%DOMAIN%&quot; {
        type master;
        file &quot;%ZONE%&quot;;
        allow-update { none; };
        allow-transfer {
            123.456.789.2;
        };
        notify no;
        };
        &quot;&quot;&quot;
        named_conf_string = string.replace(named_conf_string,
                                           &#039;%DOMAIN%&#039;, self.domain)
        named_conf_string = string.replace(named_conf_string,
                                           &#039;%ZONE%&#039;, zone_file)

        print &quot;Adding DNS record to the named.conf&quot;
        f = file(&#039;/etc/namedb/named.conf&#039;, &#039;a&#039;)
        f.write(named_conf_string)
        f.close()

    def create_vhost(self):
        &quot;&quot;&quot;Creates Apache&#039;s virtual host&quot;&quot;&quot;

        vhost = &quot;&quot;&quot;
&lt;virtualhost 123.456.789.1:80&gt;
    ServerAdmin webmaster@domain.net
    DocumentRoot &quot;/usr/home/%USER%/public_html&quot;
    ServerName %DOMAIN%
    ServerAlias www.%DOMAIN%
    ErrorLog &quot;/usr/home/%USER%/error_log&quot;
    CustomLog &quot;/usr/home/%USER%/access_log&quot; common
    &lt;directory &quot;/usr/home/%USER%/public_html&gt;
        Options Indexes FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
    &lt;/directory&gt;
&lt;/virtualhost&gt;
&quot;&quot;&quot;
        print &quot;Creating VirtualHost&quot;

        vhost = string.replace(vhost, &quot;%USER%&quot;, self.user)
        vhost = string.replace(vhost, &quot;%DOMAIN%&quot;, self.domain)

        f = file(&#039;/usr/local/etc/apache22/vhosts/&#039; + self.domain, &#039;w&#039;)
        f.write(vhost)
        f.close()

    def restart_named(self):
        &quot;&quot;&quot;Restarts named&quot;&quot;&quot;

        print &quot;Restarting named&quot;
        args = [&#039;killall&#039;, &#039;named&#039;]
        print Popen(args, stdout = PIPE).communicate()[0]
        time.sleep(7)
        args =[&#039;/etc/rc.d/named&#039;, &#039;forcestart&#039;]
        print Popen(args, stdout = PIPE).communicate()[0]

    def restart_httpd(self):
        &quot;&quot;&quot;Restarts httpd&quot;&quot;&quot;

        print &quot;Restarting httpd&quot;
        args = [&#039;/usr/local/etc/rc.d/apache22&#039;, &#039;restart&#039;]
        print Popen(args, stdout = PIPE).communicate()[0]

    def get_uid(self, user):
        import re
        output = Popen([&#039;id&#039;, user], stdout = PIPE).communicate()[0]
        matches = re.search(&#039;(?&lt; =uid=)\d+&#039;, output)
        return int(matches.group(0))

    def get_gid(self, group):
        import re
        output = Popen([&#039;id&#039;, group], stdout = PIPE).communicate()[0]
        matches = re.search(&#039;(?&lt;=gid=)\d+&#039;, output)
        return int(matches.group(0))

if __name__ == &quot;__main__&quot;:
    import sys
    if len(sys.argv) &lt; 3:
        sys.exit(&quot;Usage: %s username domain&quot; % sys.argv[0])

    user, domain = sys.argv[1], sys.argv[2]
    u = User(user)
    host = VirtualHost(user, domain)
</pre>
<p>Скрипт запускается так:<br />
<code><br />
vhost.py имя_системного_пользователя домен</p>
<p>Перед использованием скрипта, естественно, нужно заменить доменное имя и ip-адрес на свои.</p>
]]></content:encoded>
			<wfw:commentRss>http://outpunk.name/2009/08/apache-virtualhost-creating-script-on-freebsd/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Linux, Windows, X, SSH.</title>
		<link>http://outpunk.name/2009/08/linux-windows-x-ssh/</link>
		<comments>http://outpunk.name/2009/08/linux-windows-x-ssh/#comments</comments>
		<pubDate>Mon, 03 Aug 2009 13:20:22 +0000</pubDate>
		<dc:creator>0utPunk</dc:creator>
				<category><![CDATA[Tips'n'Tricks]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[X]]></category>

		<guid isPermaLink="false">http://outpunk.name/?p=558</guid>
		<description><![CDATA[Захотелось мне, работая на виндовой машине, иметь доступ к линуксовым графическим приложениям. Организовывается это дело очень просто: На linux-машине в /etc/ssh/sshd_config добавляем следующие строки: X11Forwarding yes AllowTcpForwarding yes X11DisplayOffset 10 И перезапускаем sshd: /etc/rc.d/sshd restart На windows-машину ставим Xming и PuTTY. Запускаем Xming и соединяемся при помощи PuTTY с нашим линуксом, предварительно выставив SSH -&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>Захотелось мне, работая на виндовой машине, иметь доступ к линуксовым графическим приложениям. Организовывается это дело очень просто:<br />
На linux-машине в /etc/ssh/sshd_config добавляем следующие строки:</p>
<pre>X11Forwarding yes
AllowTcpForwarding yes
X11DisplayOffset 10</pre>
<p>И перезапускаем sshd:</p>
<pre>/etc/rc.d/sshd restart</pre>
<p>На windows-машину ставим <a href="http://sourceforge.net/projects/xming/files/">Xming</a> и <a href="http://www.putty.org/">PuTTY</a>. Запускаем Xming и соединяемся при помощи PuTTY с нашим линуксом, предварительно выставив SSH -&gt; X11 -&gt; Enable X11 Forwarding. Чтобы запустить приложение, достаточно набрать в putty соответствующую команду.</p>
<p style="text-align: center;">
<a href="http://outpunk.name/uploads/2009/08/ssh_x_windows.jpg" rel="lightbox[558]"><img class="aligncenter size-medium wp-image-570" title="ssh_x_windows" src="http://outpunk.name/uploads/2009/08/ssh_x_windows-300x184.jpg" alt="ssh_x_windows" width="300" height="184" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://outpunk.name/2009/08/linux-windows-x-ssh/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Экранная клавиатура.</title>
		<link>http://outpunk.name/2009/07/display_keyboard/</link>
		<comments>http://outpunk.name/2009/07/display_keyboard/#comments</comments>
		<pubDate>Thu, 16 Jul 2009 11:36:00 +0000</pubDate>
		<dc:creator>0utPunk</dc:creator>
				<category><![CDATA[Без рубрики]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[казахский]]></category>
		<category><![CDATA[клавиатура]]></category>

		<guid isPermaLink="false">http://outpunk.name/?p=562</guid>
		<description><![CDATA[Понадобилась мне по работе экранная клавиатура на javascript. Нашел вот это, знает разные языки. Дополнительно обучил ее казахскому, качаем тут.]]></description>
			<content:encoded><![CDATA[<p>Понадобилась мне по работе экранная клавиатура на javascript. Нашел вот <a href="http://www.greywyvern.com/code/javascript/keyboard">это</a>, знает разные языки. Дополнительно обучил ее казахскому, качаем <a href="http://outpunk.name/uploads/keyboard.zip">тут</a>.</p>
<p><img src="http://outpunk.name/uploads/2009/07/kz_keyboard.jpg" alt="kz_keyboard" title="kz_keyboard" width="358" height="184" class="aligncenter size-full wp-image-561" /></p>
]]></content:encoded>
			<wfw:commentRss>http://outpunk.name/2009/07/display_keyboard/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
