極端的好處

,

我一向有個習慣,就是對於很好學(容易)但是效果只有80分的東西沒有興趣,但是如果很難學但是效果有90分,我就會覺得特別起勁,可能是因為困難,會讓我有成就感吧。

忽然想到,因為這樣的個性,所以對於一些冷門、小眾的東西我滿有興趣的,也常常因為這樣知道了一些有趣的東西,這樣的個性對於別的職業有沒有好處我不清楚,不過對於軟體工程來說,到還是滿有幫助的。

下星期五就解脫了,回歸到學生和讀書生活,希望到時候能把這兩個月一些心得整理出來。

碎碎唸就到此了,晚安。

,

我很想寫 blog,也累積了 好幾個題目可以寫了。

但是我沒時間 ...

上班真的好忙喔 ... 又要月底了,壓力好大。

My Favorite Browser

,
我是個 Mac fan,也很喜歡 safari,在 windows 上我通常會用 chrome 或是 safari(我也是個 Google fan :D ),對我來說 Firefox 是在需要 Firebug 時才會開的,而其他 M$ 的瀏覽器 就...
by the way, 在 ubuntu 上我用 firefox (因為沒得選)

不過這次的工作內容被迫要用一台很破的 Windows 開發,當我沿襲以往的瀏覽模式(開很多視窗,Gmail、Plurk、Facebook、document、API、wiki、RSS reader)我的電腦變得很慢~很慢~很慢~,切換視窗時有時居然要花上數十秒,這讓我開始測試眾多的瀏覽器。

(沒有留下測試數據,所以這是不負責任的評測 :D )
最後發現,在 windows 上,Opera 大勝,改用 Opera 後電腦就不再 lag 了。
在 Mac OS X上,OmniWeb 大勝,不管是佔用記憶體,還是開啟速度都是最快的。
(safari 用久了也還是會 lag)
而在 ubuntu 上,Opera 和 Firefox 差不多快,但是 Firefox 記憶體還是吃比較兇。

完畢!

Dynamic linker on FreeBSD

,
通常在使用 Unix-like 系統的人會很習慣使用套件管理程式,比方說 port on FreeBSD, apt-get on ubuntu,它會幫你把所有有相關性的 library 都裝好,但是有些時候,你如果想要自己指定相關性的 library 的時候怎麼辦呢?

之前在使用 Hadoop 時就遇到一個例子,我想要在 90 台電腦上跑 MapReduce ,而且想要用我熟悉的 Ruby 來跑,但是這 90 台電腦我並沒有安裝軟體的權限,並且在 cloud 裡面的電腦要盡量保持乾淨,可不能因為我一個人的"好惡"就亂裝一些有的沒的,經過 rafan 大的開示,有兩條路走:

  1. 找 static linked 的 Ruby 來用
  2. 自己把 shared 的 library 一起丟上 cloud

在 FreeBSD 上有一個指令是 ldd,會列出你使用的檔案會連結到那些 .so 檔(奇怪的是在 ubuntu 上也有這個指令 ldd),另外在 Mac OSX 上要用 otool 指令。

找到了 shared library 當然就是把他一起傳上去啦,但是執行時,要先在 shared library search path 中指定要去找你傳上去的位置,改變 search path 請指定在 LD_LIBRARY_PATH 變數中。

更多有關 dynamic library 的訊息可以看看 rtld ,它有解釋有那些環境變數可以用。

Unix-like 的系統真的非常有彈性。:)


Vim with Mouse

,
之前遇到了一個問題是在"某些"機器上把 Vim 升級成 7,會無法在 PieTTY 上使用右鍵貼上文字,但是在 shell 是正常的,所以很明顯的 Vim 做了一些 OOXX 的事情。

後來是經由 rafan 大告訴我們多設定一個 mouse-=a 就可以了,但是怎麼可以解決就算了,知其然不知其所以然呢?

後來看到 vim documentation, 裡面的第五點 using the mouse,才恍然大悟,原來平常使用 vim 時,就算有用滑鼠把東西 paste 進去 terminal 中,也是使用 system level 的 copy paste,vim 完全只扮演一個文字編輯器的角色,而輕點右鍵就算是"貼上"這件事情應該是 PieTTY 做的,算是 hot-key。

因為他已經寫的很詳細了,我就小小翻譯一下,做個筆記。

5. 使用滑鼠篇

現在來談談有關在 terminal 中使用滑鼠的方法吧,另外,如何在 GUI 視窗中(我想是 GVim)使用滑鼠是別的章節,而如何使用滾輪鼠也是在另一個章節

要在所有 mode 中都可以使用滑鼠要設定指令如下:

:set mouse=a

除此之外 Vim 在任何模式下都不能辨認你的滑鼠。(詳情請看這裡

目前來說,在以下情況滑鼠都會被支援,Unix 中的 xterm window、Linux 中的 console(GPM)、MS-DOS、Windows 中的 console。
支援定位你的 cursor,也可以拿來選擇區塊和貼上等等。

在 mouse 變數中用這些參數來告訴 Vim 要在那些 mode 可以使用滑鼠。
 n Normal mode  
 v Visual mode  
 i Insert mode  
 c Command-line mode  
 h all previous modes when in a help file  
 a all previous modes  
 r for |hit-enter| prompt  
 A auto-select in Visual mode
在預設的情況下,mouse 變數中會是空的,也就是不使用滑鼠(應該也是 Vim7 之前的情況),通常如果要使用滑鼠,你可以這樣做:

:set mouse=a

(這和設定 mouse=nvich 是一樣的)
如同上面解釋的,如果你只想在少數幾種 mode 使用滑鼠,那必須要把字母串接起來,像是:

:set mouse=nv

意味著在 Normal mode 和 Visual mode 中使用滑鼠。

:set mouse=h

意味著只能在看 help file 時使用滑鼠。(所以你可以用 q 跳到 tags

要判斷用滑鼠選擇過的區塊是在 Visual mode 還是 Select mode 是根據 "mouse" 有沒有被包含在 selectmode 選項中。

在 xterm 中,如果你現在在使用的 mode 有在 mouse 變數中被設定,那你按 shift 或 ctrl + 滑鼠點一下會到 xterm,如果沒有設定,那不論在什麼 mode 滑鼠點一下都會到 xterm。(這邊我也不太了 ~"~)

*xterm - clipboard*
AthenaMotif GUI 版本中,如果跑在 terminal 上並且去存取一個 X-server,那複製-貼上的行為就會像是在 GUI,如果沒有的話,那滑鼠中鍵會 insert the unnamed register (又看不懂了)在這個情況下,我們要複製並且貼上一段純文字會這樣做:

使用 mouse 和 Visual mode 來複製-貼上(mouse 變數要先如上設定喔)
  1. 在你要選的第一個文字上按住滑鼠左鍵,移動到你要選的最後一個文字在放開左鍵,這樣會是使用 Visual mode 選擇這些文字,而且會有 highlight 的效果。(我實在不想翻譯成 語法"高亮")
  2. 按下 y 來 yank 這些被選中的文字,放到 vim 的 register 中。
  3. 在你要貼上的地方按一下滑鼠左鍵,把游標移過去。
  4. 點滑鼠中鍵
剩下的不翻了,後面有點離題了。 XD

<簡報上線> Functional Programming 之二三事

,
自從 Google 發表雲端運算以後, concurrency computing 才開始漸漸受到重視,連帶的適合進行 parallel 開發的 functional programming 也開始"逆襲"了。

其實 functional programming 實在不算是新的技術,近年來 Ruby, Python, Perl 等語言紛紛加入一些 FP 的 features ,才漸漸讓比較多人知道這個 programming paradigm,甚至有很多人在使用 FP 也不自知,所以就算是資訊相關行業/科系來說,也很多人之其然不知其所以然,使得 FP 仍然像是一個鎖在學術象牙塔的名詞。

這次的 share 就是希望讓沒聽過、或是不了解的人能夠對 FP 有一定的認識,順便也藉由在 Yahoo! presentation,訓練一下自己"很久沒用"的簡報技巧。

目前還找不到空間放 slide(動畫太多,slideshare 傳上去也會 error ~"~),所以先存成動畫檔放在 youtube,之後找到空間在補上 pdf 和 keynote 版本。

謝謝今天的聽眾在超出時間很多後還留下來"加班"聽我簡報到 7:00,對我不離不棄。 :)

投影片(youtube)


投影片(slideshare)