В этой лекции дается обзор архитектуры Mozilla и используемых в ней концепций. Кода здесь почти нет. Те читатели, которые лишь недавно начали работу с Mozilla, после прочтения первой лекции получат основную информацию об этой платформе, а также смогут примерно представить, на что им предстоит тратить время и усилия. В этой лекции речь пойдет о том, что собой представляет платформа, как в Mozilla используются технологии XML и как она реализует принципы быстрой разработки приложений. Те, кто уже знаком со структурой платформы, могут перейти к лекции 2, "Проектирование с XUL".
В разделе "Практика" этой лекции приведено несколько простых примеров программ. Они помогут заглянуть внутрь существующего приложения на основе Mozilla, написать свою первую программу и начать разработку проекта NoteTaker ("блокнот"), которым мы будем заниматься на протяжении всей книги.
Иллюстрация к этой лекции -
Даже при первом взгляде на диаграмму видно, что платформа
разделятся на две основные части. Справа (внешний интерфейс) находятся
ориентированные на пользователей технологии: события, стили CSS
(
Наблюдать эти две части платформы воочию очень легко: достаточно
открыть окно любой программы на основе Mozilla, например, браузер или
Сложность схемы не означает, что метод работы с соответствующей ей
Слово Mozilla первоначально было только названием проекта. Оно было
предложено в 90-х годах Джеми Завински, сотрудником компании
Но с тех пор слово Mozilla стало использоваться гораздо чаще, оно одновременно означало и проект, и конечный продукт, и платформу, а организация, занимающаяся разработкой и продвижением Mozilla, стала называться mozilla.org. Сейчас Mozilla - общее название для группы технологий вроде .Net и Java. Для именования продуктов и технологий внутри этой группы используются собственные названия. Официальный сайт Mozilla, который иногда так и называется, mozilla.org, можно найти по адресу http://www.mozilla.org
Mozilla впервые стала публичным проектом в 1998 г., когда были
открыты исходные коды от пакета приложений для работы в
Internet
Теперь версии 6.0, 6.5, 7.0 и старше относятся к собственным
продуктам
В этом курсе термины Mozilla и платформа Mozilla обозначают одну
вещь - платформу. Любое приложение, основанное на Mozilla (например,
Разделение между платформой Mozilla и приложениями mozilla.org со временем становится более очевидным. То, что раньше было большим пакетом приложений, теперь стало целой платформой, поверх которой создается множество небольших приложений.
По крайней мере, до версии 1.4 у этих приложений были названия,
доставшиеся им в наследство от
Так как новые приложения узкоспециализированы и все еще непрерывно меняются, в качестве примера и отправной точки в этой книге используется "старый" интегрированный пакет приложений. Он хорошо оттестирован, демонстрирует почти все возможности платформы, лучше документирован и достаточно актуален. Это идеально подходит для начала исследования Mozilla.
В нашем курсе "классический браузер" означает браузер,
интегрированный в пакет приложений mozilla.org. Классическая Mozilla
относится ко всему пакету приложений, Навигатор - к браузеру
Конечный продукт проекта Mozilla - Gecko, или среда исполнения Gecko. Это "урезанная" версия платформы, содержащая только основную функциональность для отображения элементов. Она еще не выделилась в отдельный продукт, но так как ее название звучит все чаще и чаще, это, скорее всего, случится.
Подведем итог этих пояснений относительно названий: данный курс - только о платформе Mozilla. Для объяснения работы этой платформы в курсе используется классический браузер и другие части классической Mozilla, но здесь также рассказывается и о том, как построить отдельное приложение. Разрабатываемое на протяжении курса приложение NoteTaker добавляется как расширение к браузеру только потому, что оно слишком маленькое, и поэтому нет смысла делать его самостоятельным. Во время чтения рекомендуется использовать классическую Mozilla 1.7, содержащую платформу Mozilla 1.7. В оставшейся части лекции мы обсудим некоторые другие названия и термины, связанные с технологиями Mozilla.
Важнее всего для Mozilla - выпуск очередной версии классической Mozilla. Существует множество комбинаций этой платформы и пакета приложений. В классической Mozilla реализовано большое подмножество всех тех возможностей, которые предоставляет платформа. Остальная функциональность остается недоступной. Для нумерации основных версий Mozilla используются следующие правила:
Во время изучения этого курса можно использовать любую готовую версию платформы: основную или для тестирования функциональности.
Вот некоторые из известных приложений, созданных на основе платформы Mozilla:
Два отличных примера приложений не для Internet дают OEone и ActiveState.
Продукция OEone (http://www.oeone.com) предназначена для начинающих пользователей. Продукт OEone HomeBase является особой комбинацией Linux и расширенной версии платформы Mozilla под названием Penzilla. В результате получается система для работы с компьютером, содержащая все необходимое. На рисунке 1.1 показан снимок такого рабочего стола на основе Mozilla.
(рис 1.1) Рабочий стол OEone HomeBase. Использовано с разрешения OEone Corporation (www.oeone.com).ActiveState (http://www.activestate.com) предлагает интегрированную среду разработки для программистов под названием Komodo, которая также основывается на платформе Mozilla. Снимок окна можно увидеть на рисунке 1.2.
(рис 1.2) Среда разработки ActiveState’s Komode 3.1. Использовано с разрешения ActiveState (www.activestate.com).Кроме перечисленных обычных и web-приложений, можно создавать и другие легко настраиваемые приложения. С помощью стандартной платформы Mozilla можно реализовать почти один и тот же графический интерфейс в любой операционной системе. Конечно, было множество попыток создать браузер, который бы полностью соответствовал внешнему виду отдельной ОС. Это сильно модифицированные версии Mozilla, которые мы не будем рассматривать в этом курсе:
Число приложений, основанных на платформе Mozilla, постоянно растет: ежемесячно появляются уведомления о создании новых продуктов. Их можно найти в центре новостей сообщества Mozilla, http://www.mozillazine.org.
На англоязычных сайтах (да и русскоязычных тоже) и в списках рассылок, посвященных Mozilla, часто могут встречаться разные выражения, специфичные только для сообщества Mozilla. Объяснять здесь их все бессмысленно. Если вы знаете английский язык, можете обратиться к документам http://www.mozilla.org/docs/jargon.html и http://devsupport.mozdev.org/QA/thesaurus/. Мы приведем лишь небольшой список наиболее часто употребляемых слов:
Наконец, существует целый список пересекающихся друг с другом технических терминов, например, Seamonkey, NGLayout, Necko и т. д. Только некоторые из них относятся к отдельно выделяемому приложению или технологии, так что в этом курсе мы постараемся их избегать.
XML (
Основная цель XML - обеспечить нотацию для описания и
структурирования информации, которой могут быть данные любого типа.
Ведущие стандарты XML также предоставляют наборы понятий и синтаксиса,
их можно использовать для создания описательных терминов, относящихся
к какому-либо одному типу данных, например,
XHTML описывает информацию, состоящую из текста, изображений и
ссылок на другие XHTML-документы. Каждый отдельный пример этих данных
называется экземпляром или документом. Таким образом, XHTML определяет
именно гипертекстовые документы и никакие другие. Существует множество
других доступных всем определений приложений XML, например,
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg width="500" height="400">
<rect x="35" y="32" width="300" height="85"/>
<text x="50" y="67">Прямоугольник</text>
</svg>
Первые три строки этого примера определяют тип документа, остальные
- его содержимое. Используя определение соответствующего приложения
XML, программисты создают ПО, которое может обрабатывать документы
такого типа. Обработка документов может быть как очень сложной, так и
очень простой. В случае примера из листинга 1.1, программа может
прочитать этот документ и отобразить прямоугольник со словом
"Прямоугольник" внутри, пример такой программы - браузер.
Успех XML основывается на нескольких простых принципах, которые мы рассмотрим ниже.
У всех
Другое следствие этого принципа - многократное использование и улучшение программных инструментов. Общие операции для работы с XML известны всем, следовательно, поиск или создание инструмента, который мог бы обрабатывать XML, облегчается. Программисты могут использовать эту функциональность во многих современных инструментах, в том числе и в Mozilla.
Этот принцип взят из мира
Такая гибкость - плодородная почва для разных
Mozilla, безусловно, выигрывает от такой гибкости. В ней
реализована поддержка нескольких современных приложений XML, прежде
всего, XUL (XML User-interface Language, язык описания интерфейсов на
основе XML) и XBL (XML
Еще одно преимущество XML - возможность использования разных языков.
Стандарт
Первые достижения современного мира компьютеров были реализованы в
англоязычной части западного полушария: в Университете Калифорнии, в
Университете Беркли и в компании ATT. Тогда казалось, что восьми
битов (одного байта) будет достаточно для глифов всех знаков, обычно
используемых при письме на английском. Так были созданы таблица
символов ASCII,
Пример инструмента, использующего XML и
Второе важное достоинство XML заключается в структуре его документов. Они состоят из вложенных друг в друга частей с каким-либо содержимым. Данные, организованные иерархически, обычно легко воспринимаются людьми. В одной известной загадке говорится:
Шел Кондрат в Ленинград, А навстречу - двенадцать ребят, У каждого по три лукошка, В каждом лукошке - кошка, У каждой кошки - двенадцать котят, У каждого котенка в зубах по четыре мышонка.
Окончание загадки:
И задумался старый Кондрат: "Сколько мышат и котят Ребята несут в Ленинград?" Глупый, глупый Кондрат! Он один и шагал в Ленинград. А ребята с лукошками, С мышами и кошками Шли навстречу ему - в Кострому.
Это пример иерархической организации объектов.
Простота особенно важна в работе с компьютерами, потому что это абстрактная задача. Даже вне контекста компьютеров (например, в этой книге) для упорядочения больших массивов данных используется иерархическая организация. Для программистов такая особенность XML - простой путь выразить решение какой-либо задачи.
Теперь давайте посмотрим на структуру самой платформы Mozilla. Платформа в контексте программирования - это программное обеспечение, которое разработчик может использовать в качестве основы для других продуктов. Используя функциональность платформы (полагаясь на нее), можно значительно упростить задачу создания приложения более высокого уровня. Программист может больше не тратить время на реализацию основных функций на языках вроде C.
Четыре основные концепции Mozilla - XUL, JavaScript,
Основное достоинство платформы Mozilla - возможность создания графических, интерактивных приложений. Она не предназначена для использования при написании драйверов, серверов или систем пакетной обработки данных. Но с ее помощью можно с легкостью добавить графический интерфейс к таким программам.
Приложения от
С тех пор
Платформа Mozilla пытается удовлетворить потребности программистов нескольких разных типов и в результате может рассматриваться как набор частично независимых друг от друга уровней.
Самый нижний уровень отвечает за управление и реализацию большого набора объектов. Все эти объекты взаимодействуют внутри одного исполняемого файла, а их работа координируется встроенной посреднической системой. Эта система легко переносима, так как должна работать в разных операционных системах. В Mozilla она называется XPCOM и является ядром платформы. Прямой доступ к XPCOM возможен только с использованием языков C или C++. Система XPCOM написана очень аккуратно, так что ее можно компилировать и запускать в разных ОС. Файлы, реализующие объекты, которыми управляет XPCOM, можно найти в каталоге components стандартной установки Mozilla.
Над XPCOM расположен небольшой уровень, который называется
XPConnect и обеспечивает интерфейс к XPCOM для языка JavaScript.
JavaScript - очень гибкий язык со слабой
Некоторые из доступных в платформе объектов - довольно большие и
сложные и могут обрабатывать XML. С их помощью программист может
получить более удобное представление своих данных в XML. Это
представление основывается на стандартах
Функциональность уровня
Некоторые объекты XPCOM сами выполняют различные действия для
отображения графического интерфейса, в частности, они визуально
организуют элементы и прорисовывают их. Часть платформы Mozilla,
которая называется Gecko, содержит набор таких объектов. Эти объекты
более высокого уровня автоматизируют отображение
Наконец, XML и объекты XPCOM можно связать вместе. Это делается с помощью связей XBL, шаблонов XUL или используются другие, менее очевидные, подходы. Таким образом, автоматическая обработка XML, выполняемая объектами XPCOM, доступна на более высоких уровнях при минимальных затратах на написание кода. Пример комбинации тегов и объектов, созданной с помощью XBL, - работа со вкладками в Mozilla.
И все-таки, если бы кроме этого платформа Mozilla ничего не
содержала, это был бы всего лишь интерпретатор JavaScript вместе с
большой библиотекой объектов - он не очень отличался бы от Perl,
Значительная часть работы программиста может быть выполнена путем
просто создания
Все эти уровни не заслоняют друг друга и одинаково доступны программисту. Ваш скрипт может действовать на любом из них, обращаясь к ним в любом порядке, но с учетом ограничений из соображений безопасности. Общие задачи, использующие интерактивную, визуальную сторону платформы, решаются написанием небольшого кода, работающего на самом высоком уровне платформы. Более специализированные задачи решаются более традиционно, для них задействуются объекты более низких уровней.
В оставшейся части обсуждения архитектуры мы рассмотрим некоторые ее уровни более подробно.
Одно из важнейших достоинств Mozilla - ее внутренняя структура.
Сама платформа написана на языках программирования C и C++, и именно они используются на самом нижнем уровне. В случае простой программы на C/C++ добавление функциональности означает компилирование и компоновку с большим числом объектов или функций. Но если вы работаете над большим проектом, этот подход слишком непрактичен.
Дело в том, что конечная программа будет постоянно увеличиваться и работать менее эффективно, кроме того, следить за всеми реализованными объектами сложно. Наконец, если программное обеспечение используется в нескольких проектах, каждому из них может быть нужна только часть платформы. Другими словами, для каждого проекта потребуется модифицировать платформу, чтобы она соответствовала его целям, или придется смириться с тем, что в ней будет множество никогда не используемых объектов. Вероятнее всего, должен быть более разумный подход к решению этой проблемы, и он действительно есть.
Менеджер объектов (он может называться каталогом объектов, службой именования объектов или службой обнаружения объектов) - это часть программы, которая отыскивает объекты и делает их доступными. Если все объекты предоставляют единый интерфейс, которым может пользоваться менеджер, со всеми объектами можно работать одинаково. Для достижения такого единообразия на объекты накладываются некоторые ограничения.
Каждому объекту Mozilla соответствует собственный компонент.
Компоненты создаются из объектов и интерфейсов. Список всех доступных
компонентов хранится в реестре компонентов (небольшая база данных).
Служба именования компонентов находит соответствующий имени компонента
объект (в терминах
@mozilla.org/browser/httpindex-service;1
Инфраструктура, для которой стандартизованы эти объекты, называется
XPCOM. Технология XPCOM немного похожа на
COM (Common
Почти все версии Mozilla можно представить в виде компонентов XPCOM, и почти ко всем из них можно обращаться из скриптов JavaScript. Многие компоненты реализуют протоколы Internet или другие сетевые стандарты. Эта модель компонентов и доступные сетевые компоненты делают Mozilla похожей на миниатюрную версию платформы разработки .NET. Если компоненты платформы написаны на C/C++, как в основном и есть, значит, они должны быть написаны в соответствии со строгими правилами, соблюдение которых обеспечивает переносимость; набором таких правил и является XPCOM.
Поддержка стандартов XML может быть различной. Программа может
просто иметь возможность считывать XML-документ, например, как фильтр
файлов, или может быть полностью посвящена анализу XML, как, например,
Поддержка XML в Mozilla полнее простого
Вот примерный список всех поддерживаемых Mozilla приложений XML:
XML, XML Namespaces (пространства имен XML), XLink, XHTML (и HTML),
MathML,
В Mozilla также поддерживаются два уникальных (используемых только в этой платформе) приложения XML: XUL и XBL. Документы XUL описывают расположение графических элементов управления. Документы XBL предоставляют связи, с помощью которых объекты JavaScript и данные в формате XML могут быть вместе преобразованы в новые данные. XUL - ключевая технология для разработчиков приложений. Посмотрите на любое окно классической Mozilla: все, что вы в нем увидите (за исключением HTML), описывается XUL.
Для многих из перечисленных стандартов Mozilla поддерживает
Чтобы показать пользователю данные из
Правила, определяющие внешний вид документов XML (и частично,
внешний вид HTML-документов), за последние несколько лет менялись.
Если раньше эти правила встречались в таких стандартах как HTML, то
сейчас они собираются в стандартах стилей, например, CSS, DSSSL
(Document Style
Стратегия 1а. Читать все теги из
Стратегия 1б. Считать все теги из
Стратегия 2. Читать все теги из
Стратегия 3. Читать теги так же, как это описано в
стратегии 2, но при этом постараться прочитать и служебную информацию.
Когда пользователь или сервер меняет служебную информацию, загружать
или удалять соответствующие данные и обновлять отображение документа.
Делать это даже после полной загрузки документа. Так поступает Mozilla
1.0+, используя в качестве служебной информации данные в формате
Реализация модели отображения из стратегии 3 довольно сложна, поэтому и внутренняя структура Mozilla, отвечающая за это, тоже очень непростая.
Поддержка стандартов для отображения web-страниц в Mozilla - лучшая из существующих. Ближайший конкурент Mozilla - браузер Opera. Хотя эта книга не о HTML, краткий обзор будет полезен, так как HTML можно комбинировать с XUL.
Для отображения HTML Mozilla может использовать один из трех
режимов: режим совместимости, режим
Дополнительно Mozilla поддерживает стандарты HTTP 1.1; CSS 2;
Мир HTML уменьшается до нескольких небольших не очень объемных
отдельных стандартов и
Mozilla содержит спецификацию механизма для объединения тегов XML (текста) и скомпилированных объектов. Этот язык называется XBL, приложение XML, созданное для Mozilla. Вместе с XBL обычно используются JavaScript, CSS и другие приложения XML.
С помощью XBL можно определить тег XML и его свойства и методы.
Этот тег связывается с какой-либо инструкцией по обработке. В
Так как XBL позволяет определять новые теги, Mozilla приходится быть достаточно либеральной при обработке данных. Любой тег XML может оказаться определенным в каком-либо другом месте. XBL вносит свой вклад в практически нулевую проверку корректности документов в Mozilla. Это будет обсуждаться ниже в разделе "Следствия".
Платформа Mozilla не сводится к набору объектов и набору стандартов XML. В нее также включена инфраструктура, обеспечивающая обработку и применение приложений, спроектированных для использования этих объектов и стандартов.
Некоторые части данной инфраструктуры реализуют новаторские идеи. Большинство из них необходимо для создания, установки и работы приложений.
Файлы, создаваемые при установке Mozilla, могут быть разделены на
три части. Первая - набор файлов, индивидуальных для пользователя
приложения, например, адреса электронной почты или закладки. Другая
часть - набор исполняемых файлов платформы плюс несколько файлов
настройки. Последняя часть - набор файлов приложения, хранящихся в
каталоге под названием
Внутри каталога
Mozilla обращается к файлам в этом каталоге, используя собственную
схему URL,
chrome://notetaker/content/NoteTaker.xul
Адрес, начинающийся с
resource://chrome/notetaker/content/NoteTaker.xul
Оба типа адресации представляют подмножество всех ресурсов, которые
могут быть доступны с помощью URL file:. Однако адреса, начинающиеся с
Вообще говоря, все, что находится в каталоге
(рис 1.3) Mozilla для GNU/Linux c менеджером окон KDE.Sawfish красиво оформляет строку заголовка окна, по меньшей мере, с
четырьмя кнопками. Файлы в
В
Mozilla поддерживает механизм тем, которые позволяют менять внешний
вид приложений, и систему локализации, позволяющую создавать интерфейс
пользователя на разных языках. Обе системы работают внутри каталога
Отдельные темы строятся из файлов оформления. К ним относятся
файлы, определяющие аспекты окон, не влияющие на размещение и форму
этих окон, то есть цвета, шрифты и изображения. Файлы оформления -
подмножество
Адреса
Внутри платформы широко используется новая система обработки данных
на основе стратегии "поставщик-потребитель". Эта стратегия обычно
используется в объектно-ориентированных языках и библиотеках функций.
В платформу Mozilla включена поддержка инфраструктуры для нескольких
сочетаний "поставщиков" и "потребителей", при этом особое внимание
уделяется данным в формате
Такой подход означает, что часть кода отвечает за предоставление
данных ("поставщик", в Mozilla это называется источником данных), а
другая часть - за их обработку ("потребитель", в Mozilla это адресат
данных). Такое разделение позволяет направлять
Самый сложный способ работы с источниками и обработчиками данных
предполагает объединение данных в формате
С помощью такой фильтрации данные можно комбинировать и разбивать. Это происходит уже после того, как данные были предоставлены, но до того, как их передали адресату. В терминах информатики это простая система обработки знаний, что, конечно, не очень характерно для браузера.
Помимо продуманной структуры платформа Mozilla отличается еще и тем, что пытается составить конкуренцию браузеру Internet Explorer от Microsoft. Чтобы достичь этой цели, у Mozilla должна быть какая-нибудь уникальная функциональность.
Ключевая особенность Mozilla - соответствие стандартам
Разработчики Mozilla стараются повышать производительность своего продукта, постоянно сравнивая ее с производительностью Internet Explorer и Opera. Регулярно предпринимаются шаги для удаления или замены неэффективного кода из платформы и браузеров, основанных на ней.
Платформа Mozilla предоставляет два способа доступа к приложениям, разработанным для нее и расположенным на удаленном web-сервере.
Более простой метод - простая загрузка и запуск приложения. Как можно отобразить HTML-документ с формой для заполнения и отправки, так же можно локально загрузить и отобразить XUL-документ, давая пользователю возможность работать с окнами, меню и формами приложения. При этом приложение ведет себя как установленное локально; данный подход более всего напоминает некоторые методы Microsoft .NET.
Другой вариант - использовать технологию XPInstall. Это система
удаленной установки, которая загружает архив с сайта и устанавливает
его в локальный каталог
В обоих случаях на удаленные приложения накладываются небольшие ограничения, связанные с безопасностью, хотя при использовании правильного подхода эти ограничения можно и увеличить.
Наконец, некоторые свойства платформы появляются в результате взаимодействия множества меньших ее составляющих.
Mozilla - продукт, предназначенный для работы с графическим
отображением, и этим она отличается от большинства проектов с
открытыми исходными кодами вроде
На самом нижнем уровне Mozilla опирается на набор графических
элементов управления из доступного набора текущей платформы. Это GTK
на Linux,
На следующем уровне, уровне взаимодействия с рабочим столом,
Mozilla реагирует на обычные события, отправляемые окнам: фокус,
свертывание, закрытие. Ее поведение вполне
Наконец, на уровне приложений одной из самых сильных сторон Mozilla является язык описания графических элементов, XUL. Он позволяет связывать графические объекты простым и эффективным способом.
Mozilla можно запускать на самых разных ОС и в самых разных средах. На http://www.mozillla.org каждую ночь собираются тестовые версии платформы Mozilla, и сборки выкладываются в виде готовых для загрузки и установки файлов. Поддерживаются, по крайней мере, следующие операционные системы (ОС):
Существуют также экспериментальные версии для таких систем как
Amiga. Mozilla хорошо работает под ОС
Переносимость Mozilla подразумевает не только возможность запускать
ее в разном окружении. Большая часть реализованных функций идентична
для всех сред. В частности, типы файлов, используемых для создания
приложения Mozilla (XUL, CSS,
В мире сетевого программирования принято одно фундаментальное правило проектирования: отправлять данные только в соответствии со стандартом, но быть готовым получать все, что угодно, все, что можно обработать. Эта стратегия нацелена на увеличение использования стандартов в новых системах без отказа во взаимодействии со старыми.
Платформа Mozilla - приложение для работы в сети, часто получающее
электронную почту, web-страницы и другие сообщения. Она следует
правилу, приведенному выше, и его влияние видно программисту. За
исключением режима полного соответствия стандартам для HTML, платформа
интерпретирует получаемые
Для конечного пользователя это хорошо, потому что надоедливые сообщения об ошибках сведены к минимуму. Для программиста все иначе. Добавить что-то новое в приложение Mozilla очень легко, но это новшество может никак не проявляться. Отсутствие какой-либо реакции может означать, что внесенные изменения не обработаны корректно, содержат опечатки или не реализованы вообще. Программисту при написании кода нужна более чувствительная к ошибкам система.
К счастью, основные проверки Mozilla выполняет правильно: XML- данные должны быть корректными, а JavaScript и CSS не должны содержать синтаксических ошибок. Конечно, это примитивные проверки, но и они полезны при работе в таких областях, где ошибки могут быть менее явными.
Плюс Mozilla в том, что это не просто продукт, а платформа. К сожалению, минус ее в том, что она еще не такая гибкая или полная, как хотелось бы.
Тем не менее, она достаточно удобна, чтобы ее можно было расширять, внося различные изменения, от незначительных до фундаментальных. Можно добавлять новые объекты, в том числе объекты XPCOM, новые теги XML, новые темы или поддержку новых языков, наконец, можно добавлять приложения. При этом необязательно регистрировать все в каком-то центральном реестре или следовать логике авторов других приложений.
Так как исходный код платформы доступен всем, возможны какие угодно
улучшения. А системы
В Mozilla присутствуют те же функции защиты, что и в
Самым важным аспектом безопасности платформы является то, что на
приложение, установленное в
Работая с платформой, можно выбрать любую из моделей защиты, описанных в лекции 16, "Объекты XPCOM". В стандартную установку платформы включена поддержка большинства стандартов шифрования и работы с сертификатами.
Окинув беглым взглядом платформу, давайте обратимся к стилю программирования, который называется быстрой разработкой, и посмотрим, из чего он состоит.
Для проектов быстрой разработки характерны некоторые уникальные черты. Первая из них - само название - быстрая разработка приложений; для таких проектов важнейшая цель - оперативное получение результата.
Сама платформа Mozilla не относится к такого рода проектам. Это
проект с открытыми исходными кодами, для которого
Так как существуют разные альтернативы, быстрая разработка не сводится к простому использованию платформы разработки, это еще и склад ума, и процесс. Вот некоторые важные характеристики проектов быстрой разработки приложений.
Первое найденное решение, достигающее желаемой цели, вероятнее всего, лучшее. Это очень важно - вам не нужно следовать каким-то жестким правилам. Кто выполняет работу быстрее, тот выигрывает. Даже если выбранная методика не самая изящная и, возможно, даже не самая гибкая, тот факт, что работа выполнена, очень важен. Если полученные результаты можно потом улучшить, это тоже плюс.
Не стоит тратить годы на разработку совершенной архитектуры. Лучше создать что-нибудь реально работающее.
Поведение пользователей - самая важная проблема в разработке программного обеспечения. Их действия нельзя запрограммировать, а им самим приходится сталкиваться практически с любой частью программы, что влияет на всю структуру приложения. Много времени и усилий приходится тратить на то, чтобы достичь согласия между пользователем и интерфейсом для него. В случае быстрой разработки приложений возникает необходимость в проведении быстрых и гибких экспериментов по тестированию графического интерфейса. Для таких проектов нужна возможность эффективно создавать визуальные прототипы.
Быстрая разработка не означает "сделай сборку, и все в ней будет безупречно". Важна возможность легко и быстро создавать и менять демонстрации графического интерфейса.
Быстрая разработка используется для создания продуктов специального
применения, не универсальных; неважно, будет это каталог для музея или
программа анализа состояния фондов. Такие продукты называются
вертикальными решениями. В этих случаях обычно не нужно делать
приложение настолько гибким, чтобы его можно было приспособить и для
выполнения задач другого класса. Это может быть будущей целью и только
если продукт уже рабочий. Поэтому незачем настаивать на использовании
универсального инструментария и языков более низкого уровня вроде C++,
Perl или
В проектах быстрой разработки стоит использовать узкоспециализированные средства - универсальные не всегда лучше.
Становится все сложнее прислушиваться к аргументу разработчиков "не мы это писали", которым они подкрепляют свой отказ использовать в проекте чужие наработки. Общее количество написанного кода постоянно увеличивается, и шансы, что кто-то до вас уже написал то, что вам нужно, все выше. Использовать уже готовые наработки - хорошая методика, позволяющая сохранить время и силы. Так можно значительно уменьшить затраты на программирование и быстрее получить работающий результат. Использование чужих наработок очень важно для быстрой разработки приложений.
В проектах быстрой разработки прежде всего следует пытаться использовать уже готовый материал, а только затем пытаться создать решение самостоятельно.
Ограничения языков программирования низких уровней, например, C,
хорошо известны. Проблемы с указателями и --pedantic.
Если программисты делают примерно одно и то же количество ошибок в
час, вероятно, этот довод действителен и для интерпретируемых языков.
Однако тогда подразумевается, что разрабатывается очень нестандартная
программа. В случае быстрой разработки использование какой-либо
большой платформы (вроде Mozilla) означает добавление небольших
фрагментов программы, а не объемных самостоятельных частей кода.
Кусочек маленькой программы гораздо легче написать правильно с самого
начала, так как в нем меньше точек ветвления (выражений с if ). Если
приложение разрабатывается на основе какого-то другого, большего, это
большее приложение одновременно постоянно тестирует создаваемое
приложение. В этом случае тщательное формальное тестирование может
быть излишним.
Во время быстрой разработки используется тестирование отдельных компонентов, так как маленькие фрагменты кода с большей вероятностью написаны правильно, чем одна большая программа.
Mozilla может быть эффективным
Прежде всего, нужно найти всю документацию, перечисленную в разделе "Практика" вводной лекции. Этой документации и хорошей книги для начала будет достаточно. Маловероятно, чтобы для быстрой разработки приложения понадобился исходный код Mozilla.
Время от времени придется заглядывать в файлы других приложений
glimpseindex(1) для UNIX или проиндексировать распакованные файлы из
Во время создания интерфейсов с помощью XUL не стоит быть
перфекционистом. Сидеть и подгонять размеры окон буквально по пикселам
- неправильный подход. Достаточно будет приблизительного наброска,
уточнения, а косметические поправки стоит делать только в самом конце.
Не нужно бороться с инструментами собственного изготовления; надо
просто использовать их оптимальным образом. Например, если вам не
нравится тег <grid>, но больше ничего не подходит, просто используйте <grid> и забудьте об этом на время. Всегда держите консоль JavaScript
открытой, но не пишите код на JavaScript, пока заказчик не увидит
созданные вами графические интерфейсы на XUL.
При создании рабочего прототипа или экспериментировании не
старайтесь слишком часто обращать внимание на XPCOM. Большая часть
данных может быть обработана после execute(). Не волнуйтесь, если
ваше приложение не выглядит как картинка, все равно вы сможете потом
привести его в порядок.
Если возникла какая-то техническая проблема, которую не удается
решить, постарайтесь не отвлекаться на бесполезные детали. Причина
большинства бед -
Лучше всего сохранить копию текущего кода и пытаться удалять из
него части, пока не станет ясно, в чем причина проблемы. Затем следует
заглянуть в книгу или отправить вопрос в подходящую конференцию. Если
это не поможет решить проблему, в конце концов, у вас появится
Страстным поклонникам открытых исходных кодов не следует думать, что работа над самой платформой Mozilla будет быстрой. Это не что иное, как работа над обычным довольно большим проектом на C/C++. Вы сможете продвигаться в разработке, но не так быстро, чтобы изменения были заметны ежедневно - вероятнее всего, их влияние скажется не раньше, чем через месяц. Это хобби, которое займет ваше внимание надолго и будет отнимать много времени, если, конечно, это не ваша работа. На основе Mozilla можно быстро создавать новые приложения, но разработка самой платформы не так проста.
Сейчас мы попробуем исследовать платформу Mozilla и подготовиться к разработке нашего приложения NoteTaker.
Для этой книги мы рекомендуем использовать версию платформы 1.7, в нее включены как сама платформа, так и классическая Mozilla. Можно использовать и более ранние версии. Обновления к книге можно проверить на сайте http://www.nigelmcfarlane.com.
Перед установкой следует прочитать рекомендации по установке для своей ОС, они достаточно полные. Их можно найти в разделе загрузки сайта mozilla.org. Некоторые менее очевидные эффекты установки рассматриваются здесь.
В
C:\Windows\Application Data\Mozilla
Если вы пользуетесь Windows NT/2000/XP, найдите такой же каталог для текущего пользователя. Если вы работаете с UNIX-системой, профили будут расположены здесь:
~/.mozilla
Рекомендуется одновременно использовать две установки Mozilla,
каждая должна быть в отдельном каталоге. Одна из них будет резервной
копией, которую мы не станем трогать, а другая будет использоваться
для разработки. И в Windows, и в UNIX у нас будет только один профиль
пользователя по умолчанию, и он будет использоваться обеими
установками. Но можно для каждой из них создать свой профиль. Чтобы
это сделать, нужно отключить в профиле для разработки электронную
почту, иначе может возникнуть неразбериха. При наличии двух установок
вам будут доступны два каталога
Если установить Mozilla дважды или установить две разные версии, нужно соблюдать осторожность при их одновременном запуске. Если это разные версии, их можно различать по номерам в строке заголовка окна, но запускать одновременно, особенно во время тестирования, не рекомендуется. Дело в том, что Mozilla использует механизм сигналов. Вторая запущенная Mozilla может послать сигнал первой и сразу же завершить работу. При этом уже запущенная копия откроет новое окно. Все будет выглядеть так, как будто вы запустили еще один экземпляр платформы и открыли окно, но на самом деле откроется еще одно окно уже запущенного экземпляра. Если вы привыкли просматривать web-страницы во время разработки и пользуетесь Windows, то лучше всего будет использовать для их просмотра Internet Explorer, он подходит и для работы с документацией. В UNIX легче запустить отдельные экземпляры платформы: следует просто воспользоваться командной строкой.
В этой книге подразумевается, что платформа установлена в каталоги
по умолчанию. Для Microsoft
C:\Program Files\Mozilla
В системах UNIX обычно переоценивают значение каталога /usr, что
усложняет
/usr/local/lib/mozilla-1.7
В обоих случаях каталог
Если вы пользуетесь UNIX-системой, и у вас две установки, нужно поискать в документации по установке информацию о переменной окружения MOZILLA_FIVE_HOME. Чтобы запускать программу из пиктограммы GNOME, требуется прочитать документацию. Панель GNOME - это прямоугольник в нижней части рабочего стола. Можете перетащить пиктограмму с панели прямо на рабочий стол.
Материал этой книги проверялся на следующих системах: Microsoft
Windows 98SE с Internet Explorer 6.0 и обновлениями; Red
Открыть справку по --help. В Microsoft Windows
можно указать -h или -help, но только если запускать программу из
командной строки ("Сеанс MS-DOS") или если ее вывод перенаправлен в
файл. В таблице 1.1 приведены все доступные параметры, но не во всех
системах наборы параметров одинаковы.
-addressbook |
|
- |
запуск |
- |
создание сообщения электронной почты |
- |
открыть окно URL |
-console |
дополнительное окно терминала, в которое выводится отладочная информация и поступает вывод |
-contentLocale ЯЗЫК |
открыть обычное окно, но предпочтительный язык для HTML будет ЯЗЫК |
-CreateProfile ИМЯ |
открыть обычное окно, используя новый профиль ИМЯ |
-edit URL |
открыть в Компоновщике файл, находящийся по заданному URL |
-h -help --help |
показать список доступных |
-height N |
открыть окно высотой N пикселов |
-installer |
утилита для импортирования профилей из |
-jsconsole |
открыть консоль JavaScript |
-mail |
открыть клиент для чтения почты и конференций |
-news |
открыть клиент для чтения почты и конференций |
-nosplash |
не показывать |
-P ИМЯ |
открыть окно от имени пользователя ИМЯ |
-ProfileManager |
открыть окно менеджера профилей |
-ProfileWizard |
открыть окно мастера создания профилей |
-SelectProfile |
открыть окно выбора профиля |
- |
не показывать |
-UILocale ЯЗЫК |
открыть обычное окно, но языком интерфейса будет ЯЗЫК |
-venkman |
открыть отладчик JavaScript, если он установлен |
-width N |
открыть окно шириной N пикселов |
Самый быстрый способ узнать, на что похожа разработка приложений
для Mozilla - посмотреть на что-либо уже работающее.
Структурно
В этом каталоге находятся текстовые файлы и архивы File | Open . В
UNIX-системе нужно использовать zip/
На рисунке 1.4 показано
содержимое типичного каталога
(рис 1.4) Каталог chrome в Altlinux LinuxПо снимку окна видно, что здесь установлена Mozilla с поддержкой двух языков: en-US (американский английский, по умолчанию) и fr-FR (французский). Mozilla автоматически создала каталог overlayinfo и отдельные текстовые файлы, которые, тем не менее, можно редактировать вручную.
chrome .rdf - текстовая база данных с информацией обо всех используемых toolkit .jar содержит инструментарий, общий для всех приложений classic.jar содержит тему Classic.messenger .jar содержит клиент почты и конференций.comm .jar содержит файлы Может показаться, что имена файлов подчиняются некоему правилу, но
это не совсем так. Просто существует соглашение об именовании
(рис 1.5) Внутренние каталоги chrome (для всех ОС)В каталоге
Если мы заглянем внутрь какого-нибудь
Все эти ограничения по именованию и структуре каталогов можно
игнорировать, помня о двух последствиях. Во-первых, скорее всего, ваше
приложение станет неорганизованной
Вернемся к адресной книге. На рисунке 1.6 показаны файлы, составляющие это приложение.
(рис 1.6) Часть архива messenger.jar, составляющая адресную книгу.Часть архива
На снимке экрана видно, что приложения
Ближайшим эквивалентом файла main.c C-проектов здесь будет файл
addressbook.xul. Это хорошая демонстрация функций Mozilla. Если
открыть этот файл, сразу становятся очевидны его основные особенности:
XML-синтаксис, использование тегов <?xul-overlay>, <?xml-stylesheet?>
и <script> для включения других файлов, широкое использование
Файлы, необходимые для работы адресной книги, содержатся не только
в этом архиве. Дополнительные файлы можно найти в каталогах с темами
Modern и Classic. Если удалить весь
Можно также менять Mozilla вне каталога
Пожалуй, ни одна книга по программированию не обходится без этой
простой программы, прославившейся благодаря Кернигану и Ритчи и их
книге "Язык программирования Си". Оригинальная фраза "hello, world"
была затем изменена на "Hello, World!", когда C стал стандартом .
Mozilla сейчас еще находится на этапе развития, поэтому мы будем
использовать первую версию строки.
Mozilla отображает все простые версии "hello, world" на HTML, какие только можно придумать. Вариантов написания может быть бесконечно много. В листинге 1.2 показаны варианты для стандартного режима и для режима совместимости.
<html> <body> hello, world </body> </html> <?xml version="1.0"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en"> <body>hello, world </body> </html>
Но мы, разработчики приложений, напишем "hello, world" на XUL,
<?xml version="1.0"?>
<!DOCTYPE window> <window xmlns=
"http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<box>
<description>hello, world</description>
</box>
</window>
Прежде всего, нужно заметить, что для вывода обычного текста в XUL следует использовать специальный тег с очень длинным именем (<description>). Файлы XUL обычно не содержат просто текст, но содержат разметку. Идентификатор пространства имен XML - неявная ссылка на фильм "Охотники за привидениями". XUL произносится как "зул", а там был отрицательный персонаж именно с таким именем. Кроме того, Venkman - тоже оттуда, но это уже фамилия положительного героя. Эта строка нигде не появляется, кроме как внутри Mozilla. По адресу этого пространства имен в Internet есть страница-пустышка, она ни для чего не используется.
Чтобы посмотреть, как работает наша первая программа, нужно
сохранить ее текст в файл под названием hello.xul в любом каталоге.
Для таких простых случаев это необязательно должен быть
(рис 1.7) XUL-версия "hello, world", открытая как обычный документСодержимое файлов XUL необязательно должно появляться в окне
браузера. Закройте Mozilla и запустите ее из командной строки с
параметром -. Для UNIX команда может выглядеть примерно так:
/usr/local/lib/mozilla-1.7/mozilla -chrome file:///tmp/hello.xul
А для Microsoft Windows так:
"C:\Program Files\Mozilla\mozilla.exe" -chrome "file:C:/tmp/hello.xul"
В любом случае результат будет похож на показанный на рисунке 1.8.
(рис 1.8) XUL-версия "hello, world", открытая как файл chromeНаш второй результат более типичен для приложений, разрабатываемых для Mozilla. Это только начало.
Приложение NoteTaker послужит небольшим примером, над которым мы будем работать в течение всей книги. Оно не будет самостоятельным, а будет работать вместе с классическим браузером Mozilla. Когда пользователь установит NoteTaker, вся первоначальная настройка будет сделана автоматически. Как разработчики, мы должны делать все сами с самого начала.
Единственное, что нам нужно еще сделать для установки NoteTaker, -
создать несколько каталогов и зарегистрировать имя notetaker как
официальное расширение
Регистрация расширения производится в файле
content,install,url,resource:/chrome/notetaker/content/
Будьте внимательны к синтаксису и лучше ничего не меняйте в этой строке. Со стороны приложения больше пока ничего не требуется, хотя мы еще часто будем сюда возвращаться. Кроме того, рекомендуется следовать советам, данным в разделе "Отладка".
Mozilla - достаточно сложная система. Если настроить ее некорректно, сложнее будет заставить работать приложения. Число непонятных проблем уменьшается с каждой исправленной ошибкой, но лучше попытаться достичь успеха с самого начала.
Можно использовать большое число настроек Mozilla, чтобы упростить себе жизнь. Самым очевидным решением будет научиться пользоваться отладчиком JavaScript, его кодовое название - Venkman. Вы найдете его, выбрав "Инструменты" | "Web-разработка" | Отладчик JavaScript. Если вам нравятся графические многофункциональные отладчики, это как раз для вас. Я предпочитаю философию UNIX - множество маленьких инструментов - поэтому здесь нет руководства по отладчику. Чтобы запустить отладчик, нужно добавить следующую строку в скрипт своего приложения:
debugger;
В
Прежде всего, необходимо правильно настроить Mozilla. Настроек в
Mozilla больше тысячи. И только небольшое их подмножество доступно
через меню "Правка" | "Настройки".... Все остальные настройки задаются
вручную с помощью текстового редактора. Во время редактирования
настроек вручную Mozilla не должна быть запущена, потому что иначе при
завершении работы она перезапишет измененные настройки. То же
относится и к продуктам
Можно просматривать и редактировать большую часть настроек, введя в
строку адреса about:config. Следует помнить, что при простом щелчке
правой кнопкой по настройке значение не изменится. Помимо показанных в
этом списке настроек, существуют и скрытые.
Чтобы сохранить изменения настроек на диск, необходимо
отредактировать файл prefs.js или preferences.js в нужном профиле
пользователя, создать новый
В таблице 1.2 приведен список настроек, которые разработчикам приложений лучше всего изменить.
Существует большое количество других настроек вывода информации или отладки, но они не так полезны. Также важно убедиться, что в настройках кэша браузера задано сравнение содержимого кэша с загружаемыми страницами при каждом просмотре.
Возможно, вы захотите тестировать свои приложения как на
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
| Настройка | Нужное значение | Описание |
|---|---|---|
browser. |
true |
Использовать функцию диагностики |
nglayout.debug.disable_xul_cache |
true |
По умолчанию приложения XUL кэшируются в Mozilla. Но во время тестирования нужно следить за результатами изменения кода, то есть необходимо, чтобы каждый раз файл загружался заново |
javascript.options. |
true |
Более подробный вывод на консоль JavaScript |
nglayout.debug.disable_xul_fastload |
true |
Второй кэш XUL, загружающийся при запуске из файла .MFL. Если оставить его включенным, это может сбивать с толку |
|
true |
Ужесточает все ограничения с целью обеспечения защиты для загружаемого содержимого за исключением случаев, когда пользователь все-таки вынужден дать |
xul.debug.box |
false |
Если это необходимо, отладку можно включить и из самого файла XUL |
Во время работы Mozilla обычно имеет дело с несколькими окнами за раз. Количество окон может сбивать с толку, особенно если у вас установлено несколько версий платформы.
Если новое окно открывается в Microsoft Windows, оно будет относиться к текущему запущенному экземпляру Mozilla. Это значит, что в любой момент времени может быть запущен только один экземпляр Mozilla и, естественно, только одна ее версия.
Если окно открывается из командной строки или из значка на рабочем столе, то сначала происходит поиск уже запущенной Mozilla. Если Mozilla запущена, ей отправляется инструкция "открыть окно" и на этом обработка команды завершается. Mozilla загружается целиком заново только в том случае, если еще не был запущен ни один ее экземпляр.
То есть если у вас установлены две версии Mozilla, обычно вы не можете запустить их обе одновременно. Однако это ограничение можно обойти. Для этого требуется сделать копию исполняемого файла Mozilla, отредактировать ресурсы этой копии с помощью редактора ресурсов (например, из Microsoft Visual C++) и изменить строки ресурсов 102 и 103 в таблице строк на что-нибудь другое. Сохраните изменения. Теперь эта копия может запускаться как отдельный экземпляр исходного исполняемого файла. Для нее также должен быть создан отдельный профиль. Но необходимо помнить, что вы сюда вносили изменения.
Кроме того, можно (и иногда очень легко) создать некорректное XUL- приложение. Когда открываются окна такого приложения, кажется, что все в порядке, хотя они могут вести себя не так, как следовало бы. В некоторых случаях при закрытии таких окон платформа все равно остается запущенной. Тогда следующее открытое окно будет использовать уже запущенную платформу, хотя та может работать с ошибками из-за запуска некорректного приложения.
Если вам кажется, что у вас именно такой случай, нажмите Control- Alt-Delete и проверьте, не запущены ли какие-нибудь процессы Mozilla, хотя все окна уже закрыты. Если вы их найдете, эти процессы спокойно можно уничтожить.
В системах UNIX/Linux запуск Mozilla из командной строки или пиктограммы на рабочем столе никак не будет взаимодействовать с уже запущенной платформой. То есть это коренным образом отличается от поведения платформы в Microsoft Windows и действительно для версий не ниже 1.4.
Иногда это неудобно, поскольку в приложениях XUL обычно нет
стандартных меню, предоставляющих доступ к таким удобным инструментам
как Инспектор
Тем не менее, консоль JavaScript можно запустить довольно легко, достаточно просто добавить этот ключ к команде запуска своего приложения:
-jsconsole
Более общий обходной путь подразумевает включение небольшого
скрипта в ваше приложение (см. листинг 1.4). Чтобы этот скрипт
работал, приложение должно быть установлено в
<script>
var options = "chrome,extrachrome,menubar,resizeable,scrollbars,
status,toolbar"; var domins = "
chrome://inspector/content/inspector.xul";
var jscons = "chrome://global/content/console.xul";
if (window.name == "_blank") {
setTimeout("window.open
'"+location+"','test','chrome')",5000);
setTimeout("window.close()",6000);
window.open(domins,"_blank",options);
window.open(jscons,"_blank",options);
}
</script>
Этот скрипт запускает Инспектор
Между Mozilla и тем, что вы видите на экране в ОС UNIX, находится
множество промежуточных слоев - других приложений. Если активно
экспериментировать, можно натолкнуться на ошибки, скрывающиеся где-
нибудь в самой top(1), и завершайте работу одной программы за другой,
пока проблема не исчезнет. Вот примерный порядок проверки:
Конечно, такие проблемы встречаются достаточно редко, но
систематический подход к их решению поможет сэкономить уйму времени.
Кроме того, он избавит Mozilla от
Чтобы скомпилировать Mozilla самостоятельно, можно собрать исполняемый файл со включенной дополнительной отладкой. Некоторые из этих дополнительных функций могут быть включены с помощью "волшебных" переменных окружения. Помните также, что при использовании некоторых из них вы будете получать массу информации.
Чтобы собрать Mozilla c включенными функциями отладки, потребуется
использовать параметр --enable-debug. Это параметр для скрипта
configure, который запускается перед началом компиляции. Если отладка
включена, в компиляции будут участвовать те части кода, которые
относятся к функциям отладки. Чтобы не указывать этот параметр и
многие другие вручную при запуске configure, можно создать специальный
файл, откуда скрипт и будет считывать параметры. Этот файл можно легко
создать с помощью формы, расположенной на
http://webtools.mozilla.org/build/config.cgi.
Чтобы понять, какие переменные окружения активируют какие-либо
функции отладки, изучите исходные коды Mozilla. Это также полезно,
если вы хотите узнать, какие еще функции отладки можно активировать во
время отладки (например, #ifdef EXTRA_DEBUG ).
Mozilla - не только браузер, но и инструмент, который можно задействовать для более быстрого создания приложений, чем при использовании традиционных языков программирования третьего поколения. Она позволяет использовать в традиционных графических приложениях некоторые из преимуществ web-приложений. Использование при этом интерпретируемых языков открывает возможность очень быстрой пошаговой разработки и создания эффективных прототипов. Однако желание узнать инструмент получше и заглянуть внутрь него занимает очень много времени, к тому же поиск и исправление синтаксических ошибок возлагаются на плечи разработчика.
Корни Mozilla - в разработке технологии браузеров, и в этой области
ей есть что предложить пользователю. Она поддерживает современные
стандарты и легко переносима. В системах UNIX это самый очевидный,
если не единственный, выбор браузера. Однако архитектурные расширения
внутри Mozilla интереснее всего разработчикам. Внутренняя компонентная
структура Mozilla предоставляет разработчику набор готовых к
применению сервисов, а новый
Mozilla поддерживается организацией, которая ориентирована как на коммерческую деятельность, так и на работу со свободным сообществом разработчиков. Любому интересующемуся технической информацией она предлагает множество ресурсов, при этом ничего не требуя взамен. Это организация со многими партнерами в сфере бизнеса, науки и комитетов по стандартизации, и она очень уверенно держится на плаву. Судя по всему, развиваемая ею технология имеет все шансы стать полезной и популярной.
В этой лекции дается обзор архитектуры Mozilla и используемых в ней концепций. Кода здесь почти нет. Те читатели, которые лишь недавно начали работу с Mozilla, после прочтения первой лекции получат основную информацию об этой платформе, а также смогут примерно представить, на что им предстоит тратить время и усилия. В этой лекции речь пойдет о том, что собой представляет платформа, как в Mozilla используются технологии XML и как она реализует принципы быстрой разработки приложений. Те, кто уже знаком со структурой платформы, могут перейти к лекции 2, "Проектирование с XUL".
В разделе "Практика" этой лекции приведено несколько простых примеров программ. Они помогут заглянуть внутрь существующего приложения на основе Mozilla, написать свою первую программу и начать разработку проекта NoteTaker ("блокнот"), которым мы будем заниматься на протяжении всей книги.
Иллюстрация к этой лекции -
Даже при первом взгляде на диаграмму видно, что платформа
разделятся на две основные части. Справа (внешний интерфейс) находятся
ориентированные на пользователей технологии: события, стили CSS
(
Наблюдать эти две части платформы воочию очень легко: достаточно
открыть окно любой программы на основе Mozilla, например, браузер или
Сложность схемы не означает, что метод работы с соответствующей ей
Слово Mozilla первоначально было только названием проекта. Оно было
предложено в 90-х годах Джеми Завински, сотрудником компании
Но с тех пор слово Mozilla стало использоваться гораздо чаще, оно одновременно означало и проект, и конечный продукт, и платформу, а организация, занимающаяся разработкой и продвижением Mozilla, стала называться mozilla.org. Сейчас Mozilla - общее название для группы технологий вроде .Net и Java. Для именования продуктов и технологий внутри этой группы используются собственные названия. Официальный сайт Mozilla, который иногда так и называется, mozilla.org, можно найти по адресу http://www.mozilla.org
Mozilla впервые стала публичным проектом в 1998 г., когда были
открыты исходные коды от пакета приложений для работы в
Internet
Теперь версии 6.0, 6.5, 7.0 и старше относятся к собственным
продуктам
В этом курсе термины Mozilla и платформа Mozilla обозначают одну
вещь - платформу. Любое приложение, основанное на Mozilla (например,
Разделение между платформой Mozilla и приложениями mozilla.org со временем становится более очевидным. То, что раньше было большим пакетом приложений, теперь стало целой платформой, поверх которой создается множество небольших приложений.
По крайней мере, до версии 1.4 у этих приложений были названия,
доставшиеся им в наследство от
Так как новые приложения узкоспециализированы и все еще непрерывно меняются, в качестве примера и отправной точки в этой книге используется "старый" интегрированный пакет приложений. Он хорошо оттестирован, демонстрирует почти все возможности платформы, лучше документирован и достаточно актуален. Это идеально подходит для начала исследования Mozilla.
В нашем курсе "классический браузер" означает браузер,
интегрированный в пакет приложений mozilla.org. Классическая Mozilla
относится ко всему пакету приложений, Навигатор - к браузеру
Конечный продукт проекта Mozilla - Gecko, или среда исполнения Gecko. Это "урезанная" версия платформы, содержащая только основную функциональность для отображения элементов. Она еще не выделилась в отдельный продукт, но так как ее название звучит все чаще и чаще, это, скорее всего, случится.
Подведем итог этих пояснений относительно названий: данный курс - только о платформе Mozilla. Для объяснения работы этой платформы в курсе используется классический браузер и другие части классической Mozilla, но здесь также рассказывается и о том, как построить отдельное приложение. Разрабатываемое на протяжении курса приложение NoteTaker добавляется как расширение к браузеру только потому, что оно слишком маленькое, и поэтому нет смысла делать его самостоятельным. Во время чтения рекомендуется использовать классическую Mozilla 1.7, содержащую платформу Mozilla 1.7. В оставшейся части лекции мы обсудим некоторые другие названия и термины, связанные с технологиями Mozilla.
Важнее всего для Mozilla - выпуск очередной версии классической Mozilla. Существует множество комбинаций этой платформы и пакета приложений. В классической Mozilla реализовано большое подмножество всех тех возможностей, которые предоставляет платформа. Остальная функциональность остается недоступной. Для нумерации основных версий Mozilla используются следующие правила:
Во время изучения этого курса можно использовать любую готовую версию платформы: основную или для тестирования функциональности.
Вот некоторые из известных приложений, созданных на основе платформы Mozilla:
Два отличных примера приложений не для Internet дают OEone и ActiveState.
Продукция OEone (http://www.oeone.com) предназначена для начинающих пользователей. Продукт OEone HomeBase является особой комбинацией Linux и расширенной версии платформы Mozilla под названием Penzilla. В результате получается система для работы с компьютером, содержащая все необходимое. На рисунке 1.1 показан снимок такого рабочего стола на основе Mozilla.
(рис 1.1) Рабочий стол OEone HomeBase. Использовано с разрешения OEone Corporation (www.oeone.com).ActiveState (http://www.activestate.com) предлагает интегрированную среду разработки для программистов под названием Komodo, которая также основывается на платформе Mozilla. Снимок окна можно увидеть на рисунке 1.2.
(рис 1.2) Среда разработки ActiveState’s Komode 3.1. Использовано с разрешения ActiveState (www.activestate.com).Кроме перечисленных обычных и web-приложений, можно создавать и другие легко настраиваемые приложения. С помощью стандартной платформы Mozilla можно реализовать почти один и тот же графический интерфейс в любой операционной системе. Конечно, было множество попыток создать браузер, который бы полностью соответствовал внешнему виду отдельной ОС. Это сильно модифицированные версии Mozilla, которые мы не будем рассматривать в этом курсе:
Число приложений, основанных на платформе Mozilla, постоянно растет: ежемесячно появляются уведомления о создании новых продуктов. Их можно найти в центре новостей сообщества Mozilla, http://www.mozillazine.org.
На англоязычных сайтах (да и русскоязычных тоже) и в списках рассылок, посвященных Mozilla, часто могут встречаться разные выражения, специфичные только для сообщества Mozilla. Объяснять здесь их все бессмысленно. Если вы знаете английский язык, можете обратиться к документам http://www.mozilla.org/docs/jargon.html и http://devsupport.mozdev.org/QA/thesaurus/. Мы приведем лишь небольшой список наиболее часто употребляемых слов:
Наконец, существует целый список пересекающихся друг с другом технических терминов, например, Seamonkey, NGLayout, Necko и т. д. Только некоторые из них относятся к отдельно выделяемому приложению или технологии, так что в этом курсе мы постараемся их избегать.
XML (
Основная цель XML - обеспечить нотацию для описания и
структурирования информации, которой могут быть данные любого типа.
Ведущие стандарты XML также предоставляют наборы понятий и синтаксиса,
их можно использовать для создания описательных терминов, относящихся
к какому-либо одному типу данных, например,
XHTML описывает информацию, состоящую из текста, изображений и
ссылок на другие XHTML-документы. Каждый отдельный пример этих данных
называется экземпляром или документом. Таким образом, XHTML определяет
именно гипертекстовые документы и никакие другие. Существует множество
других доступных всем определений приложений XML, например,
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg width="500" height="400">
<rect x="35" y="32" width="300" height="85"/>
<text x="50" y="67">Прямоугольник</text>
</svg>
Первые три строки этого примера определяют тип документа, остальные
- его содержимое. Используя определение соответствующего приложения
XML, программисты создают ПО, которое может обрабатывать документы
такого типа. Обработка документов может быть как очень сложной, так и
очень простой. В случае примера из листинга 1.1, программа может
прочитать этот документ и отобразить прямоугольник со словом
"Прямоугольник" внутри, пример такой программы - браузер.
Успех XML основывается на нескольких простых принципах, которые мы рассмотрим ниже.
У всех
Другое следствие этого принципа - многократное использование и улучшение программных инструментов. Общие операции для работы с XML известны всем, следовательно, поиск или создание инструмента, который мог бы обрабатывать XML, облегчается. Программисты могут использовать эту функциональность во многих современных инструментах, в том числе и в Mozilla.
Этот принцип взят из мира
Такая гибкость - плодородная почва для разных
Mozilla, безусловно, выигрывает от такой гибкости. В ней
реализована поддержка нескольких современных приложений XML, прежде
всего, XUL (XML User-interface Language, язык описания интерфейсов на
основе XML) и XBL (XML
Еще одно преимущество XML - возможность использования разных языков.
Стандарт
Первые достижения современного мира компьютеров были реализованы в
англоязычной части западного полушария: в Университете Калифорнии, в
Университете Беркли и в компании ATT. Тогда казалось, что восьми
битов (одного байта) будет достаточно для глифов всех знаков, обычно
используемых при письме на английском. Так были созданы таблица
символов ASCII,
Пример инструмента, использующего XML и
Второе важное достоинство XML заключается в структуре его документов. Они состоят из вложенных друг в друга частей с каким-либо содержимым. Данные, организованные иерархически, обычно легко воспринимаются людьми. В одной известной загадке говорится:
Шел Кондрат в Ленинград, А навстречу - двенадцать ребят, У каждого по три лукошка, В каждом лукошке - кошка, У каждой кошки - двенадцать котят, У каждого котенка в зубах по четыре мышонка.
Окончание загадки:
И задумался старый Кондрат: "Сколько мышат и котят Ребята несут в Ленинград?" Глупый, глупый Кондрат! Он один и шагал в Ленинград. А ребята с лукошками, С мышами и кошками Шли навстречу ему - в Кострому.
Это пример иерархической организации объектов.
Простота особенно важна в работе с компьютерами, потому что это абстрактная задача. Даже вне контекста компьютеров (например, в этой книге) для упорядочения больших массивов данных используется иерархическая организация. Для программистов такая особенность XML - простой путь выразить решение какой-либо задачи.
Теперь давайте посмотрим на структуру самой платформы Mozilla. Платформа в контексте программирования - это программное обеспечение, которое разработчик может использовать в качестве основы для других продуктов. Используя функциональность платформы (полагаясь на нее), можно значительно упростить задачу создания приложения более высокого уровня. Программист может больше не тратить время на реализацию основных функций на языках вроде C.
Четыре основные концепции Mozilla - XUL, JavaScript,
Основное достоинство платформы Mozilla - возможность создания графических, интерактивных приложений. Она не предназначена для использования при написании драйверов, серверов или систем пакетной обработки данных. Но с ее помощью можно с легкостью добавить графический интерфейс к таким программам.
Приложения от
С тех пор
Платформа Mozilla пытается удовлетворить потребности программистов нескольких разных типов и в результате может рассматриваться как набор частично независимых друг от друга уровней.
Самый нижний уровень отвечает за управление и реализацию большого набора объектов. Все эти объекты взаимодействуют внутри одного исполняемого файла, а их работа координируется встроенной посреднической системой. Эта система легко переносима, так как должна работать в разных операционных системах. В Mozilla она называется XPCOM и является ядром платформы. Прямой доступ к XPCOM возможен только с использованием языков C или C++. Система XPCOM написана очень аккуратно, так что ее можно компилировать и запускать в разных ОС. Файлы, реализующие объекты, которыми управляет XPCOM, можно найти в каталоге components стандартной установки Mozilla.
Над XPCOM расположен небольшой уровень, который называется
XPConnect и обеспечивает интерфейс к XPCOM для языка JavaScript.
JavaScript - очень гибкий язык со слабой
Некоторые из доступных в платформе объектов - довольно большие и
сложные и могут обрабатывать XML. С их помощью программист может
получить более удобное представление своих данных в XML. Это
представление основывается на стандартах
Функциональность уровня
Некоторые объекты XPCOM сами выполняют различные действия для
отображения графического интерфейса, в частности, они визуально
организуют элементы и прорисовывают их. Часть платформы Mozilla,
которая называется Gecko, содержит набор таких объектов. Эти объекты
более высокого уровня автоматизируют отображение
Наконец, XML и объекты XPCOM можно связать вместе. Это делается с помощью связей XBL, шаблонов XUL или используются другие, менее очевидные, подходы. Таким образом, автоматическая обработка XML, выполняемая объектами XPCOM, доступна на более высоких уровнях при минимальных затратах на написание кода. Пример комбинации тегов и объектов, созданной с помощью XBL, - работа со вкладками в Mozilla.
И все-таки, если бы кроме этого платформа Mozilla ничего не
содержала, это был бы всего лишь интерпретатор JavaScript вместе с
большой библиотекой объектов - он не очень отличался бы от Perl,
Значительная часть работы программиста может быть выполнена путем
просто создания
Все эти уровни не заслоняют друг друга и одинаково доступны программисту. Ваш скрипт может действовать на любом из них, обращаясь к ним в любом порядке, но с учетом ограничений из соображений безопасности. Общие задачи, использующие интерактивную, визуальную сторону платформы, решаются написанием небольшого кода, работающего на самом высоком уровне платформы. Более специализированные задачи решаются более традиционно, для них задействуются объекты более низких уровней.
В оставшейся части обсуждения архитектуры мы рассмотрим некоторые ее уровни более подробно.
Одно из важнейших достоинств Mozilla - ее внутренняя структура.
Сама платформа написана на языках программирования C и C++, и именно они используются на самом нижнем уровне. В случае простой программы на C/C++ добавление функциональности означает компилирование и компоновку с большим числом объектов или функций. Но если вы работаете над большим проектом, этот подход слишком непрактичен.
Дело в том, что конечная программа будет постоянно увеличиваться и работать менее эффективно, кроме того, следить за всеми реализованными объектами сложно. Наконец, если программное обеспечение используется в нескольких проектах, каждому из них может быть нужна только часть платформы. Другими словами, для каждого проекта потребуется модифицировать платформу, чтобы она соответствовала его целям, или придется смириться с тем, что в ней будет множество никогда не используемых объектов. Вероятнее всего, должен быть более разумный подход к решению этой проблемы, и он действительно есть.
Менеджер объектов (он может называться каталогом объектов, службой именования объектов или службой обнаружения объектов) - это часть программы, которая отыскивает объекты и делает их доступными. Если все объекты предоставляют единый интерфейс, которым может пользоваться менеджер, со всеми объектами можно работать одинаково. Для достижения такого единообразия на объекты накладываются некоторые ограничения.
Каждому объекту Mozilla соответствует собственный компонент.
Компоненты создаются из объектов и интерфейсов. Список всех доступных
компонентов хранится в реестре компонентов (небольшая база данных).
Служба именования компонентов находит соответствующий имени компонента
объект (в терминах
@mozilla.org/browser/httpindex-service;1
Инфраструктура, для которой стандартизованы эти объекты, называется
XPCOM. Технология XPCOM немного похожа на
COM (Common
Почти все версии Mozilla можно представить в виде компонентов XPCOM, и почти ко всем из них можно обращаться из скриптов JavaScript. Многие компоненты реализуют протоколы Internet или другие сетевые стандарты. Эта модель компонентов и доступные сетевые компоненты делают Mozilla похожей на миниатюрную версию платформы разработки .NET. Если компоненты платформы написаны на C/C++, как в основном и есть, значит, они должны быть написаны в соответствии со строгими правилами, соблюдение которых обеспечивает переносимость; набором таких правил и является XPCOM.
Поддержка стандартов XML может быть различной. Программа может
просто иметь возможность считывать XML-документ, например, как фильтр
файлов, или может быть полностью посвящена анализу XML, как, например,
Поддержка XML в Mozilla полнее простого
Вот примерный список всех поддерживаемых Mozilla приложений XML:
XML, XML Namespaces (пространства имен XML), XLink, XHTML (и HTML),
MathML,
В Mozilla также поддерживаются два уникальных (используемых только в этой платформе) приложения XML: XUL и XBL. Документы XUL описывают расположение графических элементов управления. Документы XBL предоставляют связи, с помощью которых объекты JavaScript и данные в формате XML могут быть вместе преобразованы в новые данные. XUL - ключевая технология для разработчиков приложений. Посмотрите на любое окно классической Mozilla: все, что вы в нем увидите (за исключением HTML), описывается XUL.
Для многих из перечисленных стандартов Mozilla поддерживает
Чтобы показать пользователю данные из
Правила, определяющие внешний вид документов XML (и частично,
внешний вид HTML-документов), за последние несколько лет менялись.
Если раньше эти правила встречались в таких стандартах как HTML, то
сейчас они собираются в стандартах стилей, например, CSS, DSSSL
(Document Style
Стратегия 1а. Читать все теги из
Стратегия 1б. Считать все теги из
Стратегия 2. Читать все теги из
Стратегия 3. Читать теги так же, как это описано в
стратегии 2, но при этом постараться прочитать и служебную информацию.
Когда пользователь или сервер меняет служебную информацию, загружать
или удалять соответствующие данные и обновлять отображение документа.
Делать это даже после полной загрузки документа. Так поступает Mozilla
1.0+, используя в качестве служебной информации данные в формате
Реализация модели отображения из стратегии 3 довольно сложна, поэтому и внутренняя структура Mozilla, отвечающая за это, тоже очень непростая.
Поддержка стандартов для отображения web-страниц в Mozilla - лучшая из существующих. Ближайший конкурент Mozilla - браузер Opera. Хотя эта книга не о HTML, краткий обзор будет полезен, так как HTML можно комбинировать с XUL.
Для отображения HTML Mozilla может использовать один из трех
режимов: режим совместимости, режим
Дополнительно Mozilla поддерживает стандарты HTTP 1.1; CSS 2;
Мир HTML уменьшается до нескольких небольших не очень объемных
отдельных стандартов и
Mozilla содержит спецификацию механизма для объединения тегов XML (текста) и скомпилированных объектов. Этот язык называется XBL, приложение XML, созданное для Mozilla. Вместе с XBL обычно используются JavaScript, CSS и другие приложения XML.
С помощью XBL можно определить тег XML и его свойства и методы.
Этот тег связывается с какой-либо инструкцией по обработке. В
Так как XBL позволяет определять новые теги, Mozilla приходится быть достаточно либеральной при обработке данных. Любой тег XML может оказаться определенным в каком-либо другом месте. XBL вносит свой вклад в практически нулевую проверку корректности документов в Mozilla. Это будет обсуждаться ниже в разделе "Следствия".
Платформа Mozilla не сводится к набору объектов и набору стандартов XML. В нее также включена инфраструктура, обеспечивающая обработку и применение приложений, спроектированных для использования этих объектов и стандартов.
Некоторые части данной инфраструктуры реализуют новаторские идеи. Большинство из них необходимо для создания, установки и работы приложений.
Файлы, создаваемые при установке Mozilla, могут быть разделены на
три части. Первая - набор файлов, индивидуальных для пользователя
приложения, например, адреса электронной почты или закладки. Другая
часть - набор исполняемых файлов платформы плюс несколько файлов
настройки. Последняя часть - набор файлов приложения, хранящихся в
каталоге под названием
Внутри каталога
Mozilla обращается к файлам в этом каталоге, используя собственную
схему URL,
chrome://notetaker/content/NoteTaker.xul
Адрес, начинающийся с
resource://chrome/notetaker/content/NoteTaker.xul
Оба типа адресации представляют подмножество всех ресурсов, которые
могут быть доступны с помощью URL file:. Однако адреса, начинающиеся с
Вообще говоря, все, что находится в каталоге
(рис 1.3) Mozilla для GNU/Linux c менеджером окон KDE.Sawfish красиво оформляет строку заголовка окна, по меньшей мере, с
четырьмя кнопками. Файлы в
В
Mozilla поддерживает механизм тем, которые позволяют менять внешний
вид приложений, и систему локализации, позволяющую создавать интерфейс
пользователя на разных языках. Обе системы работают внутри каталога
Отдельные темы строятся из файлов оформления. К ним относятся
файлы, определяющие аспекты окон, не влияющие на размещение и форму
этих окон, то есть цвета, шрифты и изображения. Файлы оформления -
подмножество
Адреса
Внутри платформы широко используется новая система обработки данных
на основе стратегии "поставщик-потребитель". Эта стратегия обычно
используется в объектно-ориентированных языках и библиотеках функций.
В платформу Mozilla включена поддержка инфраструктуры для нескольких
сочетаний "поставщиков" и "потребителей", при этом особое внимание
уделяется данным в формате
Такой подход означает, что часть кода отвечает за предоставление
данных ("поставщик", в Mozilla это называется источником данных), а
другая часть - за их обработку ("потребитель", в Mozilla это адресат
данных). Такое разделение позволяет направлять
Самый сложный способ работы с источниками и обработчиками данных
предполагает объединение данных в формате
С помощью такой фильтрации данные можно комбинировать и разбивать. Это происходит уже после того, как данные были предоставлены, но до того, как их передали адресату. В терминах информатики это простая система обработки знаний, что, конечно, не очень характерно для браузера.
Помимо продуманной структуры платформа Mozilla отличается еще и тем, что пытается составить конкуренцию браузеру Internet Explorer от Microsoft. Чтобы достичь этой цели, у Mozilla должна быть какая-нибудь уникальная функциональность.
Ключевая особенность Mozilla - соответствие стандартам
Разработчики Mozilla стараются повышать производительность своего продукта, постоянно сравнивая ее с производительностью Internet Explorer и Opera. Регулярно предпринимаются шаги для удаления или замены неэффективного кода из платформы и браузеров, основанных на ней.
Платформа Mozilla предоставляет два способа доступа к приложениям, разработанным для нее и расположенным на удаленном web-сервере.
Более простой метод - простая загрузка и запуск приложения. Как можно отобразить HTML-документ с формой для заполнения и отправки, так же можно локально загрузить и отобразить XUL-документ, давая пользователю возможность работать с окнами, меню и формами приложения. При этом приложение ведет себя как установленное локально; данный подход более всего напоминает некоторые методы Microsoft .NET.
Другой вариант - использовать технологию XPInstall. Это система
удаленной установки, которая загружает архив с сайта и устанавливает
его в локальный каталог
В обоих случаях на удаленные приложения накладываются небольшие ограничения, связанные с безопасностью, хотя при использовании правильного подхода эти ограничения можно и увеличить.
Наконец, некоторые свойства платформы появляются в результате взаимодействия множества меньших ее составляющих.
Mozilla - продукт, предназначенный для работы с графическим
отображением, и этим она отличается от большинства проектов с
открытыми исходными кодами вроде
На самом нижнем уровне Mozilla опирается на набор графических
элементов управления из доступного набора текущей платформы. Это GTK
на Linux,
На следующем уровне, уровне взаимодействия с рабочим столом,
Mozilla реагирует на обычные события, отправляемые окнам: фокус,
свертывание, закрытие. Ее поведение вполне
Наконец, на уровне приложений одной из самых сильных сторон Mozilla является язык описания графических элементов, XUL. Он позволяет связывать графические объекты простым и эффективным способом.
Mozilla можно запускать на самых разных ОС и в самых разных средах. На http://www.mozillla.org каждую ночь собираются тестовые версии платформы Mozilla, и сборки выкладываются в виде готовых для загрузки и установки файлов. Поддерживаются, по крайней мере, следующие операционные системы (ОС):
Существуют также экспериментальные версии для таких систем как
Amiga. Mozilla хорошо работает под ОС
Переносимость Mozilla подразумевает не только возможность запускать
ее в разном окружении. Большая часть реализованных функций идентична
для всех сред. В частности, типы файлов, используемых для создания
приложения Mozilla (XUL, CSS,
В мире сетевого программирования принято одно фундаментальное правило проектирования: отправлять данные только в соответствии со стандартом, но быть готовым получать все, что угодно, все, что можно обработать. Эта стратегия нацелена на увеличение использования стандартов в новых системах без отказа во взаимодействии со старыми.
Платформа Mozilla - приложение для работы в сети, часто получающее
электронную почту, web-страницы и другие сообщения. Она следует
правилу, приведенному выше, и его влияние видно программисту. За
исключением режима полного соответствия стандартам для HTML, платформа
интерпретирует получаемые
Для конечного пользователя это хорошо, потому что надоедливые сообщения об ошибках сведены к минимуму. Для программиста все иначе. Добавить что-то новое в приложение Mozilla очень легко, но это новшество может никак не проявляться. Отсутствие какой-либо реакции может означать, что внесенные изменения не обработаны корректно, содержат опечатки или не реализованы вообще. Программисту при написании кода нужна более чувствительная к ошибкам система.
К счастью, основные проверки Mozilla выполняет правильно: XML- данные должны быть корректными, а JavaScript и CSS не должны содержать синтаксических ошибок. Конечно, это примитивные проверки, но и они полезны при работе в таких областях, где ошибки могут быть менее явными.
Плюс Mozilla в том, что это не просто продукт, а платформа. К сожалению, минус ее в том, что она еще не такая гибкая или полная, как хотелось бы.
Тем не менее, она достаточно удобна, чтобы ее можно было расширять, внося различные изменения, от незначительных до фундаментальных. Можно добавлять новые объекты, в том числе объекты XPCOM, новые теги XML, новые темы или поддержку новых языков, наконец, можно добавлять приложения. При этом необязательно регистрировать все в каком-то центральном реестре или следовать логике авторов других приложений.
Так как исходный код платформы доступен всем, возможны какие угодно
улучшения. А системы
В Mozilla присутствуют те же функции защиты, что и в
Самым важным аспектом безопасности платформы является то, что на
приложение, установленное в
Работая с платформой, можно выбрать любую из моделей защиты, описанных в лекции 16, "Объекты XPCOM". В стандартную установку платформы включена поддержка большинства стандартов шифрования и работы с сертификатами.
Окинув беглым взглядом платформу, давайте обратимся к стилю программирования, который называется быстрой разработкой, и посмотрим, из чего он состоит.
Для проектов быстрой разработки характерны некоторые уникальные черты. Первая из них - само название - быстрая разработка приложений; для таких проектов важнейшая цель - оперативное получение результата.
Сама платформа Mozilla не относится к такого рода проектам. Это
проект с открытыми исходными кодами, для которого
Так как существуют разные альтернативы, быстрая разработка не сводится к простому использованию платформы разработки, это еще и склад ума, и процесс. Вот некоторые важные характеристики проектов быстрой разработки приложений.
Первое найденное решение, достигающее желаемой цели, вероятнее всего, лучшее. Это очень важно - вам не нужно следовать каким-то жестким правилам. Кто выполняет работу быстрее, тот выигрывает. Даже если выбранная методика не самая изящная и, возможно, даже не самая гибкая, тот факт, что работа выполнена, очень важен. Если полученные результаты можно потом улучшить, это тоже плюс.
Не стоит тратить годы на разработку совершенной архитектуры. Лучше создать что-нибудь реально работающее.
Поведение пользователей - самая важная проблема в разработке программного обеспечения. Их действия нельзя запрограммировать, а им самим приходится сталкиваться практически с любой частью программы, что влияет на всю структуру приложения. Много времени и усилий приходится тратить на то, чтобы достичь согласия между пользователем и интерфейсом для него. В случае быстрой разработки приложений возникает необходимость в проведении быстрых и гибких экспериментов по тестированию графического интерфейса. Для таких проектов нужна возможность эффективно создавать визуальные прототипы.
Быстрая разработка не означает "сделай сборку, и все в ней будет безупречно". Важна возможность легко и быстро создавать и менять демонстрации графического интерфейса.
Быстрая разработка используется для создания продуктов специального
применения, не универсальных; неважно, будет это каталог для музея или
программа анализа состояния фондов. Такие продукты называются
вертикальными решениями. В этих случаях обычно не нужно делать
приложение настолько гибким, чтобы его можно было приспособить и для
выполнения задач другого класса. Это может быть будущей целью и только
если продукт уже рабочий. Поэтому незачем настаивать на использовании
универсального инструментария и языков более низкого уровня вроде C++,
Perl или
В проектах быстрой разработки стоит использовать узкоспециализированные средства - универсальные не всегда лучше.
Становится все сложнее прислушиваться к аргументу разработчиков "не мы это писали", которым они подкрепляют свой отказ использовать в проекте чужие наработки. Общее количество написанного кода постоянно увеличивается, и шансы, что кто-то до вас уже написал то, что вам нужно, все выше. Использовать уже готовые наработки - хорошая методика, позволяющая сохранить время и силы. Так можно значительно уменьшить затраты на программирование и быстрее получить работающий результат. Использование чужих наработок очень важно для быстрой разработки приложений.
В проектах быстрой разработки прежде всего следует пытаться использовать уже готовый материал, а только затем пытаться создать решение самостоятельно.
Ограничения языков программирования низких уровней, например, C,
хорошо известны. Проблемы с указателями и --pedantic.
Если программисты делают примерно одно и то же количество ошибок в
час, вероятно, этот довод действителен и для интерпретируемых языков.
Однако тогда подразумевается, что разрабатывается очень нестандартная
программа. В случае быстрой разработки использование какой-либо
большой платформы (вроде Mozilla) означает добавление небольших
фрагментов программы, а не объемных самостоятельных частей кода.
Кусочек маленькой программы гораздо легче написать правильно с самого
начала, так как в нем меньше точек ветвления (выражений с if ). Если
приложение разрабатывается на основе какого-то другого, большего, это
большее приложение одновременно постоянно тестирует создаваемое
приложение. В этом случае тщательное формальное тестирование может
быть излишним.
Во время быстрой разработки используется тестирование отдельных компонентов, так как маленькие фрагменты кода с большей вероятностью написаны правильно, чем одна большая программа.
Mozilla может быть эффективным
Прежде всего, нужно найти всю документацию, перечисленную в разделе "Практика" вводной лекции. Этой документации и хорошей книги для начала будет достаточно. Маловероятно, чтобы для быстрой разработки приложения понадобился исходный код Mozilla.
Время от времени придется заглядывать в файлы других приложений
glimpseindex(1) для UNIX или проиндексировать распакованные файлы из
Во время создания интерфейсов с помощью XUL не стоит быть
перфекционистом. Сидеть и подгонять размеры окон буквально по пикселам
- неправильный подход. Достаточно будет приблизительного наброска,
уточнения, а косметические поправки стоит делать только в самом конце.
Не нужно бороться с инструментами собственного изготовления; надо
просто использовать их оптимальным образом. Например, если вам не
нравится тег <grid>, но больше ничего не подходит, просто используйте <grid> и забудьте об этом на время. Всегда держите консоль JavaScript
открытой, но не пишите код на JavaScript, пока заказчик не увидит
созданные вами графические интерфейсы на XUL.
При создании рабочего прототипа или экспериментировании не
старайтесь слишком часто обращать внимание на XPCOM. Большая часть
данных может быть обработана после execute(). Не волнуйтесь, если
ваше приложение не выглядит как картинка, все равно вы сможете потом
привести его в порядок.
Если возникла какая-то техническая проблема, которую не удается
решить, постарайтесь не отвлекаться на бесполезные детали. Причина
большинства бед -
Лучше всего сохранить копию текущего кода и пытаться удалять из
него части, пока не станет ясно, в чем причина проблемы. Затем следует
заглянуть в книгу или отправить вопрос в подходящую конференцию. Если
это не поможет решить проблему, в конце концов, у вас появится
Страстным поклонникам открытых исходных кодов не следует думать, что работа над самой платформой Mozilla будет быстрой. Это не что иное, как работа над обычным довольно большим проектом на C/C++. Вы сможете продвигаться в разработке, но не так быстро, чтобы изменения были заметны ежедневно - вероятнее всего, их влияние скажется не раньше, чем через месяц. Это хобби, которое займет ваше внимание надолго и будет отнимать много времени, если, конечно, это не ваша работа. На основе Mozilla можно быстро создавать новые приложения, но разработка самой платформы не так проста.
Сейчас мы попробуем исследовать платформу Mozilla и подготовиться к разработке нашего приложения NoteTaker.
Для этой книги мы рекомендуем использовать версию платформы 1.7, в нее включены как сама платформа, так и классическая Mozilla. Можно использовать и более ранние версии. Обновления к книге можно проверить на сайте http://www.nigelmcfarlane.com.
Перед установкой следует прочитать рекомендации по установке для своей ОС, они достаточно полные. Их можно найти в разделе загрузки сайта mozilla.org. Некоторые менее очевидные эффекты установки рассматриваются здесь.
В
C:\Windows\Application Data\Mozilla
Если вы пользуетесь Windows NT/2000/XP, найдите такой же каталог для текущего пользователя. Если вы работаете с UNIX-системой, профили будут расположены здесь:
~/.mozilla
Рекомендуется одновременно использовать две установки Mozilla,
каждая должна быть в отдельном каталоге. Одна из них будет резервной
копией, которую мы не станем трогать, а другая будет использоваться
для разработки. И в Windows, и в UNIX у нас будет только один профиль
пользователя по умолчанию, и он будет использоваться обеими
установками. Но можно для каждой из них создать свой профиль. Чтобы
это сделать, нужно отключить в профиле для разработки электронную
почту, иначе может возникнуть неразбериха. При наличии двух установок
вам будут доступны два каталога
Если установить Mozilla дважды или установить две разные версии, нужно соблюдать осторожность при их одновременном запуске. Если это разные версии, их можно различать по номерам в строке заголовка окна, но запускать одновременно, особенно во время тестирования, не рекомендуется. Дело в том, что Mozilla использует механизм сигналов. Вторая запущенная Mozilla может послать сигнал первой и сразу же завершить работу. При этом уже запущенная копия откроет новое окно. Все будет выглядеть так, как будто вы запустили еще один экземпляр платформы и открыли окно, но на самом деле откроется еще одно окно уже запущенного экземпляра. Если вы привыкли просматривать web-страницы во время разработки и пользуетесь Windows, то лучше всего будет использовать для их просмотра Internet Explorer, он подходит и для работы с документацией. В UNIX легче запустить отдельные экземпляры платформы: следует просто воспользоваться командной строкой.
В этой книге подразумевается, что платформа установлена в каталоги
по умолчанию. Для Microsoft
C:\Program Files\Mozilla
В системах UNIX обычно переоценивают значение каталога /usr, что
усложняет
/usr/local/lib/mozilla-1.7
В обоих случаях каталог
Если вы пользуетесь UNIX-системой, и у вас две установки, нужно поискать в документации по установке информацию о переменной окружения MOZILLA_FIVE_HOME. Чтобы запускать программу из пиктограммы GNOME, требуется прочитать документацию. Панель GNOME - это прямоугольник в нижней части рабочего стола. Можете перетащить пиктограмму с панели прямо на рабочий стол.
Материал этой книги проверялся на следующих системах: Microsoft
Windows 98SE с Internet Explorer 6.0 и обновлениями; Red
Открыть справку по --help. В Microsoft Windows
можно указать -h или -help, но только если запускать программу из
командной строки ("Сеанс MS-DOS") или если ее вывод перенаправлен в
файл. В таблице 1.1 приведены все доступные параметры, но не во всех
системах наборы параметров одинаковы.
-addressbook |
|
- |
запуск |
- |
создание сообщения электронной почты |
- |
открыть окно URL |
-console |
дополнительное окно терминала, в которое выводится отладочная информация и поступает вывод |
-contentLocale ЯЗЫК |
открыть обычное окно, но предпочтительный язык для HTML будет ЯЗЫК |
-CreateProfile ИМЯ |
открыть обычное окно, используя новый профиль ИМЯ |
-edit URL |
открыть в Компоновщике файл, находящийся по заданному URL |
-h -help --help |
показать список доступных |
-height N |
открыть окно высотой N пикселов |
-installer |
утилита для импортирования профилей из |
-jsconsole |
открыть консоль JavaScript |
-mail |
открыть клиент для чтения почты и конференций |
-news |
открыть клиент для чтения почты и конференций |
-nosplash |
не показывать |
-P ИМЯ |
открыть окно от имени пользователя ИМЯ |
-ProfileManager |
открыть окно менеджера профилей |
-ProfileWizard |
открыть окно мастера создания профилей |
-SelectProfile |
открыть окно выбора профиля |
- |
не показывать |
-UILocale ЯЗЫК |
открыть обычное окно, но языком интерфейса будет ЯЗЫК |
-venkman |
открыть отладчик JavaScript, если он установлен |
-width N |
открыть окно шириной N пикселов |
Самый быстрый способ узнать, на что похожа разработка приложений
для Mozilla - посмотреть на что-либо уже работающее.
Структурно
В этом каталоге находятся текстовые файлы и архивы File | Open . В
UNIX-системе нужно использовать zip/
На рисунке 1.4 показано
содержимое типичного каталога
(рис 1.4) Каталог chrome в Altlinux LinuxПо снимку окна видно, что здесь установлена Mozilla с поддержкой двух языков: en-US (американский английский, по умолчанию) и fr-FR (французский). Mozilla автоматически создала каталог overlayinfo и отдельные текстовые файлы, которые, тем не менее, можно редактировать вручную.
chrome .rdf - текстовая база данных с информацией обо всех используемых toolkit .jar содержит инструментарий, общий для всех приложений classic.jar содержит тему Classic.messenger .jar содержит клиент почты и конференций.comm .jar содержит файлы Может показаться, что имена файлов подчиняются некоему правилу, но
это не совсем так. Просто существует соглашение об именовании
(рис 1.5) Внутренние каталоги chrome (для всех ОС)В каталоге
Если мы заглянем внутрь какого-нибудь
Все эти ограничения по именованию и структуре каталогов можно
игнорировать, помня о двух последствиях. Во-первых, скорее всего, ваше
приложение станет неорганизованной
Вернемся к адресной книге. На рисунке 1.6 показаны файлы, составляющие это приложение.
(рис 1.6) Часть архива messenger.jar, составляющая адресную книгу.Часть архива
На снимке экрана видно, что приложения
Ближайшим эквивалентом файла main.c C-проектов здесь будет файл
addressbook.xul. Это хорошая демонстрация функций Mozilla. Если
открыть этот файл, сразу становятся очевидны его основные особенности:
XML-синтаксис, использование тегов <?xul-overlay>, <?xml-stylesheet?>
и <script> для включения других файлов, широкое использование
Файлы, необходимые для работы адресной книги, содержатся не только
в этом архиве. Дополнительные файлы можно найти в каталогах с темами
Modern и Classic. Если удалить весь
Можно также менять Mozilla вне каталога
Пожалуй, ни одна книга по программированию не обходится без этой
простой программы, прославившейся благодаря Кернигану и Ритчи и их
книге "Язык программирования Си". Оригинальная фраза "hello, world"
была затем изменена на "Hello, World!", когда C стал стандартом .
Mozilla сейчас еще находится на этапе развития, поэтому мы будем
использовать первую версию строки.
Mozilla отображает все простые версии "hello, world" на HTML, какие только можно придумать. Вариантов написания может быть бесконечно много. В листинге 1.2 показаны варианты для стандартного режима и для режима совместимости.
<html> <body> hello, world </body> </html> <?xml version="1.0"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en"> <body>hello, world </body> </html>
Но мы, разработчики приложений, напишем "hello, world" на XUL,
<?xml version="1.0"?>
<!DOCTYPE window> <window xmlns=
"http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<box>
<description>hello, world</description>
</box>
</window>
Прежде всего, нужно заметить, что для вывода обычного текста в XUL следует использовать специальный тег с очень длинным именем (<description>). Файлы XUL обычно не содержат просто текст, но содержат разметку. Идентификатор пространства имен XML - неявная ссылка на фильм "Охотники за привидениями". XUL произносится как "зул", а там был отрицательный персонаж именно с таким именем. Кроме того, Venkman - тоже оттуда, но это уже фамилия положительного героя. Эта строка нигде не появляется, кроме как внутри Mozilla. По адресу этого пространства имен в Internet есть страница-пустышка, она ни для чего не используется.
Чтобы посмотреть, как работает наша первая программа, нужно
сохранить ее текст в файл под названием hello.xul в любом каталоге.
Для таких простых случаев это необязательно должен быть
(рис 1.7) XUL-версия "hello, world", открытая как обычный документСодержимое файлов XUL необязательно должно появляться в окне
браузера. Закройте Mozilla и запустите ее из командной строки с
параметром -. Для UNIX команда может выглядеть примерно так:
/usr/local/lib/mozilla-1.7/mozilla -chrome file:///tmp/hello.xul
А для Microsoft Windows так:
"C:\Program Files\Mozilla\mozilla.exe" -chrome "file:C:/tmp/hello.xul"
В любом случае результат будет похож на показанный на рисунке 1.8.
(рис 1.8) XUL-версия "hello, world", открытая как файл chromeНаш второй результат более типичен для приложений, разрабатываемых для Mozilla. Это только начало.
Приложение NoteTaker послужит небольшим примером, над которым мы будем работать в течение всей книги. Оно не будет самостоятельным, а будет работать вместе с классическим браузером Mozilla. Когда пользователь установит NoteTaker, вся первоначальная настройка будет сделана автоматически. Как разработчики, мы должны делать все сами с самого начала.
Единственное, что нам нужно еще сделать для установки NoteTaker, -
создать несколько каталогов и зарегистрировать имя notetaker как
официальное расширение
Регистрация расширения производится в файле
content,install,url,resource:/chrome/notetaker/content/
Будьте внимательны к синтаксису и лучше ничего не меняйте в этой строке. Со стороны приложения больше пока ничего не требуется, хотя мы еще часто будем сюда возвращаться. Кроме того, рекомендуется следовать советам, данным в разделе "Отладка".
Mozilla - достаточно сложная система. Если настроить ее некорректно, сложнее будет заставить работать приложения. Число непонятных проблем уменьшается с каждой исправленной ошибкой, но лучше попытаться достичь успеха с самого начала.
Можно использовать большое число настроек Mozilla, чтобы упростить себе жизнь. Самым очевидным решением будет научиться пользоваться отладчиком JavaScript, его кодовое название - Venkman. Вы найдете его, выбрав "Инструменты" | "Web-разработка" | Отладчик JavaScript. Если вам нравятся графические многофункциональные отладчики, это как раз для вас. Я предпочитаю философию UNIX - множество маленьких инструментов - поэтому здесь нет руководства по отладчику. Чтобы запустить отладчик, нужно добавить следующую строку в скрипт своего приложения:
debugger;
В
Прежде всего, необходимо правильно настроить Mozilla. Настроек в
Mozilla больше тысячи. И только небольшое их подмножество доступно
через меню "Правка" | "Настройки".... Все остальные настройки задаются
вручную с помощью текстового редактора. Во время редактирования
настроек вручную Mozilla не должна быть запущена, потому что иначе при
завершении работы она перезапишет измененные настройки. То же
относится и к продуктам
Можно просматривать и редактировать большую часть настроек, введя в
строку адреса about:config. Следует помнить, что при простом щелчке
правой кнопкой по настройке значение не изменится. Помимо показанных в
этом списке настроек, существуют и скрытые.
Чтобы сохранить изменения настроек на диск, необходимо
отредактировать файл prefs.js или preferences.js в нужном профиле
пользователя, создать новый
В таблице 1.2 приведен список настроек, которые разработчикам приложений лучше всего изменить.
Существует большое количество других настроек вывода информации или отладки, но они не так полезны. Также важно убедиться, что в настройках кэша браузера задано сравнение содержимого кэша с загружаемыми страницами при каждом просмотре.
Возможно, вы захотите тестировать свои приложения как на
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
| Настройка | Нужное значение | Описание |
|---|---|---|
browser. |
true |
Использовать функцию диагностики |
nglayout.debug.disable_xul_cache |
true |
По умолчанию приложения XUL кэшируются в Mozilla. Но во время тестирования нужно следить за результатами изменения кода, то есть необходимо, чтобы каждый раз файл загружался заново |
javascript.options. |
true |
Более подробный вывод на консоль JavaScript |
nglayout.debug.disable_xul_fastload |
true |
Второй кэш XUL, загружающийся при запуске из файла .MFL. Если оставить его включенным, это может сбивать с толку |
|
true |
Ужесточает все ограничения с целью обеспечения защиты для загружаемого содержимого за исключением случаев, когда пользователь все-таки вынужден дать |
xul.debug.box |
false |
Если это необходимо, отладку можно включить и из самого файла XUL |
Во время работы Mozilla обычно имеет дело с несколькими окнами за раз. Количество окон может сбивать с толку, особенно если у вас установлено несколько версий платформы.
Если новое окно открывается в Microsoft Windows, оно будет относиться к текущему запущенному экземпляру Mozilla. Это значит, что в любой момент времени может быть запущен только один экземпляр Mozilla и, естественно, только одна ее версия.
Если окно открывается из командной строки или из значка на рабочем столе, то сначала происходит поиск уже запущенной Mozilla. Если Mozilla запущена, ей отправляется инструкция "открыть окно" и на этом обработка команды завершается. Mozilla загружается целиком заново только в том случае, если еще не был запущен ни один ее экземпляр.
То есть если у вас установлены две версии Mozilla, обычно вы не можете запустить их обе одновременно. Однако это ограничение можно обойти. Для этого требуется сделать копию исполняемого файла Mozilla, отредактировать ресурсы этой копии с помощью редактора ресурсов (например, из Microsoft Visual C++) и изменить строки ресурсов 102 и 103 в таблице строк на что-нибудь другое. Сохраните изменения. Теперь эта копия может запускаться как отдельный экземпляр исходного исполняемого файла. Для нее также должен быть создан отдельный профиль. Но необходимо помнить, что вы сюда вносили изменения.
Кроме того, можно (и иногда очень легко) создать некорректное XUL- приложение. Когда открываются окна такого приложения, кажется, что все в порядке, хотя они могут вести себя не так, как следовало бы. В некоторых случаях при закрытии таких окон платформа все равно остается запущенной. Тогда следующее открытое окно будет использовать уже запущенную платформу, хотя та может работать с ошибками из-за запуска некорректного приложения.
Если вам кажется, что у вас именно такой случай, нажмите Control- Alt-Delete и проверьте, не запущены ли какие-нибудь процессы Mozilla, хотя все окна уже закрыты. Если вы их найдете, эти процессы спокойно можно уничтожить.
В системах UNIX/Linux запуск Mozilla из командной строки или пиктограммы на рабочем столе никак не будет взаимодействовать с уже запущенной платформой. То есть это коренным образом отличается от поведения платформы в Microsoft Windows и действительно для версий не ниже 1.4.
Иногда это неудобно, поскольку в приложениях XUL обычно нет
стандартных меню, предоставляющих доступ к таким удобным инструментам
как Инспектор
Тем не менее, консоль JavaScript можно запустить довольно легко, достаточно просто добавить этот ключ к команде запуска своего приложения:
-jsconsole
Более общий обходной путь подразумевает включение небольшого
скрипта в ваше приложение (см. листинг 1.4). Чтобы этот скрипт
работал, приложение должно быть установлено в
<script>
var options = "chrome,extrachrome,menubar,resizeable,scrollbars,
status,toolbar"; var domins = "
chrome://inspector/content/inspector.xul";
var jscons = "chrome://global/content/console.xul";
if (window.name == "_blank") {
setTimeout("window.open
'"+location+"','test','chrome')",5000);
setTimeout("window.close()",6000);
window.open(domins,"_blank",options);
window.open(jscons,"_blank",options);
}
</script>
Этот скрипт запускает Инспектор
Между Mozilla и тем, что вы видите на экране в ОС UNIX, находится
множество промежуточных слоев - других приложений. Если активно
экспериментировать, можно натолкнуться на ошибки, скрывающиеся где-
нибудь в самой top(1), и завершайте работу одной программы за другой,
пока проблема не исчезнет. Вот примерный порядок проверки:
Конечно, такие проблемы встречаются достаточно редко, но
систематический подход к их решению поможет сэкономить уйму времени.
Кроме того, он избавит Mozilla от
Чтобы скомпилировать Mozilla самостоятельно, можно собрать исполняемый файл со включенной дополнительной отладкой. Некоторые из этих дополнительных функций могут быть включены с помощью "волшебных" переменных окружения. Помните также, что при использовании некоторых из них вы будете получать массу информации.
Чтобы собрать Mozilla c включенными функциями отладки, потребуется
использовать параметр --enable-debug. Это параметр для скрипта
configure, который запускается перед началом компиляции. Если отладка
включена, в компиляции будут участвовать те части кода, которые
относятся к функциям отладки. Чтобы не указывать этот параметр и
многие другие вручную при запуске configure, можно создать специальный
файл, откуда скрипт и будет считывать параметры. Этот файл можно легко
создать с помощью формы, расположенной на
http://webtools.mozilla.org/build/config.cgi.
Чтобы понять, какие переменные окружения активируют какие-либо
функции отладки, изучите исходные коды Mozilla. Это также полезно,
если вы хотите узнать, какие еще функции отладки можно активировать во
время отладки (например, #ifdef EXTRA_DEBUG ).
Mozilla - не только браузер, но и инструмент, который можно задействовать для более быстрого создания приложений, чем при использовании традиционных языков программирования третьего поколения. Она позволяет использовать в традиционных графических приложениях некоторые из преимуществ web-приложений. Использование при этом интерпретируемых языков открывает возможность очень быстрой пошаговой разработки и создания эффективных прототипов. Однако желание узнать инструмент получше и заглянуть внутрь него занимает очень много времени, к тому же поиск и исправление синтаксических ошибок возлагаются на плечи разработчика.
Корни Mozilla - в разработке технологии браузеров, и в этой области
ей есть что предложить пользователю. Она поддерживает современные
стандарты и легко переносима. В системах UNIX это самый очевидный,
если не единственный, выбор браузера. Однако архитектурные расширения
внутри Mozilla интереснее всего разработчикам. Внутренняя компонентная
структура Mozilla предоставляет разработчику набор готовых к
применению сервисов, а новый
Mozilla поддерживается организацией, которая ориентирована как на коммерческую деятельность, так и на работу со свободным сообществом разработчиков. Любому интересующемуся технической информацией она предлагает множество ресурсов, при этом ничего не требуя взамен. Это организация со многими партнерами в сфере бизнеса, науки и комитетов по стандартизации, и она очень уверенно держится на плаву. Судя по всему, развиваемая ею технология имеет все шансы стать полезной и популярной.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.