Библиотека Интернет Индустрии I2R.ru |
|||
|
X Window -- восполняя пробелы. Часть 3 -- утилиты и тулкитыНесколько жемчужин 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, о котором рассказывалось в первой части статьи, на самом деле оказался очень удачным и наглядно демонстрирует действенность инженерного правила "красивое должно работать хорошо". Если раньше мы говорили о ресурсах и идентификаторах ресурсов как о способе сокращения требований к полосе пропускания соединения "клиентская программа -- X-сервер", то теперь пора сказать и о другой привлекательной стороне этой медали. Правильно спроектированное и реализованное X-приложение, полноценно утилизирующее возможности 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, тонко настроить и даже изменить его функциональность (если такая возможность, естественно, предусмотрена разработчиком). 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 же пока грешит множеством недоработок. |
|
2000-2008 г. Все авторские права соблюдены. |
|