Автор -- Алексей Федорчук
Если в доинтернетовскую эру автору для публикации своих произведений требовалась мощная производственная база (или — контакт с лицами и организациями, таковой располагающими, сиречь издательствами), то с появлением web все оказалось в его руках — Всемирная паутина предоставляет неограниченные возможности для творческого самовыражения. Единственное условие — умение представить свое произведение в одной из форм, для этой самой паутины приемлемых. А формой, наиболее универсальной из приемлемых, является самая тривиальная html-страница — структурированный текст, размеченный посредством соответствующих тегов.
Разметка html-страницы — занятие не сложное, однако расставлять теги все равно нужно. И потому не замедлил появиться инструментарий для выполнения этого процесса. В том числе — и ориентированный на открытые и свободные POSIX-совместимые платформы, из каковых наибольшее распространение получил Linux (и, в меньшей степени, FreeBSD). Опять же обращаясь к собственным воспоминаниям, замечу, что именно подготовка web-материалов оказалась той областью, в которой мне впервые (в далеком уже 1998 году) удалось применить мощь POSIX-систем в мирных, то есть настольно-производственных, целях.
К слову сказать — работа с html-материалами представляет интерес отнюдь не только для профессиональных web-дизайнеров, web-мастеров и прочих лиц, по долгу службы связанных с Интернет-технологиями. Ибо это — чуть ли не единственный (за исключением plain text, конечно) формат, почти однозначно воспринимаемый на всех аппаратных платформах, во всех операционных системах, в любом национально-языковом окружении (в том числе даже и русском, с его многочисленными кодировками Великого и Могучего). И, в отличие от чистого текста, позволяющий представлять материал в структурированном и визуально оформленном виде.
Изначально существовало два направления в технологии подготовки web-страниц — визуальное их редактирование и редактирование html-кода. В первом случае порядок действий точно такой же, как и при подготовке для печати обычных текстов в программах, именуемых по русски обычно текстовыми процессорами, вроде всем известного MS Word (на самом деле text processor — это совершенно другая вещь, а программы этого класса в оригинале именуются word processor, но это тема для отдельного разговора). Что легко и просто, однако далеко не всегда способно дать результат, адекватный задуманному (а при отсутствии специфического опыта — подчас прямо противоположный). И потому о визуальных редакторах речи здесь не будет.
Да, еще: все сказанное ниже относится к работе с преимущественно текстовыми web-материалами. Подготовка web-графики — тема совершенно отдельная, и здесь почти не затрагивается.
В качестве же редактора html-кода можно использовать обычный текстовый редактор. Каковых в свободном исполнении, как известно, существуют многие множества. Причем тут опять же возможно два подхода — ввод тегов в процессе набора материала или предварительная его подготовка в формате plain text с последующей его разметкой. И то, и другое в принципе не влечет за собой никаких сложностей, но весьма занудно, так как сводится к многократному повторению рутинных действий. И потому возникает естественное желание как-то автоматизировать этот процесс (ибо, как неоднократно подчеркивалось, приверженность смертному греху лености — неотъемлемый атрибут истинного POSIX’ивиста).
Напрашивающееся решение автоматизации ввода тегов в уже существующий текстовый материал — использование shell-скриптинга. Благо среди классических Unix-утилит нетрудно отыскать соответствующие средства, например, потоковый (неинтерактивный) текстовый редактор sed
. В сочетании с утилитами поиска файлов и последовательностей символов в оных (find
и grep
, соответственно), он, благодаря штатным средствам POSIX-систем (механизмам конвейеризации команд и перенаправления их ввода/вывода), способен решить большинство задач html-разметки (и не только ее). Дополнительный плюс этого подхода — возможность пакетной разметки большого количества web-страниц одновременно.
Есть, однако, и минусы. Сочинение shell-скриптов вообще требует некоторых навыков, а в данном случае необходимо еще и знание особенностей собственно утилиты sed
(или — языка awk
, также пригодного к выполнению этой задачи). Требуются и некоторые чисто программистские навыки — представление об операторах, например. Все это, конечно, дело наживное — однако, по моему скромному мнению, временные затраты на сочинение сценариев html-разметки оправданы только в том случае, если уже имеется достаточно большой объем чисто текстовых материалов, которые необходимо претворить в web-страницы. При сочинении же их с нуля более целесообразно автоматически вводить теги одновременно с набором текста.
Благо и тут свободные программы — в лице обычных текстовых редакторов, — окажутся небесполезными. Практически любой представитель этого семейства, функциональность которого выходит за элементарные рамки (а за точку элементарности можно принять штатный ee
из FreeBSD и nano
, входящий в большинство Linux-дистрибутивов), располагает собственным макроязыком программирования. Остается только сочинить соответствующие макросы и привязать их к “горячим” клавишам, чтобы в дальнейшем в ответ на нажатие, скажем, клавиши F1 получать заголовок 1-го уровня, клавишей F4 оформлять параграфы (тег
) и так далее. Если же и макросы сочинять лениво — в распоряжении пользователя всех более-менее “продвинутых” редакторов имеется возможность протоколирования собственных действий с оформлением результата в виде макрокоманд. В ряде работ можно найти примеры того, как легким движением руки универсальные текстовые редакторы joe
и nedit
превращаются в специализированные инструменты для создания web-страниц. А для таких гигантов текстового редактирования, как vim
или emacs
дополнения для html-разметки придуманы давным-давно — нужно только их поискать на соответствующих сайтах (для начала — на http://www.vim.org и http://www.gnu.org/software/emacs, соответственно).
Особого внимания в качестве web-инструмента заслуживает kate
— наиболее мощный из штатных текстовых редакторов KDE. Как и в файловом менеджере konqueror
, описанном в предыдущей интермедии, парадигма его — интеграция эпонимического средства (в данном случае — текстового редактора) со средствами визуализации файловых операций и полноценным эмулятором терминала, к коим добавлен мощный инструмент для поиска файлов. Есть в kate
и штатные способы полуавтоматического ввода тегов HTML (и даже XML, с проверкой валидности последних), и средства ведения проектов, и многое другое. Правда, расширение штатных возможностей этого редактора — задача нетривиальная, требующая уже всамделишнего умения программировать. Однако и наличных модулей расширения для kate
(объединяемых в комплекс KPart) хватает для решения многих и многих задач.
Такой адаптированный текстовый редактор — прекрасный инструмент для работы с отдельными web-страницами и небольшими их наборами, типа домашних страниц. Однако плох тот “хомяк”, который не мечтает стать полноценным контент-сайтом. А при работе с таковым хочется уже большего — средств ведения проектов и поддержания их целостности, как минимум.
Конечно, и эта проблема решаема штатными POSIX-средствами. Все уважающие себя текстовые редакторы POSIX-мира позволяют запускать внутри себя команды оболочки и командные конструкции, в том числе и пользовательские сценарии. И ничто не мешает сочинить набор скриптов для открытия группы объединенных в проект файлов, проверки целостности внутренних ссылок, предварительного просмотра в распространенных браузерах и прочих функций, ожидаемых от средств ведения проектов. Кроме одной мысли — а не изобретаем ли мы тем самым велосипед? И не сделал ли это кто-нибудь до нас?
Поскольку пользователь POSIX-систем стоит на плечах гигантов, ответ, разумеется, будет положительным. Остается только такие средства отыскать. К счастью (или — к сожалению?) полноценных редакторов html-кода для свободных платформ не так и много — всего три. Это bluefish
и screem
, базирующиеся на библиотеке Gtk, и Quanta Plus, предназначенная для работы в среде KDE (и, соответственно, использующая библиотеку Qt). Именно о последней и пойдет речь далее в этой заметке.