Совместное управление
- KISS и соответствие стандартам
- Сборочный хост и дом
- Репозитории Mercurial
- GUI в GTK и CGI/web
- Реализация iconv()
- Сборка пакетов SliTaz
- Управление сайтом
KISS и соответствие стандартам
Что означает KISS? Будьте проще: следуйте лучшим стандартам, тщательно планируйте и пишите качественную документацию, делайте систему стабильной и надежной, сохраняйте rootfs на LiveCD настолько лёгким, чтобы дистрибутив мог запускаться на компьютерах со 128 МБ оперативки. В дистрибутиве возможно использование GTK+2, Dialog, SHell-скриптов и средств разработки PHP. Идея заключается в том, чтобы не дублировать существующее, и думать о малом…
Tank — сборочный хост и домашние папки
Участники проекта могут получить аккаунт на сервере Tank с безопасным доступом, дисковым пространством, общим каталогом и всеми средствами разработки. Разработчики могут компилировать пакеты, а мэйнтейнеры зеркала могут осуществлять синхронизацию. На сервере Tank также находятся домены веб-загрузки, сборочного бота и SliTaz Pro: tank.slitaz.org.
Инструкции по использованию сборочного хоста описаны в Cookbook: SliTaz Build Host (Tank).
Репозитории Mercurial
Репозитории SliTaz Mercurial (Hg) можно просматривать и клонировать без ограничений, используя адрес http://hg.slitaz.org/.
Те, у кого есть доступ на запись, могут напрямую использовать адрес repos.slitaz.org, требующий аутентификации.
Mercurial работает на Python; его можно установить командой tazpkg get-install mercurial
~/.hgrc
Перед тем, как отправить ваш первый коммит на сервер, внесите в файл конфигурации Hg ваше имя, фамилию и адрес электронной почты. Запомните, Hg не будет работать, если вы root. Пример персонального файла ~/.hgrc:
[ui] username = Ivan Ivanov <ivanov@example.com>
Клонировать → изменить → зафиксировать изменения → отправить
Клонировать репозиторий, к примеру, wok:
$ hg clone http://repos.slitaz.org/wok
Перейдите в папку wok; вы должны находиться в репозитории, чтобы иметь возможность использовать команды 'hg'. Чтобы проверить все журналы, или просто последний журнал:
$ hg log $ hg head
Добавьте или измените один или несколько файлов и зафиксируйте коммит:
$ hg add $ hg status $ hg commit -m "Log message..." $ hg log
Обратите внимание, что вы можете использовать команду rollback
для отмены последней операции.
Перед отправкой изменений на сервер (push — «протолкнуть» изменения на сервер) возьмите за правило принимать текущие изменения с сервера (при их наличии):
$ hg pull $ hg push
Готово, теперь ваши изменения, код или исправления находятся на сервере.
Обновление локального wok
Для того, чтобы обновить ваш wok скомандуйте (pull — «втянуть» изменения с сервера):
$ hg pull -u
Полезные команды
Могут быть использованы следующие команды Hg:
-
hg help
— показать полный список команд. -
hg rollback
— отменить последнее действие (commit, pull, push). -
hg log пакет
— показать журнал для пакета. -
hg head
— показать последний журнал.
В сети можно найти немало статей и учебников по Hg на русском языке. Мне, например, понравился цикл переводных статей Джоэля Спольски: Hg Init: Часть 2. Основы Mercurial. Самое основное, действительно, можно рассказать за минуту, но иногда могут возникнуть ситуации, когда вам понадобится помощь. Прочитайте и обязательно закрепите полученные данные на практике, прежде чем работать с репозитариями SliTaz.
GUI — на C/GTK, Yad, Vala/Genie и CGI/web
Существует много способов создания пользовательского интерфейса в мире открытого исходного кода. С самого начала проекта и до 3.0 мы, в основном, использовали утилиту под названием GtkDialog. Она позволяет нам создавать очень красивый и сложный интерфейс в GTK с помощью скриптового языка, который можно просто запустить без необходимости компиляции. Но GtkDialog перестал развиваться, в нём не хватает многих новых возможностей GTK. Поэтому мы перешли на Yad для простых графических диалогов. А все диалоги администрирования, пакетного менеджера и утилит настройки используют TazPanel, веб-интерфейс которой написан на xHTML 5 и CSS 3.
Yad очень прост, он не позволяет создавать сложные интерфейсы, даже если нам нужны только 2 или 3 пункта с метками и несколько кнопок, поэтому придётся искать другое решение. Преимущество скриптового языка в том, что его не нужно компилировть, диалоги можно писать в режиме реального времени (но он производит медленные приложения). Написание утилит на C сложно и доступно не каждому, в то время как скрипты оболочки проще для понимания. Поэтому сейчас наш руководящий принцип — сохранить и продолжать совершенствовать наши утилиты командной строки, а также обеспечить их графическим интерфейсом на GTK или CGI/веб.
Многие новые языки, такие как Genie, Vala и GTKaml, используют GTK. Но имейте в виду, что они не так популярны, как C и GTK, и не факт, что их проще освоить и использовать (для выполнения действий в простых приложениях можно использовать скрипты оболочки). Вы можете использовать Vala, но посмотрите на чистый код GTK, создающий одно окно, для этого нужно всего 14 строк:
#include <gtk/gtk.h> int main(int argc, char *argv[]) { GtkWidget *window; gtk_init(&argc, &argv); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK (gtk_main_quit), NULL); gtk_widget_show(window); gtk_main(); return 0; }
Если вы не уверены в том, какой язык использовать, обсудите его в рассылке. Если вам нужен только небольшой функционал GUI, посмотрите на tazbox в репозитории slitaz-tools, в нём есть крошечные утилиты для рабочего стола, такие как окно выхода из системы. Первый подпроект SliTaz, написанный на чистом GTK, — это TazWeb. Вы можете разобраться с ним, чтобы узнать способы использования system() для добавления системных команд в интерфейс. Например, TazWeb использует Wget для загрузки и Sed для добавления закладок.
Скрипты Yad должны следовать руководящим принципам TazYad: README и пример кода.
Реализация iconv()
SliTaz использует iconv(), предоставленный GNU glibc — любые пакеты, предлагающие libiconv
, должны использовать библиотеку, содержащуюся в glibc-locale
.
Поэтому в SliTaz больше не входит пакет libiconv (1,2 МБ).
Сборка пакетов SliTaz
Официальная сборка осуществляется с помощью Cookutils. Программа, а также документация о том, как использовать cook и создавать пакеты SliTaz для пакетного менеджера TazPKG, установлена на каждой системе SliTaz.
Пакеты tazpkg в SliTaz создаются автоматически при помощи Cooker («повар») из пакета Cookutils, а также рецепта из wok. В Cookbook описан формат рецептов. Прежде, чем начать, необходимо прочитать документацию о Cook и рецептах.
Что касается выбора пакета, идея состоит в том, чтобы предложить пакет по задаче или функциональности, т.е. выбрать самое легкое приложение в какой-либо области, которое не дублирует уже имеющихся функций других пакетов. Обратите внимание, что текущие пакеты могут быть изменены; если вы найдете альтернативу, которая легче, или с более широкими возможностями, или более привлекательная за счет нескольких дополнительных килобайт, вы можете предложить ее другим в рассылке. Особое внимание необходимо уделить пакетам для LiveCD, они должны быть очищены, лишены необязательных зависимостей и опций компилятора. Обычно, кандидаты пакетов для основного LiveCD обсуждаются в рассылке.
Прежде чем вы приступите к компиляции и созданию пакетов для SliTaz, убедитесь, что их еще нет в неофициальном wok, который находится на основном зеркале SliTaz. Не забывайте, что участники рассылки могут помочь вам и о том, что документация по wok и утилитам написана, чтобы помочь вам начать работу.
Именование пакетов
В большинстве случаев пакет называется так же, как его исходник, за исключением модулей Python, Perl, PHP, Ruby и Lua.
Например, пакет, содержащий шаблон Kid для системы, написанной на Python и XML называется python-kid
.
Управление сайтом
Управление сайтом осуществляется через репозиторий Mercurial, он может быть клонирован командой:
$ hg clone http://hg.slitaz.org/website
Или, если у вас есть соответствующие права:
$ hg clone http://repos.slitaz.org/website
Стиль написания xHTML
Страницы и различные книги написаны на xHTML 1.0 Transitional.
Заголовок 1-го уровня используется только один раз (вверху страницы), заголовок 2-го уровня — это название документа, а уровни 3 и 4 используются для подзаголовков.
Если используется маркированный список со ссылками на подразделы страницы, то он помещается вверху, сразу после заголовка 2-го уровня.
Абзацы текста окружаются тегами <p>…</p>
.
Для отступов мы используем не пробелы, а табуляцию — она помогает понять структуру страницы и экономит вес, занимаемый страницей (в байтах).
Для того, чтобы поместить внутри абзаца код, как, например, имя команды, предпочтительно использовать <code>
.
Для отображения команд и демонстрации использования терминала в веб-странице используется <pre>
для отображения заранее отформатированного текста.
Пример:
$ команда
Для отображения текста, который можно скопировать и вставить, например, скриптов, фрагментов кода, примеров конфигурационных файлов и т.д. — мы также используем <pre>
, но с CSS-классом под названием «script».
Пример:
<pre class="script"> код… </pre>
Выделенные слова помещаются в тег <em>
, а внутренние ссылки являются относительными.
Не забудьте проверить соответствие кода стандартам при помощи онлайнового валидатора от W3C.
Diff и patch
Утилиты командной строки diff
и patch
соответственно создают и применяют специальные файлы («патчи»), в которых содержатся различия между двумя файлами.
Эта техника часто используется для совместной работы — она позволяет легко увидеть изменения, внесенные в исходный файл.
Чтобы создать файл diff
, который предназначен для чтения людьми в простом текстовом редакторе, используйте параметр -u
:
$ diff -u файл.оригинал файл.измененный > файл.diff
Применить патч:
$ patch файл.оригинал файл.diff