Pull to refresh

Коротко про mozStorage

Firefox
Среди упоминаний ожидаемых новинок и улучшений в браузере Mozilla Firefox в рунете почти не встречается информации по mozStorage, позволяющему разработчику XPCOM-расширения использовать всю мощь SQLite. Предлагаю уделить немного внимания этому интересному инструменту.
Читать дальше →
Total votes 12: ↑9 and ↓3 +6
Views 974
Comments 18

Искусство убивать драконов

Studying in IT
В последнее время на Хабрахабре много беседуют об учебном процессе. По этому поводу я хочу напомнить вам одну старую, многим известную притчу, процитировав её вон оттуда:
Когда-то давным-давно в маленькой горной деревеньке жил мальчик. Он был хорош собой, ловок и очень умён. Он быстро учился всему, чему могли его научить взрослые, живущие в той же деревне: он давно умел изготавливать посуду из глины, ткать, ловить рыбу, был лучшим охотником и самым искусным наездником.

Однажды с самой высокой горы спустился в деревню старец, который сказал ему:

— Ты научился всему, что могут тебе дать твои родные. Пойдём со мной, и я научу тебя искусству убивать драконов. Это очень древнее искусство, и оно требует много времени, сил и желания. Немногие способны освоить его. Но и ты — необычный мальчик.

И мальчик согласился.

И тогда они ушли из этого селения и уединились в заброшенном замке, где старец начал учить его искусству убивать драконов. Много лет понадобилось мальчику, чтобы освоить все навыки. Даже после смерти старца он настойчиво продолжал тренироваться, следуя по памяти его советам.

И вот в один прекрасный день он понял, что овладел искусством убивать драконов. И тогда он обошёл все леса Земли, все поля и страны в поисках дракона и нигде не нашёл его. Тогда он решил подняться на самую высокую гору и осмотреть Землю с её высоты. Он потратил на путь к этой горе и на подъём ещё несколько лет своей жизни, но, и поднявшись на гору, он нигде не увидел дракона. И тогда он понял, что на Земле ужé давно не осталось ни одного дракона.

И тогда он спустился с горы в маленькую горную деревню, где нашёл самого умного, самого талантливого мальчика, который давно ужé узнал всё, что могли ему сообщить жители его деревни, и стал учить его искусству убивать драконов.
Читать дальше →
Total votes 142: ↑75 and ↓67 +8
Views 3.1K
Comments 59

Авторы расширений, хакеры браузера, встречайте js-ctypes

Firefox
Translation
Tutorial
Что такое (можете спросить вы) js-ctypes? Скажем, пишете вы расширение на джаваскрипте, и ему нужно обратиться к местному коду (native code). Например, weave-crypto приходится обращаться к библиотеке NSS. А ваше расширение может пожелать, например, вызвать напрямую NSPR, libc, или функции Win32. Прямо сейчас есть два выхода: либо использовать скриптуемые XPCOM-интерфейсы (обеспечиваемые libxul), либо написать и реализовать собственные XPCOM-интерфейсы, то есть поставлять двоичный код в своём расширении. Если первый вариант не годится, остаётся только второй, но тогда поставлять расширение становится заметно сложнее: приходится отдельно компилировать двоичный код для каждой из поддерживаемых платформ, чтобы упаковать его внутрь вашего кросс-платформенного xpi.

Ответом на эту трудность поэтому станет библиотека js-ctypes: она позволяет джаваскрипту вызывать местный код (написанный на Си) и манипулировать сишными типами данных, без использования XPCOM, и нет необходимости компилировать ни одну строку кода. Это означает, что вам не придётся определять XPCOM-интерфейсы, и что можно будет использовать разделяемые библиотеки (shared libraries), подобные libc, напрямую. Есть и побочный положительный эффект: мы большей частью устраняем потери на преобразование типов данных, свойственные XPConnect, так что выполнение кода может становиться быстрее. (Сравнение скорости я приведу в одной из последующих блогозаписей.) Библиотека js-ctypes будет поставляться с Gecko 1.9.3, а эта платформа (если номера версий не переменятся) станет фундаментом для Firefox 3.7.

Вы можете спросить: «Но как...?». И вот примеры (они проверялись на 32-битных Линуксах x86 и содержат не кросс-платформенные части):

Читать дальше →
Total votes 55: ↑42 and ↓13 +29
Views 2K
Comments 41

В движке Gecko 2 (во браузере Firefox 4) переменится способ регистрации кросс-платформенных компонентов (XPCOM)

Firefox
[mozilla.org]В прежней версии движка (существовавшей до июля 2010 года) все XPCOM-компоненты (будь они джаваскриптовыми или же скомпилированными двоичными) сперва подгружались браузером, а затем регистрировали сами себя. Теперь вместо этого все сведения, необходимые для их регистрации, авторам расширений придётся складывать в текстовый файл «chrome.manifest» (где всякий хром описывается), и регистрацией будет заниматься сам браузер.

Те файлы с путями вида «platform/WINNT_x86-msvc/chrome.manifest» (это пример пути для Windows), в которых прежде хранились отдельные хромовые манифесты для каждой платформы, отменяются. Вместо этого в манифестах можно использовать особые пометки о том, что та или иная строка манифеста должна применяться только на некоторой платформе.

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

Ценою этих перемен станет необходимость переписать абсолютно все те расширения, которые содержали и использовали собственные компоненты XPCOM (на MDC есть инструкции о том, как это сделать). Кроме того, уведомления (notifications) с именами «xpcom-startup» и «app-startup» больше не поступают в компоненты, так как во время событий, соответствующих этим уведомлениям, никаких компонентов ещё нет.

Многие расширения, заброшенные их авторами, придётся переписывать для переноса на Firefox 4: прежние полушаманские трюки, направленные на простую отмену проверки версий (совершаемую либо вручную, либо расширениями наподобие «Nightly Tester Tools», «MR Tech Toolkit», «Add-on Compatibility Reporter»), не заставят их заработать корректно.

Читать дальше →
Total votes 24: ↑14 and ↓10 +4
Views 1.2K
Comments 8

Совместимость дополнений с Firefox 4: время начинать

Firefox
Translation
Как многим из вас ужé хорошо известно, несколько недель тому назад вышла первая бета браузера Firefox 4. Очень скоро за нею последует и вторая, а итоговая версия ожидается позднее в этом году. Этот сравнительно долгий переходный период идёт на пользу разработчикам дополнений, так как он даёт нам много времени на обновление и проверку наших расширений для Firefox 4. С другой стороны, этот новый значительный выпуск станет щеголять массою новых функций, и нарушит множество необходимых нам вещей, так что обновление большинства дополнений для поддержки его не окажется простой задачею. Эта блогозапись — одна из многих, осведомляющих разработчиков о совместимости с Firefox 4.

Прежде всего, MDC вам друг: «Firefox 4 for developers». Это документ, который должен и будет содержать все сведения, надобные веборазработчикам и разработчикам дополнений, окружившим Firefox 4. Убедитеся, что посещаете этот документ регулярно и ищете в нём изменения. Если вам известно о чём-нибудь, чего в этом документе недостаёт — дайте нам знать.

И вот несколько ключевых фрагментов из этого документа.

Читать дальше →
Total votes 70: ↑53 and ↓17 +36
Views 957
Comments 58

Do You Know How To: «Preferences» и «Install Location» в FireFox 4 betas?

Firefox
Здравствуй хабр.

Являясь разработчиком дополнения к FireFox решил написать свои мысли по мотивам недавней статьи «Совместимость дополнений с Firefox 4...» от одного известного автора.

В мыслях меня интересовало то, что вынесено в заголовок, а именно объект Preferences и как получить путь к «Install Location».

Под катом код и описание к нему.

Читать дальше →
Total votes 9: ↑6 and ↓3 +3
Views 727
Comments 4

Chromeless: интерфейс браузера своими руками (HTML, CSS и JS)

IT-companies
Вам никогда не хотелось улучшить привычный интерфейс браузера? Может быть, вы даже пытались сделать это. Если да, то наверняка использовали технологии вроде XUL и XPCOM. Например, в Firefox большая часть интерфейса реализована с помощью XUL, который основан на стандартных веб-технологиях, таких как DOM и JavaScript. Это всё сделано для удобства разработки расширений к браузеру, но в то же время является некоторым барьером, который защищает интерфейс от вмешательства извне.

А если бы ключевые элементы UI были сделаны с использованием HTML, CSS и JavaScript? Cложно представить, какие бы дизайнерские идеи и новые концепции появились на свет, если б интерфейс браузера можно было кромсать на манер веб-страницы.
Читать дальше →
Total votes 38: ↑30 and ↓8 +22
Views 3.8K
Comments 28

Firefox превращается в Chrome, отказываясь от поддержки старых дополнений

IT-companies
image

Вчера Mozilla Foundation объявила о грядущих серьёзных изменениях в работе браузера Firefox. Стараясь не отставать от современных тенденций, браузер переходит на такую схему работы, где каждой отдельной вкладке будет соответствовать отдельный процесс. К сожалению, внедрение этой схемы означает, что браузеру придётся отказаться от поддержки дополнений, работающих при помощи текущего API.

Проект Electrolysis, который как раз должен обеспечить работу каждой вкладки со своим процессом, появился ещё в 2009 году. Но с тех пор он крайне вяло развивался, и постоянно переходил в стадию заморозки. Основная проблема, с которой столкнулись разработчики – невозможность подружить проект с существующим API для дополнений.

Текущее API браузера называется XPCOM (кросплатформенная объектная модель компонентов), позволяющая писать дополнения на различных языках: C++, JavaScript, Java, через слой абстракции XPConnect. Эта система помогла появлению огромного количества дополнений к браузеру, что сыграло не последнюю роль в наборе им популярности.

XPCOM позволяет дополнениям взаимодействовать с браузером на достаточно интимном уровне, дополняя и изменяя поведение всех его компонентов, от элементов интерфейса до рендера страниц. К сожалению, эта система имеет и обратную сторону – её очень сложно скрестить с идеей Electrolysis и отдельными процессами для каждой вкладки. По канонам этой идеи все дополнения должны работать в отдельных от основного браузера процессах, а в такой форме их взаимодействие с внутренностями Firefox крайне затруднено.
Читать дальше →
Total votes 36: ↑27 and ↓9 +18
Views 30K
Comments 142