«Идеальный» таймер

Автор: . Рубрика: Умные вещи. Опубликовано: 19.05.2008, 18:52.

Программист тратит на кодирование лучшие часы своей жизни. Хороший программист помнит, что лучшие часы жизни потратит на его программу пользователь. Над головой программера всегда звездное небо, а внутри него – нравственный закон: нужно сократить до минимума, до «больше не могу», количество кликов, необходимых для выполнения задачи, ради которой создается программа. А затем – убрать хотя бы еще один клик.

Аппаратно-программные комплексы фазового хроноконтроля

Возьмем для примеры таймеры – тип программ, выполняющих предельно простую, понятную, четко ограниченную во времени задачу: взвели таймер – и через 5 минут он вам напомнит, что кипящее молоко всегда убегает.

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

Увы, разработчики таймеров словно соревнуются друг с другом, чья программа «заводится» дольше – и зачастую опережают в этом даже разработчиков компьютерных будильников. Вызываете программу, закрываете всплывающее приветствие: Hi, Ury, как дела? Давай поболтаем?! Послушай свежий анекдот!», отказываетесь писать «письмо другу», выбираете год, месяц, день недели, назначаете время срабатывания, вводите текст напоминания, выбираете wav-файл для звонка, программу для срабатывания, скин всплывающего окна. Уфф…

Почему это окно таймера по прежнему отказывается закрываться? Ага, мы забыли определить, должно ли напоминание висеть в виде «липкого листочка» на Рабочем столе и сколько раз оно всплывет поверх всех окон после первого срабатывания. Иногда складывается впечателение, что некоторые программисты страдают клоузофобией – боязнью закрытия своей программы…

Вот наиболее короткий алгоритм работы таймера из тех, что я встречал: щелкаете правой кнопкой мыши по иконке в трее и выбираете из списка нужное количество минут. Что меня в этом не устраивает? Во-первых, чтобы задать нестандартное время срабатывания (скажем, 125 минут), нужно вызвать традиционное окно для ввода цифр. А во-вторых, я предлагаю дочитать до конца этот текст – и тогда, надеюсь, вы меня вполне поймете.

Это превратилось в хобби, в наваждение: много лет я скачиваю любые программы, в том числе монстрообразные комплексы, в описании которых хоть раз упоминается слово таймер. Загружаю, практически тут же стираю, и снова беру с полки старый-добрый механический таймер. Он состоит из двух дисков: поворачиваешь вокруг оси один из дисков относительно другого на нужное количество делений – и можешь забыть о времени, пока оно само не напомнит о себе. Давайте все же попытаемся создать нечто столь же удобное на Рабочем столе ПК.

Для начала предлагаю взять в руки карандаш и лист бумаги:) Описание будет долгим и нудным – в отличие от результата, надеюсь:))

Итак, по горячей клавише (а также из меню часов в трее) вызывается вертикальная панель. Посередине – вертикальная ось с делениями, на оси – бегунок. Передвинув бегунок мышью на определенное количество делений, пользователь тем самым назначает время срабатывания таймера. При этом по мере работы таймера бегунок плавно возвращается в «состояние покоя» – к начальной отметке оси.

По обе стороны от оси расположены три шкалы (одна – с одной стороны, две – с другой). Первая (она же главная) шкала показывает обратный отсчет времени. По другую сторону оси вторая шкала показывает прямой отсчет времени, а третья – реальное время. Допустим, полный масштаб шкалы таймера – от начальной до конечной точки оси – составляет 3 часа. Тогда на шкале обратного отсчета времени конечная точка постоянно будет помечена цифрой «3», а начальная точка, к которой будет постепенно возвращаться бегунок таймера – цифрой «0» (естественно, на шкале будут и промежуточные деления).

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

Переведите дух. Сварите кофе. Сходите на вечеринку.

Продолжим. Допустим, в 16 часов 45 минут пользователь передвинул ползунок таймера, ориентируясь по шкале обратного отсчета времени на цифру 1.5 (т.е. таймер сработает через полтора часа). Как только пользователь отпустит бегунок, на шкале прямого отсчета времени напротив бегунка появится цифра «0», а в той точке шкалы, в которой бегунок в конце концов остановится (на шкале обратного отсчета это точка «0») появится цифра «1.5».

В свою очередь, на шкале реального времени в точке, из которой бегунок стартует (аккурат напротив нуля на шкале прямого отсчета и «1.2» – на шкале обратного), появится цифра «16.45», а в точке останова (там, где «0» на шкале обратного отсчета и «1.5» – на шкале прямого) появится «18.15».

Знаю, вы теперь ненавидите технических писателей. Зато разночтений не возникнет.

На самом деле пользоваться программой можно будет в буквальном смысле слова на лету. При этом юзер сможет легко, с полувзгляда, ориентироваться сразу в нескольких временных измерениях: сколько времени прошло, сколько осталось, когда был заведен таймер, когда сработает, сколько времени в данный момент. А это значит, что юзер никогда не ошибется – не заведет таймер на время, когда его будут ждать совсем в другом месте либо он должен будет заняться совсем другим делом. Это критически важно, если заводишь таймер раз десять-двадцать в день.

И заключительный аккорд. В разных ситуациях нужен разный масштаб шкалы: иногда 10-минутный или получасовой, иногда – часовой, 3-часовой, 6-часовой, 12-часовой, 24-часовой… Каждый раз при смене масштаба лезть в настройки программы? Слишком долго! Пусть основная шкала (обратного отсчета времени) также меняется динамически: когда пользователь нажал CTRL и перетягивает бегунок влево или вниз – масштаб уменьшается вплоть до минутного, когда же он «тянет время» вверх или вправо – масштаб увеличивается вплоть до 24-часового (в последнем случае, по сути, мы легким движением превращаем удобный таймер в удобный будильник!).

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

Что в следующей версии?

Никогда не занимались тайм-менеджментом? И не занимайтесь – отнимает много времени. Но один прием чрезвычайно полезен: просто записывайте, сколько времени потратили на каждое дело, в том числе на ловлю ворон и копание в музыкальных архивах. Лентяи начинают вовремя сдавать проекты, а трудоголики – вовремя уходить с работы.

Было бы неплохо научить таймер автоматически контролировать распределение времени. Когда пожелаете, вы сможете вывести древовидный лог у себя на экране и проанализировать: сколько времени работали с документами, ходили по сайтам, читали письма? Сколько времени потратили на работу с данным документом, сайтом, письмом (каталогом документов, интернет-зоной, почтой с определенного сервера)? Сколько времени барабанили по клавишам, а сколько – за вас «работал» пиджак, висящий на стуле? После этого в окне «Принудительная экономия времени», вы можете ввести, например, «5%» – и таймер начнет срабатывать на пять процентов раньше и подавать сигнал после длительного простоя компьютера. Только не забудьте про убегающее молоко.





Спасибо всем, кто добавляет мои посты в "Фейсбук"!



...и поднимает их в поиске Gооgle с помощью кнопки "+1"!