gaygay 小中

我有一個學長,我都稱呼他:大大。每當我這麼叫他時,他都會回我:gaygay…有時候也叫我小小…他跟我有些興趣很相似:我們都看 NBA、都喜歡打籃球、也喜歡奇幻文學,不過他總是比我專業多了,他看 NBA 雜誌、他身高可以打萬能中鋒、他已經看完所有的龍槍傳奇!當我興高采烈想跟他討論魔戒時,他說那不過是佛羅多登山記,一點都不好看,哈哈,真的蠻好笑的…

我有一個學長,我都稱呼他:大大。每當我這麼叫他時,他都會叫我:gaygay 小中…他畢業後有一陣子,我不知道他去哪了,後來聽人家說他去了大陸。當他回來時,找我們一群人去南師附近吃牛奶鍋,我已經忘記店名了,但我記得當晚大家都很快樂,他跟我們分享了很多大陸有趣的事情,原本我還擔心會有點陌生感,因為我不善於跟人維繫情感。今年他又準備動身去大陸時,找了小明學長、玉琳學姐和我去吃臭臭鍋,他說:去大陸前,要把所有想吃得東西吃完才走!當天,我們還討論了很久 Lab 旅遊的事,他還一直耍賴地說要等他回來在一起去,哈哈!對了,他還請我糾眾去打一場籃球,不過我當時在忙,一點都不想弄…

最後一次跟他吃飯,是吃小虎牛排旁的不知名牛排,當天他說很想去誠品走走,我很懶,但也順了他的意,那天誠品有大鬍子澎澎頭羅素的攤位,裡頭有兩個女生在教一大群小朋友畫畫,大大跟我說他想畫一幅送他媽,他覺得這超酷的,可惜上課的時間跟他要去大陸的時間衝突了!當天還有恐龍展,看著身旁都是小孩子,就我們兩個二十來歲的大哥哥,其實蠻有趣的…

我有一個學長,但我都不叫他學長,他也不叫我學弟!印象中,他喜歡找我去做些我覺得奇怪的事,已經忘記是哪些事了,但我記得我總是答應得很勉強,不過結局似乎都蠻快樂的…

有一天,大大突然走了,學弟問我:是不是跟他很要好?我不知道該怎麼說,我只是覺得好難過,我覺得我不夠珍惜這個朋友…

周肥羊生日快樂

生日快樂!肥羊弟弟!kuso.vnoo.com.1.03

我特定把我 blog 的這一天留給你,希望你未來一年專題順利、拿著你 D80 到處趴趴走、拍出漂亮的照片給我放在 blog XD。至於不高興的事,就忘了它們吧,老爸還是很愛我們的,只是他有男人的矜持,呵呵!不像我,可是拋開男性尊嚴在跟你道賀啊,我們已經認識二十多年了,希望以後、以後的以後都還是能相互扶持啊,不管發生什麼事,至少還有你老哥在!kuso.vnoo.com.1.02

D80 就交給我啦,你老哥可是科技新"貴"啊! kuso.vnoo.com.3.03  D80 是小 case 啦~鏡頭小喀啦~防潮櫃 ok 啦~腳架用零頭買就好啦~哈哈!聽說攝影師拍照的時候,超帥的,很多 model 都會愛上咧,你要幫我找個 model 當弟妹嗎~哈kuso.vnoo.com.1.05

要快樂,好嗎?kuso.vnoo.com.1.18

Leo is the Daywalker!!

走在回實驗室的路上,想起小路學長常說起的一句話:聽起來好像幹了件大事!

哈,是啊,我好像真的幹了一件大事?!有些人面對可能改變的事,總是顯得猶豫、甚至躊躇不前。如果事情只關係到自己,我倒也無所謂,畢竟生而為人的幸福,就是不知道這個世界確切面貌,不知道即將會發生什麼事。但若是事情牽扯到第二人,我就常常“龜縮裝孬”了,我不喜歡突然地出現在人家的生活裡,即使是一下下也好,或許這也是害怕我改變人家的生活後也影響到自己。要是一切都能順其自然那有多好啊!

妳問我:怎麼一天喝這麼多飲料?

我也只能笑笑回答:嗯…

因為這是我唯一能接受、最自然地出現在妳的生活中的方法,慢慢地、輕輕地就好,我不是個熱情洋溢、喜歡跟各種人當朋友;我也不喜歡聽到:You have nothing to lost 的理論;我也不喜歡騙自己說我只是想找個朋友,因為即時表現如此,但人們內心真的是這麼單純嗎?不過我是真心地感謝跟我闡述各種理論的人,每當你們口沫橫飛之際,我都知道你們很急切地想幫助我。

最後,其實我是個開朗的獅子座,希望大家不要看完文章,覺得我很陰沉,我只是遵守著“多想一秒鐘,或許會更好”的理論啊! kuso.vnoo.com.3.03

文章寫到這裡,突然想到艾蜜莉的異想世界,漂亮的奧黛莉朵杜因為發現了一個小玩具盒,開始了她一連串“改造別人生活”的旅程:

老公外遇、整天以淚洗面的公寓管理員,獨居作畫、足不出戶的玻璃先生,細心待客、卻被老闆鴨覇欺負的雜貨店小弟,身體虛弱、神經兮兮的香煙攤太太,慘遭拋棄、繼續死纏爛打的怪叔叔,以及母親過世後、自閉沉溺哀傷的艾蜜莉老爸…

哈,高中時看完這部片,覺得人生好陽光啊!哈,不過也發現自己其實不是當艾蜜莉小姐的料。我們能做的,大概只有盡量讓身邊的人快樂吧?!不過我做的不好就是了,你讓自己快樂了嗎?

PS. 希望 MSN 不要耍我,話說我把研發替代役網頁放上我 blog 的【論文寫不下去怎麼辦?!】之後,它就開始維修了…

『真誠篇』:為什麼要買相機給我弟?

我要跟大家講一個笑話,是我今天想到的!沒辦法,寫論文壓力超大的 XD

很多人:為什麼要買 Nikon D80 給你弟啊?

NK:因為這樣他就會把  Sony W7 還我啦~

哈哈,我覺得很好笑耶!

大娘大爺們,有笑賞個推吧! xD

論文寫不下去怎麼辦?!

怎麼辦?怎麼辦?工程師的敵人除了業務的嘴巴,Office 的 word 應該也算在內…kuso.vnoo.com.1.15

你累了嗎? 來看一下這個網站吧  kuso.vnoo.com.1.14

http://tinyurl.com/3mmezt               >////<

登入一下,申請會員不用錢唷!人客,看完包准你精神百倍唷! hanaDi

給看得懂的人 Orz ...

哎,不管好壞,還是紀錄一下好了,想必大家這幾天都很快樂 -_-| 只有我覺得很煩…

ScreenHunter_01 Jun. 19 17.22

ScreenHunter_02 Jun. 19 17.22

研發替代役梯次

抽完籤啦!是第二梯,9/16 ~ 10/13,希望一切順利!

哈,發現自己又耍蠢了,電話裡小姐問我:戶籍地在哪?

NK:啊,戶籍地?!

心中快速掃過:我是台北市出生的,可是我小學籍貫都寫台灣省,但我現在住台北縣耶!到底是哪一個啊?!台灣這麼小,我到底戶籍地是哪啊?!

小姐:呵呵,那你住哪裡?(小姐不會以為我是歪國人吧!)

NK:台北縣?

心中快速掃過:要加個新店市嗎?!

小姐大概很無言吧,我快變成生活白痴了 XD

不會忘記的小七遊記…

大約一千年前(-_-||),范仲淹在岳陽樓記寫下了一句“不以物喜,不以己悲”這句千古名句,對照我現在的心情實在太諷刺了…

我大概一輩子不會忘記 2008/06/18 這一天吧!故事的開始得回到台南某家 7-11 說起…

那天天氣晴朗,吃過晚餐後,天色微亮漸昏,陳忠和在與我去 7-11 的巷子路上一直對我笑,笑得我心裡發寒。

我問學長:你幹麼一直對我笑?

學長直說:沒有啊!沒有啊!你想太多了!

我一向敬重實驗室硬體組的學長個個是條漢子,我就當作是自己想太多了,沒想到,在等微波咖啡的時候,陳忠和竟然當著我的面,對小七店員說出:“小姐,可以給妳的 msn 嗎?”

什麼鬼啊!真的是什麼鬼啊!看著小七妹尷尬地傻笑,臉還紅了,我好想去隔壁老邱買把菜刀,砍了隔壁這隻我尊稱學長三年的生物…就算我要 msn ,我也會自己來,你竟然比我早開口,而且還叫對方小姐,聽起來就像台客在虧妹 -_-| 我好後悔讓你跟我來唷,我真的好後悔唷!如果老天給我一次機會重來,我一定會先把你打昏在店門口的。

眼見小七妹尷尬的把咖啡從微波爐拿出來,又快速地切換到隔壁櫃台時,陳忠和竟然又開口說了:我學弟對你有意思啊~

天啊!我除了下意識在心理咒罵:“陳忠和,你竟然還有臉開口講話!”之外,我還忍不住踢了他一腳(對不起,我真的忍不住)希望他可以住嘴!

哎,當下腦袋空白,踢完人後,抓著咖啡就往外走了(其實對店員很不好意思)…

天啊!我好恨陳忠和啊,我一想到“小姐,可以給妳的 msn 嗎?“、“我學弟對你有意思啊~“就睡不著了…

[1] 原本應該打陳忠和學長,但這樣就無法表達我的憤怒,不過至少我沒打出什麼沉終盒、沉鐘河之類的字眼…
[2] 這是題外話,我跟 DNA 學弟提到臉紅時,他竟然說出:那小七妹一定喜歡你,所以才會臉紅。天啊,我上一次會講出這種話時,是我相信牽手就會懷孕的年紀…學弟真的很純情,科科!

我有個心願

雖然二十五歲生日還沒到,但我有個心願,希望老天可以成全:

希望未來的三十天內,白天寫論文,下午寫程式,晚上喝熱牛奶!然後我順利畢業了!

謝謝台南這塊土地陪伴了我六年,也謝謝她在最後給了我一個驚喜,這世界真的是太神奇了!

PS. 我有個心願的英文是:I have a dream 嗎?

編譯 Boost 1.35.0 (Visual Studio 2005 (VC 8.0) + Windows XP)

簡介

  1. Boost 的原始碼可以在官網 http://www.boost.org 找到,或是直接到 sourceforge 下載,網址是:http://tinyurl.com/m7jqo
  2. Boost 有著自己一套的建置系統,叫做 Boost.Build [1],可用在編譯、 安裝、測試等功能上。Boost.Build 則是架構於 Boost.Jam, Boost.Jam 又是 Perforce Jam[2] 的衍生,更詳細的介紹可以在 [3] 看到。
  3. 通常在 Windows 上安裝 Boost ,最快速、簡易的方法是去 Boost Consulting 下載 installer [4],不過到今天為止, Boost 1.35.0 的 installer 都還沒 release。所以大家來學學自己編譯吧 : )
  4. Boost Getting Started on Windows [5] 是一篇官方的教學文件,有簡易的 bjam 使用方法,但無註明完整安裝的步驟,另外它也簡介了Boost Project 的 layout, simple usage 等等。
  5. Boost 身為最先進、標準的 C++ library ,它大量使用了 generic programming, metaprogramming 等技巧,使得實際上需要編譯成函式庫(.lib, .dll)的部份反而少了,根據 Boost Getting Started on Windows [5] 的說明,只有以下幾個 library 使用時,一定需要先編譯成函式庫(.lib, .dll):
    1. Boost.Filesystem
    2. Boost.IOStreams
    3. Boost.ProgramOptions
    4. Boost.Python
    5. Boost.Regex
    6. Boost.Serialization
    7. Boost.Signals
    8. Boost.Thread
    9. Boost.Wave

    還有幾個則是 optional:

    1. Boost.DateTime
    2. Boost.Graph
    3. Boost.Test

安裝步驟

  1. 下載 source code 並解壓縮。
  2. 使用 Open Visual Studio 2005 Command Prompt 進入 cmd。利用 Open Visual Studio 2005 Command Prompt 的原因有兩點:
    1. 方便呼叫 namke, cl 等 vc toolchain。
    2. 若是電腦上安裝多個編譯器,使用 Open Visual Studio 2005 Command Prompt 通常可透過環境變數,讓 bjam 使用正確的 toolchain。
  3. 取得 bjam.exe。
    1. 可以選擇到 Boost 提供的預先編譯好的 binary,可在http://tinyurl.com/2q36f 下載。
    2. 或是自行編譯,以下是編譯步驟:
      1. $> cd your_dir\boost_1_35_0\tools\jam\src
      2. $> build.bat
      3. 執行完後,boost_1_35_0\tools\jam\src\bin.ntx86 下就放著編譯完後的 bjam.exe 了!
  4. 將上一個步驟的 bjam.exe 放入 PATH 環境變數或是使用絕對路徑呼叫 bjam,並搭配以下的 options 就可開始編譯並安裝 boost:
    • $> bjam.exe --build-dir="your_dir\boost_1_35_0" --build-type=complete --toolset=msvc install
    • --build-dir: boost 解壓縮的檔案,記得 = 前後不可有空白!
    • --build-type: complete 會產生 release, debug ,以及各種設定的對應:如 multithread, debug, 等等。
    • install: 編譯完後,將 header, lib 安裝到指定目錄,預設目錄是:C:\Boost,大小約 2 G。
  5. 更多的客製化安裝,可以使用 bjam --help 查看 options。
    • bjam 是個有趣的東西,當我在 your_idr\boost_1_35_0\tools\jam\src\bin.ntx86 下執行 bjam --help 時,它跑出的訊息並不多,而切換到 your_idr\boost_1_35_0 時卻又是另一回事,它跑出豐富的 Boost 的編譯資訊,後來發現它會去讀取 Jamroot 這個檔案,這是格外要注意的一點。

Reference

  1. Boost.Build: http://www.boost.org/doc/libs/1_35_0/tools/build/v2/index.html
  2. Perforce Jam: http://www.perforce.com/jam/jam.html
  3. Install Boost: http://www.boost.org/doc/libs/1_35_0/doc/html/bbv2/installation.html
  4. Free Download on Boost Consulting: http://www.boost-consulting.com/products/free
  5. Boost Getting Started on Windows: http://www.boost.org/doc/libs/1_35_0/more/getting_started/windows.html
  6. Boost 提供的 bjam binary 下載點(包含許多種平台): http://tinyurl.com/2q36f
  7. Boost Source on Sourceforge: http://tinyurl.com/m7jqo

Pipl: People Search

簡介

http://pipl.com/

      蠻有趣的一個網站,它專門用來找人的資料!可以使用:First/Last Name, City, State, Country 當關鍵字。並產生以下的結果(以 Bjarne Stroustrup 為例):

  • Quick Facts:  被查詢者快速資料。如 B.S. 是 C++ 的設計者。
  • Contact Details: 一些詳細的個人資料,如地址、電話等…
  • Profiles & Directories: 對方的個人資料,例如 B.S. 是學術中人,所以會有一些 indexing 或資料庫的個人自傳,演員的話還會幫你連結到 imdb 。
  • Publications: 著作嘛!查 paper 時,也可以來用一下?!可以對應到 cholar.google.com 不知道 IEEE, ACM 等專業期刊之後會不會列入?!
  • Web Pages: 相關的個人網頁,如果對方有上 wiki 之類的百科,也會列出來。
  • More: 上述的每一個項目都可以透過 more 連結到 google ,將結果以 google search
    呈現。

技術

     這個網站跟一般搜尋引擎有什麼不同呢?根據它網頁的說法是,一般抓網頁機器 人都只能抓到 surface web (主要是靠超連結串起的網頁)[3]。而另外有些網頁是以 online database 等非超連結方式儲存內容,稱作 deep web ,想抓這類的資料,你的機器人要能跟 online database 互動,也就是這些 online database 可能會有 search engine,你的機器人要能跟它們 talk talk ,不過望頁倒是沒有提到:它們所謂的互動是暴力互動(如:使用人名搜尋後,在進行資料萃取、整理)呢?還是有使用到一 些人名特徵的問法(如:Bjarne Stroustrup, telepone)。而這網頁的搜尋有點慢, 猜測是因為它只是個 mashup 的服務,背後都是 yahoo people、google scholar、 ZabaSearch。

用途?

     有時候看 mailing list 時,都會看到一些不錯的回答,若想知道對方更詳細的資料就可以透過這個網站,或許以後大家當老闆了,面試別人前,也可以來 pipl 一下唷!

學術?

     The Deep Web: Surfacing Hidden Value [1] 這篇文章提到 deep web 的資料量是 surface web 的 500 倍多(而且可能更具價值?!還沒看完文章,所以不知道), wiki [2] 列出了一些有趣的研究,有興趣的人,可以朝這發展?!

Reference

  1. The Deep Web: Surfacing Hidden Value: http://www.press.umich.edu/jep/07-01/bergman.html
  2. Deep Web - Widipedia: http://en.wikipedia.org/wiki/Deep_web
  3. Surface Web -Wikipedia: http://en.wikipedia.org/wiki/Surface_Web

Single/Double/Multiple Dispatch - Part 1

Design PatternGenerative ProgrammingModern C   Design Cover

     GoF 的 Design Patterns [1] 一書在 Visitor pattern 的實做描述中提到了 single/double dispatch,並針對 single dispatch 給了這樣的說明:

In single-dispatch languages, two criteria determine which operation will fulfill a request: the name of the request and the type of receiver

     若要快速地瞭解這句話,我們不妨白話點:函式的喚起是倚賴 function overriding (dynamic polymorphism) 與 overloading (static polymorphism) 的合作而完成的。以 C++ 為例,假設我們有以下的繼承架構:

hierarchy

當我們寫下這段程式碼時:

Base* ptr = new Derived1;
ptr->foo( 1 );
會被喚起的函式是 Derived1::foo( int ),而非 Base::foo( int ) ,當然更不可能是 Derived2::foo( int ),這是 function overriding (dynamic polymorphism),以 C++ 說,因為當下物件 ptr 的 vtbl 指向的型別是 Derived1 而非 Base ,這也就是 GoF 書中提到的 type of receiver 的部份。至於為何是 Derived1::foo( int ) 而不是 Derived1::foo( string ),就是倚賴 function overloading ,相當於GoF 書中提到的 name of the request 。

     那什麼是 double dispatch 呢?耶,有 double ,那有沒有 triple 呢?quadruple 呢?…?答案是有,而且我們還習慣把它們合在一稱為 multiple dispatch ,在另一本 OO 聖經書籍 Generative Programming [2] 中提到:多型機制可分為兩大類:single dispatch 和 multiple dispatch (又稱 multimethods):

Single dispatch corresponds to the Smalltalk idea of sending a message to an object, where the appropriate method (i.e., message implementation) is selected based on the type of the reciever.
…
Single dispatch introduces asymmetry with respect to the arguments because the first argument is treated specially.
…
A dispatch mechanism that uniformly uses all argument types for selecting the method is referred to as multiple dispatch, or mutlimethods.

     從上面的解釋中我們不難體會:常見語言(如:C++, Java, C# )的動態多型呼叫是可轉換成對等的 C 語言,轉換的虛擬碼如:

// C++
Base* ptr = new Derived1;
ptr->foo( 1 );

// C
foo_in_c( ptr, 1 );
foo_in_c( Base* ptr, int i )
{
	if ( "Base" == ptr->type_info() )
		Base::foo_in_c( i );
	else if ( "Derived1" == ptr->type_info() )
		Derived1::foo_in_c( i );
	else
		Derived2::foo_in_c( i );
}

我們可以透過 this 得到 ptr 的記憶體位置,並傳給轉換後的 foo_in_c 去決定該喚起的是哪個 method ,這種將第一個參數特別挑出來檢驗的機制就稱作 single dispatch ,反之,若是今天 foo 有 N 個參數,函式的喚起得考慮 run-time 時,每個參數的實際型別,那就是 multiple dispatch 。

     Multiple dispatch 比起 single dispatch 更具有表達與描述威力,因為同一個時間點,它同時考慮了多個 物件的 run-time 型別。而目前只有少數語言有支援這個特色:如 CLOS 。其他語言則需要透過 extension 。[7] 羅列了一些這類的整理資料,

     針對 C++ ,除了找 extension 外,還可以在經典書籍 Modern C++ Design 的第十一章,看到 Andrei 的一些討論。另外,[9] 這篇 C++ Report 的文章也提出了一個解法,[10] 則針對上面兩個方法有所簡單討論, [9] 也是從這找到的。

Reference

  1. Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson, 1998
  2. Generative Programming: Methods, Tools, and Applications by Krzysztof Czarnecki and Ulrich W. Eisenecker, Addison Wesley, 2000
  3. Generative Programming: http://www.generative-programming.org/
  4. Modern C++ Design: Generic Programming and Design Patterns Applied by Andrei Alexandrescu, Addison Wesley, 2001
  5. Dynamic Dispatch - wikipedia: http://en.wikipedia.org/wiki/Single_dispatch
  6. Double Dispatch - wikipedia: http://en.wikipedia.org/wiki/Double_dispatch
  7. Multiple Dispatch - wikipedia: http://en.wikipedia.org/wiki/Multiple_dispatch
  8. Single, Double and Multiple Dispatch: http://ifacethoughts.net/2006/07/29/single-double-and-multiple-dispatch/
  9. Multiple Dispatch A New Approach using templates and RTTI: http://www.eptacom.net/pubblicazioni/pub_eng/mdisp.html
  10. Re: 備份 : Multiple Dispatch: http://phpbb.godfat.org/viewtopic.php?t=204&highlight=&sid=0ffb75220260fea3aa497c8a17fe710b

Visual Studio + Version Control

前言

    Visual Studio 是 Windows 上大家常用的 IDE ,它以專案的方式管理你的程式,因此儲存時會有一些額外的檔案出現,並以 Microsoft 自訂的格式儲存著,如果這些檔案都是檔案都是純文字也就還好,要是以 binary 存在,除了會吃掉較多 repository 空間外,也容易造成 version control 上的麻煩…


一些 Version Control 的限制

    以 CVS 為例,它對 binary 的支援較不完善 [1],例如說: cvs diff、conflct 呈現是以 plain text 為原則而設計的,它會以 new line 的方式去逐行比對、進行呈現,因此,我們往往需要使用額外的指令 [2] 去操控 CVS,而有些指令則無法用於 binary 檔上。Essential CVS [3] 一書整理了一些 CVS 無法處理的檔案: 裝置檔、符號連結、無法開啟或修改的檔案;要想處理這類檔案,我們可以用間接的方式:改將用來建立或連接它們的命令檔存入 CVS。
    而 SVN 呢?根據 SVN 的 features [4] ,雖然它號稱處理 binary 的相當有效率,不過它有著和 CVS 類似的不便:

例如 [5] 所說:

  1. Not attempt to automatically merge received changes with local changes during svn update or svn merge
  2. Not show the differences as part of svn diff
  3. Not show line-by-line attribution for svn blame

結論與 Visual Studio

    因此,我們使用 Version Control System 時,通常會盡量不讓 binary 檔存入 repository 以避免一些麻煩和不便。而為了讓 Visual Studio 能讓 Version Control System 合作無間,我們當然也希望過濾一些 binary file,常見的檔案類型與副檔名可以在 MSDN 上找到,如 VS 2005 可參考 [7]。而 VC 常見的 binary file  有: *.ncb (Intellisense Database),用在自動完成、查詢上, VC 會自動更新產生可不必加入 repository 以及 *.suo (Solution User ptions),根據 [6][8] 也可不必加入監控行列。

Reference

  1. CVS and binary files
    http://ximbiot.com/cvs/cvshome/cyclic/cvs/dev-binary.html
  2. CVS and binary files
    http://durak.org/sean/pubs/software/cvsbook/CVS-And-Binary-Files.html
  3. Essential CVS
    http://www.oreilly.com/catalog/cvs/
  4. Subversion's Features
    http://subversion.tigris.org/
  5. Subversion FAQ - How does Subversion handle binary files?
    http://subversion.tigris.org/faq.html#binary-files
  6. 請勿將某些檔案類型的檔案簽入到 Subversion 版本庫
    http://blog.miniasp.com/category/e5b088e6a188e7aea1e79086.aspx
  7. File Types and File Extensions in Visual Studio
    http://msdn2.microsoft.com/en-us/library/xhkhh4zs.aspx
  8. Introducing Source Control
    http://msdn2.microsoft.com/en-us/library/ms171339(VS.80).aspx

混亂的一週

自從買了眼罩後,晚上睡覺就輕鬆多了,不必顧慮向右側睡時,走廊光線會透入;也不必想到向左側睡,早上會被陽光亮醒!後來又買了耳塞,從此睡覺彷彿與世隔絕,但一個禮拜前,我發現只要戴著眼罩睡,那晚就會作惡夢 -_-|| 而且是那種緊張刺激的夢,夢中的我,幾乎每次都在逃難,逃離戰爭、逃離仇家追殺…此外,還有歷經身離死別的劇情,害我睡醒後,都覺得肩膀、背部酸疼,還有一種腦袋動了一晚沒休息到的感覺…

兩個禮拜前的感冒使我拉了兩天的肚子,洗澡時發現自己瘦了,而四、五個月後,又將舉行畢業口試,口試完就要當兵了。頓時間,有種內憂外患的感覺,似乎告訴我該規律運動了,想起老爸每年都會對我說,我對你只有三個期望:多吃、多睡、多運動。

希望自己這學期能每天吃三餐、睡八個小時、慢跑半小時!

什麼是 Arity

記得以前在研究 Boost.function 的實做時,遇到一個有趣的 static class member ,名叫 arity 。由於沒看過這個單字,譯典通也找不到這個字,只好先猜猜它的意思!後來透過 Google 才知道這個字的意思是:一個函式的參數個數;wiki 的解釋更加清楚:

The arity of a function or operations is the number of arguments or operands that the function takes.

後記

  1. 記得當初上 wiki 查,沒找到這個單字,沒想到今天就出現了!出現的原因是:上 wiki 看 Tcl 的資料,找到 variadic ;看 variadic ,理所當然就會看到 arity 啦!網路的更新真的是快速又有趣,熱心的人們加上搜尋引擎內部會進行長期的資料分析,讓網路彷彿就像個有機體一樣,會成長、進化!
  2. 附帶一提,Tcl 在 wiki 的資料也更新了,更完整囉!

參考

  1. Arity - wikipedia: http://en.wikipedia.org/wiki/Arity
  2. Variadic - wikipedia: http://en.wikipedia.org/wiki/Variadic
  3. Tcl - wikipedia: http://en.wikipedia.org/wiki/Tcl

感冒三天…

三天前的夜晚,因著某種不知名的因素,我感冒了…

第一天:

    症狀是喉嚨微痛、鼻涕些許,腰酸背痛甚鉅。但因為 2/26 有個進度要趕,只好硬著頭皮上工。走去實驗室的路上,一直想不到為什麼著涼了,唯一有可能的原因是:洗完澡,沒吹乾頭髮,坐在書桌前看書。難道我看個書會招來人神共憤、以致有感冒報應?!

第二天:

    前晚特地早睡加上有去看醫生,沒想到起床時腰酸背痛就好了,讓我一度懷疑醫生開的是肌肉鬆弛劑而不是感冒藥,沒想到喝了幾口水後,肚子開始叫,這一叫,讓我心揪了一下,可能感冒引起腸胃炎了,X,果然沒錯!開始拉肚子了… 但因為 2/26 有個進度要趕,只好硬著頭皮上工。不幸的事還不只在我身上發生,這天為了測試一個 Windows AVstream driver 的安裝,我的小黑系統被弄亂了,雖然可以正常工作,但很多關於 driver 的呼叫、安裝都會直接跳出藍色畫面。天啊,屋漏偏逢連夜雨、船遲又遇打頭風!重灌不是難事,備份卻很討厭;重灌虛擲光陰,進度需要時間。還好學弟提醒我有系統還原可用,也好在我極少因為貪小便宜(?!),把系統還原關掉,最後小黑回來了,Welcome back ...

    由於乖巧學弟有重大進度突破,讓我可以準時睡覺,沒想到惡夢開始:差不多每個小時要跑一次廁所,大概持續到凌晨兩點多。加上有點發燒,蓋棉被嫌熱、不蓋又會冷,又因為是假日,交誼廳一直傳來電視聲、喧鬧聲,真是內憂外患…

第三天:

肚子比較安分點了,睡了一整天…

重點:

  1. 原本是要紀錄一段難過的過去,但看完一點都不難過…
  2. 謝謝冠廷學弟體諒我感冒,情誼相挺跟我一起把 2/26 的進度弄出來。
  3. 由於我台南沒有機車,是浩鈞學弟載我去的,回程還下起大雨,學弟竟然把車上唯一一件雨衣給我穿。起初我不肯,他還一直說我是病人,讓你是應該…等的話,到最後直接撇過頭去直到我拿起雨衣…真的是很感謝學弟,我真是個只會讓學弟照顧的學長 T_T
最後,真要說什麼,希望這是最後一次在成大生病了,要畢業了,好像有點感傷…

 

網頁(有時)無法正常顯示

第一次在 Ubuntu 64 上使用 Apache 就遇到了奇怪的問題,不知道是不是自己沒搞清楚?!

症狀:

    上傳的網頁無法正常顯示,但也不會出現錯誤頁面等資訊,僅是空白頁而已。

解決方法:

  1. 檢查編碼:有時檔案的編碼會讓 apache 無法正常解析網頁,這種情形尤其會發生在,使用者使用在 Windows 上使用 frontpage 設定了跟主機端不同的編碼格式。
  2. 若有 PHP ,請檢查 php.ini 的 memory_limit 是不是太小了?! 若是太小,則可能有些 php 頁面可顯示,如僅執行 phpinfo();但有些需要大量記憶體的 php 服務就會失敗,如 blog, wiki ...

參考:

  1. 強者我學弟
  2. 強者我學長

MySQL: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO/YES)

OS: Ubuntu 6.06.1 Dapper Drake (2.6.15-51-amd64-server)
MySQL: 5.0.22

第一次安裝 MySQL 就遇到了奇怪的問題,不知道是不是自己沒搞清楚?!

症狀:

       使用 synaptic 安裝 mysql 後,呼叫 mysql_install_db 初始化後,想透過 SHELL> mysql -u root 登入,建立密碼,卻出現 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO),即使想透過 mysql -u root -p ,強制輸入密碼,仍一樣出錯,只是錯誤變成 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

解決方法[3]:

  1. 先關閉 mysql daemon
  2. 以 --skip-grant-tables 喚起 mysql daemon ,如:mysqld --skip-grant-tables
  3. 這時應當可透過以下指令登入:mysql -u root mysql
  4. 利用 mysql 指令修改使用者密碼。
  5. mysql> UPDATE user SET Password=PASSWORD('your_new_password') where USER='root';
    mysql> FLUSH PRIVILEGES;
  6. 關閉 mysql daemon 後,再正常啟動。
  7. 似乎之後新增 database user 也需透過這個方法。

參考資料:

  1. MySQL Manual 2.10.3. Securing the Initial MySQL Accounts http://dev.mysql.com/doc/refman/4.1/en/default-privileges.html
  2. 鳥哥的 Linux 私房菜 http://linux.vbird.org/
  3. MySQL Forum http://forums.mysql.com/read.php?11,34014,46593#msg-46593

Qt4.3.3

Qt4.3.3 已經在 2007/12/05 釋出了!似乎從 4.3.2 之後也就修改了對 Visual Studio 2005 compiler 的支援了,不需要再進行 patch 就可以編譯!連編譯都更人性化了,只需要 configure, nmake 就行了。除此之外,Trolltech 也提供了 Qt Eclipse Integration for C++ and Java plugin ,真是越來越大方了!

而 Qt4.4 也已經在開放 preview 了,據說會是 Qt4 發佈以來最引人注目的版本之一,將提供 webkit、multimedia、enhanced xml support、concurrency、IPC、new help system。其中 webkit 將提供更多開發 web 需要的元件,想必以後用 Qt 可以快速地開發小型瀏覽器、應用程式整合網頁服務了! Qt4.4 preview 可以在 http://trolltech.com/products/qt/whatsnew/qt44-preview 看到 : )

MiniFilter InstanceSetupCallback is not called?

一般來說,MiniFilter 的 InstanceSetupCallback 會在 filter manager 把 minifilter attache 到 volume 後呼叫。如果沒有的話,可以檢查一下 minifilter 的 INF 是否把 instance fla...