typechecker: (самокат)
typechecker ([personal profile] typechecker) wrote2004-09-23 04:35 pm
Entry tags:

Девиртуализация

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

[identity profile] brem.livejournal.com 2004-09-23 12:52 pm (UTC)(link)
Не знаю, реализована, но по-моему нужна. С опцией, разумеется, ее отключать.

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

[identity profile] mashaaaa.livejournal.com 2004-09-23 01:18 pm (UTC)(link)
А как же, любую возможность нужно уметь отключать!

[identity profile] gogabr.livejournal.com 2004-09-23 12:58 pm (UTC)(link)
Windows Commander (который теперь Total) таким образом выводил напоминание о регистрации: при старте говорилось "Вообще-то надо регистрироваться, но сейчас, если хочешь, нажми кнопку 2", и внизу три кнопки. Нужная кнопка каждый раз выбиралась случайно.

[identity profile] orie.livejournal.com 2004-09-23 04:32 pm (UTC)(link)
что дико раздражает.

[identity profile] enia-enka.livejournal.com 2004-09-23 02:16 pm (UTC)(link)
Бесполезно, по-моему, будет токо еще сильнее раздражать. Если человек чего решил удалить, так уж все равно удалит, а если случайно нажал на Дел, так и простого вопроса хватит.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[identity profile] igaro.livejournal.com 2004-09-23 03:47 pm (UTC)(link)
(озабоченно) А за месяц другие МИЛЫЕ КОЛЛЕГИ не могли тебе столовую што ли показать?!

[identity profile] max-ushakov.livejournal.com 2004-09-23 03:53 pm (UTC)(link)
Я думаю, ты сама бы скоро стала красной или зелёной...

Мне эти вопросы только для того, чтобы случайно (попав пальцем не туда) не удалить файл. А чтобы этот вопрос заставил задумать, надо ли удалять этот файл -- это нет, не бывает.

[identity profile] orie.livejournal.com 2004-09-23 04:33 pm (UTC)(link)
мне кажется - не нужна.
если человек не читает - сам дурак.
если они будут красные и зелёные, очень быстро снизится "порог чувствительности", и всё станет, как было.

[identity profile] mashaaaa.livejournal.com 2004-09-23 06:17 pm (UTC)(link)
Нет, он не сам дурак. Приедается. Знаешь, у машинистов в кабине есть такая кнопочка, которую нужно нажимать раз в пять минут, а то поезд решит, что машинист заснул, и остановится. Так вот известно, что с машинистами жены разводятся из-за того, что они ночью во сне эту кнопку на женах нажимают.

[identity profile] besm6.livejournal.com 2004-09-27 09:29 am (UTC)(link)
Раскин обосновывал, почему это тоже не помогает. И в принципе даже рассказывал примерно, как на самом деле надо.

[identity profile] mashaaaa.livejournal.com 2004-09-27 10:06 am (UTC)(link)
А как? Расскажите, пожалуйста, или сошлите, где читать.

[identity profile] besm6.livejournal.com 2004-09-27 10:27 am (UTC)(link)
http://www.books.ru/shop/books/25835 , http://www.bolero.ru/product-22298540.html . Живьем есть у меня и подозреваю, у Беркгаута.

[identity profile] mashaaaa.livejournal.com 2004-09-28 07:04 pm (UTC)(link)
У Вас тоже в переводе? А он читабелен?

[identity profile] besm6.livejournal.com 2004-09-29 10:34 am (UTC)(link)
Да. Да, вполне.