графические среды (или дополнительные экземпляры той же среды). Более
подробно об этом будет рассказано в "лекции", посвященной
операционным системам.

9.1 Плюсы и минусы интегрированных сред


Однородность опыта и связанная с нею привычность
(иногда ошибочно называемая "интуитивностью", хотя она не
имеет отношения к философскому и психологическому понятиям интуиции)
позволяют при освоении нового инструмента-программы сосредоточиться
на ее прикладной логике (аспектами, связанными с конкретным
приложением ИТ, которое она реализует), не задумываясь и специально
не фокусируя внимания на аспектах, общих для разного инструментария.
Это делает более "крутой" пресловутую "кривую
обучения" нового пользователя.


(Разумеется, это сильно идеализированная картина.
Иногда прикладная логика диктует некоторые элементы эргономики;
например, интерфейсы большинства систем автоматизированного
конструирования и проектирования (CAD, САПР) весьма сходны, вне
зависимости от среды, в которой работают эти программы.)


Как ни парадоксально, основной недостаток работы в
интегрированной среде является оборотной стороной основного
достоинства: жестко закрепленные навыки мешают при выходе за ее
пределы. Конечному пользователю, ограниченному опытой работы в одной
среде, недостает "стереоскопичности" видения, глубины
понимания; элементы эргономической логики могут напрямую
ассоциироваться с определенными визуальными элементами и "жестами",
с помощью которых подаются команды.


Общеизвестны сложности, с которыми сталкиваются
люди, неколько лет пользовавшиеся MacOS или Microsoft Windows при
необходимости поработать в другой (пусть даже и весьма схожей) среде.
Подобная "ригидность" опыта может формироваться и при
работе в любой из свободных сред, хотя как правило пользователь в них
не ограничен (в отличие от специфически персонально-компьютерных
сред) прикладными программами, специально разработанными для данной
среды и делящими с ней наборы элементов интерфейса ("виджетсеты"),
поэтому его опыт изначально более разнообразен.


В этом смысле, крайне полезным представляется
знакомство учащихся с разными средами уже на начальном этапе
освоения графических интерфейсов. Это не обязательно должны быть
разные интегрированные среды, но само представление о том, что один и
тот же результат может достигаться с помощью разных интерфейсных
средств, должно быть передано обязательно. В общем случае это
возможно и в рамках одной интегрированной среды из числа
рассматриваемых ниже -- и KDE, и GNOME в высшей степени гибки в
отношении настройки внешнего вида и "поведения". Эта
гибкость также весьма полезна для обеспечения доступности и
максимально достижимого комфорта учащимся с физиологическими
особенностями и физическими недостатками (дальтонизмом, слабым
зрением, ограниченной подвижностью или расстроенной координацией
движений и т.п.).


9.2 Общие черты интегрированных сред


Сколько-нибудь последовательной теории
интегрированных графических сред не существует. Изучая отдельные
среды в динамике их развития, можно, тем не менее, выделить несколько
общих черт:



  • они опираются на определенный интерфейс
    разработчика (API), состоящий из библиотек, доступных также
    разработчикам прикладных программ (будь то MS Windows API для
    Microsoft Windows, Motif для CDE, Qt для KDE или GTK+ для GNOME);


  • они реализуют элементы объектной метафоры
    (одельные экземпляры сущностей, таких как файлы, процессы (их потоки
    ввода-вывода) визуализируются определенным образом, на них можно
    фокусироваться и выполнять с ними различные действия, их состояния и
    изменения этих состояний также могут визуализироваться или
    озвучиваться). Целостная объектная метафора своей реализации не
    нашла (и, видимо, последовательно "объектная" среда была
    бы крайне неудобной в использовании);


  • они реализуют единообразные элементы
    управления ("виджеты"), зачастую не только в оформлении
    отдельных окон, но и в их "начинке";


  • они содержат те или иные элементы управления,
    не привязанные к отдельным окнам прикладных программ ("общие"
    меню, "панели управления", "поверхность стола"
    и т.п.);


  • они позволяют согласованно изменять свойства
    интерфейса образующих среду программ;


  • они реализуют "буфер (буферы) обмена",
    позволяющий передавать типизованные данные от программы программе (X
    Window System содержит буфер, позволяющий передавать данные лишь
    простого текстового типа);


  • они реализуют возможность "перетаскивания"
    (drag'n'drop) объектов или данных между окнами одной программы или
    разных программ.



(За ограниченностью объема "за бортом"
остаются более сложные вопросы, такие, как компонентная объектная
модель и модели сетевого взаимодействия, так или иначе "втягиваемые"
в проекты интегрированных сред.)


На сегодня существуют и развиваются две свободных
интегрированных графических среды общего назначения: KDE и GNOME. Они
входят в поставку большинства стандартных (открытых) ОС, как
свободных, так и несвободных. Хотя GNOME на полгода моложе KDE, мы
начнем обсуждение именно с GNOME.


9.3 GNOME
(Модельная среда сетевых объектов GNU)






GNOME (GNU Network Object Model Environment --
"Среда GNU, основанная на модели сетевых объектов", но
также и "Образцовая среда для сетевых объектов GNU") --
один из самых амбициозных и масштабных проектов в программистском
сообществе.


Кроме реализации функционально полной графической
среды (возможно, уместнее говорить о сенсуальных средах, учитывая то,
что звук стал их полноправной частью), "Гном" претендует
на то, чтобы полностью реализовать спецификации промышленной
платформы сетевого взаимодействия CORBA и полностью абстрагировать
слой "менеджера рабочего стола" (или "графической
среды") от низлежащего слоя управления окнами ("оконного
менеджера").


GNOME поддерживает ряд оконных менеджеров, среди
которых: Sawfish ("штатный" оконный менеджер по
умолчанию), Enlightenment, IceWM, WindowMaker, AfterStep и FVWM2,
совместимые с GNOME, впрочем, в разной степени.


Сегодняшняя версия "Гнома" (GNOME 2.1)
-- полноценная интегрированная среда, включающая реализацию
повседневно необходимых функций и позволяющая использовать сторонние
решения для реализации функциональности, которая в ней отсутствует.


GNOME использует один из самых развитых
интерфейсных пакетов GTK+, реализованный для разных платформ. Над ним
надстраивается масса компонентов и библиотек, обеспечивающих сетевую
функциональность, интерфейсы к различным языкам программирования,
работу со звуком через механизмы ОС и пр. Сам "Гном"
стремится оставаться мобильным и доступным во всех открытых системах.
Он стабильно работает в Linux, BSD, AIX и Solaris; последнее
обстоятельство способствовало поддержке разработки GNOME, которую
оказывает Sun Microsystems через созданный в 2001 г. году Фонд GNOME,
среди учредителей которого также крупнейшие поставщики свободных ОС.


С пользовательской точки зрения GNOME предстает
как набор базовых компонентов интерфейса и "апплетов",
утилит и прикладных программ. К базовым компонентам относятся
менеджер файлов и поверхности стола Nautilus, панели управления и
меню GNOME Panel и центр управления (Gnome Control Center).


"Наутилус". Менеджер файлов Nautilus
позволяет отображать содержимое файлов и каталогов в окнах и
выполнять над файлами обычные действия (удаление, переименование,
копирование и перемещение и т.п.), а также осуществлять
предварительный просмотр многих типов данных. "Наутилус"
эффектен, но работа с ним не более эффективна, чем с прочими
браузерами файлов, включаемыми обычно в графические среды (менеджер
файлов CDE или Microsoft Windows Explorer).


Помимо отображения содержимого каталогов в окнах,
"Нау" также может отображать один из каталогов на
поверхности "рабочего стола": размещенные на нем иконки
как бы приклеены к монитору, и при смене текущего экрана остаются на
том же месте относительно наблюдателя (так же, кстати, ведут себя и
открытые окна, если их "приклеить").


Поддерживается широкий спектр операций переноса
мышью (drag'n'drop), причем "перетаскиванию" подвержены
не только объекты (файлы, пункты меню и т.п.), но и некоторые их
свойства: так, можно "взять цвет" в окне выбора цвета и
перенести его на панель, которая воспримет его. Есть даже операции,
позволяющие назначить один объект свойством другого: например, если
на панель "перетащить" не цвет, а файл с картинкой,
последняя станет ее фоном. "Таскать" файлы между окнами
"Нау", на рабочий стол и панели можно практически без
ограничений.


Панели и меню. Уже упомянутые панели являются,
наряду с менеджером файлов, важнейшей составной частью интерфейса
GNOME. Панелей может быть неограниченное количество. Панель может
относиться к одному из пяти типов, но на самом деле их два:
панель-меню (menu panel) и объектная панель. Первая из них содержит
пункты меню и может содержать пиктограммы, а вторая -- только
пиктограммы. Последняя может быть краевой (edge), выравненной
(aligned), скользящей (sliding) или плавающей (floating), но это
скорее свойство панели (которое можно менять "на ходу"),
определяющее особенности ее поведения, чем тип.


Внешний вид и поведение панелей является в высшей
степени конфигурируемым. Пользователь может задавать как глобальные
предпочтения (анимация движения панелей, отображение панельных
объектов и пр.), так и индивидуальные предпочтения для каждой из них
(ее тип и положение на экране, ширина, возможность автосокрытия и
принудительной минимизации, цвет и фоновое изображение и т.п.) Ну и,
разумеется, пользователь может "набивать" панели теми
объектами, которые ему нужны.


На панелях могут присутствовать объекты пяти
типов:



  • пускатель (launcher) ассоциирован с
    приложением или командой, которые исполняются по щелчку на его
    пиктограмме в панели;


  • выдвижной ящик (drawer) -- это кнопка,
    открывающая другую панель, перпендикулярно первой -- некий
    аналог подменю в меню, который можно "набить"
    всевозможными апплетами;


  • апплет (applet, "приложеньице") --
    интересный тип панельного объекта, демонстрирующий то, что он не
    обязан быть представлен статической картинкой. Это программа, места
    в панели которой достаточно, чтобы отображать какую-нибудь полезную
    (или забавную) информацию или даже принимать клавиатурный и/или
    координатный ввод. С GNOME поставляется масса апплетов, отображающих
    всякую полезную информацию (состояние ресурсов и статус сети,
    например) или позволяющих осуществить нетривиальные действия
    (например, mini commander, позволяющее набрать команду, не запуская
    терминала). Важными "приложеньицами" являются
    "путеводитель по столу" (Desktop Guide) и "список
    задач" (Task List), позволяющие переключаться между
    виртуальными экранами и активизировать окна запущенных программ,
    соответственно;


  • специальные объекты -- это те же
    апплеты, но выполняющие функции, которые другими средствами
    "достать" почему-либо нельзя (запереть экран, выйти из
    GNOME или запустить программу "вручную"). В качестве
    "специальных объектов" исполняются и программы, которые
    не были написаны специально для GNOME, но могут, тем не менее,
    осуществлять вывод в панель -- "поглощенные программы"
    (swallowed applications);


  • наконец, объект-меню раскрывает меню.



За работу системы меню, как и за работу панелей,
отвечает компонент GNOME Panel, и это не случайно: разница между
панелью и меню более декоративная, чем сущностная: любое меню можно
зафиксировать на экране, и оно превратиться в подобие панели-меню
(только вертикальное, а не горизонтальное, и с меньшими возможностями
настройки).


У "Гнома" нет единой иерархии меню:
кроме главного, вызывающегося объектом-меню с гномьей лапой (оно же,
когда вызывается щелчком правой кнопки на фоне или нажатием клавиши,
почему-то называется глобальным (global)), пользователь может
создавать "обычные" (normal) меню, связанные с
объектами-меню на панелях.


Меню настраиваются примерно так же, как и панели:
пользователь может добавлять, менять и удалять пункты, создавать
подменю и т.п. При этом создаваемые "обычные" меню
изначально пусты, а главное/глобальное "набивается" при
установке всем, что "Гном" найдет в системе, и
пользователю остается только убрать лишнее и переставить пункты в
соответствии со своими предпочтениями.


Утилиты, апплеты и "капплеты". Для
настройки различных аспектов функционирования системы предназначен
Центр управления, представляющий собой набор "управляющих
апплетов" (capplets), связанных с разными компонентами и
прикладными программами.


Одни из них позволяют менять параметры рабочего
стола и облик приложений (включая использование "тем"),
другие -- настраивать мультимедиа, третьи -- управлять
свойствами клавиатуры и мыши, и т.д.


Важным "капплетом" является менеджер
т.н. "драйверов документов" (Document Handlers),
устанавливающий соответствие между типом файла или протокола и
программой, выполняющей различные операции с ними. Набор "капплетов"
является расширяемым, их можно писать не только для программ,
написанных специально для "Гнома", но и для внешних
программ.


Еще более открыт набор утилит, прикладных программ
и апплетов, поставляемых с GNOME -- вместе с программами,
входящими в большинство дистрибутивов ОС, о которых "Гном"
"в курсе", их число превышает сотню.


Перечислить их здесь нет никакой возможности, но в
их число входят интерфейсы для администрирования системы, средства
звукозаписи и воспроизведения, сетевые утилиты, игры и многое другое.


GNOME снабжен встроенной системой помощи; кроме
того, его разработчиками совместно с Sun Microsystems подготовлено
компактное (130 с.) руководство, доступное в разных форматах на сайте
проекта. В его поставку входит система разработки графических
приложений под GTK+, которая называется Glade и включает в себя
специфические для Gnome элементы.


"Гном" и большинство его компонент
соответствуют соглашениям об интернационализации и, соответственно,
поддерживают работу с кириллицей и локализацию и перевод интерфейса.
К сожалению, локализация "Гнома" сильно отстает от
разработки.


9.4 KDE (Настольная среда K)



Само
название KDE -- явная пародия на CDE -- Common Desktop
Environment ("Общая настольная среда") -- последнюю
попытку отрасли стандартизовать графическую среду на несвободной
основе, предпринятую в конце девяностых годов. "K" в KDE
ничего не означает.


Несмотря на явно игривый тон, начинающийся с
названия среды и продолжающийся в названии компонент (в KDE любят
играть со словами; например, универсальный браузер, входящий в среду,
называется Konqueror (от Conqueror -- "завоеватель",
"покоритель"), терминал -- Konsole (от Console --
"консоль), а система помощи -- вообще Kandalf (от имени
Гэндальфа, мага из фантазийных произведений Дж.Р.Р.Толкиена)), KDE --
очень серьезный проект.


Если единообразие и "сплошность" среды
считать достоинством, то KDE -- несомненный лидер среди всех
(как свободных, так и несвободных) интегрированных графических сред.
Основное "видимое" средство интеграции -- это
универсальный браузер Konqueror. Функция Konqueror близка к той,
которую приобрел Microsoft Internet Explorer в Microsoft Windows
(начиная с MS Windows 98 в линейке MS-DOS и MS Windows 2000 в линейке
NT) -- он совмещает функции гипермедийного браузера WWW и
браузера локальных ресурсов.


Разработчики KDE пошли даже дальше своих коллег из
Microsoft и определили ряд дополнительных протоколов, что позволило,
в частности, просматривать с помощью браузера в единообразном формате
все разнообразие справочной информации, представленное в сегодняшних
открытых система (традиционные страницы руководства man,
гипертекстовую систему Info из проекта GNU, разрозненные файлы
документации в текстовом и гипертекстовом формате). В Konqueror
интегрирована также возможность предварительного просмотра
содержимого большого количества типов файлов.


KDE включает также настраиваемую систему панелей и
меню и интегрированный "центр управления", позволяющий
согласованно изменять параметры среды. KDE несколько менее гибка в
настройке, чем GNOME, однако на ее гибкости вполне достаточно для
решения любых практических задач (в том числе, имитации вида и
поведения других сред). KDE работает только с собственным оконным
менеджером KWin.


В поставку KDE входит множество "аксессуаров"
и прикладных программ, к тому же "рядом" с проектом
выросла целая "грибница" сопутствующих, ориентированных
на те или иные предметные приложения, из которых самым развитым
является KOffice.


9.5 "Офисный" прикладной пакет
KOffice


С проектом KDE тесно сопряжен проект KOffice, в
рамках которого разрабатываются "офисные" программы на
основе той же основной библиотеки Qt и предназначенный для
совместного с KDE использования. KOffice на сегодня включает в себя
следующие основные программы, находящиеся на разных стадиях
готовности:



  • word-процессор (редактор размеченного текста)
    KWord. Несмотря на позиционирование этой программы как
    word-процессора, она более напоминает простую настольную
    издательскую (DTP) систему благодаря концепции "фреймов"
    (областей печати, обладающих собственной геометрией и способных
    содержать текст или объекты, созданные в других программах, входящих
    в этот пакет (рисунки, формулы и т.п.);


  • программу работы с электронными таблицами
    Kspread;


  • программу подготовки мультимедийных
    презентаций Kpresenter;


  • программу работы с блок-схемами (flowcharts)
    Kivio;


  • векторный графический редактор Karbon14;


  • простой растровый графический редактор Krita;


  • программу генерации отчетов из баз данных
    Kugar;


  • интегрированную программу подготовки графиков
    и диаграмм Kchart;


  • редактор формул Kformula;


  • пакет управления проектами KPlato (разработка
    этого проекта только началась).



Собственные форматы KOffice ориентированы, как и
собственные форматы большинства современных "офисных"
пакетов, на XML, хотя не все из них являются чисто XML-приложениями.
Заявлена поддержка достаточно большого количества "чужих"
и унаследованных форматов, хотя качество поддержки на сегодня весьма
среднее; в особенности последнее относится к поддержке кириллических
текстов.


KDE и KOffice достаточно оперативно локализуются
(см. www.kde.ru), однако, к сожалению, в переводах на сегодня еще
больше, чем в оригиналах, "персонально-компьютерного"
сленга.


9.6 Ресурсы


GNOME и KDE входят в поставку практически всех
(свободных и несвободных) открытых систем для всех аппаратных
платформ. Об их стабильных переносах под альтернативные ОС нам ничего
не известно.


Дополнительную информацию о них можно найти на
сайтах http://www.gnome.org и
http://www.kde.org, соответственно.
Русская информация о KDE периодически обновляется на
http://www.kde.ru
(http://www.gnome.ru не
обновляется, текущие локализационные инициативы "сбрасываются"
в основное дерево разработки).


Базовую информацию об обеих интегрированных средах
можно найти практически в любом "неканоническом" учебнике
или руководстве по Linux (например, в [20]) или в документации по
любому дистрибутиву, однако вряд ли вы найдете там что-то такое, чего
не было бы во встроенных электронных руководствах. Существует
обширная англоязычная (для KDE -- еще и немецкоязычная)
литература для разработчиков в обеих средах, из которой на русский
пока ничего не переведено.


Лекция 10. Свободные коммуникации


Типичные локально-сетевые приложения -- это
разделение файловых структур, услуги печати, централизованная
аутентификация пользователей и т.п., предоставляемые в масштабе от
одного офиса (комнаты) до целой группы зданий.


Типичные интернет-приложения11
-- это электронная почта, WWW, обмен "быстрыми
сообщениями" ("интернет-пейджинг") и пр. системы,
разворачиваемые обычно в глобальном масштабе.


Основной тенденцией последнего десятилетия стало
постепенное вытеснение специализированных локально-сетевых
низкоуровневых протоколов и замена их интернет-протоколами (TCP/IP).
Даже протоколы, специально разработанные для персонально-компьютерных
систем и используемые в унаследованных сетях, такие, как AppleShare
или NetBIEU, могут сегодня развертываться поверх TCP/IP. В отличие от
сетей Интернет, образующих сообщество с единой нумерацией и единым
именованием компьютеров, локальные TCP/IP-сети, отделенные от
Интернет, называют интранет.


Поддержка TCP/IP на сетевом и транспортном уровнях
впервые реализована в ОС BSD и реализована в современных ОС на уровне
ядра12.
На уровне ядра обычно -- из соображений эффективности --
реализуются и такие, например, сервисы, как экранирование
(firewalling) трафика. Протоколы более высокого уровня реализуются в
виде системных или прикладных сервисов.


10.1 Локальные сети


NFS. В открытых ОС локально-сетевая
функциональность традиционно реализуется в рамках концепции Сетевой
файловой системы NFS. NFS позволяет предоставлять каталоги для
удаленного монтирования и монтировать (т.е. делать частью локальной
файловой системы) их удаленно. Поскольку с точки зрения стандартной
ОС любое устройство представлено файлом, этого достаточно не только
для совместной работы с каталогами, но и предоставления доступа к
принтерам, ленточным накопителям и прочему оборудованию13.


БД и доступ к ним. Так же традиционно более
сложная семантика сетевых взаимодействий (для которых файловое
представление данных и файловые операции влекут слишком большие
издержки), внедрялась с помощью баз данных совместного доступа и
специальных протоколов доступа к ним14,
таких, как DAP (X.500) или его упрощенная и более популярная версия
LDAP. LDAP входит в поставку практически всех дистрибутивов свободных
ОС и широко используется в современных системах, но пока в основном
для решения административных задач.


SMB и его расширения. В
персонально-компьютерных системах большее развитие получил
альтернативный подход, опирающийся на концепцию обмена блочными
сообщениями (SMB), разрабатывавшийся первоначально корпорацией IBM,
на основе которого компаниями Novell, Microsoft и другими были
разработаны семейства локально-сетевых протоколов высокого уровня, к
сожалению, не стандартизированные и переусложненные. Более сложная
семантика обмена блочными сообщениями влечет за собой и более сложный
аудит безопасности построенных на его основе систем, поэтому
применимость SMB и его расширения в серьезных приложениях ограничена.


Тем не менее, существует современная авторитетная
и очень эффективная свободная реализация SMB и (частично) его
позднейших расширений, называющаяся SAMBA (www.samba.org). SAMBA
входит в поставку практически любого дистрибутива свободных ОС.


SAMBA дает возможность предоставлять в совместный
доступ каталоги, а также принтеры и другие устройства и получать к
ним доступ15,
что позволяет разворачивать сложные гетерогенные сети, включающие,
помимо стандартных ОС, также унаследованные системы на основе
Microsoft Windows и Novell OS.


SAMBA предполагает использование специфических
локально-сетевых протоколов, таких как IPX или NetBIOS, лишь поверх
TCP/IP, что, хотя и влечет за собой некоторые издержки16,
но позволяет заметно повысить надежность системы за счет применения
собственных средств обеспечения безопасности TCP/IP (экранирование, а
при необходимости и шифрование и аутентификацию трафика).


Пакет SAMBA доступен как для открытых ОС, так и
для ряда альтернативных архитектур (включая Microsoft Windows NT.
Более подробно функциональность SAMBA в этих "лекциях"
рассматриваться не будет.


10.2 Интернет


Серверная и инфраструктурная составляющая
межсетевых цифровых коммуникаций -- традиционное приложение для
свободного ПО. В этой "лекции" мы не будем погружаться в
организацию локальных сетевых служб, WWW-серверов и т.п., хотя это
важная и нужная в школе тема, она не имеет прямого отношения к
предмету школьной информатики. Ниже следует обзор некоторых свободных
клиентских программ, реализующих современную сетевую функциональность
сессионного, презентативного и прикладного уровня.


10.3 Пакет Mozilla


Среди массы свободных клиентских программ,
связанных с сетевой функциональностью, за ограниченностью печатного
объема остановимся на проекте Mozilla.


Mozilla представляет собой свободный
пользовательский прикладной пакет, реализующий интерфейсы просмотра
WWW (браузер), электронной почты и новостей USENET,
многопользовательских диалогов в реальном времени ("чатов")
IRC и редактирования страниц WWW (компоновщик). Входящие в пакет
программы, таким образом, открывают доступ ко всем наиболее
популярным приложениям Интернет (кроме, на сегодня, "быстрых