2007/02/06

好用的 VM:VirtualBox

今天看雜誌的介紹,有提到一個叫 VirtualBox 的虛擬機器,剛剛下載回來安裝,速度上不比 MS 的 VPC 差,覺得很滿意。
不過他的 ShareFolder 設定方法比較麻煩,所以我紀錄在這邊:
  1. 先把一個虛擬機器 Run 起來,裝完作業系統(XP)後 Shutdown。
  2. 開一個 DOS 視窗,切換目錄到 VirtualBox 的安裝目錄(C:\Program\InnoTek VirtualBox)。
  3. 執行 VBoxManage sharedfolder add "VM name" -name "sharename" -hostpath "C:\test"
    • VM name 指的是虛擬機器的名稱
    • sharename 指的是在虛擬機器中的 ShareFolder 名稱
    • C:\test 指的是 Host 裡面的路徑名稱
  4. 或是你也可以直接修改設定檔,你可以看一下 VirtualBox 的 File 選單中的 Global Settings 裡面的 Machines 的目錄,在該目錄底下你可以找到相關的 VM name 的目錄,在該 VM name 的目錄下,有個 xml 檔案,打開來編輯,加入:
    •       <SharedFolders>
              <SharedFolder hostPath="C:\test" name="sharename"/>
            </SharedFolders>
  5. 啟動虛擬機器,開機完後在虛擬機器中打開 DOS 視窗,執行:
    • net use x: \\vboxsvr\sharename
  6. 打開檔案總管,就可以看到 ShareFolder 了。

介紹兩套樣板系統

上次石頭談了一些有關樣板系統的事情,這次我來介紹我喜歡用的兩套樣板系統:

第一套是 TBS(TinyButStrong),俗稱小強。這套我最早是看到 Neo 的這篇介紹知道的。
這套的優點就是小而快,不過缺點就是要整版輸出,很難用拼版的作法(要繞個彎)。

第二套是 SmartTemplate,這套是我弟介紹給我用的,我當時在找 PEAR::HTML_Template_ITX 的替代品,他就介紹了這套給我。
這套蠻合我的口味,缺點就是修飾子的運用方法不像 TBS 那麼強大。

博客男女測試

看到石頭那邊的介紹:博客男女測試,我也去博客男女做了一下測試,感覺還蠻準的
不過評語和石頭一樣,該不會同一百分比的評語是相同的吧?

結果如下:
失落的技術
100.0%男性倾向,0.0%女性倾向
  
评点:您的文风冷静而镇定,言语间展现出强悍的思辨能力与恢宏的胸襟,一个男子汉的阳刚形象跃然纸上。
yodao | 博客男女

新增了一個網誌

剛剛把 Blogger 開通了,那邊準備放一些雜七雜八的收集品。
兩邊各有優劣,我覺得 PIXNET 這裡的編輯器比較好用,而 Blogger 那邊的版面設定比較優。
我還是會以這邊為主,Blogger 那邊是不定時在更新。

2007/02/04

以世俗觀點論李嗣涔鎖學生論文

眾所周知,李嗣涔教授關於特異功能的研究,常被學術界的人抨擊。
依我個人看來,這次鎖論文事件,有點「賭氣」的成份在。
在石頭那邊,鎖不鎖學術論文之我見,我用研究道德的觀點做了一些評論,這次我想用一些比較世俗的、權謀的觀點來談這件事。

首先我要提的事情是,學術界其實很黑暗,沒有一般人想像的那麼崇高。

先從碩士論文說起,今天你發表了碩士論文,拿到碩士學位,這不代表你一輩子都是碩士。
因為碩士資格是隨時都會被追回的,只要你的論文作假、抄襲或是有顯著的瑕疵,前面兩者就不談了,但顯著的瑕疵這點是可以雞蛋中挑骨頭的。
一般來說,既然口試委員都願意幫你的論文背書了,基本上頂多事後補強一些東西,修改論文後就過關。但有些研究會有灰色地帶,比如說只有理論推導,沒有直接實證的先期型研究。這類型研究一般來說不會出現在碩士論文中,通常是博士或是博士後研究才會出現。
從那篇論文口試委員的意見中,我們可以得知這篇論文是屬於先期型研究,在加上論文題目的爭議大,我不太能夠了解為何李教授要讓他的學生來發表這篇,照理說,這篇論文並不適合在碩士生的論文中出現。

無論如何,這篇論文已經出現,而鎖論文的時間點又不是一開始就鎖,而是 楊信男教授「質疑」論文內容,想去圖書館找全文時,才發生這個新聞事件。
而我從楊教授的角度來看這件事,如果我真的想看這篇論文的全文,真的沒辦法看得到嗎?非要透過媒體製造新聞事件嗎?不要說這篇論文七月多發表,十月時才鎖,這中間沒人拿到原文是很不可思議的事情,真的要看,難道不會去找李教授當面要嗎?再不然,加入李教授的研究小組,也可以拿到第一手資料,何必搞這一套?
所以我個人認為,李教授鎖論文是有可議之處,但為何他會在楊教授去查全文時才作鎖論文的動作,其不言而喻的的理由便呼之欲出。

所以我建議楊教授,你可以好好的跟李教授請益,畢竟人家也不是小氣鬼,而且當時作研究的人都找的到,有必要搞到這一步嗎?
在學術界有一句話是:站在巨人的肩膀上走出一小步。這是比較好聽的說法,難聽一點就是,拿別人的東西不勞而獲。有骨氣的話,自己作研究去證明真偽,不要去為難小小的碩士生,這樣很難看。

至於為何要鎖論文十年,我個人的想法是,十年後,該研究生在社會上也站穩腳步了,無須碩士光環來找好工作,到時無論這個研究是真是假,都不影響該生在世上安身立命,當然這是比較權謀的說法。

當然,從有新玩具可玩的角度來講,開放論文是比較好的,不過人家就是不給你看也沒犯法,要不自行努力,要不十年後請早。用石頭的說法:在「知識」的眼中,幾千或幾萬年的時間相差無幾,早一千年知道、晚一千年知道,並沒有什麼太大差別。

既然早晚一千年都沒差了,那晚十年會有差嗎?我也不相信楊教授是真的想研究撓場這一塊,在我眼中看來,找碴的成份居多,但是找碴請對正主,不要為難人家的學生。

2007/02/03

在 Windows 下編譯 PHP 模組告一段落

這幾天生病在家修養,沒有在搞東搞西,讓自己沈澱一下。
思考後發現,目前研究如何在 Windows 下編譯 PHP 模組的部份可以暫時告一段落了。
理由是我發現作這件事情對我的目標並沒有實質的效益,我的目標是開發程式,不是產生開發環境,而有關一開始提到的記憶體使用的函數,可以用其他方式達成,我也實做出來了,因此接下去應以程式開發為主了。

2007/02/01

iconv 和 gettext 的編譯方式

iconv 和 gettext 這兩個 Extensions 必須一起編譯,所以就一同介紹。
要注意的是,目前沒辦法拿最新的版本來編譯,我測試過可以成功的版本號碼如下:
  • iconv:libiconv-1.9.2.tar.gz
  • gettext:gettext-0.14.6.tar.gz
在下載源碼時請務必注意版本號碼,下面介紹編譯步驟:
  1. 源碼可從每個 GNU FTP Mirror 取得:FTP 列表。
  2. 下載後解開至 D:\Work\test\iconv、D:\Work\test\gettext
  3. 切換目錄至 D:\Work\test\iconv,執行:
    • nmake -f Makefile.msvc NO_NLS=1 MFLAGS=-MT
    • nmake -f Makefile.msvc NO_NLS=1 MFLAGS=-MT install
    • nmake -f Makefile.msvc NO_NLS=1 MFLAGS=-MT distclean
  4. 切換目錄至 D:\Work\test\gettext,執行:
    • nmake -f Makefile.msvc MFLAGS=-MT
    • nmake -f Makefile.msvc MFLAGS=-MT install
  5. 切換目錄至 D:\Work\test\iconv,執行:
    • nmake -f Makefile.msvc MFLAGS=-MT
    • nmake -f Makefile.msvc MFLAGS=-MT install
  6. 現在可以從 C:\usr 中找到編譯所需的檔案:
    • 複製 C:\usr\include 中的 iconv.h 和 libintl.h 至 D:\Work\win32build\include 中
    • 複製 C:\usr\lib 中的 iconv.lib 至 D:\Work\win32build\lib 中
    • 複製 C:\usr\lib 中的 intl.lib 至 D:\Work\win32build\lib 中,並更名為 libintl.lib
  7. 修改 PHP 源碼中的 ext\iconv\config.w32,將第7行:
    • if (/*CHECK_LIB("iconv.lib", "iconv", PHP_ICONV) &&*/
    • 改為
    • if (CHECK_LIB("iconv.lib", "iconv", PHP_ICONV) &&
  8. 修改 php_conf.bat 加上參數 --with-iconv 和 --with-gettext
  9. 重新編譯 PHP,執行:php_make.bat
  10. 編譯完成後安裝請執行:php_make.bat install
  11. iconv 可以動態連結也可以靜態連結,可以單獨載入(可使用 --without-gettext)
  12. gettext 只能靜態連結,且必須與 iconv 一同載入(不可使用 --without-iconv)
  13. 建議將兩者都使用靜態連結