電影流水帳(2008/04/14~2008/04/16)

現在硬碟不值錢啊~250G 的 IDE 硬碟才 2000 元大洋,這是在暗示我敗下去嗎?

  • Eragon(IMDB, Wikipedia),中譯:龍騎士。Eragon 是主角名字,龍騎士應該是 Dragon Rider 才對,這一集只描述了 Eragon 如何成為龍騎士,並打倒小魔王的經過,還不錯看,不過沒有什麼特別驚奇的感覺。我想如果沒意外的話,這肯定會有第二集吧~
  • 長江7號 (CJ7)(IMDB, Wikipedia)。嗯嗯,主角並不是星爺喔,所以並不是搞笑片,而是拍給小朋友看的,我猜是星爺要完成年輕時當兒童節目主持的心願吧~雖然劇情有點老套,不過在後面我還是不爭氣的掉下幾滴眼淚,想起國中看魯冰花時,也是流的滿臉淚~對於這種催淚片,我不是不愛看,而是不想看,避免暴露太多情緒~

BOO(2) – Hello world!

接下來的系列文章,大致會照著BOO Primer的章節來作介紹。

是的,永遠的 Hello world!

BOO 的 Hello world! 非常簡單:

// 把 print 當 macro 使用,什麼是 macro ??日後再說明
print "Hello world!"
// 或者是拿 print 當函數使用
print("Hello world!")

官方建議使用 print macro 的版本,我想是效率上的考量,macro 在執行時會展開為真正的代碼,而不是以函數呼叫的方式來處理。不過我覺得這見仁見智,差別不是很大。另一個好處應該是很像 Python 吧~

電影流水帳(2008/04/12~2008/04/13)

看了兩片,都不是有在台灣上演過的院線片,在IMDB上都標注了 TV,所以應該是電視台製作的片子吧~

  • The Wilde Girls (2001) (TV),中譯:狂野女孩,片名應該是從原片名亂掰的。Wilde 是主角的 Last name,所以故事主軸是在描述女人的故事。主角是個歸隱的歌手,獨自撫養女兒,與媽媽住在一起,女兒很想成名、出去闖闖,可是主角因為過去的不愉快經驗,非常排斥,不過主角的媽媽倒是很支持。主角的媽媽為了幫他孫女,就找了在飛機上認識的製作人來,於是故事就推展出來。我覺得還不錯的片子,可以看看。
  • Earthstorm (2006) (TV),中譯:地球風暴。在CineMax看到了,因為隕石的撞擊,月球核心受到損害,開始崩裂,為了拯救月球,於是展開行動。不怎麼樣的片子,不用特別去找來看了。

電影流水帳(2008/04/06~2008/04/11)

有些事情不適合在檯面上說,總之,看片腳步要加快…

  • Enchanged(IMDB, Wikipedia),中譯:曼哈頓奇緣。王子與公主的故事加上時空背景的錯置,最後的結果你應該可以預期的到。只是,最後王后何必要變成龍呢?反正王子也不會娶那個公主啦,王冠這種事情可以談的~何必搞成這樣?娛樂性還不錯,可以看看。
  • Saw 4(IMDB, Wikipedia),中譯:奪魂鋸4 (中文官方網站)。之前有看電視廣告,說什麼片段不適合在電視上播出,要看的人請進電影院,結果沒有預期中那麼地驚悚、恐怖、血腥、暴力,我自己看完以後有種摸不著頭緒的感覺,覺得不怎麼樣好看。看來續集電影最好還是不要超過 3 部,這是魔咒~

BOO (1)

BOO是一個兼具動態語言特性與靜態語言特性的語言,比IronPythonIronRuby還要早誕生,但是使用的人卻不多,我對他會有興趣的原因是因為他很接近 Python,而且可以編譯為 exe/dll、定義出屬於自己的 Domain-specific language(使用 macro)。
Q:哪裡可以取得?
A:你可以到 BOO 官方下載網頁 下載。
Q:如何安裝?
A:解開下載來的壓縮檔即可,除此之外,你還需要安裝 .Net framework 2,這可以用 Windows Update 裝起來。此外,你也可以透過安裝Mono或是SharpDevelop 2.x的方式來取得。
Q:跟其他 .Net 語言,如 c#, vb.net 等,有什麼不一樣?
A:最大的不同點在於BOO可以當作 script 來使用,你可以使用 booi 直接執行程式,或是像Python一樣,當作 SHELL 來使用 (booish)。
Q:如何使用?
A:

  • 當作 shell 來使用:解開之後,你可以在 bin 目錄下找到 booish.exe,點選以後執行。
  • 執行 script:在命令提示字元下切換目錄到 boo_path/bin 以後,輸入 booi your_script.boo
  • 編譯為 dll/exe:在命令提示字元下切換目錄到 boo_path/bin 以後,輸入 booc -target:[exe|library|winexe] -o:輸入檔名 your_script.boo

Q:有哪些文件可以參考?
A:官方網站的 Tutorials 列出了相當多的文件,我自己主要是參考Boo Primer

包在 Mono Windows 版裡的東西

再隨手記下一些:

  • VisualPng.exe,可以看 png 的軟體
  • webshot.bat,可以抓取網頁當作圖片的 console 程式,不過在 Windows 跑不起來,會丟出需要 gtkembedmoz 的錯誤訊息
  • ipy、ipy2,是的,有把 IronPython 包進來,不過互動模式怪怪的。
  • ikvm,這是之前就有的,詳情請參考ikvm官方網頁說明,是可以讓 Java 程式在 mono 上執行的程式(甚至是互轉)
  • jay,類似 yacc 的 parser,是的,c# compiler 就是以此為基礎
  • xulrunner,好像是這一版才加入的,印象中之前並沒有,用途不明…
  • cilc,用途不明,help 是寫:Mono CIL-to-C binding generator
  • monop、monop2,把類別的公開介面列出來的 console 程式
  • monolinker,可以只把需要的類別抽取出來或是把一些程式安插進去的程式。

pythonw 與 monow

Windows 版的 Python 在安裝以後,你會發現目錄下除了 python.exe 以外,還有一個 pythonw.exe,這是做什麼的呢?
簡單的說,python.exe 是一個 console 程式,執行 Python 程式的時候,在建立捷徑的時候,你會這樣寫:python your_app.py,但是執行時會出現一個黑色的 console 視窗。
pythonw.exe 作用則在於,不出現那個黑色的 console 視窗。
好,那 monow 的作用為何,你應該也能了解了吧~
特別指出這個的原因,是因為我這幾天在看 Mono 裝了什麼東西時發現的,其實我陸續還有看到一些東西,慢慢再介紹。

電影流水帳(2008/03/29~2008/04/05)

一部片子不錯,另一部片子則不怎麼樣,這就是所謂的“一則以喜,一則以憂”嗎?

  • Aliens vs. Predator: Requiem(IMDB, Wikipedia),中譯:異形戰場2-適者生存。嗯嗯,老實說,我覺得這部片子特效是還可以,但是實在是不太值得進電影院去看,第一集還比較好看呢~
  • Ratatouille(IMDB, Wikipedia),中譯:料理鼠王。我覺得跟超人特攻隊一樣,都是給大人看的卡通,劇情不用多說了,網路上應該都可以找到。最後美食家所寫的那篇評論,相當感人,值得一看的卡通。

亂碼 1/2

此亂碼非彼亂馬啊~
家裏 Server 的 Mono 升級到 1.9 以後,ASP.Net 網頁裡的中文突然都變成了亂碼,可是我什麼都沒改啊~
由於個人因素 (就是懶啦),一直都沒去管,今天看開了,決定找出真兇…
首先試著直接跑 xsp2 之後,用 Browser 去看結果,正常,沒有亂碼。很好,那麼應該是 mod_mono 跟 Apache 的問題囉~
再看看有亂碼的網頁,看看送出來的網頁與 Response header 是否正確,送出來網頁的中文都變成了 ?,可是從資料庫撈出來的字卻又都沒問題,可以正常顯示,網頁的 Response header 也沒問題。很好,那真的是 mod_mono 與 Apache 的問題了。
仔細看了 mod_mono 的設定,唯一我覺得有問題的,就是 MonoSetEnv,可是我確實地已經設定了 MonoSetEnv “LANG=en_US.UTF-8″,應該不會有問題才對。
好,那麼就寫個簡單的網頁把所有環境變數列出來看看,果不其然,LANG = C,這表示LANG並沒有被設定,那麼會出現亂碼也是很正常的了。LANG 對 Linux 來說,是很重要的環境變數,沒有這個,很多應用程式將無法判斷目前所在的語系與編碼。
那麼是 mod_mono 問題囉?可是看過 source code 之後,發現沒有特別針對 MonoSetEnv 做什麼修正,再回頭看看列出來的環境變數,我發現我在設定檔裡面設定的 TEMP 環境變數有生效,那麼?!
再仔細看一次 mod_mono 的說明,原來如果你要設定多個環境變數時,要加上 ‘;’,所以在我改寫為 MonoSetEnv “LANG=en_US.UTF-8;TEMP=/var/tmp”,重新啟動之後,問題就解決了。
p.s. 那…為啥以前沒錯?! 我想可能是 Apache 的 apr 行為有改變吧~