website diff ru/devel/forge.php @ rev 1089
i18n.php: add scripts to auto-generate table
author | Aleksej Bobylev <al.bobylev@gmail.com> |
---|---|
date | Fri Jul 27 13:59:05 2012 +0000 (2012-07-27) |
parents | |
children | 9ed0bfb74392 |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/ru/devel/forge.php Fri Jul 27 13:59:05 2012 +0000 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 <ivanov@mail.org> 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 <gtk/gtk.h> 1.195 + 1.196 +int main(int argc, char *argv[]) 1.197 +{ 1.198 + GtkWidget *window; 1.199 + 1.200 + gtk_init(&argc, &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><p>…</p></code>. 1.292 + Для отступов мы используем не пробелы, а табуляцию — она помогает понять 1.293 + структуру страницы и экономит вес, занимаемый страницей (в байтах). 1.294 + Для того, чтобы поместить внутри абзаца код, как, например, имя команды, 1.295 + предпочтительно использовать <code><code></code>. Для отображения 1.296 + команд и демонстрации использования терминала в веб-странице используется 1.297 + <code><pre></code> для отображения заранее отформатированного 1.298 + текста. Пример:</p> 1.299 + 1.300 +<pre>$ команда</pre> 1.301 + 1.302 +<p>Для отображения текста, который можно скопировать и вставить, например, 1.303 + скриптов, фрагментов кода, примеров конфигурационных файлов и т.д. — мы 1.304 + также используем <code><pre></code>, но с CSS-классом под названием 1.305 + "script". Пример:</p> 1.306 + 1.307 +<pre class="script"> 1.308 +<pre class="script"> 1.309 + 1.310 +код… 1.311 + 1.312 +</pre> 1.313 +</pre> 1.314 + 1.315 +<p><em>Выделенные</em> слова помещаются в тег <code><em></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 файл.оригинал файл.измененный > файл.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>