2 Limonadni Joe: Не повотряйте ошибку бедняги автор Скрепыша (мерзкого металлического существа, подглядываюшего за мной, когдя я пишу письма. Стучит своей лапой по монитору: "Хей, я вижу вы тут пишете своей любимой интимное письмо, хотите помогу?"). После своего детища, отец Скрепыша сделал пластическую операцию и уехал в Зимбабве...
Хотя, с другой стороны, один из знакомых Алана Купера говорил, что туалет в аэропорту знает о его присутствии больше, чем его настольный компьютер.
С любой стороны, думать нужно о пользователях, а не о "фичах", которыми вы можете наделеть свою программу. Я представил сейчас свою маму, которой бы постоянно предлагалось сохранить макрос. Не доведи Господи, увидеть ей эти ругательства в начале освоения ею компьютера (сейчас уже ее не очень этим напугаешь, но сбить с толку можно).
Я не люблю неуверенные программы-спутники. Если ты сомневаешься, спрашиваешь, точно ли я хочу удалить файл, после того, как я уже нажал кнопку удалить — ты меня раздражаешь. Куда больше заслуживает уважения возможность отменить удаление (посмотрите на gmail, это настоящий друг: если я сказал, что хочу удалить письма навсегда, — он не сомневается в том, что у меня все в порядке с головой, просто удаляет. Но проявляет при этом настоящую заботу, предлагая отменить удаление одним кликом. Не правда ли, замечательно?)
Все это к чему... Пользователи — не тупые существа, которые не знают что делают. Макросы — это больше достояние опытных пользователей, которые сами в состоянии сказать программе что делать. Макросы — это упрощение длинных последовательностей действий пользователя, а длинные последовательности могут свидетельствовать и о непродуманном проектировании взаимодействия. Я не отрицаю их полную ненадобность, всего-лишь против назойливости программ. Я очень уважаю программы, которые уважают меня... и я не одинок
Здравствуйте, Limonadni Joe, Вы писали:
LJ>Критикуем, развиваем.
У кого-то из авторов встречал упоминание чего-то типа "наличие настроек UI в программе отражает неуверенность ее разработчиков в потребностях пользователей"
В этом смысле авто-макрос — признание разработчиков в неспособности самим провести юзабилити-тестирование и укоротить регулярные цепочки действий в монолитные команды.
Оговорюсь: это справедливо не для всех программ. Это справедливо только для тех программ, у которых есть четко выраженная целевая аудитория с хорошо ограниченным набором типичных задач. Для программ с нечеткой целевой аудиторией или большим разнообразием решаемых задач предусмотреть "все кнопки" невозможно. Пример: любая IDE.
На данном этапе для нее не представляется возможным зафиксировать конечный набор раскладок окон и стандартизовать все визуальные настройки. Уж очень широкий спектр задач решает с ее помощью типичный разработчик. Хотя все больше черт задачно-ориентированного UI проникает в IDE: для повторяющихся последовательностей действий изобретаются спец.инструменты типа регекспной замены и рефакторинга, Close All But This...
Я, кстати, не пользуюсь студийными макросами. Наверное, нету у меня существенно повторяющихся последовательностей действий (или пользоваться макросами не умею).
А вот, кстати, и обратный пример: практически единственный макрос, который я регулярно делаю и теряю в ворде — это принудительная простановка всем абзацам, заканчивающимся на ":", свойства "Keep with next". Но это — явная недоработка office team. Это должно быть в опциях на вкладке "Автозамена" и включено бай дефолт. Потому, что если я заканчиваю абзац на двоеточии, 100% за ним пойдет текст, который нужно читать вместе с ним. И, кстати, неясно, смог ли бы авто-макрос отдетектить эту последовательность действий как кандидата: я же делаю Replace All, а не Find Next — Style — Paragraph — Keep with next — Ok — repeat.
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Limonadni Joe, Вы писали:
LJ>А что если программа сама будет отслеживать действия пользователя, отбирать последовательности действий, которые часто повторяются, и предлагать пользователю сгруппировать эти действия в макрос?
Подобные вещи часто встраиваются в продукты Майкрософт и наиболее часто раздражают (меня, по крайней мере). Пример — скрытие редко используемых пунктов меню. Вообще, наверное меня раздражает, когда машина за меня пытается додумывать, что я хочу сделать. У olegart видел такую фразу — что-то вроде "Есть люди, которые считают что машина их умнее. Есть люди, которые считают что они умнее машины. Я себя отношу ко вторым..."
Появилась такая идея. А что если программа сама будет отслеживать действия пользователя, отбирать последовательности действий, которые часто повторяются, и предлагать пользователю сгруппировать эти действия в макрос? Вот, допустим, кликает-кликает пользователь одни и те же кнопочки, а тут ему программа в статусбаре выводит иконку, дескать можно все одним хоткеем выполнить.
Здравствуйте, Limonadni Joe, Вы писали:
LJ>Появилась такая идея. А что если программа сама будет отслеживать действия пользователя, отбирать последовательности действий, которые часто повторяются, и предлагать пользователю сгруппировать эти действия в макрос? Вот, допустим, кликает-кликает пользователь одни и те же кнопочки, а тут ему программа в статусбаре выводит иконку, дескать можно все одним хоткеем выполнить.
LJ>Критикуем, развиваем.
Развиваю. Программа отслеживает действия пользователя, выявляет повторение, предлагает юзеру макрос. Юзер говорит: «Иди на##й». Работает дальше. Программа выявляет ещё повторение, предлагает юзеру макрос. Юзер говорит: «Иди на##й». Работает дальше. Программа выявляет ещё повторение, предлагает юзеру макрос. Юзер говорит: «Иди на##й». Программа выявляет повторение и уходит на##й.
Если говорить серьёзно — нереально. Взять того же Clippy и поисковую собачку в Windows XP…
Здравствуйте, Limonadni Joe, Вы писали:
LJ>Смотря как предложить: одно дело скрепка и другое — если в статусбаре будет просто появляться иконка (вас раздражает, когда броузер отображает иконку о наличии rss-feed?). Пользователь кликает на эту иконку и перед ним список его действий, который можно замакросить.
LJ>Фича — для продвинутых пользоваелей. Задача обучить работе с макросами новичков не стоит.
Продвинутому пользователю будет достаточно написать в хелпе «вот у нас тут есть такая волшебная кнопочка Ctrl+., она записывает макросы».
GW>не слушайте умников в соседних ветках, которые говорят вам, что это GW>сложно и надуманно GW>когда в Excel строишь график с 10-20 линиями очень задалбывает выбирать GW>каждую линию и задавать ей черный шрифт, толстое начертание и размер GW>маркера в 10 пунктов или еще хуже добавлять новые линии
Это ошибка в проектировании интерфейса Ёкселя. Здесь макросы будут всего лишь костылями, вправляющими кривые задние пятки, которыми этот интерфейс писался.
Здравствуйте, FreshMeat, Вы писали:
FM>Сейчас МС идет похожим путем — при установке MC++ 2005 Express, с запуском студии появляется агент предлагающий осуществить запись всех действий пользователя, для последующей отправки журналов в МС, фактически получается прагматичная реализация этой идеи — записываются все действия, но анализировать их будут не хитрые встроенные эвристики, а люди из группы разработчиков MSVS.
Думаю, что там цели совсем другие — это возможность более глубокого анализа ошибок после появления отчета об ошибке, а также сбор статистики использования интерфейса. Не думаю что кто-то в MS озаботится выделением в этих логах общих паттернов с целью создания новых макросов. Проще почитать чего хотят пользователи — например, на форумах C9, чем выявлять то же самое неявно и представлять это под соусом "это для вашего же блага"...
Здравствуйте, nzeemin, Вы писали: N>Думаю, что там цели совсем другие — это возможность более глубокого анализа ошибок после появления отчета об ошибке, а также сбор статистики использования интерфейса. Не думаю что кто-то в MS озаботится выделением в этих логах общих паттернов с целью создания новых макросов. Проще почитать чего хотят пользователи — например, на форумах C9, чем выявлять то же самое неявно и представлять это под соусом "это для вашего же блага"...
Вопрос, конечно, интересный. Возможность получить предысторию при баге — очень хорошо и круто. Нам этого часто не хватает.
Анализ статистики использования интерфейса как раз и может выявлять часто встречающиеся цепочки действий.
Насчет форумов — не уверен. Там есть определенное искажение точки зрения: 80% стонов производятся 20% посетителей. Кроме того, даже самые объективные пользователи зачастую лумают, что они хотят совсем не того, чего они на самом деле хотят Так что LCS-анализ может существенно помочь критически оценить уже известные жалобы пользователей.
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Смотря как предложить: одно дело скрепка и другое — если в статусбаре будет просто появляться иконка (вас раздражает, когда броузер отображает иконку о наличии rss-feed?). Пользователь кликает на эту иконку и перед ним список его действий, который можно замакросить.
Фича — для продвинутых пользоваелей. Задача обучить работе с макросами новичков не стоит.
Здравствуйте, Limonadni Joe, Вы писали:
LJ>Вот, допустим, кликает-кликает пользователь одни и те же кнопочки, а тут ему программа в статусбаре выводит иконку, дескать можно все одним хоткеем выполнить.
Сразу прошу прощенья за грамматические, пунктуационные и синтаксические ошибки, которые вы найдете в моем сообщении — никакого желания его перечитывать и править у меня нету. И еще. Все что будет написано ниже — лишь мое мнение. А мнение мое — это мнение неправильного пользователя. Также мое мнение может содержать дыры, которые я не учел его при написании сообщения.
Напишу все, о чем мы спорили с тобой. И так, пример:
Вот допустим я много раз выполняю 4 последовательностей действий.
Пусть есть кнопки 1, 2, 3, 4, 5, 6, 7.
П1: Жму кнопки — 1, 2, 3, 4.
П2: Жму кнопки — 1, 2, 3, 5.
П3: Жму кнопки — 1, 2, 3, 6.
П4: Жму кнопки — 1, 2, 3, 7.
Зачем мне макрос в этом случае. Тут я вижу явные минусы его использования. Тут идея носит явно отрицательный характер. И так:
Потеря времени на следующие действия:
А) Отвлечься на статусбар.
Б) Смотреть на него некоторое время (пусть даже секунды).
В) Оторвать руку от Клавы (если работа выполнялась с помощью клавиатуры).
Г) Поставить руку на мышь.
Д) Навести на статусбар.
Е) Понять, что от тебя хочет программа (максимум времени).
Ж) Принять решение о использовании или не использовании макроса.
З) Если решение положительное – назначить макросу хоткей.
— если хоткей предлагается программой – принять его или нет.
— если не принимаем хоткей (если есть возможность самому настроить хоткей – я это обязательно делаю сам) – назначить его самому.
И) Запомнить хоткей.
К) Вернуться к работе (восстановить процесс работы, вспомнить на каком месте ты остановился, и что намеревался делать).
Л) Не забыть, что у тебя есть возможность использовать макрос (если макрос только назначен – это существенно). Не забыть его использовать.
Идея имеет смысл только суммарное время, затраченное на ознакомление и настройку макроса, не превышает время, которое бы потратил пользователь, делая все действия вручную. А это может быть только в том случае, если:
А) Действий, которые можно включить в макрос много.
Б) Макрос будет использоваться долгое время.
В) Макрос будет использоваться часто.
Но тут встает ряд вопросов.
А) Если действий в макросе много, то довольно проблематично запомнить все, что он делает, если вы не используете макрос так часто, что можете запомнить все действия, которые он в себя включает.
Б) Если макрос будет использоваться долгое время, но редко, то проблематично запомнить не только действия, которые этот макрос выполняет, но даже то, что он вообще существует.
Также следует обратить внимание на тот факт, что программа, использующая данную идею должна учитывать имеет ли смысл (как то по-человечески выходит) предлагать пользователю макрос, т.е.
А) Примерное суммарное время ознакомления с макросом меньше некоторого среднего времени использования макросов.
Причем среднее время ознакомления должно быть определено согласно количеству действий в макросе, на основе уровня пользователя (который он должен будет указать в настройках программы) и, наконец, согласно исследованию, которое должно показать какое время затрачивает пользователь определенного уровня на знакомство с макрос определенной сложности.
Согласно исследованию же должно быть определено среднее время «жизни макроса».
Т.е. минимальное количество действий, после которых целесообразно предлагать пользователю определенного уровня воспользоваться макросом.
Б) Она должна учитывать сложность и примерное время, затрачиваемое на конкретные действия, а не просто подсчитывать их количество. Т.е. должна быть некоторая иерархия действий, по которым программа, учитывая уровень пользователя, должна считать среднее время и определять нужно ли предложить пользователю воспользоваться макросом.
В голове крутилась еще одна мысль, но она временно ушла в небытие вместе с Pepsi.
Здравствуйте, nzeemin, Вы писали:
N>Подобные вещи часто встраиваются в продукты Майкрософт и наиболее часто раздражают (меня, по крайней мере). Пример — скрытие редко используемых пунктов меню. Вообще, наверное меня раздражает, когда машина за меня пытается додумывать, что я хочу сделать. У olegart видел такую фразу — что-то вроде "Есть люди, которые считают что машина их умнее. Есть люди, которые считают что они умнее машины. Я себя отношу ко вторым..."
Можно предложить еще один вариант — есть умные люди, которым машина помогает
Т.е. если рассматривать не кошмарные реализации (вроде навязчивых скрепышей и пропадающего меню), а саму идею, то она очень даже ничего — например поработав месяцок (неделю, день) в ИДЕ, можно выбрать пункт, в котором будет отражена все история работы в среде и автоматически сформированные предложения о возможных методах оптимизации (открыть дополнительую панельку при отладке, добавить хот-кей, записать макрос и т.д.).
Сейчас МС идет похожим путем — при установке MC++ 2005 Express, с запуском студии появляется агент предлагающий осуществить запись всех действий пользователя, для последующей отправки журналов в МС, фактически получается прагматичная реализация этой идеи — записываются все действия, но анализировать их будут не хитрые встроенные эвристики, а люди из группы разработчиков MSVS.
Limonadni Joe wrote: > Появилась такая идея. А что если программа сама будет отслеживать > действия пользователя, отбирать последовательности действий, которые > часто повторяются, и предлагать пользователю сгруппировать эти действия > в макрос? Вот, допустим, кликает-кликает пользователь одни и те же > кнопочки, а тут ему программа в статусбаре выводит иконку, дескать можно > все одним хоткеем выполнить. > > Критикуем, развиваем.
Идея просто супер!
не слушайте умников в соседних ветках, которые говорят вам, что это
сложно и надуманно
когда в Excel строишь график с 10-20 линиями очень задалбывает выбирать
каждую линию и задавать ей черный шрифт, толстое начертание и размер
маркера в 10 пунктов или еще хуже добавлять новые линии
написать для этого макрос конечно можно, но в следующий раз появляется
что-то новое и полдня уходит на его переписывание
с другой стороны сделать это действие два раза не составляет труда и
если после этого появится некоторый список с историей действий в котором
мышкой можно выделить интересующие действия и сказать сгруппируй и
выполни мне макрос, а потом просто повторять выполнение макроса
при этом мне не требуется, чтобы эта фигня где-то хранилась в шаблонах
или в текущей книге
нужно чтобы это жило до закрытия excel, конечно если я не захочу
сохранить его для дальнейшего использования
да и после этого меньше всего хочется увидеть программу на VBA, а
хотелось бы увидеть просто список действий с осмысленными названиями
Mamut wrote: > Это ошибка в проектировании интерфейса Ёкселя. Здесь макросы будут всего > лишь костылями, вправляющими кривые задние пятки, которыми этот > интерфейс писался.
насчет ошибок в проектировании Excel полностью с вами согласен,
только все сказанное остается в силе
всегда найдется 1001-я последовательность действий, которая не будет
учтена в интерфейсе
например отметить все минимумы/максимумы в строке красным цветом
или что-нибудь в этом роде
GW>насчет ошибок в проектировании Excel полностью с вами согласен, GW>только все сказанное остается в силе GW>всегда найдется 1001-я последовательность действий, которая не будет GW>учтена в интерфейсе GW>например отметить все минимумы/максимумы в строке красным цветом GW>или что-нибудь в этом роде
А это уже увы
... << RSDN@Home 1.2.0 alpha rev. 647>> ... <<Jan Garbarek — Song of Space>> ...
Представьие, вы ведете автомобиль, а он запоминает ваши часто повторяющиеся действия... Вобщем, сильно зависит от софта. Возможность может оказаться и очень интересной. Абстрактно рассуждать невозможно. Во-первых, какие макромы? То ли это запись тыков-чмыкув мышки-клавиатуры, то ли это запись на уровне использования внутренних функций программы. И то и другое может иметь смысл. Если в часто используемый софт встроена возможность анализа часто повторяющихся действий, это может быть кому-то очень интересно само по себе, а кого-то может дико напугать. Вобщем, это не абстрактный вопрос. И довольно скользкий для коммерческого софта.
Мне нравится удобная и ненавязчивая реализация "макросов" в 3d-софте Maya. Maya — это по сути интерпрететор языка mel (mel — ее скрипт). Каждое действие пользователя генерирует набор команд mel. В этом смысле все ее UI-элементы — это макросы (на пункты меню и пр. заряжены команды mel). В любой момент мы можем открыть окошко-консоль, в которое выdодятся выполненные команды mel, выделить нужную группу команд (как в текстовом редакторе) и сделать их drag-n-drop на тулбар. На тулбаре появится новая кнопка. Все это можно будет отредактировать руками при необходимости. При большом желании можно вставить этот макрос и как пункт меню, повесить на хоткей, сделать новую команду mel, чтобы вызвывать ее из коммандной строки и из других макросов и т.д.