В рамках проекта Sciter разрабатывается Sciter application (sciter.exe -> html/css/script)
под названием Scitems — персональная синхронизируемая база данных.
Модель — occasionally connected application.
Scitems это приложение позволяющее хранить данные разных типов.
Идея в общем-то не нова — типа "О сколько их упало в эту бездну".
UI представляется пока как некий микс Outlook и EverNote:
три панели: keywords, list и current item.
keywords они же categories это в общем-то 1 в 1 то что есть в EverNote или в KnowBase.
База хранит items — типизированные сущности произвольной структуры: webclips, notes, bug reports, etc.
Вот один из ранних прототипов UI того что имеется ввиду:
Имплементация же принципиально отличная от того что есть.
Немного о Database & storage:
Sciter имеет встроенный persistence engine — база данных произвольной структуры.
Объекты аллоцируются как обычно в javascript c пом. оператора new и если какой-либо
объект виден по ссылкам от storage.root объекта то он автоматчески попадает в storage — становится persistent.
Также в Sciter есть встроенная поддержка JSON — т.е. в принципе можно DB выгружать в JSON файл или в XML.
Item в такой базе есть object c полями type, id, keywords.
Все остальные поля определяются драйвером типа item.
Драйвер типа есть опять же script/html/css связка отвечающая за инициализацию
объекта типа и представление его пользователю — показ, редактирование и прочие синхронизации например.
Драйверы типов могут жить как локально так и в сети.
Предполагается что где-то будет жить публичная библиотека этих самых драйверов.
Что-то типа klips для klipfolio например.
Да и вообще все приложение — открытое — в том смысле что морда лица Scitems это html/css/script
который лежит тут же.
Sciter.exe включает в себя htmlayout последней версии, tiscript, agg (class Graphics) (спасибо Максу Ш.),
dybase от Кости Книжника и работает сейчас на Windows и Windows Mobile.
Очень уважаемая фирма попросила меня спортировать Sciter на Linux поэтому будет и там.
Предполагается что на всех десктопах один и тот же комплект html/css/script будет работать
без изменений.
В проект приглашаются все желающие.
С точки зрения UI и usability проект представляет определенный challenge —
нужно сделать простой но мощный UI.
Штука должна быть очень удобной в работе — для себя делаем — не для дяди.
Если у кого есть желание — свистите.
Я не знаю где лучше обсуждать сие — у меня или здесь.
Ну да разберемся.
Вот и все собственно
.
Здравствуйте, 0rc! На глаза попались Ваши байтики:
0rc>2. Что послужило за основу (т.е. любая информация: книги, проекты) при создании хранилища.
Посмотрите технологию, которая используется в 1С:Предприятие 8.0. Там есть хранилище.
CS>Scitems это приложение позволяющее хранить данные разных типов.
у 1С на новой платформе (1С:Предприятие 8.0) тоже есть такое. Только там нужно заранее определить хранимые типы, но описать их можно какие хочешь.
Забыл как называется. Вспомню, допишу.
Здравствуйте, 0rc, Вы писали:
0rc>Здравствуйте, c-smile, Вы писали:
CS>>Scitems это приложение позволяющее хранить данные разных типов.
CS>>Идея в общем-то не нова — типа "О сколько их упало в эту бездну".
0rc>А можно поподробнее получить информацию, интересуют следующие аспекты:
0rc>1. Что собой представляет в этом случае хранилище данных
0rc>2. Что послужило за основу (т.е. любая информация: книги, проекты) при создании хранилища.
Хранилище это модифицированный dybase от Кости Книжника.
В dybase дистрибуции есть примеры для Ruby, PHP, Python.
Там обертки написаны на самих этих языках.
Мы решили пойти по другому пути и "вмуровали" persistence в рантайм языка.
Т.е. у любого объекта можно спросить его isPersistent флаг и обратиться к его storage:
var obj = {one:1; two:....}
....
....
if(obj.isPersistent)
obj.storage.commit();
В рантайм JavaScript добавлены два объекта Storage и Index.
Index это упорядоченный map поддерживающий ranges. Т.е.
можно делать например так:
var index = ....;
for( var item in index["alpha".."omega"] )
stdout << item.toString();
Сам по себе dybase расширен доп. типами данных — там очень хороший и чистый код — поэтому это было легко сделать.
0rc>Интересуюсь этим вопросом, так как сам реализую(точнее реализовал но хочется большей универсальности) в текущий момент хранилище с подобным функционалом ("rsdn@unix") .