Этот раздел посвящён одному из важнейших в настоящее время приложений компьютеров: работе в глобальной сети Интернет. Поскольку невозможно в небольшом разделе описать огромное разнообразие существующих свободных программ для работы с сетями, здесь мы подробно остановимся только на проекте Mozilla, в рамках которого разрабатывается целый ряд свободных приложений для работы с Интернетом: web-браузер Firefox, почтовый клиент Thunderbird, решение "всё в одном" SeaMonkey. Мы остановимся на описании Firefox, но прежде давайте разберемся, что означает приставка веб и для чего нужен браузер. Если вы уже знакомы с этими понятиями, вы можете просто пропустить этот раздел.
Веб (web) — краткая форма термина World Wide Web, что можно перевести как «всемирная паутина». Широко используется также сокращение WWW. Это понятие означает распределённую гипертекстовую систему, информационную среду, которая функционирует на основе Интернета и составляет его существенную часть.
Принцип гипертекста несложен — отдельные фрагменты текста в документе представляют собой ссылки на другие документы. Например, вы просматриваете документ, в котором упоминается планета Марс. При этом слово «Марс» может быть оформлено автором документа как ссылка на другой документ, содержащий справочную информацию об этой планете. При просмотре документа на вашем компьютере эта ссылка выделяется особым образом (чаще всего — цветом и подчеркиванием). Вам достаточно щелкнуть мышью по ссылке, чтобы перейти к другому документу, немедленно получив нужную справку.
WWW является распределенной средой, поскольку автор любого документа может включить в него ссылку на любой другой документ WWW, а не только на те, что входят в состав его собственного ресурса. Именно это делает веб настоящей всемирной паутиной, единым информационным пространством, а не совокупностью изолированных островков данных.
Гипертекстовые документы WWW называют веб-страницами. Совокупность взаимосвязанных страниц называется сайт или веб-сайт (от английского site — участок, площадка).
Как и многие другие подсистемы Интернета, WWW функционирует по принципу клиент-сервер. Когда пользователь активизирует ссылку, программа, установленная на его компьютере (эта программа называется клиентом или клиентским программным обеспечением) отправляет запрос удаленному компьютеру, функцией которого является предоставление документов по запросу клиентов. Этот компьютер называется сервером, тот же термин используется и для работающей на нем специализированной программы, предоставляющей документы. В случае «всемирной паутины» сервер является веб-сервером. Иногда совокупность всех страниц, находящихся на определенном сервере, может составлять единый сайт, но в общем случае эти термины не взаимозаменяемы. Сайт является логической, смысловой единицей WWW в отличие от сервера, который является единицей физической. Клиентская программа для работы с WWW называется браузер (от английского browse — пролистывать, просматривать) или веб-браузер. Иногда также используется термин обозреватель. В функции этой программы входит получение документов от сервера и их отображение для пользователя.
Как мы уже видели, вся сложность информационного обмена между сервером и клиентом скрыта от пользователя — ему достаточно лишь активизировать ссылку в документе. При этом границы между серверами и сайтам прозрачны для пользователя «паутины» — следуя по ссылке, пользователь может незаметно переходить от одного ресурса к другому. Благодаря лёгкости работы с WWW ее часто описывают как движение, своего рода путешествие в информационном пространстве. Мы говорим не только «загрузить» или «просмотреть страницу» — пользователь может «отправиться» на страницу, «перейти» с нее на следующую, «вернуться» на предыдущую.
Концепция WWW и ее первая реализация были разработаны Тимом Бернерсом-Ли, сотрудником Европейском центре ядерных исследований (CERN) в 1990 г. В первые годы с момента своего возникновения «всемирная паутина» переживала бурный рост, приобретая все более широкую популярность. Первый шаг Интернета к широким кругам пользователей, «большой взрыв» 1993–1994 гг. был связан именно с распространением WWW.
Помимо простоты работы пользователя свою роль здесь сыграли и другие факторы. Так, язык HTML (Hypertext Markup Language — язык разметки гипертекста), применяемый при создании веб-страниц, оказался достаточно простым в освоении. В результате многие «читатели» веб-страниц превратились в «писателей», активно создающих информационное наполнение Интернета. Благодаря распределенной архитектуре WWW все эти ресурсы, создаваемые в результате множества отдельных инициатив, становились частью единой информационной среды. Наконец, существенным оказалось и то, что стандарты, положенные в основу «всемирной паутины» были свободными, не требующими лицензионных отчислений за их реализацию. Это позволило создать различным заинтересованным сторонам создать многочисленные программы для работы с WWW — веб-серверы, браузеры, редакторы веб-страниц. Многие из них были разработаны как свободное программное обеспечение, и Mozilla продолжает эту традицию.
«Всемирная паутина» составляет неотъемлемую часть информационной инфраструктуры современного общества. В ее состав входит огромное количество информационных, образовательных, развлекательных ресурсов. WWW предоставляет широкие возможности для совместной работы, различных форм информационного обмена, общения.
Современная «всемирная паутина» далеко ушла от первых гипертекстовых страниц, превратившись в насыщенную мультимедийную среду. Так, уже ранние браузеры поддерживали изображения, включенные в веб-страницы, причем изображение также могло быть ссылкой на документ. В дальнейшем принцип подключения дополнительных модулей (plug-ins) для обработки различных видов содержания позволил веб-браузерам поддерживать практически неограниченный спектр типов и форматов данных. Поэтому пользователю современной «всемирной паутины» доступны самые разные типы содержания — видео, анимация, исполняемые программы и т. д.
Несмотря на эти изменения, в основе «паутины» и сегодня лежат общие принципы, заложенные ее создателями, — в целом она представляет собой открытую коммуникационную среду, основанную на стандартах. Тема стандартов заслуживает того, чтобы остановиться на ней несколько подробнее.
Интернет — распределенная среда, объединяющая десятки миллионов компьютеров во всем мире. Эта среда не является централизованной, у неё не существует какого-либо главного административного органа (централизованным является лишь распределение адресов и имен в Интернете).
Более того, Интернет представляет собой гетерогенную среду — с первых лет своего существования он объединяет компьютеры и устройства от различных производителей, основанные на различной аппаратной архитектуре и использующие различное программное обеспечение. Со временем это разнообразие лишь увеличивается — в тот момент, когда вы читаете эти строки, к Интернету подключён причудливый зоопарк устройств, в котором встречаются и огромные компьютеры двадцатилетней давности, и ультрасовременные карманные компьютеры и мобильные телефоны.
Что же позволяет всему этому зоопарку уживаться в рамках одной сети, которая при этом не рассыпается на отдельные изолированные фрагменты? Ответ прост — стандарты Интернета. Все они могут успешно взаимодействовать лишь благодаря тому, что разработаны и приняты многочисленные документы, описывающие коммуникационные протоколы и форматы сообщений. Например, если ваша почтовая программа формирует сообщения в соответствии со стандартом, вам не нужно беспокоиться о том, с помощью какой программы, на каком компьютере и под управлением какой операционной системы будет читать ваше сообщение получатель. Он сможет сделать это при помощи любой программы, соответствующей стандартам.
То же самое относится и к материалам, составляющим содержание веб-сайтов. Если формат этих материалов отвечает стандартам, они будут корректно отображены любым браузером, который поддерживает эти стандарты.
Стандарты формируются специальными организациями, в работе которых принимают участие представители различных заинтересованных сторон — государственных органов по стандартизации, компаний, исследовательских организаций, некоммерческих проектов, а также отдельные специалисты в тех или иных областях. Среди важнейших таких организаций следует назвать World Wide Web Consortium (консорциум WWW), разрабатывающий и принимающий документы, относящиеся к WWW, и IETF (Рабочая группа по инженерному обеспечению Интернета), которая разрабатывает, в частности, стандарты более низкого уровня.
В то же время стандарты оставляют достаточно пространства для конкуренции программ, которые, в равной степени отвечая стандартам, могут различаться по своей производительности или удобству использования. В индустрии информационных технологий стандарты создают более справедливую, конкурентную среду, которая в конечном счете лучше способствует инновации и техническому прогрессу. Именно стандарты, лежащие в основе Интернета, делают его универсальным и открытым информационным пространством, свободным от контроля со стороны какой-либо одной организации.
История Mozilla началась в 1998 г., когда компания Netscape открыла исходный код программы Netscape Communicator. C этого времени и до 2003 г. разработка Mozilla велась под эгидой Netscape, которая вскоре стала подразделением корпорации AOL. На основе кода Mozilla был выпущен ряд версий коммуникационного пакета Netscape (версии 6.x и 7.x). Поскольку код программы был опубликован под свободной лицензией (подробнее см. ниже), постепенно, помимо сотрудников Netscape, к разработке и тестированию Mozilla подключилось множество добровольцев и специалистов других компаний, заинтересованных в развитии пакета. В июне 2002 г. была выпущена Mozilla 1.0 — первая стабильная версия, пригодная для широкого использования. В ходе работы над ней был создан и ряд инструментов для разработчика, наиболее значительным из которых является Bugzilla — система для контроля программных ошибок.
В 2003 г. разработка Mozilla была передана вновь созданной независимой некоммерческой организации Mozilla Foundation. Ряд компаний, заинтересованных в развитии пакета, поддержал вновь созданную организацию финансами или услугами — рабочим временем программистов, серверами и т. п.
Проект развивался огромными темпами и вскоре были выпущены
web-браузер Firefox и почтовый клиент Thunderbird, ставшие
действительно очень популярными программами для работы с сетью
Интернет. Распотсранённости Mozilla Firefox и Mozilla Thunderbird
способствует и то, что эти программы одинаково хорошо работают
не только в Linux
, но и в других OC.
Ниже перечислены основные особенности Firefox.
Firefox является лидером среди браузеров (и
интегрированных коммуникационных пакетов) по числу
поддерживаемых программных и аппаратных платформ. Это
связано с тем, что пакет представляет собой свободное
ПО, и его переносом на новые платформы может заниматься
любое заинтересованное лицо или группа. Версии Firefox
существуют, в частности, для Windows
, Linux
, Mac OS
,
FreeBSD
, ряда несвободных операционных систем
семейства UNIX
, OS/2
. Существуют проекты
по переносу Firefox на такие платформы, как Amiga,
BeOS и т. д. Поэтому Firefox является естественным
выбором для организаций, использующих различные
операционные системы на рабочих местах, а также для тех,
кому приходится работать в различных операционных
системах, например, дома и на работе.
По своей архитектуре Firefox является расширяемой программой — в ней предусмотрена технология создания дополнительных компонентов, добавляющих к программе новые функции или облегчающих работу с ней. К настоящему моменту энтузиастами разработано большое количество расширений, значительная часть которых доступна на специальном сайте сообщества. В качестве примеров популярных расширений Firefox и выполняемых ими функций можно назвать:
Preference Toolbar — доступ к дополнительным настройкам пакета;
Mouse Gestures — управление программой при помощи специальных движений («жестов») мыши;
Enigmail — шифрование и подписывания почтовых сообщений с использованием программы GPG.
Как и все современные браузеры, Firefox поддерживает
подключаемые модули (plug-ins). Версии большинства
популярных модулей, например, Java и Flash, выпущены как
для Windows
, так и для Linux
.
Выше уже было сказано о важности стандартов для Интернета. Точное и как можно более полное соответствие стандартам было одним из важнейших приоритетов разработчиков Firefox. Они затратили большие усилия для того, чтобы качественно поддержать следующие основные спецификации:
HTML и XHTML — краеугольный камень WWW, основной язык разметки документов.
CSS (в т. ч. элементы CSS версии 3) — каскадные таблицы стилей, позволяющие описывать представление (внешний вид) документа отдельно от его содержания.
JavaScript (стандартизованный как ECMAScript) — основной язык программирования веб-документов.
DOM (в т. ч. элементы DOM 3) — объектная модель документа
Уровень и качество реализации этих стандартов позволяют создавать сложные интерактивные документы, не прибегая к «нестандартным» функциям и технологиям.
Современный пользователь Интернета сталкивается со все возрастающим количеством рисков. Это не только потеря данных или утечка персональной информации в результате деятельности вирусов или троянских программ. Все более значимыми становятся проблемы, связанные с агрессивным навязыванием информации (автоматически открываемые окна с рекламной информацией, рекламные рассылки — так называемый «спам»), что ведет к потере времени и других ресурсов. Firefox последовательно принимает сторону пользователя в противостоянии этим угрозам.
Firefox в принципе исключает автоматический запуск исполняемых вложений или загружаемых файлов, что снижает риски даже при работе в операционных системах с не слишком защищенной архитектурой.
Кроме того, в Firefox предусмотрены такие функции, как
Возможность запрета всплывающих окон;
Возможность запрета загрузки изображений;
Управление получением cookies;
Автоматическое распознавание спама (требует обучения);
Поддержка протоколов SSL (обеспечивающих защищенный обмен информацией с сервером);
Поддержка S/MIME (шифрование, цифровая подпись);
Поддержка GPG (шифрование, цифровая подпись) — при помощи дополнительного модуля Enigmail. В отличие от S/MIME, использование GPG не требует централизованной инфраструктуры (специальных органов, выдающих сертификаты).
В пользовательском интерфейсе Firefox предусмотрен ряд особенностей, облегчающих работу с программой. В качестве примеров можно привести такие функции и элементы интерфейса, как:
Боковая панель
Вкладки
Различные функции работы с закладками
Функция поиска в документе по мере набора
Развитая система фильтров почтовых сообщений
Многочисленность возможных настроек позволяет адаптировать поведение Firefox в широких пределах для удобства конкретного пользователя. Вы также можете загружать или самостоятельно разрабатывать темы интерфейса для Firefox, которые полностью меняют внешний вид пакета.
Для просмотра страниц WWW и «хождения» по FTP-серверам предназначен браузер Firefox.
Все возможности программы доступны из меню, наиболее часто употребляемым соответствуют также «горячие клавиши» и кнопки панели навигации. Под меню — еще одна панель, которую можно настроить по своему желанию (чаще всего, на нее выносятся ссылки на десяток самых посещаемых страниц), еще ниже — окно для отображения гипертекстовой информации с посещаемых страниц. Замыкает окно строка состояния со служебными пиктограммами справа.
Из пункта меню «Файл» вы можете открыть еще одно окно просмотра или вкладку (вкладка — это окно в окне) уже открытого окна, на разных вкладках вы можете просматривать разные страницы с одного сайта или разные сайты. Это позволяет не захламлять экран и панель задач окнами одного типа и сразу видеть, где закачка страницы уже завершилась, а где еще нет.
Из пункта меню «Файл» можно также открыть любой локальный html-файл или каталог (или файл другого известного Firefox формата, например, графический или текстовый), одной командой переслать по почте адрес понравившейся страницы или даже всю страницу, сохранить страницу на жестком диске или напечатать на принтере.
Программа ведет учет страниц, которые вы посетили (Меню «Журнал»). Это удобно для быстрого возврата на уже посещенную страницу. Сколько просмотренных адресов (и на какое время) программа будет их сохранять, можно указать в общем окне настроек. Журнал бывает удобно открыть для более детального просмотра либо поиска (Меню «Журнал... Открыть в боковой панели»).
Как и в других браузерах, вы можете вести структурированную базу закладок на понравившиеся сайты и редактировать параметры каждой закладки, в частности, менять названия и делать пометки на память: а чем же зацепила вас именно эта страница.
Firefox может передать запрос на поиск информации на указанные поисковые машины, дает возможности управления заполнением форм и блокирования изображений (это удобно для отсечения рекламы из многочисленных баннерных сетей) и cookies конкретных сайтов, запрета появления выскакивающих окон.
Наверное, самая интересная особенность программы — «боковая панель» (Sidebar). Размещенная в левой части всех окон, она значительно облегчает работу. На нее можно вывести множество полезной информации. Например, вы можете настроить ее так, чтоб сразу при запуске программы, видеть свежие новости, новости с любимых новостных сайтов, все свои закладки в виде дерева, иметь доступ к своим любимым поисковикам или еще что-нибудь, что сами придумаете.
Электронная почта соревнуется с WWW за почетное звание главного коммуникационного приложения. Существует масса свободных программ для работы с почтой, и среди них — Mozilla Thunderbird.
Thunderbird позволяет обмениваться письмами с друзьями, писать и получать почту из почтовых рассылок и групп новостей. Всю свою почту можно разложить по папочкам и настроить систему фильтров, чтобы новая почта попадала, куда нужно, а надоедливый спам — в мусор.
Вы можете отвечать на письма, переадресовывать полученное кому-то еще, отсылать и получать нужные файлы. Когда нужно быть уверенным в личности отправителя и неприкосновенности письма, воспользуйтесь интеграцией с GPG, свободной реализацией популярного формата OpenPGP, обеспечивающих электронную подпись и шифрование сообщений.
В почтовом ящике возможен поиск по теме, отправителю, словам в самом письме, дате, приоритету, адресатам, датам или комбинации этих параметров — этого хватит, чтоб не потеряться в своем почтовом ящике. Можно иметь несколько почтовых ящиков на разных серверах и работать с ними в одном окне.
Главное окно программы поделено на четыре части. Слева вверху — список почтовых ящиков, под ним боковая панель. Справа вверху — список писем в выбранной папке, под ним — текст выбранного сообщения. Многие из них можно временно спрятать, чтоб освободить место для других окошек. И здесь доступна боковая панель со всеми ее возможностями.
Выбрав в правой части название почтового ящика, вы увидите список действий, которые можете выполнить в нем и над ним. Например, настроить сам почтовый ящик, если есть необходимость, и параметры работы с почтовым сервером, параметры для исходящих и входящих сообщений. Возможности гибкой настройки и мощная система фильтрации сообщений, вместе с возможностями проверки правописания для многих языков (включая английский, русский, украинский) сделают вашу переписку удобной и приятной.
По мере того, как увеличивается круг ваших знакомых, помнить все необходимые адреса становится все тяжелее, но на помощь приходит адресная книга программы. Каждый раз, когда вы пишете письмо новому адресату или получаете письмо от нового отправителя, этот компонент программы запоминает его адрес. Дальше, когда вы начинаете заполнять поле «кому» нового письма, он пытается завершить набор за вас. Если адрес угадан правильно, можно просто переходить к заполнению остальных полей. Когда программа ошиблась, можно выбрать подходящий адрес из выпадающего списка или завершить набор самостоятельно.
Внешний вид окна Адресной книги достаточно типичен: снова, сперва меню, затем панель инструментов и основное окно с панелью состояния. Основное окно поделено на четыре части, некоторые из которых можно прятать. Слева — названия коллекций адресов вверху и боковая панель под ними. Справа — список карточек выбранной коллекции вместе с панелью поиска по ним вверху и окно для отображения информации с выбранной карточки внизу. Записи для каждой карточки редактируются по необходимости.
Немного побродив по Сети, каждый испытывает желание сообщить о чем-то своем всему мировому сообществу. Препятствием к этому оказывается необходимость изучать стандарт HTML. Не очень-то просто найти для этого время, особенно если речь идет о создании странички на пару абзацев о домашнем любимце.
В этой ситуации вам на помощь прийдёт SeaMonkey. Это ещё одна программа, разрабатываемая в рамках проекта Mozilla. В данном контекте нас интересует его«Компоновщик», спрятавшийся за кнопкой с листком и пером для письма. Вызвав его, вы сможете быстро и без погружения в изучение стандарта создать простую страницу в режиме визуального редактирования. Как в word-процессоре, просто пишете текст, вставляете таблицы и рисунки и сразу можете видеть, что у вас получается. Более того, заглянув на другие вкладки окна Компоновщика, можно еще и подучить HTML. В этом помогут вкладки «Все теги» и «<HTML> Код». Проверить, как ваша работа будет смотреться в окне просмотра «Навигатор», можно на последней вкладке. Главное преимущество этого инструмента перед многими похожими состоит в создании правильного HTML кода без лишних и нестандартных тегов, поэтому рекомендую его как первый инструмент начинающего (разумеется, для создания серьезных проектов изучение стандартов W3C обязательно).
В окне программы сперва линейка меню, под ней инструментальные панели, далее главное рабочее окно с вкладками и панель состояния под ним. Для подробного описания всех возможностей модуля потребуется не одна страница. Просто запустите его и попробуйте что-нибудь создать. Большинство пиктограмм и команд никакого объяснения не требуют.
Все описанные выше программы не только богаты функциями, но и очень гибки в настройке. Все доступные параметры настроек собраны в одном окне — доступные настройки поделены на категории. Настройки вызываются через меню «Правка... Настройки»
Набор доступных настроек зависит от используемой вами программы. Вы можете настроить практически всё: внешний вид, использование cookies и Java, использование прокси-серверов. Обратите внимание на настройки качающиеся «Приватности» и «Защиты». Количество доступных здесь настроек, говорит о том, насколько ответственно разработчики отнеслись к вопросу безопасности.
Возможно, более интересным будет общий взгляд на «начинку» программ проекта Mozilla, поскольку эта тема остается пока практически нераскрытой в публикациях на русском. А именно интересными внутренними архитектурными решениями и возможностями, которые они открывают для программистов, обусловлена перспективность и востребованность этого проекта.
Собственно интерпретацию («рендеринг») гипертекста и гипермедиа в браузере или компоновщике осуществляет «движок» под названием Gecko («геккон», «ящерка»). Сам по себе «движок» компактен и быстр. Он используется также рядом альтернативных браузеров, таких, как Галеон, Афродита, Камино, Феникс; первый из них, достачно развитый и «шустрый», может рекомендоваться пользователям старых или маломощных (например, карманных) машин.
Видимо, самой интересной особенностью программ Mozilla является реализация интерфейса пользователя на языке XUL, представляющем собой XML-приложение, т.е. набор определений вида и поведения визуальных объектов, свойственных современным графическим интерфейсам пользователя, на расширяемом языке разметки XML (об XML и его интегрирующей роли в современных приложениях компьютера подробнее говорится в разделе 4.1).
В большей своей части программы Mozilla «написаны для XUL» и интерпретируются «на лету». Обратной и неприятной для пользователя стороной этого является ресурсоемкость. Комфортная работа в большинстве сред начинается от 128 Мб ОЗУ и 500 МГц процессора.
«Светлой» стороной XUL'ности программ Mozilla является чрезвычайная гибкость, что, видимо, позволяет «малой кровью» существенно расширить набор входящих в ту или иную программу функций.
На рис. 3.8 видно, что по специальному протоколу chrome можно просто «открыть» в браузере еще один браузер (или любой другой компонент пакета), причем это не просто изображение его интерфейса, а полноценная работающая программа.
Разумеется, суть использования XUL не в этом, а в том, что на этом относительно простом языке разметки могут быть легко реализованы различные интерактивные прикладные программы. На сайтах www.mozdev.org и www.xulplanet.com можно найти десятки программ на XUL, а по http://books.mozdev.org/chapters/ можно найти текст книги «Создание прикладных программ в Mozilla» (к сожалению, пока только на английском).
Например, так выглядит традиционная первая программа «Привет, мир!» на XUL (ее текст заимствован из упомянутой книги):
<?xml version="1.0"?> <!-- Sample XUL file --> <window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> <box align="center"> <button label="hello xFly" onclick="alert('Hello World');" /> </box> </window>
Знакомым с JavaScript-сценариями в HTML или XML этот пример должен быть кристально понятным. Однако внимание следует обратить на то, что элементы разметки, определяемые XUL, свойственны графическим интерфейсам общего назначения («окно» (window), «контейнер» (box), «кнопка» (button) и т. п.), и весь XUL-файл определяет интерфейс, а не страницу[23].
Перспективы, открываемые универсальным языком описания графического интерфейса перед отраслью быстрой прикладной разработки (RAD) и практическим программированием вообще — очевидны. Но здесь уместнее будет указать на методические перспективы: включение в один и тот же вводный курс программирования на XUL наряду с изучением языков разметки контента (например, HTML, особенно в его нынешней, XML-версии) позволит осуществить значительную понятийную экономию. Возможно, наш кругозор ограничен, но нам не известны другие полноценные языки программирования интерфейса, кроме XUL, являющиеся корректными и исполнимыми XML-приложениями.
[23] Строго говоря, Mozilla поддерживает и смешанные контексты, например, XUL-компоненты в HTML или наоборот, но XUL-интерпретатор как таковой не обязан этого делать, и XUL-интерпретатором, соответственно, вовсе не обязательно должен быть браузер.