跳到主要內容

備份神級輸入法引擎 RIME 使用者字典

注音輸入法一直以來都是我主要使用的中文輸入法,前一陣子心血來潮想多學一個輸入法以備不時之需,如在沒有注音符號的鍵盤上,也能夠順利的輸入(好卑微的心願 XD)。爲了期待能同時加強英文輸入,選擇了漢語拼音輸入法,因爲漢語拼音最接近注音輸入法,轉移上比較可以微痛就好。

在 uBuntu 的環境中,一開始是用 ibus 裡的拼音,但是 ibus 速度上慢上不少,於是換了一套許多使用者推薦的輸入法框架 fictx (Flexible Context-aware Input Tool with eXtension),真是一套穩定又快速的輸入法框架,用一次就愛上了!

在這個框架下,曾經嘗試了由 Android 移植過來的 Google 拼音(fcitx-googlepinyin)、集結雲端智慧的雲拼音(fcitx-cloudpinyin)、早期昇陽開發的拼音(fcitx-sunpinyin)還有原生的漢語拼音(fcitx-pinyin),可惜的是這幾個輸入法的基礎都是建構在簡體中文的基礎上,當我們要對應至繁體字的時候,有些字就會發生錯誤,如「才」->「纔」,在輸入上帶來相當多的不便。在失望之際,看到一篇文章介紹跨平臺的神級輸入法引擎 RIME 中州韻輸入法引擎,能準確的輸入正體中文的輸入法引擎,且其輸入法引擎的演算法符合拼音、注音、五筆等等。

這是一套跨平臺的輸入法引擎,在 Linux 稱爲「中州韻」、Windows 稱爲「小狼毫」、MACOS 上稱爲「鼠鬚管」,這個引擎的好處請參考上述連結文章的介紹,在此不另做介紹,但小弟我一試成主顧了!

在 uBuntu 14.04 開始 fcitx 已收錄至官方的套件庫,安裝上變的更爲方便了,輸入以下的指令安裝即可完成:
$ sudo apt-get install fcitx fcitx-rime
安裝後開啓「Language Support」將 Keyboard input method system 改爲 fcitx,重新開機就可以使用 fcitx 當作輸入法框架,RIME 作爲輸入法引擎,而我使用的是其中的「朙月拼音」。

在 Linux 中「中州韻」缺少 GUI 的界面來備份使用者的字典檔,每次重新安裝系統我們都無法保留下過去的學習習慣。關於 RIME  的備份方式,在網路上很少看到討論,在一篇對岸論壇中的發文曾間接提及,我們可以透過內建的 rime_dict_manager 工具,來達成備份使用者字典檔的功能。
$ rime_dict_manager
options:
-l|--list
-s|--sync
-b|--backup dict_name
-r|--restore xxx.userdb.txt
-r|--restore xxx.userdb.kct.snapshot
-e|--export dict_name export.txt
-i|--import dict_name import.txt

在這裡我想用的是 sync 的方法來同步資料,將同步的資料夾定至 Dropbox 中即可雲端化。方法為需先設定 ~/.config/fcitx/rime 路徑下的 installation.yaml,在最後加入 sync_dir 項目。
$ vim installation.yaml
...略
installation_id: xxxxxxxxx
sync_dir: "~/Dropbox/YOUBACKUP"

修改後先停止輸入法,在系統輸入法 panel icon 上右鍵選擇 Exit 離開,再以 rime_dict_manager 操作:
$ rime_dict_manager -s
在指定的 Dropbox 資料夾中會出現以 installation id 命名的資料夾,裡面會有 *.userdb.txt 的存文字資料檔,可以定期手動的備份一下或是寫一個簡單的 shell script 執行定時備份同步 :)。

留言

這個網誌中的熱門文章

Word的合併列印如何出現「千分位」符號

今天樓下的同事突然問我一個問題,合併列印的時候如何顯示「千分位符號」(逗號),就是12 , 300。在Excel我們可以很容易的為儲存格裡的數字加上千分位的標記,但是儲存格實際儲存的還是只有數字,那個千分位符號是Excel給我們看的一種「格式」。 當我們在Word裡使用Excel做好的報表來合併列印的時候,Word會最真實的將這個數字欄位給讀出來,呈現在合併列印的欄位數值裡,無論在Excel理事不是有設定千分位符號,在Word合併列印後卻沒有出現,所以我們同樣的必須給他加上格式。 Word裡加上格式並不如Excel裡按一下就完成,加上逗號的千分位格式方法如後: 1.在Word裡插入合併列印的欄位變數。 2.在變數上按滑鼠右鍵,選擇「切換功能變數代碼」(也可以直接按Alt+F9),變數會由 經費 >> 變成 { MERGEFIELD "經費" } 。 3.加上格式就是把 { MERGEFIELD "經費" } 在}前加入數字格式參數 /##,###,會成為 { MERGEFIELD "經費" /# ##,### }(這裡指定五位數,以此類推) #:這個格式項目會指定要在結果中顯示的必要位數;如果結果不含該位數的數字,則 Word 會顯示一個空格。 0:這個格式項目會指定要在結果中顯示的必要位數;如果結果不含該位數的數字,則 Word 會顯示 0 (零)。 4.預覽內容,就可以發現千分位(逗號)出現,如果數值有零的話,最好可以換成 /# ##,## 0 ,避免空格出現。 數字格式參數請參考 Microsoft Office Online 。

使用 Stackedit 發佈至 Blogger

使用 StackEdit 發佈至 Blogger 目前部落格裡新的文章幾乎都是在 StackEdit 上使用 Markdown 來完成撰寫,是一個舒適的撰寫體驗,也更能讓自己專注在文章的撰寫,不用去調整版面上的細節。StackEdit 除了可以將文本直接存在 Google Drive 上,圖形直接嵌入引用 Google+ 相簿,讓整個寫作的流程都是在雲端上完成,另外一個我喜歡的優點,是能夠直接將寫好的文章發佈到自己的部落格上。 發佈至 Blogger 部落格 將文章發佈至 Blogger 上的方法非常簡單,在 StackEdit 的左上角開啓左邊的功能列,拉開 Publish 項目並點選 Blogger,如下圖: 第一次使用時會導引至 Google 的授權頁,回到彈出的對話視窗,填寫好 Blogger 的 URL 內容。新發佈不用填寫 POST ID,這個是未來若需要更新內容的時候使用的。 按下「OK」後就完成發佈的動作,發佈完成後,在 StackEdit 該篇文章的右上角會出現 Blogger 的 Icon。 部落格的樣本改造 文章發佈至 Blogger 後有的模板會有小小的問題,如果我們使用 Markdown 時沒有寫入圖片的最大寬度,插入的圖片若比較大就會造成圖形突破樣板的驚嚇感。 這個可以透過自己改造Blogger 模板內容的 CSS,將圖片最大限制在某個數值。簡單一點的方式,是選擇現在 Blogger 中就已經有限制圖片大小的佈景主題。 程式碼高亮標識 StackEdit 的程式區塊是有支援程式碼高亮標識(Highlight)的功能,預設是使用 Highlight.js 的函式庫,也可以使用 Google prettify。Highlight.js 目前已經支援 118 種的程式語法自動偵測。還有 54 種的 Style 可以選擇。但是發佈至 Blogger 後因模板沒有相關的引入,所以程式碼區塊就和一般的文字一樣,沒有區塊和程式碼標識的區別。 我們可以透過修改 Blogger 的樣板的樣式,引入 Highlight.js 的函式庫與樣式。進入 Blogger 的後臺管理頁面,在左方的選單中選擇 範本 ,然後右方選 編輯 HTML ,開啓樣板的 HTML 編輯畫面。 我們可以在 Highlight.js ...

SSH tunnel 方式連結限制區域的伺服器

SSH tunnel 方式連結限制區域的伺服器 自從進了前公司,好久沒有時間好好的更新部落格內容了。近期離開待了將近兩年的公司,和好朋友一起創立了新的新創公司,一起在農業上用技術來幫助返鄉的青小農,希望讓用更有溫度的數據來降低青農們的門檻。 新的開始新的期待,希望自己能繼續保持赤子熱忱,把研究過的方法記錄下來分享。 在這個資安即國安的時代(嗯…那是政府的口號),大部分的伺服器都會有許多的安全設定,無論是更新的規則或是防火牆的限制等等。會限制在某個網段甚至是某個 IP 才能進行連線某些服務,對於常常喜歡加入文青到咖啡廳 Out coding 的宅宅,還是要想辦法鑽回去連線伺服器。 如果在限制區域中有一臺能對外開放連線的 SSH 機器,我們便能夠使用 SSH Tunnel 的方式橋接回去,透過通道連結到目標伺服器。說穿了其實這臺對外的機器就是跳板,我們可以利用這個跳板以類似 Port forwarding 的方式,將遠端伺服器的 IP 與 Port 對應至本機的一組位址與 Port。 Linux 下的連接方式 大部分的 Unix-Like 系統都有內建 SSH 的 Client 指令,我們只需要在 terminal 下指令就可以達到目的。 指令如下: $ ssh - N -f - L LOCAL_PORT :DEST_HOST :DEST_HOST_PORT SSH_USER @SSH_SERVER_IP SSH 參數說明 -N : 連接後不執行任何的遠端指令 -f : 連線後在背景執行 -L port:host:hostport: 在 Client 與 Server 建立一組 secure tunneling LOCAL_PORT :本機連接埠 DEST_HOST :目標連線伺服器位址 DEST_HOST_PORT :目標連線伺服器埠號 SSH_USER@SSH_SERVER_IP :做爲跳板的機器連線 Example: $ ssh -N -f -L 33890 :192 .168 .1 .100 :5022 username @ 168.95.1.1 上述的例子,會透過 168.95.1.1 這臺跳板機器,將限制區域內 192.168.1.100,Port...