website diff ru/devel/forge.php @ rev 1035

ru: code formatting & proofreading, forge added; added Activity to all Packages pages
author Aleksej Bobylev <al.bobylev@gmail.com>
date Wed Apr 04 18:44:16 2012 +0300 (2012-04-04)
parents
children 9ed0bfb74392
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/ru/devel/forge.php	Wed Apr 04 18:44:16 2012 +0300
     1.3 @@ -0,0 +1,340 @@
     1.4 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
     1.5 +	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     1.6 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru">
     1.7 +<head>
     1.8 +	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
     1.9 +	<title>Кузница | SliTaz</title>
    1.10 +	<meta name="description" content="«Кузница» разработчиков SliTaz" />
    1.11 +	<meta name="keywords" lang="ru" content="SliTaz, разработчики, hg, bugs" />
    1.12 +	<meta name="author" content="Christophe Lincoln"/>
    1.13 +	<?php include("../../lib/html/meta-link.html"); ?>
    1.14 +</head>
    1.15 +<body>
    1.16 +
    1.17 +<?php include("../../lib/html/header.ru.html"); ?>
    1.18 +
    1.19 +<!-- Block -->
    1.20 +<div id="block">
    1.21 +	<?php include("../../lib/html/nav.ru.html"); ?>
    1.22 +	<!-- Information/image -->
    1.23 +	<div id="block_info">
    1.24 +		<h4>Кузница</h4>
    1.25 +		<p>Разнообразные утилиты, принципы и сервисы, используемые для создания
    1.26 +			SliTaz.</p>
    1.27 +		<p><img src="/images/users.png" alt="*" />
    1.28 +			Присоединяйтесь к нам <a href="http://scn.slitaz.org/">на SCN</a>
    1.29 +			и <a href="../mailing-list.php">в рассылке</a>
    1.30 +		</p>
    1.31 +	</div>
    1.32 +</div>
    1.33 +
    1.34 +<?php include("../../lib/lang.php"); ?>
    1.35 +
    1.36 +<!-- Content -->
    1.37 +<div id="content">
    1.38 +
    1.39 +<h2>Совместное управление</h2>
    1.40 +
    1.41 +<ul>
    1.42 +	<li><a href="#kiss">KISS и соответствие стандартам</a></li>
    1.43 +	<li><a href="#tank">Сборочный хост и дом</a></li>
    1.44 +	<li><a href="#repos">Репозитории Mercurial</a></li>
    1.45 +	<li><a href="#gui">GUI в GTK и CGI/web</a></li>
    1.46 +	<li><a href="#iconv">Реализация iconv()</a></li>
    1.47 +	<li><a href="#pkgs">Сборка пакетов SliTaz</a></li>
    1.48 +	<li><a href="#website">Управление сайтом</a></li>
    1.49 +</ul>
    1.50 +
    1.51 +
    1.52 +<h2 id="kiss">KISS и соответствие стандартам</h2>
    1.53 +
    1.54 +<p>Что означает <a target="_blank"
    1.55 +	href="http://ru.wikipedia.org/wiki/KISS_%28%D0%BF%D1%80%D0%B8%D0%BD%D1%86%D0%B8%D0%BF%29">KISS</a>?
    1.56 +	Будьте проще: следуйте лучшим стандартам, тщательно планируйте и пишите
    1.57 +	качественную документацию, делайте систему стабильной и надежной, сохраняйте
    1.58 +	<em>rootfs</em> на LiveCD настолько лёгким, чтобы дистрибутив мог
    1.59 +	запускаться на компьютерах со 128 МБ оперативки. В дистрибутиве возможно
    1.60 +	использование GTK+2, Dialog, SHell-скриптов и средств разработки PHP. Идея
    1.61 +	заключается в том, чтобы не дублировать существующее, и думать о малом…</p>
    1.62 +
    1.63 +
    1.64 +<h2 id="tank">Tank — сборочный хост и дом</h2>
    1.65 +
    1.66 +<p>Участники проекта могут получить аккаунт на сервере Tank с безопасным
    1.67 +	доступом, дисковым пространством, общим каталогом и всеми средствами
    1.68 +	разработки. Разработчики могут компилировать пакеты, а мэйнтейнеры зеркала
    1.69 +	могут осуществлять синхронизацию. На сервере Tank также находятся домены
    1.70 +	веб-загрузки, сборочного бота и SliTaz Pro:
    1.71 +	<a href="http://tank.slitaz.org/">tank.slitaz.org</a>.</p>
    1.72 +<p>Инструкции по использованию сборочного хоста описаны в Cookbook:
    1.73 +	<a href="http://doc.slitaz.org/en:cookbook:buildhost">SliTaz Build Host
    1.74 +	(Tank)</a>.</p>
    1.75 +
    1.76 +
    1.77 +<h2 id="repos">Репозитории Mercurial</h2>
    1.78 +
    1.79 +<p>Репозитории SliTaz Mercurial (Hg) можно просматривать и клонировать без
    1.80 +	ограничений, используя адрес
    1.81 +	<a href="http://hg.slitaz.org/">http://hg.slitaz.org/</a>. Те, у кого есть
    1.82 +	доступ на запись, могут напрямую использовать адрес
    1.83 +	<tt>repos.slitaz.org</tt>, требующий аутентификации. Mercurial работает на
    1.84 +	Python; его можно установить командой
    1.85 +	<code>tazpkg get-install mercurial</code></p>
    1.86 +
    1.87 +
    1.88 +<h3>~/.hgrc</h3>
    1.89 +
    1.90 +<p>Перед тем, как отправить ваш первый коммит на сервер, внесите в файл
    1.91 +	конфигурации Hg ваше имя, фамилию и адрес электронной почты. Запомните, Hg
    1.92 +	не будет работать, если вы root. Пример персонального файла ~/.hgrc:</p>
    1.93 +
    1.94 +<pre class="script">
    1.95 +[ui]
    1.96 +username = Ivan Ivanov &lt;ivanov@mail.org&gt;
    1.97 +</pre>
    1.98 +
    1.99 +
   1.100 +<h4>Клонировать → изменить → зафиксировать изменения → отправить</h4>
   1.101 +
   1.102 +<p>Клонировать репозиторий, к примеру, wok:</p>
   1.103 +
   1.104 +<pre>$ hg clone http://repos.slitaz.org/wok</pre>
   1.105 +
   1.106 +<p>Перейдите в папку wok; вы должны находиться в репозитории, чтобы иметь
   1.107 +	возможность использовать команды 'hg'. Чтобы проверить все журналы, или
   1.108 +	просто последний журнал:</p>
   1.109 +
   1.110 +<pre>
   1.111 +$ hg log
   1.112 +$ hg head
   1.113 +</pre>
   1.114 +
   1.115 +<p>Добавьте или измените один или несколько файлов и зафиксируйте коммит:</p>
   1.116 +
   1.117 +<pre>
   1.118 +$ hg add
   1.119 +$ hg status
   1.120 +$ hg commit -m "Log message..."
   1.121 +$ hg log
   1.122 +</pre>
   1.123 +
   1.124 +<p>Обратите внимание, что вы можете использовать команду <code>rollback</code>
   1.125 +	для отмены последней операции. Перед отправкой изменений на сервер
   1.126 +	(<em>push</em> — «протолкнуть» изменения на сервер) возьмите за правило
   1.127 +	принимать текущие изменения с сервера (при их наличии):</p>
   1.128 +
   1.129 +<pre>
   1.130 +$ hg pull
   1.131 +$ hg push
   1.132 +</pre>
   1.133 +
   1.134 +<p>Готово, теперь ваши изменения, код или исправления находятся на сервере.</p>
   1.135 +
   1.136 +
   1.137 +<h4>Обновление локального wok</h4>
   1.138 +
   1.139 +<p>Для того, чтобы обновить ваш wok скомандуйте (<em>pull</em> — «втянуть»
   1.140 +	изменения с сервера):</p>
   1.141 +
   1.142 +<pre>$ hg pull -u</pre>
   1.143 +
   1.144 +
   1.145 +<h4>Полезные команды</h4>
   1.146 +
   1.147 +<p>Могут быть использованы следующие команды Hg:</p>
   1.148 +
   1.149 +<ul>
   1.150 +	<li><code>hg help</code> — показать полный список команд.</li>
   1.151 +	<li><code>hg rollback</code> — отменить последнее действие (commit, pull,
   1.152 +		push).</li>
   1.153 +	<li><code>hg log пакет</code> — показать журнал для пакета.</li>
   1.154 +	<li><code>hg head</code> — показать последний журнал.</li>
   1.155 +</ul>
   1.156 +
   1.157 +<p>В сети можно найти немало статей и учебников по Hg на русском языке. Мне,
   1.158 +	например, понравился цикл переводных статей Джоэля Спольски: <a
   1.159 +	href="http://habrahabr.ru/post/108658/" target="_blank">Hg Init: Часть 2.
   1.160 +	Основы Mercurial</a>. Самое основное, действительно, можно рассказать за
   1.161 +	минуту, но иногда могут возникнуть ситуации, когда вам понадобится помощь.
   1.162 +	Прочитайте и обязательно закрепите полученные данные на практике, прежде
   1.163 +	чем работать с репозитариями SliTaz.</p>
   1.164 +
   1.165 +
   1.166 +<h2 id="gui">GUI — на C/GTK, Yad, Vala/Genie и CGI/web</h2>
   1.167 +
   1.168 +<p>Существует много способов создания пользовательского интерфейса в мире
   1.169 +	открытого исходного кода. С самого начала проекта и до 3.0 мы, в основном,
   1.170 +	использовали утилиту под названием GtkDialog. Она позволяет нам создавать
   1.171 +	очень красивый и сложный интерфейс в GTK с помощью скриптового языка,
   1.172 +	который можно просто запустить без необходимости компиляции. Но, GtkDialog
   1.173 +	перестал развиваться, в нём не хватает многих новых возможностей GTK.
   1.174 +	Поэтому мы перешли на Yad для простых графических диалогов. А все диалоги
   1.175 +	администрирования, пакетного менеджера и утилит настройки используют
   1.176 +	TazPanel, веб-интерфейс которой написан на xHTML 5 и CSS 3.</p>
   1.177 +<p>Yad очень прост, он не позволяет создавать сложные интерфейсы, даже если нам
   1.178 +	нужны только 2 или 3 пункта с метками и несколько кнопок, поэтому придётся
   1.179 +	искать другое решение. Преимущество скриптового языка в том, что его
   1.180 +	не нужно компилировть, диалоги можно писать в режиме реального времени
   1.181 +	(но он производит медленные приложения). Написание утилит на C сложно и
   1.182 +	доступно не каждому, в то время как SHell-скрипты проще для понимания.
   1.183 +	Поэтому сейчас наш руководящий принцип — сохранить и продолжать
   1.184 +	совершенствовать наши утилиты командной строки, а также обеспечить их
   1.185 +	графическим интерфейсом на GTK или CGI/web.</p>
   1.186 +<p>Многие новые языки, такие как Genie, Vala и GTKaml, используют GTK. Но,
   1.187 +	имейте в виду, что они не так популярны, как C и GTK, и не факт, что их
   1.188 +	проще освоить и использовать (для выполнения действий в простых приложениях
   1.189 +	можно использовать скрипты оболочки). Вы можете использовать Vala, но,
   1.190 +	посмотрите на чистый код GTK, создающий одно окно, для этого нужно всего
   1.191 +	14 строк:</p>
   1.192 +
   1.193 +<pre>
   1.194 +#include &lt;gtk/gtk.h&gt;
   1.195 +
   1.196 +int main(int argc, char *argv[])
   1.197 +{
   1.198 +	GtkWidget *window;
   1.199 +
   1.200 +	gtk_init(&amp;argc, &amp;argv);
   1.201 +	window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
   1.202 +	g_signal_connect (G_OBJECT (window), "destroy",
   1.203 +		G_CALLBACK (gtk_main_quit), NULL);
   1.204 +
   1.205 +	gtk_widget_show(window);
   1.206 +	gtk_main();
   1.207 +	return 0;
   1.208 +}
   1.209 +</pre>
   1.210 +
   1.211 +<p>Если вы не уверены в том, какой язык использовать, обсудите его в рассылке.
   1.212 +	Если вам нужен только небольшой функционал GUI, посмотрите на tazbox
   1.213 +	в репозитории slitaz-tools, в нём есть крошечные утилиты для рабочего
   1.214 +	стола, такие как окно выхода из системы. Первый подпроект SliTaz,
   1.215 +	написанный на чистом GTK, — это TazWeb. Вы можете разобраться с ним, чтобы
   1.216 +	узнать способы использования system() для добавления системных команд
   1.217 +	в интерфейс. Например, TazWeb использует Wget для загрузки и Sed для
   1.218 +	добавления закладок.</p>
   1.219 +<p>Скрипты Yad должны следовать руководящим принципам TazYad: <a
   1.220 +	href="http://hg.slitaz.org/slitaz-dev-tools/raw-file/tip/tazyad/README">README</a>
   1.221 +	и <a
   1.222 +	href="http://hg.slitaz.org/slitaz-dev-tools/raw-file/tip/tazyad/tazyad">пример кода</a>.</p>
   1.223 +
   1.224 +
   1.225 +<h2 id="iconv">Реализация iconv()</h2>
   1.226 +
   1.227 +<p>SliTaz использует iconv(), предоставленный GNU glibc — любые пакеты,
   1.228 +	предлагающие <code>libiconv</code>, должны использовать библиотеку,
   1.229 +	содержащуюся в <code>glibc-locale</code>. Поэтому в SliTaz больше не входит
   1.230 +	пакет libiconv (1,2 МБ).</p>
   1.231 +
   1.232 +
   1.233 +<h2 id="pkgs">Сборка пакетов SliTaz</h2>
   1.234 +
   1.235 +<p>Официальная сборка осуществляется с помощью Cookutils. Программа, а также
   1.236 +	документация о том, как использовать cook и <a
   1.237 +	href="http://hg.slitaz.org/cookutils/raw-file/tip/doc/cookutils.en.html"
   1.238 +	>создавать пакеты SliTaz</a> для пакетного менеджера TazPKG, установлена
   1.239 +	на каждой системе SliTaz.</p>
   1.240 +<p>Пакеты tazpkg в SliTaz создаются автоматически при помощи <a
   1.241 +	href="http://cook.slitaz.org/">Cooker</a> («повар») из пакета Cookutils,
   1.242 +	а также рецепта из wok. В Cookbook описан формат <a
   1.243 +	href="http://doc.slitaz.org/en:cookbook:receipt">рецептов</a>. Прежде,
   1.244 +	чем начать, необходимо прочитать документацию о Cook и рецептах.</p>
   1.245 +<p>Что касается выбора пакета, идея состоит в том, чтобы предложить пакет по
   1.246 +	задаче или функциональности, т.е. выбрать самое легкое приложение
   1.247 +	в какой-либо области, которое не дублирует уже имеющихся функций других
   1.248 +	пакетов. Обратите внимание, что текущие пакеты могут быть изменены; если
   1.249 +	вы найдете альтернативу, которая легче, или с более широкими возможностями,
   1.250 +	или более <em>привлекательная</em> за счет нескольких дополнительных КБ,
   1.251 +	вы можете предложить ее другим в рассылке. Особое внимание необходимо
   1.252 +	уделить пакетам для LiveCD, они должны быть очищены, лишены необязательных
   1.253 +	зависимостей и опций компилятора. Обычно, кандидаты пакетов для основного
   1.254 +	LiveCD обсуждаются в рассылке.</p>
   1.255 +<p>Прежде чем вы приступите к компиляции и созданию пакетов для SliTaz,
   1.256 +	убедитесь, что их еще нет в <a
   1.257 +	href="http://download.tuxfamily.org/slitaz/packages/undigest/"
   1.258 +	>неофициальном</a> wok, который находится на основном зеркале SliTaz.
   1.259 +	Не забывайте, что участники рассылки могут помочь вам и о том, что
   1.260 +	документация по <a href="http://doc.slitaz.org/en:cookbook:wok">wok и
   1.261 +	утилитам</a> написана, чтобы помочь вам начать работу.</p>
   1.262 +
   1.263 +
   1.264 +<h3 id="pkgs-naming">Именование пакетов</h3>
   1.265 +
   1.266 +<p>В большинстве случаев пакет называется так же, как его исходник,
   1.267 +	за исключением модулей Python, Perl, PHP, Ruby и Lua. Например, пакет,
   1.268 +	содержащий шаблон Kid для системы, написанной на Python и XML называется
   1.269 +	<code>python-kid</code>.</p>
   1.270 +
   1.271 +
   1.272 +<h2 id="website">Управление сайтом</h2>
   1.273 +
   1.274 +<p>Управление сайтом осуществляется через репозиторий Mercurial, он может
   1.275 +	быть клонирован командой:</p>
   1.276 +
   1.277 +<pre>$ hg clone http://hg.slitaz.org/website</pre>
   1.278 +
   1.279 +<p>Или, если у вас есть соответствующие права:</p>
   1.280 +
   1.281 +<pre>$ hg clone http://repos.slitaz.org/website</pre>
   1.282 +
   1.283 +
   1.284 +<h3>Стиль написания xHTML</h3>
   1.285 +
   1.286 +<p>Страницы и различные <em>книги</em> написаны на xHTML 1.0 Transitional.
   1.287 +	Заголовок 1-го уровня используется только один раз (вверху страницы),
   1.288 +	заголовок 2-го уровня — это название документа, а уровни 3 и 4 используются
   1.289 +	для подзаголовков. Если используется маркированный список со ссылками на
   1.290 +	подразделы страницы, то он помещается вверху, сразу после заголовка 2-го
   1.291 +	уровня. Абзацы текста окружаются тегами <code>&lt;p&gt;…&lt;/p&gt;</code>.
   1.292 +	Для отступов мы используем не пробелы, а табуляцию — она помогает понять
   1.293 +	структуру страницы и экономит вес, занимаемый страницей (в байтах).
   1.294 +	Для того, чтобы поместить внутри абзаца код, как, например, имя команды,
   1.295 +	предпочтительно использовать <code>&lt;code&gt;</code>. Для отображения
   1.296 +	команд и демонстрации использования терминала в веб-странице используется
   1.297 +	<code>&lt;pre&gt;</code> для отображения заранее отформатированного
   1.298 +	текста. Пример:</p>
   1.299 +
   1.300 +<pre>$ команда</pre>
   1.301 +
   1.302 +<p>Для отображения текста, который можно скопировать и вставить, например,
   1.303 +	скриптов, фрагментов кода, примеров конфигурационных файлов и т.д. — мы
   1.304 +	также используем <code>&lt;pre&gt;</code>, но с CSS-классом под названием
   1.305 +	"script". Пример:</p>
   1.306 +
   1.307 +<pre class="script">
   1.308 +&lt;pre class="script"&gt;
   1.309 +
   1.310 +код…
   1.311 +
   1.312 +&lt;/pre&gt;
   1.313 +</pre>
   1.314 +
   1.315 +<p><em>Выделенные</em> слова помещаются в тег <code>&lt;em&gt;</code>, а
   1.316 +	внутренние ссылки являются относительными. Не забудьте проверить
   1.317 +	соответствие кода стандартам при помощи онлайнового <em>валидатора</em>
   1.318 +	от W3C.</p>
   1.319 +
   1.320 +
   1.321 +<h2 id="diff">Diff и patch</h2>
   1.322 +
   1.323 +<p>Утилиты командной строки <code>diff</code> и <code>patch</code>
   1.324 +	соответственно создают и применяют специальные файлы (<em>«патчи»</em>),
   1.325 +	в которых содержатся различия между двумя файлами. Эта техника часто
   1.326 +	используется для совместной работы — она позволяет легко увидеть изменения,
   1.327 +	внесенные в исходный файл. Чтобы создать файл <code>diff</code>, который
   1.328 +	предназначен для чтения людьми в простом текстовом редакторе, используйте
   1.329 +	параметр <code>-u</code>:</p>
   1.330 +
   1.331 +<pre>$ diff -u файл.оригинал файл.измененный &gt; файл.diff</pre>
   1.332 +
   1.333 +<p>Применить патч:</p>
   1.334 +
   1.335 +<pre>$ patch файл.оригинал файл.diff</pre>
   1.336 +
   1.337 +<!-- End of content -->
   1.338 +</div>
   1.339 +
   1.340 +<?php include("../../lib/html/footer.ru.html"); ?>
   1.341 +
   1.342 +</body>
   1.343 +</html>