Совместное управление
- 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@mail.org>
Клонировать → изменить → зафиксировать изменения → отправить
Клонировать репозиторий, к примеру, 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 сложно и доступно не каждому, в то время как SHell-скрипты проще для понимания. Поэтому сейчас наш руководящий принцип — сохранить и продолжать совершенствовать наши утилиты командной строки, а также обеспечить их графическим интерфейсом на GTK или CGI/web.
Многие новые языки, такие как 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
![[ Home ]](/images/home.png)
Присоединяйтесь к нам 