Cmd Markdown 发布第十次更新

jopen 9年前

原文  http://www.zybuluo.com/ghosert/note/90884

Cmd Markdown 发布第十次更新 --- 走,带着 Cmd 去旅行

Cmd-Markdown

我是作业部落 和Cmd Markdown 的主要开发者,您可以通过微博关注我@ghosert。

对不起!这是一次迟到的发布。

一直以来我们和用户一样,对 Cmd Markdown 充满自信,直到几个月前,我们听到人民群众对于 Cmd Markdown 客户端的呼声此起彼伏,的确,只从自己的角度去考虑问题,认为人人喜欢网页版的软件,时时刻刻有网络环境,那是在犯罪。那一刻起,怀着一种负罪感,我们决 定开发自己的离线客户端版本。在文本编辑的时候把 “在线” 两个字删除只需要 0.5 秒,在软件开发的时候把一个在线应用改造成离线客户端需要更长一点的时间,从在线到离线大概是五个月的时间,所以谢谢五个月的值守,今天开始, Cmd Markdown 将在 Windows/Mac/Linux/浏览器 全平台支援 您对写作的苛刻诉求。

Cmd Markdown 发布第十次更新

Cmd Markdown 全平台客户端下载地址

1. 离线使用浏览器版

在线编辑器严重依赖网络的问题严重困扰着那些走在路上的文字工作者,譬如:记者,学生,旅行者。在没有客户端时候我们希望浏览器也可以担负离线编辑的责 任,所以我们将 Cmd Markdown 的网页版本身改造成了可以离线使用:现在开始,只需要访问过一次我们的网页版链接 您都可以在下次没有网络的情况下重新访问这个网址,离线使用我们的网页版 Cmd Markdown。是的,在没有网络的时候仍旧使用浏览器的确和直觉不太相符,但是这真的发生了,所以请收藏我们的网页版链接 以备不时之需。

在不稳定的网络条件下,Cmd Markdown 同样可以很好的工作。它会根据网络状况动态切换离线在线模式,确保数据首先存储在本地,再次更新到服务器做备份。不必担心发生数据丢失的状况。

2. 智能云同步

Cmd Markdown 发布第十次更新

无论是可以离线使用的浏览器版,还是客户端,在离线使用并重新连接网络之后,所有新增、删除、修改的文稿都会和服务器上的版本做同步处理,保证那 些在离线状态下的修改在服务器有同样的备份。在今后更换电脑、工作地点的时候,都能再次调阅编辑最新的内容。这些动作会适时自动进行,大多数情况下并不需 要用户主动干预,我们有一套智能的同步算法确保不同客户端的同一份文稿在同步的时候进行自动合并的动作,譬如:

原始稿件 A 内容为:

客户端 1 在线状态修改 A 为 A'

客户端 2 在离线状态修改 A 的内容为 A''

当客户端 2 连接上网络的时候,最优结果是智能合并 A' 和 A'' 的结果到 A'''

我们测试了许多知名云笔记品牌的做法,很遗憾面对此种局面,它们大多粗暴地选择直接用 A'' 的结果覆盖 A' 的内容,造成用户编辑过程丢失的恶果,简直无力吐槽。

3. 用户干预下的版本冲突处理

智能云同步可以解决大多数文稿版本问题,但是在用户意图本身就冲突的时候,我们仍然会以最大的善意要求用户确认其真实意图,举个例子:

原始稿件 A 内容为:

客户端 1 在线状态修改 A 为 A'

111  AAA  333 

客户端 2 在离线状态修改 A 的内容为 A''

111  BBB  333 

当客户端 2 连接上网络的时候,除了作者谁都无法知道其真实意图:将 222 修改为 AAA 抑或是 BBB?此时 Cmd Markdown 会自动计算这些差异并让用户确认其真实意图,如下图:

Cmd Markdown 发布第十次更新

哇哦!的确足够聪明!

4. Windows / Mac / Linux 全平台客户端

Cmd Markdown 发布第十次更新

Cmd Markdown 全平台客户端下载地址

在离线使用和智能云同步的基础上,我们开始重新构造全平台的客户端,为了让一个网页版的文字编辑器变身为客户端,我们斟酌了代码库的每一处细节, 改写了个整个代码库的基础设施,并骄傲地宣布 Cmd Markdown 不再单单是一个浏览器里的应用,它可以独立运行在三大操作系统,离线使用,并且智能云同步。我们也为现在的不足做好了准备:完善的软件更新系统将随时待命 推送新功能和补丁到客户端。

5. 558% 的性能提升 和 基于差异的请求

天下武功唯快不破,愈快则愈强。性能问题始终是每次升级的重点,这一次通过考验 Cmd Markdown 在极端大文稿下的表现,严谨、有效地改进了渲染算法,最终将渲染效力提升至原先的 558%。

一般来说云笔记将用户当前编辑内容保存到云端的做法有两种:

  1. 先本地保存用户数据,定时上传到服务器。
  2. 用户击键的动作都会触发一次云端保存。

方案 1 可以有效减少用户的卡顿感(一段时间内不会发生网络传输),但是如果本机掉电或者程序崩溃就会导致用户数据的丢失。方案 2 可以实时将用户的数据备份在服务器,保证数据的完整性,但是假设有一份二万字的大文稿,则每次击键都会导致一次上传两万字的网络传输行为,因此在大文稿的 编辑过程中会有明显的卡顿现象。

Cmd Markdown 在之前的版本中采纳了方案 2, 这一次,依然是通过算法改进,我们会在击键动作以后,计算前后文本内容的差异,只将差异部分上传到云端,再由云端的程序将这部分差异和现存的服务器端版本 进行合并后保存。这种做法有效地减小了网络传输的带宽,从而杜绝大文稿下的卡顿现象。我们的服务器也将动用更多的计算能力来处理成千上万的差异合并请求。 在较差的网络环境里一样实现了稳定的文本内容传输。

6. 基础编辑器组件升级:列模式、增强的 Vim/Emacs 模式

我们回来谈谈编辑器本身,继上次之后我们再次升级编辑器组件。

1. 引入 列模式

许多用户很喜欢 sublime 一类编辑器的列模式,现在您同样可以在 Cmd Markdown 通过 Ctrl + Alt + Up/Down 进入列模式,在多行的文稿上显示多处光标,随后同时编辑多行内容。

2. 支持 / ? 全文搜索、替换和列操作的 Vim 模式

通过右上角的菜单进入 Vim 模式:

  1. 搜索: 和原生的 Vim 一样,在光标状态下按下 / 或 ? + 关键字,可以对全文内容进行关键字搜索。
  2. 替换: 按下 : 可以进入命令模式,使用 %s/orig/repl 进行全文替换动作。
  3. 列操作: 在光标模式下按下 Ctrl + Alt + J/K 进入列操作模式。

3. 更好用的 Emacs 模式

原先在 Chrome 浏览器下 Emacs 常用快捷键 Ctrl + N 被 Chrome 占用为打开新窗口,导致此模式很难有实用价值,本次发布的客户端表示全无压力,因此 Emacs 的粉丝们终于可以在客户端上使用你们最喜欢的 Emacs 模式了。

7. 问题修复

在 github 的 问题列表中,我们有选择的进行了以下修复:

防止在批注内容中进行恶意的 XSS 攻击

删除大块段落时,避免用户批注丢失

按键 Ctrl + S 时,避免弹出保存对话框

在页面跳转中可定制的 hash anchor

基于用户所在时区的时间显示

</div>

如果您在使用中发现其它问题,请同样前往 Github cmd-editor 页面提出问题,我们会定期修复。

8. 写在最后

Cmd Markdown 在这次更新之后完成了对 Linux / Windows / Mac 全平台客户端支持, 对 Chrome / Firefox / IE(9+) / Safari 的全浏览器支持,同时支持离线使用,智能云同步。终于,世界那么大,带着 Cmd 去旅行。无论你身处何处,思如泉涌,文采飞扬的时刻,在远方打开 Cmd Markdown 开启您的卓越写作之旅。

</div> </div>