Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #62, ФЕВРАЛЬ 2004 г.

Жизнь по плану

Лозовский Александр

Xakep, номер #062, стр. 062-114-1


(alexander@real.xakep.ru)

Свой шедулер на Delphi

Года четыре назад мне пришлось писать «электронный органайзер» для одного французского перца. Зачем он был ему нужен? Очень просто – каждый буржуй хочет, чтобы интерфейс любой проги полностью соответствовал его желаниям, и ему не приходилось напрягаться с мастерами, кастомизацией и делать в пять кликов то, что можно сделать одним хоткеем. Таким хоткеем, каким ему нужно. Соответствовать его требованиям было сложновато, т.к. общались мы на английском, которого ни я, ни он толком не знали :).

Делаем для себя

Потом эта прога пригодилась и мне. Правда, ее исходники посеялись при очередном формате винта, а попросить их у того дяди было невозможно, поскольку его мыльник я тоже потерял. Убивать же 15 минут на создание своей утилиты мне было лень, и я полез в инет. Результат меня разочаровал. Конечно, шедулеров и ремайндеров там куча, в том числе включающих расчет биоритмов, записные книжки и даже какие-то лунные календарики. Но того, что мне надо, а именно, простую прогу, висящую в трее и напоминающую о событиях с точностью до минуты, красивым окошком и гимном СССР, я не нашел. В итоге пришлось делать все самому.

Жесткие требования

Казалось бы, органайзер – это всего лишь «IF data = data then showmessage (‘Вам пора!’);». Однако, цены на эти проги могут достигать 30 баксов за регистрацию. Почему? А все потому, что юзер любит комфорт. Например, вот что может его порадовать:

1. Удобный интерфейс. Это основная форма и popup-menu иконки около часов. Пункт «быстро добавить задание» просто обязателен.

2. Маленький размер. 1,2 Мб в оперативке - это не предел мечтаний. Когда я впервые увидел такую гигантскую прогу, она не порадовала мой тогдашний 566 МГц/192 Мб. По-хорошему, код шедулера должен быть 100% из WinAPI.

3. Гибкость базы событий. Разумеется, это должна быть БД. Хранить события в ini-файле уже немодно, да и тебе наверняка придется выводить по желанию пользователя ближайшие задания, фильтровать их по дню, часу или имени события (день рождения/праздник/траур и т.п.), поэтому будем беречь нервы. В своем примере я использовал XML.

4. 2 больших подраздела опций: краткий и развернутый. Краткий необходим для быстрого внесения заданий и элементарного контроля, развернутый – это «мастера заданий» плюс все то, что тебе придет в голову. Кстати, есть товарищи, которые используют только второй способ. Получается вот что: «если событие - не траур, нажмите <skip>, иначе нажмите <далее> и переходите к следующей странице». Лучше уж тренировать мозги, чем использовать такой органайзер :).

5. Дополнительные возможности. Чего только в них ни встраивают помимо того, что я сказал. Встречаются и календари месячных, и какие-то кармическо-астрологические бонусы. Так что попробуй и ты добавить что-нибудь оригинальное. Например, «расчет даты родов». Вот тебе 2 формулы их определения: «дата последней менструации – 3 месяца + 7 дней» или «известная дата зачатия – 3 месяца – 7 дней». И какая, по-твоему, женщина устоит перед органайзером, постоянно напоминающим: «Ваш малыш родится через Х дней»? :)

Содержание  Вперед на стр. 062-114-2
экстремальный спорт
<<< НАЗАД ||| ГЛАВНАЯ