Coroutine: 入門篇

Coroutine 一般翻譯作「協程」,對一般 programmer 來說可能有些陌生,但其實這個想法早在 1963 年就被提出來了。近年來因為 multi-threading 的普及,主流語言鮮少提供 coroutine 的功能,但即使 coroutine 與 thread 的概念相似,卻有許多截然不同的特性,不少場合使用 coroutine 既能優雅地解決問題,又能避免 multi-threading 的 race condition。本系列文章將會介紹 coroutine 的基本概念及應用場合,讓原本複雜的流程變得簡潔易懂。

Lua 是支援 coroutine 的語言之一,同時也具備簡單易學的特性,以下將會使用 Lua 程式碼作為 coroutine 的示範。對 Lua 不熟悉的讀者可以參考 Lua Tutorial Dictionary 上的教學,實際學起來是很快的。

繼續閱讀

分享到 評論

在 Windows 下讓 GVim 完全使用 Unicode

在中文版 Windows 底下,GVim 預設會使用 cp950 作為編碼方式,而相信許多人都對 cp950 感到厭惡,我也是其中之一。因此在編輯 _vimrc 的時候第一行就是 set encoding=utf-8。然而這樣做有個副作用:導致 GVim 的選單全部變成亂碼。解決的方法其實非常簡單,卻不是看看文件就可以馬上找出這個解決方法,因此在這做個記錄。

選單變成亂碼的原因在於 GVim 會先跟據系統的語系去讀取安裝目錄底下的選單設定檔,而在中文版的 Windows 下,預設會讀取以 cp950 儲存的選單設定檔,而建立完選單後,才會讀取使用者的 _vimrc。此時若把編碼改為 UTF-8,那麼之前以 cp950 讀入的選單文字當然就變成亂碼了。解決的方式是把選單刪除並且重建一次:

1
2
3
4
5
6
7
let $LANG="zh_TW.UTF-8"
set langmenu=zh_tw.utf-8
set encoding=utf8
"reload menu with UTF-8 encoding
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim

這麼一來,GVim 就會全面使用 UTF-8,選單也是正常的。

分享到 評論