问题标签 [operational-transform]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
14 回答
34210 浏览

etherpad - 运营转型库?

我正在寻找一个允许我在多个用户之间实时同步文本的库(ala Google Docs)。

我偶然发现了运营转型,这似乎符合我的需求。话虽如此,我了解 OT 的要点,但不了解 OT 的数学和实现。

因此,我想知道是否有一个拖放 Javascript 库可以连接到文本区域,生成转换,然后允许我将这些转换应用到另一个客户端?

(我已经获得了 Etherpad 的源代码,但我无法从中得出结论。如果有人能指出如何利用 Etherpad 的 OT 实现,那也太好了!)

0 投票
1 回答
512 浏览

etherpad - 数据库的交换(操作转换)差异

什么 Unix 程序在文本文件(或数据库的 INSERT/UPDATE/DELETE)之间生成“差异”,使得应用“差异”的顺序无关紧要,无论顺序如何,结果都是相同的。

Etherpad 曾经做过这样的事情。

示例(对于给定的文档或数据库):

% 亚当做出改变 X,然后鲍勃做出改变 Y,然后亚当做出另一个改变 Z。

% 然而,由于网络延迟,Adam 看到变化的顺序是:XZY,而 Bob 看到的变化顺序是:YXZ。

% 但是,编写代码/更改以使 XYZ 和 YXZ 产生相同的结果。

注意:理想情况下,无需在任何时候进行 X/Y/Z 反转即可完成此操作。

我读过操作转换库吗? 但我不确定这是否真的符合我的要求。

0 投票
5 回答
3008 浏览

java - 操作转换实现(不是 javascript)

我正在寻找仅针对网站服务器端基于纯文本的更改实现多用户操作转换。

有没有可以推荐的非 JavaScript 实现?

0 投票
1 回答
619 浏览

ruby-on-rails - 基于操作转换的数据库

在 Linux 上是否有这种支持操作转换的数据库?如果它也有一个导轨适配器会更好。

我知道CEDA是一个有很多我需要的特性的软件,但是它不能在 Linux 上运行,而且它是封闭源代码并且没有可用的试用版,如果有人知道,请告诉我,谢谢。

0 投票
2 回答
789 浏览

sql - 什么样的服务器用于操作转换操作?

我希望使用 google 提供的 Diff-Match-Patch 算法作为 Google-Mobwrite 实时协作文本编辑器协议的一部分,以便在我的程序中嵌入实时协作文本编辑器。

无论如何,我想知道存储用户正在编辑的每个文档的“全局”副本的最有效方法到底是什么。我希望将每个文档存储在任何用户都不本地的服务器上,并且每次用户执行“操作”(删除插入粘贴剪切)时,计算他们的副本与服务器及其修补程序等之间的差异。 .. 如果你知道 Google mobwrite 协议,你可能明白我在说什么。

服务器文本文件应该存储为一个已更改的文件,还是作为长字符串存储在 sql 数据库中?我应该使用 websockets 与服务器通信吗?老实说,在这方面我是个业余爱好者,但通常学得很快。有没有人有我可以遵循的任何提示或资源?非常感谢

0 投票
1 回答
563 浏览

clojure - Clojure Avout 在功能上是否等同于 Google Wave 中的操作转换功能?

在此Google Groups 消息中,作者将名为 Avout 的 Clojure 库与 Google Wave 中的 Operational Transform 功能进行了比较。

可以说这些在功能上是等效的吗?

据我了解,后来在 Google 电子表格中使用了操作转换功能,以启用我们今天在那里看到的多用户功能。

您能否使用 Clojure Avout 作为在线电子表格实现的一部分来同步用户之间的状态并解决冲突(按顺序)?(即,如果第一个用户在另一个用户删除单元格的全部内容之前不久向单元格添加了一个字符 - 它是否能够友好地解决与后来的更新的冲突 - 删除单元格?)

0 投票
3 回答
2284 浏览

real-time - 如果仅将其视为纯文本,操作转换是否适用于 HTML 等结构化文档?

Google Wave 协议的常见问题解答说 [HTML]“没有理想的属性”并且“HTML 使 OT(操作转换)即使不是不可能也很困难”[1]。为什么会这样?如果 HTML 被简单地视为纯文本然后应用 OT 会出现什么问题?

  1. http://www.waveprotocol.org/faq#TOC-What-s-the-XML-schema-for-waves-Why
0 投票
1 回答
597 浏览

meteor - Meteor 的运营转型是否即将到来?

鉴于 Meteor 支持对数据对象进行最终一致的离线写入,自动将并发编辑合并到同一个文本字段似乎是很自然的下一步。这可以通过集成一些操作转换库(列表)来完成,例如ShareJS

Meteor 团队是否希望在某个时候在核心产品中支持此功能,或者它更有可能作为第三方附加模块出现?

此外,由于 ShareJS 实际上似乎提供了 Meteor 数据架构的基本功能(他们在文档中提到它可以与任意 JSON 对象一起使用),是否有可能使用 ShareJS 进行类似 Meteor 的数据同步?

0 投票
1 回答
438 浏览

operational-transform - ShareJS 中的嵌套 JSON 删除

我目前正在尝试使用ShareJS实现操作转换(特别是 JSON API)。如果我删除了一个父 JSON 对象会发生什么,wiki 并不太清楚,而另一个操作是插入到子 JSON 中。是否会重新创建父 JSON,或者它将是一个空操作?

例如

0 投票
2 回答
1402 浏览

meteor - Meteor.js 中的操作转换?

Meteor.js 是否支持操作转换?

我正在做一个与 Etherpad 相关的项目,我想使用 Meteor.js(我认为它非常适合这种项目)。如果我想让它可扩展,那么运营转型对我的项目来说非常重要。我目前的知识表明,meteor 不支持开箱即用的操作转换(如果我在这里错了,请纠正我)。所以基本上我的问题是如何在meteor.js中实现操作转换?

我尝试使用Neil Fraser的这个库google-diff-match-patch,但是在应用补丁时遇到了问题(尽管它很容易在meteor.js 之外工作)。

那么有什么建议吗?