Сообщения об ограниченных правах
От: FLUID Украина http://yuriy-okhmat.blogspot.com/
Дата: 02.08.06 12:52
Оценка:
Доброго времени суток.
Есть некоторый функционал в приложении, который пользователю недоступен из-за ограниченности его прав, например, у пользователя недостаточно прав на удаление или на редактирование файла, как, с точки зрения юзабили правильно поступить, заблокировать кнопку "Delete" или же уведомлять о невозиожности выполнения операции окном предупреждения?
Спасибо.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Мы не владеем тем, чего мы не понимаем....
Re: Сообщения об ограниченных правах
От: Master Yoda Великобритания  
Дата: 02.08.06 13:01
Оценка: 1 (1)
Здравствуйте, FLUID, Вы писали:

FLU>Есть некоторый функционал в приложении, который пользователю недоступен из-за ограниченности его прав, например, у пользователя недостаточно прав на удаление или на редактирование файла, как, с точки зрения юзабили правильно поступить, заблокировать кнопку "Delete" или же уведомлять о невозиожности выполнения операции окном предупреждения?


Есть еще третий вариант — скрыть эту кнопку.

В винде в таких случаях дизаблят, только что проверил.

Но имхо если дизаблить то хотя бы надо дать возможность пользователю узнать, почему эта операция невозможно (в всплывающем хинте или рядом с контролом)
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
It is always bad to give advices, but you will be never forgiven for a good one.
Oscar Wilde
Re: Сообщения об ограниченных правах
От: adontz Грузия http://adontz.wordpress.com/
Дата: 02.08.06 13:14
Оценка:
Здравствуйте, FLUID, Вы писали:

Я бы выключил кнопку (но пусть остатся видимой, чтобы было понятно что в принципе, при некоторых условиях, эта фукнциональность работает) и где-то рядом (можно и во всплывающей подстказке, но это гораздо хуже) написал почему кнопка выключена.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re: Сообщения об ограниченных правах
От: Centaur Россия  
Дата: 02.08.06 13:28
Оценка: 5 (2) +2
Здравствуйте, FLUID, Вы писали:

FLU>Есть некоторый функционал в приложении, который пользователю недоступен из-за ограниченности его прав, например, у пользователя недостаточно прав на удаление или на редактирование файла, как, с точки зрения юзабили правильно поступить, заблокировать кнопку "Delete" или же уведомлять о невозиожности выполнения операции окном предупреждения?


Кнопка должна быть активна. При нажатии на неё должна предприниматься попытка удаления. Если удаление обломалось с соответствующим кодом ошибки, исключением или чем там принято сигнализировать облом — показать пользователю извинение.

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

За примерами далеко ходить не надо. В Windows 2000/XP простому пользователю по умолчанию не разрешается менять системное время. Когда он тыкает в часы на taskbar’е, ему говорят «у вас нет прав менять время». Он только хотел календарь посмотреть и нажать Cancel, а переводить часы вовсе и не собирался. Но Explorer проверил его права задолго до того, как он попытался сделать недозволенную операцию, и не дал посмотреть, на какой день недели в этом году падает день гранёного стакана.
Re[2]: Сообщения об ограниченных правах
От: Aera Беларусь  
Дата: 02.08.06 13:50
Оценка: 1 (1) +3 -1
Здравствуйте, Centaur, Вы писали:

C>Здравствуйте, FLUID, Вы писали:


FLU>>Есть некоторый функционал в приложении, который пользователю недоступен из-за ограниченности его прав, например, у пользователя недостаточно прав на удаление или на редактирование файла, как, с точки зрения юзабили правильно поступить, заблокировать кнопку "Delete" или же уведомлять о невозиожности выполнения операции окном предупреждения?


C>Кнопка должна быть активна. При нажатии на неё должна предприниматься попытка удаления. Если удаление обломалось с соответствующим кодом ошибки, исключением или чем там принято сигнализировать облом — показать пользователю извинение.


Нет.

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

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

Кнопка должна всем своим видом показывать наличие либо отсутствие прав на изменение. А при изменении прав должен автоматически меняться вид кнопки.
--
RedApe
Re: Сообщения об ограниченных правах
От: nzeemin Россия http://nzeemin.livejournal.com/
Дата: 02.08.06 13:55
Оценка: +2
Здравствуйте, FLUID, Вы писали:

FLU>Есть некоторый функционал в приложении, который пользователю недоступен из-за ограниченности его прав, например, у пользователя недостаточно прав на удаление или на редактирование файла, как, с точки зрения юзабили правильно поступить, заблокировать кнопку "Delete" или же уведомлять о невозиожности выполнения операции окном предупреждения?


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

Особый случай — демо-версия программы. В демо-версии лучше все ссылки и кнопки, даже неработающие, показывать так же как и в рабочей версии. Но при выполнении операции выдавать сообщение вида "эта функциональность в демо-версии отключена".
Re[2]: Сообщения об ограниченных правах
От: Кодёнок  
Дата: 02.08.06 14:10
Оценка: +2
Здравствуйте, Master Yoda, Вы писали:

MY>Есть еще третий вариант — скрыть эту кнопку.


MY>В винде в таких случаях дизаблят, только что проверил.


MY>Но имхо если дизаблить то хотя бы надо дать возможность пользователю узнать, почему эта операция невозможно (в всплывающем хинте или рядом с контролом)


Я так думаю:

Если кнопка во время работы программы при каких-то особых условиях может стать доступной — должна быть disabled.

Еcли она ни при каких условиях не будет доступна, по крайней мере во время работы программы — то можно и скрыть.

Т.е. в течение одного сеанса работы с программой ничего не должно волшебным образом появляться и исчезать.
Re[3]: Сообщения об ограниченных правах
От: Centaur Россия  
Дата: 02.08.06 14:40
Оценка: 1 (1)
Здравствуйте, Aera, Вы писали:

A>Вам не кажется, что это оскорбительно с точки зрения пользователя? Компьютер знает, есть ли у пользователя необходимые права, но не скажет, пока пользователь не нажмет на кнопку.


Компьютер не знает, есть ли у пользователя права, пока не попробует выполнить операцию. А пробовать удалять файлы, пока пользователь не нажмёт на кнопку — вот это уже оскорбительно.

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


Это дорого. Файл лежит на удалённом ftp-сервере через диалапный канал на 2400 без коррекции.

A>Кнопка должна всем своим видом показывать наличие либо отсутствие прав на изменение. А при изменении прав должен автоматически меняться вид кнопки.


Вот у меня тут каталог, в нём 25000 файлов. Я на него рекурсивно ставлю права: Everyone +Read. На мне висит 10 юзеров, которые могут в любой момент попросить у меня любой из этих файлов. Соответственно, я должен разослать этим 10 юзерам сообщение о том, что им теперь разрешено читать такие-то и такие-то файлы?
Re[4]: Сообщения об ограниченных правах
От: Aera Беларусь  
Дата: 03.08.06 08:48
Оценка:
Здравствуйте, Centaur, Вы писали:

C>Здравствуйте, Aera, Вы писали:


A>>Вам не кажется, что это оскорбительно с точки зрения пользователя? Компьютер знает, есть ли у пользователя необходимые права, но не скажет, пока пользователь не нажмет на кнопку.


C>Компьютер не знает, есть ли у пользователя права, пока не попробует выполнить операцию. А пробовать удалять файлы, пока пользователь не нажмёт на кнопку — вот это уже оскорбительно.


Почему? Разве нельзя определить наличие прав у пользователя не выполняя операции?

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


C>Это дорого. Файл лежит на удалённом ftp-сервере через диалапный канал на 2400 без коррекции.


A>>Кнопка должна всем своим видом показывать наличие либо отсутствие прав на изменение. А при изменении прав должен автоматически меняться вид кнопки.


C>Вот у меня тут каталог, в нём 25000 файлов. Я на него рекурсивно ставлю права: Everyone +Read. На мне висит 10 юзеров, которые могут в любой момент попросить у меня любой из этих файлов. Соответственно, я должен разослать этим 10 юзерам сообщение о том, что им теперь разрешено читать такие-то и такие-то файлы?


Исходная задача формулировалась как проверить возможность удаления _одного конкретного файла_.
--
RedApe
Re[5]: Сообщения об ограниченных правах
От: Centaur Россия  
Дата: 03.08.06 10:21
Оценка: :)
Здравствуйте, Aera, Вы писали:

C>>Компьютер не знает, есть ли у пользователя права, пока не попробует выполнить операцию. А пробовать удалять файлы, пока пользователь не нажмёт на кнопку — вот это уже оскорбительно.


A>Почему? Разве нельзя определить наличие прав у пользователя не выполняя операции?


Можно. Но бессмысленно. Потому что через 317 миллисекунд процесс, который занимал файл в эксклюзивном режиме, завершится, и права появятся, а мы об этом не узнаем.

A>Исходная задача формулировалась как проверить возможность удаления _одного конкретного файла_.


Хорошо. Пусть у меня есть файлменеджер. Пусть также у него на тулбаре есть две кнопки. Одна Copy, другая Delete. И пусть Copy копирует информацию о файле в буфер, чтобы по нажатию Paste в другом каталоге скопировать файл туда. А Delete пусть запрашивает подтверждение и в случае положительного ответа удаляет файл.

Вот, а теперь представим себе диалог между этим файлменеджером и сервером, где лежат файлы.

Клиент: Сервер, привет! Тут у меня Вася сидит. Ткнул в файл foo.txt. Слушай, а у него есть права его читать?
Сервер: Неа.
Клиент: (запрещает кнопочку Copy) Ладно, а удалять?
Сервер: Неа.
Клиент: (запрещает кнопочку Delete)
Вася: (нажимает стрелку вниз)
Клиент: А файл food.txt у него есть право читать?
Сервер: Есть.
Клиент: (разрешает кнопочку Copy) А удалять?
Сервер: Неа.
Вася: (продолжает держать стрелку вниз)
Клиент: А gronk.txt нам можно читать?
Сервер: Неа.
Клиент: (запрещает кнопочку Copy) А удалять?
Сервер: Можно.
Клиент: (разрешает кнопочку Delete)
Вася: (отпускает стрелку вниз, смотрит на кнопочку Copy) А чё это? А чё, прав нет, что ли? (в аську) Петя, а чё у меня прав на gronk.txt нет?
Петя: (наруливает Васе права) Упс, косяк. Пробуй ещё.
Вася: (ждёт)
Клиент: (ноль внимания)
Вася: (ждёт)
Клиент: Извините, я на вас забил.
Вася: (нетерпеливо нажимает стрелки вверх-вниз)
Клиент: Сервер! А у нас есть права на food.txt? Ой, уже не надо, он обратно на gronk.txt ушёл!
Сервер: Бл[ин], да за[дёрг]ал ты уже! Есть.
Клиент: (разрешает кнопочку Copy) А удалять?
Сервер: Есть! РРрррр…
Вася: (тыкает кнопочку Copy)
Клиент: (запоминает путь к gronk.txt в буфере)
Вася: (открывает новое окно, набирает в адресной строке: \\server\share\path)
Клиент: Сервер! Дай листинг \share\path.
Сервер: Да нет там ничего.
Клиент: А мы там создавать файлы умеем?
Сервер: Умеем.
Клиент: (разрешает кнопочку Paste)
Вова: (тихо подкрадывается и удаляет файл gronk.txt)
Вася: (тыкает кнопочку Paste)
Клиент: Дай gronk.txt!
Сервер: Какой gronk.txt, ты о чём вообще?
Клиент: Вась, прикинь, его нет уже там…

При этом нужно учитывать, что каждое обращение «вопрос/ответ» к серверу занимает, ну, скажем, 10 миллисекунд (Петя, когда сетку прокладывал, на гигабит поскупился, сидим на 10 мегабитах). Вася, зажавший стрелку вниз, генерирует события «выделен очередной файл» раз в 33 миллисекунды. Если ещё и качество линии не идеальное, то тормоза будут вполне ощутимые. А уж о нагрузке на сеть и говорить нечего.
Re[6]: Сообщения об ограниченных правах
От: Aera Беларусь  
Дата: 03.08.06 11:29
Оценка:
Здравствуйте, Centaur, Вы писали:

C>Здравствуйте, Aera, Вы писали:


C>>>Компьютер не знает, есть ли у пользователя права, пока не попробует выполнить операцию. А пробовать удалять файлы, пока пользователь не нажмёт на кнопку — вот это уже оскорбительно.


A>>Почему? Разве нельзя определить наличие прав у пользователя не выполняя операции?


C>Можно. Но бессмысленно. Потому что через 317 миллисекунд процесс, который занимал файл в эксклюзивном режиме, завершится, и права появятся, а мы об этом не узнаем.


Если будем опрашивать раз в, скажем, 3 секунды — узнаем.

A>>Исходная задача формулировалась как проверить возможность удаления _одного конкретного файла_.


C>Хорошо. Пусть у меня есть файлменеджер. Пусть также у него на тулбаре есть две кнопки. Одна Copy, другая Delete. И пусть Copy копирует информацию о файле в буфер, чтобы по нажатию Paste в другом каталоге скопировать файл туда. А Delete пусть запрашивает подтверждение и в случае положительного ответа удаляет файл.


_Внимательно_ прочитай что я написал. Спрашивать права нужно только у одного единственного текущего файла раз в 3 секунды. Плюс кэширование в течении 3 секунд, плюс задержка на запрос при изменении текущего файла. Итого имеем запрос к клиенту один раз в 3 секунды. Это большая нагрузка?

Зато пользователь чувствует, что системе не наплевать не него. Система сообщает пользователю информацию _до того_ как она ему понадобиться.

Хотя сознаюсь, что если бы я писал файловый менеджер (или что-то подобное) я бы сделал по тупому — через диалоговое окно.
--
RedApe
Re[6]: Сообщения об ограниченных правах
От: Patalog Россия  
Дата: 03.08.06 13:41
Оценка:
Здравствуйте, Centaur, Вы писали:

хъ

C>Вася, зажавший стрелку вниз, генерирует события «выделен очередной файл» раз в 33 миллисекунды.


Ваабще-то программы, которые таким образом реагируют на "стрелку вниз" — ф топку.
Неужели сложно взвести какой-нить таймер, дабы убедиться, что пользователь действительно виделил элемент,
а не просто скачет по списку туда-сюда?
... << RSDN@Home 1.2.0 alpha rev. 648>>
Почетный кавалер ордена Совка.
Re[7]: Сообщения об ограниченных правах
От: Centaur Россия  
Дата: 03.08.06 15:43
Оценка: +1
Здравствуйте, Aera, Вы писали:

C>>Хорошо. Пусть у меня есть файлменеджер. Пусть также у него на тулбаре есть две кнопки. Одна Copy, другая Delete. И пусть Copy копирует информацию о файле в буфер, чтобы по нажатию Paste в другом каталоге скопировать файл туда. А Delete пусть запрашивает подтверждение и в случае положительного ответа удаляет файл.


A>_Внимательно_ прочитай что я написал. Спрашивать права нужно только у одного единственного текущего файла раз в 3 секунды. Плюс кэширование в течении 3 секунд, плюс задержка на запрос при изменении текущего файла. Итого имеем запрос к клиенту один раз в 3 секунды. Это большая нагрузка?


Это нагрузка и трафик. Я бы не хотел оставить такой файлменеджер на ночь подключенным к ftp-серверу в Интернете.

A>Зато пользователь чувствует, что системе не наплевать не него. Система сообщает пользователю информацию _до того_ как она ему понадобиться.


Система сообщает пользователю информацию, которая ему не нужна? Это называется спам.

Система должна делать то, что попросили, и тогда, когда попросили, а не заниматься самодеятельностью и неправильным предугадыванием желаний пользователя.
Re[7]: Сообщения об ограниченных правах
От: Centaur Россия  
Дата: 03.08.06 15:55
Оценка:
Здравствуйте, Patalog, Вы писали:

C>>Вася, зажавший стрелку вниз, генерирует события «выделен очередной файл» раз в 33 миллисекунды.


P>Ваабще-то программы, которые таким образом реагируют на "стрелку вниз" — ф топку.

P>Неужели сложно взвести какой-нить таймер, дабы убедиться, что пользователь действительно виделил элемент,
P>а не просто скачет по списку туда-сюда?

А кто будет определять значение задержки для таймера?

Я бы ещё условно согласился, если бы права перечитывались исключительно по моему нажатию Refresh.
Re[8]: Сообщения об ограниченных правах
От: Patalog Россия  
Дата: 04.08.06 05:08
Оценка:
Здравствуйте, Centaur, Вы писали:

хъ

C>А кто будет определять значение задержки для таймера?


Тот, кто пишет программу. В данном случае опред. скорость соеденения, или, на худой конец, вынести это внастройки типа LAN\ISDN\Modem 9600
и исходя из этого ставить задержки.

C>Я бы ещё условно согласился, если бы права перечитывались исключительно по моему нажатию Refresh.


Тоже вариант.
... << RSDN@Home 1.2.0 alpha rev. 648>>
Почетный кавалер ордена Совка.
Re[9]: Сообщения об ограниченных правах
От: Аноним  
Дата: 06.08.06 03:37
Оценка:
Мне больше нравится прятать кнопки, коль речь идет именно о правах, а не режимах работы.
Права — это безопасность, следовательно пользователь не должен видеть лишнюю информацию на экране.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.