自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 协同编辑--OT算法之外的世界

协同编辑的三个问题是convergence, causal order and intention preservation.其中Operational transformation算法解决的主要是intention preservation的问题,但是,仅仅将OT算法做对,还远远不能完成一款协同编辑产品。多人协同编辑时,必须支持客户端之间互相发送和接收编辑操作的消息。无论使用长连接还是Web...

2018-08-06 21:11:02 3819 7

原创 Operational Transformation算法图解

Operational Transformation算法解决的问题是如何merge基于相同的状态产生的不同的操作序列。如下图所示,从上往下看,基于相同的起点,左右有两个操作OP1和OP2.为了merge两个操作为一体,我们可以从两个方向入手,一个方向是从OP1入手,在执行完OP1后,执行OP2;另一个方向是从OP2入手,在执行完OP2后,执行OP1.但是,简单的将操作执行,并不正确,以OP1为例,...

2017-11-10 10:11:12 6988 5

原创 混合使用Swift,Objective-C, C++, Objective-C++

这个话题并不是一个新的话题,网上有前辈做过详细的描述(Mixing Objective-C, C++ and Objective-C++: an Updated Summary)。之所以做为一篇文章,是因为在实际项目中用到了这种混合,加以记录。首先需要澄清的是,Objective-C是strict superset of C. C++是基于C语言的面向对象的扩充,但不是strict s

2017-09-27 23:56:45 526

原创 云表格的技术(四)

使用单机的Excel时,大家都用过撤销/恢复功能。这是个非常常用的功能,来防止和解决误操作的发生,当然,也可以当作是找回实时历史的一个简单实现(关于文档历史功能,这是一个很大的话题,本篇不表)。本文要探讨的,是在多人协作环境下,表格的撤销和恢复功能。我们从简单的例子着手。假设现在有两个协同者A和B。A编辑表格A1, 原来是空白,A写成1;之后,B编辑相同的表格A1,B看到了

2017-09-27 23:55:47 1212

原创 云表格的技术(三)

完整的云表格产品必然是跨终端的,可以有网页版,桌面版,移动版。对于桌面版/移动版,离线支持是一个基本的功能。另一方面,云表格是基于OperationalTransformation的技术,该技术是依赖于后台权威的串行化处理的。由此,会出现一个问题,即新建数据的ID问题。新建的数据,无论是新建的工作表,或者是新建的一行,一列,都会有ID。这个ID是会存储到后台服务器中的权威数据,并且一般情况

2017-09-27 23:54:24 549

原创 云表格的技术(二)

WPS云是一款云端的产品,也就是说,在客户端给用户呈现的如此多的功能,都有赖于云端的处理能力和储存能力。最简单的来讲,用户的文件,必然是要储存在云端的。那么问题来了,用户的文件,是存储在后端的分布式文件系统里呢?还是后端有自己的文件储存格式呢?这个问题其实见仁见智,君不见,诸如百度云这样的产品,用户上传的文件,必定是以普通文件的形式存储的。但是,显然WPS云不是一个简单的云盘,因为WPS云

2017-09-27 23:52:54 645

原创 操作,操作的side effect以及复合操作

WPS Excel支持各式各样的操作,可以分类如下:文件metadata的操作:修改文件名工作表metadata的操作:修改工作表名称,增删(以及删除后的撤销)拷贝工作表,调整工作表顺序工作表结构的操作:调整冻结行列;增删(以及删除后的撤销)行/列;移动行/列;调整行高/列宽;调整行/列的隐藏与否;行排序工作表内容的操作:合并单元格与解除合并;单元格区域数据更新(各

2017-09-27 23:51:29 554

原创 Incremental Synchronization

微信大家都用。作为一个IM工具,有个小功能,就是当你离线了一段时间后,重新连接,你错过的一些消息会重新接收到,那么,这部分错过的消息的接收,就是一种incremental synchronization.同样的,当你在使用Google Doc时,或者使用在线WPS时,编辑操作也是增量式的接收的。当你在线时,peer的编辑操作会同步到本地,而当你离线后,peer的编辑操作继续,但你是无法接受

2017-09-27 23:49:51 278

原创 云表格的技术(一)

WPS Office是老百姓喜闻乐见的免费产品,虽然广告多了点,但是免费就是killing point。程序员们喜欢造轮子, 那么,假如要造一个WPS 表格的轮子,可能面临的问题有哪些呢?借着移动互联网的春风,不妨从mobile版本的WPS 表格入手。View层:显然,表格的view是一个formal的二维结构,iOS里,有个component叫UICollectionVi

2017-09-27 23:47:16 1162

原创 real time cooperative editing system

google doc 支持concurrent editing. 多人同时在线编辑同一个文件。本文简单分析一下这种real time cooperative editing system的设计。首先,这个问题是一个研究领域的热点问题(至少曾经是热点问题)。ACM 有专门的Conference ComputerSupportedCooperativeWork(CSCW). 当然,这是从应用的

2017-09-27 23:43:36 389

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除