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

Содержание
Подготовка Создание пользовательского типа файла Иконка Распознавание файла Описание Предпочтительное приложение Дополнительные атрибуты Индексация Наполнение данными Запрос к базе данных

# Семинар на тему: типы файлов, атрибуты, индексация и запросы

Этот семинар покажет способы использования Атрибутов, Запросов, Индексации и пользовательских Типов файлов. В качестве примера мы создадим базу данных для отслеживания нашей библиотеки DVD-дисков.

## Подготовка

Let's first decide what filetype and attributes would serve our needs. Originally, I planned to use a bookmark file with a link to the movie's IMdB page, but since Haiku didn't have a "bookmarkable" browser like BeOS' NetPositive at that time, I came up with this: The file itself will be a JPEG image for the movie cover.
With WebPositive, Haiku now has a browser using bookmark files again, so you could as well use a bookmark file instead of an image as basic filetype for our database files.
In any case, to these files we add a couple of attributes. Here we have to decide if we want to query it later (then we have to add it to the index) and if so, what type of attribute it should be. Numbers (int, float) can be evaluated differently than text (</=/> vs. is/contains/starts with).

Вот атрибуты, которые я хотел бы видеть для своих DVD-дисков:

- Название фильма
- Жанр
- Ссылка на него в IMdB
- Режисёр/В ролях
- Сюжет
- Мой рейтинг от 1 до 10
- Расположение у меня на полке, например: A2, B3, чтобы я смог найти DVD-диск и в реальной жизни :)
- Кто одолжил диск для просмотра

## Создание пользовательского типа файла

Запустите Типы файлов (Filetypes) и кликните на кнопку Добавить (Add)... в левом нижнем углу. Откроется небольшое окно, в котором определяется какая MIME группа соответствует новому тип файла. Вы также можете создать совершенно новую группу. Мы же поместим его в группу "приложения (applications)" и установим "Внутреннее имя (Internal Name)" как DVDdb.

Теперь откроется панель для вновь созданного типа файла DVDdb:

### Иконка

Двойной клик по стандартной иконке откроет приложение Icon-O-Matic для создания иконки нового типа файла. Вы также можете перетащить иконку из файла другого типа, которая может использоваться для примера и модифицирования.

### Распознавание файла

Вы можете добавить суффиксы такие как .txt, .jpg, .mp3, чтобы распознать файлы по их расширениям. Это полезно при работе с файлами не имеющими MIME типа, но для нашего примера это не актуально.

### Описание

- Название типа (Type Name) - Отображается, например, в меню атрибутов окон Tracker и в атрибуте "Kind" любого файла.
- Описание (Description) - Немного более подробное описание.

### Предпочтительное приложение

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

Выбрать... |  | открывает диалоговое файловое окно, где вы выбираете приложение для открытия этого типа файла. Здесь мы устанавливаем ShowImage для показа обложки DVD-диска.
Также как... |  | открывает диалоговое файловое окно, где вы выбираете любой файл, который уже имеет предпочтительный набор приложений, подходящий и под наш новый тип файла.

### Дополнительные атрибуты

Здесь вводятся все атрибуты, которые мы выбрали при подготовке. Клик по кнопке Добавить (Add)... откроет следующую панель:

- Название атрибута (Attribute Name) - Отображается, например, как заголовок колонки в окнах Tracker.

- Внутреннее Название (Internal Name) - используется для индексации и запроса атрибута.

- Тип (Type) - Определяет значение, которое атрибут будет содержать, и как по нему делать запрос.
  - Строчный (String) для обычного текста
  - Булевый (Boolean) для двоичных данных: 0 или 1
  - Целые (Integer) для целых чисел с различными диапазонами:
    - 8 бит: ± 255
    - 16 бит: ± 65,535
    - 32 бита: ± 4,294,967,295
    - 64 бита: ± 18,446,744,073,709,551,615
  - С плавающей точкой (Float) для чисел с плавающей запятой одинарной точности
  - Двойной (Double) для чисел с плавающей запятой двойной точности
  - Временной (Time) формат времени и даты

- Видимый (Visible) - этот поле определяет, будет ли атрибут видимым в окне Tracker. Так как сам Tracker будет интерфейсом к нашей базе DVD-дисков, то проверим что оно активно и определим внешний вид атрибута:
  - Отображать как (Display As) - Оставить По умолчанию (Default). В дальнейшем будет доступно больше опций, например, полоса или звездочки для оценки рейтинга и т.д.
  - Редактируемый (Editable) - Определяет, будет ли атрибут доступен для редактирования в Tracker.
  - Ширина (Width) - Ширина колонки по умолчанию для этого атрибута в окне Tracker.
  - Выравнивание (Alignment) - Атрибут может быть выравнен по центру, левому или правому краю.

Теперь вставим всю информацию для наших атрибутов:

Внутреннее Название | Тип атрибута | Индексируемый? | Описание
--- | --- | --- | ---
DVDdb:title | текстовый | да | Название фильма
DVDdb:genre | текстовый | да | Жанр
DVDdb:url | текстовый | нет | Ссылка
DVDdb:cast | текстовый | да | Режисёр/В ролях
DVDdb:plot | текстовый | нет | Сюжет
DVDdb:rating | целочисленный | да | Рейтинг от 1 до 10
DVDdb:coord | текстовый | нет | Расположение
DVDdb:lent | текстовый | да | Кому одолжен

## Индексация

Прежде чем начать ввод данных в нашу базу данных DVD-дисков, мы должны добавить определенные атрибуты к Индексации. Только проиндексированные атрибуты могут использоваться быстрыми Запросами в Haiku.
Итак, как мы будем осуществлять поиск в дальнейшем? Мы, вероятно, не будем запрашивать: "Что находится на моей полке B4"? или "Хочу ссылку на IMdB или содержание фильма, в котором встречается выражение 'Патриарх Шенуда'"?.

Поэтому оставляем следующие атрибуты:

Внутреннее Название | Тип атрибута
--- | ---
DVDdb:title | текстовый
DVDdb:genre | текстовый
DVDdb:cast | текстовый
DVDdb:rating | целочисленный

Для их индексации мы открываем Terminal и просто добавляем один атрибут за другим:

    mkindex -t string DVDdb:title
    mkindex -t string DVDdb:genre
    mkindex -t string DVDdb:cast
    mkindex -t int DVDdb:rating

Ключ -t определяет тип атрибута как строчный (string) для всех, кроме рейтинга, который является целым числом.

## Наполнение данными

Теперь, когда всё настроено, мы можем начать вводить данные в нашу базу. Так как наш основной файл представляет собой изображение обложки, то мы заходим на какой-нибудь онлайн-ресурс типа IMdB и ищем нужный фильм, для которого сохраняем изображение обложки или постер в новой папке, где мы будем хранить наши DVDdb файлы.

Открыв эту папку, мы увидим обычное окно Tracker с одним JPEG файлом в нём. Кликнув по нему правой кнопкой мыши, изменяем его тип файла на `application/DVDdb` при помощи Дополнения Тип файла (Filetype Add-on). Более подробно об этом описано в документе Типы файлов.

Далее мы активируем все наши DVDdb атрибуты из меню Атрибуты (Attributes) окна Tracker и упорядочим колонки на наш вкус:

Кликнув по любому пустому атрибуту (или нажав клавиши ALT+E), мы активируем режим редактирования и заполняем каждый из них. Нажимая TAB или SHIFT+TAB, вы можете перемещаться между атрибутами.

В нашем примере мы начинаем с загрузки обложки в JPEG формате, и изменяем его тип на applications/DVDdb. Но существует и другой, более удобный способ подготовки файла для дальнейшей обработки. Просто скопируйте пустой файл с уже прописанным типом в /boot/home/config/settings/Tracker/Tracker New Templates и переименуйте его в DVDdb.

Кликнув правой кнопкой мыши в окне Tracker, вы обнаружите новый пункт в подменю Новый (New)..., помимо заданной по умолчанию Новой папки (New folder).

## Запрос к базе данных

Спустя несколько часов нелёгкой работы, мы получаем довольно неплохую базу данных, и вы теперь можете сделать запрос для нахождения всех фильмов c Кристиной Риччи (Christina Ricci), имеющих рейтинг 7 и выше. :)

Вы можете назначить удобный макет атрибутов для результатов поиска определенного типа файлов.
Откройте папку, содержащую DVDdb файлы, и упорядочите атрибуты, так как вы хотели бы видеть представленные результаты запроса. Скопируйте эту схему размещения колонок через меню Атрибуты (Attributes) | Копировать схему (Copy Layout).

Откройте /boot/home/config/settings/Tracker/DefaultQueryTemplates, создайте новую папку и переименуйте её по типу группа/тип файла (group/filetype), заменяя косые черты символами подчеркивания, в нашем случае название будет выглядеть так: "applications_DVDdb".

Далее откройте новую папку и вставьте схему размещения через меню Атрибуты (Attributes) | Вставить схему (Paste Layout). Теперь всё готово, пользуемся: