September 2005 Archives
September 29, 2005
"To Google" List
最近我在我的 Todo List Widget 上加了一頁 "To Google",因為發現,逛網站逛到後來,有好多的時間都是花在看 Google 的結果。所以我覺得加上這樣一頁,多多少少可以有助於專心工作。如果在工作的時候,突然看到或是想到什麼有趣的關鍵字,而 google 了一時三刻,造成本來的事項被中斷,那可就得不償失了,但如果完全不管,就讓有趣的東西溜了,以後又怎麼也想不起來,想必也會很後悔吧?於是我的 "To Google" List 上面就記了許多我會去 Google 的關鍵字:
因為我知道自已原先對這些字的知識並不了解,所以這些字查到的結果,不花個幾十分鐘恐怕還吸收不了,所以就先記著,日後再來查。
這或許也可以做成一個類似 del.icio.us 的 aggregation,讓別人知道自已在查什麼關鍵字(或許也直接就是一種 tag),也算是一件有趣的事情。
September 28, 2005
恢復不正常
最近常常聽各路英雄來的 Podcast ,訂了一堆有的沒的,還自覺「啊,可以來練習聽力」地,訂了好多廣東話的香港人的 Podcast,跟日文 Podcast(還是徹頭徹尾的聽不懂啊。)
一大堆 Podcast 中有個特別引我注意的,便是 黑米公主 。她常常在節目中講到維也納生活,以及跟台灣生活的一些比較。而且講起話來咬字清楚,又帶有一些很努力的誠意的感覺。大家有空也可以裝裝 iTunes ,不一定要買 iPod 就可以訂她的 Podcast 來聽了。反正硬碟很大也不知道拿來裝什麼,就裝裝別人的 podcast 吧。
另外一個比較有趣的 Podcast 是 delicious 的 media list。用 "system:media:audio" 這個 tag(最近我把它叫做「標籤字」),就可以拿到一堆 mp3 的連結,而且還有 RSS ,自然也可以當做 Podcast 的來源。"system:media:video" 這個 tag 自然就是許多影片的連結,也就成了 vlog 了。"system:media:document" 與 "system:media:image" 就不用我再講了。不過,會出現些什麼東西也就不得而知了,但這也是 del.icio.us 最有趣的地方。
September 26, 2005
散亂而不好的一天
畢業兩個月了,事情逐漸多了起來,今天決定先來解決翻譯的一章,然後再做下一步的打算。於是,來到了新的咖啡店 Burano,點了午飯(讚)跟冰摩卡,吃完之後拿出電腦開始工作。雖然說是翻譯,其實編輯的部份佔了多數,因為有舊版的中文可以使用。但無論如何,還是一段捱著一捱,一方面改舊稿,一方面補新譯,還是就這麼地把一章給了點了。
咖啡店 Burano 來了許多客人,有來吃飯的,有來找老闆聊天的,也有六、七個竹女小姐是來做訪問的。老闆非常樂意的從裝潢到煮咖啡的器具一一的說明,小姐們一面聽一面到處照相。最後連我也一起被訪問了。大致上的情況是:
「我是第二次來,上次來是前天吧」
「地方不錯啊,而且老闆很親切,會跟人聊天」
「網路也很方便啊,非常快(笑)」
「妳們是在做什麼?」
「竹女的嗎?」
「好啊」
然後就這樣也被拍了張照片。可惜在簡短得要命的對話中沒有要到號碼,畢竟一對七實在是太困難了(喂)
但是冰摩卡馬上就在肚子裡做怪,而且我忘記我昨天只睡了五個小時,跟本就不夠。所以還是決定回家休息一下好了,反正,預定想做完的事情的確做完了。
一覺睡到六點,回到父母家,吃個飯後後回新埔去看曾祖,最近曾祖父身體變得很差。
很久沒回去了,一回去當然就是見機行事,看到什麼長輩打什麼招呼:
「姨婆」「舅公」「叔叔」「舅婆」「阿太... 阿太.... 」「阿太」
阿太(客家話叫曾祖的叫法)眼睛耳朵也開始不行了,得多叫幾次才聽得見,人也得走近點才看得見。我是她最大的曾孫。
「恁大囉...」(客家話)
於是大概都是繞這個話題在聊天。包括說我可以結婚,然後就有五代同堂這樣的主題都出現了。
曾祖母的情況還是很好,還是可以跟人聊天,吃水果,看電視。不過曾祖父就不一樣了,只能躺著,吃流體食物,變得非常的瘦小,也沒有什麼力氣。畢竟人老了,身體機能已經不是自已可以控制的事了。
但他還是可以知道我來了,沒什麼力氣講話,但聽到別人講話時還是可以有一些簡單的回應:
「喔.... 喔喔喔喔喔喔喔喔...」
「喔喔喔喔喔喔喔喔」
總之探望老人家還是要親切一點,這樣子大家都高興,老人家沒什麼願望,小孩子也自動就會長得很大。
九點半回到家,總算又有了一些自已的時間,可是還是拿來看電視電影浪費掉了。我還是很累,睡眠不足顯然很有影響。跟人聊天聊一聊,也沒有什麼提神醒腦的幫助,只是心情會變好變差,不知道而已。
雖然不是在丟銅板,不過這回是反面。
又混到一點半,打算來亂彈琴,彈了半個小時之後,幾乎是用搥琴鍵的方式結束了這曲子。
跟本是愈來愈糟了嘛。
於是出門,去吃包子。
回來的時候,故意走了新路,新路就是不一樣,燈火通明(半夜三點)又大又好走。
我也才注意到,晚上天氣很好,是個十足的月亮夜,而且沒有雲,可以看見很多星星。當下決定,去找地方看星星。
然後在六家國中旁,一處路燈突然禁止進入的十字路口,看見了 Orion 中間的星雲,不是很明顯,但是我想我還是看見了。這算是今天唯一的好事吧(讓心情變好的事)。
說了這麼一大串,也才一件好事。但是如果沒有前面這一長串非好事,我也不會去看星星,我也不會知道我家附近就有這麼好的看星星的地方,那麼,也可以說是,統統都是好事吧。
September 23, 2005
不錯的說法
(從 Learning Perl 上看來的)
September 21, 2005
P2P 的 DVD Service
馬上就聯想到。像 BT / Donkey 這種 protocol ,應該做在硬體,用另外的機器來執行才對嘛。「抱台 3K ntd 的機器回家,接上網路就開始下載電影」豈不是很愉快?
或者直接整合進數位電視也是一著。
(總之你看,沒有著作權問題的話,有多少好玩的東西啊。)
September 18, 2005
36 行的 Perl Code
Kwiki::DB::DBI 因為是沒做太多事情的極簡介面,所以 30 分鐘就生出來了。寫完之後就是想到,可以來包裝 Class::DBI。
Class::DBI 這個模組很有意思,它包裝 DBI 的方式,幾乎可以讓你不用再手刻任何一行 SQL。在使用時,每個資料庫的表格都會有一個對應的類別,而這個類別本身亦是一個存取器(Accessor, getter-setter,我倒底要怎麼叫這個玩意兒?)。只要在類別裡面先定義好欄位,就會自動生出跟欄位同名的方法,像是:
package Music::CD; use base 'Music::DB';Music::CD->table("cd");
Music::CD->columns(All => qw/title artist year/);
這樣子定義了 Music::CD 這個類別之後,就對應到 "cd" 這個表格,以及裡面的三個欄位。要取得欄位值,大致上的方法就是這樣:
my $cd = Music::CD->retrieve("Easy Time");
print $cd->artist; # "Love Psychedelico"
果真是什麼 SQL 都沒看見。
但這模組最大的問題在於,它完全是使用「類別」來運做,所以我老是得打些很長的名字,像是 "Kwiki::UserName::Auth::DB::UserData" 這樣,才有辨法使用。所以我想替它包一下,可以用物件來使用,這樣子我愛用多短的名字就可以用多短的名字。
my $artist = $self->db->cd->retreive("Easy Time")->artist; # Love Physcdelico
而且,這樣寫起來也很 Spiffy!
不過這樣的事情比想像中難做,因為 "package" 後面只能接 bareword, 而包在 eval 裡面的話,scope 又只有在 eval 裡面,不會跑出來。所以比較難在 runtime 偷雞生出新的 package namespace。
目前想到的辦法是,運用 AUTOLOAD 機制,在建立物件時多給一些參數,讓 AUTOLOAD 去 eval "$class->$method(\@_)",這才算是解決了。雖然 AUTOLOAD 其實不很理想,不過還算是個辨法。或是 Source Filtering 也是一個辨法。最後生出來的程式碼只有 36 行,但是花了我 20 個小時。
這次在寫 Kwiki::DB::ClassDBI 時,雖然還是在用 print 偵錯,不過用上了 Devel::Symdump 這個模組。相當好用地,可以看到 symbol table 上的所有資訊。如果沒用它的話,大概是不會知道什麼地方錯了。在要偷玩一些把戲,或是多重繼承時,Devel::Symdump 的確會相當好用。

