Введение в XUL


Оглавление (нажмите, чтобы открыть):

Введение в XUL

Первую альфа версию Firefox 2.0 планируется (https://wiki.mozilla.org/Firefox:2.0_Product_Planning:Draft_Plan) выпустить 10 февраля 2006 года, релиз намечен на 27 июня.

Из новшеств Firefox 2.0 можно отметить новые системы для закладок и истории работы, улучшения в работе табов, полную интеграцию поддержки RSS, улучшения в подсистеме управления расширениями, средства борьбы с фишингом, включение средства записи сессий (Session saver), средства работы в offline режиме и проверки орфографии на лету.

Подробнее о запланированных возможностях для Firefox 2.0 и 3.0 можно прочитать на wiki странице проекта (https://wiki.mozilla.org/Firefox:Home_Page#Firefox_2.0_.28The_Ocho.29_Plan), планы по развитию движка представлены в документе «Gecko 1.9 Roadmap (https://www.mozilla.org/roadmap/gecko-1.9-roadmap.html)».

В заключении, приведу ссылки на два обзора расширений для Firefox 1.5:

— «Some great Web Developer extensions (https://www.dria.org/wordpress/archives/2005/11/22/292/)» — обзор полезных Firefox расширений для web-разработчиков:

— Web Developer (https://addons.mozilla.org/extensions/moreinfo.php? >- ViewSourceWith (https://addons.mozilla.org/extensions/moreinfo.php? >- Measure It (https://www.kevinfreitas.net/extensions/measureit/) — с помощью полупрозрачной рамки позволяет оценить размеры блока на экране;

— View Rendered Source Chart (https://addons.mozilla.org/extensions/moreinfo.php? >- Link Checker (https://addons.mozilla.org/extensions/moreinfo.php? >- UrlParams (https://addons.mozilla.org/extensions/moreinfo.php? >- Screen Grab (https://addons.mozilla.org/extensions/moreinfo.php? >- EditCSS (https://addons.mozilla.org/extensions/moreinfo.php? >- View Cookies (https://www.bitstorm.org/extensions/view-cookies/) — добавляет закладку для просмотра cookie в блок информации о странице;

— «Fun with Firefox (https://www.extremetech.com/article2/0,1697,1897047,00.asp)» — обзор Firefox расширений в большей степени касающихся изменения внешнего вида:

— Fasterfox (https://fasterfox.mozdev.org/) — тюнинг производительности Firefox;

— IE Tab (https://ietab.mozdev.org/) — внешний вид как у MS IE;

Cообщить модератору | Наверх | ^

Оглавление

  • Планы по Firefox 2.0. Введение в XUL. Обзор расширений для F. , MiRacLe, 19:28 , 08-Дек-05, (1)
  • Планы по Firefox 2.0. Введение в XUL. Обзор расширений для F. , Аноним, 12:59 , 09-Дек-05, (2)

Сообщения по теме [Сортировка по времени, UBB]

IE Tab это не «вид как у MS IE», это IE открывающийся в отдельном табе FF

1. «Планы по Firefox 2.0. Введение в XUL. Обзор расширений для F. «
Сообщение от MiRacLe on 08-Дек-05, 19:28
Cообщить модератору | Наверх | ^

Помещает управляемый bean-компонент в специальную область видимости. Специальная область видимости представляет собой карту, доступную авторам страницы. Специальные области видимости позволяют программно задавать видимость и время жизни находящихся в ней bean-компонентов. Атрибут value указывает на эту карту.

Для создания простого приложения с использованием JSF мы воспользуемся RAD, об установке и настройке которого можно ознакомится в предыдущей статье, в качестве фреймворка мы воспользуемся PrimeFaces. Cоздание проекта с именем SampleJSF выполняется с использованием мастера, который вызывается последовательностью команд: Файл -> Создать -> Веб-проект.

В мастере указать имя создаваемого проекта и убедиться что выбрана опция Версия JSF: 2.0

После окончания работы мастера Вам будет предложено переключиться в соответствующую перспективу. Выберите ответ Нет, нам необходимо остаться в перспективе Java EE.

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

Создание расширения FireFox для начинающих

В данной статье представлена пошаговая инструкция по разработке простейшего расширения для FireFox.
Это частичный перевод оригинальной статьи.

Это не моя статья, а моего друга (его мыльце: templar8@gmail.com). Он очень хочет попасть на Хабр. У меня самого не хватает кармы для инвайта.


Вступление

Это руководство — пошаговая инструкция по созданию простейшего расширения. Мы попробуем добавить в строку состояния еще одну небольшую панельку с фразой «Hello, World!».

Подготовка окружения

Расширения упаковываются и распространяются в виде zip-файлов или пакетов с расширением XPI.

Вот пример типичной внутренней структуры XPI-файла:

exampleExt.xpi:
/install.rdf
/components/*
/components/cmdline.js
/defaults/
/defaults/preferences/*.js
/plugins/*
/chrome.manifest
/chrome/icons/default/*
/chrome/
/chrome/content/

Нам нужно создать структуру каталогов, похожую на эту. Для начала создайте корневую директорию расширения (например, C:\extensions\my_extension\ или

/extensions/my_extension/ ). Внутри этого каталога создайте каталог chrome , в котором создайте каталог content .

В корневом каталоге расширения создайте два пустых текстовых файла с именами chrome.manifest и install.rdf . В итоге должна получиться структура каталогов следующего вида:

\
install.rdf
chrome.manifest
chrome\
content\

Дополнительная информация о настройке окружения находится по этой ссылке.

Сценарий установки

Откройте файл install.rdf и добавьте в него следующий текст:

  1. xml version =»1.0″ ? >
  2. RDF xmlns =»https://www.w3.org/1999/02/22-rdf-syntax-ns#»
  3. xmlns:em =»https://www.mozilla.org/2004/em-rdf#» >
  4. Description about =»urn:mozilla:install-manifest» >
  5. em:id > sample@example.net em:id >
  6. em:version > 1.0 em:version >
  7. em:type > 2 em:type >
  8. with minimum and maximum supported versions.
  9. em:targetApplication >
  10. Description >
  11. em:id >em:id >
  12. em:minVersion > 1.5 em:minVersion >
  13. em:maxVersion > 3.0.* em:maxVersion >
  14. Description >
  15. em:targetApplication >
  16. em:name > sample em:name >
  17. em:description > A test extension em:description >
  18. em:creator > Your Name Here em:creator >
  19. em:homepageURL > www.example.com em:homepageURL >
  20. Description >
  21. RDF >

* This source code was highlighted with Source Code Highlighter .

  • sample@example.net — ID расширения. Это значение записывается формате email-адреса и необходимо для идентификации расширения (оно не должно быть вашим email-адресом). Сделайте его уникальным. Вы также можете использовать GUID. ПРИМЕЧАНИЕ: Хотя этот параметр и записывается в формате email-адреса, он не обязательно должен быть валидным. (example.example.example)
  • Параметр 2 — 2 указывает на то, что это будет расширение. Допустим, для тем оформления это значение должно быть установлено в 4 (все коды типов можно посмотреть тут).
  • — ID Firefox’а (прим. пер. – видимо, для Thunderbird будет другое значение).
  • 1.5 — номер минимально необходимой для работы расширения версии Firefox. Никогда не используйте символ * для указания minVersion, это может привести к неожиданным результатам.
  • 3.0.* — максимальный номер версии Firefox с которой будет работать расширение. Это значение должно быть не новее самой последней на данный момент версии браузера! В данном случае «3.0.*» указывает на то, что расширение будет работать с Firefox 3.0 и версиями 3.0.x.

(Если вы получили сообщение, что install.rdf неверен, полезным будет загрузить этот файл в Firefox (Файл->Открыть файл…), после чего браузер покажет вам xml ошибки. В моем случае был пробел перед « browser.xul ( $FIREFOX_INSTALL_DIR/chrome/browser.jar содержит content/browser/browser.xul ) В browser.xul мы можем найти описание строки состояния, которое выглядит приблизительно так:

  1. statusbar id =»status-bar» >
  2. . statusbarpanel > .
  3. statusbar >

* This source code was highlighted with Source Code Highlighter .

— это «связующая точка» XUL-слоя.

XUL-слои

XUL-слои — это способ добавления виджетов в XUL-документ. XUL-слой — это .xul-файл, который определяет XUL-фрагменты, описывающие связующие точки в «основном» документе. Эти фрагменты могут указывать на виджеты, которые будут добавлены, удалены или изменены.

Пример документа XUL-слоя

  1. xml version =»1.0″ ? >
  2. overlay id =»sample»
  3. xmlns =»https://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul» >
  4. statusbar id =»status-bar» >
  5. statusbarpanel id =»my-panel» label =»Hello, World» />
  6. statusbar >
  7. overlay >

* This source code was highlighted with Source Code Highlighter .

Тег с id, равным « status-bar » указывает на виджет браузера в который мы хотим добавить наш элемент.

Тег — это новый виджет, который мы хотим добавить.

Сохраните этот код в файле sample.xul каталога chrome/content .

Chrome URIs

XUL-файлы – это часть т.н. «Chrome Packages» — пакетов элементов пользовательского интерфейса, загружаемых через URI вида chrome:// . Вместо того, чтобы загружать интерфейс, используя URI вида file:// (тем более, расположение Firefox может быть различным в зависимости от платформы и систем), разработчики Mozilla пришли к решению создать новый вид URI, используя который все установленные приложения будут иметь доступ к содержимому XUL.

URI для окна браузера – это chrome://browser/content/browser.xul . Попробуйте ввести этот URL в адресной строке Firefox.

Chrome URI состоит из нескольких частей:


  • 1-я — протокол ( chrome ), которая сообщает сетевой библиотеке Firefox, что это Chrome URI.
  • 2-я — название пакета (в данном примере, browser ), который указывает на набор компонентов пользовательского интерфейса. Для вашего приложения эта часть должна быть уникальной, во избежание конфликтов с другими расширениями.
  • 3-я — тип запрашиваемых данных. Бывает трех типов: content (XUL, JavaScript, XBL связи и другие составляющие пользовательского интерфейса приложения), locale (DTD, файлы .properties, в которых могут быть и другие файлы, содержащие строки локализации пользовательского интерфейса) и skin (CSS и изображения темы).
  • Последняя часть – путь к загружаемому файлу.

Например, chrome://foo/skin/bar.png загружает файл bar.png из раздела skin темы foo .

Когда вы загружаете что-либо, оперируя Chrome URI, Firefox использует реестр Chrome (Chrome Registry) для преобразования этого URI в реальный путь к файлу на диске (или в JAR архивах).

Создание Chrome Manifest

Для получения большей информации о Chrome Manifest и всех его свойствах можно обратиться к справочному руководству.

Откройте файл chrome.manifest, который был создан в корневом каталоге вашего расширения. Добавьте следующий код:

content sample chrome/content/

(Не забудьте о закрывающем слеше, «/»! Без него пакет не будет зарегистрирован.)

Разберем каждый элемент:

  1. тип пакета chrome
  2. название пакета chrome (должно быть написано в нижнем регистре, потому что Firefox/Thunderbird в версии 2 и более ранних не поддерживают названия со смешанным регистром — баг 132183)
  3. размещение файлов пакетов chrome

Это означает, что файлы пакета sample расположены в каталоге chrome/content относительно места расположения файла chrome.manifest .

Обратите внимание, что файлы контента, локализаций и скинов должны находиться внутри каталога content, locale и skin подкаталога chrome соответственно.

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

Регистрация слоя

Теперь необходимо связать ваш слой с окном браузера. Для этого добавьте следующие строки в файл chrome.manifest :

overlay chrome://browser/content/browser.xul chrome://sample/content/sample.xul

Эти две строки указывают Firefox’у связать sample.xul и browser.xul во время загрузки browser.xul .

Тестирование

Во-первых, мы должны сообщить Firefox о нашем расширении. На стадии разработки для Firefox версии 2 и выше, вы можете указать откуда брать новое расширение, и браузер будет его загружать после каждого перезапуска.

    Перейдите в домашний каталог, а после в каталог, содержащий профиль Firefox, с которым вы собираетесь работать (например, Firefox/Profiles/

.default/ ).

  • Перейдите в каталог extensions/ , если его не существует, то создайте.
  • Создайте текстовый файл и поместите в него полный путь к каталогу с вашим расширением (например, C:\extensions\my_extension\ или

    /extensions/my_extension/ ). Пользователи Windows должны помнить о направлении слешей, обязательно добавьте закрывающий слеш и удалите все замыкающие пробелы.

  • Сохраните файл с id расширения в качестве его имени (например, sample@example.net). Без расширения файла.
  • Теперь все готово к тестированию.

    Запустите Firefox. Firefox по текстовой ссылке сам найдет каталог с вашим расширением и установит его. После запуска браузера вы увидите надпись «Hello, World!» в правой части строки состояния.

    Вы можете сделать некоторые изменения в .xul-файле, перезапустить Firefox, и сразу же увидите результат.

    Создание пакета

    Теперь, когда расширение работает, вы можете создать пакет для последующего распространения и установки.

    Запакуйте архиватором zip содержимое каталога с вашим расширением (не сам каталог расширения) и измените расширение архива с .zip на .xpi.


    Если вы являетесь счастливым обладателем ‘Extension Builder’-а, то он может сам сделать за вас всю грязную работу (Tools -> Extension Developer -> Extension Builder). Просто перейдите в каталог с вашим расширением и нажмите кнопку Build Extension. Это расширение имеет очень много инструментов облегчающих разработку.

    Теперь загрузите получившийся .xpi-файл на ваш сервер и удостоверьтесь, что его тип установлен в application/x-xpinstall . После этого можно скачать и установить расширение.

    Национальная библиотека им. Н. Э. Баумана
    Bauman National Library

    Персональные инструменты

    XUL (XML User Interface Language)

    2. «Планы по Firefox 2.0. Введение в XUL. Обзор расширений для F. «
    Сообщение от Аноним on 09-Дек-05, 12:59

    Этот FireFTP не ходит через FTP proxy чтоли ?.

    Введение в XUL

    По одной из ссылок прочитал следующее:

    XUL определяет внешний вид приложения, но оно должно еще и что-то делать. Логика приложений/расширений пишется на JavaScript (хотя на самом деле можно пользоваться не только им, но интерпретатор JavaScript является частью Gecko — ядра, и это проще всего)

    Очень мнтересует вопрос, на каких языках можно писать расширения? Кроме JavaScript, естественно

    Отредактировано KML (15-03-2006 01:14:40)

    №10 15-03-2006 13:01:37

    Re: Русская документация по разработке на XUL

    KML пишет:

    По одной из ссылок прочитал следующее:

    XUL определяет внешний вид приложения, но оно должно еще и что-то делать. Логика приложений/расширений пишется на JavaScript (хотя на самом деле можно пользоваться не только им, но интерпретатор JavaScript является частью Gecko — ядра, и это проще всего)

    Очень мнтересует вопрос, на каких языках можно писать расширения? Кроме JavaScript, естественно

    Расширения пишутся на JavaScript, но Вы можете использовать в расширениях компоненты. По сути дела, весь код расширения может сводиться к вызову необходимых функций компонент.
    А вот компонента может писаться на любом языке (я писала на С++ — потому что были хорошие примеры).


    Зато написание плагинов намного в этом отношении проще- его сразу можно написать на любом языке С++, Delphi и т.д.

    Введение в JSF

    Данная статья рассчитана на людей имеющих начальный уровень знаний веб технологий и имеющих опыт написания простейших Java EE приложений.

    Что же такое JSF и как с ним работать?

    Java Server Faces (JSF) — это фреймворк для веб-приложений, написанный на Java. Он служит для того, чтобы облегчать разработку пользовательских интерфейсов для Java EE приложений. В отличие от прочих MVC фреймворков, которые управляются запросами, подход JSF основывается на использовании компонентов. Состояние компонентов пользовательского интерфейса сохраняется, когда пользователь запрашивает новую страницу и затем восстанавливается, если запрос повторяется. Для отображения данных обычно используется JSP, Facelets, но JSF можно приспособить и под другие технологии, например XUL.

    По мнению многих разработчиков, наилучшей архитектурой, которую могут предоставить фреймворки, является Модель-Представление-Контроллер (Model-View-Controller, MVC). В приложениях такого рода контроллер отвечает за прием данных от пользователя и выдачу соответствующего представления, представление формирует для браузера HTML страницу, а модель содержит данные, полученные из веб-форм и ту информацию, которую необходимо вывести на экран. Этот подход позволяет оградить уровень представления данных от бизнес-логики. Фреймворков, поддерживающих MVC, существует огромное множество, но JavaServer Faces (JSF) — является стандартом для приложений Java EE, и в этом его преимущество. Во-первых, технология активно развивается Oracle и IBM, а во-вторых, для нее на данный момент создано множество библиотек, позволяющих использовать нестандартные UI компоненты, основанные на jQuery.

    Если говорить простым и понятным языком, то JSF это хорошо спроектированная и простая в использовании платформа, совмещающая компонентный подход к программированию и легковесные POJO для сбора и хранения данных.

    Если рассуждать формализированными терминами языка, то:

    • Представление — это файл *.JSF или *.XHTML, отвечающий за вывод данных в браузер и содержащий ссылки на конкретные данные в модели.
    • Модель — JavaBean, хранящий ту или иную информацию в приватных полях и предоставляющий для них функции по записи и получению значений (сеттеры/геттеры) наряду с методами обработки такой информации.
    • Контроллер — это и есть внутренний механизм JSF, позволяющий провести связывание первого со вторым.

    JSF-приложение обычно содержит два типа компонентов, причем оба предельно просты в использовании и согласовываются с философией POJO.

    Страницы JSF, формирующиеся из XML тэгов. Каждый тэг представляет конкретный UI-компонент. Как веб-разработчику, Вам не нужно вдаваться в написание HTML разметки или вставок на JavaScript, так как они полностью генерируются компонентными тэгами JSF. Так как каждый компонент по-сути независим и содержит определенное поведение (то есть «знает», как получить свои данные и визуализировать себя в браузере), JSF предоставляет подход к программированию UI, очень похожий на принцип оперирования POJO.

    Динамические данные на JSF страницах моделируются с помощью специальных POJO, называемых управляемыми компонентами (JSF Backing Beans). Жизненным циклом подобных компонентов управляет контейнер. К примеру, вы можете связать переменные в текущей сессии с соответствующими полями бекинг-бина, и таким образом просматривая изменения в режиме online.

    Компонентные модели UI и POJO позволяют JSF заручится поддержкой различных сред разработки. Фактически, многие IDE для Java поддерживают интерактивные drag-and-drop построители UI-интерфейса для JSF (“графическое программирование”). Компонентная модель JSF также позволяет разрабатывать библиотеки компонентов, значительно расширяющие функциональность фреймворка. Среди таких разработок огромной популярностью пользуются PrimeFaces (именно его мы будем дальше рассматривать), IceFaces и некоторые другие проекты. Что же касательно недостатков, недоработок, багов и других неприятностей — их не слишком много. С развитием платформы Java EE многие из них были устранены или устраняются. Программирование JSF стало намного проще с приходом техники аннотаций, позволившей отказаться от сложного и неуклюжего конфигурирования компонентов с помощью XML.

    По соглашению имя управляемого bean-компонента совпадает с именем класса, за исключением того, что первая буква приводится к нижнему регистру. Имя управляемого bean-компонента также можно указать явно с помощью атрибута name аннотации ManagedBean , например: @ManagedBean(name = «home») . Для управляемых bean-компонентов возможно использование атрибута eager, если атрибут eager имеет значение true , то JSF создает этот управляемый bean-компонент при старте и помещает его в область видимости приложения. Также с помощью аннотации @ManagedProperty можно задать свойства управляемого bean-компонента. В таблице ниже, показан полный список имеющихся в JSF 2 аннотаций управляемых bean-компонентов:

    Аннотация управляемого bean-компонента
    Описание
    Атрибуты
    @ManagedBean

    Регистрирует экземпляр этого класса в качестве управляемого bean-компонента и помещает его в область видимости, указанную одной из аннотаций @…Scoped. Если область видимости не указана, JSF помещает bean-компонент в область видимости запроса, а если не указано имя, JSF генерирует имя, конвертируя первую букву имени класса в нижний регистр; например, для класса с именем UserBean JSF создает управляемый bean-компонент с именем userBean. Атрибуты eager и name являются необязательными. Эту аннотацию можно использовать только для Java-классов, реализующих конструктор без аргументов.

    eager, name
    @ManagedProperty Задает свойства управляемого bean-компонента. Эту аннотацию необходимо помещать перед декларацией переменных-членов класса. Атрибут name указывает имя свойства, по умолчанию оно совпадает с именем переменной-члена. Атрибут value является значением свойства, им может быть либо строка, либо JSF-выражение, такое как #<…>. value, name
    @ApplicationScoped Помещает управляемый bean-компонент в область видимости приложения.
    @SessionScoped Помещает управляемый bean-компонент в область видимости сеанса.
    @RequestScoped Помещает управляемый bean-компонент в область видимости запроса.
    @ViewScoped Помещает управляемый bean-компонент в область видимости представления.
    @NoneScoped Указывает, что управляемый bean-компонент не имеет области видимости. Управляемые bean-компоненты без области видимости полезны, когда на них ссылаются другие bean-компоненты.
    @CustomScoped
    Парадигма Декларативный (язык разметки)
    Разработчики Mozilla Foundation
    Язык физической реализации C++
    Платформа Gecko [1]
    OS Кроссплатформенное программное обеспечение
    Лицензия Mozilla Public License (MPL)
    Портал: https://developer.mozilla.org/ru/docs/XUL
    Главная реализация
    Mozilla
    Под влиянием
    HTML, XML

    XUL (XML User Interface Language) — это основанный на XML язык разметки динамического интерфейса, используемый в приложениях Mozilla. Так под аббревиатурой XUL понимают любое подмножество различный языков, основанных на XML и предназначенных для описания интерфейса. Так для Mozilla Foundation это будет сам XUL, для Java — Synth, Macromromedia — Flex, Microsoft Corporation — XAML. [Источник 1]

    Содержание

    Общее описание

    XUL позволяет создавать кроссплатформенные приложения с интерфейсами любой сложности, как использующие интернет, так и работающие локально. В приложениях легко изменить графику, всплывающие подсказки и расположение элементов так, чтобы их интерфейс отвечал требованиям бренда или был переведен на любой язык. Веб-разработчики, уже хорошо знакомые с Dynamic HTML (DHTML), легко изучат XUL и так же легко смогут создавать приложения с его помощью. Чтобы посмотреть примеры интерфейсов на XUL, откройте страницу XUL Periodic Table в браузере Firefox или любом другом браузере на движке Gecko.

    XUL разрабатывается в рамках проекта Mozilla и является частью платформы XULRunner. XUL разработан для создания интерфейсов в таких программах как браузеры, почтовые клиенты и т. д. Однако, XUL можно достаточно эффективно использовать для создания любых приложений, активно взаимодействующих с веб-ресурсами.

    Тем не менее, XUL изначально предназначен для работы с Gecko в составе продуктов Mozilla, и его составляющие полностью контролируются процессом их разработки. Это позволяет Mozilla Foundation легко добавлять нужные им функции в ущерб стандартности (например, использования какого-нибудь другого языка). Как и в случае с HTML, XUL позволяет описывать интерфейсы посредством использования языка разметки, задавать внешний вид приложения используя CSS (Customer Service System) и определять поведение приложения используя JavaScript. Но в отличие от HTML, используя XUL, можно создавать динамику в пользовательском интерфейсе намного быстрее и удобнее. Например, выпадающее меню можно реализовать с помощью нескольких предназначенных для этого тегов, не требующих громоздкой конструкции на JavaScript и/или CSS, как это потребовалось бы в HTML.

    XUL активно использовался для написания расширений для браузера Mozilla Firefox и почтового клиента Mozilla Thunderbird. Большая часть интерфейса этих двух программ написана на XUL. В августе 2015 Mozilla объявила использование XUL для создания расширений Firefox устаревшей технологией, от которой планируется отказаться в пользу WebExtensions. В форке Firefox Pale Moon планируется сохранить поддержку XUL. [Источник 2]

    XUL является частью среды разработки кросс-платформенных интерфейсов, известной как XPFE [2] . Это полнофункциональный язык разметки, на объекты приложений, такие как окна, метки и кнопки. Язык соответствует стандарту W3C XML 1.0. Приложения, написанные на XUL, также могут использовать HTML, CSS, DOM, JavaScript. И главное, XUL пытается разделить представление данных и логику приложений. Делается это посредством следующих абстрактных слоев:

    1. Содержание (content): объявление окон и элементов пользовательского интерфейса ассоциированных с ними.
    2. Оформление (skin): включение CSS и изображений, определение вида приложения.
    3. Локализация (locale): текст, отображаемый в пределах приложения, распределен по специальным локальным файлам, что обеспечивает переносимость языка.

    Теоретически XUL обеспечивает кросс-платформенные интерфейсы (по крайней мере на данный момент он доступен в операционных системах Windows, UNIX, Mac OS). Впрочем, первое яркое впечатление от технологии сразу же омрачает ее жесткая привязка к ядру Mozilla (Gecko). [Источник 3]

    Особенности XUL

    UL или XML User Interface Language — это, как видно из его названия, язык, позволяющий создавать достаточно богатые по функциональности пользовательские интерфейсы, которые можно запускать («отрисовывать») как стандартные приложения или загружать из Интернет. При этом приложения на XUL можно легко настраивать, менять в них текст или графические объекты, переводить на различные языки и т.д. Для программирования на XUL не требуется специальных навыков, любой веб-разработчик, знакомый с Dynamic HTML, (DHTML), сможет быстро выучить XUL и начать создавать свои приложения.

    Отличительные особенности XUL:

      мощный язык разметки с поддержкой пользовательских элементов (w >Пример языка разметки XUL

    Интересный факт

    Кстати говоря, с названием технологии связан один курьезный случай. Так сложилось, что аббревиатура XUL происходит от имени персонажа Зуул из фильма «Охотники за приведениями». Ключевой оказалась фраза из фильма «Нет больше Даны, есть только Зуул» трансформировавшаяся в слоган «Нет больше данных, есть только XUL». Может быть, именно по этому сообщество XUL так усердно следит за корректностью произношения названия языка.

    Принцип работы XUL

    XUL является частью XPFE, кроссплатформенной среды, предназначенной для того, чтобы разрешить проблемы создания интерфейсов, которые будут работать под любой операционной системой. ( насчёт любой платформы это широко сказано, на данный момент поддерживается Windows, UNIX и MacOS).

    • JavaScript используется для развития функциональности.
    • CSS используется для дизайна, а язык разметки для создания наполнения. Разница лишь в том, что используется не HTML а XUL.

    Сам по себе XPFE — платформо-независим, и все его компоненты основаны на открытых стандартах. [Источник 4]

    Пример языка разметки XUL

    Особенности настройки сервера


    По умолчанию, ненастроенные сервера Apache и IIS отдают .xul файлы с заголовком text/plain . Что бы Mozilla правильно понимала XUL файлы, загруженные из сети, необходим заголовок application/vnd.mozilla.xul+xml . Добавьте строчку: application/vnd.mozilla.xul+xml xul в файл конфигурации mime.types Apache. Или, если у вас не прав на администрирование (обычная ситуация, когда вы покупаете виртуальный хостинг у провайдера) добавьте в файл .htaccess (или создайте его) в каталоге, где расположены XUL файлы, строчку: AddType application/vnd.mozilla.xul+xml xul

    Особенности настройки Mozilla для разработки

    Вы можете использовать специальные настройки Mozilla, которые значительно облегчат жизнь разработчику. Внести их можно набрав about:config в строке ввода адресса или сохранить их в user.js . Последний вариант более предпочтителен, если вы будете переустанавливать Mozilla/Firefox.

    Параматр Установить Цель
    browser.dom.window.dump.enabled true Включить диагностирующую функцию dump(). Результаты, помещённые к ней параметром, будут выведены в консоли.
    javascript.options.strict true Более побробный отчёт в консоли JavaScript.
    nglayout.debug.disable_xul_cache true По умолчанию, XUL-приложения кэшируются Mozilla. Во время отладки вы захотите, чтобы всё время подгружалась актуальная копия файла.
    nglayout.debug.disable_xul_fastload true Отключаем ещё один кэш XUL
    signed.applets.codebase_principal_support true Пропуск всех ограничений безопасности, кроме тех, которые требуют вмешательства пользователя.

    Приложения с интерфейсом на XUL

    • Firefox, Mozilla Thunderbird, Sunbird [3] и другие проекты Mozilla
    • Songbird [4]
    • Miro (Democracy Player или DTV)
    • Komodo >[5] , Komodo Edit [6]
    • Spicebird [7]
    • Instantbird [8]
    • XULPlayer [9]
    • Cyclone3 [10]
    • SeaMonkey [11]
    • Zotero [12]

    Применение технологии XUL для RAD (Rapid Application Development, быстрая разработка приложений)

    XULrunner

    С точки зрения браузера или сервера, «понимающего» XUL, отдельное приложение на этом языке ничем не отличается от разметки HTML/JS: это тот же код, который сначала надо скачать с сервера (либо передать его отдельному серверу на обработку), потом преобразовать (отрендерить) и показать пользователю.

    Можно запускать пользовательские приложения, расположенные в сети, а не на локальном диске клиента, и XULRunner – интерпретатор XUL-приложений. Эти приложения распространяются в виде обычного .jar архива с XUL-контентом и сопутствующими библиотеками (например, для поддержки ssl, LDAP или sqlite). Существует множество расширений для стандартных продуктов mozilla.org. Они добавляют необходимую для пользователей функциональность. Крайняя форма таких расширений это глобальные большие приложения, которые можно выделить в самостоятельные продукты. К сожалению, пользователь вынужден ставить себе браузер (или другой продукт) для запуска таких приложений, что затрудняет как распространение ПО на базе XUL из-за большого размера сопутствующего ПО, так и разработку из-за отсутствия отдельного приложения-интерпретатора, на котором можно производить процесс отладки.

    XULRunner и XRE (XUL Runtime Evironment) — попытка избавиться от этой зависимости. XUL-приложения могут запускаться обычным образом: через программу-загрузчик (XULRunner) или с помощью встраиваемых библиотек для рендеринга (XRE или libxul). Кроме того, применение XULRunner позволяет устанавливать, обновлять и удалять приложения таким же способом, как и обычные программы mozilla.org (Firefox, Mozilla Thunderbird и др.).

    libxul

    libxul является основным элементом в концепции развития Mozilla 2.0. Эта библиотека предоставляет стабильный (или, как называют его разработчики, «замороженный») API для XUL-приложений и встроенных приложений на базе Gecko. На сегодняшний день обычная сборка mozilla-based приложения предоставляет много различных разделяемых библиотек, которые являются как частью самостоятельных компонентов, так и отдельными библиотеками с интерфейсами для различных сторонних библиотек или протоколов (например LDAP). при этом все они являются частью Gecko (то есть движка для рендеринга). libxul призвана заменить такое многообразие на одну статическую библиотеку, которая будет предоставлять Gecko и куда будут входить все его составные компоненты (поддержка сетевых служб, DOM, рендеринг и т.д). Это позволит использовать прогрессивные технологии mozilla не только в продуктах mozilla.org, но и в любой сторонней разработке, делая ее переносимой между различными платформами, снабжая удобным и легким GUI и поддержкой сетевых служб.

    Продукты на libxul/XULRunner

    Еще год назад нельзя было сказать, что есть рабочие примеры применения XULRunner, но с выходом первого стабильного предварительного релиза (stable developer preview) список приложений на базе XULRunner заметно расширился. Рассмотрим основных представителей:

    Chatzilla. IRC-клиент на базе кода mozilla. Использует XUL для отрисовки GUI. Проект одним из первых перешел на XULRunner.

    Firefox. Браузер на базе кода mozilla. Использует XUL для отрисовки GUI. Имеется тестовая сборка, использующая XULRunner. Полный переход планируется к Firefox 3.0.

    Mozilla Thunderbird. Почтовый клиент на базе кода mozilla. Использует XUL для отрисовки GUI. В планах разработки — переход на XULRunner к версии 3.0.


    Mozilla Composer. По словам основного архитектора Mozilla Composer Daniel Glazman, следующая версия Mozilla Composer будет использовать XULRunner и код Nvu, визуального (WYSIWYG) редактора HTML.

    Songbird. Сетевой мультимедийный плеер. Использует код Firefox и XUL для отрисовки интерфейса и поддержки сетевых служб. Проект находится в активной разработке. Имеются данные, что следующие версии будут использовать XULRunner.

    Mozilla Sunbird. Календарь-планировщик. Проект находится в активной разработке. Имеются данные, что следующие версии будут использовать XULRunner. [Источник 5]

    Как начать с разработки XUL?

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

    Во-вторых, я профессиональный программист на 2 года. Основным языком программирования является VB.net (который я нахожу несколько ограниченным, когда говорю о пользовательских интерфейсах).

    Я люблю пользовательские интерфейсы, и я действительно хочу иметь возможность создавать программное обеспечение в среде Windows, которая имеет отличный пользовательский интерфейс. После долгого поиска такой вещи я обнаружил тему Thunderbird, которая делает именно то, что я хочу! Эта тема называется « Leopard Mail-Default-Aqua ». Это действительно красиво.

    После некоторых исследований я обнаружил, что пользовательский интерфейс Thunderbird создается с использованием чего-то, называемого XUL, и что XUL — это описательный язык для пользовательских интерфейсов. Сейчас я очень заинтересован в создании приложений на этой платформе, но понятия не имею, с чего начать. После некоторых исследований я также обнаружил, что Microsoft создала WPF для отделения GUI от логики и тем поддержки WPF, но для меня гораздо выгоднее изучить XUL, который является мультиплатформенным, чем WPF.

    Мне нужны некоторые указания о том, как начать разработку в XUL, а также очень важно, как я могу использовать существующие темы для Thunderbird в своих приложениях XUL, чтобы они выглядели действительно великолепно?

    Из того, что я видел, приложения, разработанные в XUL, используют JavaScript или C ++ для программирования логики. Это правильно?

    Кроме того, поскольку я пришел из .net-программирования, управляемого событиями, я хотел бы знать, если XUL-разработка также основана на событиях, поэтому, если я хочу ответить на нажатие кнопки, например, я могу подключить событие к коду / функция.

    XUL приложения

    14 February 2006 г

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

    Конечно, это касается только расширений относительно высокого уровня — тех, для создания которых достаточно функциональности платформы и XUL / XBL /JavaScript. Именно эти технологии мы и рассмотрим.

    XUL — аббревиатура от XML User Interface Language, XML-язык описания пользовательского интерфейса. XUL используется во всех основных продуктах семейства Mozilla. Особенности этого языка определяют легкость работы с ним:

    • это XML, следовательно, если вы знакомы с основами XML, вы знакомы с основами XUL; XML-синтаксис понятен и прост; для этих же целей XML используется и в Qt, и в GTK , и в Avalon, что доказывает эффективность применения XML в разработке пользовательских интерфейсов;
    • в распоряжении разработчика находится большой набор уже готовых элементов управления, при этом создавать свои элементы управления очень можно как на основе стандартых, так и с нуля, все равно это будет несложно (впрочем, это уже более заслуга XBL, и об этом ниже);
    • при создании интерфейса не нужно думать о том, как приложение будет выглядеть в какой-либо ОС, об этом за вас уже подумали; при использовании стандартных элементов управления можно также не беспокоиться о том, как интерфейс будет выглядеть с разными темами;
    • правильно спроектированный интерфейс легко локализуем.

    Рассмотрим пример XUL-файла:

    Разберем его построчно.

    1. Стандартное объявление XML-файла.
    2. Загрузка таблицы стилей. Мы загружаем глобальную таблицу стилей, которая определяет внешний вид и поведение основных элементов управления. Это объявление не будет меняться, даже если пользователь установит собственную тему.
    3. Загрузка таблицы стилей. Эта таблица стилей может и отсутствовать, однако порой нужно как-то изменить вид или поведение элементов управления, кроме того, XBL-привязки подключаются через CSS .
    4. Указание DTD с сущностями. Сущности используются для того, чтобы можно было локализовать приложение, не трогая разметки интерфейса. В зависимости от выбранного языка пользователя будет загружаться нужный DTD-файл. Если расширение не содержит локализации на нужный язык, используется язык по умолчанию, то есть американский английский. Вот так может выглядеть наш DTD-файл:
    5. Корневой элемент XUL-документа с указанием пространства имен и заголовком. Наиболее часто, помимо window , используются dialog и wizard . Обратите внимание, что в заголовке вместо текста указана XML-сущность.
    6. Элемент vbox . Практически все элементы графического интерфейса основываются на модели блоков, более того большинство на самом деле являются box -ами с расширенной функциональностью. vbox выстраивает свое содержимое вертикально, hbox — горизонтально, однако это всего лишь синонимы для элемента box с разными значениями атрибута orient .
    7. Элемент description может содержать как другие элементы, так и обычный текст. Значение атрибута flex означает, что элемент может занимать больше места, чем это ему необходимо — растягиваться до внутренних границ родительского элемента. Атрибут class имеет тот же смысл, что и в HTML, в данном случае мы сами придумали название класса (это нам понадобится позже).
    8. Элемент, означающий простую кнопку. Кнопок на самом деле великое множество — переключатели, флажки и т.д.; кнопки могут содержать изображения. Все, как в HTML! Атрибут label содержит надпись на кнопке, а атрибут oncommand задает обработчик события command — нажатия на кнопку. Так как это стандартная функция, нам не нужно было импортировать файл с ее телом.

    Такой файл представляет собой простейшее самостоятельно окно.

    Рис. 1. Снимок простейшего окна

    Однако часто интерфейс расширения должен встраиваться в интерфейс основного приложения, например, при добавлении кнопки на панель инструментов, меню или пунктов меню и т. д. В таких случаях пользуются оверлеями. Оверлеи — это также XUL-файлы, но они содержат только те части интерфейса, которые должны изменить интерфейс основного приложения, при этом элементы интерфейса могут добавляться, изменяться и удаляться. Пример:

    Формы и меню

    7.3. Формы

    Форма, в которой некоторое число изменяемых пользователем элементов собирается в структурированную группу — центральное понятие и для HTML, и для XUL. HTML — это гипертекст , а концепция гипертекста на самом деле не включает в себя идею форм, но формы так полезны, что их добавление в HTML было делом времени. С другой стороны, XUL изначально подразумевал использование форм. Если XUL получит широкое распространение, возможно, модуль форм стандартов HTML будет всего лишь ссылкой на соответствующую часть XUL.

    HTML- и XUL-формы в Mozilla очень похожи. Простейшие элементы формы почти идентичны. Обработчики событий и навигация в обоих случаях работают в основном похожим образом. Любое введение в HTML с примерами использования JavaScript — хорошая подготовка для применения XUL-форм. Однако не стоит ожидать, что это сходство распространится до мельчайших деталей. Эти две системы форм реализованы отдельно, хотя некоторый общий код у них есть.

    В этой лекции мы обсудим простейшие XUL-теги для создания форм. Набор основных тегов таков:

    7.3.1. Общие представления о формах

    Любой графический элемент формы называется элементом управления формы ( «form control» в терминологии Microsoft) или просто элементом формы ( «form element» — термин, изначально появившийся в графическом дизайне и заимствованный оттуда Netscape и W3C). Такие элементы могут взаимодействовать с пользователем самыми разными способами, но все они объединяются общим дизайном.


    7.3.1.1. Навигация

    Если пользователю нужно что-то ввести в форму, самый простой подход — взаимодействие в каждый момент только с одним элементом формы. И в XUL, и в HTML разрешается выделять один элемент управления за раз. Кроме того, интерактивные элементы форм в документе упорядочиваются. В терминах W3C это называется порядком переходов. В Mozilla упорядоченный набор таких элементов управления называется кольцом фокуса, так как, перейдя от последнего в наборе элемента далее, пользователь попадает снова на первый элемент. Все элементы форм входят в кольцо фокуса.

    Более подробно изменение фокуса рассматривается в «Навигация» , «Навигация».

    7.3.1.2. Общие свойства элементов XUL-форм

    В процессе разработки стандарта CSS 3 консорциум W3C создал черновой документ » User Interface for CSS 3″ («Пользовательский интерфейс для CSS 3»). Хотя этот документ появился уже достаточно давно, он все еще доступен по адресу https://www.w3.org/TR/1999/WD-css3-userint-19990916. Этот документ — ранняя попытка описания новых функций, которые должны будут поддерживаться в CSS 3. Любопытное совпадение: эта часть стандарта 1) больше всего похожа на некоторые разработки Microsoft’s .NET; 2) вероятно, дольше всего будет оставаться незавершенной.

    Mozilla реализует множество положений этого черновика стандарта. В частности, она воплощает четыре свойства стиля, представляющие интерактивные возможности простых элементов XUL-форм. Эти стили в Mozilla реализуются интерфейсом nsINSDOMCSS2Properties . В системе стилей они доступны как расширения с префиксом -moz . Вот они:

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

    Помимо этих четырех стилей у элементов формы есть два других общих понятия. Первое из них — собственное состояние. Все простые элементы формы обладают, по крайней мере, одним общим атрибутом — disabled , чьим значением может быть true . На рисунке 7.1 показаны активные и неактивные ( disabled ) элементы управления формой.

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

    7.3.1.3. Доступность для разных пользователей

    Программное обеспечение можно сделать доступным для людей с ограниченными физическими возможностями. Гипертекстовые HTML-документы, ссылки и окна XUL-приложений — все это может быть доступно для таких пользователей. Элементы форм особенно интересны потому, что правительство любого государства заинтересовано в том, чтобы предоставить через Internet различные службы, которые будут одинаково доступны всем, в том числе людям с ограниченной дееспособностью.

    Во всех обсуждениях до этого момента XUL-тег был идентичным тегу во всем, за исключением возможности сведения к атрибуту label . Но если взглянуть с точки зрения доступности, сразу будут видны отличия от . Тег позволяет предоставлять альтернативное содержимое, необходимое для создания системы доступности.

    Если у элемента формы есть атрибут label , Mozilla предоставит его значение как вспомогательную информацию, которую система доступности передает пользователю. Если у элемента формы нет такого атрибута, Mozilla будет искать его тег- потомок и использует его. Если подходящего потомка не найдется, она будет искать тег , чье значение атрибута control совпадает с идентификатором, заявленным в атрибуте id тега элемента формы. Если и такой тег не найден, тогда вспомогательная информация недоступна.

    Поддержка расширенной доступности в Mozilla предусмотрена для всех простых элементов XUL-форм. Эта поддержка есть и для тегов , и .

    Как работает такая доступность, подробнее рассматривается в «Навигация» , «Навигация».

    7.3.2. Простые теги XUL-форм

    На рисунке 7.2 показаны простые теги форм с примененными к ним дополнительными стилями, так что их структура становится понятнее. Пунктирные линии означают теги , толстые сплошные — теги , а тонкие сплошные — теги . Два средних раздела — теги radiogroup > , второй из которых содержит теги radio «> .

    Из рисунка 7.2 видно, что все простые теги форм содержат, по крайней мере, один другой тег, даже если этот тег — без содержимого. Все эти теги форм определены в XBL.

    В Mozilla есть специальные обработчики событий, написанные на C/C++. Они добавляются к объекту XUL-документа с помощью C/C++-версии addEventListener() . Такие обработчики событий перехватывают информацию, связанную с простыми элементами управления. Так реализуется недоступная через XBL функциональность элементов форм. Простого способа взаимодействовать с этими встроенными обработчиками из JavaScript нет, но это и не нужно.

    У таких тегов есть DOM-интерфейсы, очень похожие на соответствующие HTML-интерфейсы. Все имена XPCOM-интерфейсов начинаются с префикса nsIDOMXUL .

    7.3.2.1. Тег

    Тег широко обсуждается в «Первые элементы управления и темы» , «Первые элементы управления и темы». Вспомните, что атрибут type позволяет превращать кнопку в флажок, переключатель или кнопку раскрытия меню.

    7.3.2.2. Тег

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

    src передается необязательному изображению, которое появляется между флажком и текстом. crop передается , содержащему текст. checked принимает булевы значения, соответствующие состояниям , а disabled , если его значение — true , делает флажок полностью недоступным пользователю. Сопроводительный текст может появиться справа от флажка, если указан атрибут dir=» rtl » . Состояние каждого флажка не зависит от состояний других флажков. Если щелкнуть по тексту ( ) флажка, эффект будет тот же, что и при щелчке по пиктограмме самого флажка.

    С помощью системы команд , описанной в «Команды» , «Команды», тег отправляет событие CheckboxStateChange при смене состояния. За этим состоянием, если нужно, может наблюдать код приложения.

    7.3.2.3. Тег

    Тег radio > составляется из простых XUL-тегов. У него есть XBL-определение. Пиктограммы переключателей — обычные изображения, и с помощью стилей их можно увеличить, уменьшить или заменить другими. У тега radio > есть следующие собственные атрибуты:

    Эти атрибуты имеют то же значение, что и для тега , только checked заменяется атрибутом selected . Если тег radio > является потомком radiogroup > , только у одного переключателя из группы может быть атрибут selected=»true» . У нижнего тега radio > в первой группе переключателей на рисунке 7.2 задан атрибут dir=» rtl » . Для выбора переключателя можно щелкать и по тексту ( ), и по его пиктограмме.


    До недавних версий Mozilla тег radio > не всегда правильно определял, когда он должен получать фокус. Чтобы прояснить ситуацию с radio > в конкретной версии Mozilla, нужно обратиться к ее базе данных ошибок.

    7.3.2.4. Тег

    Тег radiogroup > связывает набор тегов radio > или radio «> вместе и превращает в единое целое. Если любой переключатель в такой группе выбран, все остальные теряют выделение. Тег radiogroup > поддерживает следующие атрибуты:

    disabled делает недоступной для пользователя всю группу. selectedItem и focusedItem сообщают, какой переключатель в группе выбран или получил фокус, соответственно. selectedIndex содержит номер текущего выбранного переключателя в группе, начиная с 0.

    С помощью системы команд , описанной в «Команды» , «Команды», тег radio > отправляет события RadioStateChange и selected при смене состояния. За этими событиями, если нужно, может наблюдать код приложения.

    7.3.2.5. Тег

    позволяет пользователю вводить текст. Это четыре тега в одном: обычное поле ввода, поле ввода пароля, многострочное поле ввода и поле ввода с автодополнением. У

    есть XBL-определение. Тег

    реализуется с помощью HTML-тегов или textarea > . У стандартного тега

    есть следующие особые атрибуты:

    Все эти атрибуты, кроме multiline и type , соответствуют атрибутам HTML-тега . Значением multiline может быть true , а значением type — password или autocomplete . Если type=»password»,

    действует так, как HTML-тег ; однако иначе и быть не может — они одинаковы. Если значение multiline — true , у

    появляется другой набор атрибутов:

    Эти атрибуты соответствуют атрибутам HTML-тега textarea > . Так как в XUL нет анонимного содержимого, изначально отображаемый текст не может заключаться между открывающим и закрывающим тегами , как в случае с textarea > в HTML.

    Для всех этих трех вариантов текстового поля начальное значение может быть задано, только если поле не многострочное. В случае многострочных полей начальное значение задается из JavaScript с помощью свойства value соответствующего объекта. Вот пример для тега

    имеет место, когда значением type является autocomplete . Это сложный тег с большой долей зависящей от приложения функциональности. После тщательного тестирования мы не рекомендуем использовать тег

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

    Где этот тег на высоте, так это в классическом браузере. Простого объявления вроде приведенного ниже достаточно для предоставления быстрого доступа к журналу посещений браузера, мини-базам данных адресов электронной почты или адресов LDAP :

    Так как ни одна из этих баз данных не может быть доступна как отдельное приложение, применение

    Введение в Linux — Руководство по работе (Книга)

    Перевод книги Introduction to Linux / A Hands on Guide.

    Многие люди продолжают верить в трудность изучения GNU / Linux операционных систем или в то, что только опытные специалисты могут понять как работает система. Несмотря на то, что доступно много свободной документации и она широко распространена в Интернет, но часто путает, поскольку обычно эта документация ориентирована на опытных UNIX или Linux пользователей.

    В настоящее время, благодаря успехам в развитии GNU / Linux системы набрали популярность, как на бытовых компьютерах так и на рабочих. Целью этого руководства является показать людям всех возрастов и уровня подготовки что GNU / Linux системы могут быть простым и могут без проблем использоваться для всех видов задач.

    Книга написана как беглый обзор операционной системы GNU / Linux, оно ориентировано на новых пользователей как разведывательный (ознакомительный) тур и руководство по началу работы с упражнениями в конце каждой главы. Для более продвинутых пользователей оно может быть использовано в качестве настольных рекомендаций и коллекции базовых знаний, необходимых, чтобы приступить к администрированию системы и сети.

    Это руководство содержит множество примеров из реальной жизни, на основе опыта автора как системного и сетевого администратора Linux, инструктора и консультанта. Автор книги надеется что эти уроки помогут пользователям получить более глубокое понимание GNU / Linux системы и вдохновят попробовать что-то по своему усмотрению.

    Введение в Scikit-learn

    Библиотека Scikit-learn — самый распространенный выбор для решения задач классического машинного обучения. Она предоставляет широкий выбор алгоритмов обучения с учителем и без учителя. Обучение с учителем предполагает наличие размеченного датасета, в котором известно значение целевого признака. В то время как обучение без учителя не предполагает наличия разметки в датасете — требуется научиться извлекать полезную информацию из произвольных данных. Одно из основных преимуществ библиотеки состоит в том, что она работает на основе нескольких распространенных математических библиотек, и легко интегрирует их друг с другом. Еще одним преимуществом является широкое сообщество и подробная документация. Scikit-learn широко используется для промышленных систем, в которых применяются алгоритмы классического машинного обучения, для исследований, а так же для новичков, которые только делает первые шаги в области машинного обучения.

    Для своей работы, scikit-learn использует следующие популярные библиотеки:

    • NumPy: математические операциии и операции над тензорами
    • SciPy: научно-технические вычисления
    • Matplotlib: визуализация данных
    • IPython: интерактивная консоль для Python
    • SymPy: символьная математика
    • Pandas: обработка, манипуляции и анализ данных

    Что содержит Scikit-learn

    В задачи библиотеки не входит загрузка, обработка, манипуляция данными и их визуализация. С этими задачами отлично справляются библиотеки Pandas и NumPy. Scikit-learn специализируется на алгоритмах машинного обучения для решения задач обучения с учителем: классификации (предсказание признака, множество допустимых значений которого ограничено) и регрессии (предсказание признака с вещественными значениями), а также для задач обучения без учителя: кластеризации (разбиение данных по классам, которые модель определит сама), понижения размерности (представление данных в пространстве меньшей размерности с минимальными потерями полезной информации) и детектирования аномалий.

    Библиотека реализует следующие основные методы:

    • Линейные: модели, задача которых построить разделяющую (для классификации) или аппроксимирующую (для регрессии) гиперплоскость.
    • Метрические: модели, которые вычисляют расстояние по одной из метрик между объектами выборки, и принимают решения в зависимости от этого расстояния (K ближайших соседей).
    • Деревья решений: обучение моделей, базирующихся на множестве условий, оптимально выбранных для решения задачи.
    • Ансамблевые методы: методы, основанные на деревьях решений, которые комбинируют мощь множества деревьев, и таким образом повышают их качество работы, а также позволяют производить отбор признаков (бустинг, бэггинг, случайный лес, мажоритарное голосование).
    • Нейронные сети: комплексный нелинейный метод для задач регрессии и классификации.
    • SVM: нелинейный метод, который обучается определять границы принятия решений.
    • Наивный Байес: прямое вероятностное моделирование для задач классификации.
    • PCA: линейный метод понижения размерности и отбора признаков
    • t-SNE: нелинейный метод понижения размерности.
    • K-средних: самый распространенный метод для кластеризации, требущий на вход число кластеров, по которым должны быть распределены данные.
    • Кросс-валидация:метод, при котором для обучения используется весь датасет (в отличие от разбиения на выборки train/test), однако обучение происходит многократно, и в качестве валидационной выборки на каждом шаге выступают разные части датасета. Итоговый результат является усреднением полученных результатов.
    • Grid Search: метод для нахождения оптимальных гиперпараметров модели путем построения сетки из значений гиперпараметров и последовательного обучения моделей со всеми возможными комбинациями гиперпараметров из сетки.

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

    Пример применения

    Чтобы дать вам представление о том, как легко обучать и тестировать модель ML с помощью Scikit-Learn, вот пример того, как это сделать для классификатора дерева решений!

    Деревья решений для классификации и регрессии очень просты в использовании в Scikit-Learn. Сначала мы загрузим наш датасет, который фактически встроен в библиотеку. Затем мы инициализируем наше дерево решений для классификации. Обучение модели — это просто одна строчка .fit(X, Y), где X — обучающая выборка в формате массива NumPy, а Y — массив целевых значений, также в формате массива NumPy.

    Scikit-Learn также позволяет нам визуализировать наше дерево. Для этого есть несколько настриваемых опций, которые помогут визуализировать узлы принятия решений и разбить изученную модель, что очень полезно для понимания того, как она работает. Ниже мы раскрасим узлы на основе имен признаков и отобразим информацию о классе и объектах каждого узла.

    Каждый из параметров алгоритма интуитивно назван и доступно объяснен. Кроме того, разработчики также предлагают туториалы с примером кода о том, как обучать и применять модель, ее плюсы и минусы и практические советы по применению.

    Мастер Йода рекомендует:  Как научиться программировать в 2020 году Best practices
    Добавить комментарий