<?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>Ky6uk's Blog</title>
	<atom:link href="http://ky6uk.ugatu.net/feed" rel="self" type="application/rss+xml" />
	<link>http://ky6uk.ugatu.net</link>
	<description>Мой уютненький...</description>
	<lastBuildDate>Mon, 11 Jan 2010 19:42:25 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=abc</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>День 5: Метаоператоры</title>
		<link>http://ky6uk.ugatu.net/den-5-metaoperatory</link>
		<comments>http://ky6uk.ugatu.net/den-5-metaoperatory#comments</comments>
		<pubDate>Fri, 25 Dec 2009 23:11:11 +0000</pubDate>
		<dc:creator>Ky6uk</dc:creator>
				<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">http://ky6uk.ugatu.net/?p=405</guid>
		<description><![CDATA[Перевод пятой статьи цикла Perl 6 Advent Calendar на русский язык.

В коробке четвертого дня мы видели интересную функцию для нахождения факториала:
sub fac(Int $n) {
    [*] 1..$n
}
Итак, как же она работает? Открытие сегодняшней праздничной коробки даст нам ответы на некоторые вопросы!
Perl 6 имеет несколько различных “мета операторов”, которые изменяют существующие операторы для предоставления [...]]]></description>
			<content:encoded><![CDATA[<p>Перевод пятой статьи цикла <a href="http://perl6advent.wordpress.com/">Perl 6 Advent Calendar</a> на русский язык.<br />
<span id="more-405"></span><br />
В коробке четвертого дня мы видели интересную функцию для нахождения факториала:</p>
<pre class="brush: perl;">sub fac(Int $n) {
    [*] 1..$n
}</pre>
<p>Итак, <em>как же</em> она работает? Открытие сегодняшней праздничной коробки даст нам ответы на некоторые вопросы!</p>
<p>Perl 6 имеет несколько различных “мета операторов”, которые изменяют существующие операторы для предоставления нам более мощного функционала.</p>
<p>Квадратные скобки являются “метаоператором сокращения”. Они позволяют встроить оператор, находящийся между скобок, в правую часть выражения. Оператор в таких скобках будет помещен между каждой парой элементов списка. Например выражение</p>
<pre class="brush: perl;">[+]  1, $a, 5, $b</pre>
<p>можно записать как</p>
<pre class="brush: perl;">1 + $a + 5 + $b</pre>
<p>Это дает нам удобный механизм “сумма всех элементов в списке”:</p>
<pre class="brush: perl;">$sum = [+] @a;    # сумма всех элементов массива @a</pre>
<p>Большинство встроенных операторов (включая пользовательские) могут быть помещены в квадратные скобки чтобы сократить запись:</p>
<pre class="brush: perl;">$prod = [*] @a;         # умножение всех элементов @a
$mean = ([+] @a) / @a;  # рассчитать среднее значение @a
$sorted = [&lt;=] @a;      # возвратит true если элементы в @a численно отсортированы
$min = [min] @a, @b;    # находит наименьший элемент в объединенных @a и @b</pre>
<p>Теперь мы видим, что в функции поиска факториала выражение</p>
<pre class="brush: perl;">[*] 1..$n</pre>
<p>возвращает результат умножения всех чисел от 1 до $n.</p>
<p>Другим полезным метаоператором является “гипер-оператор”. Помещение <code>»</code><br />
и/или <code>«</code> (или ASCII эквивалент <code>&gt;&gt;</code> и <code>&lt;&lt;</code>) рядом с оператором превращает его в “гипер-оператор”, который работает с элементами списка. Например следующее поместит в <code>@c</code> результат попарного сложения элементов в <code>@a</code> и <code>@b</code>:</p>
<pre class="brush: perl;">@c = @a »+« @b;</pre>
<p>В Perl 5 мы бы написали примерно следующее:</p>
<pre class="brush: perl;">for ($i=0; $i&lt;@a; $i++) {
    $c[$i] = $a[$i] + $b[$i];
}</pre>
<p>что выглядит несколько длиннее.</p>
<p>Как и в случае с оператором сокращения, мы можем использовать этот оператор с рядом встроенных или пользовательских:</p>
<pre class="brush: perl;"># увеличение всех элементов в @xyz на еденицу
@xyz»++

# каждый элемент в @x будет минимальным из @a и @b
@x = @a »min« @b;</pre>
<p>Мы так же можем повернуть углы, чтобы скаляры работали как массивы:</p>
<pre class="brush: perl;"># умножает каждый элемент @a на 3.5
@b = @a »*» 3.5;

# умножает каждый элемент @x на $m и прибавляет $b
@y = @x »*» $m »+» $b;

# обращает все элементы @x
    @inv = 1 «/« @x;

# объединяет @last, @first и помещает в @full
@full = (@last »~» ', ') »~« @first;</pre>
<p>Разумеется, операторы сокращения и гипер-операторы можно использовать одновременно:</p>
<pre class="brush: perl;"># вычислить сумму квадратов элементов в @x
$sumsq = [+] ( @x »**» 2);</pre>
<p>Существует много других доступных метаоператоров, включая <code>X</code> (крест), <code>R</code> (обращение), <code>S</code> (последовательность). На самом деле “in-place” операторы, такие как <code>+=</code>, <code>*=</code>, <code>~=</code>, являются лишь метаформой оператора равенства:</p>
<pre class="brush: perl;">$a += 5;      # так же как $a = $a + 5;
$b //= 7;     # так же как $b = $b // 7;
$c min= $d;   # так же как $c = $c min $d;</pre>
<p>© <a href="http://perl6advent.wordpress.com/2009/12/05/day-5-metaoperator/">Оригинальная статья.</a></p>
<h3  class="related_post_title">Похожие статьи</h3><ul class="related_post"><li><a href="http://ky6uk.ugatu.net/den-4-testirovanie" title="День 4: Тестирование">День 4: Тестирование</a></li><li><a href="http://ky6uk.ugatu.net/den-3-staticheskie-tipy-i-multi-funkcii" title="День 3: статические типы и мульти-функции">День 3: статические типы и мульти-функции</a></li><li><a href="http://ky6uk.ugatu.net/den-2-krasota-formatirovaniya" title="День 2: Красота Форматирования">День 2: Красота Форматирования</a></li><li><a href="http://ky6uk.ugatu.net/den-1-poluchaem-rakudo" title="День 1: Получаем Rakudo">День 1: Получаем Rakudo</a></li><li><a href="http://ky6uk.ugatu.net/perl-6-advent-calendar-na-russkom" title="Perl 6 Advent Calendar на русском">Perl 6 Advent Calendar на русском</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://ky6uk.ugatu.net/den-5-metaoperatory/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>День 4: Тестирование</title>
		<link>http://ky6uk.ugatu.net/den-4-testirovanie</link>
		<comments>http://ky6uk.ugatu.net/den-4-testirovanie#comments</comments>
		<pubDate>Tue, 15 Dec 2009 23:15:19 +0000</pubDate>
		<dc:creator>Ky6uk</dc:creator>
				<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">http://ky6uk.ugatu.net/?p=384</guid>
		<description><![CDATA[Четвертая статья цикла Perl 6 Advent Calendar на русском языке.

Авторы Perl имеют давнюю привычку снабжать тестами свои модули, и в Perl 6 мы планируем продолжить эту замечательную традицию.
Тестирование очень простое. Традиционный perl-way &#8211; это выводить данные в Test Anything Protocol. Но вы не должны делать это сами, вы можете использовать для этого специальный модуль.
Предположим, что [...]]]></description>
			<content:encoded><![CDATA[<p>Четвертая статья цикла <a href="http://perl6advent.wordpress.com/">Perl 6 Advent Calendar</a> на русском языке.<br />
<span id="more-384"></span><br />
Авторы Perl имеют давнюю привычку снабжать тестами свои модули, и в Perl 6 мы планируем продолжить эту замечательную традицию.</p>
<p>Тестирование очень простое. Традиционный perl-way &#8211; это выводить данные в <a href="http://testanything.org/">Test Anything Protocol</a>. Но вы не должны делать это сами, вы можете использовать для этого специальный модуль.</p>
<p>Предположим, что вы написали замечательную функцию вычисления факториала:</p>
<pre class="brush: plain;">sub fac(Int $n) {
    [*] 1..$n
}</pre>
<p>Сейчас нас не интересует как работает функция – мы хотим это выяснить. Так давайте проверим:</p>
<pre class="brush: plain;">use v6;

sub fac(Int $n) {
    [*] 1..$n
}

use Test;
plan 6;

is fac(0), 1,  'fac(0) работает';
is fac(1), 1,  'fac(1) работает';
is fac(2), 2,  'fac(2) работает';
is fac(3), 6,  'fac(3) работает';
is fac(4), 24, 'fac(4) работает';

dies_ok { fac('ох, я же строка') }, 'можно вызывать только с целым аргументом';</pre>
<p>И запустим:</p>
<pre class="brush: plain;">$ perl6 fac-test.pl
1..6
ok 1 - fac(0) работает
ok 2 - fac(1) работает
ok 3 - fac(2) работает
ok 4 - fac(3) работает
ok 5 - fac(4) работает
ok 6 - можно вызывать только с целым аргументом</pre>
<p>Здесь <em>use Test;</em> загружает модуль тестирования, <em>plan 6;</em> говорит о том, что мы хотим запустить шесть испытаний. Затем идут пять строк шаблона <em>is $got, $expected, $description</em>. <em>is()</em> сравнивает строки, но поскольку целое всегда можно представить строкой, это нормально.</p>
<p>И наконец строкой <em>dies_ok { $some_code }, $description</em> мы проверяем, что вызов функции с нецелым аргументом является критической ошибкой.</p>
<p>Вывод имеет следующий вид: <em>1..6</em>, затем по одной строке на каждый тест, который начинается на <em>ok</em> (или <em>not ok</em> если тест провален), номер теста, пробел, тире, пробел и описание теста.</p>
<p>Предположим, что вы запускаете больше тестов и не хотите смотреть на вывод каждого, но хотите общий результат. Команда <em><a href="http://search.cpan.org/perldoc?prove">prove</a></em> из Perl 5 даст вам следующее:</p>
<pre class="brush: plain;">prove --exec perl6 fac-test.pl
fac-test.pl .. ok
All tests successful.
Files=1, Tests=6, 11 wallclock secs ( 0.02 usr  0.00 sys + 10.26 cusr  0.17 csys = 10.45 CPU)
Result: PASS</pre>
<p>Вы так же можете поместить все ваши файлы с тестами в отдельную директорию, например <em>t/</em>, и запустить <em>prove</em> рекурсивно на все <em>.t</em> файлы в этой директории:</p>
<pre class="brush: plain;">prove --exec perl6 -r t</pre>
<p>Так же неплохо поместить эту строку в ваш <em>Makefile</em>, чтобы просто ввести команду <em>make</em> для запуска тестов.</p>
<p>© <a href="http://perl6advent.wordpress.com/2009/12/04/day-4-testing/">Оригинальная статья.</a></p>
<h3  class="related_post_title">Похожие статьи</h3><ul class="related_post"><li><a href="http://ky6uk.ugatu.net/den-5-metaoperatory" title="День 5: Метаоператоры">День 5: Метаоператоры</a></li><li><a href="http://ky6uk.ugatu.net/den-3-staticheskie-tipy-i-multi-funkcii" title="День 3: статические типы и мульти-функции">День 3: статические типы и мульти-функции</a></li><li><a href="http://ky6uk.ugatu.net/den-2-krasota-formatirovaniya" title="День 2: Красота Форматирования">День 2: Красота Форматирования</a></li><li><a href="http://ky6uk.ugatu.net/den-1-poluchaem-rakudo" title="День 1: Получаем Rakudo">День 1: Получаем Rakudo</a></li><li><a href="http://ky6uk.ugatu.net/perl-6-advent-calendar-na-russkom" title="Perl 6 Advent Calendar на русском">Perl 6 Advent Calendar на русском</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://ky6uk.ugatu.net/den-4-testirovanie/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>День 3: статические типы и мульти-функции</title>
		<link>http://ky6uk.ugatu.net/den-3-staticheskie-tipy-i-multi-funkcii</link>
		<comments>http://ky6uk.ugatu.net/den-3-staticheskie-tipy-i-multi-funkcii#comments</comments>
		<pubDate>Wed, 09 Dec 2009 18:35:11 +0000</pubDate>
		<dc:creator>Ky6uk</dc:creator>
				<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">http://ky6uk.ugatu.net/?p=371</guid>
		<description><![CDATA[Перевод на русский язык третьей статьи из цикла Perl 6 Advent Calendar.

Пришло время открыть третью коробку с подарком. Внутри&#8230; Эй, посмотрите, похоже у нас целых два подарка! Внутри коробки статические типы и мульти-функции (multi subs).
В Perl 5, $scalar переменные могут содержать либо ссылки, либо значения. В частности, значениями может быть всё что угодно. Они могут [...]]]></description>
			<content:encoded><![CDATA[<p>Перевод на русский язык <a href="http://perl6advent.wordpress.com/2009/12/03/day-3-static-types-and-multi-subs/">третьей статьи</a> из цикла <a href="http://perl6advent.wordpress.com/">Perl 6 Advent Calendar</a>.<br />
<span id="more-371"></span><br />
Пришло время открыть третью коробку с подарком. Внутри&#8230; Эй, посмотрите, похоже у нас целых два подарка! Внутри коробки статические типы и мульти-функции (multi subs).</p>
<p>В Perl 5, <em>$scalar</em> переменные могут содержать либо ссылки, либо значения. В частности, значениями может быть всё что угодно. Они могут содержать числа, строки, даты: буквально все, что вы пожелаете. Это обеспечивает определенную гибкость, но за счет ясности.</p>
<p>Perl 6 собирается изменить это, введя статические типы. Если вы хотите какую-либо переменную, вы просто помещаете имя типа между <em>my</em> и <em>$variable-type</em>. Например, создание переменной типа Int выглядит следующим образом:</p>
<pre class="brush: plain;">my Int $days = 24;</pre>
<p>Другие статические типы могут выглядеть так:</p>
<pre class="brush: plain;">my Str $phrase = &quot;Hello World!&quot;;
my Num $pi = 3.141;
my Rat $other_pi = 22/7;</pre>
<p>Если вы все еще хотите использовать старое поведение переменных, вы можете не пользоваться статическими типами.</p>
<p>Этот подарок идет рука-об-руку со следующим подарком в коробке: мульти-функции. Что это такое &laquo;мульти-функции&raquo;? Если коротко, то мульти-функции позволяют перегрузить имена функций (sub). На самом деле мульти-функции могут делать гораздо больше, но эти подарки в другой день. А сейчас посмотрите на несколько примеров использования мульти-функций:</p>
<pre class="brush: plain;">multi sub identify(Int $x) {
    return &quot;$x - целое.&quot;;
}

multi sub identify(Str $x) {
    return qq&lt;&quot;$x&quot; - строка.&gt;;
}

multi sub identify(Int $x, Str $y) {
    return &quot;Мы имеем целое $x, и строку \&quot;$y\&quot;.&quot;;
}

multi sub identify(Str $x, Int $y) {
    return &quot;Мы имеем строку \&quot;$x\&quot;, и целое $y.&quot;;
}

multi sub identify(Int $x, Int $y) {
    return &quot;Мы имеем два целых $x и $y.&quot;;
}

multi sub identify(Str $x, Str $y) {
    return &quot;Мы имеем две строки \&quot;$x\&quot; и \&quot;$y\&quot;.&quot;;
}

say identify(42);
say identify(&quot;Это круто!&quot;);
say identify(42, &quot;Это круто!&quot;);
say identify(&quot;Это круто!&quot;, 42);
say identify(&quot;Это круто!&quot;, &quot;Я гарантирую!&quot;);
say identify(42, 24);</pre>
<p>Существует много возможностей воспользоваться этими двумя подарками. Попробуйте поиграть с ними и возвращайтесь к нашему дереву для получения новых подарков, которые могут использовать эти возможности в полной мере. ☺</p>
<p><a href="http://perl6advent.wordpress.com/2009/12/03/day-3-static-types-and-multi-subs/">Оригинальная статья на английском</a>.</p>
<h3  class="related_post_title">Похожие статьи</h3><ul class="related_post"><li><a href="http://ky6uk.ugatu.net/den-5-metaoperatory" title="День 5: Метаоператоры">День 5: Метаоператоры</a></li><li><a href="http://ky6uk.ugatu.net/den-4-testirovanie" title="День 4: Тестирование">День 4: Тестирование</a></li><li><a href="http://ky6uk.ugatu.net/den-2-krasota-formatirovaniya" title="День 2: Красота Форматирования">День 2: Красота Форматирования</a></li><li><a href="http://ky6uk.ugatu.net/den-1-poluchaem-rakudo" title="День 1: Получаем Rakudo">День 1: Получаем Rakudo</a></li><li><a href="http://ky6uk.ugatu.net/perl-6-advent-calendar-na-russkom" title="Perl 6 Advent Calendar на русском">Perl 6 Advent Calendar на русском</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://ky6uk.ugatu.net/den-3-staticheskie-tipy-i-multi-funkcii/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>День 2: Красота Форматирования</title>
		<link>http://ky6uk.ugatu.net/den-2-krasota-formatirovaniya</link>
		<comments>http://ky6uk.ugatu.net/den-2-krasota-formatirovaniya#comments</comments>
		<pubDate>Tue, 08 Dec 2009 18:42:37 +0000</pubDate>
		<dc:creator>Ky6uk</dc:creator>
				<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">http://ky6uk.ugatu.net/?p=357</guid>
		<description><![CDATA[Представляю перевод на русский язык второй статьи (Day 2: The beauty of formatting) цикла Perl 6 Advent Calendar. Статья посвящена форматированию в Perl 6.
Разворачиваем второй подарок, который принёс нам на рождество Perl 6, и находим&#8230; метод с именем .fmt.
Если вы знакомы со sprintf, то будете чувствовать себя как дома с .fmt. Если же вы не [...]]]></description>
			<content:encoded><![CDATA[<p>Представляю перевод на русский язык второй статьи (<a href="http://perl6advent.wordpress.com/2009/12/02/day-2-the-beauty-of-formatting/">Day 2: The beauty of formatting</a>) цикла <a href="http://perl6advent.wordpress.com/2009/12/01/perl-6-advent-calendar/">Perl 6 Advent Calendar</a>. Статья посвящена форматированию в Perl 6.<span id="more-357"></span></p>
<p>Разворачиваем второй подарок, который принёс нам на рождество Perl 6, и находим&#8230; метод с именем <em>.fmt</em>.</p>
<p>Если вы знакомы со <em>sprintf</em>, то будете чувствовать себя как дома с <em>.fmt</em>. Если же вы не знаете про <em>sprintf</em> или же знаете недостаточно, то подробности можно узнать на соответствующей <a href="http://perldoc.perl.org/functions/sprintf.html">странице perldoc</a>. Хоть она и длинная, не углубляйтесь. Просто наслаждайтесь этим.</p>
<p>Вернемся к <em>.fmt</em>, храброй младшей сестре <em>sprintf</em>. Вот несколько способов использования <em>.fmt</em> для форматирования строк и чисел:</p>
<pre class="brush: plain;">say 42.fmt('%+d')                # '+42'
say 42.fmt('%4d')                # '  42'
say 42.fmt('%04d')               # '0042'
say :16&lt;1337f00d&gt;.fmt('%X')      # '1337F00D'</pre>
<p>Все это хорошо и замечательно, но не более чем короткая форма <em>sprintf</em>. Большое дело, верно?</p>
<p>Я еще не рассказал вам, что метод <em>.fmt</em> перегружен и работает по-разному на массивах (или точнее на списках):</p>
<pre class="brush: plain;">say &lt;huey dewey louie&gt;.fmt       # 'huey dewey louie'
say &lt;10 11 12&gt;.fmt('%x')         # 'a b c'
say &lt;1 2 3&gt;.fmt('%02d', '; ')    # '01; 02; 03'</pre>
<p>Кроме того, <em>.fmt</em> так же переопределен и на хэшах:</p>
<pre class="brush: plain;">say { foo =&gt; 1, bar =&gt; 2 }.fmt   # 'foo     1
                                 #  bar     2'

say { Apples =&gt; 5, Oranges =&gt; 10 }.fmt('%s cost %d euros')
                                 # 'Apples cost 5 euros
                                 #  Oranges cost 10 euros'

say { huey =&gt; 1, dewey =&gt; 2, louie =&gt; 3 }.fmt('%s', ' -- ')
                                 # 'huey -- dewey -- louie'</pre>
<p>При работе с хешами результат может выводиться в другом порядке, отличном от представленного выше. Ах да, и там <em>.fmt</em> так же перегружен для пар, но это работает аналогично и для одной. <span style="color: #999999;"><em>(прим. переводчика: не понял смысла последнего предложения, просьба поправить)</em></span></p>
<p><em>.fmt</em> является маленьким полезным инструментом, когда вам нужно изменить некоторое значение, или массив, или хеш в некотором заданном формате. Это как <em>sprintf</em>, только еще для массивов и хешей.</p>
<p>В этом есть только одна проблема: Perl 6 может подпортить репутацию семейства языков Perl как ужасно читаемых. Для противостояния этой опасности, я оставлю маленький прощальный подарок в форме простой, но густой рождественской ели, написанной на Perl 6 в одну строку:</p>
<pre class="brush: plain;">$ perl6 -e 'say &quot; &quot;x 9-$_,&quot;#&quot;x$_*2-1 for 0..9,2 xx 3'
          #
         ###
        #####
       #######
      #########
     ###########
    #############
   ###############
  #################
         ###
         ###
         ###</pre>
<h3  class="related_post_title">Похожие статьи</h3><ul class="related_post"><li><a href="http://ky6uk.ugatu.net/den-5-metaoperatory" title="День 5: Метаоператоры">День 5: Метаоператоры</a></li><li><a href="http://ky6uk.ugatu.net/den-4-testirovanie" title="День 4: Тестирование">День 4: Тестирование</a></li><li><a href="http://ky6uk.ugatu.net/den-3-staticheskie-tipy-i-multi-funkcii" title="День 3: статические типы и мульти-функции">День 3: статические типы и мульти-функции</a></li><li><a href="http://ky6uk.ugatu.net/den-1-poluchaem-rakudo" title="День 1: Получаем Rakudo">День 1: Получаем Rakudo</a></li><li><a href="http://ky6uk.ugatu.net/perl-6-advent-calendar-na-russkom" title="Perl 6 Advent Calendar на русском">Perl 6 Advent Calendar на русском</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://ky6uk.ugatu.net/den-2-krasota-formatirovaniya/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>День 1: Получаем Rakudo</title>
		<link>http://ky6uk.ugatu.net/den-1-poluchaem-rakudo</link>
		<comments>http://ky6uk.ugatu.net/den-1-poluchaem-rakudo#comments</comments>
		<pubDate>Mon, 07 Dec 2009 23:47:56 +0000</pubDate>
		<dc:creator>Ky6uk</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Rakudo]]></category>

		<guid isPermaLink="false">http://ky6uk.ugatu.net/?p=341</guid>
		<description><![CDATA[Как я и планировал, выкладываю перевод первой статьи цикла Perl 6 Advent Calendar. Напоминаю, что перевод вольный, по-этому сильно придираться не стоит.

Существует много разных частичных реализаций Perl 6. Наиболее полной на данный момент является Rakudo. Для получения Rakudo и дальнейшей работы с ним есть несколько путей, но если вас интересует помощь в разработке и отслеживание текущего [...]]]></description>
			<content:encoded><![CDATA[<p>Как я и <a href="http://ky6uk.ugatu.net/perl-6-advent-calendar-na-russkom">планировал</a>, выкладываю перевод <a href="http://perl6advent.wordpress.com/2009/12/01/day-1-getting-rakudo/">первой</a> статьи цикла <a href="http://perl6advent.wordpress.com/2009/12/01/perl-6-advent-calendar/">Perl 6 Advent Calendar</a>. Напоминаю, что перевод вольный, по-этому сильно придираться не стоит.<br />
<span id="more-341"></span><br />
Существует много разных частичных реализаций Perl 6. Наиболее полной на данный момент является <a href="http://rakudo.org/">Rakudo</a>. Для получения Rakudo и дальнейшей работы с ним есть несколько путей, но если вас интересует помощь в разработке и отслеживание текущего статуса, то наилучшим вариантом будет получение и сборка Rakudo непосредственно из актуальных исходных кодов.</p>
<p>Для этого вам понадобятся <a href="http://subversion.tigris.org/">Subversion (svn)</a>, <a href="http://git-scm.com/">git</a>, Perl 5.8 или новее, компилятор языка C и утилита make. В Linux-подобных операционных системах (включая OS X) собрать Rakudo можно следующим образом:</p>
<pre class="brush: plain;">$ git clone git://github.com/rakudo/rakudo.git
$ cd rakudo
$ perl Configure.pl --gen-parrot
$ make
$ make test
$ make install</pre>
<p>Здесь опция &#8211;gen-parrot указывает Subversion получить сответствующую версию виртуальной машины <a href="http://www.parrot.org/">Parrot</a> и затем компилирует её.</p>
<p>Для текущего Rakudo, make install не установит его в ваше окружение, это фактически подготовит систему так, что вы сможете запускать исполняемый файл perl6 (созданный в директории rakudo) из любой другой директории. После этого вы можете &laquo;поиграть&raquo; с Perl 6, запустив perl6 без аргументов, что позволит войти в среду <a href="http://ru.wikipedia.org/wiki/REPL">REPL</a>, где можно непосредственно вводить команды и видеть что они делают. Это может быть невероятно удобным для ознакомления с работой Perl 6.<br />
Например:</p>
<pre class="brush: plain;">$ ./perl6
&gt; say &quot;Hello world!&quot;;
Hello world!
&gt; say (10/7).WHAT
Rat()
&gt; say [+] (1..999).grep( { $_ % 3 == 0 || $_ % 5 == 0 } );
233168</pre>
<p>Начинающиеся на $ и &gt; строки &#8211; это то, что вы вводите; другие строки &#8211; это ответ Rakudo. Первый пример просто выводит текст с помощью say. Второй создаёт рациональное число и запрашивает его тип. Третий создаёт список чисел от 1 до 999, о<span onmouseover="_tipon(this)" onmouseout="_tipoff()">тфильтровывает те, которые не делятся на 3 или 5, суммирует их и выводит результат. (Это первая задача <a href="http://projecteuler.net/">проекта Эйлера</a>, спасибо <a href="http://transfixedbutnotdead.com/2009/11/30/eulergy/">draegtun</a> за напоминание.) Мы постараемся объяснить как работают эти вещи в будущих постах.</span></p>
<p><span onmouseover="_tipon(this)" onmouseout="_tipoff()">И еще одно замечание. Если у вас возникли трудности в получении Rakudo, то канал #perl6 на </span>irc.freenode.net может оказаться весьма полезным.</p>
<p><a href="http://perl6advent.wordpress.com/2009/12/01/day-1-getting-rakudo/">Оригинальный текст</a>.</p>
<h3  class="related_post_title">Похожие статьи</h3><ul class="related_post"><li><a href="http://ky6uk.ugatu.net/den-5-metaoperatory" title="День 5: Метаоператоры">День 5: Метаоператоры</a></li><li><a href="http://ky6uk.ugatu.net/den-4-testirovanie" title="День 4: Тестирование">День 4: Тестирование</a></li><li><a href="http://ky6uk.ugatu.net/den-3-staticheskie-tipy-i-multi-funkcii" title="День 3: статические типы и мульти-функции">День 3: статические типы и мульти-функции</a></li><li><a href="http://ky6uk.ugatu.net/den-2-krasota-formatirovaniya" title="День 2: Красота Форматирования">День 2: Красота Форматирования</a></li><li><a href="http://ky6uk.ugatu.net/perl-6-advent-calendar-na-russkom" title="Perl 6 Advent Calendar на русском">Perl 6 Advent Calendar на русском</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://ky6uk.ugatu.net/den-1-poluchaem-rakudo/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Perl 6 Advent Calendar на русском</title>
		<link>http://ky6uk.ugatu.net/perl-6-advent-calendar-na-russkom</link>
		<comments>http://ky6uk.ugatu.net/perl-6-advent-calendar-na-russkom#comments</comments>
		<pubDate>Mon, 07 Dec 2009 22:31:01 +0000</pubDate>
		<dc:creator>Ky6uk</dc:creator>
				<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">http://ky6uk.ugatu.net/?p=331</guid>
		<description><![CDATA[Разработчики проекта Rakudo, реализации языка Perl 6 на базе виртуальной машины Parrot, объявили о проведении предрождественского марафона, в рамках которого с 1 по 26 декабря в блоге perl6advent.wordpress.com каждый день будут публиковаться практические уроки, демонстрирующие те или иные возможности Perl 6. В первую неделю декабря в рамках цикла статей было рассказано об установке Rakudo, использованию циклов, операторах форматирования, статических типах, мета-операторах [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>Разработчики проекта <a href="http://rakudo.org/">Rakudo</a>, реализации языка Perl 6 на базе виртуальной машины Parrot, объявили о проведении предрождественского марафона, в рамках которого с 1 по 26 декабря в блоге <a href="http://perl6advent.wordpress.com/">perl6advent.wordpress.com</a> каждый день будут публиковаться практические уроки, демонстрирующие те или иные возможности Perl 6. В первую неделю декабря в рамках цикла статей было рассказано об <a href="http://perl6advent.wordpress.com/2009/12/01/day-1-getting-rakudo/">установке Rakudo</a>, <a href="http://perl6advent.wordpress.com/2009/12/07/day-7-looping-for-fun-and-profit/">использованию циклов</a>, <a href="http://perl6advent.wordpress.com/2009/12/02/day-2-the-beauty-of-formatting/">операторах форматирования</a>, <a href="http://perl6advent.wordpress.com/2009/12/03/day-3-static-types-and-multi-subs/">статических типах</a>, <a href="http://perl6advent.wordpress.com/2009/12/05/day-5-metaoperator/">мета-операторах</a> и <a href="http://perl6advent.wordpress.com/2009/12/04/day-4-testing/">приемах тестирования</a>.</p>
<p>Что касается даты релиза Perl 6, то она по прежнему остается загадкой. Несколько лет назад Ларри Уолл заявил, что релиз выйдет накануне рождества, но не уточнил год этого события. Тем временем первый стабильный релиз проекта Rakudo <a href="http://www.opennet.ru/opennews/art.shtml?num=22934">ожидается</a> в апреле следующего года.</p></blockquote>
<p>© <a href="http://www.opennet.ru/opennews/art.shtml?num=24567">opennet.ru</a></p>
<p>После прочтения данной новости я решил написать вольный перевод этих уроков на русский язык, так как сам посвятил пару лет программированию на Perl 5 и с нетерпением жду релиз Perl 6. Посмотрим, что из этого получится.</p>
<h4>Что уже можно почитать</h4>
<p><a href="http://ky6uk.ugatu.net/den-1-poluchaem-rakudo">День 1: Получаем Rakudo</a><br />
<a href="http://ky6uk.ugatu.net/den-2-krasota-formatirovaniya">День 2: Красота Форматирования</a><br />
<a href="http://ky6uk.ugatu.net/den-3-staticheskie-tipy-i-multi-funkcii">День 3: статические типы и мульти-функции</a><br />
<a href="http://ky6uk.ugatu.net/den-4-testirovanie">День 4: Тестирование</a><br />
<a href="http://ky6uk.ugatu.net/den-5-metaoperatory">День 5: Метаоператоры</a></p>
<h3  class="related_post_title">Похожие статьи</h3><ul class="related_post"><li><a href="http://ky6uk.ugatu.net/den-5-metaoperatory" title="День 5: Метаоператоры">День 5: Метаоператоры</a></li><li><a href="http://ky6uk.ugatu.net/den-4-testirovanie" title="День 4: Тестирование">День 4: Тестирование</a></li><li><a href="http://ky6uk.ugatu.net/den-3-staticheskie-tipy-i-multi-funkcii" title="День 3: статические типы и мульти-функции">День 3: статические типы и мульти-функции</a></li><li><a href="http://ky6uk.ugatu.net/den-2-krasota-formatirovaniya" title="День 2: Красота Форматирования">День 2: Красота Форматирования</a></li><li><a href="http://ky6uk.ugatu.net/den-1-poluchaem-rakudo" title="День 1: Получаем Rakudo">День 1: Получаем Rakudo</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://ky6uk.ugatu.net/perl-6-advent-calendar-na-russkom/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu 10.04 Lucid Lynx уже на зеркалах</title>
		<link>http://ky6uk.ugatu.net/ubuntu-10-04-lucid-lynx-now-in-repo</link>
		<comments>http://ky6uk.ugatu.net/ubuntu-10-04-lucid-lynx-now-in-repo#comments</comments>
		<pubDate>Fri, 30 Oct 2009 21:01:46 +0000</pubDate>
		<dc:creator>Ky6uk</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://ky6uk.ugatu.net/?p=326</guid>
		<description><![CDATA[Вчера вечером обновились официальные зеркала Ubuntu. Были введены репозитории для следующего релиза 10.04 под кодовым названием Lucid Lynx (Ясная Рысь). Все любители свежего и не совсем стабильного могут смело обновлять свой sources.list:
#### 10.04 binary
deb http://archive.ubuntu.com/ubuntu/ lucid main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ lucid-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ lucid-backports main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ lucid-security main [...]]]></description>
			<content:encoded><![CDATA[<p>Вчера вечером обновились официальные зеркала Ubuntu. Были введены репозитории для следующего релиза 10.04 под кодовым названием Lucid Lynx (Ясная Рысь). Все любители свежего и не совсем стабильного могут смело обновлять свой sources.list:</p>
<p>#### 10.04 binary<br />
deb http://archive.ubuntu.com/ubuntu/ lucid main restricted universe multiverse<br />
deb http://archive.ubuntu.com/ubuntu/ lucid-updates main restricted universe multiverse<br />
deb http://archive.ubuntu.com/ubuntu/ lucid-backports main restricted universe multiverse<br />
deb http://archive.ubuntu.com/ubuntu/ lucid-security main restricted universe multiverse<br />
deb http://archive.ubuntu.com/ubuntu/ lucid-proposed main restricted universe multiverse</p>
<p>#### 10.04 sources<br />
deb-src http://archive.ubuntu.com/ubuntu/ lucid main restricted universe multiverse<br />
deb-src http://archive.ubuntu.com/ubuntu/ lucid-updates main restricted universe multiverse<br />
deb-src http://archive.ubuntu.com/ubuntu/ lucid-backports main restricted universe multiverse<br />
deb-src http://archive.ubuntu.com/ubuntu/ lucid-security main restricted universe multiverse<br />
deb-src http://archive.ubuntu.com/ubuntu/ lucid-proposed main restricted universe multiverse</p>
<h3  class="related_post_title">Похожие статьи</h3><ul class="related_post"><li><a href="http://ky6uk.ugatu.net/kcm-gtk-all-apps-in-one-style" title="Все приложения в одном стиле. Продолжение.">Все приложения в одном стиле. Продолжение.</a></li><li><a href="http://ky6uk.ugatu.net/launchpad-its-really-simple" title="Launchpad &#8211; это просто">Launchpad &#8211; это просто</a></li><li><a href="http://ky6uk.ugatu.net/mplayer-i-vdpau-poteryannyj-kodek" title="Mplayer и VDPAU: потерянный кодек">Mplayer и VDPAU: потерянный кодек</a></li><li><a href="http://ky6uk.ugatu.net/gtk-qt-engine-all-apps-one-style" title="gtk-qt-engine &#8211; все приложения в одном стиле">gtk-qt-engine &#8211; все приложения в одном стиле</a></li><li><a href="http://ky6uk.ugatu.net/firefox-3-optimization-sqlite-databases" title="Firefox 3 &#8211; оптимизация хранилищ данных">Firefox 3 &#8211; оптимизация хранилищ данных</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://ky6uk.ugatu.net/ubuntu-10-04-lucid-lynx-now-in-repo/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Все приложения в одном стиле. Продолжение.</title>
		<link>http://ky6uk.ugatu.net/kcm-gtk-all-apps-in-one-style</link>
		<comments>http://ky6uk.ugatu.net/kcm-gtk-all-apps-in-one-style#comments</comments>
		<pubDate>Fri, 14 Aug 2009 21:43:57 +0000</pubDate>
		<dc:creator>Ky6uk</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[GTK]]></category>
		<category><![CDATA[KDE]]></category>
		<category><![CDATA[Qt]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://ky6uk.ugatu.net/?p=314</guid>
		<description><![CDATA[В продолжение статьи про gtk-qt-engine хочу рассказать еще об одном варианте приведения внешнего вида GTK+ приложений к одному стилю, используемому в KDE. Это пакет kcm-gtk, о котором я узнал совершенно случайно, читая изменения четвертой альфы Kubuntu.
Этот пакет &#8211; замена устаревшего gtk-qt-engine и официально будет доступен начиная с Ubuntu 9.10. Ничего нового kcm-gtk в себе не несет и является [...]]]></description>
			<content:encoded><![CDATA[<p>В продолжение <a href="http://ky6uk.ugatu.net/gtk-qt-engine-all-apps-one-style" target="_blank">статьи про gtk-qt-engine</a> хочу рассказать еще об одном варианте приведения внешнего вида GTK+ приложений к одному стилю, используемому в KDE. Это пакет <a href="http://packages.ubuntu.com/kcm-gtk" target="_blank">kcm-gtk</a>, о котором я узнал совершенно случайно, читая <a title="Kubuntu Alpha 4 Release Notes" href="https://wiki.kubuntu.org/KarmicKoala/Alpha4/Kubuntu" target="_blank">изменения</a> четвертой альфы Kubuntu.</p>
<p>Этот пакет &#8211; замена устаревшего <a href="http://packages.ubuntu.com/gtk-qt-engine" target="_blank">gtk-qt-engine</a> и официально будет доступен начиная с Ubuntu 9.10. Ничего нового <em>kcm-gtk</em> в себе не несет и является таким же модулем для настройки системы, какой можно было наблюдать в <em>gtk-qt-engine</em>. <em>kcm-gtk</em> можно считать логическим продолжением уже долгое время не разрабатываемого <em>gtk-qt-engine</em>. Проблема оформления приложений, запускаемых от суперпользователя, решается точно таким же способом, как и в <a href="http://ky6uk.ugatu.net/gtk-qt-engine-all-apps-one-style" target="_blank">предыдущей статье</a>, только вместо файла <em>.gtkrc-2.0-kde4</em> необходимо использовать файл <em>.gtkrc-2.0</em>.</p>
<h3  class="related_post_title">Похожие статьи</h3><ul class="related_post"><li><a href="http://ky6uk.ugatu.net/gtk-qt-engine-all-apps-one-style" title="gtk-qt-engine &#8211; все приложения в одном стиле">gtk-qt-engine &#8211; все приложения в одном стиле</a></li><li><a href="http://ky6uk.ugatu.net/kmail-1-12-0-openpgp-bab-passphrase" title="KMail 1.12.0 + OpenPGP, &laquo;Bad passphrase&raquo;">KMail 1.12.0 + OpenPGP, &laquo;Bad passphrase&raquo;</a></li><li><a href="http://ky6uk.ugatu.net/ubuntu-10-04-lucid-lynx-now-in-repo" title="Ubuntu 10.04 Lucid Lynx уже на зеркалах">Ubuntu 10.04 Lucid Lynx уже на зеркалах</a></li><li><a href="http://ky6uk.ugatu.net/launchpad-its-really-simple" title="Launchpad &#8211; это просто">Launchpad &#8211; это просто</a></li><li><a href="http://ky6uk.ugatu.net/mplayer-i-vdpau-poteryannyj-kodek" title="Mplayer и VDPAU: потерянный кодек">Mplayer и VDPAU: потерянный кодек</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://ky6uk.ugatu.net/kcm-gtk-all-apps-in-one-style/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Launchpad &#8211; это просто</title>
		<link>http://ky6uk.ugatu.net/launchpad-its-really-simple</link>
		<comments>http://ky6uk.ugatu.net/launchpad-its-really-simple#comments</comments>
		<pubDate>Thu, 13 Aug 2009 09:59:44 +0000</pubDate>
		<dc:creator>Ky6uk</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[OpenPGP]]></category>
		<category><![CDATA[packaging]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://ky6uk.ugatu.net/?p=237</guid>
		<description><![CDATA[У меня есть привычка собирать некоторые часто используемые приложения из исходников. Причина этого довольно очевидна &#8211; желание иметь больший функционал с юзабельностью и нежелание иметь древние баги (новые всегда можно откатить или поправить самому). Но длительное использование Ubuntu как основного дистрибутива Linux оставило свой след &#8211; я делаю из этих исходников бинарные пакеты, которые в [...]]]></description>
			<content:encoded><![CDATA[<p>У меня есть привычка собирать некоторые часто используемые приложения из исходников. Причина этого довольно очевидна &#8211; желание иметь б<em><strong>о</strong></em>льший функционал с юзабельностью и нежелание иметь древние баги (новые всегда можно откатить или поправить самому). Но длительное использование Ubuntu как основного дистрибутива Linux оставило свой след &#8211; я делаю из этих исходников бинарные пакеты, которые в дальнейшем можно установить или удалить с помощью обычного пакетного менеджера <a href="http://ru.wikipedia.org/wiki/Dpkg">dpkg</a>.</p>
<p>В последнее время мне стало нехватать моего личного и процессорного времени на сборку, поэтому я заинтересовался сервисом <a href="https://launchpad.net/">launchpad.net</a>. Этот сервис помогает автоматизировать сборку пакетов из исходников для различных архитектур и предоставляет персональный репозиторий (<a href="https://help.launchpad.net/Packaging/PPA">PPA</a>) для готовых пакетов, который можно добавить непосредственно в <em>sources.list</em>.<br />
<span id="more-237"></span></p>
<h4>Для чего это нужно?</h4>
<p>Собственно причина написания статьи:</p>
<ul>
<li>Автоматическая сборка пакетов на сервере в &laquo;чистом&raquo; окружении.</li>
<li>Поддержка различных архитектур (amd64, i386, lpia).</li>
<li>Собственный репозиторий для подключения в Ubuntu.</li>
</ul>
<p>А так же:</p>
<ul>
<li>Хостинг исходных текстов под управлением <a title="Распределённая система управления версиями" href="http://ru.wikipedia.org/wiki/Bazaar" target="_blank">bazaar</a>.</li>
<li>Багтрекер.</li>
<li>Встроенная система локализации.</li>
<li>Группы разработчиков.</li>
<li>Может быть что-то еще&#8230; :)</li>
</ul>
<h4>Начинаем с малого. Регистрация.</h4>
<p>Получить доступ к <a href="https://launchpad.net/">launchpad.net</a> (далее просто <strong>LP</strong>) не сложно, необходимо лишь пройти стандартную процедуру <a title="Вход / Регистрация на Launchpad.Net" href="https://launchpad.net/+login" target="_blank">по этой ссылке</a>.</p>
<ul>
<li>Укажем в нижнем поле наш E-Mail на который придет подтверждение регистрации и нажмем кнопку <strong>Register</strong>.</li>
</ul>
<p style="text-align: center;">
<div id="attachment_249" class="wp-caption aligncenter" style="width: 541px"><a href="http://ky6uk.ugatu.net/wp-content/uploads/2009/08/reg.png"><img class="size-full wp-image-249  " title="registration" src="http://ky6uk.ugatu.net/wp-content/uploads/2009/08/reg.png" alt="регистрация на launchpad.net" width="531" height="199" /></a><p class="wp-caption-text">регистрация на launchpad.net</p></div>
<ul>
<li>На указанный почтовый адрес придет письмо с инструкциями. В нем будет ссылка на продолжение регистрации.</li>
</ul>
<div id="attachment_258" class="wp-caption aligncenter" style="width: 394px"><a href="http://ky6uk.ugatu.net/wp-content/uploads/2009/08/reg1.png"><img class="size-full wp-image-258" title="registration2" src="http://ky6uk.ugatu.net/wp-content/uploads/2009/08/reg1.png" alt="письмо со ссылкой" width="384" height="264" /></a><p class="wp-caption-text">письмо со ссылкой</p></div>
<blockquote><p>LP предупреждает, что некоторые почтовые сервисы могут блокировать письма и советует использовать <a href="http://gmail.com/">Gmail</a> или                   <a href="http://mail.yahoo.com/">Yahoo Mail</a> в качестве регистрационной почты, но в большинстве случаев все приходит на любой адрес.</p></blockquote>
<ul>
<li>После перехода в письме по ссылке, откроется страничка LP на которой нужно будет указать отображаемое имя (обычно тут пишут имя и фамилию) и пароль для дальнейшего доступа к LP. После заполнения формы жмем <strong>Continue</strong>. На этом регистрация завершена.</li>
</ul>
<div id="attachment_260" class="wp-caption aligncenter" style="width: 510px"><a href="http://ky6uk.ugatu.net/wp-content/uploads/2009/08/reg2.png"><img class="size-full wp-image-260" title="registration complete" src="http://ky6uk.ugatu.net/wp-content/uploads/2009/08/reg2.png" alt="завершение регистрации" width="500" height="206" /></a><p class="wp-caption-text">завершение регистрации</p></div>
<h4>Создание нового PPA.</h4>
<ul>
<li>Для создания персонального архива пакетов (PPA), на личной странице пользователя необходимо нажать на ссылку <strong>Create a new PPA</strong>.</li>
</ul>
<div id="attachment_264" class="wp-caption aligncenter" style="width: 361px"><a href="http://ky6uk.ugatu.net/wp-content/uploads/2009/08/ppa.png"><img class="size-full wp-image-264" title="создаем новый PPA" src="http://ky6uk.ugatu.net/wp-content/uploads/2009/08/ppa.png" alt="создаем новый PPA" width="351" height="30" /></a><p class="wp-caption-text">создаем новый PPA</p></div>
<ul>
<li>В открывшемся окне заполняем название и описание будущего PPA, соглашаемся с <a style="outline-style: none; outline-width: initial; outline-color: initial; color: #0033aa; text-decoration: underline;" href="https://help.launchpad.net/PPATermsofUse">PPA Terms of Use</a> и жмем кнопку <strong>Activate</strong>. Название и описание в дальнейшем можно будет поменять. После этого откроется страница с только что созданным архивом пакетов.</li>
</ul>
<blockquote><p><strong><span style="color: #993300;">Важно!</span></strong> <span style="color: #993300;">После создания PPA будет заблокирована возможность менять имя персональной страницы (у меня это /~ky6uk/). По этому рекомендую изменить это имя заранее на странице <strong>Change details</strong>.</span></p></blockquote>
<p style="text-align: center;">
<div id="attachment_268" class="wp-caption aligncenter" style="width: 576px"><a href="http://ky6uk.ugatu.net/wp-content/uploads/2009/08/ppa1.png"><img class="size-full wp-image-268 " title="форма создания нового PPA" src="http://ky6uk.ugatu.net/wp-content/uploads/2009/08/ppa1.png" alt="форма создания нового PPA" width="566" height="285" /></a><p class="wp-caption-text">форма создания нового PPA</p></div>
<h4>Важный момент, цифровой ключ.</h4>
<p><span style="font-weight: normal;">Для использования PPA необходимо иметь личный <a title="Подробнее об OpenPGP" href="https://www.pgpru.com/faq/obschie" target="_blank">OpenPGP</a> ключ, которым будут подписываться ваши пакеты для проверки подлинности. Создать его не сложно.</span></p>
<ul>
<li>Генерируем ключ командой
<pre class="brush: plain;">$ gpg --gen-key</pre>
</li>
</ul>
<ul>
<li>Тип ключа оставляем по умолчанию: <em><strong>DSA и ElGamal</strong></em>.</li>
<li>Размер тоже оставим как есть: <em><strong>2048 бит</strong></em>.</li>
<li>Срок действия так же оставляем по умолчанию: <em><strong>без ограничения срока действительности</strong></em>.</li>
<li>Отвечаем утвердительно на вопрос: <em><strong>Все верно? (y/N)</strong><span style="font-style: normal;">.</span></em></li>
<li>Следующим будет вопрос <em><strong>В</strong></em><em><strong>аше настоящее имя</strong><span style="font-style: normal;">.</span><span style="font-style: normal;"> Здесь указываем ваши </span><strong>Имя (Ник) Фамилия</strong></em></li>
<li>Далее указываем ваш E-Mail на вопрос: <strong><em>Email-адрес</em></strong>.</li>
<li><strong><em>Комментарий</em></strong> можно заполнить по своему желанию или оставить пустым.</li>
<li>Если все верно, принимаем изменения и вводим пароль с подтверждением для доступа к приватному ключу.</li>
<li>После ввода пароля начнется процесс генерации ключа. На этом этапе необходимо выполнять различные действия, такие как двигать мышью и печатать на клавиатуре.</li>
</ul>
<p>В итоге должно получиться примерно следующее:</p>
<div id="attachment_283" class="wp-caption aligncenter" style="width: 544px"><a href="http://ky6uk.ugatu.net/wp-content/uploads/2009/08/gpg.png"><img class="size-full wp-image-283 " title="сгенерированный OpenPGP ключ" src="http://ky6uk.ugatu.net/wp-content/uploads/2009/08/gpg.png" alt="сгенерированный OpenPGP ключ" width="534" height="150" /></a><p class="wp-caption-text">сгенерированный OpenPGP ключ</p></div>
<p>В моем случае ID ключа <strong>3231C010</strong>.</p>
<ul>
<li>В заключение отправим публичный ключ на сервер ключей:</li>
</ul>
<pre class="brush: plain;">$ gpg --send-keys --keyserver keyserver.ubuntu.com 3231C010</pre>
<h4>Еще немного бюрократии.</h4>
<p>Перед началом работы с PPA так же необходимо подписать нормативный кодекс Ubuntu (<a title="Кодекс норм поведения Ubuntu" href="https://launchpad.net/codeofconduct" target="_blank">Ubuntu Codes of Conduct</a>) своим личным ключом.</p>
<ul>
<li>Переходим по <a title="нормативный кодекс Ubuntu" href="https://launchpad.net/codeofconduct" target="_blank">ссылке</a> и нажимаем на первый пункт: <strong>Register an OpenPGP key</strong></li>
</ul>
<div id="attachment_291" class="wp-caption aligncenter" style="width: 296px"><a href="http://ky6uk.ugatu.net/wp-content/uploads/2009/08/ucoc.png"><img class="size-full wp-image-291" title="UCoC, регистрация OpenPGP ключа" src="http://ky6uk.ugatu.net/wp-content/uploads/2009/08/ucoc.png" alt="UCoC, регистрация OpenPGP ключа" width="286" height="52" /></a><p class="wp-caption-text">UCoC, регистрация OpenPGP ключа</p></div>
<ul>
<li>Импортируем OpenPGP ключ, указав в поле его отпечаток и нажав на кнопку <strong>Import Key</strong>.</li>
</ul>
<p style="text-align: center;">
<div id="attachment_293" class="wp-caption aligncenter" style="width: 562px"><a href="http://ky6uk.ugatu.net/wp-content/uploads/2009/08/ucoc1.png"><img class="size-full wp-image-293 " title="Импорт OpenPGP ключа" src="http://ky6uk.ugatu.net/wp-content/uploads/2009/08/ucoc1.png" alt="Импорт OpenPGP ключа" width="552" height="146" /></a><p class="wp-caption-text">Импорт OpenPGP ключа</p></div>
<blockquote><p>Узнать отпечаток можно командой</p>
<pre class="brush: plain;">$ gpg --fingerprint 3231C010</pre>
<p>Где 3231C010 &#8211; ID вашего ключа.</p></blockquote>
<ul>
<li>На ваш E-Mail придет письмо, с зашифрованным текстом.
<pre class="brush: plain;">-----BEGIN PGP MESSAGE-----
Version: GnuPG v1.4.6 (GNU/Linux)

hQIOA7MGLea56Z7WEAf/cc/4jpc3VRK8UPG9qhnM6CCkhJhe2lvMmIUKv3FJ+R7w
trzB9puaO0XdRFeJ5SxmMnwJ8UgElUBBnoIRxWX/fOKPmjgoZ9XFe8j9ziujxZTG
Xcmz7pcqYXBYIj5WuwTTEIVgPNgyI1aCTihepQ6R1x/Uag7Bc2pxVriDabfaIOCq
roTHbh8rqrlxY+aWQcjrHGTMy8G/X8McKjNHu7GN4NoqBsKmTBwJM/rjmodyivAN
PsDP51vQ1ZxGb5wGOlozrI4VVORQePphHRtBM+EnGgket0GemUsgArpk836JMN/M
xhHfPzRBdD5mj11q+FkOLJ7wmEpSuZyEWCjyyp1M3gf/fYP+88n/uRvCqLytnprN
5tqBLREJSQoJnrMsflS791JaS1SF6ExSGXTZC/dJJrGOVu8kGvwdutQgQmnNHhjO
/ZVWEVJVjm/zOsumqM/ukXPS3f161ECRcu4aa+OTDjPhxA/7Wb3UKTiTHd7NyN5K
vegjTzIVpSiL8KyLNtEM/fYKFtLcF3B7Jsgkjwek5jG7FDp3jfG70kFV3vCSWqzK
wvF8d/bDsBs+sxQlr7qNn813d8cBR5bVoj0avGxhhQ6kaRgL6LGg6PyoVRm716gx
apiFIHqEM8J6rjDgNHP+eZi96z2K8tCeWudIJix40D0yoQg2l4TmRv5va2oNTH1N
mtLArwFtV2LipJbTJjU8DaJR65zAoXBndW66FSfM87IiJ0kAeE2HeMrVk4rFtMnb
yD2+9+w5+LUAGU9hp1fIUTrcF4c0lyJhSqe5GUJ9HWuZ2EuXOBFH15RaPaSape4P
QcUfqsAnbG28cBVjR+rD1mxaMaKWXN88lpvHvqDMQsxfzhkyKigRtr9gceLKB2SY
7MHxyXAKs3+4K6378iXCHsEv2AerUKoGbYhK+HEYmQ5ol+AbyIVHCPsi5MDvHLbW
VxUUxCy3Y3rIAn1nljjcAGNxlmEaQNaCXvmF5UwsBwu6PZDO6Sg/2XMpenML7hhc
15hSwUCa2IEpyTpiwHjGFqjZ5giek+cf/P4cLMw0FEu5uVX+t7pxG4DiGwUjSpyY
2m046YyoweqzbaJOH1TrsApAW7K/Ad8D1NJpd1cHRLU3JYq2fiwSgsDIr4Gf+F3R
h8v/SnvAJR7xEOkq/6a+uySqS74JjsZfIPwIsPhDj6WGGY4=
=CLRh
-----END PGP MESSAGE-----</pre>
</li>
</ul>
<ul>
<li>Расшифровать его можно разными способами. Самый простой &#8211; сохранить этот текст в файл, например в <em>/tmp/mail.txt</em> и выполнить команду:
<pre class="brush: plain;">$ gpg --decrypt /tmp/mail.txt</pre>
<p>После ввода пароля текст будет расшифрован. В конце этого сообщения есть ссылка на LP, являющаяся подтверждением того, что вы владелец указанного ключа. Перейдите по этой ссылке и нажмите на кнопку <strong>Continue</strong>.</li>
</ul>
<div id="attachment_297" class="wp-caption aligncenter" style="width: 479px"><a href="http://ky6uk.ugatu.net/wp-content/uploads/2009/08/openpgp.png"><img class="size-full wp-image-297" title="подтверждение OpenPGP ключа" src="http://ky6uk.ugatu.net/wp-content/uploads/2009/08/openpgp.png" alt="подтверждение OpenPGP ключа" width="469" height="112" /></a><p class="wp-caption-text">подтверждение OpenPGP ключа</p></div>
<ul>
<li>Теперь необходимо скачать файл нормативного кодекса Ubuntu <a title="Ubuntu Codes of Conduct" href="https://launchpad.net/codeofconduct" target="_blank">на этой</a> странице.</li>
</ul>
<div id="attachment_298" class="wp-caption aligncenter" style="width: 296px"><a href="http://ky6uk.ugatu.net/wp-content/uploads/2009/08/ucoc2.png"><img class="size-full wp-image-298" title="Нормативный кодекс Ubuntu" src="http://ky6uk.ugatu.net/wp-content/uploads/2009/08/ucoc2.png" alt="Нормативный кодекс Ubuntu" width="286" height="52" /></a><p class="wp-caption-text">нормативный кодекс Ubuntu</p></div>
<ul>
<li>Сохраняем файл <em>UbuntuCodeofConduct-1.0.1.txt</em> и выполняем команду
<pre class="brush: plain;">gpg --clearsign UbuntuCodeofConduct-1.0.1.txt</pre>
<p>Это создаст подписанный вашим ключом файл <em>UbuntuCodeofConduct-1.0.1.txt.asc</em>.</li>
<li>Переходим <a title="Ubuntu Codes of Conduct" href="https://launchpad.net/codeofconduct" target="_blank">по ссылке</a> и нажимаем на <strong>Sign It!</strong></li>
</ul>
<div id="attachment_299" class="wp-caption aligncenter" style="width: 296px"><a href="http://ky6uk.ugatu.net/wp-content/uploads/2009/08/ucoc3.png"><img class="size-full wp-image-299" title="подписываем нормативный кодекс Ubuntu" src="http://ky6uk.ugatu.net/wp-content/uploads/2009/08/ucoc3.png" alt="подписываем нормативный кодекс Ubuntu" width="286" height="52" /></a><p class="wp-caption-text">подписываем нормативный кодекс Ubuntu</p></div>
<ul>
<li>Полностью копируем текст из <em>UbuntuCodeofConduct-1.0.1.txt.asc </em>в поле <strong>Signed Code</strong> и нажимаем <strong>Continue</strong>. На этом с бюрократией покончено. ;-)</li>
</ul>
<div id="attachment_300" class="wp-caption aligncenter" style="width: 507px"><a href="http://ky6uk.ugatu.net/wp-content/uploads/2009/08/ucoc21.png"><img class="size-full wp-image-300" title="завершение подписывания UCoC" src="http://ky6uk.ugatu.net/wp-content/uploads/2009/08/ucoc21.png" alt="завершение подписывания UCoC" width="497" height="306" /></a><p class="wp-caption-text">завершение подписывания UCoC</p></div>
<h4>Использование PPA.</h4>
<p><span style="font-weight: normal;">Как уже говорилось, с помощью PPA можно автоматизировать сборку и публикацию бинарных пакетов для Ubuntu. Для этого нужно только загрузить архив специальным образом сформированных исходников.</span></p>
<ul>
<li>Для начала уставим в систему пакет <a title="приложение для загрузки deb-пакетов на сервер" href="http://packages.ubunut.com/dput" target="_blank">dput</a>, с помощью которого и будет происходить загрузка исходников на сервер LP.
<pre class="brush: plain;">$ sudo aptitude install dput</pre>
</li>
</ul>
<ul>
<li>После этого нужно создать файл <em>~/.dput.cf</em> со следующим содержанием:
<pre class="brush: plain;">[ppa]
fqdn = ppa.launchpad.net
method = ftp
incoming = ~&lt;ваш_id&gt;/&lt;имя_ppa&gt;/ubuntu/
login = anonymous
allow_unsigned_uploads = 0</pre>
<p><em>&lt;ваш_id&gt;</em> &#8211; это имя вашей страницы на LP. (знак тильды <strong>~</strong> перед именем обязателен)<em><br />
&lt;имя_ppa&gt;</em> по-умолчанию <strong>ppa</strong>. Его можно изменить в настройках.</p>
<p>У меня этот файл выглядит следующим образом:</p>
<pre class="brush: plain;">[ppa]
fqdn = ppa.launchpad.net
method = ftp
incoming = ~ky6uk/ppa/ubuntu/
login = anonymous
allow_unsigned_uploads = 0</pre>
</li>
</ul>
<p>Теперь нам понадобятся специальным образом подготовленные исходники. Покажу на примере уже существующего пакета <a title="Web-браузер" href="http://packages.ubuntu.com/arora" target="_blank">arora</a>.</p>
<ul>
<li>Получим исходники командой
<pre class="brush: plain;">$ apt-get source arora</pre>
</li>
<li>Подождем пока они скачаются и распакуются, затем переименуем директорию с исходниками, добавив к имени <em>~ppa1</em>. У меня директория стала называться <em>arora-0.8.0~ppa1</em>.</li>
</ul>
<blockquote><p>Окончание <em>~ppaX</em> &#8211; одно из требований LP. Все пакеты должны оканчиваться на <em>~ppaX</em>, где <em>X</em> &#8211; цифра, означающая номер билда. Например, если после сборки пакета были замечены недочеты, то после исправления последнюю цифру необходимо увеличить на еденицу. Подробнее про это <a title="требование к версиям пакетов" href="https://help.launchpad.net/Packaging/PPA/BuildingASourcePackage#Versioning" target="_blank">по ссылке</a>.</p></blockquote>
<ul>
<li>Теперь вносим в код все необходимые изменения и не забываем добавить в файл <em>debian/changelog</em> запись о проделанной работе. Например у меня последняя запись выглядит так:
<pre class="brush: plain;">arora (0.8.0~ppa1) karmic; urgency=low

  * Fixed critical bug.
  * Add more functions.

 -- Roman Nuritdinov &lt;ky6uk.kun@yandex.ru&gt;  Thu, 13 Aug 2009 21:34:00 +0600</pre>
</li>
<li>Теперь, находясь в директории с исходниками, даем команду на сборку этих исходников в архив командой
<pre class="brush: plain;">$ debuild -S -sd</pre>
</li>
<li>Осталось отправить полученные файлы на LP, где они будут собраны в бинарный пакет и размещены в вашем PPA. Отправить файлы на LP можно командой
<pre class="brush: plain;">$ dput ppa arora_0.8.0~ppa1_source.changes</pre>
<p>где <em>ppa</em> &#8211; это название правила из <em>~/.dput.cf</em>, а <em>arora_0.8.0~ppa1_source.changes</em> сгенерированный командой <em>debuild</em> файл изменений.</li>
</ul>
<p>Через некоторое время после загрузки исходных кодов на LP на ваш почтовый ящик придет письмо с результатом. Пакет может быть отклонен из-за ошибок или принят на обработку. Если пакет принят, то он будет поставлен в очередь на сборку. Следить за сборкой можно на странице с вашим PPA.</p>
<p>Теперь все зависит только он правильности оформления пакета и качества исходного кода. Удачи!</p>
<h4>Полезные ссылки.</h4>
<ul>
<li><a href="https://help.launchpad.net/Packaging" target="_blank">Управление пакетами на Launchpad.Net.</a></li>
<li><a href="https://help.ubuntu.com/community/GnuPrivacyGuardHowto" target="_blank">Использование GPG в Ubuntu Linux.</a></li>
<li><a href="https://help.launchpad.net/ReadingOpenPgpMail#Reading%20OpenPGP%20E-mail" target="_blank">Чтение зашифрованных OpenPGP писем.</a></li>
<li><a href="http://www.pgpru.com/chernowiki/rukovodstva/bezopasnostj/upravleniekljuchami/podkljuchiopenpgp" target="_blank">Создание и использование OpenPGP на русском.</a></li>
<li><a href="https://wiki.ubuntu.com/PackagingGuide/Complete" target="_blank">Руководство по созданию пакетов для Ubuntu Linux.</a></li>
<li><a href="http://www.debian.org/doc/manuals/maint-guide/ch-start.ru.html" target="_blank">Руководство начинающего разработчика Debian.</a></li>
</ul>
<h3  class="related_post_title">Похожие статьи</h3><ul class="related_post"><li><a href="http://ky6uk.ugatu.net/kmail-1-12-0-openpgp-bab-passphrase" title="KMail 1.12.0 + OpenPGP, &laquo;Bad passphrase&raquo;">KMail 1.12.0 + OpenPGP, &laquo;Bad passphrase&raquo;</a></li><li><a href="http://ky6uk.ugatu.net/ubuntu-10-04-lucid-lynx-now-in-repo" title="Ubuntu 10.04 Lucid Lynx уже на зеркалах">Ubuntu 10.04 Lucid Lynx уже на зеркалах</a></li><li><a href="http://ky6uk.ugatu.net/kcm-gtk-all-apps-in-one-style" title="Все приложения в одном стиле. Продолжение.">Все приложения в одном стиле. Продолжение.</a></li><li><a href="http://ky6uk.ugatu.net/mplayer-i-vdpau-poteryannyj-kodek" title="Mplayer и VDPAU: потерянный кодек">Mplayer и VDPAU: потерянный кодек</a></li><li><a href="http://ky6uk.ugatu.net/gtk-qt-engine-all-apps-one-style" title="gtk-qt-engine &#8211; все приложения в одном стиле">gtk-qt-engine &#8211; все приложения в одном стиле</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://ky6uk.ugatu.net/launchpad-its-really-simple/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Mplayer и VDPAU: потерянный кодек</title>
		<link>http://ky6uk.ugatu.net/mplayer-i-vdpau-poteryannyj-kodek</link>
		<comments>http://ky6uk.ugatu.net/mplayer-i-vdpau-poteryannyj-kodek#comments</comments>
		<pubDate>Mon, 03 Aug 2009 23:50:13 +0000</pubDate>
		<dc:creator>Ky6uk</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[MPlayer]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[VDPAU]]></category>

		<guid isPermaLink="false">http://ky6uk.ugatu.net/?p=227</guid>
		<description><![CDATA[Буквально месяца два назад обновил драйвер на мою новенькую видеокарту GeForce 8400 с поддержкой VDPAU (декодирование видео средствами GPU). После этого решил проверить эту новую функцию на HD видео, которое очень сильно тормозит при моем текущем старом Celeron 2000.

Выбрал видео &#171;потолще&#187;, запустил &#8211; загрузка процессора 100%, тормоза неимоверные. Обновил MPlayer с поддержкой VDPAU, обновил фронтед [...]]]></description>
			<content:encoded><![CDATA[<p>Буквально месяца два назад обновил драйвер на мою новенькую видеокарту GeForce 8400 с поддержкой VDPAU (декодирование видео средствами GPU). После этого решил проверить эту новую функцию на HD видео, которое очень сильно тормозит при моем текущем старом Celeron 2000.<br />
<span id="more-227"></span><br />
Выбрал видео &laquo;потолще&raquo;, запустил &#8211; загрузка процессора 100%, тормоза неимоверные. Обновил MPlayer с поддержкой VDPAU, обновил фронтед для него &#8211; SMPlayer, обновил драйвер до последней версии и обновил библиотеки ffmpeg. Для Ubuntu это всё брал на PPA (у меня Ubuntu 9.10):</p>
<pre class="brush: plain;">$ cat /etc/apt/sources.list
...
deb http://ppa.launchpad.net/brandonsnider/ppa/ubuntu/ jaunty main
deb http://ppa.launchpad.net/rvm/testing/ubuntu jaunty main
deb http://ppa.launchpad.net/nvidia-vdpau/ppa/ubuntu karmic main
...</pre>
<p>Затем я запустил видео, следуя инструкциям c <a href="http://ubuntuforums.org/showthread.php?t=1037625">ubuntuforums.org</a> и <a href="https://launchpad.net/~nvidia-vdpau/+archive/ppa">launchpad.net</a>:</p>
<pre class="brush: plain;">$ mplayer -vo vdpau -vc ffmpeg12vdpau,ffh264vdpau,ffwmv3vdpau,ffvc1vdpau, /path/to/file</pre>
<p>Каково же было моё удивление после того, как тормозящее ранее HD видео проигрывалось без единого заскока. Проверка загруженности процессора показала, что он загружен на смешные 10%. То есть получилось так, что производительность увеличилась в целых десять раз.</p>
<p>Порадовался я такому положению дел и благополучно забыл за ненадобностью. Через месяц понадобилось проиграть HD видео и я опять вспомнил, но не тут-то было. Злополучный MPlayer выдавал только звук и ошибку видеокодека:</p>
<pre class="brush: plain;">==========================================================================
Forced video codec: ffh264vdpau
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
Cannot find codec 'h264_vdpau' in libavcodec...
VDecoder init failed :(
Cannot find codec matching selected -vo and video format 0x31637661.
Read DOCS/HTML/en/codecs.html!
==========================================================================
</pre>
<p>Google молчал как партизан, знакомые убунтоводы тоже. Переустановка библиотек, плеера, дров &#8211; не помогало абсолютно ничего. Я уже было отчаялся найти решение проблемы, но оно таки внезапно появилось.</p>
<p>Когда я устанавливал очередной софт, случайно наткнулся на пакет <a href="http://packages.ubuntu.com/kubuntu-restricted-extras">kubuntu-restricted-extras</a>, который рекомендует установить некоторые проприетарные пакеты для проигрывания DVD и mp3. Для этого в рекомендуемых пакетах были библиотеки ffmpeg (libavformat, libavdevice и т.д.), но со словом <em>unstripped</em> в названии. Судя по описанию, это были неограниченные версии обычных библиотек. Терять не чего, решил поставить. И, как вы уже догадались, после замены обычных библиотек на эти, MPlayer опять начал показывать HD видео используя VDPAU.</p>
<blockquote><p>Коротко: решить проблему с потерянным vdpau-кодеком в MPlayer можно заменив пакет <strong>libavcodec</strong> на <strong>libavcodec-unstripped</strong></p></blockquote>
<blockquote><p><span style="color: #de0f02;"><strong>Внимание!</strong> После обновления от 20.08.2009 пакета </span><strong><span style="color: #de0f02;">ffmpeg</span></strong><span style="color: #de0f02;"> до версии 4:0.5+svn20090706-1ubuntu1 пакет </span><strong><span style="color: #de0f02;">libavcodec-unstripped</span></strong><span style="color: #de0f02;"> был удален из дистрибутива и поддержка VDPAU была добавлена в обычный </span><strong><span style="color: #de0f02;">libavcodec52</span></strong><span style="color: #de0f02;"> (исправлена ошибка </span><a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=511544">#511544</a><span style="color: #de0f02;">).</span></p></blockquote>
<h3  class="related_post_title">Похожие статьи</h3><ul class="related_post"><li><a href="http://ky6uk.ugatu.net/ubuntu-10-04-lucid-lynx-now-in-repo" title="Ubuntu 10.04 Lucid Lynx уже на зеркалах">Ubuntu 10.04 Lucid Lynx уже на зеркалах</a></li><li><a href="http://ky6uk.ugatu.net/kcm-gtk-all-apps-in-one-style" title="Все приложения в одном стиле. Продолжение.">Все приложения в одном стиле. Продолжение.</a></li><li><a href="http://ky6uk.ugatu.net/launchpad-its-really-simple" title="Launchpad &#8211; это просто">Launchpad &#8211; это просто</a></li><li><a href="http://ky6uk.ugatu.net/gtk-qt-engine-all-apps-one-style" title="gtk-qt-engine &#8211; все приложения в одном стиле">gtk-qt-engine &#8211; все приложения в одном стиле</a></li><li><a href="http://ky6uk.ugatu.net/firefox-3-optimization-sqlite-databases" title="Firefox 3 &#8211; оптимизация хранилищ данных">Firefox 3 &#8211; оптимизация хранилищ данных</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://ky6uk.ugatu.net/mplayer-i-vdpau-poteryannyj-kodek/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->