首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏2014前端笔记

    协同编辑 - OT算法

    对于在线文档的难点,大部分同学的第一反应都是协同编辑,如何解决多人协作的冲突的问题。 对于协同编辑场景,都要解决哪些问题呢? 支持将多次操作合并成一次 对不同用户的多次操作进行合并,并返回相对应的opts,使不同用户的界面展示保持一致。

    2K11发布于 2020-12-29
  • 来自专栏一个会写诗的程序员的博客

    实时协同编辑的实现

    实时协同编辑的实现 在最近某个项目中打算使用协同编辑来解决冲突问题,因此抽空调研了现有的实现方案,结果发现要想做完美是很难的,但我们可以低成本地做到不错的效果,本文将介绍几种实现方法,大家在项目中如果有需要可以参考 什么是实时协同编辑 这里所说的实时协同编辑,是指多人同时编辑一个文档,最典型的例子是 Google Docs,你可以实时看到别人做出的修改,不用手动刷新页面。 编辑编辑锁这是实现协同编辑最简单的方法,简单来说就是当有人在编辑某个文档时,系统会将这个文档锁定,避免其他人同时编辑,因为实现简单,所以这个方案是应用最广的,比如公司内部常用的 TWiki 系统,采用这种方式虽然可以在一定程度上避免覆盖问题 GNU diff-patch Git 等版本管理软件其实也是一种协同编辑工具,因为每个人都可以并行编辑,遇到编辑同一个文件时可以自动合并,因此我们也能使用类似的原理来实现协同编辑,具体可以有两种方法:diff-patch 整体来看 Myer 算法可以低成本地解决大部分问题,所以有些在线编辑器选择它来实现协同编辑功能,比如 codebox。 不过 Myer 在某些情况下会丢字符,是否还有更好的方法?

    3.2K10发布于 2020-04-09
  • 来自专栏iSharkFly

    Confluence 6 管理协同编辑 - 修改编辑模式

    编辑模式确定了你站点所有用户使用协同编辑的体验,这个是你对协同编辑进行启用和关闭的地方。 希望修改编辑模式: 进入  ?   > 基本配置(General Configuration) > 协同编辑(Collaborative editing)。 选择 编辑模式(Change mode)。 这个模式在你不能在你的系统中成功运行 Synchrony 的时候有用,或者你决定协同编辑模式并不适用你的环境(例如,你现在正在审计需求,你不希望页面被编辑,在这个情况下,协同编辑对你并不合适)。 这个模式在你不能在你的系统中成功运行 Synchrony 的时候有用,或者你决定协同编辑模式并不适用你的环境(例如,你现在正在审计需求,你不希望页面被编辑,在这个情况下,协同编辑对你并不合适)。 在你将协同编辑模式修改为关闭的时候,你应该确保你的用户保存的所有草稿都已经被发布了。

    1.1K30发布于 2019-01-30
  • 来自专栏前端博客

    协同文档:OT与CRDT实现协同编辑笔记

    然而2016年3月,Google上线的Google Docs颠覆了这个结论,这个改变世界的功能就是“多人实时编辑”,或者称作“协同编辑”。 这所谓的实时协同编辑,是指多人同时编辑一个文档,最典型的例子是 Google Docs,你可以实时看到别人做出的修改,不用手动刷新页面。 《实时协同编辑的实现》 支持并发控制的理论型框架 协同分析的这方面最敬仰的还是Google Wave,《协同编辑:Google Wave架构分析》,其架构的核心是操作转换 (Operational Transformation 关于OT算法,内容如下: 实时协同编辑的概念和原理 实时协同编辑,通俗来讲,是指多人同时在线编辑一个文档,且当一个参与者编辑文档的某处时,这个修改会立即同步到其他参与者的计算机上。 client 的实例应该暴露创建一个协同文档的接口 可以在一个 client 上创建多个协同文档 定义 client 协同文档: 协同文档是一个父类 协同文档的方法 进入文档 编辑(传入变更) 离开文档

    2.5K31编辑于 2023-04-09
  • 来自专栏前端博客

    协同编辑:Google Wave架构分析

    real-time communication,时事通讯,这是在算不上什么新鲜事,实时通讯工具太多了collaboration,协同,这才是最重点的。 wave和email、IM、twitter等服务比较而言,优势就只有一个:协同。 协议google在waveprotocol.org发布了Federation协议和OT协议,OT协议解决协同问题,包括wave、wavelet、blip等。 当用户编辑多个用户同时打开的协作文档时,客户端程序会提供一个Optimistic UI,立即显示用户输入的内容,同时将编辑操作发送给服务器,希望该操作能被服务器接收。 :Google Wave的架构 https://www.infoq.cn/article/2009/06/wave/,查看英文原文: Google Wave’s Architecture转载本站文章《协同编辑

    74220编辑于 2023-04-09
  • 来自专栏葡萄城控件技术团队

    如何快速实现多人协同编辑

    引言 协同编辑是目前成熟的在线文档编辑软件必备的功能,比如腾讯文档就支持多人协同编辑,基本都是采用监听command,然后同步此command给其他客户端来实现的,例如以下系列: https://gcdn.grapecity.com.cn 第二种,多人协同所必须的特殊功能,情况比较多: 1. 比如编辑一个单元格时,其他人不允许编辑此单元格,并有样式提醒; 2. 三、编辑状态唯一 即同一个单元格同一时间只能有一个用户编辑。这是协同编辑几乎必备的一个需求,看起来很简单,但事实上是比较复杂的。 : 并对编辑的框做出正确的移动 结语 到这里,这篇文章也接近尾声了,整体实现的思路其实比较简单,无非就是拦截那些不符合协同需求或者同步时有问题的command,并重新实现它们。 这种方式能够快速实现简单的协同,并且做出定制化的修改。

    90820编辑于 2023-10-16
  • 来自专栏iSharkFly

    Confluence 6 管理协同编辑

    协同编辑能够让项目小组中的协同合作达到下一个高度。这个页面对相关协同编辑中的问题进行了讨论,能够提供给你所有希望了解的内容。 修改编辑模式 编辑模式确定了你站点所有用户使用协同编辑的体验,这个是你对协同编辑进行启用和关闭的地方。 希望修改编辑模式: 进入  ?   修改编辑模式 编辑模式确定了你站点所有用户使用协同编辑的体验,这个是你对协同编辑进行启用和关闭的地方。 当你觉得在多个用户进行协同编辑的时候遇到了性能问题,你应该考虑降低允许协同编辑的用户数量。 审计的考虑 我们知道一些客户对审计是主要考虑的方面。我们不能保证在协同编辑的时候具有审计,审查功能。 当你觉得在多个用户进行协同编辑的时候遇到了性能问题,你应该考虑降低允许协同编辑的用户数量。 审计的考虑 我们知道一些客户对审计是主要考虑的方面。我们不能保证在协同编辑的时候具有审计,审查功能。

    1.5K40发布于 2019-01-30
  • 来自专栏iSharkFly

    Confluence 6 管理协同编辑 - 关于 Synchrony

    协同编辑能够让项目小组中的协同合作达到下一个高度。这个页面对相关协同编辑中的问题进行了讨论,能够提供给你所有希望了解的内容。 进入 Collaborative editing 页面来获得项目小组是如何进行实时的协同工作的,这些协同工作包括在软件需求,会议记录,历史查看和任何你任务需要进行协同工作的地方。 关于 Synchrony 协同编辑是通过 Synchrony 进行的,这个能够实时的同步数据。 > 基本配置(General Configuration) > 协同编辑(Collaborative editing)。

    97750发布于 2019-01-30
  • 来自专栏前端西瓜哥的前端文章

    CRDT 协同编辑:如何确定操作时序?

    CRDT 协同编辑中,我们经常会使用 Last-Writer-Win 的策略解决冲突。即对于多个冲突的操作,哪个操作是最后修改的,就应用哪个操作。 这在协同编辑的场景中能用吗? 不太行。 这种方案需要一个服务器,所以就无法支持去中心化的 P2P 协同编辑(不经过服务器,用户直接向用户发送数据)。 当然我们这里讨论的是协同编辑,客户端是不可控的,就不发散思考了。 不同步的客户端时间戳会导致因果错乱的问题。 比如客户端 A 创建一个对象,同步给客户端 B,然后 B 将其删除。 对于协同编辑,我们通常会选择 Lamport 逻辑时钟算法。 对客户端 A,初始化时会有一个全局的逻辑时钟 clockID,通常我们选择从某个数字开始。 结尾 我是前端西瓜哥,关注我,学习更多协同编辑知识。

    39710编辑于 2024-04-03
  • 来自专栏前端西瓜哥的前端文章

    Figma 是如何做协同编辑的?

    协同编辑操作的对象就是这么一棵树。 Figma 协同操作的最小原子是 对象的属性。 修改同一个对象的不同属性没有冲突问题。 要点 最后是作者的一些心得: CRDT 的文献很有参考价值,即使你不打算做非中心化协同; 可视化编辑器的协同编辑并没有想象中难做; 在开做之前先调研并实现原型是非常有价值的。 结尾 文章看下来,大概有一些图形编辑器如何做协同编辑的概念了,以后有机会实践一下。 我是前端西瓜哥,欢迎关注我,学习更多图形编辑知识。 相关阅读, 协同编辑中使用的 OT 算法是什么? Yjs + quill:快速实现支持协同编辑的富文本编辑器 用 Yjs + React 写一个支持协同的 TODO 应用 图形编辑器:历史记录设计

    1.2K10编辑于 2023-12-13
  • 来自专栏客户服务自动化

    【工具】多人在线协同编辑文档软件

    如今能够用来节省时间、提高工作效率的工具就有在线协同编辑文档软件,它支持多人编辑一个文档,多个人肯定比一个人完成一件事情的时间更短,这样就能够很大程度上节省时间,提高工作效率。 以下给大家带来了几款在线协同编辑文档软件,大家就根据自己的需求进行选择吧。 baklib是一款集在线编辑+存储+展现分享为一体的知识管理工具。 在线编辑 支持Markdown、表格、代码块、等专业编辑能力,支持多种格式的文档、视频上传。让你专注于创作。 支持多人在线协同编辑,多级权限让团队中的每位成员都能成为知识创作者! 在线存储 采用先进而灵活的云服务架构、SaaS化服务,从内部编辑到外部分享全程保障客户数据的独立而安全。 utm_content=21&utm_source=zhihu 选择一款好用的在线协同文档软件,提高的是工作效率,节省的是时间和生命。

    3.7K20编辑于 2022-03-18
  • 来自专栏iSharkFly

    Confluence 7 编辑文件

    你可用使用你喜欢的桌面应用编辑保存到 Confluence 上面的任何文件。当你使用你的桌面应用编辑完成后,编辑内容将会自动重新保存回 Confluence 上。 你可用编辑 Office 文档,Photoshop 文件,Keynote 幻灯片 —— Confluence 上保存的任何文件,只要在你的计算机中安装有相应的程序你都可以进行编辑。 要对页面中的文件进行编辑,你需要在特定的空间中具有 添加附件(Add Attachments)权限。 这个特性在 Confluence 6.11 的后续版本才可以使用。 如果你还是使用比较老的 Confluence 版本的话,你任然可以使用 编辑微软 Office 文件或者手动上传你的文件。 请查看 管理文件 页面中的指南。

    1.3K00发布于 2020-08-31
  • 来自专栏iSharkFly

    Confluence 6 管理协同编辑 - 审计的考虑

    我们不能保证在协同编辑的时候具有审计,审查功能。所有页面的修改当前附加到用户发布页面的属性中而不是用户的特定修改。 如果这个对你来说是一个问题的话,我们建议你在你的站点中关闭协同编辑。 在未发布的草稿中没有版本历史 我们现在保存了在系统编辑中的所有时间的编辑,但是我们不会保存没有发布修改的的版本。当你恢复到早期页面的版本的时候,你仅仅可以恢复到一个已经存在的发布版本中。 当一个为发布页面是由匿名用户创建的时候,关闭一个编辑或者发布一个页面的时候你不会收到警告。这个可能会导致登录的用户的编辑会被中断和打扰。

    71640发布于 2019-01-30
  • 来自专栏全栈学习

    AI协同写作应用-TipTap编辑器实例

    本章将深入探讨编辑器实例(EditorInstance)的方方面面,包括:编辑器实例的创建和初始化编辑器的配置选项编辑器的生命周期管理编辑器的销毁和清理多编辑器实例的管理通过本章的学习,你将全面掌握编辑器实例的使用 第一部分:编辑器实例基础什么是编辑器实例编辑器实例(EditorInstance)是Tiptap的核心对象,它包含了编辑器的所有状态、配置和方法。 每个编辑器实例都是独立的,拥有自己的:文档内容:编辑器中的所有内容选区状态:光标位置和选中的文本扩展配置:启用的扩展和它们的配置命令方法:用于操作编辑器的命令事件监听:监听编辑器的各种事件编辑器实例的创建在 的默认样式:展开代码语言:TypeScriptAI代码解释consteditor=useEditor({extensions:[StarterKit],injectCSS:true,//默认为true})7. ,例如:评论系统(每条评论一个编辑器)多文档编辑(同时编辑多个文档)对比视图(并排显示两个编辑器)功能需求创建多个独立的编辑器实例每个编辑器有独立的内容和状态支持在编辑器之间复制内容显示当前活动的编辑器实现步骤

    21120编辑于 2026-04-08
  • 来自专栏code秘密花园

    文本文档协同编辑的实现原理

    抽象一下文本文档的协同编辑这个问题,就是同步多个设备之间的操作合并,最后都能达到最终一致的结果。 现在解决文本文档的协同编辑有两种方案,一种是 Google Doc 使用的 Operational transformation (OT),还有一种就是 Atom teletype 使用的 Conflict-free 因为可以解决分布式达到最终一致会遇到的问题: 网络问题导致发送接收顺序不一致(幂等性) 以及多次发送(可交换性) OT 和 CRDT 区别 OT主要用于文本,CRDT 不仅仅应用在协同编辑,还有分布式系统的最终一致性上也有应用 「CRDT 实现协同编辑」 为什么选择 CRDT,因为 OT 中的 transformation 流程太复杂,OT 概念不是很清楚,而 CRDT 很好理解,实现起来也不难。 「结语」 github.com/wangdashuaihenshuai/crdt-edit 这是我自己从零实现的一个文本文档的协同编辑demo,上面是输入框,下面是数据结构的可视化。

    3.7K31编辑于 2021-12-27
  • 来自专栏前端西瓜哥的前端文章

    协同编辑中使用的 OT 算法是什么?

    OT 的英文全称是 Operational transformation,是一种处理协同编辑的算法。 它常用于实现协同文档的底层算法,支持多个用户同时编辑文档,不会因为并发修改导致冲突,而使结果不一致或数据丢失。 冲突的处理方式 假设 A 和 B 在同时编辑同一个内容,我们处理冲突的方式有: 加锁。 用户 A 在编辑时,就锁住文档,只能 A 进行更新。用户 B 就不能编辑,或编辑后提交修改被服务器丢弃; 覆盖。谁最后修改,就全量使用他的修改,更早一些的其他人的修改会被丢弃。 用户自行处理冲突。 比如我们要介绍的 OT 算法,可以让用户编辑进行算法处理进行调整,在多个客户端生成一致的修改结果。 对于在线协同文档, 加锁体验太差,一个人在编辑时其他人就要干等着。 里面还附带了一个 OT 可视化过程 https://github.com/Operational-Transformation/ot.js/ 结尾 OT 算法能够在实时保证多个客户端数据的一致性,被广泛用于协同编辑场景

    2.7K51编辑于 2022-12-21
  • 来自专栏iSharkFly

    Confluence 6 管理协同编辑 - 代理和 SSL 的考虑

    这里是帮助你在你环境中识别正确的配置的一些信息和一些针对你环境需要做的一些协同合作方面的修改。 SSL Synchrony 运行在一个独立的 JVM,这个并不需要支持直接的 HTTPS 连接。 这个是默认的配置,针对这个情况你在启用协同编辑的时候不需要进行任何进一步的修改。 ? 6.0 XHR fallback 当一个通过通过 WebSocket 连接到 Confluence 的时候,我们将会返回一个 XML HTTP Request (XHR),这个能够允许用户成功的对页面进行编辑 为了让用户获得最佳的编辑体验,我们强烈建议你在你的环境中配置允许 WebSocket 连接。

    1.2K40发布于 2019-01-30
  • 来自专栏iSharkFly

    Confluence 6 管理协同编辑 - 修改你的 Synchrony 配置

    你不能通过 Confluence UI 修改 Synchrony 的配置。配置的修改是通过系统属性进行修改的。在绝大部分情况下,你不需要对默认的配置进行修改。

    1.6K20发布于 2019-01-30
  • 来自专栏iSharkFly

    Confluence 7 使用编辑的位置

    如下图,我们希望对测试页面中的一个图片进行编辑,进行编辑的按钮哪里。 打开图片预览 在页面中,单击图片,可以打开图片预览。 在预览图片的右上角有一个使用编辑的按钮。 你可以单击选择。 https://www.ossez.com/t/confluence-7/421

    95200发布于 2020-08-31
  • 来自专栏前端西瓜哥的前端文章

    CRDT 协同编辑:修改树的节点层级 Mutable Tree Hierarchy

    本文来讲讲一个 CRDT 协同算法:修改树节点层级的操作后,保持多人协作时的数据最终一致,且不会出现环。 Tree Hierarchy》 https://madebyevan.com/algos/crdt-mutable-tree-hierarchy/ 应用场景有:网盘嵌套的文件夹以及目录,在线文档工具的目录树协同 ,图形编辑器的图形树协同等。 我是前端西瓜哥,欢迎关注我,学习更多协同编辑知识。

    72710编辑于 2024-03-12
领券