<?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>LXj's column</title>
	<atom:link href="http://lxj.endofinternet.net/column/feed/" rel="self" type="application/rss+xml" />
	<link>http://lxj.endofinternet.net/column</link>
	<description>Stuff that matters</description>
	<lastBuildDate>Sat, 11 Jul 2009 18:57:03 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Торрент-трекеры и геймдизайн</title>
		<link>http://lxj.endofinternet.net/column/torrent-game/</link>
		<comments>http://lxj.endofinternet.net/column/torrent-game/#comments</comments>
		<pubDate>Sat, 11 Jul 2009 18:49:06 +0000</pubDate>
		<dc:creator>LXj</dc:creator>
				<category><![CDATA[Геймдизайн]]></category>

		<guid isPermaLink="false">http://lxj.endofinternet.net/column/?p=21</guid>
		<description><![CDATA[Вы спросите, какое отношение геймдизайн имеет к скачиванию из торрентов? Ну как же, у нас есть игровой процесс (скачивание и отдача контента разной лицензионной чистоты), fat lewtz (много порн того самого контента, который мы скачали), писькомерка (которая так и называется &#8212; рейтинг), огромная playerbase (сидеры и личеры), ну и куча недостатков впридачу (иначе, о чём [...]]]></description>
			<content:encoded><![CDATA[<p>Вы спросите, какое отношение геймдизайн имеет к скачиванию из торрентов? Ну как же, у нас есть игровой процесс (скачивание и отдача контента разной лицензионной чистоты), fat lewtz (много <strike>порн</strike> того самого контента, который мы скачали), писькомерка (которая так и называется &#8212; рейтинг), огромная playerbase (сидеры и личеры), ну и куча недостатков впридачу (иначе, о чём бы мне было писать?). Всё как во взрослой ММО!</p>

<p>Но давайте начнём с самого начала. BitTorrent &#8212; это p2p-сеть, а это значит, она <strong>не может существовать без тех, кто раздаёт скачанный контент (сидеров)</strong>. Как раз для того, чтобы мотивировать таких людей, и был придуман рейтинг, то есть соотношение количества отданного к количеству скачанного. На &laquo;открытых&raquo; торрент-трекерах рейтинг ни на что не влияет, зато на &laquo;закрытых&raquo; при маленьком рейтинге к вам могут быть применены меры вроде запрета на скачивание или даже бана. В результате, на закрытых трекерах сидеры, натурально, остаются на раздаче, в то время как на открытых у них нет для этого особых причин.</p>

<p>Но как это обычно бывает с писькомерками, рейтинг воспринимается в отрыве от того, для чего он был придуман. Ах, у тебя меньше 1? Ну, значит, ты личер и жадина.</p>

<p>Так, давайте посчитаем. Допустим, один человек раздаёт некий файл размером 1 гигабайт через BitTorrent. 10 человек его скачали. Может ли у всех десяти быть рейтинг 1 или больше? 10 человек скачало в сумме 10 гигабайт, но раздавали эти 10 гигабайт 11 человек! в результате средний рейтинг среди скачавших файл будет меньше 9/10, поскольку минимум 1 гигабайт раздал релизер. Единственное условие, при котором у всех десяти будет положительный рейтинг &#8212; если на раздачу придут новые люди. Совсем как в АО &laquo;МММ&raquo;, где новые &laquo;не халявщики, а партнёры&raquo; позволяли получить доход старым.</p>

<p>Вы можете сказать &laquo;Ха! Пусть эти 10 человек тоже что-нибудь выложат!&raquo;. Ну. во-первых, это наивное предложение. Один и тот же контент может быть выложен всего один раз, а пользователей у трекеров тысячи и даже миллионы. Во-вторых, <strong>рейтинг изначально придумывался вовсе не для того, чтобы шантажировать пользователей</strong>.</p>

<p>Но самое смешное &#8212; ни torrents.ru, ни free-torrents.org, ни nnm-club.ru не требуют обязательно поддерживать рейтинг выше единицы (хотя и настоятельно рекомендуют). А это &#8212; именно те трекеры, которые держатся на том контенте, который выкладывают сами пользователи. С другой стороны, некоторые частные трекеры, принадлежащие релиз-группам, переводящим сериалы, требуют обязательного высокого рейтинга &#8212; что просто невозможно, поскольку весь контент на них выкладывается самими владельцами трекера!</p>

<p>Конечно же, понятно, зачем они это делают. Как и в любой бесплатной ММО, в мире BitTorrent есть микротранзакции. На большинстве трекеров можно покупать рейтинг за смски или WebMoney, на чём они с разной степенью наглости и пытаются заработать.</p>

<p>Напомню ещё раз, что весь смысл рейтинга &#8212; это всего лишь мотивировать сидеров не уходить с раздачи. Но если вы досиделись до того, что ваш рейтинг превысил 1, то вы наоборот, наносите своими действиями вред &#8212; потому как новым людям, скачавшим контент, становится тяжело набрать такой же рейтинг, когда сидеров становится в несколько раз больше, чем личеров. Надо ли объяснять, что чем более драконовские правила у трекера, тем чаще бывает ситуация, когда на сотню раздающих приходится один качающий? И чем это лучше, чем если бы количество раздающих было всего в 10 раз больше? В 5 раз больше? Да ничем! Качающие всё равно наверняка качают на пределе своей скорости.</p>

<p>Но раз уж рейтинг воспринимают как число, которое просто должно быть больше 1, то его вполне можно изменить так, чтобы это было математически возможно для каждого (и чтобы никто не ушёл обиженным). Сейчас применяются разные варианты таких модификаций, но обиженные пока что остаются.</p>

<p>Ну, во-первых, никто не отменял старую добрую покупку рейтинга. Впрочем, некоторые трекеры демонстративно от такой практики отказываются. А почему, кстати? Помогающие рублём для существования трекера не менее полезны, чем сидеры.</p>

<p>Многие трекеры дают бонус к количеству отданного, если вы &#8212; единственный сидер на раздаче. Но совсем немногие дают бонус в том случае, если на двух сидеров приходится сотня качающих. А потому &#8212; <strong>правила раздачи бонусного аплоада должны быть расширены так, чтобы всегда поощрять сидеров, когда их меньше, чем личеров</strong>. Т.е. если количество отданного трафика умножаем на отношение количества личеров к количеству сидеров, но не более, чем на 2 (и не менее, чем на 1), к примеру.</p>

<p>Идея варьировать бонус, кстати, уже реализована на nnm-club.ru &#8212; там бонус равен 100%, 25%, 11%, 6% и 4% для одного, двух и т.д. до 5 сидеров. Коэффициенты очень похоже, что взяты с потолка :)</p>

<p>Это помогает нам с ситуацией &laquo;мало сидеров&raquo;. Но мы также выяснили, что есть и противополжная ситуация &#8212; &laquo;мало личеров&raquo;. Здесь делаем с точностью до наоборот &#8212; <strong>если сидеров становится гораздо больше личеров, то мы не засчитываем личерам скачанное</strong>. С учётом того, что у многих скорость отдачи гораздо ниже скорости скачивания, то коэффициенты тут должны быть другие: скажем, до тех пор, пока сидеров не становится в два раза больше, чем личеров, считаем весь трафик, а полностью перестаём его учитывать только тогда, когда сидеров становится в 4 раза больше.</p>

<p>К слову, идея &laquo;бесплатных&raquo; раздач, на которых учитывается только отдача, тоже реализована на многих трекерах. Вот только &laquo;бесплатными&raquo; почему-то становятся раздачи, выбранные по принципу &laquo;от фонаря&raquo;. А всего-то навсего, стоит делать бесплатными те раздачи, где очень много сидеров. У них ведь сидеров всё равно много! (duh)</p>

<p>Таким образом, мы ещё больше мотивировали сидеров оставаться на тех раздачах, где очень много качающих, а личеров не стали слишком наказывать за скачивание контента, на котором трудно поднять рейтинг. И все счастливы, кроме группы <strike>в полосатых купальниках</strike> пользователей ADSL, которые всегда ругаются на p2p. Но так уж получается, что их участие отражается негативно на любой p2p-сети, и рейтинг тут совсем не при чём.</p>

<p>В прочем, остаётся ещё проблема с тем, как именно ведётся учёт рейтинга трекерами, но это уже совсем другая история :)</p>
]]></content:encoded>
			<wfw:commentRss>http://lxj.endofinternet.net/column/torrent-game/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Gentoo Linux: EAPI 2</title>
		<link>http://lxj.endofinternet.net/column/gentoo-linux-eapi-2/</link>
		<comments>http://lxj.endofinternet.net/column/gentoo-linux-eapi-2/#comments</comments>
		<pubDate>Wed, 01 Oct 2008 16:45:39 +0000</pubDate>
		<dc:creator>LXj</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://lxj.endofinternet.net/column/?p=10</guid>
		<description><![CDATA[25 сентября произошёл один из важнейших за последние годы прорывов в развитии Gentoo: принят новый EAPI. Что это значит? Если коротко, то это означает обновление формата ебилдов, и, соответственно, добавление новых возможностей в менеджер пакетов. Последние несколько лет Portage стагнировал, но развитие альтернативного менеджера пакетов Paludis, а также энтузиазм разработчиков Exherbo подтолкнул разработчиков Gentoo предпринимать [...]]]></description>
			<content:encoded><![CDATA[<p>25 сентября произошёл один из важнейших за последние годы прорывов в развитии Gentoo: принят новый EAPI. Что это значит? Если коротко, то это означает обновление формата ебилдов, и, соответственно, добавление новых возможностей в менеджер пакетов. Последние несколько лет Portage стагнировал, но развитие альтернативного менеджера пакетов Paludis, а также энтузиазм разработчиков Exherbo подтолкнул разработчиков Gentoo предпринимать шаги по развитию своего основного пакетного менеджера.</p>

<p>Итак, что такое EAPI? <a href="http://gentoo-wiki.com/EAPI">EAPI</a> — это стандарт пакетного менеджера Gentoo, или же с другой стороны — стандарт написания ebuild&#8217;ов. В то время, как существовал всего один пакетный менеджер, необходимости в таком стандарте не было. Но когда одновременное существование Portage, Paludis, pkgcore, да ещё и Entropy игнорировать стало невозможно, да к тому же развитие некоторых из них обогнало Portage, то текущий статус-кво на тот момент был зафиксирован в виде стандарта, который назвали EAPI 0, и начали работать над его новыми версиями</p>

<p>EAPI 1 имеет <a href="http://gentoo-wiki.com/EAPI#EAPI_1">немного отличий</a> от EAPI 0. На пример, именно после реализации поддержки EAPI 1 стало возможным писать <code>emerge kde-meta:3</code> или <code>emerge kde-meta:4</code>.</p>

<p>Весной появился новый EAPI, поддержка которого была реализована только в Paludis. Собственно, в этом EAPI были зафиксированы некоторые дополнительные возможности, которые уже были реализованные в Paludis, и которые хотели использовать разработчики оверлея genkdesvn. В упомянутом оверлее этот EAPI, получивший название <a href="http://www.gentoo.org/proj/en/desktop/kde/kdebuild-1.xml">kdebuild-1</a>, и используется (с EAPI 2 он несовместим).</p>

<p>С появлением проекта <a href="http://exherbo.org/">Exherbo</a> появился и новый EAPI под названием exheres-0. Это — рабочая версия EAPI Exherbo. Когда разработчики Exherbo примут решение, что этот EAPI их устраивает, то он будет зафиксирован в виде exheres-1, а exheres-0 так и останется постоянно изменяемым EAPI. Следующие &laquo;стабильные&raquo; EAPI будут называться exheres-2, exheres-3 и т.д. Фиксирование exheres-1 планируется сделать перед самым выходом первой публичной версии дистрибутива. Единственным пакетным менеджером, который используется в Exherbo является Paludis. Подробнее об exheres можно почитать <a href="http://exherbo.org/exheres-0.html">здесь</a></p>

<p>Наконец, наш сегодняшний герой дня EAPI 2 был официально принят на заседании Gentoo Council 25 сентября, о чём объявлено в <a href="http://www.gentoo.org/news/en/gmn/20080930-newsletter.xml">недавнем GMN</a>, и некоторые оверлеи уже <a href="http://ben.liveforge.org/berkano-eapi-2-mpd">начали переходить</a> на его использование. Paludis в полной мере поддерживает EAPI 2 с версии 0.30.1, а Portage — с версии 2.2_rc11. Поскольку ветка Portage 2.2 всё ещё является нестабильной, официальное дерево портежей по-прежнему является царством EAPI 1.</p>

<p>Итак, что же интересного <a href="http://ciaranm.wordpress.com/2008/09/28/whats-in-eapi-2/">подготовил нам EAPI 2</a>? Собственно, изменения я пересказываю по серии записей в блоге разработчика Paludis&#8217;а, отсюда и внимание к взаимному влиянию EAPI друг на друга.</p>

<p>Пожалуй, самой долго ожидаемой фичей являются USE-зависимости. <a href="http://bugs.gentoo.org/2272">Очень долго</a> ожидаемой.</p>

<p>До сегодняшнего дня если для компиляции одного пакета требовалось, чтобы другой пакет был установлен с определённым набором флагов, то это условие проверялось только перед самой компиляцией. То есть узнать о необходимости переустановить некоторый пакет вы могли  не сразу после просчёта зависимостей, а через только часик-другой, когда Portage вылетит с ошибкой на 38-м пакете из 163. А если на 32-м пакете вы ушли спать, то утро будет омрачено. При чём вы не застрахованы от того, что подобная ошибка повторится ещё и на 65-м, 74-м, 109-м и 133-м пакетах. Неудивительно, что команда genkdesvn первой плюнула и отказалась от пакетного менеджера без USE-зависимостей перед тем, как сделать доступными разделённые ебилды для KDE 4: пакетов там много, и USE-зависимости играют важную роль.</p>

<p>USE-зависимости были включены и в kdebuild-1, и в exheres-0, но синтаксис их указания в EAPI 2 <a href="http://ciaranm.wordpress.com/2008/09/28/eapi-2-use-dependencies/">отличается</a>:</p>

<dl>
<dt><code>[opt]</code></dt>
<dd>Флаг должен быть включён</dd>
<dt><code>[opt=]</code></dt>
<dd>Если флаг включён у устанавливаемого пакета, то он же должен быть включён у пакета, установленого по зависимости, выключен в противном случае</dd>
<dt><code>[!opt=]</code></dt>
<dd>Если флаг включён у устанавливаемого пакета, то он должен быть выключен у пакета, установленого по зависимости, включен в противном случае</dd>
<dt><code>[opt?]</code></dt>
<dd>Если флаг включён у устанавливаемого пакета, то он же должен быть включён у пакета, установленого по зависимости</dd>
<dt><code>[!opt?]</code></dt>
<dd>Если флаг включён у устанавливаемого пакета, то он должен быть выключён у пакета, установленого по зависимости</dd>
<dt><code>[-opt]</code></dt>
<dd>Флаг должен быть выключен</dd>
</dl>

<p>Примеры указания USE-зависимостей:</p>

<pre><code>foo/bar[!baz]
foo/bar[baz,monkey?]
foo/bar:1[baz]
&gt;=foo/bar-2.1:2[baz]
</code></pre>

<p>Важно: пакетный менеджер не должен предлагать «автомагически» переустанавливать пакет foo/bar с нужным набором USE-флагов. Вы сами должны решить, хотите ли вы изменить конфигурацию этого пакета в <code>make.conf</code> или <code>/etc/portage/package.use</code> (или <code>use.conf</code> в случае Paludis&#8217;а).</p>

<p>Следующим пунктом нашей программы являются так называемые SRC_URI Arrows. По сути это возможность обойти некорректные названия тарболлов с исходниками. Если upstream-автор некоторого пакета не включает в название файла с тарболлом уникальное название пакета и номер версии, то при загрузке архива из сети может возникнуть конфликт из-за того, что distfiles является «плоским» каталогом, и название загружаемого файла может совпадать с названием какого-либо файла, уже присутствующего в этом каталоге. Чтобы это обойти, вы можете указать в ебилде, как необходимо переименовать загружаемый файл. Примерно так:</p>

<pre><code>SRC_URI="http://example.com/dir/1.23/stupid.tar.bz2 -&gt; stupid-1.23.tar.bz2"
</code></pre>

<p>Или даже так:</p>

<pre><code>SRC_URI="http://example.com/dir/${PV}/${PN}.tar.bz2 -&gt; ${P}.tar.bz2"
</code></pre>

<p>Интересный момент: на сайте разработчика архив будет лежать под именем <code>stupid.tar.bz2</code>, а на distfiles.gentoo.org — под именем <code>stupid-1.23.tar.bz2</code>, и у Portage даже не слетит крыша по этому поводу :) Между делом решается и проблема загрузки архивов из gitweb, который имеет привычку дописывать <code>;sf=tbz2</code> или <code>;sf=tgz</code> в конце ссылок. Эта возможность с самого начала входила и в kdebuild-1, и в exheres-0.</p>

<p>Ещё одним нововведением являются !!-блокировки. Их появление связано с тем, что в последнее время в Portage пытаются реализовать некоторое автоматическое разрешение блокировок, когда блокирующий пакет удаляется из системы после этапа компиляции. В некоторых случаях это ведёт к неприятным последствиям, поэтому и ввели дополнительный синтаксис для «да, я действительно это имею в виду»-блокировки.</p>

<p>Таким образом:
- при !-блокировке Portage может попытаться автоматически удалить блокирующий пакет;
- при !!-блокировке Portage отправит вас самостоятельно разбираться с конфликтующими сторонами, то есть пакетами.</p>

<p>В Exherbo используется более развитая система, в которой разработчик ебилда может указать различные варианты поведения при блокировках. При этом пользователю даётся чёткое описание всех действий, которые будет выполнять менеджер пакетов, и даже даётся ссылка на веб-страницу с объяснением природы конфликта между данными конкретными пакетами.</p>

<p>Следующий ряд изменений немного упрощает написание ебилдов: фаза <code>src_unpack</code> разделяется на <code>src_unpack</code> и <code>src_prepare</code>, а фаза <code>src_compile</code> — на <code>src_configure</code> и <code>src_compile</code>. Это даёт возможность более гибко управлять процессом сборки, и при этом более полно использовать дефолтные реализации фаз (до этого во многих случаях автору ебилда приходилось копи-пастить половину дефолтной реализации, чтобы внести необходимые изменения).</p>

<p>Фаза <code>src_prepare</code> вызывается после <code>src_unpack</code>, и её следует использовать для применения патчей. Таким образом, больше нет необходимости копи-пастить дефолтное определение <code>src_unpack</code> ради необходимости наложить определённые патчи.</p>

<p>Фаза <code>src_configure</code> вызывается перед <code>src_compile</code>. Кроме того, в EAPI 2 <a href="http://ciaranm.wordpress.com/2008/09/30/eapi-2-src_configure-and-src_compile/">изменена</a> дефолтная реализация <code>src_compile</code>.</p>

<p>И к слову о копи-пасте — были также добавлены функции <code>default_&lt;название фазы&gt;</code> для каждой фазы, а кроме того теперь можно в любой фазе вызвать функцию <code>default</code>.</p>

<p>Этот блок изменений пришёл в EAPI 2 прямиком из exheres-0 (за исключением некоторых деталей реализации). Для kdebuild-1 подобные нововведения рассматривались, но не были добавлены, поскольку их эффективному использованию мешала необходимость адаптировать eclass&#8217;ы, а оверлей должен был использовать eclass&#8217;ы из официального дерева.</p>

<p>И последней в этом списке является более корректная поддержка локалей директивой <code>doman</code>, в которой определяются man-страницы, предоставляемые пакетом. Portage далее сам разбирается, что с ними делать. Теперь достаточно указать что-то вроде</p>

<pre><code>doman foo.1 foo.en.1 foo.en_GB.1 foo.es.1 foo.fr.1
</code></pre>

<p>&#8230;и соответствующие установленным в системе локалям man-страницы будут установлены «автомагически».</p>

<p>Данное изменение первыми реализовали разработчики Gentoo (см. <a href="http://bugs.gentoo.org/show_bug.cgi?id=222439">соответствующий запрос в Багзилле</a>), а разработчики Exherbo не преминули его позаимствовать.</p>

<p>Добавка: ещё одно нововведение в Portage 2.2 — наборы. См. мой обзор <a href="http://lxj.endofinternet.net/kde/2008/10/gentoo-and-exherbo/">здесь</a></p>
]]></content:encoded>
			<wfw:commentRss>http://lxj.endofinternet.net/column/gentoo-linux-eapi-2/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Кому нужен Google Chrome?</title>
		<link>http://lxj.endofinternet.net/column/who-needs-chrome/</link>
		<comments>http://lxj.endofinternet.net/column/who-needs-chrome/#comments</comments>
		<pubDate>Fri, 19 Sep 2008 22:39:49 +0000</pubDate>
		<dc:creator>LXj</dc:creator>
				<category><![CDATA[Браузеры]]></category>

		<guid isPermaLink="false">http://lxj.endofinternet.net/column/who-needs-chrome/</guid>
		<description><![CDATA[Давайте сразу же вспомним один факт, который написан на каждом заборе, но забывается половиной обозревателей Хрома: Google делала браузер специально заточенный на веб-приложения. Вы являетесь активным пользователем веб-приложений? Бывает ли у вас так, что у вас открыто одновременно три-четыре сайта с «тяжёлыми» скриптами и Java-апплетами, а из десктопных приложений запущен только браузер? Нет? Проходите, следующий.

Хром [...]]]></description>
			<content:encoded><![CDATA[<p>Давайте сразу же вспомним один факт, который написан на каждом заборе, но забывается половиной обозревателей Хрома: Google делала браузер <em>специально</em> заточенный на веб-приложения. Вы являетесь активным пользователем веб-приложений? Бывает ли у вас так, что у вас открыто одновременно три-четыре сайта с «тяжёлыми» скриптами и Java-апплетами, а из десктопных приложений запущен только браузер? Нет? Проходите, следующий.</p>

<p>Хром — это браузер для веб-приложений, которым также можно и сёрфить остальной веб. Именно так надо ставить акценты. Именно с такой точки зрения были подобраны основные фичи, без которых Google не видела смысла выпускать бета-версию.</p>

<p>Самое смешное &#8212; это как потребление Хромом памяти сравнивают с Огнелисом. «Я открываю N вкладок в Огнелисе, и он занимает 100 мегабайт памяти. Я открываю такие же вкладки в Хроме, и он занимает 110 мегабайт памяти. Хм! Google нас обманывает!».  Представьте себе, модель «каждой вкладке по процессу» действительно увеличивает накладные расходы. Но идея была не в том, чтобы использовать меньше памяти, а в том, что <em>уменьшить её фрагментирование</em>. Поработайте с Файрфоксом и, не перезапуская его несколько суток, и после этого сравните его потребление памяти с Хромом ещё раз!</p>

<p>И да, у меня не самый быстрый компьютер, и различия в скорости ренденрига JavaScript-движка я вижу сразу. И я замечаю, что вообще-то Опера работает быстрее, но на Google Reader комфортнее пользоваться Огнелисом. Хотя есть AJAX-сайты, где Опера как раз шустрее. Но Google Chrome явно быстрее обоих. Хотя есть ещё один забавный факт: на Linux у меня браузеры работают чуть-чуть медленнее, хоть и вполне терпимо. Особенно отличается линуксовая Опера, когда ей приходится иметь дело с флешем и Java.</p>

<p>Разделение процессов отдельных вкладок действительно помогает. У кого-то, говорят, Хром всё время сыпался весь. Не знаю, у меня один раз подвисла одна вкладка. И я, естественно, прибил её из диспетчера задач Хрома. Я также имел удовольствие наблюдать. как в Огнелисе запускается тяжёленький Java-апплет. Огнелис, ясное дело, посылал меня на это время перекурить. В Хроме я спокойно браузил в других вкладках, ничего не замечая.</p>

<p>Открыв несколько тяжёлых веб-сайтов в Хроме, я могу не замечать, как нагружен мой процессор (просмотр страничек всё равно происходит без подтормаживания), пока не открою какой-нибудь видеоролик. Если бы я те же сайты открывал в другом браузере, тормозить начинало бы всё.</p>

<p>Тут недавно Сергей Петренко <a href="http://www.searchengines.ru/blog/archives/009460.html">нашёл</a> на лайфхакере статью о том, <a href="http://lifehacker.com/5044518/enable-chromes-best-features-in-firefox">как добавить лучшие фичи Хрома в Файрфокс</a>. На самом деле, конечно, переделать архитектуру Файрфокса с помощью расширений никак не получится (а в этом &#8212; одна из главных особенностей Хрома), а новый JavaScript-движок, конечно, появится в 3.1, но когда это будет &#8212; ещё неизвестно (альфа-версии не предлагать). Так что то, что выдаётся в этой статье за &laquo;лучшие фичи&raquo; вызывает смех.</p>

<p>Режим инкогнито? Если вам так интересно &#8212; да, я смотрю порно. Всё, режим инкогнито для меня потерял смысл, вы уже всё знаете. Отображение загрузок на статусбаре? Give me a break, мне по большому счёту пофигу, как там браузер отображает загрузки. Быстрый набор? Ну ребята, это было в Опере сто лет назад, а отсутвие необходимости выбирать эти девять сайтов вручную как раз и оказалось на удивление удобной модификацией (кстати, возможность перетаскивать табы между окнами браузера тоже есть в Опере, но этого многие не знают).</p>

<p>Подсвечивание домена в адресной строке. Мда. Есть чуть ли не десяток причин, по которым адресная строка Хрома &#8212; это одна из лучших его инноваций. А они там говорят о подсвечивании домена. Из той же серии &#8212; что автоматическое запоминание поисковиков не является таким уж большим нововведением. Ну нет, это действительно удобное нововведение, что мне не нужно для всех своих поисковиков делать лишние клики (хотя возможности Оперы создавать поисковик из любого текстового поля, конечно, не хватает), и совершенно не обязательно прописывать шорткаты.</p>

<p>Так что единственный пункт, который в этом списке к месту &#8212; это упоминание Prism.</p>

<p>Файрфокс и Опера за время своего судествования обросли кучей полезных фич, многие из которых наверняка со временем появятся и в Хроме. Но даже те особенности, что уже реализованны, позволяют новому браузеру выделяться в своей нише. Насколько эти особенности важны каждому конкретному пользователю &#8212; это уже его дело.</p>
]]></content:encoded>
			<wfw:commentRss>http://lxj.endofinternet.net/column/who-needs-chrome/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Использование Gentoo KDE SVN Overlay</title>
		<link>http://lxj.endofinternet.net/column/using-genkdesvn/</link>
		<comments>http://lxj.endofinternet.net/column/using-genkdesvn/#comments</comments>
		<pubDate>Sat, 08 Mar 2008 13:02:09 +0000</pubDate>
		<dc:creator>LXj</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://lxj.endofinternet.net/column/using-genkdesvn/</guid>
		<description><![CDATA[Gentoo KDE SVN Overlay был запущен больше года назад, когда в KDE4 для пользователя ещё практически ничего интересного и не было. Всё это время создатели оверлея вели замечательную работу по его поддержке, и в конце концов к выходу KDE4 официально присоединились к команде разработчиков Gentoo. При использовании этого оверлея вы с одной стороны всегда можете [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://genkdesvn.mailstation.de/">Gentoo KDE SVN Overlay</a> был запущен больше года назад, когда в KDE4 для пользователя ещё практически ничего интересного и не было. Всё это время создатели оверлея вели замечательную работу по его поддержке, и в конце концов к выходу KDE4 официально присоединились к команде разработчиков Gentoo. При использовании этого оверлея вы с одной стороны всегда можете получить все самые последние изменения, а с другой — вам не надо ничего компилировать и устанавливать вручную. Вы просто используете ваш пакетный менеджер, как ни в чём не бывало, и у вас не возникнет проблем с отслеживанием зависимостей или удалением пакетов. Устанавливать что-либо в обход менеджера пакетов — это плохо. А когда дело касается такой большой части системы, как KDE — то это ужасно.</p>

<h2>Подготовка</h2>

<p>В первую очередь, конечно же, необходимо подключить сам оверлей. Для этого удобнее всего использовать layman: если вы прочитали документацию по оверлеям и корректно установили layman, то вам достаточно набрать <code>layman -a kde</code>, и оверлей подключен.</p>

<p>После этого вы также наверняка захотите добавить строчку <code>PORTAGE_ECLASS_WARNING_ENABLE="0"</code> в make.conf, иначе Portage будет постоянно ругаться о переопределённом eclass&#8217;е.</p>

<p>Также советую установить в переменной ESCM_LOGDIR путь к каталогу, в котором будут сохраняться короткие лог-файлы, из которых вы потом сможете узнать, какая ревизия какого пакета у вас установлена. Логично будет, если это будет один из подкаталогов в <code>/var/log/portage</code>.</p>

<p>Следующий шаг: размаскирование пакетов и установка USE-флагов. Я всегда рекомендую а) не искользовать ~arch в make.conf и б) использовать каталоги в /etc/portage.</p>

<p>Чтобы разкейвордить нужные пакеты, достаточно выполнить команду</p>

<p><code>cp /usr/portage/local/layman/kde/Documentation/package.keywords.example.live /etc/portage/package.keywords/kde-svn</code></p>

<p>(ещё раз обращаю внимание: я предполагаю, что ваш /etc/portage/package.keywords — это <strong>каталог</strong>)</p>

<p>В прочем, это утверждение несколько оптимистично, пару-тройку пакетов вам в этот список ещё придётся добавить. Лично я добавил следующие строчки:</p>

<pre><code>kde-base/qimageblitz **
media-sound/moodbar
=app-crypt/qca-1.0-r3
</code></pre>

<p>Также вам придётся размаскировать qca:2. Скопируйте эти строчки в файл /etc/portage/package.unmask/kde-svn:</p>

<pre><code>app-crypt/qca:2
app-crypt/qca-cyrus:2
app-crypt/qca-gnupg:2
app-crypt/qca-logger:2
app-crypt/qca-ossl:2
app-crypt/qca-pkcs11:2
</code></pre>

<p>(любопытствующие могут почитать обсуждение <a href="http://bugs.gentoo.org/show_bug.cgi?id=129536">Gentoo Bug 129536</a> &laquo;app-crypt/qca slotting and bumping&raquo;)</p>

<p>Далее необходимо установить правильные USE-флаги согласно указаниям в файле <code>/usr/portage/local/layman/kde/DONOTREADME</code> (список начинается после строчки <em>KDE 4 SVN ebuilds use flags</em>).</p>

<p>На самом деле флаг debug не является обязательным, но если вы собираетесь репортить баги на KDE Bugzilla, то лучше его всё-таки включить. Кстати, этот список не полон, у меня установка несколько раз прерывалась с сообщениями вроде:</p>

<blockquote>
  <p>This package requires &#8216;x11-libs/qt:4&#8242; to be built with the following USE flags: &#8216;accessibility* dbus gif jpeg opengl png qt3support ssl zlib&#8217;</p>
  
  <p>This package requires &#8216;net-dns/avahi&#8217; to be built with the following USE flags: &#8216;mdnsresponder-compat</p>
  
  <p>This package requires &#8216;media-libs/xine-lib&#8217; to be built with the following USE flags: &#8216;xcb&#8217;</p>
</blockquote>

<p>Так что обновляйте make.conf и/или package.keywords соответственно.</p>

<p>Ещё один совет: используйте опцию <code>--buildpkg</code>. Изменения в SVN вносятся постоянно, и не все могут вам понравиться, так что иногда вы захотите иметь возможность откатиться на более старую версию, а с бинарными пакетами это сделать проще и быстрее всего. Естественно, это значит, что при каждой установке нужно сохранять пакеты в отдельном каталоге (для этого достаточно переопределить переменную PKGDIR). Можно использовать вот этот скрипт (назовём его emerge-live):</p>

<pre><code>#/bin/bash
DATE=`date +"%m%d"`
export PKGDIR="/root/packages/$DATE"
mkdir -p $PKGDIR
emerge --buildpkg $*
</code></pre>

<p>Сохраните его где-нибудь в <code>$PATH</code>.</p>

<p>Теперь можно и запустить <code>emerge-live kde</code>, и надеяться на успех. У меня первая попытка довольно быстро кончилась неудачей, ибо в тот день кто-то из разработчиков напортачил с конфигурационными файлами CMake, и ни у кого, кто обновился в этот день, kdelibs не компилировались. Такова уж природа SVN-пакетов. На следующий день ошибка была исправлена, и я всё-таки начал ставить нужные пакеты (на самом деле эту проблему можно обойти, устанавливая не самую последнюю последнюю ревизию SVN-пакета, как объяснено ниже)</p>

<h2>Использование</h2>

<p>Официально рекомендуется для тестирования KDE4 создать отдельного пользователя. Но поскольку многие уже не только тестируют KDE, но и окончательно на него перешли, многие этому совету не следуют.</p>

<p>Конфигурация KDE и всех входящих в него программ хранится в каталоге <code>~/.kde</code>. Точнее, <code>~/.kde</code> — это симлинк на <code>~/.kde3.5</code>, <code>~/.kde4</code> или <code>~/.kdesvn</code>, который создаётся при запуске оболочки. Возможно, вы захотите скопировать каталог <code>~/.kde3.5</code> в каталог <code>~/.kdesvn</code> — официально это не рекомендуется, но я ещё не слышал, чтобы у кого-то что-то сломалось из-за этого. В любом случае: никогда не пытайтесь одновременно запустить оболочки KDE 3.5 и KDE4, и никогда не допускайте того, чтобы KDE4-программы пытались изменить настройки в <code>~/.kde3.5</code>.</p>

<p>В остальном всё как обычно, после установки вы сможете запускать сессию KDE 3.5 или KDESVN. Для запуска KDE4-программ из KDE 3.5 вы можете воспользоваться <a href="http://lxj.endofinternet.net/kde/2008/01/launching-kde4-apps-on-kde3/">этим советом</a></p>

<h2>Обновление</h2>

<p>Изменения в SVN вносятся постоянно, однако, с точки зрения пакетного менеджера версия пакета остаётся прежней. Поэтому обновлением SVN-пакетов необходимо управлять отдельно. Я использую для этого <a href="http://forums.gentoo.org/viewtopic.php?p=4855706">скрипт updatesvn</a>. По ссылке вы найдёте два файла: <code>updatesvn</code> необходимо положить куда-нибудь в <code>$PATH</code>, а <code>updatesvn.conf</code> в <code>/etc/updatesvn/</code>. Откройте <code>updatesvn.conf</code> и в переменной <code>EMCMD</code> пропишите emerge-live. Теперь чтобы обновить все «живые» пакеты, в которых произошли изменения со времени последней установки, запустите <code>updatesvn all</code> (на самом деле поддерживаются также пакеты, обновляемые по git, cvs и т. д.).</p>

<p>В updatesvn.conf можно также определить наборы приложений: на пример, в переменную <code>KDE</code> занести список всех KDE-пакетов, тогда <code>updatesvn KDE</code> обновит не все пакеты, а только указанный набор. Я для себя определил этот список вот так:</p>

<pre><code>KDE="kdelibs kdepimlibs kdegames kdegraphics \
    kdebase kdeartwork kdepim kdetoys kdenetwork kdeedu kdeadmin  \
    kdeutils kdemultimedia amarok"
</code></pre>

<p>Обратите внимание: если вы удалили какое-либо приложение, то вам также необходимо удалить соответствующий каталог в <code>/usr/portage/distfiles/svn-src</code> (или <code>git-src</code>, <code>cvs-src</code>), иначе <code>updatesvn all</code> будет пытаться установить его опять.</p>

<h2>Установка необходимой ревизии</h2>

<p>Если вы не хотите устанавливать текущую сборку, но точно знаете, какая ревизия вам нужна, то перед запуском emerge установите в значении переменной окружения ESVN_REVISION нужный номер ревизии. Также вы можете задать любое значение переменной ESVN_OFFLINE, если при перекомпилировании пакета не хотите синхронизироватсья с SVN-репозиторием разработчиков.</p>

<h2>Дополнительные оверлеи</h2>

<p>Вот в <a href="http://bandi.homelinux.com/gitweb/?p=kde4-additional.git;a=summary">этом оверлее</a> вы найдёте несколько приложений, которые по различным причинам отсутствуют в genkdesvn. А в <a href="http://forums.gentoo.org/viewtopic-p-4878257.html">этом</a> собрано несколько дополнительных интересных виджетов для Plasma.</p>
]]></content:encoded>
			<wfw:commentRss>http://lxj.endofinternet.net/column/using-genkdesvn/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Что такое дистрибутив</title>
		<link>http://lxj.endofinternet.net/column/what-is-the-distro/</link>
		<comments>http://lxj.endofinternet.net/column/what-is-the-distro/#comments</comments>
		<pubDate>Sat, 19 Jan 2008 17:36:31 +0000</pubDate>
		<dc:creator>LXj</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://lxj.endofinternet.net/column/what-is-the-distro/</guid>
		<description><![CDATA[Современные дистрибутивы Linux — это гораздо больше, чем набор программ, собранный на одном диске, и утилита для их установки. Дистрибутив — это продукт, это множество значимых компонентов, составляющих целостную систему. Часто даже говорят не ОС Linux, а ОС Ubuntu (хотя так говорить, конечно, неправильно).

Даже пакетный менеджер, использующийся в системе, не определяет дистрибутив. С другой стороны, [...]]]></description>
			<content:encoded><![CDATA[<p>Современные дистрибутивы Linux — это гораздо больше, чем набор программ, собранный на одном диске, и утилита для их установки. Дистрибутив — это продукт, это множество значимых компонентов, составляющих целостную систему. Часто даже говорят не ОС Linux, а ОС Ubuntu (хотя так говорить, конечно, неправильно).</p>

<p>Даже пакетный менеджер, использующийся в системе, не определяет дистрибутив. С другой стороны, важный аспект современных значимых дистрибутивов — это&#8230;</p>

<h3>Источник ПО</h3>

<p>Помнится, когда-то я натолкнулся на интересную фразу из <a href=http://qip.ru/ru/faq/qip/7/#206">FAQ</a> по популярному ICQ-клиенту под Windows: <span style="font-style:italic;">При закрытом исходном коде, не появятся лже версии QIP cо зловредным кодом</span>. Действительно, при закрытом исходном коде так трудно заразить QIP вирусом и начать распространять то, что получилось. Зато уж если открыть исходники, то сразу же <span style="font-weight:bold;">обязательно</span> набежит толпа желающих распространять непонятно что под названием QIP. Странно только, почему я ни об одном подобном случае с открытым ПО не слышал? Вообще-то ничего странного в этом как раз нет.</p>

<p>Как мы знаем, Windows-софт в большинстве своём приходит на компьютеры пользователей или с дисков, купленных на углу (вы все верите надписи «100% без вирусов?»), или с какого-нибудь фриварного, а то и варезного сайта. То есть &#8212; откуда угодно. Конечно, иногда его ставят и с лицензионных дисков (или скачивают с официального сайта программы). Но что для Windows-пользователя удобнее &#8212; скачать тот же QIP, Opera, X-Chat и ещё десяток бесплатных (а то и не очень бесплатных) программ в одном месте, или же бегать по десяти сайтам? Поэтому <a href="http://listsoft.ru">листсофты</a> и <a href="http://softlist.ru">софтлисты</a> процветают. А между тем никто не гарантирует, что QIP, скачанный с очередного софтлиста &#8212; это тот самый QIP, который распространяется.</p>

<p>Что же мы видим в Linux? В Linux тоже есть и <a href="http://freshmeat.net/">freshmeat</a>, и парочка менее знаменитых аналогов, только практически никто ими уже давно не пользуется. Все современные дистрибутивы имеют развитые менеджеры пакетов (aptitude, yum, emerge) которые сами скачают нужный пакет из соответствующего дистрибутиву <span style="font-style:italic;">репозитория</span>. Создатели дистрибутива гарантируют, что предоставленные ими копии программ не содержат стороннего кода, соответствуют названию и описанию, и что самое главное &#8212; действительно будут нормально работать в этом дистрибутиве (не то чтобы совсем не бывает казусов, особенно если вы разрешили своему менеджеру пакетов устанавливать более новое, «нестабильное» ПО).</p>

<h3>Патчи</h3>

<p>Надо сказать, не всегда распространяемый в вашем дистрибутиве пакет будет тем же самым пакетом, что и распространямый автором. Даже тот самый Linux From Scratch &#8212; это не только книга о том, как собрать всё операционную систему из исходников, но и набор патчей, без которого получить <span style="font-weight:bold;">систему</span> из разрозненного набора пакетов не получится &#8212; одни просто не скомпилируются, другие не смогут друг с другом нормально взаимодействовать. Майнтейнеры (то есть те, кто отвечает за включение пакета в дистрибутив) тестируют различные пакеты на нормальное функционирование, взаимную совместимость, а также частво добавляют собственные усовершенствования или не успевшие войти в официальную сборку патчи.</p>

<p>Главная задача майнтейнера &#8212; заботиться о пользователе дистрибутива. И если в &laquo;мэйнстримный&raquo; пакет не включено исправление какой-либо ошибки или дырки в безопасности, майнтейнер не ждёт, а выкладывает в свой репозиторий соответствующее исправление. То же касается любого возможного усовершенствования. После этого специфичные для дистрибутива патчи переносятся в другие дистрибутивы, добавляются в основной пакет (или не добавляются, если автор так решит) &#8212; это неотъемлемая часть жизни OpenSource-программ.</p>

<p>Надо сказать, разные разработчики по-разному относятся к этому процессу. Иногда разработчикам не нравятся, что они теряют контроль над тем, что именно распространяется под их именем. На самом деле создатели дистрибутивов заботятся только об удобстве своих пользователей и порой делают работу за самих разработчиков — но иногда сами разработчики не хотят включения какой-нибудь возможности в свою программу. Бывают совсем странные случаи, вроде разработчика оконного менеджера ion3, который <a href="http://forums.gentoo.org/viewtopic-t-559010-start-0-postdays-0-postorder-asc-highlight-.html">выступал</a> против распространения патча для поддержки сглаживания шрифтов; или разработчиков FireFox, которые были <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=282307">против</a> того, чтобы в российском дистрибутиве AltLinux поисковиком по умолчанию был Яндекс.</p>

<p>Иногда такие конфликты заканчиваются тем, что создателям дистрибутивов это всё надоедает, и они начинают распространять те же самые пакеты под другим именем. Так, тот же FireFox теперь так же известен, как IceWeasel, что только путает пользователей. А всё из-за нескольких патчей, без некоторых из которых FireFox даже не мог быть скомпилирован в debian&#8217;овском окружении!</p>

<h3>Продукт</h3>

<p>Чем хорош Ubuntu? На одном CD собран небольшой, необходимый и достаточный набор приложений. От офисного пакета до средств настройки — всё на расстоянии двух кликов сразу после установки. <strong>Минимальный тесно интегрированный набор компонентов.</strong> Кроме того, если другие дистрибутивы включают в себя Gnome с настройками по умолчанию, то в Ubuntu его настроили по-своёму для большего удобства пользователей.  <strong>Уникальный визуальный стиль и продуманная организация рабочего пользовательского интерфейса.</strong></p>

<p>Всё это может сделать любой пользователь Linux в любом дистрибутиве. Но Ubuntu — это уже готовое, протестированное, слаженное решение. Именно это я понимаю под словом «продукт».</p>

<p>От Ubuntu в первую очередь требуется не гибкость и широкие возможности настройки (хотя это в определённой степени тоже есть), а корректная работа тщательно подобранных компонентов. У разработчиков Gentoo задача противоположная — сделать такой конструктор, из которого можно собрать любую комбинацию компонентов с любым, минимальным или максимальным набором фич. Gentoo не навязывает готовых решений, а предлагает пользователю самому потратить кучу времени на поиск подходящей для него комбинации «кубиков».</p>

<p>У обоих подходов есть преимущества и недостатки, и порой неожиданные сторонние эффекты, вроде выхода KDE4 на Kubuntu раньше, чем на Gentoo. (к слову, отношение разработчиков к Kubuntu и Xubuntu далеко не такое, как к Ubuntu). Не откажусь от удовольствия процитировать <a href="http://lxj.endofinternet.net/blog/2008/01/gentoo-and-kde">самого себя</a>:</p>

<blockquote>
  <p>Со стороны может казаться, что поддерживать source-based дистрибутив легко: не надо заниматься сборкой бинарных пакетов, написал сценарий сборки — ebuild — и готово. На практике это означает, что если создателям бинарных дистрибутивов достаточно протестировать одну бинарную сборку, мэинтейнерам Gentoo нужно убедиться в корректной работе и компиляции пакета в любой комбинации USE-флагов, версий и опций компилятора и опциональных зависимостей. Получается, разработчикам Gentoo приходится тратить больше времени на сборку пакетов, чем разработчикам какой-нибудь Ubuntu — при том, что бинарники они не распространяют!</p>
  
  <p>Ко всему прочему, большая часть пакетов той же Ubuntu, как правило, не обновляется между релизами. В Gentoo новые версии добавляются, а старые убираются из дерева ежедневно. И всё это должно друг с другом как-то взаимодействовать, желательно без глюков.</p>
</blockquote>

<p>Дистрибутивы появляются и исчезают каждый день, и иногда может показаться, что во всём этом многообразии разобраться слишком сложно. Но на самом деле, при существовании тысяч дистрибутивов всего лишь несколько остаются значимыми, потому как немногим удаётся поддерживать дистрибутив, который выполняет все необходимые задачи.</p>
]]></content:encoded>
			<wfw:commentRss>http://lxj.endofinternet.net/column/what-is-the-distro/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Нано-PRG</title>
		<link>http://lxj.endofinternet.net/column/nano-rpg/</link>
		<comments>http://lxj.endofinternet.net/column/nano-rpg/#comments</comments>
		<pubDate>Sat, 19 Jan 2008 12:48:34 +0000</pubDate>
		<dc:creator>LXj</dc:creator>
				<category><![CDATA[Геймдизайн]]></category>

		<guid isPermaLink="false">http://lxj.endofinternet.net/column/nano-rpg/</guid>
		<description><![CDATA[Эта работа была подготовлена на конкурс модификаций первого Альфа-Фестиваля, мой первый экперимент в геймдизайне. Основной идеей было добавить конкретные классы к придуманной мной ранее RPG-механике. Хотя работа и называлась Вангеры-RPG, я практически не привязывался к какому-то сеттингу или сценарию. В конце концов из-за этого моя работа и заняла всего лишь третье место. Зато никто не [...]]]></description>
			<content:encoded><![CDATA[<p>Эта работа была подготовлена на <a href="http://alpha-fest.ru/legates_mod.php">конкурс модификаций</a> первого Альфа-Фестиваля, мой первый экперимент в геймдизайне. Основной идеей было добавить конкретные классы к придуманной мной ранее RPG-механике. Хотя работа и называлась Вангеры-RPG, я практически не привязывался к какому-то сеттингу или сценарию. В конце концов из-за этого моя работа и заняла всего лишь третье место. Зато никто не мешает на этой же основе сделать хоть космическую action-RPG (с теми же самыми классами, только все сделать летающими) (по моей задумке это должна быть именно action-RPG от первого лица)</p>

<h3>Общая идея</h3>

<p>В этом сочинении я попытался порассуждать на тему того, что может получиться от реализации двух идей.</p>

<p>Идея первая состоит в том, чтобы взять нанотрансформации из Периметра, и <A href="http://dumponline.blogspot.com/2007/05/rpg.html">превратить их в ролевую систему</A>. Другими словами, мы вводим ограничение: сквад не может состоять из более, чем одного юнита. В зависимости от тактической ситуации этот юнит может трансформироваться в другого юнита, и выбор возможных юнитов, в которые он может трансформироваться зависит от наноботов, входящих в его состав (неиспользуемые по рецепту юнита наноботы просто транспортируются). Лимит наноботов, которые можно собрать в один сквад ограничено, таким образом игрок не может превратить своего героя в любой юнит.</p>

<p>Это напоминает друидов в World of Warcraft. В зависимости от распределения талантов, игроку-друиду доступны различные формы, причем он может переходить из одной формы в другую во время боя. Идея &#8212; все играют только друидами, но количество различных форм делаем б<em>о</em>льшим.</p>

<p>По ходу прокачки на каждом уровне игрок может прикупить ещё одного нанобота (или талант), других возможностей развивать персонажа не предусматривается</p>

<p>Идея вторая состоит в том, чтобы взять Вангеров и превратить их в &laquo;Vendetta Online в спанже&raquo;. <A href="http://vendetta-online.com">Vendetta Online</A> &#8212; космическая MMORPG, главным отличием которой является ориентированность на PvP. У неё есть множество отличий от наиболее известных игр жанра, которые пригодились бы при превращении Вангеров в (MMO)RPG:</p>

<ul> <li>&laquo;twitch-based combat&raquo; вместо привычного &laquo;point-and-click&raquo;. Если в WoW или EVE используется вид от третьего лица, а для прицеливания достаточно кликнуть по врагу (как это делается в играх вроде Diablo), то в VO управление осуществляется так же, как в FPS или космических симуляторах. И если в WoW шанс &laquo;увернуться&raquo; зависит от уровня игроков и используемого ими оружия/брони, то в VO от любого оружия можно увернуться за счет управления своим кораблём (а в нашей гипотетической игре &#8212; своим мехосом). Никакого бросания кубиков!</li>
 <li>сбалансированность вооружения. Исход поединка в дуэли в первую очередь зависит не от &laquo;уровня&raquo; игроков, а от их личных навыков (это конечно, не касается ситуации, когда у одного из игроков &laquo;нулевой&raquo; уровень)</li>
 <li>игра ориентирована не на долгое развитие персонажа и PvE, а на постоянное PvP. Полностью безопасных зон нет, если только игрок не находится внутри станции (или эскейва). Снаряжение, с которым можно успешно побеждать других игроков в сражениях, становится доступно через несколько часов игры, далее он получает не более сильное вооружение, а скорее более разнообразный арсенал</li></ul>

<p>Что мы получаем? Получаем (MMO)RPG или даже FPS с элементами RPG, в которой я попытался объединить необычную ролевую систему, нанотрансформации, интересный PvP и, конечно же, Психосферную вселенную (хотя последнее уже не по моей части)</p>

<h3>Определение ролей</h3>

<p>Вариативность развития персонажа даёт возможность каждому игроку реализовать свой стиль игры, а также выполнять свою роль в группе. Возможно, игрок предпочтёт роль &laquo;саппортера&raquo; &#8212; ремонтировать мехосы союзников; переносить грузы под прикрытием других игроков или использовать другие специальные способности (генерировать периметр, поле невидимости, вызывать скверну и т. п.)</p>

<p>Если же игрок предпочитает участвовать в сражениях напрямую, то ему необходимо выбрать тактику ведения боя. Захочет ли он использовать тяжёлый бомбардировщик или легкий истребитель? Предпочтёт ли он самонаводящиеся ракеты или рэилган?</p>

<p>Я попытался составить примерный список мехосов и подобрать рецепты таким образом, чтобы при различных способах комбинации наноботов игрок мог оперативно выбирать из различного набора тактик. Задача эта оказалась не такой уж простой, поэтому я ограничился только боевыми мехосами без специальных возможностей, имея цель сбалансировать их  для дуэлей. Таким образом, чтобы упростить себе задачу, я характеризовал мехосы только четырьмя признаками:</p>

<ol>
<LI><strong>Состав вооружения</strong>: разные мехосы могут иметь одно или несколько видов вооружения на борту &#8212; ракеты простые и самонаводящиеся, пулеметы, лазерное вооружение различного вида (скорострельные, как у егеря или же снайперские рэйлганы)
<ul><LI>обычные ракеты взрываются на небольшом расстоянии от цели, наиболее опасны на средних дистанциях против не очень быстрых целей. Не могут активироваться сразу после выстрела, а потому бесполезны на близкой дистанции</LI> 
<LI>самонаводящиеся ракеты взрываются при контакте, в большинстве случаев опытный игрок должен уворачиваться от них, за исключением тех случаев, когда обстрел производится на маленькой дистанции, цель малоподвижна или игрок был пойман врасплох</LI>
<li>пулеметы наиболее эффективны на малом расстоянии из-за разброса пуль</li>
<li>обычные лазеры (как у периметровских егерей) эффективны на близких и средних дистанциях, </li>
<li>&laquo;снайперский&raquo; лазер или рэйлган в противоположность самонаводящимся ракетам требуют хорошей меткости от стреляющего, но и жертве от них увернуться очень сложно</li>
</ul>
На самом деле вместо лазеров возможно стоит использовать &laquo;плазменное&raquo; или &laquo;нейтронное&raquo; оружие &#8212; то есть такое, у которого скорость снарядов гораздо меньше скорости света, что даст возможность чаще уворачиваться от выстрелов. 
</LI>
<li><strong>Наземный или воздушный</strong>: по всей видимости, на летающих мехосах невозможно установить большое количество тяжелого вооружения, его преимущество в маневренности (зато наземные меньше рискуют врезаться в землю)</li>
<li><strong>Количество брони</strong>: медленные мехосы компесируют свою уязвимость большим количеством брони</li>
<li><strong>Скорость передвижения</strong></li>
</ol>

<p>Также у каждого мехоса должен быть источник и аккумулятор энергии, генерируемая энергия тратится на выстрелы и нанотрасформации, но этот фактор я здесь не рассматриваю. Предполагается, что пулеметы и обычные лазеры потребляют энергию не очень быстро, зато другие виды вооружения расходуют весь её запас за несколько выстрелов.</p>

<h3>Мехосы</h3>

<p>Итак, я составил список из 9 мехосов &#8212; в настоящей игре их, конечно, будет больше, и они будут более разнообразны. Как и в Периметре, используется 3 вида нанороботов, при этом я предпологал, что игрок может приобрести максимум 16 нанороботов. Чтобы удобнее видеть, какие комбинации мехосов доступны при том или другом варианте распределения этих нанороботов, я разбил мехосы на 3 группы</p>

<p>Первая группа: мехосы с простым рецептом (5 ботов одного вида) с одним видом оружия. Эти мехосы имеют свои тактические преимущества и недостатки, но в большинстве ситуаций не дают решающего преимущества. Если игрок должен добывать дополнительные наноботы по ходу игры, то начинает он с 5 наноботов и ему в начале доступен один из этих мехосов</p>

<p><strong>Егерь</strong> (рецепт 5/0/0) &#8212;  вооружён лазерами, летает, средняя манёвренность, слабая броня<br />
<strong>Вайпер</strong> (0/5/0) &#8212; вооружен пулемётом, летает, быстрый, слабая броня<br />
<strong>Залп-проектор</strong> (0/0/5) &#8212; вооружён обычными ракетами, наземный, средняя манёвренность, средняя броня<br /></p>

<p>Вторая группа: мехосы с рецептом вида 6+4, более универсальные за счёт комбинирования двух видов вооружения (по отдельности оружие одного вида более слабое, чем оружие такого же вида у мехосов из первой или третьей группы &#8212; к примеру, можно условно считать, что у егеря 2 лазерные пушки, а у осы одна лазерная и пулемёт)
<strong>Оса</strong> (4/6/0) &#8212; вооружён пулемётом и лазерами, летает несколько медленнее, чем вайпер, слабая броня<br />
<strong>Валькирия</strong> (0/4/6) &#8212; вооружён лазером и ракетами, летает несколько медленнее, чем егерь, средняя броня<br /> 
<strong>Скорпион</strong> (6/0/4) &#8212; вооружён обычными ракетами и рэйлганом, наземный, средняя манёвренность и броня<br /></p>

<p>Третья группа: мехосы со сложным рецептом (10+4+2), имеющие в определённой ситуации или большое преимущество (за счёт наличия наиболее сильного вооружения определённого вида) или большой недостаток. Игрок, решившийся на использование одного из этих мехосов, довольно сильно ограничивает себя в возможности использовать разные виды вооружения</p>

<p><strong>Гиперболоид Гарина</strong> (10/2/4) &#8212; вооружён рэйлганом, наземный, средняя скорость, средняя броня<br />
<strong>Фиолентовый Дорминатор</strong> (4/10/2) &#8212; вооружён ракетами, скорость ниже средней, средняя броня<br />
<strong>Последний Могиканин</strong> (2/4/10) &#8212; вооружён самонаводящимися ракетами, наземный, медленный, сильно бронирован<br /></p>

<p>При таком наборе мехосов игрок может распределить наноботы так, чтобы иметь выбор из 
а) трёх мехосов из первой группы и одного из второй;<br />
б) двух мехосов из первой группы и двух из второй;<br />
в) по одному мехосу из всех групп. <br /></p>

<p>При этом с одной стороны игроку доступен всегда только один вид &laquo;супероружия&raquo;, с другой стороны при выборе узкоспециализированного развития он ограничивает доступность определённых тактик (имея возможность использовать сильный рэйлган, что даёт преимущество на дальних дистанциях, он уже не может получить доступ к пулемёту, наиболее эффективному в ближнем бою)</p>

<h3>Развитие</h3>

<p>Набор из 9 боевых мехосов можно дополнить, разнообразив возможные комбинации вооружения. Кроме того можно добавить мехосы со специальными возможностями, не имеющими отношения к бою в дуэли. Можно также добавить мехосов с совсем простым рецептом (1-3 нанобота) для начинающих персонажей и мазо&#8230; то есть любителей раффа</p>

<p>Также я не рассмотрел такие важные вопросы, как пенальти от смерти и возможность изменить состав наноботов. Но эти вопросы уже во многом зависят от сценария игры.</p>

<h3>Итог</h3>

<p>Я постарался сформулировать некоторые идеи, и продемонстрировать в общих чертах, каким образом эти идеи можно реализовать в (массовой онлайновой?) action-rpg во вселенной Психосферы, и какой подход к PvP-балансу хотел бы я видеть при разработке такой игры. Надеюсь, эти идеи покажутся интересными компетентному Жюри, а может быть и дадут толчок к развитию игростроения в Психосферной (а может, и какой-либо другой) вселенной</p>
]]></content:encoded>
			<wfw:commentRss>http://lxj.endofinternet.net/column/nano-rpg/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Хроники Изгнания по Jex Kerome&#8217;у: I. Как мы здесь оказались и какого чёрта мы тут вообще забыли</title>
		<link>http://lxj.endofinternet.net/column/jex-chronicles-of-exile-1/</link>
		<comments>http://lxj.endofinternet.net/column/jex-chronicles-of-exile-1/#comments</comments>
		<pubDate>Fri, 18 Jan 2008 23:34:22 +0000</pubDate>
		<dc:creator>LXj</dc:creator>
				<category><![CDATA[Vendetta Online]]></category>

		<guid isPermaLink="false">http://lxj.endofinternet.net/column/jex-chronicles-of-exile-1/</guid>
		<description><![CDATA[Однажды у меня вдруг возник творческий порыв перевести неофициальный вариант предыстории игры Vendetta Online в изложении игрока Jex Kerome, и этого порыва хватило на целую первую главу.

Официальная предысторя как бы написана представителем нации Itani, в этом же варианте в качестве летописца выступает представитель UIT. Соответственно, акценты расставлены немного по-другому; к тому же освещены многие вопросы, [...]]]></description>
			<content:encoded><![CDATA[<p>Однажды у меня вдруг возник творческий порыв перевести <a href="http://vendetta-online.com/x/msgboard/7/11807?page=1">неофициальный вариант предыстории</a> игры Vendetta Online в изложении игрока Jex Kerome, и этого порыва хватило на целую первую главу.</p>

<p><a href="http://vendetta-online.com/h/storyline.html">Официальная предысторя</a> как бы написана представителем нации Itani, в этом же варианте в качестве летописца выступает представитель UIT. Соответственно, акценты расставлены немного по-другому; к тому же освещены многие вопросы, которые слабо упоминались в официальной предыстории, и информацию о которых приходилось собирать по крупицам и вытягивать из разработчиков (ибо официальное изложение недостающей части предыстории, как всегда, work in progress). Ну и главное — этот вариант гораздо веселее! (Творческого порыва продолжить перевод у меня пока что не возникало)</p>

<p>Итак&#8230;</p>

<p>Изначально все мы произошли с Земли. Старушка Земля, Терра Фирма, Третья Планета, ну и всё такое прочее. Конечно, потом мы открыли МакДональдсы по всей Солнечной Системе и построили города вокруг этих МакДональдсов; так что у нас были мужчины и женщины с Меркурия, и мужчины и женщины с лун Юпитера, и мужчины и женщины с Марса (что опровергло весь тот бред про мужчин с одной планеты и женщин с другой).</p>

<p>Но&#8230; как же всё это было СКУЧНО.</p>

<p>В прошлом у нас было достаточно войн &mdash; и планетарных, и космических;  но с тех пор люди стали капризными и больше не хотели воевать, вместо этого подружились и вместе работали во имя «общего блага».</p>

<p>Это было не только скучно. Это было ужасно! Несмотря на сберегающие технологии и повторную обработку, в нашей звёздной системе оставалось всё меньше и меньше ресурсов, на пляжах Венеры заканчивался песок, а Пояс Астероидов превращался в пыль. Добавьте к этому ту подлянку, что сделал нам Эйнштейн несколько веков назад, с невозможностью путешествовать быстрее скорости света, а значит и достигать других звёздных систем, и вы поймёте, что люди Земли начали отчаиваться&#8230;</p>

<p>Потом, к счастью, учёные сделали открытие.</p>

<p>— А знаете что? &mdash; спросили они.</p>

<p>— Чё? &mdash; апатично отозвались остальные. Ну, вы понимаете, это же &mdash; УЧЁНЫЕ, чудики, для которых весело провести время &mdash; это целую ночь играть в D&amp;D, и которые столько всего наобещали про жизнь в космосе и доминирование во Вселенной &mdash; и что мы имели? В общем, поэтому мы так на них и отреагировали. Ну а они возьми да и скажи:</p>

<p>— А мы вот гиперпространственный туннель <em>(в оригинале — <a href="http://lingvo.yandex.ru/en?text=wormhole">wormhole</a>)</em> открыли.</p>

<p>— И чё? &mdash; спросили мы.</p>

<p>А они:</p>

<p>— Ну, по нему мы можем попасть к далёким звёздам, и посмотреть, что там!</p>

<p>А мы:</p>

<p>— Не может быть!</p>

<p>А они:</p>

<p>— Может-может!</p>

<p>А мы:</p>

<p>— Да не может быть!!!</p>

<p>А они:</p>

<p>— Да ещё как может!!!</p>

<p>В общем, где-то на десятый раз они поняли, что над ними прикалываются, показали нам средний палец (мы с радостью ответили тем же) и вернулись к своей научной дребедени.</p>

<p>Учёные оказались правы (кто бы мог подумать?): они таки действительно открыли этот-как-его туннель, и эта штука таки действительно вела к другой звёздной системе. Мы, конечно, были рады и убежать с этой маленькой вонючей системы, и возможности начать борьбу за новые ресурсы с самого начала (никто об этом вслух не говорил, но все, конечно же, только об этом и думали). Так что люди Земли и колоний праздновали и закатывали большие вечеринки (учёных, конечно, ни на одну не пригласили &mdash; из-за того, что они такие чудики и всё такое).</p>

<p>Терраформинг Земли-2 (надо отдать должное за оригинальность) был сложной задачей, сложнее чем даже работа на Марсе. Миллионы тонн материалов сливалось в систему Солнца-2 (да-да, снова та самая оригинальность), как и миллионы людей всех мастей: учёные, терраформинг-инженеры, врачи, космические пилоты, геологи, медсёстры, рабочие, метеорологи, ботаники, экологи, дельцы, сутенёры, контрабандисты, политики, и так далее&#8230; От высших общества до бомжей &mdash; все стекались на новую планету и пытались изменять её по своему разумению. Когда чудики &mdash; извините, учёные наконец-то доработали портативный гравитационный двигатель и мы могли переправляться толпами, а не по одному, то дело пошло быстрее, и нашлось больше времени на веселье. Всё шло замечательно, и терраформинг планеты должен был закончиться в течении века. Мы также нашли ещё несколько туннелей, но ни один не вёл на такую же многообещающую систему, как Солнце-2.</p>

<p>Но, конечно, учёные любят изобрести что-нибудь, а потом изобрести что-то другое, что испортит первое открытие, и с туннелями не было никакого исключения. Какой-то чудик начал утверждать, что туннели не вечны (как, на пример, бриллианты), и что на самом деле, туннель Солнце-Солнце-2 должен вот-вот остановиться. Этого кайфолома, конечно же, быстро нашли и заткнули. И, конечно же, всё, что он предсказал, сбылось.</p>

<p>Представьте себе, что вы &mdash; капитан космического грузового корабля, погружённый в сладкие мечты о неделе на Вайкики по возвращении на Старушку Землю, и вот, когда ваш корабль должен совершить прыжок к Солнцу, он просто не прыгает. Он ПРОСТО не прыгает. И сколько вы не рвёте на себе волосы, кричите, угрожаете или подкупаете ваших джамп-операторов, чтобы они заставили этот долбаный корабль прыгнуть, ничего не помогает. Потом вы замечаете, что корабли вокруг никуда не деваются, и вы начинаете волноваться. Наверное, думаете вы, этот чудик с его зловещими пресказаниями был прав. Наверное, туннель просто взял и разрушился. А потом вы вспоминаете о том, чего вы больше никогда не увидите &mdash; ваша семья, маленькие прогулки и те девушки с Вайкики не слишком обременённые одеждой, и вы приходите в бешенство. А потом вы думаете о других, кто был в пути, когда туннель разрушился, и вы слегка успокаиваетесь, с ухмылкой думая, что вы ведь не реагировали так же бурно, как эти неудачники!</p>

<p>Вот я и говорю, одни неприятности от этой науки. Лучше бы мы сожгли тех учёных вместе с их книгами по D&amp;D, как только они упомянули туннели, но теперь уже было поздно. Мы встряли.</p>

<p>И таки как же мы встряли! Зондирование, тестирование, и нытьё показало не только то, что туннель действительно закрылся, но также что он не откроется в ближайшие несколько тысячелетий. Тысячелетий! Даже «Симпсоны» перестанут выходить к тому времени. Не говоря уж о том, что мы застряли с этой стороны туннеля без всякой поддержки Старушки Земли, а Земля-2 была всё ещё не не совсем подготовлена. Да уж, мы были в жопе.</p>

<p>Так что в таком положении мы только могли придумать жалостливое прозвище для себя: Выселенные. Прикольно, да?</p>
]]></content:encoded>
			<wfw:commentRss>http://lxj.endofinternet.net/column/jex-chronicles-of-exile-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Советы пользователям Gentoo</title>
		<link>http://lxj.endofinternet.net/column/gentoo-tips/</link>
		<comments>http://lxj.endofinternet.net/column/gentoo-tips/#comments</comments>
		<pubDate>Fri, 18 Jan 2008 22:54:23 +0000</pubDate>
		<dc:creator>LXj</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://lxj.endofinternet.net/column/?p=4</guid>
		<description><![CDATA[Обновлено 12.02.2008 (комментарий)

В своё время я написал две статьи для Linux.com с советами для пользователей Gentoo (Gentoo Portage secrets и Tips for new Gentoo users), при чём вторая оказалась такой удачной, что не только попала в топ digg&#8217;а, но и была в тот же день переведена на русский язык!

Я решил собрать в одной статье всю [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Обновлено 12.02.2008 (<a href="http://lxj.endofinternet.net/column/gentoo-tips/#comment-8">комментарий</a>)</strong></p>

<p>В своё время я написал две статьи для Linux.com с советами для пользователей Gentoo (<a href="http://www.linux.com/articles/56270">Gentoo Portage secrets</a> и <a href="http://www.linux.com/articles/58503">Tips for new Gentoo users</a>), при чём вторая <a href="http://dumponline.blogspot.com/2006/11/blog-post.html">оказалась такой удачной</a>, что не только <a href="http://digg.com/linux_unix/Tips_for_new_Gentoo_users">попала в топ digg&#8217;а</a>, но и была в тот же день переведена на русский язык!</p>

<p>Я решил собрать в одной статье всю актуальную информацию из обеих статей (они, в принципе, остались актуальными на 90%), и добавить немного нового материала. Ну и перевести, в конце концов, так, как я считаю нужным :)</p>

<h3>Если вы только собираетесь начать работу с Gentoo</h3>

<p>Приготовьтесь читать <strong>много</strong> документации, особенно поначалу. Собственно, вы и установить Gentoo не сможете, не изучив <a href="http://www.gentoo.org/doc/en/handbook/index.xml">Gentoo Handbook</a>.</p>

<p>Есть, конечно, графический инсталлятор, есть <a href="http://sabayon.org/">Sabayon</a>, но без понимания основ вы далеко не уйдёте. Да и вообще, при работе с Gentoo не рассчитывайте на графические средства настройки — зато консольные средства настройки и организация конфигурационных файлов в Gentoo весьма удобны.</p>

<p>Handbook освещает установку и основы работы с Gentoo. Когда придёт время настраивать иксы и ALSA, переходите к <a href="http://www.gentoo.org/doc/en/list.xml">Gentoo Documentation Resources</a>. Если вы не нашли информации по интересующей вас теме и там, то она скорее всего есть в <a href="http://gentoo-wiki.com/Main_Page">Gentoo wiki</a>.</p>

<p>Найти что-либо, что не описано в Gentoo wiki довольно сложно, так что не забывайте туда заглянуть, прежде чем посетить официальный <a href="http://forums.gentoo.org/">форум</a> и <a href="http://www.gentoo.org/main/en/irc.xml">IRC-каналы</a>.</p>

<p>Выше я приводил ссылки на англоязычные источники, как и в оригинале статьи. Если у вас нет проблем с английским языком, то лучше их и придерживаться, когда вы что-либо ищите — англоязычная документация практически всегда более актуальная и более полная. Но и документации на русском есть немало: и <a href="http://www.gentoo.org/doc/ru/handbook/">Handbook</a>, и <a href="http://www.gentoo.org/doc/ru/">официальный перевод прочей документации</a>, <a href="http://ru.gentoo-wiki.com/">русскоязычный раздел Gentoo Wiki</a>. Большой русскоязычный форум о Gentoo вы можете найти на <a href="http://gentoo.ru">Gentoo.ru</a> (там же вы найдёте ссылки на IRC-каналы), ну и крупнейший русскоязычный форум о Linux — <a href="http://linuxforum.ru/">LinuxForum</a>.</p>

<h3>Основы Portage</h3>

<p>Шутка. Тут этот раздел вообще не нужен. Вы ведь прочли Handbook, как это было сказано в предыдущем разделе? Хотя в оригинальную статью этот раздел по настоятельной просьбе редакторов пришлось всё-таки включить.</p>

<h3>Настройка Portage</h3>

<p>Первое правило Gentoo — внимательно следите за вашими USE-флагами. Множество глупых вопросов снимается, если вы перепроверите свои USE-флаги. Почему Midnight Commander тянет за собой в зависимостях X.org? Потому что у вас установлен флаг X. Почему вместе с KDE не установился KPDF? Потому что вы забыли про флаг pdf. <em>(Почему же всё-таки был установлен KGhostScript? Понятия не имею, да и вообще — KDE4 на носу)</em></p>

<p>Для того, чтобы увидеть, с какими флагами будет установлен новый пакет, запускайте emerge с параметрами &#8211;ask и &#8211;verbose (-av) (&#8211;ask лучше &#8211;pretend тем, что зависимости не пересчитываются лишний раз). Обязательно установите пакет gentoolkit — среди прочих полезностей,  он содержит утилиту euse, которая облегчает управление USE-флагами. Запустите <code>euse -i flag</code>, чтобы увидеть описание флага, и узнать, актвирован ли он. Прочитайте <code>man euse</code>, чтобы узнать о всех возможностях этой команды (нет, правда, прочитайте — там немного).</p>

<p>Чтобы установить какую-либо программу с другими USE-флагами, иногда советуют запустить <code>USE="some flags" emerge moo</code>, но ни в коем случае так не делайте: при следующем обновлении пакет будет перекомпилирован со старым набором флагов. Для настройки USE-флагов для отдельных пакетов используйте <code>/etc/portage/package.use</code> (это или файл, или каталог с  файлами, см. ниже). То есть если вы хотите установить пакет <code>moo</code> категории <code>category</code> с флагами <code>some flags</code>, то наберите <code>echo "category/moo some flags" &gt;&gt; /etc/portage/package.use</code> перед установкой.</p>

<p>То же самое относится и к ACCEPT_KEYWORD — используйте <code>/etc/portage/package.keywords</code>. Начиная с версии Portage 2.1, вы можете хранить такие настройки не в одном большом файле package.keywords, а создать несколько небольших файлов, и положить их в <em>каталог</em> <code>/etc/portage/package.keywords</code>. Это относится ко всем файлам в <code>/etc/portage</code>.</p>

<h3>Когда нужно использовать оверлеи</h3>

<p>Иногда бывает нужно установить пакет (или версию пакета), которого ещё (или уже) нет в Portage. На пример, вы можете найти ebuild, который уже был удалён из официального дерева в <a href="http://www.gentoo.org/cgi-bin/viewcvs.cgi/">CVS-репозитории</a>. Или же вы нашли ebuild для нового пакета в <a href="http://bugs.gentoo.org/">Gentoo Bugzilla</a>. А может быть, вас чем-то не устраивает официальный ebuild, и вы решили внести в него свои изменения.</p>

<p>В таком случае, вы должны создать собственный локальный оверлей, и положить свои ebuild&#8217;ы туда. Оверлей — это набор ebuild&#8217;ов, которые вы хотите «подмешать» к основной базе Portage. Ни в коем случае не храните свои ebuild&#8217;ы в /usr/portage — при первой же синхронизации они будут удалены. Создайте каталог для своего оверлея, и создайте в нём структуру каталогов, подобную /usr/portage. Расположите ваши ebuild&#8217;ы соответственно. Затем откройте /etc/make.conf, и добавьте строчку <code>PORTDIR_OVERLAY="/path/to/local/overlay"</code>.</p>

<p>Обычное место для оверлеев — <code>/usr/local/overlays</code>, так что свой оверлей вы можете сделать в <code>/usr/local/overlays/local</code>. Что ещё может оказаться в <code>/usr/local/overlays</code>?</p>

<p>Есть множество неофициальных оверлеев, с которыми можно синхронизироваться. Для любого из них можно создать оверлей в <code>/usr/local/overlays</code>, и синхронизировать их (по тому же принципу,  как вы синхронизируете официальное дерево Portage, когда запускаете <code>emerge --sync</code>). Разные неофициальные оверлеи используют для синхронизации утилиты rsync, svn или git, что оговаривается в описании оверлея.</p>

<p>В прочем, большинство из этих оверлеев вы можете использовать при помощи утилиты layman. В таком случае вам не нужно самомостоятельно создавать каталог для оверлея и запускать rsync/svn/git для получения обновлений — вы просто вводите <code>layman -a название-оверлея</code>, чтобы «подключиться» к оверлею — то есть, чтобы layman сам создал каталог, скачал туда нужные файлы и добавил путь в файл настройки; а затем запускаете <code>layman -S</code>, чтобы обновить все оверлеи.</p>

<p>Подробнее об управлении оверлеями, об установке layman и о том, какие вообще есть полезные оверлеи, можно узнать <a href="http://gentoo-wiki.com/Portage_Overlay">на Gentoo wiki</a>. Оверлеи, как правило, обсуждаются в разделе <a href="http://forums.gentoo.org/viewforum-f-51.html">Unsupported software</a> официальных форумов Gentoo.</p>

<h3>Как часто нужно обновляться?</h3>

<p>Не стоит запускать <code>emerge --sync</code> и  <code>layman -S</code> чаще раза в сутки. Да и этого, как правило, более чем достаточно. Вы можете отслеживать появление интересующих вас пакетов на сайтах <a href="http://packages.gentoo.org/">http://packages.gentoo.org/</a> или <a href="http://gentoo-portage.com/">http://gentoo-portage.com/</a> (или же подписавшись на соответствующие RSS-ленты), и, таким образом, синхронизировать дерево Portage и обновлять пакеты только тогда, когда в официальном дереве появятся новые версии используемого вами ПО.</p>

<p>Чтобы не пропускать важные обновления безопасности, используйте утилиту <a href="http://forums.vpslink.com/archive/index.php/t-745.html">glsa-check</a> из пакета gentoolkit. В настоящее время эта функциональность ещё дорабатывается, но в будущем glsa-check станет частью Portage. Чтобы узнать, есть ли уязвимости среди установленных пакетов, запустите <code>glsa-check -l affected</code>. Выполнив <code>glsa-check -d &lt;код уязвимости&gt;</code>, вы увидите подробную информацию по определённой уязвимости (вы можете также сразу запустить <code>glsa-check -d affected</code>)</p>

<p>В то же время, не обновляетесь слишком редко. Если вы не будете обновлять систему больше месяца, то когда вы в конце концов соберётесь обновляться, у вас возникнет множество проблем.</p>

<p>Не забывайте читать <a href="http://www.gentoo.org/news/en/gmn/">Gentoo Monthly Newsletter</a>, практически все важные вопросы связанные с нетривиальными обновлениями, там всегда освещаются. Да и вообще подписаться на RSS-ленту новостей с gentoo.org (или хотя бы gentoo.ru) — это очень хорошая идея.</p>

<p><a href="http://forums.gentoo.org/viewtopic-t-546828.html">Этот скрипт</a> с простым названием update упрощает процедуру обновления:</p>

<ul>
<li>на экран не выводятся сообщения от компилятора — только сообщения от emerge;</li>
<li>если какой-то пакет не удаётся установить, то выполнение обновления не прерывается: скрипт в конце работы пытается ещё раз установить этот пакет, затем выводит список всех пакетов, которые так и не удалось установить;</li>
<li>в некоторых случаях автоматически разрешаются блокировки пакетов (пакет А версии ниже X блокируют установку пакета B версии Y: обычно emerge не сможет продолжить работу, пока вы сами не обновите пакет A, а update это делает сам)</li>
</ul>

<h3>Держите «мир» в чистоте</h3>

<p>Каждый раз, когда вы устанавливаете какой-либо пакет, его название записывается в /var/lib/portage/world. Когда вы обновляете ваши пакеты, вы запускаете что-то вроде <code>emerge --update --deep world</code> — именно тогда этот список и используется. Старайтесь, чтобы он был как можно короче; только программы, которые вы используете напрямую, должны туда попадать. Если какой-либо пакет установлен как зависимость другого, то он скорее всего не должен попадать в world.</p>

<p>Например, когда вы устанавливаете пакет, использующий библиотеку wxWidgets, то она автоматически устанавливается среди прочих зависимостей этого пакета, но не добавляется в world. Если вы удалите все пакеты, которые зависят от wxWidgets, то она перестанет обновляться при <code>emerge --update (...) world</code>; и будет удалена из системы, если вы запустите <code>emerge --depclean</code>. Только если вы сами разрабатываете программы с использованием wxWidgets, вы захотите, чтобы она входила в world.</p>

<p>Утилита udept может помочь вам удалить лишние пакеты из списка world:</p>

<pre><code>emerge udept
dep -aw
</code></pre>

<p>Чтобы установить или обновить пакет напрямую, но без добавления его в этот список, используйте опцию &#8211;oneshot (-1). Это может быть полезно, на пример, для временной установки какого-либо пакета.</p>

<h3>Об удалении пакетов.</h3>

<p>Не забывайте, что <code>emerge --unmerge</code> не проверяет, используется ли удаляемый пакет другими пакетами. Также будьте осторожны с <code>emerge --depclean</code>, так как иногда она может удалить пакеты, которые вам нужны.</p>

<p>Иногда при обновлении одного пакета, перестаёт работать другой, который, хоть и не требует для установки первый пакет, но включает его в свои необязательные зависимости. В таких случаях необходимо просто переустановить второй пакет, чтобы он скомпилировался без связей с первым. Чтобы выявить все такие пакеты, вы можете использовать утилиту revdep-rebuild из пакета gentoolkit.</p>

<h3>Логи Portage</h3>

<p>Все ваши действия с emerge отражаются в <code>/var/log/emerge.log</code>. К примеру, чтобы узнать, какой пакет сейчас компилируется, запустите <code>tail /var/log/emerge.log</code>. Преобразовать временные отметки в читаемый формат поможет простой <a href="http://lxj.endofinternet.net/files/other/formatlog">python-скрипт</a> (с его использованием необходимо запустить <code>tail /var/log/emerge.log | formatlog</code>).</p>

<p>Утилита genlop (<code>emerge genlop</code>) позволяет извлечь статистическую информацию из этого лог-файла. На пример, <code>genlop -c</code> скажет, какой пакет сейчас компилируется и как долго, и оценит количество оставшегося до конца установки времени.</p>

<p>Дополнительно стоит также включить так называемые elog. При установке многих пакетов показываются важные уведомления, которые вы можете пропустить, если не следите за выполнением emerge. Добавьте в make.conf следующие строки:</p>

<pre><code># This sets what to log
PORTAGE_ELOG_CLASSES="warn error log"
# And this is how to do it
PORTAGE_ELOG_SYSTEM="save"
</code></pre>

<p>и создайте каталог <code>/var/log/portage/elog</code>. Теперь уведомления для каждого пакета будут сохраняться в отдельном файле в созданном каталоге. Если вы хотите узнать больше о настройке elog, то изучите файл <code>/etc/make.conf.example</code>. Существуют также <a href="http://sourceforge.net/projects/elogviewer/">графические утилиты</a> для просмотра этих логов.</p>

<h3>Удаление временных файлов</h3>

<p>Если установка программы прервана ошибкой, в <code>/var/tmp/portage</code> остаётся временный каталог. Он будет автоматически удалён только после успешной установки этой программы, или же вы можете очистить этот каталог сами.</p>

<p>Также через некоторое время довольно много файлов может оказаться в <code>/usr/portage/distfiles</code>. Используйте утилиту eclean из пакета gentoolkit, чтобы удалить дистрибутивы, которые вам больше не нужны. Эта утилита также удаляет старые бинарные пакеты, если вы их создавали (запускайте как <code>eclean-dist</code> и <code>eclean-pkg</code> соответственно). В странице руководства рассказывается о дополнительных параметрах.</p>

<h3>Быстрый поиск пакетов</h3>

<p>Чтобы найти нужный пакет в локальном дереве Portage (и/или оверлеях), вы можете использовать <code>emerge --search</code> или <code>emerge --searchdesc</code>, но этот способ очень медленный. Поэтому лучше использовать <a href="http://dev.croup.de/proj/eix">eix</a>. Eix индексирует список пакетов после каждой синхронизации (для этого необходимо набрать <code>update-eix</code>), а затем очень быстро выполняет поиск по пакетам (к примеру, <code>eix moo</code> выдаст список всех пакетов, которые содержат moo в названии). К тому же, вывод eix более информативен, чем вывод emerge.</p>

<p>Eix позволяет искать по названию пакета, категории или описанию, использовать регулярные выражения, неточный поиск, ограничивать область поиска только установленными пакетами и многое другое. Как обычно, читайте man.</p>

<h3>Уменьшение использования трафика</h3>

<p>Обновление системы может быть связано с тратой большого количества сетевого трафика. Но есть способы уменьшить аппетиты Portage. Наиболее эффективно в этом преуспеет знаменитая утилита <a href="http://deltup.sourceforge.net/">Deltup</a>, которая позволяет загружать не весь архив с исходными кодами, а только разность между новой и старой версией. Такой подход экономит до 90% размера загрузок. Установка Deltup <a href="http://ru.gentoo-wiki.com/HOWTO_Экономия_трафика_с_помощью_deltup">описана</a> в Gentoo Wiki.</p>

<p>У Deltup, конечно, есть свои недостатки. Эта утилита не поддерживает докачку, а кроме того, вы зависите от загруженности сервера, генерирующего новые патчи (помнится, были плохие времена у deltup, когда дождаться очереди на генерацию было практически невозможно. Потом стало лучше, а после этого я уже давно deltup не пользуюсь — как там сейчас, не знаю). Также иногда Deltup «путается» в версиях некотрых пакетов, если у них запутанная система нумерации версий. Ну и конечно, пересоздание нового пакета требует процессорного времени. Однако же, никаких катастрофических последствий использование deltup иметь не может, так что если вы нуждаетесь в экономии трафика — обязательно её попробуйте.</p>

<p>Похожий подход, но для синхронизации дерева Portage использует утилита emerge-delta-webrsync: она загружает ежедневные патчи для обновления вашей локальной копии дерева, что гораздо экономнее, чем <code>emerge --sync</code> (особенно если у вас уже есть архив с копией дерева портежей — вроде того, который вы исполоьзовали при установке). Просто запустите <code>emerge emerge-delta-webrsync</code>, а затем <code>emerge-delta-webrsync</code> для синхронизации дерева портежей (мне всё ещё надо напоминать, что подробности — в man&#8217;е?).</p>

<p>На Gentoo wiki есть <a href="http://gentoo-wiki.com/TIP_Gentoo_for_dialup_users">специальный раздел</a> с советами для пользователей с плохим интернет-соединением.</p>

<p>Ещё одна возможность не уменьшит использование трафика, но позволит уменьшить время загрузки пакетов: добавьте <code>parallel-fetch</code> в переменную <code>FEATURES</code> в <code>/etc/make.conf</code>, чтобы emerge скачивал дистрибутив следующего пакета, устанавливая предыдущие в очереди. Это уменьшит время установки, если вы запускаете emerge для установки сразу нескольких пакетов.</p>

<h3>Ускорение компиляции</h3>

<p>Компиляция из исходных кодов — основной способ установки программ в Gentoo. Неудивительно, что появились средства, позволяющие ускорить этот процесс.</p>

<p>На пример, <a href="http://www.gentoo.org/doc/en/distcc.xml">Distcc</a> позволяет распределить задачи по компиляции на несколько компьютеров в сети. Даже компьютеры с Windows <a href="http://gentoo-wiki.com/HOWTO_Distcc_server_on_Windows">сгодятся</a> для этого!</p>

<p><a href="http://gentoo-wiki.com/Ccache">Ccache</a> кэширует результаты компиляции, таким образом, ускоряя компиляцию одинаковых участков кода.</p>

<p>Упомянутые здесь утилиты можно использовать не только с emerge, но и вообще при любых компиляциях. Подробнее читайте в документации <a href="http://distcc.samba.org/">Distcc</a> и <a href="http://ccache.samba.org/">Ccache</a>.</p>

<h3>Обновление конфигурационных файлов</h3>

<p>После установки новых версий пакетов иногда необходимо обновить их конфигурационные файлы. В Handbook описана эта процедура с использованием утилиты etc-update, но существует более удобная и продвинутая утилита — <a href="http://gentoo-wiki.com/Dispatch-conf">dispatch-conf</a>. Эта утилита имеет возможность автоматически обновлять конфигурационные файлы, в которых произошли простые изменения (на пример, изменились только комментарии), вы также можете указать ей автоматически обновлять конфигурационные файлы, в которые не вносились изменения пользователем. При этом конфигурационное файлы помещаются в контроль системой контроля версий, чтобы вы с лёгкостью могли откатить все изменения.</p>

<p>Ну и <a href="http://bash.org/?464385">цитата</a> из bash.org&#8217;а напоследок:</p>

<blockquote>
  <p>&lt;@insomnia> it only takes three commands to install Gentoo <br/>
  &lt;@insomnia> cfdisk /dev/hda &amp;&amp; mkfs.xfs /dev/hda1 &amp;&amp; mount /dev/hda1 /mnt/gentoo/ &amp;&amp; chroot /mnt/gentoo/ &amp;&amp; env-update &amp;&amp; . /etc/profile &amp;&amp; emerge sync &amp;&amp; cd /usr/portage &amp;&amp; scripts/bootsrap.sh &amp;&amp; emerge system &amp;&amp; emerge vim &amp;&amp; vi /etc/fstab &amp;&amp; emerge gentoo-dev-sources &amp;&amp; cd /usr/src/linux &amp;&amp; make menuconfig &amp;&amp; make install modules_install &amp;&amp; emerge gnome mozilla-firefox openoffice &amp;&amp; emerge grub &amp;&amp; cp /boot/grub/grub.conf.sample /boot/grub/grub.conf &amp;&amp; vi /boot/grub/grub.conf &amp;&amp; grub &amp;&amp; init 6<br/>
  &lt;@insomnia> that&#8217;s the first one</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://lxj.endofinternet.net/column/gentoo-tips/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
	</channel>
</rss>
