typechecker: (самокат)
[personal profile] typechecker
Несколько дней назад в ABBYYевой маршрутке я в лицо познакомилась со своей френдом по имени [livejournal.com profile] baghera. А сегодня в маршрутке был еще и [livejournal.com profile] asd, с которым я тоже дружила (френжила?) пока только виртуально.
Оба -- замечательные.
Отчасти, например, потому, что а) показали мне столовую, б) не послали меня подальше, когда я за едой завела нудеж об хранении и синхронизации файлов.
В процессе нудежа был озвучен такой вопрос. Ясно, что запросы на подтверждение удаления (а также переименования, копирования и т.д.) пользователь, как правило, подтверждает совершенно машинально, потому что привык к ним. Реализована ли где-нибудь такая мулька: запрос выглядит каждый раз по-разному -- то красный, то зеленый, то крупным шрифтом, то мелким, -- чтобы он действительно привлекал к себе внимание? Если да, то где? Если нет, то нужна ли такая возможность?

Date: 2004-09-23 03:43 pm (UTC)
From: [identity profile] vap.livejournal.com
Закончится тем, что пользователь будет не думая шмякать не только на обычные запросы подтверждения, но и вообще на все окошки независимо от их внешнего вида :)))
Если немного помечтать: думаю, что оптимально было бы сделать функцию "отмены последнего подтверждения". Или даже целый стек доступных для отмены подтверждений. Но в нынешней парадигме это труднореализуемо - внутри прикладной программы еще можно этого достичь, но многие системные операции просто не подразумевают возможности их отмены.
[ехидствуя над собой] Ага, и будут выскакивать запросы вида "Вы уверены, что хотите подтвердить отмену подтверждения отмены только что подтвержденного удаления файла X?" :)

Date: 2004-09-23 03:54 pm (UTC)
From: [identity profile] max-ushakov.livejournal.com
system-wide undo -- тут всё время об этом Беркгаут говорит :)
Отмена последнего действия, даже удаления файла -- это было бы правильно.

Date: 2004-09-23 04:29 pm (UTC)
From: [identity profile] vap.livejournal.com
А Беркгаут - это кто?

Насчет system-wide undo - имхо, это тяжело реализовать на нынешних операционных системах. По крайней мере, без необходимости накручивать на систему еще один слой абстракции между ядром и пользовательским окружением.

Date: 2004-09-23 06:02 pm (UTC)
From: [identity profile] gogabr.livejournal.com
А как должен выглядеть system-wide undo в многопользовательской системе?

Date: 2004-09-23 06:16 pm (UTC)
From: [identity profile] mashaaaa.livejournal.com
Так если она многопользовательская, то всякое действие совершается каким-либо пользователем, который может отменять только свои действия.

Date: 2004-09-23 06:26 pm (UTC)
From: [identity profile] gogabr.livejournal.com
Но что если какое-либо действие другого пользователя уже сделано с учетом отменяемого?
Это означает, что такой undo будет не откатом во времени, а именно "обратным действием" -- простая метафора не работает.

Date: 2004-09-23 07:02 pm (UTC)
From: [identity profile] mashaaaa.livejournal.com
А сохранять состояние системы на каждый момент перед измемением? В этом же вся фенька, или я что-то не так понимаю?
Пусть бы уже, действительно, пришел какой-нибудь лесник в духе Беркгаута и меня прогнал.

Date: 2004-09-23 08:47 pm (UTC)
From: [identity profile] gogabr.livejournal.com
Вот ровно это-то и не получится. Потому что при восстановлении старого состояния отменятся все действия других пользователей, произведенные со времени твоего отменяемого. Пример -- в следующем комменте [livejournal.com profile] vap.
Вообще же:
1. Как правило, undo устроен не так. Потому что обычно состояние системы большое, а изменение маленькое. Представь себе, что ты редактируешь мегабайтный файл и стерла в нем букву. Так, как ты описываешь, придется хранить текущее состояние файла плюс такое же огромное предыдущее (и так на всю глубину undo). На самом деле достаточно запомнить, что это была за буква и где стояла.*
2. Видимо, идея undo в принципе хорошо подходит далеко не ко всем программам. Она идеальна, когда есть активный пользователь и пассивные данные, с которыми он работает и которые не меняются без его ведома. А как только начинается взаимодействие с внешним миром, undo теряет смысл. Что такое, например, undo в чате?
3. Как только система становится многопользовательской, даже обычные файлы оказываются активной средой -- с ними работают другие.
---
*Примечание для программистов: с другой стороны, редактор может быть построен на каких-нибудь Окасакинских (http://www-2.cs.cmu.edu/~rwh/theses/okasaki.pdf) структурах -- и тогда, действительно, достаточно сохранять копию, и больших потерь не будет, поскольку большая часть структуры разделяется.

Date: 2004-09-24 01:46 pm (UTC)
From: [identity profile] mashaaaa.livejournal.com
Унду в чате -- это чтобы равносильно команде: "Данную фразу в лог не записывать!"
Унду в системе типа uupc -- чтобы равносильно стиранию письма перед отправкой, пока оно лежит-копится в спуле. %-)

Date: 2004-09-23 07:56 pm (UTC)
From: [identity profile] vap.livejournal.com
Интересная задачка.
Ну, например, можно ввести понятие "общение с внешним миром". То есть, все действия, приводящие к выдаче некоторого внешнего воздействия (внешнего по отношению к выч. системе и пользователю), не могут быть откатываемыми (или могут быть, но только в той части, которая "осталась" внутри выч. системы). Тогда все действия, "пересекающие" границы "выч. система + один ее пользователь" объявляются внешними воздействиями и их результаты не откатываются. Пример - в /tmp лежал файл, пользователь 1 его стер, пользователь 2 решил его открыть и обломался, пользователь 1 отменил удаление файла. Файл обратно появился, но пользователь 2 уже успел обломаться.

Date: 2004-09-23 08:52 pm (UTC)
From: [identity profile] gogabr.livejournal.com
В таком случае для пользователя оказывается трудно -- а заранее просто невозможно, -- предсказать, какие действия будут отменимыми, а какие нет.
Кроме того, одно неотменимое действие закрывает доступ ко всем отменимым, которые были до него.
Беркгаут, ау! Сне-гу-роч-ка!

Date: 2004-09-27 10:22 am (UTC)
From: [identity profile] besm6.livejournal.com
Пользователь 2 может попробовать и еще раз. Мне сразу вспомнилось эмпирическое правило Витуса Вагнера про то, что время устаревания кэша отрицательной информации в мире Open Source - около полугода. Вот ровно то самое, но в действительности. Живем же.

Date: 2004-09-27 10:57 am (UTC)
From: [identity profile] mashaaaa.livejournal.com
Ой, тогда нормальной работы не будет, а все только будут тыкать в кнопку "отменить", -- кто кого перетыкает...
А нельзя так: Вася стирает файл, а он на самом деле остается гдубоко в системе -- в последней версии. Потом Петя открывает файл на запись, а ему система говорит: знаешь, файл я тебе открыть могу, но вообще-то его Вася уже стер. Хочешь -- восстанавливай, редактируй. Петя говорит: давай, хочу. Потом Вася говорит системе: а восстанови-ка мне файл! А система ему: тебе как, в твоей версии, как было перед удалением, или в Васиной новой? Дальше разбираются Петя с Васей лично.

Date: 2004-09-27 12:15 pm (UTC)
From: [identity profile] besm6.livejournal.com
Ну, в жизни-то мы и посложнее задачки решаем. Да и тот же CVS, о котором тут же рядом шла речь, в условиях конкурентной разработки - внесли мы с коллегой пару изменений, а они возьми и подерись (что характерно, могли и не подраться). Ну и что? Кто первый встал, того и грабли. Резолвит конфликт и продолжает. Нормально работается. В обычной жизни, к которой CVS не прикрутишь, тяжелее. Но тоже лечится, и тоже порой результат ошибочного действия исправляется. Не всегда путем Undo :-), но и не всегда путем создания того, что надо, с нуля.

Грубо говоря, в качестве примера могу привести переставление стула в комнате из одного положения в другое. Что, никогда не случалось видеть, как муж переносит обратно стул, который ты 10 минут назад оттуда переставила? И что, в итоге работа кончается, и начинается перетягивание стула?

Я, впрочем, не имел в виду, что система достанет Пете файл, удаленный Васей. Я имел в виду, что система расскажет Пете, что файл удален. Если Петя знает, что он там был, и имеет право его восстановить - результатом будет восстановленный файл, и Васе скажут "ваш файл восстановлен еще вчера". Если не имеет права (в нашем исходном примере, с /tmp - не имеет) - он может вступить во взаимодействие с Васей уже на этом этапе. Если этого почему-то не получилось, он может попробовать еще раз послезавтра - вдруг Вася завтра решит его восстановить?

совсем в дебри ущли

Date: 2004-09-27 08:25 pm (UTC)
From: [identity profile] mashaaaa.livejournal.com
Так это и получается перетягивание стула вместо работы, разве нет?

Re: совсем в дебри ущли

Date: 2004-09-28 01:41 pm (UTC)
From: [identity profile] besm6.livejournal.com
А, то есть у вас дома именно так все запущено? Не, у нас без труда и очень быстро получается договоренность, и работа идет дальше.

Re: совсем в дебри уШли

Date: 2004-09-28 01:46 pm (UTC)
From: [identity profile] mashaaaa.livejournal.com
У нас дома ничего не запущено, я же над своими файлами одна работаю. Я-то говорила про Ваш пример:

...Если этого почему-то не получилось, он может попробовать еще раз послезавтра - вдруг Вася завтра решит его восстановить?

Это же общее рассуждение, а не про конкретною ситуацию.

Re: совсем в дебри уШли

Date: 2004-09-28 02:54 pm (UTC)
From: [identity profile] besm6.livejournal.com
Я недаром привел пример со стулом. Как пример того, что у нормальных людей описанная ситуация не приводит к перетягиванию каната вместо работы. Из того, что ты продолжаешь упорствовать, следует, что пример со стулом у тебя не работает, т.е. если вам с мужем понадобился стул в разных местах комнаты, работа прекращается сразу и напрочь.

> Это же общее рассуждение, а не про конкретною ситуацию

Для опровержения общего утверждения достаточно единственного контрпримера. Программа пятого класса современной неплохой школы.

переход на личности

Date: 2004-09-28 06:28 pm (UTC)
From: [identity profile] mashaaaa.livejournal.com
Да что ты меня этим мужем тыкаешь? Я незамужем! %)

Re: переход на личности

Date: 2004-09-28 06:43 pm (UTC)
From: [identity profile] besm6.livejournal.com
Я для примера.

January 2022

S M T W T F S
       1
2345678
910111213 14 15
16 171819202122
23242526272829
30 31     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 18th, 2026 08:31 pm
Powered by Dreamwidth Studios