О Data - только хорошо...: Статьи о Psion

О Data - только хорошо...

Автор: Leo

И конкретно - о книгах и о вещах...

Часть 1-я, ностальгическая

Так случилось, что из всех встроенных приложений для ЗЫШЩТ самая сложная судьба - у Data.

Скажем, у Series3A (Series3 я практически не застал) в Data отсутствовал List View. Правда, тогда злые люди ещё не придумали Pocket PC, отчего многие вопросы решались проще - усилиями многочисленного и активного сообщества программистов. В случае c Data положение спас английский программист John Boyce, создавший т.н. Data Replacement - великолепную программу JBData.

Сразу поясню смысл термина "Replacement" - JBData сохранила (хотя расширила) интерфейс исходной программы. На глаз, тем более не попытавшись поработать с базой, достаточно трудно различить, какая именно из программ находится на экране.

И хотя ностальгировать по старым прогам - дело, отнюдь не поднимающее настроение, скажу так: по возможностям, удобству, скорости работы и документации (2 толстенных, отлично написанных тома с кучей примеров и "How To") JBData безусловно превосходит всё, что мы имеем на Epoc, да и для прочих КПК аналога, насколько я знаю, не создано до сих пор.

Кстати, для нас, русскоязычных пользователей, особенно интересно то, что автор специально для России адаптировал основные хоткеи программы и ввёл некоторые другие добавления.

Тем временем произодитель тоже решил не остаться на обочине процесса - очередная SIBO-модель, Series3C, в качестве чуть ли не самой глобальной новации получила List View в Data.

Хотя возможности даже обновлённой Data по-прежнему весьма уступали JBData, которая в свою очередь тоже не стояла на месте, Psion пустил в ход такое мощное оружие, как PsiWin. Наверное, не все пользователи PsiWin 2.хх помнят, что вместе с предыдущими версиями (для SIBO) поставлялась дополнительная программа, позволяющая работать с файлами Data непосредственно на РС, без всякой конвертации.

Возможность прямой работы на РС с адресной книгой Psion'а (и с другими необходимыми базами) существенно подняла актуальность Data, превратив последнюю в одно из основных приложений.

Дважды, сначала с появлением Ерос, а позже - Series3Mx, осведомлённые юзеры рассчитывали на появление аналога JBData как встроенного приложения взамен Data. Во всяком случае, подобное предложение от автора программы по некоторым сведениям поступило в Psion plc., при этом без каких-либо особых финансовых условий (учитывая, что John Boyce все свои многочисленные программы распространял бесплатно).

Технических сложностей, по крайней мере для портирования на Series3Mx, не было никаких - JBData написана на С+. Но препятствием оказалась обычная маркетинговая тупость Psion plc., по причинам острого рецидива которой очередной отличный проект приказал долго жить.

Обидевшись на фирму, успеху которой он немало способствовал своими программами, John Boyce прекратил разработки и вообще сменил платформу, а мы теперь имеем то, что имеем...

Анализ функциональности Data для Ерос-устройств показывает, что по своим возможностям приложение находится где-то между SIBO Data и JBData.

По сравнению с версией для SIBO, несколько усилились возможности кастомизации карточек (особенно для List View), добавилось управление цветом.

В то же время так и не появились присутствовавшие в JBData возможности генерации отчётов, развитого экспорта/импорта и поиска.

Самое досадное (и необъяснимое) - это отсутствие в Ерос Data инкрементального поиска, т.е. возможности выходить на нужную карточку набором начальных символов первого ключа сортировки.

Эта невозможность, стандартная и совершенно необходимая в любой СУБД, тем более карточной структуры, просто отравляет жизнь реальным пользователям, заставляя вместо оперативного доступа к нужной записи каждый раз делать множество лишних нажатий.

Увы, сторонние разработчики тоже не решили эту проблему.

Я тщательно изучил все 3 имеющиеся для Ерос СУБД и могу уверенно сказать, что ни одна из них не решает вопрос ведения обычной картотеки с простейшим сервисом - выборкой по условию и инкрементальным поиском.

SmallBase отпадает по причине своей глючности.

Из имеющихся в финальной версии всевозможных функциональных ошибок мне лично особенно не понравилось хроническое "съезжание" формата отображения при переключении между режимами или таблицами, излечимое только повторным заходом в программу. Учитывая стабильность как основное преимущество Ерос, необходимость по нескольку раз за сеанс выходить из SmallBase и заходить обратно, при этом заново открывая базы и выбирая таблицы, несколько напрягает.

PsiDat в плане надёжности более благополучен, но у него другая беда - он явно предназначен для чего-то другого, нежели создание простых по структуре (и больших по размеру) картотек.

Если даже путём известных ухищрений такая картотека создаётся, об оперативном поиске в ней можно и не мечтать.

Наконец, PowerBase от Purple Software.

Великолепная реляционная СУБД, безглючная, с продуманным интерфейсом.

Я не задумываясь вёл бы на ней, например, бухгалтерию/склад небольшой или даже средней фирмы.

А вот свою любимую книжную картотеку - увы...

Т.е., конечно, положить в PowerBase главный каталог районной библиотеки - действие вполне возможное. Там же вести базу читателей, отслеживать приём/выдачу книг - всё это делается реально и без особых проблем.

Но не для дома это всё, не для семьи...

Ну не буду я упорно елозить стилусом в глубинах табличных структур, пытаясь всего-навсего вспомнить на лету, читал ли я такого-то автора или нет...

Пример с книгами приведён не зря.

На самом деле, именно эту задачу (домашний учёт книг) я и пытался решить для себя, что и дало толчок сначала к разысканиям, а потом к тому решению, которое я предложу ниже.

Кстати, помимо СУБД общего назначения, есть ещё пара специализированных программ, предназначенных исключительно для учёта книг (например - Book Collection), также опробованных мной и безжалостно стёртых за профнепригодность.

Они страдают общей бедой - примитивизмом.

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

Но такая система, независимо от предназначения, должна как минимум обладать основными возможностями Data, и даже сверх того. Всякая попытка автора создать нужную программу на примитивном уровне заведомо неуспешна, что и подтвердилось при конкретном опробовании (подробности опускаются).

Так что, хочется этого или нет, приходится признать Data наименьшим злом и пытаться решить задачу на её основе.

Часть 2-я, книжная.

К данной статье прилагаются 2 примера "домашних" баз данных - прочитанных книг и хранящихся вещей, на примерах которых показаны некоторые любопытные подходы, облегчающие занесение и выборку информации.

Обе они построены с помощью в общем-то одного и того же технического приёма, позволяющего организовать некое подобие реляционной выборки из базы (а также облегающего запись карточек с повторяющимися реквизитами).

Именно, в каждой базе имеется вспомогательная карточка (или несколько), содержащая перечень всех возможных значений ключевых полей сортировки. Заголовки подобных карточек сделаны таким образом, что они всегда - первые в базе. Достигается это добавлением перед заголовком какого-либо спецсимвола (я лично предпочитаю "*").

В прилагаемом примере книжной базы "Books" имеются две вспомогательные "ключевые" карточки.

Первая карточка в поле "Автор" (старшее поле сортировки) содержит значение "***АВТОРЫ***", благодаря чему она всегда занимает в базе самую верхнюю позицию.

Кроме заголовка "***АВТОРЫ***", единственным "значимым" полем в этой записи является поле примечаний типа Memo, содержащее построчный перечень всех авторов в алфавитном порядке. Поле это заполняется вручную, по мере появления новых авторов редактируется обычным способом (Shift-Ctrl-E).

О Data - только хорошо...: картинка #1 (14449 байт)

Данная запись используется как для выборок (например, она позволяет отобразить все книги конкретного автора, и только его), так и для заполнения новых карточек на книги авторов, уже присутствующих в базе.

Вторая вспомогательная карточка построена по тому же принципу, но вместо списка авторов содержит список возможных жанров (категорий) книг.

В отличие от карточки со списком авторов, расширяющейся по мере прочтения каждой книги нового автора, список категорий достаточно постоянен и может быть создан в момент создания базы, либо просто перекорирован из прилагаемого образца.

Поскольку эта карточка называется "***КАТЕГОРИИ***", она всегда занимает в базе вторую позицию, непосредственно за карточкой "***АВТОРЫ***".

О Data - только хорошо...: картинка #2 (13385 байт)

Хотя прилагаемая база данных Books может использоваться as is, для её максимально эффективной работы необходимы два дополнительных макроса (по общим правилам, их следует поместить в стандартную библиотеку макросов и назначить им горячие клавиши в Macro5, Assistant или аналогичной программе).

Один из них, Data, - простой самодельный макрос, предназначенный для выборки всех книг одного автора.

Работает он следующим образом.

Для выполнения выборки необходимо в карточке "***АВТОРЫ***" установить курсор напротив нужной фамилии (поскольку эта карточка всегда первая, она делается текущей по ESC) и нажать комбинацию клавиш, назначенную макросу Data.

На экране останутся только книги выбранного автора, отсортированные по названию!

Другой макрос, MultiClip by CeeSoft, позволяет "забирать" имена авторов и названия категорий из ключевых записей, упрощая создание новых карточек.

Использование такого подхода не только даёт преимущество в скорости. Ещё более существенным является то, что выборка авторов и категорий из готового списка исключает ошибки набора. Действительно, опечатка при наборе имени автора приводит к нарушению сортировки, что весьма неприятно, особенно для больших баз. В свою очередь, единообразная, заранее определённая классификация книг по категориям снимает необходимость мучительно размышлять при занесении каждой новой книги, какими правильными словами следует записать её жанр.

Работа с макросом MultiClip происходит следующим образом.

Под общим названием MultiClip на самом деле объединены 2 макроса - MultiCopy и MultiPaste.

Как понятно по их названиям, первый из них позволяет сохранять копируемые строки в буфере обмена. При этом, в отличие от обычного Ctrl-C, каждое следующее копирование не перезаписывает предыдущее, а пишется следующим в некий буфер, позволяющий сохранить до 20 последних скопированных строк или объектов (краткое описание MultiClip также можно посмотреть на MyPsion.ru).

В свою очередь, MultiPaste даёт выбрать для вставки любой из предварительно скопированных элементов.

О Data - только хорошо...: картинка #3 (11428 байт)

Хотя это не принципиально, я рекомендую назначить макросам MultiCopy и MultiPaste комбинации клавиш Ctrl-Fn-C и Ctrl-Fn-V соответственно.

Вооружившись набором инструментов, приступим к операции.

Для примера выполним ввод новой книги существующего автора.

Для этого :

1. Помечаем нужного автора в карточке "***АВТОРЫ***" и копируем в буфер с помощью MultiCopy.

2. Помечаем нужные категории (их может быть несколько) в карточке "***КАТЕГОРИИ***" и также копируем в буфер через MultiCopy.

Всё, "заготовка" готова (см. скриншот выше).

Теперь стандартным хоткеем Shift-Ctrl-N открываем для редактирования новую (пустую) карточку и с помощью MultiPaste "раскидываем" собранное в буфере содержимое по нужным полям.

Пример результата:

О Data - только хорошо...: картинка #4 (11149 байт)

На самом деле полей предусмотрено гораздо больше (в частности, оригинальное название, переводчик, год издания и пр.). Рекомендую скопировать прилагаемую к статье базу на ЗЫШЩТ и поиграться ;-))

В принципе, ввод книги нового автора происходит совершенно аналогично, только сначала нужно добавить его в карточку "***АВТОРЫ***".

Вот и всё.

Если вы будете дотошно следовать приведённым рекомендациям, поверьте, это окупится с лихвой.

Когда в глубокой старости, увидев новую книгу (да-да, все книги уже будут казаться вам новыми), вы захотите проверить, не читали ли всё-таки её раньше, возьмите свой верный ЗЫШЩТ - и сэкономьте немало из оставшегося времени, узнав, что ещё лет 30 назад, прочитав сей опус, выставили ему полновесную, заслуженную двойку...

Часть 3-я, плюшкинская.

Если проблема систематизации книг близка каждому истинному ЗЫШЩТовцу и востребована массами, то всё, о чём я расскажу ниже - нетривиальный эксперимент.

Хотя... много раз конфа MyPsion обнаруживала у её обитателей удивительную общность взглядов и единство мыслей, начиная от использования одних и тех же фотоаппаратов и кончая общими хобби.

Так что я не теряю надежды, что у многих читателей статьи найдутся немалые кучи ностальгического хлама, стряхнуть пыль с которых освежающей тряпкой ЗЫШЩТ Data явится занятием не только полезным по дому, но и приятным для души.

Итак, я предлагаю вниманию почтеннейшей публики шаблон базы данных ЧтоГдеЛежит, предназначенной (название обязывает!) для сохранения информации о том, где лежит та или иная вещь.

Принцип построения этой базы - такой же, как у книжной.

Точно так же для работы с ней потребуются макросы Data и MultiClip.

Для данной базы необходима единственная служебная карточка, озаглавленная "***МЕСТА ХРАНЕНИЯ***". В этой карточке, в поле примечаний типа Мемо, записываются по одному на строке все ваши потайные уголки.

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

О Data - только хорошо...: картинка #5 (12776 байт)

Занесение в базу новых записей происходит так же, как и в случае с книгами - надо выбрать, пометить и сохранить в буфере MultiCopy место, где хранится записываемая вещь. Потом, открыв на запись новую карточку, восстановить его через MultiPaste (ес-но, в поле "Место").

Операция очень проста и занимает буквально секунды.

Выборка информации из базы также очень проста.

Достаточно стать на карточку ***МЕСТА ХРАНЕНИЯ*** (учитывая, что она - всегда 1-я по порядку в базе, для этого достаточно нажать Esc) поставить курсор напротив нужного места хранения и нажать комбинацию клавиш, назначенную макросу Data.

Результатом будет выборка из базы только вещей, лежащих в этом самом месте хранения.

О Data - только хорошо...: картинка #6 (7421 байт)

Я рекомендую всем истинным ЗЫШЩТовцам опробовать эту базу в домашнем хозяйстве, а коллекционерам ЗЫШЩТов - в первую очередь! ;-))

На самом деле следует признать, что описанные приёмы работы - всего-навсего попытка использовать встроенную Data как реляционную СУБД, каковой она по определению не является.

Однако эти костыли реально работают...

Замечание.

К сожалению, на MyPsion'е выложена устаревшая версия MultiClip, которая способна сохранять и восстанавливать только строки из editable fields. Для успешной работы с Data рекомендуется MultiClip версии не ниже 1.1.

Благодарности.

Большое спасибо КМ за сайт MyPsion.ru, без которого эта статья не вышла бы в свет.

Отдельное спасибо Edo Vuсurovic за помощь в проблеме с макросом MultiClip.

Данная статья целиком изготовлена на Psion netBook.

Леонид (Leo)

Дата статьи: 13 мая 2004 г

« Назад в каталог | Обсудить в конференции »

[На главную] [Обновления] [Новости] [Клуб] [Обзоры программ] [Советы] [Обзоры железа] [SIBO] [Конференция] [Статьи] [Базы] [Ссылки] [Поиск]