Все равно придется ждать?

О вреде немодальноно отображения хода процесса

В руководстве Microsoft по разработке пользовательских интерфейсов предлагается такой критерий для применения немодального отображения хода процесса:

If users can do something productive while the operation is in progress, provide modeless feedback.

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

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

Начну с пары примеров. Первый пример — самый распространенный: загрузка операционной системы. Windows старается показать рабочий стол как можно раньше, чтобы казалось, что загрузка идет быстрее. На практике же не смотря на то, что после появления рабочего стола можно сразу куда-то нажимать, некоторые программы еще продолжают загружаться и система «тормозит». Более того, если нетерпеливо кликнуть и запустить что-нибудь до того, как программы из автозагрузки закончат шуршать винчестером, суммарное время ожидания только учвеличится. Поэтому ускорение загрузки на самом деле в некоторой степени мнимое.

Второй пример — окно проводника в Vista, которое что-то делает после открывания. Казалось бы, по файлам можно щелкать пока готовятся эскизы. На самом деле нет: во время хода этого процесса порядок файлов иногда меняется. Бывает, файлы упрыгивают из-под мышки.


Пока зеленый индикатор не доедет до конца, я все равно не могу ничего делать

Раздражение

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

Реальная производительность

Мой скромный опыт разработки ПО говорит о том, что у некоторых длительных операций, в процессе которых что-то динамически меняется на экране, на перерисовку экрана может уходить довольно значительная доля времени. Нужно контролировать время на перерисовку. Иногда оказывается, что убрав мнимую интерактивность появления/обновления элементов на экране по одному можно весьма существенно уменьшить итоговое время загрузки. Однако в действительности все немного не так, как на самом деле. Оценка времени «торможения» программы делается людьми без секундомера, и потому более длительный «интерактивный» процесс может казаться более быстрым, чем более короткий процесс без такой анимации.

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

Electriq Saturday 26 March 2011 at 11:27 am | | Russian | Four comments

Я всегда раскрываю панель «дополнительно»,

Или «неправильное применение идиомы Extras on Demand»

Никто не любит интерфейсную идиому пошагового «мастера» (Wizard), правда? (Если вы любите, то поднимите руку). То, что «мастер» — штука занудная — для меня понятно. Но есть еще одна вещь, которая вызывает у меня похожее отторжение, но я никак не могу решиться назвать ее откровенно плохой. Это шаблон «дополнения по требованию» (Extras on Demand). Когда в окне есть кнопка «дополнительно» или «еще», которая выдвигает необязательные опции. Но что такое «необязательные опции», и так ли они необязательны? Попробую разобраться в себе.

Read more →

Electriq Monday 17 January 2011 at 10:35 pm | | Russian | Four comments

Компьютер приходит в лифт

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

Electriq Monday 17 January 2011 at 9:23 pm | | Russian | No comments

О лишних действиях в интерфейсах

Зачем программе спрашивать то, что очевидно?

Вернемся к моему лазерному принтеру, вернее, ксероксу, то есть МФУ. У него есть режим энергосбережения-сна, в который он автоматически «впадает», если им не пользоваться в течение примерно 10 минут. Все очень логично: если я печатаю подряд, то принтер стоит прогретый, и страница вылезает сразу. Если я не печатаю какое-то время, то нагрев термобарабана отключается для экономии. Но есть одно неудобство.

Read more →

Electriq Thursday 13 January 2011 at 5:37 pm | | Russian | No comments

Путаница кнопок Cancel и Close

Слово Cancel частенько нужно заменить на Close!

Мало-мальски сложное диалоговое окно должно иметь кнопку «Закрыть», которая дополняет стандартный крестик в заголовке и точно указывает действие, которое при этом произойдет. На таких кнопках обычно пишут Cancel (Отмена) или Close (Закрыть), причем вариант Cancel уместен не всегда, но встречается чаще. Попробуем разобраться на примерах.

Read more →

Electriq Wednesday 12 January 2011 at 12:03 am | | Russian | Two comments

Сложность, доступная вам

— девиз ПО для гиков

«Ведь вы этого достойны!» :)

Electriq Friday 07 January 2011 at 5:26 pm | | Russian | No comments

Программы и культура

Компьютеры должны помогать людям делать красиво и правильно

Очень часто при разработке графического или текстового редактора основной установкой проектировщиков является следующее: «Программа должа позволять пользователю делать все, что ему угодно». Такой программе нет разницы, делает пользователь правильно, или нет: ведь вся отвественность лежит на нем.

На мой взгляд, правильные и ответственные программы имеют иной девиз: «Программа должна направлять людей на правильные действия, стараться вести к красоте, помогать поддерживать порядок, но иногда должна позволять отойти от правил».

Что я имею в виду?

Read more →

Electriq Monday 03 January 2011 at 8:22 pm | | Russian | No comments

Класть трубку — дело ответственное

О функциях кнопки завершения вызова

В большинстве сотовых телефонов кнопка завершения вызова «заодно» имеет функцию клавиши Esc: она позволяет выходить из меню и отказываться от выбора пунктов. Такое поведение имеет существенный недостаток: если во время навигации по меню вам звонят, высока вероятность сбросить звонок положив трубку. Со мной такое бывает, причем не так уж редко (если у вас тоже — напишите комментарий!). Сообщение о звонке появляется внезапно, и палец, нависший над кнопкой завершения вызова для выхода из меню, уже опускается и по инерции нажимает на нее. Инерционности тут добавляет и «задумчивость» современных телефонов: я мог нажать кнопку секунду назад, но она сохранилась в буфере клавиатуры и передалась в приложение только сейчас, когда на экране появилось сообщение входящем вызове.

Read more →

Electriq Monday 03 January 2011 at 8:08 pm | | Russian | One comment

Телефоны морочат людям голову

О неудобном ПО сотовых телефонов и нестабильности интерфейсов

Я довольно часто ругаюсь на различные программы, прошитые в сотовые телефоны, и вот, пользуясь очередным поводом, решил написать еще одну заметку.

Эта история началась с того, что меня попросили перевести часы в телефоне Samsung на зимнее время. Хозяйка телефона знала, как и я, что это делается в настройках, но тем не менее, установки часов найти там не смогла. Где же оказалась запрятана эта функция, и что я думаю о меню телефона в целом — читайте далее.

Read more →

Electriq Monday 08 November 2010 at 11:55 pm | | Russian | No comments

Загадочные Normal, Auto и Default

или "Программа для нормальных людей"

Для нормальных волос

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

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

Аналогичным образом ведут себя многие программы.

Read more →

Electriq Wednesday 27 October 2010 at 12:25 pm | | Russian | No comments

Знак и множитель в FFT в различных программах

Сведем путаницу в знаках в одну таблицу

Формулировка преобразования Фурье всегда содержит в себе две вольности: это знак (+/−) в экспоненте и выбор множителей перед прямым и обратным преобразованием. В прямом и обратном преобразованиях знаки должны быть противоположными, а произведение множителей в прямом и обратном преобразованиях должно дать 1/N, где N — число точек в массиве.

Вот один из примеров задания прямого и обратного преобразований Фурье:

 
Прямое преобразование

Обратное преобразование

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

Read more →

Electriq Thursday 14 October 2010 at 12:07 pm | | Russian | No comments
Used tags: ,

Ошибки GTK+ Java lnf для Swing на Linux/Unix

или почему MagicPlot использует Metal look-and-feel на *nix-системах

По умолчанию любая программа, написанная на Java и основанная на графической библиотеке Swing, отображается с использованием стандартного look-and-feel (skin) под названием Metal. Metal разрабатывался в 90-х и сейчас считается устаревшим. Он имеет упрощенные формы, при этом быстро работает, но создает у пользователя не слишком хорошее впечатление в сравнении с внешним видом других программ. На замену стандартному look-and-feel можно включить системный, который очень точно копирует внешний вид и поведение компонентов операционной системы.

Системный look-and-feel под Windows и Mac OS X выглядит очень убедительно и работает достаточно гладко. На большинстве Linux/Unix компьютеров системным look-and-feel в Java является GTK+. Когда я увидел GTK+ look-and-feel на линуксе (Ubuntu 9), мое первое впечатление было положительным. Но в последствии выяснилось, что не смотря на кажущуюся красоту, по вине разработчиков нормально работать с GTK+ look-and-feel не представляется возможным. В этой заметке я приведу некоторые замеченные мной глюки, наличие которых привело к тому, что мне пришлось "вручную" отключить GTK+ L&F в MagicPlot.

Read more →

Electriq Wednesday 06 October 2010 at 10:29 am | | Russian, Java | Two comments
Used tags: , ,