LXF162:Документация
|
|
|
Текстовые утилиты. Создавайте лучшие руководства и инструкции для своих проектов.
Содержание |
Документация: Всем поможем
Улучшите жизнь пользователям своих программ или чужих программ, у которых нет хороших руководств. Майк Сондерс показывает, как это делается.
Писать код здорово – можно оригинальничать, пробовать новое, выводить все из строя и похлопать себя по спине, когда что-то получится. А вот писать документацию не столь увлекательно, особенно когда вместо этого вы бы лучше реализовывали всякие функции. Это одна из причин, по которой документация в Linux (не считая популярных настольных приложений) часто неполна. Проще говоря, мало кому охота ее писать.
Однако хорошая документация превращает нормальную программу в прекрасную. Ваша программа может иметь самый впечатляющий в мире набор функций, а код – лопаться от гениальнейших алгоритмов, но если никто не в состоянии пользоваться вашей программой или понять вашу работу, все это напрасно.
Поэтому на нашем уроке мы расскажем об утилитах и знаниях, необходимых для создания документации высшего качества. Даже если вы не программист, это все равно будет полезно: решив помочь какому-нибудь проекту с открытым исходным кодом, после чтения этой статьи вы сможете внести свой вклад в ее документацию. Многие проекты отчаянно нуждаются в хороших авторах для руководств, вот мы и направим вас на верный путь.
Использование DocBook
Но прежде чем написать хоть слово, нужно выбрать формат. Большинство пользователей ныне ожидает увидеть не просто текстовые файлы README, а документацию в HTML, PDF или другие роскоши. Теоретически всю документацию можно написать в текстовых файлах и затем сделать версии в HTML и PDF, но это долго и трудоемко. И каждый раз при изменении текстовой версии придется вносить правки в версии и HTML, и PDF.
К счастью, решение есть – и это DocBook. Это система генерации документации из одного источника во множестве форматов (HTML, PDF, электронные книги, страницы man и многие другие). Источник – это документ в формате XML, и работать нужно только с ним. Набор утилит преобразует файл XML в другие форматы. DocBook весьма популярен в сообществе сторонников свободного ПО: он применяется в KDE, Gnome и других крупных проектах.
Для тех, кто никогда не сталкивался с XML – это формат представления данных в текстовых файлах. По сути, данные хранятся в контейнерах, обозначаемых словами в угловых скобках. Представьте себе телефонную книгу с абонентами Бобом Смитом [Bob Smith] и Джо Блоггзом [Joe Bloggs]. В «обычной», текстовой версии это будет нечто вроде
Name: Bob Smith
Number: 01762 271 482
Name: Joe Bloggs
Number: 08293 186 172
Для восприятия человеком такое хорошо подходит, но оно не слишком стандартизировано: например, в других телефонных книгах вместо двоеточий могут использоваться отступы и т. д. Без единого стандарта понадобится множество программ разборки подобных данных, и каждая будет работать по-своему. Но с помощью XML можно упростить компьютеру чтение:
<entry>
<name>Bob Smith</name>
<number>01762 271 482</number>
</entry>
<entry>
<name>Joe Bloggs</name>
<number>08293 186 172</number>
</entry>
Теперь компьютер прекрасно поймет, где начинаются и заканчиваются данные. Слова внутри угловых скобок (тэги) не содержат данных, но идентифицируют их. В закрывающем тэге используется прямой слэш. Так, тэг <entry> [запись] начинает новую запись в телефонной книге, а тэг </entry> завершает ее (если вы знакомы с HTML, то должны понять синтаксис). Данные также можно вкладывать друг в друга, так что раздел <name>…</name> [имя] может быть внутри раздела <entry>…</entry>, как в нашем примере. Чтобы упростить чтение, можно выделять вложенные разделы отступом, но это необязательно.
Важно отметить, что XML-файлы DocBook фокусируются только на содержании данных, а не на их представлении. Тэги описывают только то, какую информацию они содержат – названия, параграфы и т. д. – а не то, как ее нужно отображать или выводить на печать. Это дает нам максимальную гибкость для преобразования текста во множество форматов, в чем мы вскорости и убедимся.
Утилиты
Файлы DocBook можно писать в любом текстовом редакторе, но вам также понадобятся программы для их конвертации: xsltproc и docbook-xsl. Они есть в большинстве дистрибутивов, а для их установки в Ubuntu и других дистрибутивах на основе Debian достаточно вызвать apt-get. Откройте свой любимый текстовый редактор и введите следующий текст:
<?xml version=”1.0” encoding=”UTF-8”?>
<!DOCTYPE article PUBLIC “-//OASIS//DTD DocBook XML
V4.4//EN” “http://docbook.org/xml/4.4/docbookx.dtd”>
<article>
<title>Как пользоваться программой FooProg 1.0</title>
<section>
<title>Вызов из командной строки</title>
<para>Да просто наберите fooprog!</para>
<para>Всего и делов.</para>
</section>
</article>
Первые две строки покажутся новичкам в XML абракадаброй, но они всего-навсего поясняют интерпретатору, что это за документ. Затем мы определяем статью [article] и ее заголовок [title] и создаем раздел [section]. Здесь вы видите множественное вложение – раздел состоит из параграфов, а статья – из разделов.
Теперь сохраните файл (в формате UTF-8) под именем test.xml в домашнем каталоге, откройте окно терминала и скомандуйте
xsltproc -o test.html /usr/share/xml/docbook/stylesheet/nwalsh/xhtml/docbook.xsl test.xml
Итак, теперь у нас должен появиться файл test.html (если нет, и вы сделали ошибку в файле, появится сообщение об ошибке с указанием на строку). Откройте test.html в браузере, и вуаля – ваша документация в web-формате.
Вы видите, что команда сгенерировала даже содержание; если добавить в документ новые разделы (<section>...</section>), ссылки на них появятся и в содержании.
Введение в XSLT
Теперь посмотрим, что именно делает команда. Вы помните, что в файлах DocBook нет никакой информации о представлении данных, а в HTML-версии у нас есть большие и маленькие шрифты, горизонтальная линия и другие элементы формата. Откуда они взялись?
Ответ – XSLT (Extensible Stylesheet Language Transformations – преобразования расширяемого языка стилей). Это система, посредством которой тэги XML преобразуются в нечто иное с добавлением информации о стиле. В нашей команде мы вызываем ‘xsltproc’, процессор XSLT, с нашим файлом test.xml в качестве входного и test.html в качестве выходного (задается параметром -o). Но файл, который совершает все волшебство – /usr/share/xml/docbook/stylesheet/nwalsh/xhtml/docbook.xsl
Заглянув в этот файл, вы мигом заработаете головную боль, потому что там сплошь непонятный технояз и структуры. Достаточно будет сказать, что в нем описывается, как тэги XML в файле DocBook конвертируются в HTML, и указывается необходимое форматирование.
Есть и другие таблицы стилей, для конвертации в другие форматы. Например, для преобразования в PDF сначала нужен промежуточный формат XSL-FO (это XML с информацией о форматировании):
xsltproc /usr/share/xml/docbook/stylesheet/docbook-xsl/fo/
docbook.xsl test.xml > test.fo
Затем нужно преобразовать test.fo в файл PDF. Это делается разными способами; один из самых простых – утилитой fop (в Debian/Ubuntu она устанавливается командой apt-get install fop). Затем выполните команду:
fop test.fo test.pdf
По написании документации вы сможете создавать скрипты (или даже пользоваться makefile) для генерации версий в HTML, PDF и любых других форматах одной командой.
Наряду с тэгами <section>, <title> и <para> есть другие возможности для структуризации содержимого. Например, вот так создаются маркированные списки:
<title>Facts</title>
<itemizedlist>
<listitem><para>Пиво - дело хорошее!</para></listitem>
<listitem><para>Да и винишко тоже.</para></listitem>
<listitem><para>Но Минздрав предупреждает.</para></listitem>
</itemizedlist>
Для нумерованного списка замените itemizedlist на orderedlist. У многих тэгов есть атрибуты, меняющие их поведение – например, попробуйте вместо простого <orderedlist> следующий:
<orderedlist numeration=”upperroman”>
Теперь элементы списка будут нумероваться римскими цифрами – и вместо 1, 2, 3, 4 вы увидите I, II, III, IV и т. д. Еще один полезный атрибут этого тэга – continuation. Если установить его в continues, то нумерация будет продолжена с предыдущего списка.
Атрибутов слишком много, чтобы описывать их подробно; если вы хотите узнать прочие возможности тэга, загляните в официальную документацию www.docbook.org/tdg51/en/html и найдите раздел «DocBook Element Reference».
С тэгом <programlisting> включаются фрагменты кода:
<programlisting>
10 PRINT INKEY$
20 GOTO 10
</programlisting>
В HTML это выводится в виде моноширинного шрифта. Тэг<blockquote>делает отступ, а <example> выводит заголовок ‘Example [Пример]’ с номером – номера генерируются автоматически, и если вы добавите новый пример посреди документации, вам не придется перенумеровывать следующие.
Выделить раздел помогут тэги <command> или <emphasis>. (В HTML содержимое первого выделяется жирным шрифтом, второго – курсивом). Для включения ссылки на внешний сайт воспользуйтесь тэгом <ulink> с параметром url:
<ulink url=”http://www.linuxformat.com”>The best website ever </ulink>
Часто бывает нужно включить в документацию внутренние ссылки – на другие разделы. Для этого воспользуйтесь атрибутом id тэга <section>, на который затем можно сослаться.
<section id=”compiling”>
<title>How to build it</title>
...
<para><link linkend=”compiling”>Click here</link> to read the build instructions.</para>
Как видите, мы задали идентификатор раздела (compiling) и затем создали ссылку на этот раздел.
Чтобы вставить в документ изображение, воспользуйтесь тэгами <mediaobject> и <imageobject> следующим образом:
<mediaobject>
<imageobject>
<imagedata fileref=”austrohungary.png” />
</imageobject>
<para>Австро-Венгрия в 1910 г.</para>
</mediaobject>
Обратите внимание на закрывающий слеш в тэге <imagedata> – если внутри тэга нет никаких данных, в конец нужно помещать слэш. Также в этом примере продемонстрировано, как добавляется заголовок.
В DocBook много других тэгов, но обычно они весьма специфичны и не подходят для общей компьютерной документации. Тэгов, которые мы изучили, вполне достаточно для написания руководств и справочников для проектов с открытым исходным кодом.
Между версиями DocBook 4 и 5 есть некоторые различия; первая до сих пор широко используется и хорошо документирована в Сети – поэтому здесь мы сосредоточились на ней. Но основные знания, которые вы получили, подходят к обеим версиям.
Пять шагов к отличной документации
Хотя в этой статье мы в основном говорили о технической стороне дела, всегда стоит помнить и о человеческой стороне, т. е. о том, как сделать ваши руководства максимально доступными.
1 Думайте как пользователь
Представьте, что вы видите программу (или фрагмент кода) впервые. Какие вопросы вы зададите? Какие задачи вы будете решать прежде всего? Какие элементы интерфейса могут оказаться непонятными?
Важно быть осторожным и не закладываться на предыдущий опыт пользователя. Даже если это обычная программа – текстовый процессор или почтовый клиент – подумайте о том, что пользователь мог установить Linux всего несколько часов назад.
2 Структура прежде всего
Старайтесь максимально разбивать информацию на отдельные фрагменты, которые не должны быть слишком большими. Например, в нашем журнале есть разделы, заголовки, врезки и другие возможности, которые помогают давать информацию не в одном большом куске текста.
3 Не документируйте все
Были времена (особенно в мире Windows), когда маленькие знаки вопроса были разбросаны по всем окнам, чтобы вы могли понять, что делает каждая кнопка. Но вполне очевидно, что кнопка «Закрыть» закрывает диалоговое окно. Поэтому сосредоточьтесь на основных возможностях и ключевых аспектах – нет нужды писать пять абзацев текста о том, что делает кнопка «Сохранить».
4 Беседуйте с разработчиками
Если вы документируете чужую программу, поддерживайте регулярную связь с разработчиками, особенно с теми, что отвечают за интерфейс. Найдя что-нибудь слишком странное на вид, чтобы быть задокументированным, или то, что можно существенно упростить, обязательно дайте знать разработчикам. Ваш совет может иметь для них большое значение.
5 Найдите подопытного кролика
По возможности найдите кого-то, кто никогда не пользовался программой, дайте ему свеженаписанную документацию и смотрите, как он будет работать с программой. Это прекрасный способ найти недочеты в документации – или вознаградить вас тем, как хорошо она помогает пользователю!
Написание man-страниц
Согласно правилам Debian GNU/Linux, у каждой программы должна быть man-страница. Сколько раз вам в каталоге /usr/bin попадалась программа со странным именем, и вы не представляли, что она делает? Даже простейшая man-страница с пятистрочным описанием программы все изменит.
Для графической программы, функциональность которой проявляется внутри программы, а не через параметры командной строки, подробная man-страница не нужна. Но для утилит командной строки хорошая документация имеет решающее значение. Для доступа к man-страницам используется одноименная команда – например, man ls. Эти страницы пишутся не простым текстом, а особым языком разметки с дополнительным форматированием. Просмотреть страницу с разметкой можно, например, так:
zless /usr/share/man/man1/ls.1.gz
Если вы хотите поработать с текстовыми файлами, можете взять небольшую страницу из этого каталога (например, znew.1.gz), скопировать ее в свой домашний каталог, распаковать ее командой gunzip и поработать с ней. Чтобы просмотреть ее программой man, укажите путь и имя файла:
man ./znew.1
(Набрав просто man znew, вы увидите версию из /usr/share/man/man1.) Рассмотрим несколько первых строк этого файла:
.TH ZNEW 1
.SH NAME
znew \- преобразует файлы .Z в файлы .gz
.SH SYNOPSIS
.B znew
[ -ftv9PK] [ name.Z ... ]
.SH DESCRIPTION
.I Znew
преобразует файлы из формата .Z (compress) в формата .gz (gzip).
Если вы хотите заново сжать файл в формате gzip, переименуйте файл:
чтобы он получил расширение .Z, затем примените znew.
.SH OPTIONS
.TP
.B \-f
Преобразование из формата .Z в формат .gz, даже если файл .gz уже существует.
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
В языке разметки man-страниц команды форматирования начинаются с точки. Итак, прямо в первой строке мы видим .TH, что означает «заголовок страницы [title header]». За ним следуют имя программы и род man-страниц, к которой она принадлежит (1 для пользовательских команд, 5 для конфигурационных файлов и 8 для утилит системного администрирования). Здесь также можно указать дату в кавычках, например, “23 September 2012”, и она появится в верхней части man-страницы. Затем следует .SH, заголовок раздела [section header]. Он выводится жирным шрифтом, выровненным по левому краю окна, обычно заглавными букаами. Полная, хорошо написанная страница man должна иметь следующие разделы:
» NAME Описание в одну строку
» SYNOPSIS Параметры команды
» DESCRIPTION Краткое пояснение работы программы
» OPTIONS Подробное описание параметров
» EXAMPLES Примеры решения различных задач (обязателен, если у программы много параметров)
» BUGS Любое необычное поведение программы
» AUTHOR Ваш электронный адрес и/или ссылка на сайт
Опции .B и .I выделяют текст жирным шрифтом и курсивом соответственно. На обычных терминалах Unix курсив не отображается, поэтому текст с опцией .I может подчеркиваться или выделяться другим цветом. Вы видите, что .TP начинает новый азбац с отступом для всех строк, кроме первой. Тире лучше предварять обратным слэшем (\-), иначе процессор может интерпретировать их как дефисы.
Если кому по душе графические программы, здесь вам крупно не повезло. Программа ManEdit неплохо справлялась с этой задачей, но она долго не обновлялась, и ее сложно заставить работать в приличных дистрибутивах (она основана на GTK 1). В Gmanedit есть пошаговый мастер создания новой man-страницы, но вам все равно придется работать с размеченным текстом. |
Работа с документами KDE и Gnome
Оба главных рабочих стола используют для документации DocBook, и обоим проектам всегда нужны новые помощники. Самый простой способ помочь – запустить свои любимые программы Gnome/KDE, открыть окно справки и посмотреть, чего не хватает. Некоторые программы уже имеют обширную документацию, но ее все равно можно улучшить – например, она может быть неактуальной или в ней может недоставать раздела. Найдя функцию, которую трудно понять, загляните в справку, и если она недостаточно хорошо описана, вы можете это улучшить. Важный совет: если вы найдете программу без документации (или с очень плохой документацией), не хватайтесь за дело сразу и не пишите сотни слов. Сначала свяжитесь с разработчиками или найдите IRC-канал проекта и узнайте, не работает ли над документацией кто-то еще.
Будет досадно, если вы потратите несколько недель на большой фрагмент текста и окажется, что готовое описание уже есть!
В Gnome имеется удобное руководство для новых авторов – http://developer.gnome.org/gdp-handbook/stable/gettingstarted.html.en, эквивалент для KDE – http://community.kde.org/Getinvolved/documentation.
На каждой из этих страниц вы найдете ссылки на другие руководства, которые объясняют приемы и соглашения, принятые проектами. Например, для KDE существует руководство по стилям (http://l10n.kde.org/docs/styleguide/index.html), объясняющее использование аббревиатур, номер версий и дат; кроме того, там содержатся советы общего характера по написанию хорошей документации. Пренебрегать ими будет себе же во вред.