Собираем
информацию
по крупицам

Qt

MyTetra: формат хранения данных
18-09-2011
15:43:14

Описание формата данных в программе MyTetra.

 

 

Данные в рабочей директории

 

MyTetra способна работать в режиме установленной программы, и в режиме переносимого приложения. Для того, чтобы обеспечить такую работу, MyTetra последовательно ищет основной файл конфигурации conf.ini в следующих директориях:

  • Сначала просматривается директория, в которой запущен бинарник программы;
  • Затем просматривается директория ~/.mytetra;
  • Затем просматривается директория ~/.config/mytetra.

Как только файл conf.ini найден, директория с эти файлом объявляется рабочей директорией. Рабочую директорию не следует путать с директорией хранения данных - это разные вещи (см. далее).

 

Если файл conf.ini нигде не обнаружен, например при первом старте программы, MyTetra выведет диалог настройки. В нем нужно указать, в каком режиме следует использовать MyTetra. В режиме Standart MyTetra создаст каталог ~/.config/mytetra, и разместит в нем все нужные для работы файлы и подкаталоги. В режиме Portable MyTetra создаст нужные файлы и подкаталоги в текущей директории запуска.

 

В рабочей директории могут находиться следующие файлы и каталоги:

  • data (директория хранения данных)
  • trash (директория корзины)
  • conf.ini (файл настроек MyTetra)
  • editorconf.ini (файл настроек встроенного редактора WyEdit)

В conf.ini прописаны пути к директории хранения данных (опция tetradir) и к директории корзины (опция trashdir). В них прописываются пути к каталогам data и trash. Таким образом, каталог данных data и каталог корзины trash могут располагаться не в рабочей директории, а где-то в другом месте.

 

 

Директория хранения данных

 

Как написано выше, директория хранения данных называется data. В ней должны находиться следующие файлы и каталоги:

  • base (директория хранения записей MyTetra)
  • database.ini (файл настроек)
  • mytetra.xml (файл дерева данных)

Каждая запись имеет свой каталог в каталоге base. Название каталога с записью должно быть уникально. Чтобы обеспечить уникальность имени, оно составляется из двух частей. Первая часть - метка времени UNIX, вторая часть - строка из 10 случайных символов [a-z][0-9]. Пример названий каталогов с записями:

 

13162072315qhj03np5x
1316292619wem18cgx16
1316296905kgzm28pkg6

 

Такой принцип именования позволяет с одной стороны видеть, в какой последовательности создавались директории записей, а с другой стороны гарантирует вероятность коллизий не более 10-15 в секунду.

 

 

Директория хранения записи

 

Каждая запись MyTetra хранится в отдельном каталоге. Эти каталоги расположены в директории хранения данных base.

 

В директории хранения записи обязательно располагается как минимум один html-файл. По-умолчанию он называется index.html. В нем хранится текст записи в формате HTML.

 

Помимо html-файла, в каталоге хранения записи лежат файлы картинок, используемые в тексте записи. Все файлы картинок хранятся в формате *.png. Это обеспечивает хранение изображений без потери качества и лицензионную чистоту.

 

Внимание! MyTetra всегда следит, чтобы в директории хранения записи был порядок. А это значит, что любые файлы, не принадлежащие в данный момент к записи, будут удалены в корзину.

 

 

Файл дерева mytetra.xml

 

В директории хранения данных data расположен самый главный файл mytetra.xml. Он отвечает за древовидное представление накопленной информации, в нем хранятся названия записей и веток, текстовые метки и прочая информация.

 

Основной корневой элемент - элемент <root>. В нем раположены два элемента: <format> и <content>.

 

Элемент <format> имеет следующие атрибуты:

 

<format version="1" subversion="1"/>

 

Атрибут version - основной номер версии формата хранения,  атрибут subversion - минорный номер версии. На текущий момент в MyTetra используется формат 1.1, о нем и рассказывается далее.

 

Элемент <content> содержит в себе элементы <node>, организованные в древовидную структуру. Это и есть дерево веток, которое присутствует в интерфейсе MyTetra.

 

Элемент <node> содержит два атрибута:

  • id - униканый идентификатор ветки;
  • name - имя ветки.

Внутри элемента <node> может быть расположен элемент <recordtable>. Это таблица конечных записей. В интерфейсе MyTetra она расположена справа вверху.

 

Таблица конечных записей <recordtable> содержит в себе список элементов <record>. Каждый элемент <record> - это отдельная запись в MyTetra. Элемент <record> имеет следующие атрибуты:

  • id - униканый идентификатор ветки;
  • dir - имя каталога, в котором хранится запись. Имя задается отностельно директории хранения данных data;
  • file - имя файла с текстом записи, обычно index.html;
  • name - название записи;
  • author - имя автора;
  • url - интернет-ссылка, сопровождающая запись;
  • tags - текстовые метки записи (теги);
  • ctime - время создания записи в формате ГГГГММДДЧЧММСС;
  • crypt - наличие шифрования в записи. 0 - шифрования нет, 1 - запись зашифрована.

Пример узла <node>:

 

<node id="4" name="Язык C">

 <recordtable>

  <record dir="1310729762ner9v1twxy"

          crypt="0"

          url=""

          tags="c, c++"

          author=""

          id="1310729762n6n3rd7o9v"

          ctime="20110715153602"

          name="Определение разрядности платформы 32 или 64 бит"

          file="text.html"/>

  <record dir="1315337597bz9a5a2f3e"

          crypt="0"

          url=""

          tags="linux, SUID"

          author=""

          id="1315337597vhtll8dj9f"

          ctime="20110906233317"

          name="Функции getuid() и geteuid()"

          file="text.html"/>

 </recordtable>

</node>

 

 

Смена версий формата данных

 

Формат хранения данных может претерпевать изменения, но каждый новый релиз MyTetra должен иметь встроенные средства по конвертированию данных из предыдущего формата в более новый. Данное конвертирование должно происходить после уведомления пользователя, без потерь информации.

 


К списку проектов

Интересное на сайте


C / C++ » LoLo Switcher - низкоуровневый переключатель клавиатуры для X11

Официальная страница / Official page(Rus)   LoLo Switcher - это низкоуровневый локальный переключатель клавиатуры для оконной системы X11. Он спо...


Демо, сделанное в генераторе » Xintrea Home Page Demo

Размер: 250 Кбайт Требования: Windows 95/98/XP Год: 2005   Демка для моего старого сайта xi.net.ru. Демка сделана просто щелчками мышки, с ...


Платформа 1C:Предприятие » 1С 8.2: Как сделать удаление объектов от пользователя в пределах его прав

В системе 1С удаление помеченных на удаление объектов традиционно разрешается делать только привелигерованным пользователям. Часто удаление объектов ...

RSS подписка

Подпишитесь на новости сайта по RSS


http://xbrd.ru/primenenie/vidy-panelej/paneli-na-steny/ - деревянные панели для отделки стен.

Внимание!

На этом сайте разрабатывается программа MyTetra и её родственные проекты.

Доступны к просмотру следующие базы знаний:

База Xintrea (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18)

База Rarrugas (1, 2)

База Balas

База YellowRaven

База Yurons

База Lesnik757

База Shandor

База Sirrichar

 

Подробности на странице MyTetra Share.

 WebHamster.Ru
 Домик любопытного хомячка
Яндекс индекс цитирования
Почтовый ящик