[關閉]
@ghosert 2015-05-04T08:12:03.000000Z 字數 2886 閱讀 16813

Cmd Markdown 發布第十次更新 --- 走,帶著 Cmd 去旅行

Cmd-Markdown


我是 作業部落Cmd Markdown 的主要開發者,您可以通過微博關注我 @ghosert

對不起!這是一次遲到的發布。

一直以來我們和用戶一樣,對 Cmd Markdown 充滿自信,直到幾個月前,我們聽到人民群眾對于 Cmd Markdown 客戶端的呼聲此起彼伏,的確,只從自己的角度去考慮問題,認為人人喜歡網頁版的軟件,時時刻刻有網絡環境,那是在犯罪。那一刻起,懷著一種負罪感,我們決定開發自己的離線客戶端版本。在文本編輯的時候把 “在線” 兩個字刪除只需要 0.5 秒,在軟件開發的時候把一個在線應用改造成離線客戶端需要更長一點的時間,從在線到離線大概是五個月的時間,所以謝謝五個月的值守,今天開始, Cmd Markdown 將在 Windows/Mac/Linux/瀏覽器 全平臺支援 您對寫作的苛刻訴求。

Cmd Markdown 全平臺客戶端下載地址

1. 離線使用瀏覽器版

在線編輯器嚴重依賴網絡的問題嚴重困擾著那些走在路上的文字工作者,譬如:記者,學生,旅行者。在沒有客戶端時候我們希望瀏覽器也可以擔負離線編輯的責任,所以我們將 Cmd Markdown 的網頁版本身改造成了可以離線使用:現在開始,只需要訪問過一次我們的 網頁版鏈接 您都可以在下次沒有網絡的情況下重新訪問這個網址,離線使用我們的網頁版 Cmd Markdown。是的,在沒有網絡的時候仍舊使用瀏覽器的確和直覺不太相符,但是這真的發生了,所以請收藏我們的 網頁版鏈接 以備不時之需。

在不穩定的網絡條件下,Cmd Markdown 同樣可以很好的工作。它會根據網絡狀況動態切換離線在線模式,確保數據首先存儲在本地,再次更新到服務器做備份。不必擔心發生數據丟失的狀況。

2. 智能云同步

sync-pic

無論是可以離線使用的瀏覽器版,還是客戶端,在離線使用并重新連接網絡之后,所有新增、刪除、修改的文稿都會和服務器上的版本做同步處理,保證那些在離線狀態下的修改在服務器有同樣的備份。在今后更換電腦、工作地點的時候,都能再次調閱編輯最新的內容。這些動作會適時自動進行,大多數情況下并不需要用戶主動干預,我們有一套智能的同步算法確保不同客戶端的同一份文稿在同步的時候進行自動合并的動作,譬如:

原始稿件 A 內容為:

111
222
333

客戶端 1 在線狀態修改 A 為 A'

222
333

客戶端 2 在離線狀態修改 A 的內容為 A''

111
222
333
444

當客戶端 2 連接上網絡的時候,最優結果是智能合并 A' 和 A'' 的結果到 A'''

222
333
444

我們測試了許多知名云筆記品牌的做法,很遺憾面對此種局面,它們大多粗暴地選擇直接用 A'' 的結果覆蓋 A' 的內容,造成用戶編輯過程丟失的惡果,簡直無力吐槽。

3. 用戶干預下的版本沖突處理

智能云同步可以解決大多數文稿版本問題,但是在用戶意圖本身就沖突的時候,我們仍然會以最大的善意要求用戶確認其真實意圖,舉個例子:

原始稿件 A 內容為:

111
222
333

客戶端 1 在線狀態修改 A 為 A'

111
AAA
333

客戶端 2 在離線狀態修改 A 的內容為 A''

111
BBB
333

當客戶端 2 連接上網絡的時候,除了作者誰都無法知道其真實意圖:將 222 修改為 AAA 抑或是 BBB?此時 Cmd Markdown 會自動計算這些差異并讓用戶確認其真實意圖,如下圖:

diff-window

哇哦!的確足夠聰明!

4. Windows / Mac / Linux 全平臺客戶端

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
基于用戶所在時區的時間顯示

如果您在使用中發現其它問題,請同樣前往 Github cmd-editor 頁面提出問題,我們會定期修復。

8. 寫在最后

Cmd Markdown 在這次更新之后完成了對 Linux / Windows / Mac 全平臺客戶端支持, 對 Chrome / Firefox / IE(9+) / Safari 的全瀏覽器支持,同時支持離線使用,智能云同步。終于,世界那么大,帶著 Cmd 去旅行。無論你身處何處,思如泉涌,文采飛揚的時刻,在遠方打開 Cmd Markdown 開啟您的卓越寫作之旅。

添加新批注
在作者公開此批注前,只有你和作者可見。
回復批注
湖北快三遗漏