X Window -- восполняя пробелы. Часть 3 -- утилиты и тулкиты
20 февраль, 2002 - 00:00Андрей Зубинский
Несколько жемчужин
Входящие в стандартную поставку X Window утилиты немногочисленны и ознакомиться с ними самостоятельно читателю особого труда не составит. А вот среди множества разработок, зачастую попадающих в класс "антиквариата", выбрать достойные, полезные и позволяющие полноценно использовать потенциал X Window как реальной программной системы непросто.
Одна из главных особенностей X Window -- сетецентрический характер -- естественно, создает угрозу безопасности. Механизмы аутентификации, предусмотренные базовым утилитарным набором X Window, достаточно просты. Фактически они ограничиваются доверительным перечислением имен компьютеров и/или пользователей (так называемая xhost-аутентификация -- по имени соответствующей утилиты) и mit-magick-cookies (MMC или xauth-аутентификация).
|
xcb, xwit, mxconns и lavaps,
несмотря на размеры и простоту, позволяют значительно повысить эффективность
и безопасность работы со многими приложениями X Window. Массу привычных
вынужденных действий можно автоматизировать, при этом не отягощая излишней
функциональностью и без того сложные прикладные программы
|
Первый механизм хоть и прост, но небезопасен: клиенты, которым "оказано доверие"
подключиться к вашему X-серверу, могут практически все. К сожалению, в хорошо
защищенных локальных сетях использование только такого механизма способно привести
к непредсказуемым последствиям даже не по злому умыслу и не из-за проникновения
извне, а по куда более прозаичной причине, например в результате незнания новым
сотрудником внутренних административных правил или особенностей настроек различного
ПО.
MMC расширяет эти скромные возможности пусть примитивным, но все же более или менее удовлетворительным уточняющим требованием соответствия имени X-сервера и конкретной программы-клиента. Но и такой уровень защиты далеко не всегда надежен.
При учете столь скромных возможностей по защите X Window тем более странным может
показаться факт, что весьма полезная
утилита
mxconns, разработанная в знаменитой CERN (Европейская Организация Ядерных
Исследований) -- "родине" WWW и доступная на основе абсолютно либеральной
лицензии, остается малораспространенной и почти неизвестной. По сути, mxconns
-- это интерактивный виртуальный X-proxy-сервер, позволяющий пользователю рабочей
станции или X-терминала как полностью управлять в реальном времени доступом к
своим ресурсам с помощью удобного графического интерфейса, так и ненавязчиво "отбивать"
подозрительные неаутентифицированные запросы X-протокола. Автором проверена работа
этой утилиты под управлением ряда ОС -- Linux, FreeBSD, Solaris и HP UX, и во
всех случаях mxconns не создавала проблем ни с трансляцией (программа распространяется
в исходных текстах), ни с администрированием. Ее вполне можно отнести к разряду
"крайне необходимых" в случае построения сколько-нибудь серьезных сетевых
систем с использованием X Window.
Впрочем, об опасностях достаточно. Перейдем к более привлекательной теме -- утилитам,
реализующим потенциальные возможности X-технологии. К малоизвестным их представителям
можно отнести, например, крохотную программку управления буферами копирования
(cut buffers)
X
Window -- xcb. X-сервер реализует несколько буферов копирования, но свобода
от политик требует для доступа к подавляющему большинству из них специального
инструмента. xcb как раз является примером реализации "конкретной возможности
при отсутствии политик": утилита позволяет копировать в/из множества буферов,
оперативно "переключаться" между ними и очищать их содержимое. Но, что
самое приятное, xcb, как и любая хорошо спроектированная X-программа, допускает
реальное "клиент-серверное" использование запущенной программы. Так,
можно извне передавать (принимать) содержимое конкретных буферов без низкоуровневого
программирования и дополнительного инструментария.
|
editres не только обеспечивают
настройку приложений, но и являются мощной поддержкой процессов разработки
и реинжиниринга ПО
|
Второй претендент на титул "жемчужинка" также малоизвестен, но функционально
очевиден: раз X Window--система сетевая, раз в ней предусмотрен специальный стандартный
протокол взаимодействия программ-клиентов (ICCCM), следовательно, возможности
этого протокола должны быть доступны не только программам-клиентам, но и пользователю.
На деле это означает, например, что процедуры управления положением окон на экранах
и их состоянием активизируются не только посредством формирующего туннельный синдром
"мышеводства", но и из написанных пользователем скриптов. Обеспечивающую
эти функции старинную утилиту xwit можно найти в
сетевых
архивах. Дополненная функциями утилит xprop и xwininfo из стандартной поставки
X Window (это информационные программы, сообщающие все характеристики любого окна
приложения) xwit позволяет реализовать целые сценарии управления множеством абсолютно
независимых от них приложений, ограничиваемые разве что фантазией и временем пользователя.
Третий претендент на звание "жемчужины" на сегодняшний день, увы, спорный, но все же... -- утилита editres. Спорность и сожаление мы вспомним позже, а пока в двух словах охарактеризуем этот инструмент. Механизм ресурсов X Window, о котором рассказывалось в первой части статьи, на самом деле оказался очень удачным и наглядно демонстрирует действенность инженерного правила "красивое должно работать хорошо". Если раньше мы говорили о ресурсах и идентификаторах ресурсов как о способе сокращения требований к полосе пропускания соединения "клиентская программа -- X-сервер", то теперь пора сказать и о другой привлекательной стороне этой медали. Правильно спроектированное и реализованное X-приложение, полноценно утилизирующее возможности X Window, даже в исполняемом (бинарном) виде обладает мощной базой данных, не только хранящей информацию об архитектуре пользовательского интерфейса, но и позволяющей "на лету", в ходе работы программы, вносить массу изменений в интерфейсную подсистему, не затрагивая собственно код.
|
Спектр прикладных и инструментальных
программ, разработанных с использованием тулкита Motif, настолько широк,
а качество ПО настолько высоко, что все слухи о "гибели" Motif
можно считать преждевременными. Среда разработки систем визуализации данных
IBM Data Explorer, текстовый редактор Nedit, графический front-end к программам
отладки DDD, набор специализированных редакторов диаграмм TCM -- далеко
не полный перечень очень качественных и надежных программ, ставших доступными
после "освобождения" Motif
|
Эти функции поддерживаются, естественно, механизмом ресурсов, а для их утилизации
применяются специальный протокол editres и одноименная утилита с графическим интерфейсом.
На деле это означает, например, сведение процедур локализации интерфейсов к тривиальной
задаче, что, согласитесь, уже не мало. Ну а ценность получаемой от editres архитектурной
информации недооценить трудно: изучение иерархии элементов пользовательского интерфейса,
отображаемой editres в виде графа, элементарный доступ с помощью соответствующих
меню к тонким настройкам каждого интерфейсного элемента -- незаменимые помощники
программиста. editres входит в поставку X Window, но существует и обновленная,
более
удобная
версия этой программы.
И наконец, последний в нашем коротком перечне программ маленький шедевр является на первый взгляд совсем ненужной утилитой. Но она попала сюда не случайно, а из-за уникальности и информативности пользовательского интерфейса. lavaps -- монитор процессов, выполняющихся на вашем компьютере, отображает состояние памяти и активность задач в виде... движущихся разноцветных "пузырьков", изменяющих форму и площадь в соответствии с простыми принципами: чем больше памяти занимает процесс, тем больше площадь "пузырька"; чем больше процессорного времени требует процесс, тем интенсивнее движение. Несмотря на кажущуюся необязательность, lavaps -- это исключительно полезный инструмент, поддерживающий политику "превентивного администрирования" и позволяющий выявлять и устранять проблемы приложений (в первую очередь -- зацикливание и "выедание" памяти) вместо выполнения менее приятных процедур устранения последствий этих проблем.
Тулкиты: чем больше, тем...
Как уже неоднократно говорилось
в этом маленьком цикле статей, X Window -- система, свободная от политик. В том
числе и от политики, навязывающей единый пользовательский интерфейс. Авторы некоторых
весьма удачных и функционально насыщенных программных проектов это свойство использовали
"на все 100%", создав "под задачу" собственные реализации
необходимых интерфейсных примитивов. Но в большинстве случаев в мире программирования
для X Window действует разделение труда: кто-то разрабатывает библиотеки, реализующие
примитивы пользовательского интерфейса (на программистском сленге -- тулкиты),
кто-то использует тулкиты для написания прикладных программ. Естественно, технологические
и идеологические изменения и просто "колебания моды" не могли не сказаться
на этой организационной схеме, и тулкитов для X Window за время существования
системы создано множество. Даже не пытаясь точно классифицировать все это инструментальное
изобилие, бегло познакомимся с несколькими разработками, с которыми пользователю
или программисту X Window непременно придется столкнуться по ряду очевидных причин.
Во-первых, все они являются основой очень хороших программ, во-вторых -- популярны,
в-третьих -- активно развиваются.
Начнем с "настоящих X-тулкитов", полноценно использующих возможности X Window. И здесь пора напомнить читателю об обещанном обсуждении спорности и сожаления, оставленном без внимания при рассмотрении утилиты editres. Уникальная особенность X Window -- механизм ресурсов -- сегодня настолько не в чести, что тулкитам, ее поддерживающим, автор решился присвоить титул "настоящих" (хотя бы потому, что игнорирование механизма X-ресурсов вынуждает разработчиков тулкитов "создавать сущности без необходимости" -- повторять уже имеющуюся функциональность, но в более убогой реализации).
Перечня, увы, в данном случае не получится. Единственный достойный представитель "настоящих тулкитов" -- знаменитый Motif -- даже после частичного "освобождения" и доступности остается в расхожем представлении больше жертвой "ошибок юности" (медленным, уродливым, тяжеловесным), чем тем, что он есть на самом деле сегодня. И очень жаль -- после продолжительного периода массовой интенсивной эксплуатации и развития обновленный Motif (точнее, OpenMotif) версии 2.2, анонсированный буквально на днях, является Непревзойденным и Настоящим. Впрочем, судите сами: функциональность его растет от версии к версии, но программы, написанные еще при царе Горохе, не требуют модификации даже строчки кода и работают все лучше и лучше. Качество и доступность документации, даже по мнению ярых оппонентов, вне критики, инструментальная поддержка образцовая, нейтральность по отношению к характеристикам платформы -- давно решенная проблема. Разработанный на языке C Motif гарантированно освобождает от политики использования программистов -- для него существует множество "искривителей" (wrappers), отображающих программные интерфейсы C в адекватные конструкции самых разных языков программирования -- от C++ до Lisp. И, что главное, Motif остается "полноценно настоящим" -- любое хорошее Motif-приложение в исполняемом виде можно детально "разобрать по косточкам" с помощью editres, тонко настроить и даже изменить его функциональность (если такая возможность, естественно, предусмотрена разработчиком).
|
Независимость от политик
технологии X Window обеспечивает абсолютно мирное сосуществование на одном
компьютере программ из самых разных времен -- от "древних" разработок
на основе Motif до совершенно новых с использованием Qt
|
Второго "героя" нашего повествования можно назвать "почти настоящим".
Он поддерживает механизм X-ресурсов, но не протокол editres. Конечно, жаль, но
специфика "героя" такое "усекновение функциональности" оправдывает,
о нем вообще редко говорят как о самостоятельной единице (еще один пример негативного
влияния расхожего мнения). Речь идет о Tk -- графической подсистеме программного
комплекса Tcl/Tk. Это исключительно функционально насыщенный тулкит, богатством
реализованных интерфейсных примитивов затмевающий многие неплохие разработки.
Очень хорошее качество документации, доступность и кросс-платформенность Tk также
свидетельствуют в пользу удачности и перспективности этой разработки, несмотря
на недавние заявления маркетологов о гибели Tcl/Tk. Впрочем, о Tcl/Tk достаточно
сказать коротко: это программная система, отмеченная премией сообщества ACM (Advanced
Computer Machinery) и тем самым занявшая место в скромном перечне имен наряду
с ОС Unix, протоколом Tcp/Ip, электронной таблицей VisiCalc, системой подготовки
документов TeX и языком программирования
SmallTalk.
На этом перечень "нестоящих X-тулкитов" завершается. И Motif, и Tcl/Tk -- разработки очень старые, проверенные временем. Представители же молодого поколения тулкитов практически поголовно игнорируют лучшие особенности своей целевой платформы, что неуклюже оправдывается стремлением к "мобильности".
Однако и в "новой волне" есть вполне достойные программы. Наиболее функциональными сейчас являются тулкиты Qt и Fox, повторяющие процессом разработки истории Motif и Tk: за всеми этими пакетами стоят начальный период разработки коммерческими компаниями-идеологами и последующий период совершенствования открытых исходных текстов большим сообществом пользователей и программистов. Qt -- прекрасно документированный тулкит (качество документации сопоставимо разве что с Motif), с отличной функциональностью, активно развивающийся и популярный. Единственное "но" заключается в... языке программирования: Qt написан на C++, что уже формирует политику использования тулкита программистом (C++ куда менее "дружелюбен" к другим языкам по сравнению с C). Впрочем, в больших проектах эту проблему решают созданием специальных сервисов, обеспечивающих нейтральность по отношению к языку разработки или применением "тяжелого" инструментария -- объектных брокеров и языков описания интерфейсов. Все сказанное о Qt можно смело повторить и о тулките Fox, за исключением, пожалуй, качества документации -- она несоизмеримо слабее.
Последний "герой" нашего короткого обзора занимает очень спорную позицию благодаря, скорее, своей популярности, чем выдающимся качествам. "Эрзац-Motif" -- тулкит GTK, созданный несомненно талантливыми программистами, авторами знаменитого графического пакета Gimp для замены тогда еще коммерческого Motif, является типичным представителем категории тулкитов, сделанных "под приложение". Низкое качество документации -- первое тому свидетельство. А в сочетании с хорошим качеством кода (это у GTK не отнять) и популярностью отсутствие документации приводит к образованию весьма интересного "коктейля": с одной стороны, тулкит развивается, с другой -- его развитие подчинено эзотерическим правилам. Программные интерфейсы GTK уже трижды (за весьма короткую по сравнению с Motif историю) изменялись, вынуждая прикладных программистов каждый раз повторять процедуру адаптации своих программ к новому окружению. Последняя стабильная версия GTK с "замороженными" программными интерфейсами не модифицировалась фактически год, все силы разработчиков направлены на создание новой версии -- с очередными изменениями интерфейсов и улучшенной интернационализацией. Если последнюю использовать в качестве критерия оценки, то в нашем коротком обзоре можно смело раздать "призовые" места следующим образом: наилучшую интернационализацию обеспечивают тулкит Qt (сквозная поддержка Unicode) и FoxUnicode (отдельная ветвь разработки тулкита Fox), второе место заслуженно делят Motif и Tk, GTK же пока грешит множеством недоработок.