LINUX.ORG.RU
ФорумTalks

Глобальная система отмены неосторожный действий (Undo/Redo)

 ,


0

1

Случайно закрыли окно программы с введенными данными?
Перемотали фильм в плеере, не зная на какой минуте смотрели?
Сбросили настройки в программе Gnome3?
И другие неосторожные действия, которые можно отменить введя такую систему.
Кому-то это уже приходило в голову? Думаю, лет через 15 такое точно будет.
А вы что думаете насчет этого?

Перемещено leave из development



Последнее исправление: leave (всего исправлений: 1)

Мне кажется такая софтина по памяти будет ппц жрать…. и такое особо не сделаешь ни как глобально. Как например быть с онлайн играми?

А Ctrl + Z уже 30 лет как есть

romanlinux ★★★
()
Последнее исправление: romanlinux (всего исправлений: 1)
Ответ на: комментарий от romanlinux

Так придумать надо, как это реализовать. Про отмотку времени в играх никто же не говорил.

Quasar-Napilnik_CPY
() автор топика
Ответ на: комментарий от xDShot

Сперва KDEConnect, потом и на оффтоп 10

Ну здрасьте, на macOS это было значительно раньше.

А KDE Connect до сих пор не умеет звонки принимать. Ну и с Bluetooth бэкендом там до сих пор перекати поле.

fornlr ★★★★★
()
Последнее исправление: fornlr (всего исправлений: 2)

Компуктер — это ведь конечный автомат. Конечное колличество состояний. Все просто. Нужно просто сделать.

BceM_IIpuBeT ★★☆☆☆
()

«Вы уверены, что хотите удалить этот файл? Вы точно уверены? Ваш файл отправлен в корзину!»

Думаю, лет через 15 такое точно будет.

IQ неумолимо падает, так что, наверное, будет.

crypt ★★★★★
()

Я похожее видел в каких-то презентациях от Apple. Но проблемы тут, в принципе, нет. Надо просто чтобы кто-то это запилил.

hateyoufeel ★★★★★
()
Ответ на: комментарий от anonymous

ну ты прикинь сколько процессов и потоков в фоне работают. это-же все нужно «логировать» с момента включения пк, что бы можно было отмотать назад любые действия. допустим ты включил комп сменил обои на рабочем столе, и комп у тебя не выключался 3 месяца, а потом вдруг ты решил отменить смену обоев, получается все 3 месяца ОС должна помнить об этой смене обоев и старые обои хранить где то в памяти или на диске + новые обои хранить

romanlinux ★★★
()
Ответ на: комментарий от romanlinux

Даже в текстовых редакторах не бесконечно. Пару-тройку действий более чем хватит.

Quasar-Napilnik_CPY
() автор топика
Ответ на: комментарий от hateyoufeel

Я тоже считаю, что особых проблем в реализации возникнуть не должно. На уровне Qt/GTK - и все. Снимать дампы памяти, думаю, не потребуется.

Quasar-Napilnik_CPY
() автор топика

Наивный.

Количество настроек в популярных программах и возможность кастомизации год от года неуклонно уменьшается.

Так что скорее будет «опечатался? удаляй весь документ и набивай заново. стоимость создания нового документа всего 1.99$!»

hungry_ewok
()
Ответ на: комментарий от hungry_ewok

Про сброс настроек в программе Gnome3 - это про то, что там нет кнопок ОК, Применить и Отмена. Все применяется сразу, и все поля соответственно нужно заполнять по-новой при сбросе.

Quasar-Napilnik_CPY
() автор топика

Мое первое участие в крупном опенсорсном проекте заключалось в том, что я где-то так месяц фултайма потратил на отладку undo/redo в glade-3. По этой причине абсолютно точно этого не будет в третьем гноме.

Причина заключается в том, что GUI фреймворки, по принципу карго культа слизанные с ксероксового смолтока, оперируют общим изменяемым состоянием. Не важно, как оно там формально разграничено — по факту это монолитное состояние, которое вы, например, не можете изменить из нескольких потоков. Однако, уже тогда в Xerox разрабы задумывались о необходимости сохранять состояние и параллелиться, но в то время они уехали в непрактичном направлении, и потому именно эти особенности системы были полностью забыты.

Сейчас мы снова приходим к необходимости создания новых механизмов интерфейсов, отсюда имеем WPF/UWP, JavaFX, и в конце-концов Electron — который, по моему мнению, является тупиковой веткой развития, но показывает необходимость переосмысления парадигмы.

Думаю, лет через 15 такое точно будет

Нолик забыл. Чтобы «такое» сделать на нынешнем софте, нужно сделать виртуальную машину под каждое приложение, чтобы виртуалка отматывала состояние памяти и потоков приложения на произвольное время.

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

Да, тоже бесит. Но реализовывать это нужно на том уровне, где ясна семантика состояния, то есть, на уровне самого приложения. А на уровне самого приложения с нынешними фреймворками (Qt/GTK) это боль, потому делать это будут только в самом крайнем случае. Например, для настроек очень часто делают кнопки «отменить» и «применить» — если в новом гноме их не сделали, то это полный провал. Даже если собрались делать горячий просмотр изменений — кнопку отмены обязательно нужно ставить.

Перемещено leave из development

Я готов поговорить об этом как разраб, но по уровню исходного сообщения — да, это Talks.

byko3y ★★★★
()
Ответ на: комментарий от romanlinux

Мне кажется такая софтина по памяти будет ппц жрать…. и такое особо не сделаешь ни как глобально. Как например быть с онлайн играми?

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

byko3y ★★★★
()
Ответ на: комментарий от BceM_IIpuBeT

Компуктер — это ведь конечный автомат

Нет, компьютер с прерываниями уже не моделируется конечным автоматом. Моделируется большим числом конечных автоматов.

byko3y ★★★★
()

Вижу это как-то так - мини либа для system wide хранения последовательности memento в куске shmem. При превышении капасити самые старые записи затираются. 2 типа клиентов - проги, поддерживающие глобальную отмену (умеющие писать memento и восстанавливаться из него по запросу), и «менеджеры временной линии» (можно даже попробовать запилить несколько линий). Простейший случай - посылает запрос «переход в предпоследнее состояние», проги реагируют на него сверкой «а мое ли это состояние, если да, то поглотить». За недельку на расслабоне можно сваять. А вот продвигать это задалбаишься :P

robus ★★★★★
()
Ответ на: комментарий от romanlinux

допустим ты включил комп сменил обои на рабочем столе, и комп у тебя не выключался 3 месяца, а потом вдруг ты решил отменить смену обоев

Для справки: на винде такое есть. Но точку возврата нужно вручную создавать и выполняется операция довольно долго. Оно сохраняет состояние файлов на системном разделе, в том числе реестра, и для восстановления состояния нужна перезагрузка.

byko3y ★★★★
()
Ответ на: комментарий от byko3y

Чтобы «такое» сделать на нынешнем софте, нужно сделать виртуальную машину под каждое приложение, чтобы виртуалка отматывала состояние памяти и потоков приложения на произвольное время.

Сложна, сложна, зачем так сложна!?

robus ★★★★★
()
Ответ на: комментарий от robus

Зачем вообще нужна глобальная история для все системы? Я хочу отменить правку в текстовом файлике — мне нужно обратно закрывать для этого вкладки в браузере, открытые после внесения правки?

byko3y ★★★★
()
Ответ на: комментарий от robus

Сложна, сложна, зачем так сложна!?

А это единственный вариант, и, более того, это уже сделано для вышеупомянутых эмуляторов.

byko3y ★★★★
()
Ответ на: комментарий от byko3y

Чтобы ТС сказал «Ура, глобальный Ctrl+Z» и уверовал в прогресс :D

Ну а вообще да - Ctrl+Z уже есть.

robus ★★★★★
()
Ответ на: комментарий от byko3y

Это единственный вариант, если нет контроля над клиентами. А вот если есть )

robus ★★★★★
()
Последнее исправление: robus (всего исправлений: 1)
Ответ на: комментарий от byko3y

Нолик забыл.

Я думаю, что не так уж и долго. Тем более, если подвижки в этом направлении уже были.

Quasar-Napilnik_CPY
() автор топика

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

vaddd ★☆
()

Проблема с undo состоит в том, что нужно undo для undo, то есть redo. В момент применения redo на любом состоянии истории кроме предпоследнего, история форкается и превращается в дерево. Появляются узлы, из которых есть несколько путей вперёд, а для управления передвижением доступно только вперёд (redo) и назад (undo). Таким образом часть истории придётся выбрасывать. А это значит, что неосторожные действия с undo/redo точно так же могут привести к потере результатов работы. Просто это не так очевидно.

Так что не думаю, что глобальная система отмены действий решит проблему.

i-rinat ★★★★★
()
Ответ на: комментарий от robus

shmem

посылает запрос

Кто? Тут явно сервис напрашивается и шина, к которой все приложения будут подключены.

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

WitcherGeralt ★★
()
Последнее исправление: WitcherGeralt (всего исправлений: 1)
Ответ на: комментарий от Quasar-Napilnik_CPY

Её вроде можно так использовать. Но она всё же экспериментальная и много существующего софта там не заработает (хотя какую-то поддержку нативного кода в теории планировали).

xaizek ★★★★★
()
Ответ на: комментарий от i-rinat

Так можно хранить дерево изменений и давать доступ к нему. В Vim так.

xaizek ★★★★★
()
Ответ на: комментарий от Quasar-Napilnik_CPY

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

xaizek ★★★★★
()
Ответ на: комментарий от xaizek

Видимо, не много-то и программ там работает. Иначе историй успеха уже было бы много. Даже ReactOS где-то начинали использовать.

Quasar-Napilnik_CPY
() автор топика

Написал в нетрезвом состоянии на лорчик и получил бан? Проспись, нажми ctrl-Z и все будет хорошо!

goingUp ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.