Про мою давнишнюю идею.

Jul 22, 2010 22:49

Много работ про применение операционных преобразований (частью про них была статья в ПФП) в разных областях совместной компьютерной деятельности - от совместного редактирования текста до совместного редактирования графики.

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

Например, если мы работаем над текстом в целом, то вставка двух символов в разные слова фразы "абв где" может мешать друг другу: если один сделал правку "абвг где" (+"г"[3]), а другой сделал правку "абв хгде" (+"х"[4]), то наивное совмещение двух правок может привести и к "абвгч где" (накатили первую, потом вторую) и к "абвг хгде" (вторая, затем первая). Если мы работаем со словами, то вставки произойдут в первое слово (в самый его конец) и во второе слово (в самое начало), гарантируя, что у нас всегда получится "абвг хгде".

Если иерархия более глубокая, то вероятность ошибочного соединения правок ещё меньше.

Моя давнишняя идея была про представление пользовательского интерфейса в виде дерева, поддержания двух копий дерева - для пользователя и БД, - и синхронизации между ними с помощью операций редактирования: вставки, удаления, переименования (смены содержимого) и перемещения элементов.

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

Поскольку дерево у нас получается сильно вложенное, вероятность неправильного наложения операций над ним невелика даже при наивном разрешении конфликтов.

Что и доказывают труды той дамы, доступные по первой ссылке. ;)

Хорошо получить подтверждение со стороны, да ещё и от умного человека. ;)

PS
Чтобы два раза не вставать.

Передающим мне привет: то, что всё работает "нормально" не говорит, что нельзя работать лучше. То, что ошибки привычны, не означает, что от них не надо избавляться.

базы данных, пользовательский интерфейс

Previous post Next post
Up