>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >Какой способ менее кривой для создания хранилища ? http://forum.mozilla-russia.org/viewtopic.php?id=33612 |
Codeblight > 07-04-2009 20:31:47 |
Доброй ночи, уважаемые форумчане. Вот задался вопросом, как менее криво можно изобразить хранилище данных в тулбаре? У меня тулбар получает данные с сервера, а поскольку пользователь может запусть 2 Firefox - тулбара станет 2... .а копия данных должна быть одна. Сейчас у меня каждый тулбар имеет свое хранилище и после получения данных тулбар посылает уведомление обсерверам остальных тулбаров (в других процессах фф), передавая им данные. При изменении \ удалении данных тулбар сообщает всем остальным своим копиям что сделать надо вообщем такой велосипед получился и он мне не нравится. Скажите, есть ли способы сделать что-то общее одно? |
lemax > 08-04-2009 02:33:40 |
Если данных мало, и они не накапливаются, то nsIPrefBranch (что то вроде реестра виндоус, только для всех операционных систем). Записи в этом "реестре" можно увидеть по адресу about:config Иначе: nsILocalFile. Просто записывать в общий фаил. |
Forest > 08-04-2009 09:54:51 |
Что за данные-то хоть? |
Codeblight > 10-04-2009 18:58:48 |
lemax пишет
Данных не очень много, но реализовывать свою БД на файлах желания не много. Поднимать sqlite тоже не хочется, т.к. данные быстро устаревают и нуждаются в динамичном обновлении ;( Forest пишет
Да вообще теоретический вопрос. Сейчас данные - урлы \ ключи-хеши \ информация о страницах по урлам \ статистика всякая. Ну и нелогично когда статистика в одном тулбаре одна, а в соседнем окне другая ;( Сейчас вот проверку почтовых ящиков делаю на новые сообщения на XBL, ну и глупо как-то получится, если каждый тулбар будет лазить и почту проверять... Хочется по нормальному, но пока не придумал как. |
Forest > 10-04-2009 22:26:37 |
Может имеет смысл покопать в сторону расширений, которые ставятся в папку приложения (и доступны во всех профилях)? |
Crazy-EyE > 11-04-2009 13:59:29 |
Codeblight > 11-04-2009 16:26:07 |
Forest пишет
Это несколько не то. Т.е. расширения то доступны, но данные в них не общие. pi.v.vitaly пишет
Посмотрел, автор сделал, как предлагает Crazy-EyE. Crazy-EyE |
Crazy-EyE > 11-04-2009 18:25:00 |
Такой возможности нет, и она обычно не нужна. Можно подгружать JS-скрипты через mozIJSSubScriptLoader. А зачем вам это нужно? |
Codeblight > 11-04-2009 19:45:56 |
Crazy-EyE пишет
Хочу забиндить XBL на кнопочку, и чтобы она сразу подняла глобальное хранилище для других копий браузера (если их вдруг начнут запускать) или приципилась уже к существующему хранилищу. Вся "прелесть" в том чтобы можно было подключать XBL подтянутые из сети (изображаю "плагины" для расширений). Плагины могут быть разные и сразу не угадаешь какие будут... поэтому одинаковые хранилища для всех не подойдут. Вот ищу как это сделать без XPCOM или возможность как это сделать налету. |
Crazy-EyE > 11-04-2009 20:20:54 |
Тогда можно просто сделать один большой общий XPCOM-компонент, который будет управлять всеми хранилищами (просто JS-объектами). Я бы взял код отсюда, раскомментировал строчку а в плагине делал так: Выделить код Код:var sharedObject = Components.classes["..."].getService().wrappedJSObject; if (!sharedObject.PLUGIN_NAME) { // Init sharedObject.PLUGIN_NAME = { storage: {} }; } var storage = sharedObject.PLUGIN_NAME.storage; |
Anton > 12-04-2009 07:29:57 |
Есть такая возможность.
Т. е., непривилигерованный xbl должен "поднимать" хранилище, реализованное привилегированным кодом ? Хотя, если код "плагинов" не обязан быть привилегированным, в FF3 и старше вроде есть какие-то средства для хранения данных web-приложений. |
Crazy-EyE > 12-04-2009 15:01:48 |
Можно из произвольной директории, но Firefox все равно придется перезапускать |
Anton > 12-04-2009 15:04:44 |
Crazy-EyE
Ошибаетесь, можно и без перезагрузки. |
Crazy-EyE > 12-04-2009 15:21:02 |
Через nsIComponentRegistrar? Может, и можно. Только нужно ли? P.S. После таких утвердительных заявлений обычно ожидается ссылка. |
Anton > 12-04-2009 15:33:01 |
Верно.
: ) |