今天是 workshop presentation 的日子。
時差不易調整,早上還是四點半就醒過來了。怎樣也睡不著,只好閉著眼睛儘量休息。
吃過早餐後,依照昨天探勘的路線搭公車到華盛頓大學門口,走路穿過校園到 workshop 會場。奇怪的是,怎麼還是沒有看到任何關於 workshop 的標誌?
等了十幾分鐘,心想是不是 workshop 改地方,還是自己弄錯時間了?想用筆記型電腦上網查詢,連外的網頁卻都被鎖住了,需要有 ID 與密碼。這下怎麼辦呢?只好衝進大樓裡,找個「看起來知道怎麼回事」的人問問看了。
好不容易知道會場確實是在這棟大樓的 251 室,走進去詢問是否在這兒報到,才又被告知,報到的位置改在一棟叫做 Mary Gates Hall 的建築裡。匆匆趕去報到,拿到名牌後,服務人員告訴我 Proceedings 已經沒貨;也就是說,我預購的 Proceedings 賣光了。她說,沒有預料到如此,但會退費到信用卡帳戶。哎,怎麼會搞出這麼多烏龍啊?
後來才知道,許多人也遇到類似的問題。於是,workshop 開始的時間被迫順延半個小時(原本預定在早上 8:30 開始)。
雖然英文講來仍不順暢,但有一兩位聽眾似乎頗感興趣。其中一位 Hugo Zaragoza 還看出我投影片中,隱約暗示論文的結果,應該也能應用在 closed document repositories。我在休息時間向他請益,他稱讚我說做得相當好。
這個 workshop 從 8:30AM 開到 5:00PM,參加人數不多,自己也不好開溜。起得早又睡得少,報告完了之後精神鬆懈下來,其實自己已經頗有盹意。只好趁休息時間喝些可樂來提神,讓自己能夠從頭聽到尾。
結束一天的會議後,搭公車到市區,徒步走回旅館,並順道買份麥香雞堡來當作晚餐。市區的麥當勞賣得特別貴,但這時因為太過疲累,也顧不了這麼多。回旅館後,趁著還有些氣力,胡亂地寫下一些今天的遭遇與感想。
這真是累壞人的一天啊。
星期三, 8月 09, 2006
初至西雅圖
西雅圖的天空,層層地疊起多片雲層,看起來頗有美感。
到旅館把行李卸下後,看看時間還早(下午五點左右,西雅圖到九點才天黑)。背上背包,徒步到旅館四處逛逛,看看一下旅館四周的景色,也了解一下它們在地圖上的位置所在。
雖然從網路上,已經知道旅館距離有名的西雅圖針塔 (Space Needle) 相當近;但隨便走過兩個 blocks,針塔就在眼前,還是讓自己小小地吃了一驚。
不過,可能是因為先前聽說西雅圖很漂亮,以致於心裡產生過高的期望,當我看到街道不算是太乾淨時,心裡其實是有些失落感的。
我想探勘一下公車的路線,因為明天自己必須試著搭公車去 workshop 會場。循著地圖往商業區走去,比起台北來,路上的行人數量不算多,但汽車的密度卻差不多。我沒有把握明天就學會搭乘這裡的公車,心想,如果到時候迷路了,就坐計程車吧。
沒能像阿尼那般自在瀟灑。除了想到上台用英文報告會緊張,連交通行程自己都還是走一步算一步。雖然有從網路上取得一些資訊,但真槍實彈地搭公車轉乘,還是會擔心自己錯過站。
不過,旅遊的一部份趣味,正是在於小小地探險。因此,用半生不熟的英語問路,有時也會變成旅遊的有趣回憶。這也是為什麼我會試著從機場搭 Airporter Shuttle 到旅館 --- 除了省些錢外,還可以讓自己詢問櫃臺小姐與司機,該如何乘坐到下榻的旅館。(我其實也不是一開始就自願要這樣問路的。主要的原因,是自己並沒有在網路上租到便宜的汽車,而在西雅圖機場租車,價格卻是市區的兩倍左右。)
雖然許多行李是由太太幫忙打點,但這可是自己第一次,一個人出國「半自助旅遊」呢。因此,即使是「問路」這種小問題,都還是會讓我的神經緊繃。雖然事後看起來還頗有意思,但身在其中,就很容易感到緊張煩躁了。

雖然從網路上,已經知道旅館距離有名的西雅圖針塔 (Space Needle) 相當近;但隨便走過兩個 blocks,針塔就在眼前,還是讓自己小小地吃了一驚。
不過,可能是因為先前聽說西雅圖很漂亮,以致於心裡產生過高的期望,當我看到街道不算是太乾淨時,心裡其實是有些失落感的。
我想探勘一下公車的路線,因為明天自己必須試著搭公車去 workshop 會場。循著地圖往商業區走去,比起台北來,路上的行人數量不算多,但汽車的密度卻差不多。我沒有把握明天就學會搭乘這裡的公車,心想,如果到時候迷路了,就坐計程車吧。
沒能像阿尼那般自在瀟灑。除了想到上台用英文報告會緊張,連交通行程自己都還是走一步算一步。雖然有從網路上取得一些資訊,但真槍實彈地搭公車轉乘,還是會擔心自己錯過站。
不過,旅遊的一部份趣味,正是在於小小地探險。因此,用半生不熟的英語問路,有時也會變成旅遊的有趣回憶。這也是為什麼我會試著從機場搭 Airporter Shuttle 到旅館 --- 除了省些錢外,還可以讓自己詢問櫃臺小姐與司機,該如何乘坐到下榻的旅館。(我其實也不是一開始就自願要這樣問路的。主要的原因,是自己並沒有在網路上租到便宜的汽車,而在西雅圖機場租車,價格卻是市區的兩倍左右。)
雖然許多行李是由太太幫忙打點,但這可是自己第一次,一個人出國「半自助旅遊」呢。因此,即使是「問路」這種小問題,都還是會讓我的神經緊繃。雖然事後看起來還頗有意思,但身在其中,就很容易感到緊張煩躁了。
星期二, 8月 08, 2006
參加 Workshop 前夕
我覺得,最近總感覺不到太多悠閒,即將出國參加 workshop 應該也是一大原因。
從辦理美國簽證、機票、旅館住宿、甚至該如何到旅館、如何到 workshop 場地(是否要租車),都頗為繁瑣。努力地想省些錢,最後卻經常發現很難省到,令自己平添一股怨氣。
此外,希望能夠做好投影片,希望自己上台報告時不要太出醜。光是想儘量給一份可聽可看的 presentation,就會讓自己悠閒感盡失。
其實,英文非自己母語,聽說能力不好,也不能說太丟臉(只能說自己過去努力不足)。能夠將論文投上 workshop,多少已經表示論文有些內容,因此也不必覺得內容羞澀無法見人。此外,workshop 應該也練習學術溝通的好機會,既然是練習,偶而出醜也是難免,真的也不需看得太重。
然而,說的還是比做的容易。閒暇時,三不五時就會想起投影片某個地方的英文用字不妥,因而持續對投影片做小修改。基本上,由於了解自己英文報告的能力不佳,「策略上」我都嘗試把要講的東西儘量寫在投影片上,讓聽眾可以「用看的就懂」,而不需要聽我的口頭報告。
會對參加 workshop 感到緊張煩躁,多少表示自己還是頗重視這樣的場合吧。出國報告,可是得花費一筆不小的費用哪。只可惜,因為寶寶就要出生了,我這回的行程排得像是在「出差」,時間相當緊湊,沒有任何觀光旅遊的餘裕。
也或許,時間的過去,就是任務的完成。就是把這樣的機會,當作一場不錯的學習經驗罷。
從辦理美國簽證、機票、旅館住宿、甚至該如何到旅館、如何到 workshop 場地(是否要租車),都頗為繁瑣。努力地想省些錢,最後卻經常發現很難省到,令自己平添一股怨氣。
此外,希望能夠做好投影片,希望自己上台報告時不要太出醜。光是想儘量給一份可聽可看的 presentation,就會讓自己悠閒感盡失。
其實,英文非自己母語,聽說能力不好,也不能說太丟臉(只能說自己過去努力不足)。能夠將論文投上 workshop,多少已經表示論文有些內容,因此也不必覺得內容羞澀無法見人。此外,workshop 應該也練習學術溝通的好機會,既然是練習,偶而出醜也是難免,真的也不需看得太重。
然而,說的還是比做的容易。閒暇時,三不五時就會想起投影片某個地方的英文用字不妥,因而持續對投影片做小修改。基本上,由於了解自己英文報告的能力不佳,「策略上」我都嘗試把要講的東西儘量寫在投影片上,讓聽眾可以「用看的就懂」,而不需要聽我的口頭報告。
會對參加 workshop 感到緊張煩躁,多少表示自己還是頗重視這樣的場合吧。出國報告,可是得花費一筆不小的費用哪。只可惜,因為寶寶就要出生了,我這回的行程排得像是在「出差」,時間相當緊湊,沒有任何觀光旅遊的餘裕。
也或許,時間的過去,就是任務的完成。就是把這樣的機會,當作一場不錯的學習經驗罷。
星期一, 8月 07, 2006
十年前的軟體系統
週末幫別人安裝、設定一台需要執行 ET + dBASE 的電腦。
MS-DOS 6.22?倚天?別開玩笑了,這個年頭,大家都已經習慣用 Windows XP + M$ Office 2000+ 了,誰還在用這些老掉牙的軟體啊?
但還是有這樣的需求。被取代的,是一台已經有十年以上機齡的電腦。最近因為這台機器老舊,開始出現一些狀況,因而需要重新安裝一台新的電腦。舊機器上的許多軟體,因為經常在使用、且已經習慣使用,因而最好能在新機器上執行。
為了把系統移植到新的機器上,我著實花了不少時間。理論上,新的電腦應該可以吃舊的硬碟格式,新版的 Windows 也可以用相容模式執行舊版的軟體,但...實際上就是會出些狀況。
例如,在新電腦上若同時置入新的(至少數十 GB 容量)硬碟與舊的(只有 1GB 容量)硬碟,必須將它們放在不同的 IDE channel 上,否則就會聽到「嗶、嗶」的警示聲。但即使放在不同的 IDE channel 上,用新硬碟執行 Windows 系統,把舊電腦的內容拷貝出來時,系統會相當不穩定,很容易當機(系統自動重新啟動)。
然後,為了讓新的硬碟是可以開機的,我必須在硬碟上安裝 MS DOS 6.22 的開機系統,這樣又花了不少力氣。再來,就是測試倚天系統與 dBASE,反覆弄了好幾趟才成功。
印象深刻的,是舊的硬碟上,含有 ET + dBASE + Windows 3.1 + M$ Office 5.x 的軟體,壓縮起來後,總共竟然只需要 100+ MB 的容量。相較起現在動不動就是幾百 MB 的軟體,真令人不禁懷疑,那些儲存空間究竟是被什麼怪物吃掉了。
MS-DOS 6.22?倚天?別開玩笑了,這個年頭,大家都已經習慣用 Windows XP + M$ Office 2000+ 了,誰還在用這些老掉牙的軟體啊?
但還是有這樣的需求。被取代的,是一台已經有十年以上機齡的電腦。最近因為這台機器老舊,開始出現一些狀況,因而需要重新安裝一台新的電腦。舊機器上的許多軟體,因為經常在使用、且已經習慣使用,因而最好能在新機器上執行。
為了把系統移植到新的機器上,我著實花了不少時間。理論上,新的電腦應該可以吃舊的硬碟格式,新版的 Windows 也可以用相容模式執行舊版的軟體,但...實際上就是會出些狀況。
例如,在新電腦上若同時置入新的(至少數十 GB 容量)硬碟與舊的(只有 1GB 容量)硬碟,必須將它們放在不同的 IDE channel 上,否則就會聽到「嗶、嗶」的警示聲。但即使放在不同的 IDE channel 上,用新硬碟執行 Windows 系統,把舊電腦的內容拷貝出來時,系統會相當不穩定,很容易當機(系統自動重新啟動)。
然後,為了讓新的硬碟是可以開機的,我必須在硬碟上安裝 MS DOS 6.22 的開機系統,這樣又花了不少力氣。再來,就是測試倚天系統與 dBASE,反覆弄了好幾趟才成功。
印象深刻的,是舊的硬碟上,含有 ET + dBASE + Windows 3.1 + M$ Office 5.x 的軟體,壓縮起來後,總共竟然只需要 100+ MB 的容量。相較起現在動不動就是幾百 MB 的軟體,真令人不禁懷疑,那些儲存空間究竟是被什麼怪物吃掉了。
範本檔案損壞了?
學弟說,我的網誌在 IE 上觀看,左邊的 sidebar 會看不見。
我試了一下,果真是如此。奇怪啊,雖然我已經習慣使用 Firefox,但先前似乎也曾用 IE 來檢視過。怎麼會(什麼時候開始)出現這種狀況呢?
調出 Blogger 的範本,意外地發現,範本檔好像有些毀損。奇怪啊,自己應該有一陣子都沒有動過範本檔了,難道是 Blogger 想幫我修改些什麼,卻意外地把範本檔案弄壞了?
好吧,只好從新建構一個範本。可是,我早已忘卻,如何在左方的 sidebar 加上「最近 post 的一些網誌」了(之前好像是 MPH 告訴我怎麼弄的,但這類的設定最好能夠找到參考資料,否則每次都會忘卻)...
我試了一下,果真是如此。奇怪啊,雖然我已經習慣使用 Firefox,但先前似乎也曾用 IE 來檢視過。怎麼會(什麼時候開始)出現這種狀況呢?
調出 Blogger 的範本,意外地發現,範本檔好像有些毀損。奇怪啊,自己應該有一陣子都沒有動過範本檔了,難道是 Blogger 想幫我修改些什麼,卻意外地把範本檔案弄壞了?
好吧,只好從新建構一個範本。可是,我早已忘卻,如何在左方的 sidebar 加上「最近 post 的一些網誌」了(之前好像是 MPH 告訴我怎麼弄的,但這類的設定最好能夠找到參考資料,否則每次都會忘卻)...
星期四, 8月 03, 2006
PHP 的字串處理
喜歡 PHP 的另一個原因,是因為它提供許多方便的字串處理函式。
文件上說,PHP 這個程式語言,是採擷 Perl、C、以及 Java 的一些優點所形成。Perl 的優點是什麼呢?我覺得,主要就是提供一套強大的處理函式,可以利用正規語言表達式 (Regular Expression,或可直接譯為「正規表達式」) 來對字串進行比對與取代。
雜事做多了,就自然能夠感受 Perl 或 PHP 那些處理字串函式的優點。例如,很常見的一項雜務,就是一個「a,b,c,d,e」這樣的字串,用逗點切分,放在陣列中供後續處理;或者反過來,將一個陣列的內容一個個地傾印出來,但是在兩項內容間,加入一個分號。PHP 的 explode() 與 implode(),就可以做這樣的事情:
$s = "a,b,c,d,e";
$array = explode(",", $s);
$t = implode(";", $array);
就像是 Perl,PHP 也提供了更強大方便的 regular expression 的字串處理函式(事實上,PHP 支援了 Perl-Compatible 與 POSIX-Extended 兩種正規表達式的處理標準)。例如,由於 HTML tag 的屬性值,可以用雙引號、單引號、或甚至「沒有引號」來標示,我們可能會想將一篇文件的 href 統一用雙引號來框住。也就是說,會想將
這樣的字串們取代為
在 PHP 裡,要達到這樣的功能是頗容易的:
$pattern = "/<a href=(['\"]?)(.+?)\\1>/i";
$replaced_by = "<a href=\"$2\">";
$t = preg_replace($pattern, $replaced_by, $s);
只要大家嘗試用一般的字串處理函式來實作,吃過苦頭(因為麻煩又無趣)後,應該就會同意,正規表達式在字串處理上的的威力與優點。
雖然,現今廣用的程式語言幾乎都有提供 regex.Matcher 與 regex.Pattern 之類的物件,可以依循正規表達式處理字串;但我覺得,繼承了 Perl 的優點後,PHP 在正規表達式的使用上,還是比那些物件導向語言,來得自然、方便太多了。
文件上說,PHP 這個程式語言,是採擷 Perl、C、以及 Java 的一些優點所形成。Perl 的優點是什麼呢?我覺得,主要就是提供一套強大的處理函式,可以利用正規語言表達式 (Regular Expression,或可直接譯為「正規表達式」) 來對字串進行比對與取代。
雜事做多了,就自然能夠感受 Perl 或 PHP 那些處理字串函式的優點。例如,很常見的一項雜務,就是一個「a,b,c,d,e」這樣的字串,用逗點切分,放在陣列中供後續處理;或者反過來,將一個陣列的內容一個個地傾印出來,但是在兩項內容間,加入一個分號。PHP 的 explode() 與 implode(),就可以做這樣的事情:
$s = "a,b,c,d,e";
$array = explode(",", $s);
$t = implode(";", $array);
<a href='www.yahoo.com'>Yahoo</a>
<a HREF=www.google.com>Google</a>
<a HREF=www.google.com>Google</a>
這樣的字串們取代為
<a href="www.yahoo.com">Yahoo</a>
<a href="www.google.com">Google</a>
<a href="www.google.com">Google</a>
在 PHP 裡,要達到這樣的功能是頗容易的:
$pattern = "/<a href=(['\"]?)(.+?)\\1>/i";
$replaced_by = "<a href=\"$2\">";
$t = preg_replace($pattern, $replaced_by, $s);
雖然,現今廣用的程式語言幾乎都有提供 regex.Matcher 與 regex.Pattern 之類的物件,可以依循正規表達式處理字串;但我覺得,繼承了 Perl 的優點後,PHP 在正規表達式的使用上,還是比那些物件導向語言,來得自然、方便太多了。
星期一, 7月 31, 2006
從「先苦後樂」談起
仔細想想世間事,還真讓人不明白。
本來對「先苦後樂」這句話並沒有想太多。但今天早上在丹堤閱讀「學習,就是一種享受」,看到作者把「先苦後樂」視為錯誤的神話,卻突然有些話想說。
「現在努力工作,不久之後就會有獎賞」、「你只要把家庭作業做完,就可以出去玩」。在我們的求學過程以及之後的生涯裡,諸如此類的命令與信仰一直影響著我們。因此,退休之後的那幾年,才是一個人的「黃金時期」...
記不記得,童話故事裡,在草地裡唧唧吟唱整個夏天的蚱蜢最後被餓死;而在塵封穀倉裡辛勤工作的螞蟻卻得到回報?從前的年代裡,似乎將「先苦後樂」視為理所當然。但是,如果年老體衰後才退休、而退休後才是一個人的黃金時期,那樂趣又在那兒呢?
曾經寫下一篇 Stop improving yourself and start living。算算從這篇網誌到現在,已經接近一整年了(好可怕!)。我當初想表達的,是不是就是反對一廂情願的「先苦後樂」?
大姊曾似頗感擔心地說,她的小孩好像都是把作業留到最後再做 --- 這跟我們從前先把作業趕完,然後再玩的作風完全不同。而令我咀嚼再三的,卻是她接下來的一句話:「這樣也好,免得最後累死了,也沒有輕鬆到。」
每個人都有每個人的命性,每個人也都有自己的風格。或許,認識自己,就能夠在「先苦後樂」與「莫待無花空折枝」之間微妙地拿捏,就能夠在生活中知足常樂。但這裡其實有個困難處,那就是自己實在很難認清自己!
本來對「先苦後樂」這句話並沒有想太多。但今天早上在丹堤閱讀「學習,就是一種享受」,看到作者把「先苦後樂」視為錯誤的神話,卻突然有些話想說。
「現在努力工作,不久之後就會有獎賞」、「你只要把家庭作業做完,就可以出去玩」。在我們的求學過程以及之後的生涯裡,諸如此類的命令與信仰一直影響著我們。因此,退休之後的那幾年,才是一個人的「黃金時期」...
記不記得,童話故事裡,在草地裡唧唧吟唱整個夏天的蚱蜢最後被餓死;而在塵封穀倉裡辛勤工作的螞蟻卻得到回報?從前的年代裡,似乎將「先苦後樂」視為理所當然。但是,如果年老體衰後才退休、而退休後才是一個人的黃金時期,那樂趣又在那兒呢?
曾經寫下一篇 Stop improving yourself and start living。算算從這篇網誌到現在,已經接近一整年了(好可怕!)。我當初想表達的,是不是就是反對一廂情願的「先苦後樂」?
大姊曾似頗感擔心地說,她的小孩好像都是把作業留到最後再做 --- 這跟我們從前先把作業趕完,然後再玩的作風完全不同。而令我咀嚼再三的,卻是她接下來的一句話:「這樣也好,免得最後累死了,也沒有輕鬆到。」
每個人都有每個人的命性,每個人也都有自己的風格。或許,認識自己,就能夠在「先苦後樂」與「莫待無花空折枝」之間微妙地拿捏,就能夠在生活中知足常樂。但這裡其實有個困難處,那就是自己實在很難認清自己!
星期四, 7月 27, 2006
PHP 的陣列
就 prototyping 而言,我相當喜歡 PHP 的陣列。
上回提到,PHP 的 array 其實是用 Hash table + Double Linked List 實作的。因此,要存取$array[100] ,實際上是用 "100" 作為雜湊表 $array 的鍵值 (key),然後傳回表中所儲存的值。
所以,在實際的應用上,使用 PHP 的陣列,效能會比「一般程式語言的陣列」慢上許多(因為需要計算 hash key,有時也必須處理 hash collision 的問題)。
即使有著這麼大的效能缺陷,我還是相當喜歡 PHP 的陣列。為什麼呢?
因為,除了「一般陣列」的處理方式外,我們還可以很簡單地利用 PHP array 來實作出基本的資料結構(像是 linked list、stack、queue、tree 等等),而 PHP 也內建了許多有用的函式,可以讓我們方便地操作陣列的內容。例如,我們可以
上回提到,PHP 的 array 其實是用 Hash table + Double Linked List 實作的。因此,要存取
所以,在實際的應用上,使用 PHP 的陣列,效能會比「一般程式語言的陣列」慢上許多(因為需要計算 hash key,有時也必須處理 hash collision 的問題)。
即使有著這麼大的效能缺陷,我還是相當喜歡 PHP 的陣列。為什麼呢?
因為,除了「一般陣列」的處理方式外,我們還可以很簡單地利用 PHP array 來實作出基本的資料結構(像是 linked list、stack、queue、tree 等等),而 PHP 也內建了許多有用的函式,可以讓我們方便地操作陣列的內容。例如,我們可以
- 用 array_push() 與 array_pop() 來實作出堆疊 (stack) 的行為。
- 用 array_shift() 與 array_push() 來實作簡單的佇列 (queue)。
- 用 array_push()、array_pop()、array_shift()、array_unshift()來實作雙向佇列 (dqueue)。傳統的人工智能 (artificial intelligence) ,有許多問題相當著重於「狀態空間搜尋」(state space search);傳統的課本裡,也經常會以一些「玩具問題」 (toy problems) 來介紹這樣的解題概念。之前解傳教士與食人族的程式、解數獨的程式、解 Pentominoes的程式,都是利用狀態空間搜尋的例子。
狀態空間的搜尋,大致上類似於樹狀結構的巡走 (tree traversal)。利用雙向佇列,可以很容易地實作出廣度優先 (breadth-first) 或深度優先 (depth-first) 搜尋。 - 用 array_merge()、array_intersect()、array_diff() 來實作集合之間的聯集、交集、以及差集。
- 用多重陣列實作樹狀結構 (tree)。也就是說,可以直接利用 PHP 的多重陣列來實作像是 parse tree 般的階層結構。
- 其他還有許多「有時會顯得很方便」的內建函式,像是 sort() 可以對陣列排序,usort() 可以呼叫自己定義的另一個函式來對陣列內容排序,shuffle() 可以打亂陣列內容的順序(不必自己寫一小段程式來做洗牌的動作),array_fill()、array_pad() 與 range() 可以填滿一個陣列... 等等。
星期一, 7月 24, 2006
從 Pentominoes 程式談起
對於一些年幼時期所玩過的益智遊戲,似乎總有著一股濃濃的情感。
Pentominoes 是一種拼圖益智遊戲,用十二片面積相等的不同拼塊,填滿一個 6x10 的長方形。下圖是一個拼好的例子:

印象中,國小時期曾經玩過這個益智遊戲,並且好像拼出兩百多個不同解。十多年前,在美國讀碩士班時,為了因應無聊的日子,曾用 Power Basic 寫過一個程式來解這個拼圖遊戲。記得當時的主機,還是 Intel 386。66M Hz 的 CPU,跑出所有 2339 組解,需要整整一天的時間。
曾幾何時,電腦硬體的進展飛速;同樣一支程式,在我現在的 1.73G Hz 的 Notebook 上執行,竟然只要 200 秒的時間。(我是有稍微改進了一些冗餘的程式迴圈,但沒有這些改進,依然可以在幾分鐘內跑完所有的解答。)
前些日子,想整理一些曾經感興趣的程式設計問題。很自然地,也想重新檢視一下這個解 Pentominoes 的程式。
溫故也該知新。回頭整理從前的東西,似乎也應檢視一下先進們的成果。用 Google 查了一下 Pentominoes,可以找到許多相關的網頁與程式。其中有一個 Gerard's Polyomino Solution Engine,竟然可以在 18~19 秒內,就跑出所有的解答!
坦白說,我當時是覺得有些氣餒。執行速度,怎麼會差這麼多呢?
前兩個月想開了些(不必要求完美 --- 即使自己的演算法或程式效能比較差,但應該也還是能藉此介紹一些有趣的東西),還是決定用 PHP 重新改寫自己的 Pentominoes 程式,順便改用 bit operations 來改善一些執行效能。很不幸地,執行後發現,竟然需要將近兩個小時的時間,才能跑出所有的解答!這當然也讓自己頗感訝異:雖然早知道 PHP 屬於 interpretive language,但... 似乎也跑得太慢了吧?
後來做了一些簡單的實驗,閱讀相關文件後,漸漸了解其實這是因為 PHP array 並不是像傳統的陣列,被配置在連續的記憶體區塊內。它是使用 hash table + double linked list 來實作的,因此執行$array[$i] ,實際上並不該被解譯為「取出 $array 區塊第 $i 個項目的內容」,而是「用 $i 作為 $array 雜湊表的 hash key,然後取得相對應的值」。如此一來,執行的速度當然就會慢上許多。
幾個星期前,突然想用 Java 來實作看看,了解一下自己的程式究竟比 Gerard 的程式慢上多少。大概是自己寫程式的習慣還不錯,從 PHP 改寫為 Java,含除錯竟然只需要幾個小時的時間。初步執行的結果是,需要 57 秒的時間。
哦,只需要不到一分鐘的時間!這下子精神來了,花上一個星期左右的時間來優化實作的方式,最後終於可以在 17~18 秒內,就把 2339 組解答都找出來。
於是,允許自己得意十七秒鐘,就當作是一個星期辛苦地優化程式的犒賞吧 :p
Pentominoes 是一種拼圖益智遊戲,用十二片面積相等的不同拼塊,填滿一個 6x10 的長方形。下圖是一個拼好的例子:

印象中,國小時期曾經玩過這個益智遊戲,並且好像拼出兩百多個不同解。十多年前,在美國讀碩士班時,為了因應無聊的日子,曾用 Power Basic 寫過一個程式來解這個拼圖遊戲。記得當時的主機,還是 Intel 386。66M Hz 的 CPU,跑出所有 2339 組解,需要整整一天的時間。
曾幾何時,電腦硬體的進展飛速;同樣一支程式,在我現在的 1.73G Hz 的 Notebook 上執行,竟然只要 200 秒的時間。(我是有稍微改進了一些冗餘的程式迴圈,但沒有這些改進,依然可以在幾分鐘內跑完所有的解答。)
前些日子,想整理一些曾經感興趣的程式設計問題。很自然地,也想重新檢視一下這個解 Pentominoes 的程式。
溫故也該知新。回頭整理從前的東西,似乎也應檢視一下先進們的成果。用 Google 查了一下 Pentominoes,可以找到許多相關的網頁與程式。其中有一個 Gerard's Polyomino Solution Engine,竟然可以在 18~19 秒內,就跑出所有的解答!
坦白說,我當時是覺得有些氣餒。執行速度,怎麼會差這麼多呢?
前兩個月想開了些(不必要求完美 --- 即使自己的演算法或程式效能比較差,但應該也還是能藉此介紹一些有趣的東西),還是決定用 PHP 重新改寫自己的 Pentominoes 程式,順便改用 bit operations 來改善一些執行效能。很不幸地,執行後發現,竟然需要將近兩個小時的時間,才能跑出所有的解答!這當然也讓自己頗感訝異:雖然早知道 PHP 屬於 interpretive language,但... 似乎也跑得太慢了吧?
後來做了一些簡單的實驗,閱讀相關文件後,漸漸了解其實這是因為 PHP array 並不是像傳統的陣列,被配置在連續的記憶體區塊內。它是使用 hash table + double linked list 來實作的,因此執行
幾個星期前,突然想用 Java 來實作看看,了解一下自己的程式究竟比 Gerard 的程式慢上多少。大概是自己寫程式的習慣還不錯,從 PHP 改寫為 Java,含除錯竟然只需要幾個小時的時間。初步執行的結果是,需要 57 秒的時間。
哦,只需要不到一分鐘的時間!這下子精神來了,花上一個星期左右的時間來優化實作的方式,最後終於可以在 17~18 秒內,就把 2339 組解答都找出來。
於是,允許自己得意十七秒鐘,就當作是一個星期辛苦地優化程式的犒賞吧 :p
星期四, 7月 20, 2006
一切都是從夢幻開始
「神奇寶貝樂園在台北開幕了!」
小傢伙從電視上看到廣告後,可以將這句台詞朗朗上口,可見神奇寶貝的威力無窮。我答應她,只要她連續十天的表現都是「O」(沒有亂哭鬧;不會拖延不肯去刷牙、吃飯、洗澡),就帶她去玩。
前天她達到了要求(雖然太太覺得我有放水的嫌疑;但我的目的,其實是要小傢伙學會克制自己不好的行為。她應該是有進步不少,因此我認為該實踐約定)。恰好神奇寶貝樂園推出「夜間雙人星光票」,票價便宜許多;再加上晚上氣溫較低,不必在太陽下曬得渾身冒汗,所以我們決定昨晚就帶她去玩。而小傢伙,當然一路上都非常興奮!
樂園的門口,有一隻大大的皮卡丘。主題歌曲重覆地播放,很有歡樂的氣氛。服務人員態度非常好,讓人覺得,台灣若真的要學習日本的服務精神,其實也是做得到的。
或許是因為非假日的晚上,人潮並不多。比起熱門時段,動不動就要排隊一個小時(網路留言如此說),我們可是玩得相當盡興。在三個半小時內,我們玩了三次「皮卡丘之森」、四次「神奇寶貝的刺激狩獵之旅」、三次「神奇寶貝旋轉木馬」、兩次「皮丘兄弟頑皮列車」,也看了「神奇寶貝3D電影」、被「水躍魚的滑水道冒險之旅」濺得右半身幾乎全溼。不要說小傢伙非常高興,連我都覺得票價相當值得。
下圖左方是樂園門口的巨大皮卡丘,右方是小傢伙坐在皮卡丘之森的皮卡丘上。

再來一些照片:下圖左方是星光票的票根,右方是小傢伙在狩獵之旅所獲得的神奇寶貝證書。

就像是樂園裡的某個標語:一切都是從夢幻開始。且讓我們洗滌蒙塵的童心,坐上頑皮列車、戴上 3D 眼鏡,陪小朋友一起去尋找夢幻吧!
小傢伙從電視上看到廣告後,可以將這句台詞朗朗上口,可見神奇寶貝的威力無窮。我答應她,只要她連續十天的表現都是「O」(沒有亂哭鬧;不會拖延不肯去刷牙、吃飯、洗澡),就帶她去玩。
前天她達到了要求(雖然太太覺得我有放水的嫌疑;但我的目的,其實是要小傢伙學會克制自己不好的行為。她應該是有進步不少,因此我認為該實踐約定)。恰好神奇寶貝樂園推出「夜間雙人星光票」,票價便宜許多;再加上晚上氣溫較低,不必在太陽下曬得渾身冒汗,所以我們決定昨晚就帶她去玩。而小傢伙,當然一路上都非常興奮!
樂園的門口,有一隻大大的皮卡丘。主題歌曲重覆地播放,很有歡樂的氣氛。服務人員態度非常好,讓人覺得,台灣若真的要學習日本的服務精神,其實也是做得到的。
或許是因為非假日的晚上,人潮並不多。比起熱門時段,動不動就要排隊一個小時(網路留言如此說),我們可是玩得相當盡興。在三個半小時內,我們玩了三次「皮卡丘之森」、四次「神奇寶貝的刺激狩獵之旅」、三次「神奇寶貝旋轉木馬」、兩次「皮丘兄弟頑皮列車」,也看了「神奇寶貝3D電影」、被「水躍魚的滑水道冒險之旅」濺得右半身幾乎全溼。不要說小傢伙非常高興,連我都覺得票價相當值得。
下圖左方是樂園門口的巨大皮卡丘,右方是小傢伙坐在皮卡丘之森的皮卡丘上。

再來一些照片:下圖左方是星光票的票根,右方是小傢伙在狩獵之旅所獲得的神奇寶貝證書。

就像是樂園裡的某個標語:一切都是從夢幻開始。且讓我們洗滌蒙塵的童心,坐上頑皮列車、戴上 3D 眼鏡,陪小朋友一起去尋找夢幻吧!
星期二, 7月 18, 2006
永遠不夠的時間
大概是年紀到了某個階段,最近經常覺得時間過得太快。
前一陣子在網誌裡發洩了煩躁的狀況後,白天裡心情似乎逐漸恢復平和;但是,晚上卻仍會覺得某些地方不對勁。
我想了想,一個主要的原因,似乎是在於,自己想寫寫一些文章,卻越來越覺得路途遙遠(光陰短暫)而不可及。光是為了準備素材,就花去相當多的時間;而文章本身,卻怎樣也寫不出來。這是否表示,「整理一些心得、寫寫文章、甚至出本書」的目標,對自己來說是太高、太過不切實際了些?
如果確實是「不切實際」的目標,那麼我不該去追求,應該要放棄它。但是,令人困擾的是,我自己內心似乎仍然想去做,似乎仍覺得應該嘗試、似乎仍鼓勵自己勇敢地向前行。只是,為什麼「看透不切實際而放棄」,與「積極努力、一步一腳印地前行」之間的界線,感覺起來是那麼地模糊、那麼地令人困惑呢?
前一陣子在網誌裡發洩了煩躁的狀況後,白天裡心情似乎逐漸恢復平和;但是,晚上卻仍會覺得某些地方不對勁。
我想了想,一個主要的原因,似乎是在於,自己想寫寫一些文章,卻越來越覺得路途遙遠(光陰短暫)而不可及。光是為了準備素材,就花去相當多的時間;而文章本身,卻怎樣也寫不出來。這是否表示,「整理一些心得、寫寫文章、甚至出本書」的目標,對自己來說是太高、太過不切實際了些?
如果確實是「不切實際」的目標,那麼我不該去追求,應該要放棄它。但是,令人困擾的是,我自己內心似乎仍然想去做,似乎仍覺得應該嘗試、似乎仍鼓勵自己勇敢地向前行。只是,為什麼「看透不切實際而放棄」,與「積極努力、一步一腳印地前行」之間的界線,感覺起來是那麼地模糊、那麼地令人困惑呢?
星期四, 7月 13, 2006
「迴紋針換到房子」的故事
CNET 有篇頗有意思的文章:「Blog 傳奇:一根迴紋針換到一棟房子」。
這是真實、卻令人難以相信的故事:在一年內,經由十四次的交易,可以讓人用一根紅色的迴紋針,換到一棟兩層樓房子。
以事後諸葛的角度,大家或許可以說,這是經由網路與大眾行銷等等的推波助瀾,才能達成這項「不可能的任務」。但令我印象深刻的,卻是在 CNET 的採訪裡,主角 MacDonald 說的一些話語。
MacDonald 說,『一開始我也很擔心,因為一說出來,大家都會覺得你瘋了』。這是現實社會對「違反社會常態」crazy idea 的反應。『於是情況類似於,你慢慢靠近游泳池,周遭的人一直喊著:跳下去,跳下去。然後你就鼓起勇氣跳下去...』,這是讓自己在勇氣不足的情況下,卻仍然能夠「走不一樣的路」的一種方式吧?
然後,MacDonald 說,『幾個月前,我有一度很擔心,覺得大概不太可能達成這個目標』、『在交易的過程中,我的確有一陣子很不確定。我不是沮喪,而是覺得有點厭倦了,我覺得自己一直付出,但卻沒什麼收穫』。這似乎是任何「走不一樣的路」的人,都必須承擔的困頓,必須面對與解決的問題?
MacDonald 還有一些話語也頗有意思:
這是真實、卻令人難以相信的故事:在一年內,經由十四次的交易,可以讓人用一根紅色的迴紋針,換到一棟兩層樓房子。
以事後諸葛的角度,大家或許可以說,這是經由網路與大眾行銷等等的推波助瀾,才能達成這項「不可能的任務」。但令我印象深刻的,卻是在 CNET 的採訪裡,主角 MacDonald 說的一些話語。
MacDonald 說,『一開始我也很擔心,因為一說出來,大家都會覺得你瘋了』。這是現實社會對「違反社會常態」crazy idea 的反應。『於是情況類似於,你慢慢靠近游泳池,周遭的人一直喊著:跳下去,跳下去。然後你就鼓起勇氣跳下去...』,這是讓自己在勇氣不足的情況下,卻仍然能夠「走不一樣的路」的一種方式吧?
然後,MacDonald 說,『幾個月前,我有一度很擔心,覺得大概不太可能達成這個目標』、『在交易的過程中,我的確有一陣子很不確定。我不是沮喪,而是覺得有點厭倦了,我覺得自己一直付出,但卻沒什麼收穫』。這似乎是任何「走不一樣的路」的人,都必須承擔的困頓,必須面對與解決的問題?
MacDonald 還有一些話語也頗有意思:
- 『一開始當我選擇迴紋針做為起點,這就注定了我必須很有創意才行』
- 『你必須走出戶外,真實去面對你的交易對象』
- 『從很小的地方開始,把目標放遠,然後就好好地玩吧』
星期二, 7月 11, 2006
陪伴小傢伙的下午
今天下午在家裡帶小孩。
覺得帶三歲多的小孩,最需要的是耐性,陪小朋友玩的耐性。小傢伙一直要求我陪她玩,可是,陪她玩玩茶犬、神奇寶貝、堆堆積木、揉揉黏土後,自己很快地就覺得無聊、甚至疲倦了。
到床上小盹了半小時,醒來時竟已滿目瘡痍 -- 地上、床上堆滿了各式的玩具。(據教育部國語辭典,「滿目瘡痍」的意思是「映入眼中的都是殘破不堪的悲涼景象」,用在這裡作為誇大的比喻,應該還算合適吧?)
於是,相當佩服傳統的家庭主婦。帶小孩之外,她們竟然還能做那麼多家事,還能將家裡整理得乾乾淨淨。
在射雕英雄傳裡,郭靖曾提到他七師父常說:「看人挑擔不吃力,自己挑擔壓斷脊」。帶小孩雖不似挑擔,但道理卻也類似。要帶得好,當真不是件容易事呢。
覺得帶三歲多的小孩,最需要的是耐性,陪小朋友玩的耐性。小傢伙一直要求我陪她玩,可是,陪她玩玩茶犬、神奇寶貝、堆堆積木、揉揉黏土後,自己很快地就覺得無聊、甚至疲倦了。
到床上小盹了半小時,醒來時竟已滿目瘡痍 -- 地上、床上堆滿了各式的玩具。(據教育部國語辭典,「滿目瘡痍」的意思是「映入眼中的都是殘破不堪的悲涼景象」,用在這裡作為誇大的比喻,應該還算合適吧?)
於是,相當佩服傳統的家庭主婦。帶小孩之外,她們竟然還能做那麼多家事,還能將家裡整理得乾乾淨淨。
在射雕英雄傳裡,郭靖曾提到他七師父常說:「看人挑擔不吃力,自己挑擔壓斷脊」。帶小孩雖不似挑擔,但道理卻也類似。要帶得好,當真不是件容易事呢。
星期六, 7月 08, 2006
煩躁
棄我去者,昨日之日不可留。亂我心者,今日之日多煩憂。
不知怎麼搞地,最近這一兩個星期,總是會覺得有些心煩。或許是天氣炎熱、或許是睡眠不足、或許是一些生活瑣事、也或許是自己「每隔一些時日就會發作的週期病」。算了算時間,距離上回發作,差不多有兩個半月(間隔好像太短了些,真糟糕)。
煩躁的原因,到底是什麼呢?我依然不確定。只是隱隱覺得好似有許多東西積壓在心裡,但卻又無法明確地指認,究竟是那些事物讓自己煩心。
因此,從這個角度來看,自己這一年來在心性與成熟度上的些許進步,其實是相當微不足道的。連自己的煩惱究竟是什麼,都不知道,怎能算有多少進步呢?
不過,自己倒是學會時時提醒自己,就算煩躁「發作」,也不該讓它擴大、不該讓它蔓延到家中的其他成員。畢竟,要克服自己內心的無明與煩憂,光靠嘴巴說是不夠的。
不知怎麼搞地,最近這一兩個星期,總是會覺得有些心煩。或許是天氣炎熱、或許是睡眠不足、或許是一些生活瑣事、也或許是自己「每隔一些時日就會發作的週期病」。算了算時間,距離上回發作,差不多有兩個半月(間隔好像太短了些,真糟糕)。
煩躁的原因,到底是什麼呢?我依然不確定。只是隱隱覺得好似有許多東西積壓在心裡,但卻又無法明確地指認,究竟是那些事物讓自己煩心。
因此,從這個角度來看,自己這一年來在心性與成熟度上的些許進步,其實是相當微不足道的。連自己的煩惱究竟是什麼,都不知道,怎能算有多少進步呢?
不過,自己倒是學會時時提醒自己,就算煩躁「發作」,也不該讓它擴大、不該讓它蔓延到家中的其他成員。畢竟,要克服自己內心的無明與煩憂,光靠嘴巴說是不夠的。
星期三, 7月 05, 2006
冬山河親水之旅
酷熱的盛暑。早上走過林蔭道,卻時時可以聽見悅耳的蟬聲。
經歷上回墾丁之遊後,小傢伙說她很喜歡在淺水池玩耍。我答應她,會再帶她去玩水。
而國道五號開通後,台北到宜蘭只需要不到一個小時的車程。因此,到羅東冬山河的親水公園玩玩水,來個半日或一日遊,應該是可行的。
所以,我和太太商量,應該趁著非假日的時段,帶著寶寶來趟戲水之旅。順道也走走國內最長的雪山隧道,感受一下隧道工程的艱辛與偉大。
小傢伙玩得很愉快。而自己在一旁看著、陪著她玩,心裡也是無比舒暢。好棒的感覺啊。
後記:報載雪山隧道在安全顧慮上,其實還有諸多問題。雖然自己算是提前享用到隧道工程縮短車程的便利,但我還是認為,行車人員的安全性應該比「趁早通車」來得重要。換句話說,大官們不應該為了「表面上的政績」,在尚未取得足夠安全性保證前,就倉促宣布通車。現在的政治人物,思考作為實在都令人看不下去。

而國道五號開通後,台北到宜蘭只需要不到一個小時的車程。因此,到羅東冬山河的親水公園玩玩水,來個半日或一日遊,應該是可行的。
所以,我和太太商量,應該趁著非假日的時段,帶著寶寶來趟戲水之旅。順道也走走國內最長的雪山隧道,感受一下隧道工程的艱辛與偉大。
小傢伙玩得很愉快。而自己在一旁看著、陪著她玩,心裡也是無比舒暢。好棒的感覺啊。
後記:報載雪山隧道在安全顧慮上,其實還有諸多問題。雖然自己算是提前享用到隧道工程縮短車程的便利,但我還是認為,行車人員的安全性應該比「趁早通車」來得重要。換句話說,大官們不應該為了「表面上的政績」,在尚未取得足夠安全性保證前,就倉促宣布通車。現在的政治人物,思考作為實在都令人看不下去。
星期二, 7月 04, 2006
「東山再起」
「東山再起」與「捲土重來」是同義詞嗎?
感覺起來,好像是吧。至少,我分不出它們在成語的使用上有著什麼樣的不同。然而,今早經由「公孫策說唐詩故事」的一篇解說,我才知道、才注意到它們在使用上,是有不同含意的。
「捲土重來」典故出自杜牧《題烏江亭》中,「江東子弟多才俊,捲土重來未可知」。詩人認為項羽自刎烏江,雖然悲壯(英雄氣短),但是若項羽 EQ 高些,當年能忍一時之氣,回到江東重整旗鼓,楚漢相爭鹿死誰手,還未可知。
「東山再起」指的是東晉時期,謝安接到朝廷徵召出來做官,卻始終不忘歸隱東山,因而當了一個多月的官之後,就掛印辭職了;之後,應當權的大將軍桓溫力邀,再度出來做官。這樣的故事歷程,被時人稱之為「東山再起」。
因此,公孫策特別說明,一個人失敗以後積極求勝,叫做「捲土重來」。不忮不求而由在位者力邀復出,才叫做「東山再起」。
喔,成語典故的使用,就是有著如許微妙的不同!
感覺起來,好像是吧。至少,我分不出它們在成語的使用上有著什麼樣的不同。然而,今早經由「公孫策說唐詩故事」的一篇解說,我才知道、才注意到它們在使用上,是有不同含意的。
「捲土重來」典故出自杜牧《題烏江亭》中,「江東子弟多才俊,捲土重來未可知」。詩人認為項羽自刎烏江,雖然悲壯(英雄氣短),但是若項羽 EQ 高些,當年能忍一時之氣,回到江東重整旗鼓,楚漢相爭鹿死誰手,還未可知。
「東山再起」指的是東晉時期,謝安接到朝廷徵召出來做官,卻始終不忘歸隱東山,因而當了一個多月的官之後,就掛印辭職了;之後,應當權的大將軍桓溫力邀,再度出來做官。這樣的故事歷程,被時人稱之為「東山再起」。
因此,公孫策特別說明,一個人失敗以後積極求勝,叫做「捲土重來」。不忮不求而由在位者力邀復出,才叫做「東山再起」。
喔,成語典故的使用,就是有著如許微妙的不同!
星期一, 7月 03, 2006
「注意力經濟」讀後感
又是一本「金玉其外,無趣其中」的企管論述書籍?
三年前在書店看到這本「注意力經濟」,就被這本書的一些外在特質所吸引。書本紙張的質感、印刷排版的舒適度、封面背頁的名人推薦、以及看起來頗有趣的書名(看到書名,很容易聯想到「注意力失焦」等因應資訊過載所產生的困擾),讓我當時毫不猶豫地將這本書買了下來。
「注意力經濟」這本書的基本觀察,其實是相當有趣的。由於資料、資訊不斷增加,且增加的速度遠超過人類基因(經由自然演化)所能適應,因此注意力就逐漸成為稀有財,而「資訊時代」也將逐漸過渡到「注意力時代」。
我同意作者們的這些觀察與推論。可是,類同於前些時日閱讀後,覺得表面上有趣,實質上深度不足的幾本書:資訊超載、新消費者心理學、A+的秘訣,這本「注意力經濟」的有趣內容,幾乎也只出現在第一章。閱讀到後來,越來越感覺作者們的論述似乎與「注意力經濟」沒有太大的關連。
簡單地說,有了「資訊超過人類所能負擔、人的注意力有其限制」這樣的觀察後,作者們將重點轉入「注意力管理」的問題。但既然人類天生無法處理資訊超載的問題,要「管理注意力」真是談何容易?於是,前兩個章節後,剩下來的長篇大論,建議就越來越顯得力不從心,論述也就越來越顯得牽強了。
其實,換一個角度來看,或許我不應該對這些書籍有如許多的批評。它們或許只是彰顯出,要寫一本立論有趣,內容又充實的書,是多麼困難的一件事。也或許,作者們本來就不期待它是一本怎樣的好書,而只是想藉著出版這樣的一本書,獲取社會上的注意力(名氣)與實質的回饋(金錢)呢。
三年前在書店看到這本「注意力經濟」,就被這本書的一些外在特質所吸引。書本紙張的質感、印刷排版的舒適度、封面背頁的名人推薦、以及看起來頗有趣的書名(看到書名,很容易聯想到「注意力失焦」等因應資訊過載所產生的困擾),讓我當時毫不猶豫地將這本書買了下來。
「注意力經濟」這本書的基本觀察,其實是相當有趣的。由於資料、資訊不斷增加,且增加的速度遠超過人類基因(經由自然演化)所能適應,因此注意力就逐漸成為稀有財,而「資訊時代」也將逐漸過渡到「注意力時代」。
我同意作者們的這些觀察與推論。可是,類同於前些時日閱讀後,覺得表面上有趣,實質上深度不足的幾本書:資訊超載、新消費者心理學、A+的秘訣,這本「注意力經濟」的有趣內容,幾乎也只出現在第一章。閱讀到後來,越來越感覺作者們的論述似乎與「注意力經濟」沒有太大的關連。
簡單地說,有了「資訊超過人類所能負擔、人的注意力有其限制」這樣的觀察後,作者們將重點轉入「注意力管理」的問題。但既然人類天生無法處理資訊超載的問題,要「管理注意力」真是談何容易?於是,前兩個章節後,剩下來的長篇大論,建議就越來越顯得力不從心,論述也就越來越顯得牽強了。
其實,換一個角度來看,或許我不應該對這些書籍有如許多的批評。它們或許只是彰顯出,要寫一本立論有趣,內容又充實的書,是多麼困難的一件事。也或許,作者們本來就不期待它是一本怎樣的好書,而只是想藉著出版這樣的一本書,獲取社會上的注意力(名氣)與實質的回饋(金錢)呢。
星期四, 6月 29, 2006
公孫策說唐詩故事
小時候,我應該也是很喜歡聽故事的。
只是,隨著年歲漸長,越來越少看到精彩的故事,也漸漸地沒有了夢想。
然而,中國的歷史故事,其實是相當精采的。只是,在自己的求學時期,似乎很少碰到會講故事、會解說故事的老師。對於一般陳述歷史的書籍,自己通常看過了也沒有什麼特別的感受、看過了也摸索不到故事的精華。
前些時日,在書店看到一本「公孫策說唐詩故事」,隨手翻了幾頁,卻也因而喚起內心深處的渴望。雖然看過了之後,對許多書中介紹的唐詩還是「有看沒有懂」(這本書並沒有解說唐詩 --- 連翻成白話文都沒有!),但閱讀公孫策介紹說明的歷史故事(以及偶而加入的提示或評論)後,自己卻似乎對於人生的起落、戰爭或政治鬥爭的黑暗,隱隱有了更深一層體會。
對我來說,這是一本值得閱讀的書。它讓我再次回味許多「似曾相識」的歷史故事、再次旁觀古時名人將相的精彩人生(雖然許多故事的主角都是以悲慘的結局收場),也似乎讓自己對時局、環境、乃至生活際遇,感受到不一樣的厚度。
只是,隨著年歲漸長,越來越少看到精彩的故事,也漸漸地沒有了夢想。
然而,中國的歷史故事,其實是相當精采的。只是,在自己的求學時期,似乎很少碰到會講故事、會解說故事的老師。對於一般陳述歷史的書籍,自己通常看過了也沒有什麼特別的感受、看過了也摸索不到故事的精華。
前些時日,在書店看到一本「公孫策說唐詩故事」,隨手翻了幾頁,卻也因而喚起內心深處的渴望。雖然看過了之後,對許多書中介紹的唐詩還是「有看沒有懂」(這本書並沒有解說唐詩 --- 連翻成白話文都沒有!),但閱讀公孫策介紹說明的歷史故事(以及偶而加入的提示或評論)後,自己卻似乎對於人生的起落、戰爭或政治鬥爭的黑暗,隱隱有了更深一層體會。
對我來說,這是一本值得閱讀的書。它讓我再次回味許多「似曾相識」的歷史故事、再次旁觀古時名人將相的精彩人生(雖然許多故事的主角都是以悲慘的結局收場),也似乎讓自己對時局、環境、乃至生活際遇,感受到不一樣的厚度。
星期一, 6月 26, 2006
數獨 (Su DoKu) 的程式解
據說,靈長類的動物,都喜歡玩遊戲。
或許是出於天性,自己一直對於益智遊戲頗感興趣。而設計程式,不也是為了解決某個問題嗎?因此,從某種角度觀看,也可以將「不算複雜的程式設計」,當作一種益智遊戲。如此一來,程式設計與實作,就相當於發展出「如何找出遊戲答案」的方法了。
或許是由於媒體的炒作與推波助瀾,數獨 (Su DoKu) 在這幾個月裡,似乎吸引了不少閒暇排遣的大眾目光。上網路書店博客來查了一下,光是書名包含「數獨」的資料,就有 45 筆呢。
數獨的遊戲規則很簡單,就是在一個 9x9 的方陣中,給定一些 1~9 的數字;然後遊戲玩家必須在其他的空格裡填入 1~9 的數字,讓方陣的每一行、每一列、以及(將方陣切分為 9 個) 3x3 的小方陣裡,都不重覆地出現 1 到 9 的數字。
例如,下圖左方就是一個數獨問題的盤面,而右方則是這個問題的(唯一)解答。

解解數獨,就像是以往令人懷念的填字遊戲,可以在閒暇時鍛鍊自己的腦力。不過,對關心程式設計的人來說,怎樣寫出一個「能夠自動解數獨」的程式,或許才是有趣點。
這個問題並不難,網路上也已經有豐富的相關資源。用 Google 搜尋 Su Doku,很快就可以找到許多數獨相關的網站,有的提供線上遊戲,有的則連程式的原始碼都附上了。
但說實在地,在看過答案(程式原始碼)之前,自己思考、設計與實作這樣的程式,還是有趣得多(雖然,花時間做這樣的思考與實作,沒能得到什麼實質上的回饋)。而我不是也想整理些有趣的小程式嗎?數獨或許是一個不錯的主題吧。
因此,花了些時間,自己用 PHP 開發了一份解數獨的程式。貫穿程式的演算法,是 number-of-choices(可能的選擇數目;或者說是可能性)的想法,以及 backtracking(回溯)的機制。 Number-of-choices 的意思,是找出每個空格裡,有多少種可能的數字;而 backtracking 則是當程式發覺某條路走不下去時,回溯到先前的狀態,換另外一條路走。
對於上圖左方的問題,每個空格「可能出現的數字」總數(可能性),就如右圖紅色字體所示。例如,從左邊數來第三格、上邊數來第三格,原本可以填 1~9 的任意數字;但因為同一列 (row)已經出現數字 1, 2, 3, 7, 8,同一行 (column) 已經有數字 2, 3, 4, 5, 6,且同一個 3x3 子方陣已經填有 2, 3, 5, 7,因此這個格子裡,不可能填 1~8 的數字,它的可能性(用紅色數字表示)只剩下 1。
可能性為 1 的方格,表示已經可以決定這個方格內的數字。因此程式可以將這個數字找出來,填寫進去,然後產生一份新的盤面。接下來,重覆運用可能性的觀念,計算這個新盤面裡每個空格的可能性,可以算出更多可能性為 1 的方格數字;如此反覆計算,最後就可以得到解答。
困難些的數獨問題,會讓盤面裡的每個空格,可能性都超過 1。例如,下圖左方的盤面,每個空格的可能填寫的的數字總數,就都大於 1(用紅色字體標示於下圖右方):

遇到這樣的盤面,我的程式會尋找目前具有最小可能性的方格(如果有數個方格有相同的最小可能性,就選擇「填入數字後,能夠降低最多其他方格可能性」的空格來填),猜測一個可能的數字,然後看看填入這個數字後,是不是能夠找到解答。如果最後失敗了(有某個空格可能性小於或等於零,意味著找不到解答),就表示這個數字猜錯了;這時程式會退回猜測前的狀態,重新選一個數字,然後繼續找尋問題的答案。
有時,一個數獨盤面也可能得出多種解答。至於上圖那個「比較困難」的數獨問題,很容易用程式算出唯一解:

雖然想要藉由這類的益智問題,來介紹、討論程式設計的一些相關課題,但還是懷疑自己是否有足夠的能力、毅力、與恆心來完成。既然對自己這麼沒有把握,那麼先利用 Blog 記錄一些目前的想法與結果,或許也是個不錯的作法吧。
後記:原先我把 number-of-choices 寫成 degree-of-freedom(自由度)。雖然「有多少種可能出現的選擇」(number-of-choices) 多少也代表「可自由變化的程度」,但 degree of freedom 是一個廣被接受的 well-defined term,還是不要錯用、亂用比較好。
或許是出於天性,自己一直對於益智遊戲頗感興趣。而設計程式,不也是為了解決某個問題嗎?因此,從某種角度觀看,也可以將「不算複雜的程式設計」,當作一種益智遊戲。如此一來,程式設計與實作,就相當於發展出「如何找出遊戲答案」的方法了。
或許是由於媒體的炒作與推波助瀾,數獨 (Su DoKu) 在這幾個月裡,似乎吸引了不少閒暇排遣的大眾目光。上網路書店博客來查了一下,光是書名包含「數獨」的資料,就有 45 筆呢。
數獨的遊戲規則很簡單,就是在一個 9x9 的方陣中,給定一些 1~9 的數字;然後遊戲玩家必須在其他的空格裡填入 1~9 的數字,讓方陣的每一行、每一列、以及(將方陣切分為 9 個) 3x3 的小方陣裡,都不重覆地出現 1 到 9 的數字。
例如,下圖左方就是一個數獨問題的盤面,而右方則是這個問題的(唯一)解答。

解解數獨,就像是以往令人懷念的填字遊戲,可以在閒暇時鍛鍊自己的腦力。不過,對關心程式設計的人來說,怎樣寫出一個「能夠自動解數獨」的程式,或許才是有趣點。
這個問題並不難,網路上也已經有豐富的相關資源。用 Google 搜尋 Su Doku,很快就可以找到許多數獨相關的網站,有的提供線上遊戲,有的則連程式的原始碼都附上了。
但說實在地,在看過答案(程式原始碼)之前,自己思考、設計與實作這樣的程式,還是有趣得多(雖然,花時間做這樣的思考與實作,沒能得到什麼實質上的回饋)。而我不是也想整理些有趣的小程式嗎?數獨或許是一個不錯的主題吧。
因此,花了些時間,自己用 PHP 開發了一份解數獨的程式。貫穿程式的演算法,是 number-of-choices(可能的選擇數目;或者說是可能性)的想法,以及 backtracking(回溯)的機制。 Number-of-choices 的意思,是找出每個空格裡,有多少種可能的數字;而 backtracking 則是當程式發覺某條路走不下去時,回溯到先前的狀態,換另外一條路走。

可能性為 1 的方格,表示已經可以決定這個方格內的數字。因此程式可以將這個數字找出來,填寫進去,然後產生一份新的盤面。接下來,重覆運用可能性的觀念,計算這個新盤面裡每個空格的可能性,可以算出更多可能性為 1 的方格數字;如此反覆計算,最後就可以得到解答。
困難些的數獨問題,會讓盤面裡的每個空格,可能性都超過 1。例如,下圖左方的盤面,每個空格的可能填寫的的數字總數,就都大於 1(用紅色字體標示於下圖右方):

遇到這樣的盤面,我的程式會尋找目前具有最小可能性的方格(如果有數個方格有相同的最小可能性,就選擇「填入數字後,能夠降低最多其他方格可能性」的空格來填),猜測一個可能的數字,然後看看填入這個數字後,是不是能夠找到解答。如果最後失敗了(有某個空格可能性小於或等於零,意味著找不到解答),就表示這個數字猜錯了;這時程式會退回猜測前的狀態,重新選一個數字,然後繼續找尋問題的答案。
有時,一個數獨盤面也可能得出多種解答。至於上圖那個「比較困難」的數獨問題,很容易用程式算出唯一解:

雖然想要藉由這類的益智問題,來介紹、討論程式設計的一些相關課題,但還是懷疑自己是否有足夠的能力、毅力、與恆心來完成。既然對自己這麼沒有把握,那麼先利用 Blog 記錄一些目前的想法與結果,或許也是個不錯的作法吧。
後記:原先我把 number-of-choices 寫成 degree-of-freedom(自由度)。雖然「有多少種可能出現的選擇」(number-of-choices) 多少也代表「可自由變化的程度」,但 degree of freedom 是一個廣被接受的 well-defined term,還是不要錯用、亂用比較好。
星期五, 6月 23, 2006
還是想整理些什麼...
這一份 post doctor 工作,轉眼已經從事將近九個月了。
回想當初,本來是想在四十歲左右,嘗試整理一些曾感興趣的程式設計題目、並寫寫相關的技術文章。然而,過沒多久,因為發覺這份工作有兩件值得去做的事情(寫一篇多年前未完成的論文、設計實作 THDL 檢索系統的 prototype),因而就把「想整理些有趣問題」的事情給忽略、耽擱了。
這一陣子,論文已經寫完一篇,prototype 也經設計、實作、並轉交給實驗室學弟妹們。此外,上個星期也度過一個愉快的旅遊假期。因此,似乎是是時候,想想自己接下來,該做些什麼了。
雖然工作上的正經事大致上都告了個段落,但最近自己其實也都沒有閒著。其中一件與實驗室相關的事,是「指導」學弟做研究。MPH 在他的 Blog「標準差」裡,曾提到他以一個局外人的身份,在口試當天發覺一位碩士畢業生對於基本觀念的誤解。他覺得頗不可思議(畢竟,台大資工還是執台灣學術界資訊領域的牛耳),但我卻覺得,類似的研究品質,目前應該是「相當普遍而常見」的。
對實驗室的某位學弟,雖然他的碩士論文已經撰寫了數十頁,而學校的畢業典禮也已經結束,但自己對那些「研究成果」實在看不太過去。因此,這兩個星期,藉由討論作為起點,我建議學弟從不同的角度來看待他的那些研究、「指導」他調整研究焦點與聚焦方式。
但一有空閒,整理「小而有趣的程式設計專題」的念頭,就還是會不時浮現出來。也因此,自己最近也花了不少時間,寫寫一些小程式。這些程式雖然體積不大,但撰寫除錯還是很耗時間與精神。有時,我真不禁懷疑,自己在寫程式上的「生產力」,是不是下降了許多呢。
回想當初,本來是想在四十歲左右,嘗試整理一些曾感興趣的程式設計題目、並寫寫相關的技術文章。然而,過沒多久,因為發覺這份工作有兩件值得去做的事情(寫一篇多年前未完成的論文、設計實作 THDL 檢索系統的 prototype),因而就把「想整理些有趣問題」的事情給忽略、耽擱了。
這一陣子,論文已經寫完一篇,prototype 也經設計、實作、並轉交給實驗室學弟妹們。此外,上個星期也度過一個愉快的旅遊假期。因此,似乎是是時候,想想自己接下來,該做些什麼了。
雖然工作上的正經事大致上都告了個段落,但最近自己其實也都沒有閒著。其中一件與實驗室相關的事,是「指導」學弟做研究。MPH 在他的 Blog「標準差」裡,曾提到他以一個局外人的身份,在口試當天發覺一位碩士畢業生對於基本觀念的誤解。他覺得頗不可思議(畢竟,台大資工還是執台灣學術界資訊領域的牛耳),但我卻覺得,類似的研究品質,目前應該是「相當普遍而常見」的。
對實驗室的某位學弟,雖然他的碩士論文已經撰寫了數十頁,而學校的畢業典禮也已經結束,但自己對那些「研究成果」實在看不太過去。因此,這兩個星期,藉由討論作為起點,我建議學弟從不同的角度來看待他的那些研究、「指導」他調整研究焦點與聚焦方式。
但一有空閒,整理「小而有趣的程式設計專題」的念頭,就還是會不時浮現出來。也因此,自己最近也花了不少時間,寫寫一些小程式。這些程式雖然體積不大,但撰寫除錯還是很耗時間與精神。有時,我真不禁懷疑,自己在寫程式上的「生產力」,是不是下降了許多呢。
星期一, 6月 19, 2006
收心
遊玩了一週,似乎是該收收心,回到日常生活(工作)了。
其實,把「幸福」和「收心」等等世俗貪戀與用語拿來記錄生活,就較高的理論層次來說,類似於「此地無銀三百兩」,可說是一種恐懼心理的反應。
就如同阿尼所說,「你放棄了一切希望,不再有目標和慾望,也不在口中談論幸福。此時, 世上的辛苦,都不在你心頭,你的心才得到歇息。」真正的幸福、實際的收心,是不需要說、也不需要寫的。
然而,或許世俗的人,就是需要世俗的提醒,才能夠在修習與實踐中,找到自我的覺醒。也就是說,我承認自己並沒有什麼自覺,也沒有什麼實踐力,因而偶而需要「賣弄」、需要「世俗羈絆」、需要經常的自我記錄與反省、更需要身邊親友的支持與鼓勵,才能夠讓自己的心靈,有著那麼些微不足道的提昇。
因此,「收心」也只是告訴自己,雖然上週的度假旅遊令人迷戀;但接下來,是該提醒自己,回頭專注日常工作的事務了。
其實,把「幸福」和「收心」等等世俗貪戀與用語拿來記錄生活,就較高的理論層次來說,類似於「此地無銀三百兩」,可說是一種恐懼心理的反應。
就如同阿尼所說,「你放棄了一切希望,不再有目標和慾望,也不在口中談論幸福。此時, 世上的辛苦,都不在你心頭,你的心才得到歇息。」真正的幸福、實際的收心,是不需要說、也不需要寫的。
然而,或許世俗的人,就是需要世俗的提醒,才能夠在修習與實踐中,找到自我的覺醒。也就是說,我承認自己並沒有什麼自覺,也沒有什麼實踐力,因而偶而需要「賣弄」、需要「世俗羈絆」、需要經常的自我記錄與反省、更需要身邊親友的支持與鼓勵,才能夠讓自己的心靈,有著那麼些微不足道的提昇。
因此,「收心」也只是告訴自己,雖然上週的度假旅遊令人迷戀;但接下來,是該提醒自己,回頭專注日常工作的事務了。
星期六, 6月 17, 2006
墾丁四日遊
這幾天離開台北,來個四天三夜的墾丁遊。
不過,並沒有照片留下來,因為相機在海洋生物博物館遺失了。我懷疑是被扒走的 --- 坐在長凳上觀看大洋池餵食,坐姿幾乎都沒有改變,但在短短數分鐘內相機就不見了。這讓我花了許多時間才調適好心情,並繼續讓小傢伙在戶外的親水區戲水遊玩。(由於遺失相機,我問寶寶這下該怎麼辦。小傢伙說,再買一台就好啦。看來,她比我還看得開呢。)
因為現在的旅館幾乎都有提供無線上網,出門前曾考慮要不要帶筆記型電腦。最後,我還是決定把電腦留在家裡,因為這樣子可以讓自己與網路世界斷隔數天,因而更有休閒旅遊的感覺。
長途開車是有些累。更糟的是,對於初次到訪的旅客來說,台灣的高速公路號誌,還真是不友善。去程應該在高雄的五甲系統轉接 88 號快速道路,但一不留神就錯過了。此外,回程在台南附近也走錯了一小段路,因為號誌與出口離得太近,等看到號誌時,已經來不及切換車道了。
大致上,我覺得恆春半島的景致相當好,處處洋溢著南國的氣息。墾丁的天氣雖然炎熱,但卻不會覺得黏溼不舒服。此外,我們旅遊的時段屬於「非假日」,交通也相當舒暢。
今早一覺醒來,自己似乎還有著些微醺的奇妙感覺。旅遊,也是一種幸福。
不過,並沒有照片留下來,因為相機在海洋生物博物館遺失了。我懷疑是被扒走的 --- 坐在長凳上觀看大洋池餵食,坐姿幾乎都沒有改變,但在短短數分鐘內相機就不見了。這讓我花了許多時間才調適好心情,並繼續讓小傢伙在戶外的親水區戲水遊玩。(由於遺失相機,我問寶寶這下該怎麼辦。小傢伙說,再買一台就好啦。看來,她比我還看得開呢。)
因為現在的旅館幾乎都有提供無線上網,出門前曾考慮要不要帶筆記型電腦。最後,我還是決定把電腦留在家裡,因為這樣子可以讓自己與網路世界斷隔數天,因而更有休閒旅遊的感覺。
長途開車是有些累。更糟的是,對於初次到訪的旅客來說,台灣的高速公路號誌,還真是不友善。去程應該在高雄的五甲系統轉接 88 號快速道路,但一不留神就錯過了。此外,回程在台南附近也走錯了一小段路,因為號誌與出口離得太近,等看到號誌時,已經來不及切換車道了。
大致上,我覺得恆春半島的景致相當好,處處洋溢著南國的氣息。墾丁的天氣雖然炎熱,但卻不會覺得黏溼不舒服。此外,我們旅遊的時段屬於「非假日」,交通也相當舒暢。
今早一覺醒來,自己似乎還有著些微醺的奇妙感覺。旅遊,也是一種幸福。
星期一, 6月 12, 2006
幸福,可以是個動詞
幸福,要懂得把握,也值得珍惜。
記得當學生時,就聽老師們說過,當學生是人生最幸福的時期。從前聽不甚懂這些話,雖然同意學生的生活單純,但是單純就代表幸福嗎?
或許,學生們之所以幸福,是在於目標很單純。只要把書讀好(考試得到好成績?),就算是漂亮地完成任務。今早在報紙上,看到「威爾許談致勝」專欄裡,Jack Welch 說,「出人頭地之道,就是要超額付出... 過去老師交你只要回答問題就可以得到 A+,但在企業界要得到 A+ 的評語,你得突破公司期待,讓公司喜出望外;你要回答問題,還要回答老師沒想到的問題。」
說得真是漂亮!或許自己從前一直以為,以自己的想法來「做好事情」就好了,但其實這樣是不夠的。事情真的有被「做好」了嗎?自己是不是因為現實層面的各種牽絆,很容易就妥協、很容易就降低標準了呢?
真實生活的問題,通常複雜而難解。要看出複雜面向背後的一致性,並且了解如何利用這種一致性來取得大眾的認同,或許才更有價值。那麼,自己是真的能夠感受這些問題、分析過這些問題的各種面向、也腳踏實地去解決它們嗎?
這是否就是所謂的「活在當下」呢?過去的以如雲煙,未來卻遙遠而不可知,能夠把握的,就是現在而已。或許問題的癥結點,正在於「說的比做的多」,在於缺乏將思想轉為行動的勇氣,缺乏實踐的恆心毅力。
珍惜幸福的感覺,這幸福是個形容詞。然而,若用動詞的角度來詮釋,幸福其實也是需要去「做」、需要去實踐的。經過實踐,幸福才有生命,才流露世間溫暖、才彰顯人性光輝。
我覺得,幸福可以、也應該是個動詞。
記得當學生時,就聽老師們說過,當學生是人生最幸福的時期。從前聽不甚懂這些話,雖然同意學生的生活單純,但是單純就代表幸福嗎?
或許,學生們之所以幸福,是在於目標很單純。只要把書讀好(考試得到好成績?),就算是漂亮地完成任務。今早在報紙上,看到「威爾許談致勝」專欄裡,Jack Welch 說,「出人頭地之道,就是要超額付出... 過去老師交你只要回答問題就可以得到 A+,但在企業界要得到 A+ 的評語,你得突破公司期待,讓公司喜出望外;你要回答問題,還要回答老師沒想到的問題。」
說得真是漂亮!或許自己從前一直以為,以自己的想法來「做好事情」就好了,但其實這樣是不夠的。事情真的有被「做好」了嗎?自己是不是因為現實層面的各種牽絆,很容易就妥協、很容易就降低標準了呢?
真實生活的問題,通常複雜而難解。要看出複雜面向背後的一致性,並且了解如何利用這種一致性來取得大眾的認同,或許才更有價值。那麼,自己是真的能夠感受這些問題、分析過這些問題的各種面向、也腳踏實地去解決它們嗎?
這是否就是所謂的「活在當下」呢?過去的以如雲煙,未來卻遙遠而不可知,能夠把握的,就是現在而已。或許問題的癥結點,正在於「說的比做的多」,在於缺乏將思想轉為行動的勇氣,缺乏實踐的恆心毅力。
珍惜幸福的感覺,這幸福是個形容詞。然而,若用動詞的角度來詮釋,幸福其實也是需要去「做」、需要去實踐的。經過實踐,幸福才有生命,才流露世間溫暖、才彰顯人性光輝。
我覺得,幸福可以、也應該是個動詞。
星期五, 6月 09, 2006
當電腦介入生活
不知不覺間,自己的清醒時間,多半被電腦給佔據了。
電腦與軟體應用,真的已經深深地介入我的日常生活。早上帶著 Notebook 出門,工作時緊盯著螢幕看(寫程式、製作文件、上網瀏覽、檢查電子郵件),就連晚上回家的空閒時間,都似乎被電腦給綁住了。
這個情形,我想自己的寶寶最是清楚。她會說,「爸爸,陪我玩嘛,不要看電腦啦~」。雖然驚覺似乎不該如此,但卻仍難以抗拒「寫程式、製作文件、上網瀏覽、檢查電子郵件」的誘惑。
今早 Blogger 出現了一些狀況:

Blogger 服務出現網路壅塞,連線不上,已經是個「頗常碰到」的問題了。現在竟然還會刊登一份「unexpected technical problem」的訊息,強調「our engineer is working hard...」,這是不是也說明了「做好網路服務」的困難性(至少,軟體必須有足夠的容量與能力,來處理如此大量的訊息處理)?
習慣使用網路的服務後,對於軟體的品質的要求,似乎不知不覺提高了。Ankh 前些時日在他的 Blog 裡,聊到對於 Google 出現了一些負面聲音。在回應裡,我也提到最近 Gmail 在郵件編碼的處理上,似乎顯得不夠周全(對使用者的顧慮不足)。
能夠享有這些應用服務,其實是世界上很多人,經過長時間努力的結果。可是,人在適應後,往往會忘記應該對此「感恩惜福」。或許,在現今重視功利的資本主義下,人們因為激烈的社會競爭、因為承受著過度的資訊負載,早已不能(也無力)把這些服務視為「享受」了。只是,如此一來,我們的生活品質,真的有因為前人的努力,而得到良好的提升嗎?
電腦與軟體應用,真的已經深深地介入我的日常生活。早上帶著 Notebook 出門,工作時緊盯著螢幕看(寫程式、製作文件、上網瀏覽、檢查電子郵件),就連晚上回家的空閒時間,都似乎被電腦給綁住了。
這個情形,我想自己的寶寶最是清楚。她會說,「爸爸,陪我玩嘛,不要看電腦啦~」。雖然驚覺似乎不該如此,但卻仍難以抗拒「寫程式、製作文件、上網瀏覽、檢查電子郵件」的誘惑。
今早 Blogger 出現了一些狀況:

Blogger 服務出現網路壅塞,連線不上,已經是個「頗常碰到」的問題了。現在竟然還會刊登一份「unexpected technical problem」的訊息,強調「our engineer is working hard...」,這是不是也說明了「做好網路服務」的困難性(至少,軟體必須有足夠的容量與能力,來處理如此大量的訊息處理)?
習慣使用網路的服務後,對於軟體的品質的要求,似乎不知不覺提高了。Ankh 前些時日在他的 Blog 裡,聊到對於 Google 出現了一些負面聲音。在回應裡,我也提到最近 Gmail 在郵件編碼的處理上,似乎顯得不夠周全(對使用者的顧慮不足)。
能夠享有這些應用服務,其實是世界上很多人,經過長時間努力的結果。可是,人在適應後,往往會忘記應該對此「感恩惜福」。或許,在現今重視功利的資本主義下,人們因為激烈的社會競爭、因為承受著過度的資訊負載,早已不能(也無力)把這些服務視為「享受」了。只是,如此一來,我們的生活品質,真的有因為前人的努力,而得到良好的提升嗎?
星期三, 6月 07, 2006
古契書的亂碼問題
這一陣子比較空閒,幫實驗室繼續處理一些「古契書檢索應用」的工作。
去年十一月,在「談古契書資料處理:之一」與「談古契書資料處理:之二」的 posts 裡,我曾提到「古契書中文編碼」的一些問題。
當時的問題之一,是「編碼標準」的衝突:將古籍數位化的人員,寫程式的人員、MySQL 資料庫、M$ 資料庫...,經常使用不同的編碼格式(常見的格式是 Big5, Unicode Little Endian, Unicode Big Endian, 與UTF-8),因而造成後續資料處理的困難。
經過一些討論後,實驗決定統一用 UTF-16LE 來儲存「文件數位化後的純文字檔案」。因為我的 THDL Retrieval Prototype 當初所用的文獻集(corpus)只含「明清檔案」的部分,而明清檔案的內容不像古契書那麼「古怪」,所以制訂好儲存的編碼格式後,似乎就解決了一大部分的問題。
這兩天處理古契書,又遇到「亂碼」的問題 --- 某些文件中,大概有超過三分之一的亂碼。為什麼會有亂碼呢?一部份的原因,是有些古契書是用日文書寫的(不要忘了,日本人曾統治台灣許多年);而有些古契書裡用的字,在編碼表上找不到對應(像是台大八魚社,四條魚組成一個字,就好像找不到對應的編碼)。另外,還有一部份的原因,則是因為數位化的人員想保存契書的書寫樣式,因而引用了多個 Microsoft Word 的物件,讓自動擷取文字的工具「誤判」而產生亂碼。
看個例子好了(因為剪貼也會經過轉碼的處理,所以許多原本「更古怪」的亂碼,在此已經被轉成問號了):
亂碼就亂碼,有什麼好大驚小怪?問題出在,亂碼轉來轉去,經過多次處理後,會變得越來越莫名其妙(非常符合「Garbage in, garbage out」的原理),而這樣會增加檢索前置處理的困難(有時,經由 regular expression 處理後會產生「原本不預期」的結果;有時,MySQL 會拒絕寫入資料)。
看來,項老師想做 Histoinformatics 的研究,要走的路還頗長呢!
後記:回家後發現這兩天與「古契書」奮戰的結果是:眼睛疲倦、肩膀痠痛。咦,我不是想好好地休息一下嗎,這麼辛苦做什麼啊?
去年十一月,在「談古契書資料處理:之一」與「談古契書資料處理:之二」的 posts 裡,我曾提到「古契書中文編碼」的一些問題。
當時的問題之一,是「編碼標準」的衝突:將古籍數位化的人員,寫程式的人員、MySQL 資料庫、M$ 資料庫...,經常使用不同的編碼格式(常見的格式是 Big5, Unicode Little Endian, Unicode Big Endian, 與UTF-8),因而造成後續資料處理的困難。
經過一些討論後,實驗決定統一用 UTF-16LE 來儲存「文件數位化後的純文字檔案」。因為我的 THDL Retrieval Prototype 當初所用的文獻集(corpus)只含「明清檔案」的部分,而明清檔案的內容不像古契書那麼「古怪」,所以制訂好儲存的編碼格式後,似乎就解決了一大部分的問題。
這兩天處理古契書,又遇到「亂碼」的問題 --- 某些文件中,大概有超過三分之一的亂碼。為什麼會有亂碼呢?一部份的原因,是有些古契書是用日文書寫的(不要忘了,日本人曾統治台灣許多年);而有些古契書裡用的字,在編碼表上找不到對應(像是台大八魚社,四條魚組成一個字,就好像找不到對應的編碼)。另外,還有一部份的原因,則是因為數位化的人員想保存契書的書寫樣式,因而引用了多個 Microsoft Word 的物件,讓自動擷取文字的工具「誤判」而產生亂碼。
看個例子好了(因為剪貼也會經過轉碼的處理,所以許多原本「更古怪」的亂碼,在此已經被轉成問號了):
立遺囑鬮分書字人陳金山娶業林氏生水兄弟七人長曰杉奇次曰賜ഀ
能三曰勳珍四曰允固五曰五港六曰六賽七曰七子□母續世□詣子凜ഀ
命營鶯俱以完娶各齊承受繩繩是心之所欣慰也有積餘資創建各ഀ
處等業但余罕ὔ浵䅥⑾停쵠ὓ챵饚粖ᑑ텎蚏鍏൱上進數被宗ഀ
□侵漁難以總理似應分爨爰請房親姻戚共相酌議將兄弟鬮分應ഀ
份及已置山場山茶水田物業先抽起贊業段又抽起長孫田業其餘山場茶ഀ
畬水田物業以及家□往來賬項公仝配踏作七房均分至公無私禱神拈鬮ഀ
為定各應安分照鬮掌管自今日既約之后務各立志恢宏永敦和睦各自經ഀ
營創建各業各管靎ⵟ睲ㆁ豙⍔䙬偏⦆⅓酱왡쭢空톐⹖ڛ
坦͛᥎}⍎歛ћ綾㡘恬몐杰㥱⪋螂푸ї啔䎆涅ڛ鵒땨ᝫ๒蹦൝
能三曰勳珍四曰允固五曰五港六曰六賽七曰七子□母續世□詣子凜ഀ
命營鶯俱以完娶各齊承受繩繩是心之所欣慰也有積餘資創建各ഀ
處等業但余罕ὔ浵䅥⑾停쵠ὓ챵饚粖ᑑ텎蚏鍏൱上進數被宗ഀ
□侵漁難以總理似應分爨爰請房親姻戚共相酌議將兄弟鬮分應ഀ
份及已置山場山茶水田物業先抽起贊業段又抽起長孫田業其餘山場茶ഀ
畬水田物業以及家□往來賬項公仝配踏作七房均分至公無私禱神拈鬮ഀ
為定各應安分照鬮掌管自今日既約之后務各立志恢宏永敦和睦各自經ഀ
營創建各業各管靎ⵟ睲ㆁ豙⍔䙬偏⦆⅓酱왡쭢空톐⹖ڛ
坦͛᥎}⍎歛ћ綾㡘恬몐杰㥱⪋螂푸ї啔䎆涅ڛ鵒땨ᝫ๒蹦൝
亂碼就亂碼,有什麼好大驚小怪?問題出在,亂碼轉來轉去,經過多次處理後,會變得越來越莫名其妙(非常符合「Garbage in, garbage out」的原理),而這樣會增加檢索前置處理的困難(有時,經由 regular expression 處理後會產生「原本不預期」的結果;有時,MySQL 會拒絕寫入資料)。
看來,項老師想做 Histoinformatics 的研究,要走的路還頗長呢!
後記:回家後發現這兩天與「古契書」奮戰的結果是:眼睛疲倦、肩膀痠痛。咦,我不是想好好地休息一下嗎,這麼辛苦做什麼啊?
星期一, 6月 05, 2006
林間的岔路
自己雖然文學的素養不怎麼樣,但有時對詩文還是有著難以言喻的感觸。
前些時日收到書商的廣告信,推介一套中譯的詩集。心想家裡的書都已經堆到地上啦,怎麼還有空間置放數十本的詩集呢?正要把廣告信扔進回收桶,卻一眼瞥見佛羅斯特(Robert Forrester)一首有名的詩:
黃樹林裡有兩條岔路,
很遺憾我不能都涉足。
我孤單地站立良久,
向其中一條極目望去,
看它彎沒在林蔭的深處。
多年後的某時某地,
我回憶此刻將輕聲嘆息。
樹林裡岔開兩條路。而我,
我走了人跡較少的那一條,
因此有了完全不同的人生。
這首詩寫景、寫實,卻又兼喻人生選擇的意境。每個人都有自己不同的人生、每個人也都有自己的路可以選擇。詩人選了人跡較少的路來走,但一般人多半難以抗拒社會的規範、渴望得到他人的認同,因而幾乎都是「跟著前人的腳步走」啊。
不同的林間路,有著不同的林間景致。不同的人生、工作選擇,會有著迥然不同的人生體驗。只是,此時此刻,自己的選擇,又是什麼呢?
前些時日收到書商的廣告信,推介一套中譯的詩集。心想家裡的書都已經堆到地上啦,怎麼還有空間置放數十本的詩集呢?正要把廣告信扔進回收桶,卻一眼瞥見佛羅斯特(Robert Forrester)一首有名的詩:
黃樹林裡有兩條岔路,
很遺憾我不能都涉足。
我孤單地站立良久,
向其中一條極目望去,
看它彎沒在林蔭的深處。
多年後的某時某地,
我回憶此刻將輕聲嘆息。
樹林裡岔開兩條路。而我,
我走了人跡較少的那一條,
因此有了完全不同的人生。
這首詩寫景、寫實,卻又兼喻人生選擇的意境。每個人都有自己不同的人生、每個人也都有自己的路可以選擇。詩人選了人跡較少的路來走,但一般人多半難以抗拒社會的規範、渴望得到他人的認同,因而幾乎都是「跟著前人的腳步走」啊。
不同的林間路,有著不同的林間景致。不同的人生、工作選擇,會有著迥然不同的人生體驗。只是,此時此刻,自己的選擇,又是什麼呢?
星期五, 6月 02, 2006
「資訊超載」讀後感
這幾天重新閱讀一本多年前看過的書:「資訊超載」。
雖然中文的書名叫做「資訊超載」,但這本書的原文名稱是 "Data Smog",或許直譯為「資料煙霾」比較貼近原書的意旨。然而,如果譯者真的這樣直接翻譯,書名就顯得太過古板饒舌,無法吸引具有潛在興趣的閱書人罷。
這真是個飽食 (glut) 的年代啊。從許多年前,自己就深切地覺得,在現今的資訊社會下,龐大的資料與資訊,經常讓人注意力無法集中、讓人思考的品質下降。資訊過載 (information overload),就像是吃多了食物,自己不但感受不到餐點的精美、甚至被龐大的攝食量給噎到了。因此,會被這本書的書名所吸引,甚至在多年後重新溫習一遍,也似乎「有跡可尋」,而顯得理所當然。
坦白地說,我覺得這本書的論述,組織得並不是很好。不過,它的內容還是頗值得自己花些時間,靜靜地思考問題本質,與接下來的應對方式。
就像數個月前看過的「選擇的弔詭」,強調過多的選擇未必是件好事,「資訊超載」這本書也強調過多的資訊造成人們注意力不集中、鍛傷人們的理解力、危害人們思考的品質。資料與資訊的成長速度很快,但人類與生俱來的能力卻無法仿效莫爾定律,每一年半就成長兩倍。
大致上,這本書的論述,是在強調一些資訊超載所造成的問題:
雖然中文的書名叫做「資訊超載」,但這本書的原文名稱是 "Data Smog",或許直譯為「資料煙霾」比較貼近原書的意旨。然而,如果譯者真的這樣直接翻譯,書名就顯得太過古板饒舌,無法吸引具有潛在興趣的閱書人罷。
這真是個飽食 (glut) 的年代啊。從許多年前,自己就深切地覺得,在現今的資訊社會下,龐大的資料與資訊,經常讓人注意力無法集中、讓人思考的品質下降。資訊過載 (information overload),就像是吃多了食物,自己不但感受不到餐點的精美、甚至被龐大的攝食量給噎到了。因此,會被這本書的書名所吸引,甚至在多年後重新溫習一遍,也似乎「有跡可尋」,而顯得理所當然。
坦白地說,我覺得這本書的論述,組織得並不是很好。不過,它的內容還是頗值得自己花些時間,靜靜地思考問題本質,與接下來的應對方式。
就像數個月前看過的「選擇的弔詭」,強調過多的選擇未必是件好事,「資訊超載」這本書也強調過多的資訊造成人們注意力不集中、鍛傷人們的理解力、危害人們思考的品質。資料與資訊的成長速度很快,但人類與生俱來的能力卻無法仿效莫爾定律,每一年半就成長兩倍。
大致上,這本書的論述,是在強調一些資訊超載所造成的問題:
- 商人們藉著各類的「升級」來販賣資訊焦慮(不升級就無法處理新的檔案格式、不買就不上時代)。
- 各門領域的專家大量發表結果衝突、讓人無所適從的研究報告(微波爐、基因改造食品是否有礙健康?廢止核四是否真的對台灣有利?)
- 網際網路雖然有益於小眾媒體的興起,讓關心特殊議題的人們有聚集討論的場所,卻無法凝聚大眾的共識、無法增進大眾溝通的質與量。
- 要能夠深入學習一項主題,需要的不是一連串的新聞快報,而是對情勢有詳細與周全的分析與評論。(因而,作者也建議媒體 -- 尤其是印刷媒體 -- 不僅要「告知」訊息,也要扮演「資訊守門員」的角色,甚至「教育」讀者。)
- 所謂的「資訊窮人」,他們最需要的並不是網際網路,而是基礎的教育、以及好的老師。(這一點頗有趣,它似乎隱隱在說,US$100 的電腦其實並無法解決「資訊落後」地區的教育問題...)
星期二, 5月 30, 2006
這幾個星期的回顧
按理說,這幾個星期應該是頗悠閒的,但事實卻非如此。
首先,幾個星期前,已經把 prototype 交接出去了。此外,論文一分為二之後,前半也整理後投稿了(後半則因自己「沒力」了,遲遲沒有重新整理與改寫)。因而,原本工作的重點,似乎都告個段落,應該是可以讓自己輕鬆一下。
那麼,自己在忙些什麼呢?這一陣子心血來潮,重新溫習了類神經網絡(Neural Networks)的一些基本概念,甚至寫寫一些小程式,實際演練一些教科書上的範例。理解、寫程式、除錯,光是這樣,就讓自己忙碌了好一陣子。
猶記得十年前,在台大唸博士班時,還曾經修過某人開的類神經網絡課程呢。雖然最後期末的成績似乎也還不錯,但除了記得那某人經常提的「MIT 有一個很大的魚箱,他常常站在那兒看魚兒游來游去,吐著大大小小的泡泡」之外,我似乎什麼也沒學到。修過課後,對 Neural Networks 依然一竅不通。
現在想來,我覺得台大許多研究所的課程,都不知道在講授些什麼。或許,研究所的課程,本來就傾向於「尚未完全明瞭的研究」,而不是「已成基本學理的知識」,因此也難期待老師能教導些什麼、難期待學生能夠學到些什麼。但是,修完課後只剩下魚箱的印象(ㄟ,魚箱和類神經網絡有什麼關係呢?還真是深奧啊),若非自己太混(我是覺得自己應該沒有那麼混啦),授課老師也應該負相當責任的。
這應該也是台灣研究所課程、台灣高等教育的某些樣貌吧。台灣的研究所,研究與教學似乎混雜而不明。有時我甚至覺得,或許連授課老師也不知道課程的主軸應該是什麼。然而,比起現今社會道德觀念淪喪,上位者貪瀆舞弊,教授們無心研究或教學,又算得了什麼呢?
首先,幾個星期前,已經把 prototype 交接出去了。此外,論文一分為二之後,前半也整理後投稿了(後半則因自己「沒力」了,遲遲沒有重新整理與改寫)。因而,原本工作的重點,似乎都告個段落,應該是可以讓自己輕鬆一下。
那麼,自己在忙些什麼呢?這一陣子心血來潮,重新溫習了類神經網絡(Neural Networks)的一些基本概念,甚至寫寫一些小程式,實際演練一些教科書上的範例。理解、寫程式、除錯,光是這樣,就讓自己忙碌了好一陣子。
猶記得十年前,在台大唸博士班時,還曾經修過某人開的類神經網絡課程呢。雖然最後期末的成績似乎也還不錯,但除了記得那某人經常提的「MIT 有一個很大的魚箱,他常常站在那兒看魚兒游來游去,吐著大大小小的泡泡」之外,我似乎什麼也沒學到。修過課後,對 Neural Networks 依然一竅不通。
現在想來,我覺得台大許多研究所的課程,都不知道在講授些什麼。或許,研究所的課程,本來就傾向於「尚未完全明瞭的研究」,而不是「已成基本學理的知識」,因此也難期待老師能教導些什麼、難期待學生能夠學到些什麼。但是,修完課後只剩下魚箱的印象(ㄟ,魚箱和類神經網絡有什麼關係呢?還真是深奧啊),若非自己太混(我是覺得自己應該沒有那麼混啦),授課老師也應該負相當責任的。
這應該也是台灣研究所課程、台灣高等教育的某些樣貌吧。台灣的研究所,研究與教學似乎混雜而不明。有時我甚至覺得,或許連授課老師也不知道課程的主軸應該是什麼。然而,比起現今社會道德觀念淪喪,上位者貪瀆舞弊,教授們無心研究或教學,又算得了什麼呢?
星期五, 5月 26, 2006
官職表的模型問題
好的抽象模型,應該能夠貼切地表達出問題本身的特質。
前一陣子,在「官職表:行政組織與任職人員」裡,我提到「實驗室成員希望能在研究上,找到合適的官職表抽象模型」。
或許是因為「想趕快得到成果」,或許是因為「好的抽象模型本來就不是說說那麼容易」,許多人會直接由輸入(手頭有的資料)與輸出(想要達到的結果)來做對應 -- 畢竟,起點(輸入)與終點(輸出)都知道了,系統本來就是其間的黑盒子。在輸入輸出間,直接做對應,不是自然不過的嗎?
於是,若想發展出一個「formal model」,我們或許會從任職人員起迄時間的列表著手,將每一列對應到一個述詞 (predicate) inPosition(p, q, t1, t2) -- 也就是說,將任職人員起迄的資料,換成一個「看起來有點數學味道」的式子。而 inPosition(p, q, t1, t2)這個式子,就表示了「從時間 t1 到 t2,人名 p 擔任 q 這個職位」。
模型當然可以這樣設計。而且,將手頭的資料表示成邏輯式子的「規則」,想到有了這些規則後,可以應用證明論 (Proof Theory) 來進行推理,內心應該還是興奮的。
然而,我總覺得這樣「從手頭資料直接對應」所取得的模型,雖然因為形式化而具有邏輯味道,但稍嫌人造 (artificial) 且「複雜」。
怎麼會複雜?它不是很恰當地表示了「任職人員起迄時間」這樣的資訊嗎?
我的感覺是這樣的。我們之前提過,官職表除了「任職人員起迄時間」外,還有「階層式的組織圖」資訊。如果獨立地將這兩樣資訊個別模型化,然後再設計一些 relations 來串接它們之間的關係,最後得到的模型,就會是一堆邏輯述詞(而且經常頗為複雜)的集合,有相當的可能,會因此喪失了模型自己應該具備的「直觀、簡潔」特性。
此外,更重要的一點,是看待歷史資料的態度。用「邏輯式子」表達每一項歷史資料,基本上相當於將這些歷史資料看作「事實」。然而,我們也知道,歷史資料雖然有相當的信實性,但還是可能有錯誤,可能有不一致 (inconsistent) 的狀況,也可能有資料不完整的問題。
因此,我總覺得,應該回歸到歷史資料的「本質」上來思考,模型才比較實際。那麼,什麼才是「本質」、怎樣的模型才算是「直觀、簡潔」?坦白說,我也不甚明瞭。只隱隱覺得,那是要經由一番淬鍊、經由相當深入的探索與思考,所得到的直觀。(或許,很弔詭地,「眾裡尋他千百度,驀然回首,那人卻在燈火闌珊處」。最後得到的結論,外觀竟也還是「獨立地將個別的資訊模型化,之後再整合」,也說不定呢。)
前一陣子,在「官職表:行政組織與任職人員」裡,我提到「實驗室成員希望能在研究上,找到合適的官職表抽象模型」。
或許是因為「想趕快得到成果」,或許是因為「好的抽象模型本來就不是說說那麼容易」,許多人會直接由輸入(手頭有的資料)與輸出(想要達到的結果)來做對應 -- 畢竟,起點(輸入)與終點(輸出)都知道了,系統本來就是其間的黑盒子。在輸入輸出間,直接做對應,不是自然不過的嗎?
於是,若想發展出一個「formal model」,我們或許會從任職人員起迄時間的列表著手,將每一列對應到一個述詞 (predicate) inPosition(p, q, t1, t2) -- 也就是說,將任職人員起迄的資料,換成一個「看起來有點數學味道」的式子。而 inPosition(p, q, t1, t2)這個式子,就表示了「從時間 t1 到 t2,人名 p 擔任 q 這個職位」。
模型當然可以這樣設計。而且,將手頭的資料表示成邏輯式子的「規則」,想到有了這些規則後,可以應用證明論 (Proof Theory) 來進行推理,內心應該還是興奮的。
然而,我總覺得這樣「從手頭資料直接對應」所取得的模型,雖然因為形式化而具有邏輯味道,但稍嫌人造 (artificial) 且「複雜」。
怎麼會複雜?它不是很恰當地表示了「任職人員起迄時間」這樣的資訊嗎?
我的感覺是這樣的。我們之前提過,官職表除了「任職人員起迄時間」外,還有「階層式的組織圖」資訊。如果獨立地將這兩樣資訊個別模型化,然後再設計一些 relations 來串接它們之間的關係,最後得到的模型,就會是一堆邏輯述詞(而且經常頗為複雜)的集合,有相當的可能,會因此喪失了模型自己應該具備的「直觀、簡潔」特性。
此外,更重要的一點,是看待歷史資料的態度。用「邏輯式子」表達每一項歷史資料,基本上相當於將這些歷史資料看作「事實」。然而,我們也知道,歷史資料雖然有相當的信實性,但還是可能有錯誤,可能有不一致 (inconsistent) 的狀況,也可能有資料不完整的問題。
因此,我總覺得,應該回歸到歷史資料的「本質」上來思考,模型才比較實際。那麼,什麼才是「本質」、怎樣的模型才算是「直觀、簡潔」?坦白說,我也不甚明瞭。只隱隱覺得,那是要經由一番淬鍊、經由相當深入的探索與思考,所得到的直觀。(或許,很弔詭地,「眾裡尋他千百度,驀然回首,那人卻在燈火闌珊處」。最後得到的結論,外觀竟也還是「獨立地將個別的資訊模型化,之後再整合」,也說不定呢。)
星期二, 5月 23, 2006
從「罄竹難書」談起
報載陳總統在 520 說了一句「志工偉業『罄竹難書』」,引發一陣議論。
議論的源由,是國家元首似乎錯用了這句成語。錯用也就算了,教育部長卻「硬拗」說,這樣用也不是不可以。
「罄竹難書」到底是什麼意思?字面上看,的確只是講述「用盡所有的紙張都寫不完」;因而陳總統這樣說,應該也沒什麼大礙。問題是,這個成語一般是用來比喻「罪狀之多,難以寫盡」。而就如余光中所言,成語是「不平常的用語,背後有千百年累積的傳統」,即使是國家元首、即使是教育部長,也不應恣意替成語加添新意義。
觀諸陳總統的言論,或許他也只是文化素養不足、語言能力不佳罷了。回想一下,之前他不是曾把「本因坊」錯唸成「本田坊」,而呂副總統也曾把「黑面琵鷺」唸成「黑面琵鷲」嗎?這或許只是彰顯出,許多人的語言表達能力,亟需改進加強。就像自己在前些日子的 post「隨波逐流」裡,也曾提及自己在語言上的運用能力,其實是很差的。
在現今的社會裡,要求政治人物必須有良好的文化素養、合宜的表達能力,似乎是稍嫌嚴苛了些。然而,教育部長的「護主」反應,看起來不但沒有知識份子的良知與骨氣,而且似乎還刻意地指鹿為馬(顛倒是非),就真的令人很感嘆息了。
議論的源由,是國家元首似乎錯用了這句成語。錯用也就算了,教育部長卻「硬拗」說,這樣用也不是不可以。
「罄竹難書」到底是什麼意思?字面上看,的確只是講述「用盡所有的紙張都寫不完」;因而陳總統這樣說,應該也沒什麼大礙。問題是,這個成語一般是用來比喻「罪狀之多,難以寫盡」。而就如余光中所言,成語是「不平常的用語,背後有千百年累積的傳統」,即使是國家元首、即使是教育部長,也不應恣意替成語加添新意義。
觀諸陳總統的言論,或許他也只是文化素養不足、語言能力不佳罷了。回想一下,之前他不是曾把「本因坊」錯唸成「本田坊」,而呂副總統也曾把「黑面琵鷺」唸成「黑面琵鷲」嗎?這或許只是彰顯出,許多人的語言表達能力,亟需改進加強。就像自己在前些日子的 post「隨波逐流」裡,也曾提及自己在語言上的運用能力,其實是很差的。
在現今的社會裡,要求政治人物必須有良好的文化素養、合宜的表達能力,似乎是稍嫌嚴苛了些。然而,教育部長的「護主」反應,看起來不但沒有知識份子的良知與骨氣,而且似乎還刻意地指鹿為馬(顛倒是非),就真的令人很感嘆息了。
星期一, 5月 22, 2006
哲學入門九堂課
我覺得,自己內心對於哲學以及哲學問題,應該都是相當感興趣、相當關心的。
自己是一個閱讀速度頗慢,卻也還頗喜歡買書、藏書(把書「藏」起來,這個詞彙還真的頗有趣味)的人。在書店閒逛時,如果發現一些「看似淺顯、自己或許有能力理解」的哲學書籍,經常會心動而把它們買回家。然而,因為消化(看書)的速度慢,這些書多半只能堆積在書櫃或者某處地板上,靜靜地等我那天心血來潮,再與它們邂逅。
「哲學入門九堂課」這本書很薄(我猜這也是吸引我的一個主要原因),作者是應該相當有聲望的學術院士。我猜自己大約是三年前就買這本書了,在去年年底也看過一回(不過,應該是時機還不對,雖然花費了許多時間精力去看,卻沒有產生多少迴響)。或許是因為自己對哲學的興趣、或許是緣份、這幾天翻書櫃又看見它,因此趁著吃早餐後的閱讀時間,重新再把它簡略地看過。
雖然作者一開頭就說「這是一本哲學入門書,想要對這門學科有些基本認識的人都適合閱讀」,但是我覺得自己看起來還頗感吃力。除了內容相當「硬」之外,作者舉的例子也不算多,不似一般入門書籍,會嘗試使用許多實例,運用簡單的詞彙、從各種可理解的角度來引導讀者思考。
還好,這回的閱讀似乎產生了一些感覺。原來,這本書所提到的九堂課,就是九個困擾古今哲學家,沒有標準答案的基本問題。有意思的是,古今哲人何其多,畢生窮究心力想要釐清這些概念的學者也不知凡幾,但「這些被視為理所當然的一般觀念」,竟然還是沒有被明瞭、問題竟然還沒有被解決、甚至可能根本沒有所謂的答案!
作者介紹的的九個基本問題是:
存在太多的疑問,存在太多的可能。或許,問題尋覓的過程,本身就是答案。或許,假如人類天生追求意義,生命不但可能毫無意義,更可能是一場荒謬(這本書最後的幾句話)。也或許,生命本就無常,必須有足夠的自覺,必須經由修行,不斷地鍛鍊自己的心性,才能夠逐漸地明瞭自身的意義。
自己是一個閱讀速度頗慢,卻也還頗喜歡買書、藏書(把書「藏」起來,這個詞彙還真的頗有趣味)的人。在書店閒逛時,如果發現一些「看似淺顯、自己或許有能力理解」的哲學書籍,經常會心動而把它們買回家。然而,因為消化(看書)的速度慢,這些書多半只能堆積在書櫃或者某處地板上,靜靜地等我那天心血來潮,再與它們邂逅。
「哲學入門九堂課」這本書很薄(我猜這也是吸引我的一個主要原因),作者是應該相當有聲望的學術院士。我猜自己大約是三年前就買這本書了,在去年年底也看過一回(不過,應該是時機還不對,雖然花費了許多時間精力去看,卻沒有產生多少迴響)。或許是因為自己對哲學的興趣、或許是緣份、這幾天翻書櫃又看見它,因此趁著吃早餐後的閱讀時間,重新再把它簡略地看過。
雖然作者一開頭就說「這是一本哲學入門書,想要對這門學科有些基本認識的人都適合閱讀」,但是我覺得自己看起來還頗感吃力。除了內容相當「硬」之外,作者舉的例子也不算多,不似一般入門書籍,會嘗試使用許多實例,運用簡單的詞彙、從各種可理解的角度來引導讀者思考。
還好,這回的閱讀似乎產生了一些感覺。原來,這本書所提到的九堂課,就是九個困擾古今哲學家,沒有標準答案的基本問題。有意思的是,古今哲人何其多,畢生窮究心力想要釐清這些概念的學者也不知凡幾,但「這些被視為理所當然的一般觀念」,竟然還是沒有被明瞭、問題竟然還沒有被解決、甚至可能根本沒有所謂的答案!
作者介紹的的九個基本問題是:
- 我們如何知道事物存在
- 其他心靈(除了自我心靈具有意識之外,對於世界上那些生命具有意識,能夠真正知道的有多少?)
- 心靈與身體的關係
- 字詞的意義
- 自由意志
- 對與錯
- 正義
- 死亡
- 生命的意義
存在太多的疑問,存在太多的可能。或許,問題尋覓的過程,本身就是答案。或許,假如人類天生追求意義,生命不但可能毫無意義,更可能是一場荒謬(這本書最後的幾句話)。也或許,生命本就無常,必須有足夠的自覺,必須經由修行,不斷地鍛鍊自己的心性,才能夠逐漸地明瞭自身的意義。
星期四, 5月 18, 2006
Life is fun every day
小傢伙有一片 Disney 的 DVD,名稱叫做 "Magic English"。
她喜歡看片子,但更喜歡有人陪她一起看。這個系列的 DVD 裡,都有一個唱歌的單元,會剪接一些 Disney 經典動畫的片段,配上一段歌唱,教小孩子一些基本的英文。
前幾天陪小傢伙看,聽到 "I sleep, I eat, I work, I play. Life is fun every day" 時,心底產生一股很奇妙的感覺。它隱約告訴自己:生活就是這樣,每天重覆地睡、吃、工作、玩樂,但... 每一天都很有趣!
怪怪,每天單調地重覆,怎麼會有趣呢?
這應該牽涉到心境吧。有人說,在日常生活中找樂趣;樂趣是需要培養、需要主動去發掘的。有人說,無欲則剛,只要無所求,就能夠堅強、甚至感受到樂趣。「愛工作、更愛人生」這本書,則似乎是強調「追隨個人的志業」就能夠帶來無上的喜樂。
不知怎地,最近的一些心路歷程,似乎隱隱都與這些心境有著些許契合。或許,這也是選擇性思考的威力:我們只看得見想看的(另一方面,我們「看不見不想看的」,則往往有著奇妙的對照,而值得品味與深思)。最近我因著心性與思考角度的轉換,感受到人生的某些有趣樣貌,因而也對相關的情事產生共鳴。
即使從某種角度來看,生活確實頗為單調,但是若能明瞭這是「正常」的,或許就能轉換心境、知足常樂呢。而自己,雖然不明白近來的歷程是否表示有進步、更成熟,但比起從前,(感覺起來)最近心情似乎真的平和許多。
這樣,應該就已經足夠了吧。
她喜歡看片子,但更喜歡有人陪她一起看。這個系列的 DVD 裡,都有一個唱歌的單元,會剪接一些 Disney 經典動畫的片段,配上一段歌唱,教小孩子一些基本的英文。
前幾天陪小傢伙看,聽到 "I sleep, I eat, I work, I play. Life is fun every day" 時,心底產生一股很奇妙的感覺。它隱約告訴自己:生活就是這樣,每天重覆地睡、吃、工作、玩樂,但... 每一天都很有趣!
怪怪,每天單調地重覆,怎麼會有趣呢?
這應該牽涉到心境吧。有人說,在日常生活中找樂趣;樂趣是需要培養、需要主動去發掘的。有人說,無欲則剛,只要無所求,就能夠堅強、甚至感受到樂趣。「愛工作、更愛人生」這本書,則似乎是強調「追隨個人的志業」就能夠帶來無上的喜樂。
不知怎地,最近的一些心路歷程,似乎隱隱都與這些心境有著些許契合。或許,這也是選擇性思考的威力:我們只看得見想看的(另一方面,我們「看不見不想看的」,則往往有著奇妙的對照,而值得品味與深思)。最近我因著心性與思考角度的轉換,感受到人生的某些有趣樣貌,因而也對相關的情事產生共鳴。
即使從某種角度來看,生活確實頗為單調,但是若能明瞭這是「正常」的,或許就能轉換心境、知足常樂呢。而自己,雖然不明白近來的歷程是否表示有進步、更成熟,但比起從前,(感覺起來)最近心情似乎真的平和許多。
這樣,應該就已經足夠了吧。
星期一, 5月 15, 2006
Impact
最近項老師提到研究,經常談及「Impact」。
例如,他會說,有某某人寫了上百篇 journal papers,若再加上 conference papers,堆起來會比一個人還要高(嗯...我們常用「著作等身」來形容某人著作很多,但...「等身」是什麼意思呢?是不是「堆起來跟身高一樣」啊?)。只是,問及相關領域的專家,竟然沒有人知道此人是誰,他竟然沒有一點 impact!
就表面來看,項老師應該是對這種現象感到訝異(他似乎並沒有對此表達嘲諷的意圖)。是啊,這應該就「只是一個令人難以理解接受的既有現象」吧。
雖然我並不清楚項老師想要表達些什麼,但我心裡對於「沒有 impact」這句話,倒是有著些許嘀咕。怎麼會沒有 impact 呢?他應該帶有許許多多的學生吧。而這些學生,應該也從他那兒學到一些生產論文的技巧吧。再說,有這麼大量的論文產出,也是台灣目前的學術環境所鼓勵的,應該會成為許多人注目的焦點。怎麼會沒有影響呢?
或許,項老師說的「impact」,指的是相同的學術研究領域,學者彼此間 peer review 之後的影響力。或許想表達的是,他並不同意以大量生產的方式,來評估個人或團隊研究的成果。只是,如果評估的方式是「impact」,那麼「影響大的就必然表示研究好,影響小的就必然表示研究差」嗎?似乎也覺得不怎麼對勁啊。
也或許,這是在現代社會高度競爭下,必須管控生產與成本,所不得不採取的「科學管理」方式。一方面,我們想要求進步;另一方面,我們似乎也不知道進步的本質究竟是什麼。而大家競相套用「科學管理」的外衣,或許也只是想快捷地取得認同(至少不反對),並進而為自己的立場取得優勢吧?
例如,他會說,有某某人寫了上百篇 journal papers,若再加上 conference papers,堆起來會比一個人還要高(嗯...我們常用「著作等身」來形容某人著作很多,但...「等身」是什麼意思呢?是不是「堆起來跟身高一樣」啊?)。只是,問及相關領域的專家,竟然沒有人知道此人是誰,他竟然沒有一點 impact!
就表面來看,項老師應該是對這種現象感到訝異(他似乎並沒有對此表達嘲諷的意圖)。是啊,這應該就「只是一個令人難以理解接受的既有現象」吧。
雖然我並不清楚項老師想要表達些什麼,但我心裡對於「沒有 impact」這句話,倒是有著些許嘀咕。怎麼會沒有 impact 呢?他應該帶有許許多多的學生吧。而這些學生,應該也從他那兒學到一些生產論文的技巧吧。再說,有這麼大量的論文產出,也是台灣目前的學術環境所鼓勵的,應該會成為許多人注目的焦點。怎麼會沒有影響呢?
或許,項老師說的「impact」,指的是相同的學術研究領域,學者彼此間 peer review 之後的影響力。或許想表達的是,他並不同意以大量生產的方式,來評估個人或團隊研究的成果。只是,如果評估的方式是「impact」,那麼「影響大的就必然表示研究好,影響小的就必然表示研究差」嗎?似乎也覺得不怎麼對勁啊。
也或許,這是在現代社會高度競爭下,必須管控生產與成本,所不得不採取的「科學管理」方式。一方面,我們想要求進步;另一方面,我們似乎也不知道進步的本質究竟是什麼。而大家競相套用「科學管理」的外衣,或許也只是想快捷地取得認同(至少不反對),並進而為自己的立場取得優勢吧?
星期三, 5月 10, 2006
視覺思考
今天看(本週聯合報附贈的)紐約時報,對其中一些敘述產生了聯想。
這篇文章叫做 "From Eels to Egos, Freud's Art Displayed",描述佛洛依德從早期研究鰻魚的解剖,到成為心理學家(深刻地影響精神醫學的觀點與研究,並開創了心理分析學派),雖然研究領域變遷,對於畫圖的執著始終不變。
讓我產生感覺的,是報導引述某位學者說:「愛因斯坦曾說,當他思考科學時,是透過視覺思考 (Thought Visually),將思維化為圖像 (Thought in Pictures),而佛洛依德似乎也是如此。」
猶記得數年前,貓曾經拿了一份 IBM 內部測驗一個人思考傾向的一些題目給我把玩。中間好像有些題目,就是問自己,是傾向於圖像式思考,還是抽象式(包含邏輯推論吧)的思考。我一直不清楚,自己究竟比較擅長哪一種。
現在看到這篇文章,忽然覺得,能夠讓自己印象深刻的一些學理,似乎都在心目中隱約地透露著些許圖像的面貌。我想,我應該不是很擅長抽象思考的。然而,自己是不是比較擅長於視覺思考?好像也不是呢(自己也不會畫圖,畫出來的東西通常又醜又呆板)。
最近一陣子,對於自己「表達能力欠佳」、「文筆不好」等,都感到有些遺憾(應該在年輕時多花些時間看書、練習的)。現在,對於自己不會「畫圖」,似乎也覺得有些傷心了。
這篇文章叫做 "From Eels to Egos, Freud's Art Displayed",描述佛洛依德從早期研究鰻魚的解剖,到成為心理學家(深刻地影響精神醫學的觀點與研究,並開創了心理分析學派),雖然研究領域變遷,對於畫圖的執著始終不變。
讓我產生感覺的,是報導引述某位學者說:「愛因斯坦曾說,當他思考科學時,是透過視覺思考 (Thought Visually),將思維化為圖像 (Thought in Pictures),而佛洛依德似乎也是如此。」
猶記得數年前,貓曾經拿了一份 IBM 內部測驗一個人思考傾向的一些題目給我把玩。中間好像有些題目,就是問自己,是傾向於圖像式思考,還是抽象式(包含邏輯推論吧)的思考。我一直不清楚,自己究竟比較擅長哪一種。
現在看到這篇文章,忽然覺得,能夠讓自己印象深刻的一些學理,似乎都在心目中隱約地透露著些許圖像的面貌。我想,我應該不是很擅長抽象思考的。然而,自己是不是比較擅長於視覺思考?好像也不是呢(自己也不會畫圖,畫出來的東西通常又醜又呆板)。
最近一陣子,對於自己「表達能力欠佳」、「文筆不好」等,都感到有些遺憾(應該在年輕時多花些時間看書、練習的)。現在,對於自己不會「畫圖」,似乎也覺得有些傷心了。
星期日, 5月 07, 2006
星期四, 5月 04, 2006
一個多年前寫的動態網頁
最近心血來潮,整理出一些「多年前」(1999) 寫的動態網頁。
事隔多年,當我從繁雜的目錄檔案中找出它們時,還是對其中許多 DHTML Pages 感覺到相當的樂趣 --- 雖然當時寫的許多東西都是 "IE Only",只能在 M$ Internet Explorer 上正確地執行。
一個例子是「用 DHTML 做出放大鏡呈現的樣子」。50 行不甚精簡的 VBScript 程式碼,就能夠呈現出一個「放大鏡在某個圖形上移動」的範例,回想起來,仍有些難以言喻的心動。
當然啦,能夠用如此短的程式碼做到,主要是 IE 在自己獨有的 CSS 規格中,加入了一個 "filter"「視覺特效」的屬性與功能。可惜的是,即使在多年後的今天,W3C 的 CSS 2.1 仍然將這些「視覺特效」視為微軟專屬,Firefox 之類的瀏覽器也都不支援這類功能。
在自己粗淺的想法裡,HTML、CSS 與 DHTML 等,都屬於「為了網頁呈現」的語言(工具)。如果在標準規格裡,能夠加上這類視覺處理的功能(即使初期只是建議的選項),應該能夠讓許多人,更容易地利用 Web pages,來展現他們的想像與創意吧。
事隔多年,當我從繁雜的目錄檔案中找出它們時,還是對其中許多 DHTML Pages 感覺到相當的樂趣 --- 雖然當時寫的許多東西都是 "IE Only",只能在 M$ Internet Explorer 上正確地執行。
一個例子是「用 DHTML 做出放大鏡呈現的樣子」。50 行不甚精簡的 VBScript 程式碼,就能夠呈現出一個「放大鏡在某個圖形上移動」的範例,回想起來,仍有些難以言喻的心動。
當然啦,能夠用如此短的程式碼做到,主要是 IE 在自己獨有的 CSS 規格中,加入了一個 "filter"「視覺特效」的屬性與功能。可惜的是,即使在多年後的今天,W3C 的 CSS 2.1 仍然將這些「視覺特效」視為微軟專屬,Firefox 之類的瀏覽器也都不支援這類功能。
在自己粗淺的想法裡,HTML、CSS 與 DHTML 等,都屬於「為了網頁呈現」的語言(工具)。如果在標準規格裡,能夠加上這類視覺處理的功能(即使初期只是建議的選項),應該能夠讓許多人,更容易地利用 Web pages,來展現他們的想像與創意吧。
星期二, 5月 02, 2006
愛工作、更愛人生
最近似乎傾向於挑選與「人生、工作」有關的書籍來看。
這兩天看的,也是一本塵封已久的書:「愛工作、更愛人生」(The Money or Your Life)。才看了前幾章,就已身有感觸。
想起貓在半年前,曾經在 Blog 寫過一篇「要錢還是要命?」。這本書的標題也類似:你要追尋的,是金錢(事業),還是生活(志業)?
作者說得頗老實:無論選擇的是事業還是志業,都會有正反兩面的收穫。選擇事業,可以享有豐厚的經濟所得,但很可能一生都在體驗痛苦(包含感到才華虛擲、機會錯失、沒有人生意義)。選擇志業,物質生活恐怕不會太精彩,但可以享受到豐富、活力充沛、完美的人生。
重點是,你要選擇那一條路?(我從前通常會逃避這樣的問題,幻想可以「兩者得兼」 --- 卻不了解,兩者得兼,是因為選擇志業、又需有幸運女神的眷顧。)
p.s. 看中文翻譯書,經常有種缺憾,那就是譯者並不見得會把重要的詞彙原文附在譯文上。像是「志業」,我就頗想知道原文的單字究竟是什麼。
這兩天看的,也是一本塵封已久的書:「愛工作、更愛人生」(The Money or Your Life)。才看了前幾章,就已身有感觸。
想起貓在半年前,曾經在 Blog 寫過一篇「要錢還是要命?」。這本書的標題也類似:你要追尋的,是金錢(事業),還是生活(志業)?
作者說得頗老實:無論選擇的是事業還是志業,都會有正反兩面的收穫。選擇事業,可以享有豐厚的經濟所得,但很可能一生都在體驗痛苦(包含感到才華虛擲、機會錯失、沒有人生意義)。選擇志業,物質生活恐怕不會太精彩,但可以享受到豐富、活力充沛、完美的人生。
重點是,你要選擇那一條路?(我從前通常會逃避這樣的問題,幻想可以「兩者得兼」 --- 卻不了解,兩者得兼,是因為選擇志業、又需有幸運女神的眷顧。)
p.s. 看中文翻譯書,經常有種缺憾,那就是譯者並不見得會把重要的詞彙原文附在譯文上。像是「志業」,我就頗想知道原文的單字究竟是什麼。
星期五, 4月 28, 2006
捨近求遠
人很奇怪,通常對已經擁有的東西認為理所當然,然後卻總想要擁有更多。
做研究似乎也經常是如此。一開始認為頗有挑戰性,也投入相當的時間精力,了解後才發現「解答遠在天邊、近在眼前」。更奇怪的是,就算發現這個解答,還經常會因為懷疑「會不會有更好的答案」而不懂得好好珍惜;仍然被外界的繽紛誘惑、仍然總覺得外國的月亮就是會比較圓。
雖然研究的特質,就是不斷發現問題、不斷找尋更好解答的歷程;但是「最終、最佳的完美解答」卻稀少而難得。因而實質上,我們「沒有必要」為了找不著完美解答而遺憾。
有趣的是,也經常出現一種「過頭」的現象。既然理性上知道捨近求遠並不恰當、知道外國的月亮不會比較圓,那麼就不如「聲稱並捍衛本國的月亮比較圓」。於是,很容易過度保護自己、膨脹所有。
於是,我們經常在這兩種極端間拉扯,只因找不著合適的平衡點。我猜想,尋找平衡點,雖然在理論上或可用數學模型來加以簡化處理,但本質上應仍然是種藝術。也或許,「成熟」的一種表現,就是我們知道如何感受、尋求這類平衡點,並適當地加以處理吧?
做研究似乎也經常是如此。一開始認為頗有挑戰性,也投入相當的時間精力,了解後才發現「解答遠在天邊、近在眼前」。更奇怪的是,就算發現這個解答,還經常會因為懷疑「會不會有更好的答案」而不懂得好好珍惜;仍然被外界的繽紛誘惑、仍然總覺得外國的月亮就是會比較圓。
雖然研究的特質,就是不斷發現問題、不斷找尋更好解答的歷程;但是「最終、最佳的完美解答」卻稀少而難得。因而實質上,我們「沒有必要」為了找不著完美解答而遺憾。
有趣的是,也經常出現一種「過頭」的現象。既然理性上知道捨近求遠並不恰當、知道外國的月亮不會比較圓,那麼就不如「聲稱並捍衛本國的月亮比較圓」。於是,很容易過度保護自己、膨脹所有。
於是,我們經常在這兩種極端間拉扯,只因找不著合適的平衡點。我猜想,尋找平衡點,雖然在理論上或可用數學模型來加以簡化處理,但本質上應仍然是種藝術。也或許,「成熟」的一種表現,就是我們知道如何感受、尋求這類平衡點,並適當地加以處理吧?
星期一, 4月 24, 2006
沒有必要
接近中午時,老師找了我去,告訴我一些論文該修改的地方。
延續著先前幾回 posts (畫蛇添足、想的比做的快),論文有問題的地方都差不多,但這回因為整體上算是「寫完」、算是比較完整了,因此問題多半出現在「語意含混、詞不達意、或者定義不夠精簡明瞭」之上。
老師說,我在論文裡描述「負面的東西」太多了。重覆(即使用不同的角度)論說「某某既有方法的缺陷」,真的有那麼必要嗎?此外,要陳述自己的想法(新的方法),開頭就要能夠「精準明確地」說出自己等一下要論述些什麼。
最有趣的地方,是老師說,我在結論裡,述說正面的「論文總結、新方法之貢獻」竟然比屬於負面的「future work」少很多。「沒有必要這樣做的。」老師微笑道。
在一剎那間,我竟似乎聽懂了老師的意思。是啊,沒有必要為了表示自己考量周全,而讓論文再次失焦、讓論文顯得畫蛇添足啊。
延續著先前幾回 posts (畫蛇添足、想的比做的快),論文有問題的地方都差不多,但這回因為整體上算是「寫完」、算是比較完整了,因此問題多半出現在「語意含混、詞不達意、或者定義不夠精簡明瞭」之上。
老師說,我在論文裡描述「負面的東西」太多了。重覆(即使用不同的角度)論說「某某既有方法的缺陷」,真的有那麼必要嗎?此外,要陳述自己的想法(新的方法),開頭就要能夠「精準明確地」說出自己等一下要論述些什麼。
最有趣的地方,是老師說,我在結論裡,述說正面的「論文總結、新方法之貢獻」竟然比屬於負面的「future work」少很多。「沒有必要這樣做的。」老師微笑道。
在一剎那間,我竟似乎聽懂了老師的意思。是啊,沒有必要為了表示自己考量周全,而讓論文再次失焦、讓論文顯得畫蛇添足啊。
「隨波逐流」
昨晚和貓閒聊,他半開玩笑地懷疑,我最近或許是放棄理想而「隨波逐流」了。
從未經深思的字感裡,我覺得「隨波逐流」的意思,似乎是「感受到無法改變大環境,因而隨著世事變化而浮沈」。但查了一下網路,這句成語出自《史記:屈原賈生列傳》,字面的解釋是「隨著波浪起伏,跟著流水漂蕩」;但由於「逐」字有追隨的意味,它其實是被拿來比喻「沒有堅定的立場,缺乏判斷是非的能力,只能隨著別人走」。
喔,看來用這個成語來形容自己最近「似乎稍微看開了」的心境變化,並不適切,也太嚴重了些。那麼,該用什麼樣的字眼,來形容這種「認清、接納現實,再保持理性的客觀」、這種頗有「柳暗花明」味道的成熟感覺?
我不知道。(但我相信一定有文學作家,曾用頗為貼切的文字來譬喻或描述。)
其實,近來經常覺得自己對文字語言的運用能力,似乎仍停留在國中、高中的階段。造成的結果,則是對各類用語囫圇吞棗並隨意亂用。詞不達意也就算了,錯把馮京當馬涼,甚而指鹿為馬,誤解就大了。
從未經深思的字感裡,我覺得「隨波逐流」的意思,似乎是「感受到無法改變大環境,因而隨著世事變化而浮沈」。但查了一下網路,這句成語出自《史記:屈原賈生列傳》,字面的解釋是「隨著波浪起伏,跟著流水漂蕩」;但由於「逐」字有追隨的意味,它其實是被拿來比喻「沒有堅定的立場,缺乏判斷是非的能力,只能隨著別人走」。
喔,看來用這個成語來形容自己最近「似乎稍微看開了」的心境變化,並不適切,也太嚴重了些。那麼,該用什麼樣的字眼,來形容這種「認清、接納現實,再保持理性的客觀」、這種頗有「柳暗花明」味道的成熟感覺?
我不知道。(但我相信一定有文學作家,曾用頗為貼切的文字來譬喻或描述。)
其實,近來經常覺得自己對文字語言的運用能力,似乎仍停留在國中、高中的階段。造成的結果,則是對各類用語囫圇吞棗並隨意亂用。詞不達意也就算了,錯把馮京當馬涼,甚而指鹿為馬,誤解就大了。
星期五, 4月 21, 2006
終於將 Prototype 告個段落
今天算是把 THDL Retrieval Prototype (v0.83) 的工作,告個明確的段落了。
之前曾經提過,這次回鍋做 post-doctor,主要的工作有兩件事情:一個檢索系統的雛型、以及一篇評估檢索效果的論文。從某個角度來看,這兩件工作,其實都算是我數年前博士研究的延續(或者說,博士論文「偷懶沒有做完」的部分)。
因此,這幾個月的 Blog Posts 裡,經常可以看到我對這兩項工作的一些報告、感覺、與自省。今年二月初,在「修補程式的日子」裡,我原本以為,程式開發已經頗有模樣,應該可以在三月底告個段落。但緊接著,在二月底左右,在「交接與傳承」這份 post 裡,我就了解到,交接傳承、討論溝通、與工作收尾,都比想像中來得困難。而在三月初的時候,「想的比做的快」這篇 post,更將論文與 prototype 交接的預估時間,一舉延長到五月底。
其實,自己在最近 prototype 的「傳承會議」裡的表現,頗有虎頭蛇尾的味道。我覺得,主要的原因是,高估了學弟妹的能夠投入的時間與熱忱,低估了自己準備投影片等溝通資料所需的時間,也錯估了自己對於交接傳承所需投入的溝通技巧、熱忱、與耐心。
另一方面,學弟們則似乎漸漸進入狀況,能夠看懂、修改 prototype 程式,甚至討論設計實作的一些問題。這多少也表示,這兩個月的傳承會議,並沒有浪費、是有實際成果的。細細想來,或許這樣已經算是最佳的結果,也說不定呢。
兩項 post-doctor 工作中,論文的部分,看起來需要更長的時間才能完成。昨天老師告訴我,他還沒看完 -- 但有對部分定義做了些修改(讓論文內容能夠更簡潔明確)。而老師看過後,我大概還得花上一、兩個星期的時間修改吧。修改後,也應該還需要(最後一次?還是數次?)再修訂與校閱。因此,要在五月底完成論文,恐怕還是「很拼」的。
之前曾經提過,這次回鍋做 post-doctor,主要的工作有兩件事情:一個檢索系統的雛型、以及一篇評估檢索效果的論文。從某個角度來看,這兩件工作,其實都算是我數年前博士研究的延續(或者說,博士論文「偷懶沒有做完」的部分)。
因此,這幾個月的 Blog Posts 裡,經常可以看到我對這兩項工作的一些報告、感覺、與自省。今年二月初,在「修補程式的日子」裡,我原本以為,程式開發已經頗有模樣,應該可以在三月底告個段落。但緊接著,在二月底左右,在「交接與傳承」這份 post 裡,我就了解到,交接傳承、討論溝通、與工作收尾,都比想像中來得困難。而在三月初的時候,「想的比做的快」這篇 post,更將論文與 prototype 交接的預估時間,一舉延長到五月底。
其實,自己在最近 prototype 的「傳承會議」裡的表現,頗有虎頭蛇尾的味道。我覺得,主要的原因是,高估了學弟妹的能夠投入的時間與熱忱,低估了自己準備投影片等溝通資料所需的時間,也錯估了自己對於交接傳承所需投入的溝通技巧、熱忱、與耐心。
另一方面,學弟們則似乎漸漸進入狀況,能夠看懂、修改 prototype 程式,甚至討論設計實作的一些問題。這多少也表示,這兩個月的傳承會議,並沒有浪費、是有實際成果的。細細想來,或許這樣已經算是最佳的結果,也說不定呢。
兩項 post-doctor 工作中,論文的部分,看起來需要更長的時間才能完成。昨天老師告訴我,他還沒看完 -- 但有對部分定義做了些修改(讓論文內容能夠更簡潔明確)。而老師看過後,我大概還得花上一、兩個星期的時間修改吧。修改後,也應該還需要(最後一次?還是數次?)再修訂與校閱。因此,要在五月底完成論文,恐怕還是「很拼」的。
星期四, 4月 20, 2006
羅東二日遊
做 post-doctor 的好處之一,是「上班」的時間不需太固定,可以抽空出遊。
前天開車到羅東住了一晚。雖說主要的目的,是幫媽媽載一些較大的器物;但我多少也想帶寶寶到羅東的北成運動公園走走,也趁機讓自己「休息」一下。
一路上,三姊陪著寶寶玩,讓我和太太輕鬆許多。或許因為數年前,曾和太太到羅東運動公園騎腳踏車,我對這個公園的感覺極好。現在帶著寶寶,沒有能夠像從前那樣自由自在地騎腳踏車遊玩,但看著小傢伙精力旺盛地餵魚、跑跳、玩飛盤,就感覺很是舒適。之後,二舅請我們到「八味」吃日本料理,味道相當好,每個人都很愉快。
除了回程時,自己顯得比較沒有耐心(對自己缺乏耐心感到不滿意)外,我對這次的出遊,感到相當地滿意。那麼,為什麼我從前幾乎都沒能感受到這些美妙的經驗呢?我想,最主要的原因,或許不是物質上的享受,而是因為自己漸漸懂得去看待、感受、珍惜、參與這些生活上的美好面。
真該感謝家人、感謝社會,提供這樣好的機會與環境呢。我想起陳之藩的「謝天」:得之於人者太多,而出之於己者太少。這些話語,真是深厚而有韻味啊。

一路上,三姊陪著寶寶玩,讓我和太太輕鬆許多。或許因為數年前,曾和太太到羅東運動公園騎腳踏車,我對這個公園的感覺極好。現在帶著寶寶,沒有能夠像從前那樣自由自在地騎腳踏車遊玩,但看著小傢伙精力旺盛地餵魚、跑跳、玩飛盤,就感覺很是舒適。之後,二舅請我們到「八味」吃日本料理,味道相當好,每個人都很愉快。
除了回程時,自己顯得比較沒有耐心(對自己缺乏耐心感到不滿意)外,我對這次的出遊,感到相當地滿意。那麼,為什麼我從前幾乎都沒能感受到這些美妙的經驗呢?我想,最主要的原因,或許不是物質上的享受,而是因為自己漸漸懂得去看待、感受、珍惜、參與這些生活上的美好面。
真該感謝家人、感謝社會,提供這樣好的機會與環境呢。我想起陳之藩的「謝天」:得之於人者太多,而出之於己者太少。這些話語,真是深厚而有韻味啊。
星期一, 4月 17, 2006
丹堤咖啡
嚐了一口苦澀的咖啡,舌尖麻麻地。
這幾個月來,習慣在丹堤咖啡吃早點。通常是喝拿堤 (Latte),配上厚片土司或者丹麥酥餅。解飢品味之外,就是強迫自己閱讀一篇紐約時報的報導,然後看一些「擺在架上多日、近來重拾興趣」的書籍。
喝拿堤的原因,主要是因為它的牛奶含量高(據說咖啡與牛奶的比例是 1:2),喝了比較不傷胃。丹堤咖啡用的牛奶又是(據稱最佳的)林鳳營牛奶,喝起來溫溫潤潤地,相當舒暢。
不過,今天心血來潮,改喝比較大杯、單位價格比較便宜的丹堤咖啡。自從(約一年前吧)套餐價格調漲後,我就沒有再喝這種咖啡了。
初嚐了幾口,還真是苦澀啊。頗難想像從前怎麼會覺得「丹堤咖啡喝起來感覺也不錯」。但我接著了解到,覺得咖啡難以入口,其實是因為自己的味覺標準提高了。味覺標準提高,如果表示「品味」也跟著提高,那倒也不錯;但困擾的是,享受的標準提高了,自己卻經常無法從中感受到它所帶來的樂趣啊。
我想起上週舊同事到福華喝下午茶聊天,大家多半覺得場地還不錯,但飲料普通,餐點也嫌粗糙。這是否也是因為大家都有工作賺錢的能力,也漸漸習慣比較高檔的「奢華」呢?
收拾背包,喝下最後一口咖啡。走出店門,在舌尖的苦澀外,喉頭間突然有些回甘的感覺。
這幾個月來,習慣在丹堤咖啡吃早點。通常是喝拿堤 (Latte),配上厚片土司或者丹麥酥餅。解飢品味之外,就是強迫自己閱讀一篇紐約時報的報導,然後看一些「擺在架上多日、近來重拾興趣」的書籍。
喝拿堤的原因,主要是因為它的牛奶含量高(據說咖啡與牛奶的比例是 1:2),喝了比較不傷胃。丹堤咖啡用的牛奶又是(據稱最佳的)林鳳營牛奶,喝起來溫溫潤潤地,相當舒暢。
不過,今天心血來潮,改喝比較大杯、單位價格比較便宜的丹堤咖啡。自從(約一年前吧)套餐價格調漲後,我就沒有再喝這種咖啡了。
初嚐了幾口,還真是苦澀啊。頗難想像從前怎麼會覺得「丹堤咖啡喝起來感覺也不錯」。但我接著了解到,覺得咖啡難以入口,其實是因為自己的味覺標準提高了。味覺標準提高,如果表示「品味」也跟著提高,那倒也不錯;但困擾的是,享受的標準提高了,自己卻經常無法從中感受到它所帶來的樂趣啊。
我想起上週舊同事到福華喝下午茶聊天,大家多半覺得場地還不錯,但飲料普通,餐點也嫌粗糙。這是否也是因為大家都有工作賺錢的能力,也漸漸習慣比較高檔的「奢華」呢?
收拾背包,喝下最後一口咖啡。走出店門,在舌尖的苦澀外,喉頭間突然有些回甘的感覺。
星期日, 4月 16, 2006
官職表:行政組織與任職人員
之前隱約提過,項老師想要開創一門「歷史資訊學」(histoinformatics)。
我覺得這是個相當有趣、有潛力的研究主題(能夠感受其有趣點,或許也表示自己有了些長進吧)。雖然困難,但有可能性 (difficult but possible)。目前,實驗室是計畫以明清時期台灣相關的檔案文件為基礎,先建構「好用、合用」的檢索系統,然後利用資訊科技開發其他的模型或工具,來探索「歷史資訊學」可能的樣貌。
除了原始的文件資訊外,實驗室取得一些「應該很有用」的資料,其中有一項就是「官職表」。官職表是什麼呢?基本上,它是在描述某個時候,政府的組織架構與任職官員;除此之外,它經常也包含了組織的辦公地點、以及一些「備註式」的說明。例如,目前台灣的官職架構,就是有總統府、五院、一大堆部會等。每個職位,如果不是懸缺,都應該有人任職、負責相關的行政業務(例如,當前的總統是陳水扁、行政院長是蘇貞昌、立法院長是王金平等)。
這看起來稀鬆平常,不過若是想要建構一套「明清時期官職表模型」,似乎就不是那麼容易了。
不容易的一個原因,是我們通常會被「表象」所迷惑,忘了去探究隱藏其下的結構或意涵。我們看到的資訊,有一部份是類似下圖、有階層結構的的「組織圖」或「行政區域圖」:

我們手頭也會有「列成表格的歷任官職人員」資訊:

在輸出(希望系統能夠做到些什麼)方面,我們則希望從這些資訊裡,推導出類似「陳水扁曾是唐飛的上司」之類的結論(嗯,什麼是「上司」呢?或許可粗略說是有「任免權」、「管轄權」或「事物的交辦權」吧...)。
當然,組織結構可能會改變(重新劃分某些行政區域、調整某些職位功能),而歷史資訊有時殘缺不全(例如,可能知道某人的任官起始日期,卻不知到他在何時卸下官位),有時甚至可能會因失誤而產生不一致。我們也希望系統能夠「適當地處理」這類問題(不要因此讓系統無法運作、或者推導出錯誤的結論)。
那麼,是不是可以找到「簡潔、優美、自然」的抽象模型,能夠合適地描述這樣的「官職表」資訊,並進而指引系統的設計開發呢?
我覺得這是個相當有趣、有潛力的研究主題(能夠感受其有趣點,或許也表示自己有了些長進吧)。雖然困難,但有可能性 (difficult but possible)。目前,實驗室是計畫以明清時期台灣相關的檔案文件為基礎,先建構「好用、合用」的檢索系統,然後利用資訊科技開發其他的模型或工具,來探索「歷史資訊學」可能的樣貌。
除了原始的文件資訊外,實驗室取得一些「應該很有用」的資料,其中有一項就是「官職表」。官職表是什麼呢?基本上,它是在描述某個時候,政府的組織架構與任職官員;除此之外,它經常也包含了組織的辦公地點、以及一些「備註式」的說明。例如,目前台灣的官職架構,就是有總統府、五院、一大堆部會等。每個職位,如果不是懸缺,都應該有人任職、負責相關的行政業務(例如,當前的總統是陳水扁、行政院長是蘇貞昌、立法院長是王金平等)。
這看起來稀鬆平常,不過若是想要建構一套「明清時期官職表模型」,似乎就不是那麼容易了。
不容易的一個原因,是我們通常會被「表象」所迷惑,忘了去探究隱藏其下的結構或意涵。我們看到的資訊,有一部份是類似下圖、有階層結構的的「組織圖」或「行政區域圖」:

我們手頭也會有「列成表格的歷任官職人員」資訊:

在輸出(希望系統能夠做到些什麼)方面,我們則希望從這些資訊裡,推導出類似「陳水扁曾是唐飛的上司」之類的結論(嗯,什麼是「上司」呢?或許可粗略說是有「任免權」、「管轄權」或「事物的交辦權」吧...)。
當然,組織結構可能會改變(重新劃分某些行政區域、調整某些職位功能),而歷史資訊有時殘缺不全(例如,可能知道某人的任官起始日期,卻不知到他在何時卸下官位),有時甚至可能會因失誤而產生不一致。我們也希望系統能夠「適當地處理」這類問題(不要因此讓系統無法運作、或者推導出錯誤的結論)。
那麼,是不是可以找到「簡潔、優美、自然」的抽象模型,能夠合適地描述這樣的「官職表」資訊,並進而指引系統的設計開發呢?
星期五, 4月 14, 2006
聰明反被聰明誤
近幾個星期,強烈地感覺自己對於文字的使用與表達,有著嚴重的缺陷。
說起來,或許還是因為自己對文字的感覺與運用,天賦不夠、要求不高、練習不足。呈現在現實面上,就是對於許多字詞的意思 -- 不管是聽到、看到、或是自己寫出來 -- 都很容易依「表面的感覺」胡亂地解釋或運用。
長久以來,一直也以為「聰明」是個正面的詞彙。不過,在「聰明反被聰明誤」這樣的句子裡,它似乎反而是負面的意涵比較強烈。那麼,「聰明」、或者「耳聰目明」到底是什麼意思呢?
手頭沒有好的中文字典(看起來,我是應該需要一本好的中文字典)。翻翻英文字典,很容易就能找到超過十個與「聰明」相關的形容詞。在許多時候,「聰明」似乎是表示「接收迅速、反應敏捷」,但我在聽到或看到這個詞彙時,是聯想到這樣的意涵嗎?自己在運用這個詞彙時,是想表達這樣的意思嗎?
有趣的是,像 clever 這個字,有時就會有負面的意涵。字典上說,「clever implies quick native ability or aptness and sometimes suggests a lack of more substantial qualities」。所以,「聰明反被聰明誤」的聰明,是不是指「cleverness」?
沒有能夠精準地描述感覺,在溝通、傳遞的過程就很容易失真。在學校裡,花費了大半的時間精力,想快速地找到「適合自己、甚至屬於自己」的一片天地,因而「自以為聰明地」跳過需要留意練習的基本文字運用工夫。如今看來,或許自己也真的是「聰明反被聰明誤」了 。
說起來,或許還是因為自己對文字的感覺與運用,天賦不夠、要求不高、練習不足。呈現在現實面上,就是對於許多字詞的意思 -- 不管是聽到、看到、或是自己寫出來 -- 都很容易依「表面的感覺」胡亂地解釋或運用。
長久以來,一直也以為「聰明」是個正面的詞彙。不過,在「聰明反被聰明誤」這樣的句子裡,它似乎反而是負面的意涵比較強烈。那麼,「聰明」、或者「耳聰目明」到底是什麼意思呢?
手頭沒有好的中文字典(看起來,我是應該需要一本好的中文字典)。翻翻英文字典,很容易就能找到超過十個與「聰明」相關的形容詞。在許多時候,「聰明」似乎是表示「接收迅速、反應敏捷」,但我在聽到或看到這個詞彙時,是聯想到這樣的意涵嗎?自己在運用這個詞彙時,是想表達這樣的意思嗎?
有趣的是,像 clever 這個字,有時就會有負面的意涵。字典上說,「clever implies quick native ability or aptness and sometimes suggests a lack of more substantial qualities」。所以,「聰明反被聰明誤」的聰明,是不是指「cleverness」?
沒有能夠精準地描述感覺,在溝通、傳遞的過程就很容易失真。在學校裡,花費了大半的時間精力,想快速地找到「適合自己、甚至屬於自己」的一片天地,因而「自以為聰明地」跳過需要留意練習的基本文字運用工夫。如今看來,或許自己也真的是「聰明反被聰明誤」了 。
星期三, 4月 12, 2006
星期一, 4月 10, 2006
一樣花木兩樣情
上週末偷懶了,沒有能夠持續寫出一些心得或感想。
我猜想部分原因,可能是因為自己突然「似乎聽得懂一些話中精妙處」,而高興得過了頭 :p
話說上週四,實驗室 meeting 時,我對學妹提到的使用者回應,學弟們的進度與論文報告、以及項老師在 meeting 時講的一些話,突然有「會意」的感覺。或許由於這種感覺實在頗微妙,以致於讓自己不知不覺在督促自己寫 Blog 上懈怠了(說實在地,這許多年來,自己似乎一直沒有什麼長進,因此一丁點「似乎頓悟了什麼」,就感到相當高興)。
同樣的客觀情事,在「似有領悟」的前後,感受竟然相差如許之多,幾乎可以用「一樣花木兩樣情」來譬喻了。我想,自己這些年來,應該也是「很努力希望求上進」的。然而,光有「努力」看起來是不夠的,更需要的是要找到自己的方向。而自己或許就是摸索不到適合自己的領悟角度(因為不敢面對這樣的大問題),因此一路跌跌撞撞、常覺得委屈不平衡、甚至憤世嫉俗吧。
很難寫出自己的領悟到底是什麼。或許也可以說,自己是「才剛入門、剛跨過一道門檻」。既然尚未登堂入室,當然也說不上有豐富的收穫與感想。
也許,這樣的領悟,能夠開啟自己「感受美好人生」的一扇門。我想,這半年回鍋做 post doctor,收穫還真是多呢。如果硬要自己說些「不滿意」的話,那就是懷疑自己怎麼到這樣的年紀,才能漸漸感受、了解到這些看似淺顯的道理呢?
我猜想部分原因,可能是因為自己突然「似乎聽得懂一些話中精妙處」,而高興得過了頭 :p
話說上週四,實驗室 meeting 時,我對學妹提到的使用者回應,學弟們的進度與論文報告、以及項老師在 meeting 時講的一些話,突然有「會意」的感覺。或許由於這種感覺實在頗微妙,以致於讓自己不知不覺在督促自己寫 Blog 上懈怠了(說實在地,這許多年來,自己似乎一直沒有什麼長進,因此一丁點「似乎頓悟了什麼」,就感到相當高興)。
同樣的客觀情事,在「似有領悟」的前後,感受竟然相差如許之多,幾乎可以用「一樣花木兩樣情」來譬喻了。我想,自己這些年來,應該也是「很努力希望求上進」的。然而,光有「努力」看起來是不夠的,更需要的是要找到自己的方向。而自己或許就是摸索不到適合自己的領悟角度(因為不敢面對這樣的大問題),因此一路跌跌撞撞、常覺得委屈不平衡、甚至憤世嫉俗吧。
很難寫出自己的領悟到底是什麼。或許也可以說,自己是「才剛入門、剛跨過一道門檻」。既然尚未登堂入室,當然也說不上有豐富的收穫與感想。
也許,這樣的領悟,能夠開啟自己「感受美好人生」的一扇門。我想,這半年回鍋做 post doctor,收穫還真是多呢。如果硬要自己說些「不滿意」的話,那就是懷疑自己怎麼到這樣的年紀,才能漸漸感受、了解到這些看似淺顯的道理呢?
星期二, 4月 04, 2006
領導人的逆思考:自由思考
最近沒有什麼新發展與收穫,所以我只能試著將看書的一些感想寫下來。
從嚴格些的角度看,這樣做似乎有些「灌水」的味道。但是換個角度想,一本書若是內容豐富,感想本來就不容易擠在一篇 post 裡充分描述。因此,分成多個篇幅,慢慢地消化,應該也不壞吧。
前兩天摘要地描述「領導人的逆思考」裡的「中性思考」。接下來,我對書中提到的另一個概念「自由思考」也頗有感觸。
書裡提到,有些人很鄉愿,專門澆人冷水。這是自由思考的最大障礙。當他們聽見新想法時,並不會想到成功的可能,而是直覺地搬出所有可能失敗的理由。他們或許衷心地認為,這樣大家就不會浪費時間去考慮愚蠢至極的爛點子了 --- 他還等於幫大夥兒一個忙呢。然而,這種人其實才是扼殺自由創意結晶得元凶。(我想到自己從前似乎也頗常潑大家冷水。而或許是最近比較「成熟」了,就算覺得某些想法成功率極低,似乎比較會從正面的角度去看待、描述、與討論。)
自由思考的關鍵,首先是讓自己思索最荒誕的想法,然後才想到實際執行的種種限制。多荒誕?作者舉了一個自己曾經設計過的電子控制系統迴路來作例子。作者說,在 1967 年,他想找出控制洗碗機的新方法,乃至「想破了頭」,強迫自己想一大堆亂七八糟的東西:乾草捆、大象、星球、瓢蟲、沙發、微生物、法國號... 等等,把它們以不同的方式相互組合在一起。這個練習相當不簡單,但是多做了幾次後,他的腦海中忽然浮現(與其他人完全不同的)系統迴路圖,因此造就了一個後來申請到專利,用在數千萬台家電用品上的新發明。(透過作者現身說法,真的有人曾因這樣「自由思考」而受益,感覺就很不一樣。)
這本書還說,大多數的新發明,其實只是既有成品或技術的新組合罷了。因此發明是否成功的關鍵,便在於想出既有元件的空前組合方式,以解決問題。這讓我想到,MPH 在他的 blog「膠水程式與膠水角色」裡,似乎將元件組合看成「為了讓某些東西勉強運作,因而不得不把元件用膠水黏起來」的苦悶差事(我從前也如此覺得罷),似乎太小看「元件組合,其實是多數新發明的根基」這件事情了。
作者說,真正的自由思考其實非常辛苦,通常得花上相當的工夫,還要有決心不讓它淪為白日夢或空想。然而,很多的創新都是這樣的:一旦被發現和製成後,一切便看似理所當然;然而在此之前,一切卻都是茫然而未知的。我想,或許我從前「不夠成熟」,就是因為不能深刻地體會、了解、感受這些(或可說是理論與現實的落差)吧。
從嚴格些的角度看,這樣做似乎有些「灌水」的味道。但是換個角度想,一本書若是內容豐富,感想本來就不容易擠在一篇 post 裡充分描述。因此,分成多個篇幅,慢慢地消化,應該也不壞吧。
前兩天摘要地描述「領導人的逆思考」裡的「中性思考」。接下來,我對書中提到的另一個概念「自由思考」也頗有感觸。
書裡提到,有些人很鄉愿,專門澆人冷水。這是自由思考的最大障礙。當他們聽見新想法時,並不會想到成功的可能,而是直覺地搬出所有可能失敗的理由。他們或許衷心地認為,這樣大家就不會浪費時間去考慮愚蠢至極的爛點子了 --- 他還等於幫大夥兒一個忙呢。然而,這種人其實才是扼殺自由創意結晶得元凶。(我想到自己從前似乎也頗常潑大家冷水。而或許是最近比較「成熟」了,就算覺得某些想法成功率極低,似乎比較會從正面的角度去看待、描述、與討論。)
自由思考的關鍵,首先是讓自己思索最荒誕的想法,然後才想到實際執行的種種限制。多荒誕?作者舉了一個自己曾經設計過的電子控制系統迴路來作例子。作者說,在 1967 年,他想找出控制洗碗機的新方法,乃至「想破了頭」,強迫自己想一大堆亂七八糟的東西:乾草捆、大象、星球、瓢蟲、沙發、微生物、法國號... 等等,把它們以不同的方式相互組合在一起。這個練習相當不簡單,但是多做了幾次後,他的腦海中忽然浮現(與其他人完全不同的)系統迴路圖,因此造就了一個後來申請到專利,用在數千萬台家電用品上的新發明。(透過作者現身說法,真的有人曾因這樣「自由思考」而受益,感覺就很不一樣。)
這本書還說,大多數的新發明,其實只是既有成品或技術的新組合罷了。因此發明是否成功的關鍵,便在於想出既有元件的空前組合方式,以解決問題。這讓我想到,MPH 在他的 blog「膠水程式與膠水角色」裡,似乎將元件組合看成「為了讓某些東西勉強運作,因而不得不把元件用膠水黏起來」的苦悶差事(我從前也如此覺得罷),似乎太小看「元件組合,其實是多數新發明的根基」這件事情了。
作者說,真正的自由思考其實非常辛苦,通常得花上相當的工夫,還要有決心不讓它淪為白日夢或空想。然而,很多的創新都是這樣的:一旦被發現和製成後,一切便看似理所當然;然而在此之前,一切卻都是茫然而未知的。我想,或許我從前「不夠成熟」,就是因為不能深刻地體會、了解、感受這些(或可說是理論與現實的落差)吧。
星期日, 4月 02, 2006
領導人的逆思考:中性思考
上回提到「領導人的逆思考」,但只簡要地列出要點。
列出要點,通常是給「已經看過內容」的人來作事後的重點複習;對於沒有看過內容的人來說,經常產生不了什麼共鳴。因此,我覺得如果把一些自己頗有感觸的內容解釋一下(即使只是抄出原書的內容),應該也是很不錯的。
這本書提到,領導人要能作「中性思考」,對其所聽所聞並不會歸類為是真或假,而且無論是接受或拒絕 新觀念,他都能採取開放的態度。它也特別澄清,中性思考不是「批判性思考」,後者的態度是,不管聽到、看到什麼,都先認定是假的,除非累積了足夠的證據來證明事情的真偽,否則不會改變自己的想法。
作者說,真正的領導人,必須能延遲判斷,不要驟下斷語。大多數人下判斷都很快,而且傾向兩極化(這點,對於台灣動不動以政治傾向來看待、檢驗公共政策,應該最為明顯吧);也就是說,很快就會把事情分成好或壞、真或假、黑或白、友或敵。但真正成功的領導人,則需看清當下情勢的灰色地帶,才能為對策做出明智的抉擇。
值得特別一提的是,書中引用了 Fitzgerald 的話:「要測試一流人士的心智,便是看他如何能同時懷有兩種彼此抵觸的想法,卻又能讓心智正常運作。」--- 這句話,我之前在其他的書籍裡也有看到 --- 如果我們拿它來測試現在的一些「一流人士」,是不是能得到一些啟發呢?
而我喜歡「領導人的逆思考」這本書,有一個原因是在於:它會提醒你,許多事情,做起來並沒有想像中那麼容易。(一般的書籍,則多半喜歡自吹自擂,好像作者是天縱英明,所以事事能夠看得比讀者清楚。)
例如,作者會說,重點是中性思考並非人的天性,它是需要花工夫培養學習的。此外,他也會舉一些例子,來說明如何練習及養成延遲判斷的習慣。
我覺得,雖然書名已經多少強調「領導人」需要中性思考,但其實一般「不希望被別人牽著鼻子走」的人,應該也是需要有這樣的習慣與能力的。只是,知易行難,說起來容易,但真要培養這樣的習慣,似乎不是件容易事呢。
列出要點,通常是給「已經看過內容」的人來作事後的重點複習;對於沒有看過內容的人來說,經常產生不了什麼共鳴。因此,我覺得如果把一些自己頗有感觸的內容解釋一下(即使只是抄出原書的內容),應該也是很不錯的。
這本書提到,領導人要能作「中性思考」,對其所聽所聞並不會歸類為是真或假,而且無論是接受或拒絕 新觀念,他都能採取開放的態度。它也特別澄清,中性思考不是「批判性思考」,後者的態度是,不管聽到、看到什麼,都先認定是假的,除非累積了足夠的證據來證明事情的真偽,否則不會改變自己的想法。
作者說,真正的領導人,必須能延遲判斷,不要驟下斷語。大多數人下判斷都很快,而且傾向兩極化(這點,對於台灣動不動以政治傾向來看待、檢驗公共政策,應該最為明顯吧);也就是說,很快就會把事情分成好或壞、真或假、黑或白、友或敵。但真正成功的領導人,則需看清當下情勢的灰色地帶,才能為對策做出明智的抉擇。
值得特別一提的是,書中引用了 Fitzgerald 的話:「要測試一流人士的心智,便是看他如何能同時懷有兩種彼此抵觸的想法,卻又能讓心智正常運作。」--- 這句話,我之前在其他的書籍裡也有看到 --- 如果我們拿它來測試現在的一些「一流人士」,是不是能得到一些啟發呢?
而我喜歡「領導人的逆思考」這本書,有一個原因是在於:它會提醒你,許多事情,做起來並沒有想像中那麼容易。(一般的書籍,則多半喜歡自吹自擂,好像作者是天縱英明,所以事事能夠看得比讀者清楚。)
例如,作者會說,重點是中性思考並非人的天性,它是需要花工夫培養學習的。此外,他也會舉一些例子,來說明如何練習及養成延遲判斷的習慣。
我覺得,雖然書名已經多少強調「領導人」需要中性思考,但其實一般「不希望被別人牽著鼻子走」的人,應該也是需要有這樣的習慣與能力的。只是,知易行難,說起來容易,但真要培養這樣的習慣,似乎不是件容易事呢。
星期四, 3月 30, 2006
領導人的逆思考
這是一本值得推薦的書 --- 即使讀者並不想成為領導人,也應可受惠良多。
這幾個月來,看了幾本「閒書」。大致上,一開始會覺得「似乎頗有趣」,但看了幾個章節後,就會越來越覺得內容乏善可陳、說詞冗贅而煩悶。
但這本「領導人的逆思考」(The Contrarian's Guide to Leadership) 的每個章節,卻都讓我頗有感觸、共鳴與收穫。
這本書的簡要內容,可以條列如下(書籍介紹裡就有這些內容,所以我只需要「拷貝」過來即可,不需自己打字):
我覺得這是一本好書。雖然裡面沒有嚴謹的理論,但從頭看到尾(除了最後一章,作者拿他當南加大校長的經驗來作實例時,為了討好支持者所放進去的一些言論,顯得比較老套),都感到頗有收穫。然而,很難直接寫出自己的感覺。我想,其實我是需要更多面向的觀察、反芻、思考、印證的。
而多年前會買這本書,或許是因為我的個性不願從眾、也有些叛逆,喜歡「與一般想法不同」的論點,因此才會被這本書的標題所吸引吧。
這幾個月來,看了幾本「閒書」。大致上,一開始會覺得「似乎頗有趣」,但看了幾個章節後,就會越來越覺得內容乏善可陳、說詞冗贅而煩悶。
但這本「領導人的逆思考」(The Contrarian's Guide to Leadership) 的每個章節,卻都讓我頗有感觸、共鳴與收穫。
這本書的簡要內容,可以條列如下(書籍介紹裡就有這些內容,所以我只需要「拷貝」過來即可,不需自己打字):
- 中性思考:若非必要,先不要對觀念或人產生定見。
- 自由思考:想些最無稽的對策和解決方案,訓練自己超越傳統的腦力激盪法。
- 先聽,再開口;而且聽話的時候要有技巧。
- 專家可能對你有幫助,但絕不能取代你自己的批判思考和判斷。
- 特別小心掛著「無法推翻的事實」之名的「假科學」,或不容質疑的前人智慧結晶。這種東西對你自己,或你所帶領的組織的利益,多半毫無幫助。
- 當你的競爭對手埋首於業界刊物或其他速食刊物時,多從古代經典萃取精華。也可以請部屬向你報告真正重要的時事。
- 可以在合理情況下授權部屬做的決定,絕對不要攬上身。可以在合理情況下留到明天再做的決定,絕對不要今天做。
- 不要管過去付出的代價與錯誤。身為領導人,你做的決定只能影響未來,而非影響過去。
- 若非必要,不要羞辱你的手下敗將。
- 確定自己願意捐軀的山頭,也要了解,你的選擇可能在某個時候迫使你從周遭所有的山頭撤退。
- 為屬下服務。招募現有最好的人選,再把大部分時間與精力用來協助他們成功。
- 很多人都想「當」領導人,但很少人想「做」領導人。如果你不想「做」領導人,最好別打領導這一行的主意。
- 領導人無法實際「經營」組織,而只能帶領你的追隨者,讓他們集體為組織奉獻行動與才智。
- 別沉溺在人性本善或本惡的幻覺裡,重點是努力讓追隨者(和自己)發揮最好的那一面,同時將惡的那一面降到最低。
- 追求卓越的方式無法複製,真正的卓越只能透過原創思考與突破傳統而至。
而多年前會買這本書,或許是因為我的個性不願從眾、也有些叛逆,喜歡「與一般想法不同」的論點,因此才會被這本書的標題所吸引吧。
星期日, 3月 26, 2006
一本沒有什麼深度的書
差不多把「新消費者心理學」這本書看完了。
越到後面的章節,越覺得這本書其實並沒有什麼高見、沒有什麼深度的內容。因此,我似乎漸漸也學會,把認為無關緊要的章節,盡量快速地掃瞄過去(這對很多人來說是「一片蛋糕」(a piece of cake) 般地簡單,但對我來說,實際上頗有困難)。
這本書的內容,可以這樣總結(就像這本書自己提到的):
企業要在新經濟致勝的秘訣,就在於了解「新消費者購買偏好和動機」的這種敏銳能力。企業在提供產品或服務時,要考量到能替新消費者節省時間、減少注意力,還要能滿足新消費者追求信實感的渴望。
我覺得這其實是一種多方面觀察後的「淺」(shallow) 結論。即使作者在書中各處,似乎想用各種方式來佐證這項觀察,但那些論證感覺起來都不是很有深度,甚至有些斷章取義。因而,雖然書中提到的「authenticity」曾引發我的一些感觸,但接下來的章節,卻令人越來越覺得老套且乏味。
越到後面的章節,越覺得這本書其實並沒有什麼高見、沒有什麼深度的內容。因此,我似乎漸漸也學會,把認為無關緊要的章節,盡量快速地掃瞄過去(這對很多人來說是「一片蛋糕」(a piece of cake) 般地簡單,但對我來說,實際上頗有困難)。
這本書的內容,可以這樣總結(就像這本書自己提到的):
企業要在新經濟致勝的秘訣,就在於了解「新消費者購買偏好和動機」的這種敏銳能力。企業在提供產品或服務時,要考量到能替新消費者節省時間、減少注意力,還要能滿足新消費者追求信實感的渴望。
我覺得這其實是一種多方面觀察後的「淺」(shallow) 結論。即使作者在書中各處,似乎想用各種方式來佐證這項觀察,但那些論證感覺起來都不是很有深度,甚至有些斷章取義。因而,雖然書中提到的「authenticity」曾引發我的一些感觸,但接下來的章節,卻令人越來越覺得老套且乏味。
星期五, 3月 24, 2006
不矛盾的衝突
回鍋做 post doctor,參加實驗室多次 meetings 後,忽然有些感想。
項老師最近常說,他希望做「可以用、合用、好用」的真正系統,而不僅是「花拳繡腿」的玩具系統 (toy system)。此外,他也希望在系統裡,整合研究的成果,因為「研究」與「好用的系統」彼此應該是不矛盾(甚至相輔相成)的。
那麼,為什麼實驗室一直「做不出」或者「做不好」這樣的系統呢?
時機不夠成熟,當然是一項很重要的原因。然而,任何引用新研究成果的系統,在「實用、好用」前,面對的必然都是一大片待開拓的蠻荒地。因此,單純地把責任推給時機,似乎不是很合適。
我的感想是,研究與開發雖然在「最終結果」上彼此並不矛盾,但在「過程」中,卻是彼此衝突的。研究要留意的是如何發現處女地與其相關問題,如何把複雜的現實,從有趣的面向簡化出通用、簡單、合理的模型;但開發卻是「貨真價實」的開拓,需要顧及現實的可能性與各類成本,需要顧及終端使用者的需求與使用習慣。
換句話說,或許「研究」是科學性質導向的,而「開發」卻是工程性質優先。軟體工程師在做決策時,必須受許多複雜因素的限制,包括時間、成本、系統效能、可靠性、安全性、使用者需求等。軟體開發者甚至必須在開發早期,就得從繁多「彼此經常有衝突」、「可能具有潛力」的開發工具中,決定那些是系統所必須呢。
項老師最近常說,他希望做「可以用、合用、好用」的真正系統,而不僅是「花拳繡腿」的玩具系統 (toy system)。此外,他也希望在系統裡,整合研究的成果,因為「研究」與「好用的系統」彼此應該是不矛盾(甚至相輔相成)的。
那麼,為什麼實驗室一直「做不出」或者「做不好」這樣的系統呢?
時機不夠成熟,當然是一項很重要的原因。然而,任何引用新研究成果的系統,在「實用、好用」前,面對的必然都是一大片待開拓的蠻荒地。因此,單純地把責任推給時機,似乎不是很合適。
我的感想是,研究與開發雖然在「最終結果」上彼此並不矛盾,但在「過程」中,卻是彼此衝突的。研究要留意的是如何發現處女地與其相關問題,如何把複雜的現實,從有趣的面向簡化出通用、簡單、合理的模型;但開發卻是「貨真價實」的開拓,需要顧及現實的可能性與各類成本,需要顧及終端使用者的需求與使用習慣。
換句話說,或許「研究」是科學性質導向的,而「開發」卻是工程性質優先。軟體工程師在做決策時,必須受許多複雜因素的限制,包括時間、成本、系統效能、可靠性、安全性、使用者需求等。軟體開發者甚至必須在開發早期,就得從繁多「彼此經常有衝突」、「可能具有潛力」的開發工具中,決定那些是系統所必須呢。
星期二, 3月 21, 2006
消費購物的信實感
最近在「工作」上似乎莫名其妙地忙碌。還好,工作的自由性讓我還能抽空來看些書籍。
自己看書的速度頗慢,看的又通常是已經在書櫃上擺了好些時日的書,因此就算是閱讀後有些感想,也只能算是「風潮過後的省思」。但即使如此,能夠抽出一些時間來閱讀,總也覺得是種幸福。
最近看的,是「新消費者心理學」這本書。這本書出版已經三年多了,內容主要是在強調,有別於傳統的消費者,現今的「新消費者」由於生活日漸優裕,購物從重視「便利性」漸漸轉到強調「真實性」(authenticity)。
我還沒有看完這本書。但看了前面的一些章節,就被「authenticity」這個詞彙所吸引。作者說,新消費者為了「authenticity」,有時會大老遠地開車去買自己急著想要的東西。他舉的例子,是一位發明家 James Dyson,他就為了想要取得自認為最純的橄欖油,寧可開一長段路去購買。
大老遠跑去買東西,有什麼不對嗎?這個年頭,「怪人」不是很多嗎?
這例子能引發我的興趣,其實是因為它讓我想起,前些日子太太為了想買一罐「應該沒有添加人工調味料」的純蜂蜜,還特別抽空開車到松山的某個商店去購買。我想,許多時候,一本書之所以「好」,或許就是因為書中的一些說明或舉例,能夠讓讀者引發各類程度不一的共鳴吧。
中譯本將「authenticity」翻譯為「真實性」,但我看過內容後,總覺得這個翻譯很容易讓人產生混淆(例如,會以為是「reality」)。其實,原書中也有提到,authenticity 在字典裡的意思是:「純正 (genuine)、確實、可靠、真實、實在、原創且有好評」。因此,我覺得翻譯為「信實感」似乎稍微好些。然而,自己的文筆本就普通,也沒有什麼翻譯的經驗,因而究竟該如何翻譯,才能保有 authenticity 的味道,對我而言也是很困難的一件事啊。
後記:我後來覺得,翻譯為「原味感」、「原真感」、「信實感」、甚至玩文字遊戲,翻譯為「實真性」,似乎都各強調出 authenticity 的某些面向。然而,問題依然存在:到底怎麼翻譯,才能更傳神呢?
自己看書的速度頗慢,看的又通常是已經在書櫃上擺了好些時日的書,因此就算是閱讀後有些感想,也只能算是「風潮過後的省思」。但即使如此,能夠抽出一些時間來閱讀,總也覺得是種幸福。
最近看的,是「新消費者心理學」這本書。這本書出版已經三年多了,內容主要是在強調,有別於傳統的消費者,現今的「新消費者」由於生活日漸優裕,購物從重視「便利性」漸漸轉到強調「真實性」(authenticity)。
我還沒有看完這本書。但看了前面的一些章節,就被「authenticity」這個詞彙所吸引。作者說,新消費者為了「authenticity」,有時會大老遠地開車去買自己急著想要的東西。他舉的例子,是一位發明家 James Dyson,他就為了想要取得自認為最純的橄欖油,寧可開一長段路去購買。
大老遠跑去買東西,有什麼不對嗎?這個年頭,「怪人」不是很多嗎?
這例子能引發我的興趣,其實是因為它讓我想起,前些日子太太為了想買一罐「應該沒有添加人工調味料」的純蜂蜜,還特別抽空開車到松山的某個商店去購買。我想,許多時候,一本書之所以「好」,或許就是因為書中的一些說明或舉例,能夠讓讀者引發各類程度不一的共鳴吧。
中譯本將「authenticity」翻譯為「真實性」,但我看過內容後,總覺得這個翻譯很容易讓人產生混淆(例如,會以為是「reality」)。其實,原書中也有提到,authenticity 在字典裡的意思是:「純正 (genuine)、確實、可靠、真實、實在、原創且有好評」。因此,我覺得翻譯為「信實感」似乎稍微好些。然而,自己的文筆本就普通,也沒有什麼翻譯的經驗,因而究竟該如何翻譯,才能保有 authenticity 的味道,對我而言也是很困難的一件事啊。
後記:我後來覺得,翻譯為「原味感」、「原真感」、「信實感」、甚至玩文字遊戲,翻譯為「實真性」,似乎都各強調出 authenticity 的某些面向。然而,問題依然存在:到底怎麼翻譯,才能更傳神呢?
星期六, 3月 18, 2006
行百里路半九十
這個星期的實驗室 meeting,項老師又「發飆」了。
這次的 meeting 內容,主要是兩位碩士班的學弟,報告碩士論文的內容。到底出了什麼問題,又讓項老師「不滿意」呢?
原因其實一直都沒變:老師認為 Presentation 就像在說故事,必須有連貫性,必須「make people understand what you are saying」。一般同學的報告,多半徒具形式,但動機不明、定義不清、想講的東西又太多太雜(多半是畫蛇添足)。同學報告時,老師若神智還清醒,聽過幾頁後就會開始因「看不懂、聽不懂」而質問投影片上的內容「到底是指什麼」。而現在一般的學生,很少受過嚴謹的訓練,因而多半無法「真的了解」自己在說些什麼。於是,老師就會因「受不了」而開罵了。
項老師很少循循善誘地教導學生。因而,要從老師身上學到東西,除了自己要很認真、多觀察、多思考之外,就是在 meeting 裡聽老師訓話了。我自己倒是覺得,除了被罵的人因為「身在其中」而常感挫折外,聽這些訓話通常都頗有收穫,值得反覆咀嚼。
這個星期,老師在訓話中,提到「行百里路半九十」,並且說,很多人都有這樣的毛病。他還特別提到,我的博士論文研究,其實做得很不錯,但缺點就是「沒有(好好)做完」。
我其實也了解,自己的博士論文,當初在收尾時,確實是有些草率的。事實上,多年後,我現在繼續寫的論文與檢索雛型,就是把博士論文的內容「繼續做完」(嚴格地說,光這兩項也還算是沒有做完,但總是「比較完整」了)。只是,當初如果真的要「好好收尾、好好做完」,那我或許得多待個三五年,才能夠畢業呢。
「行百里路半九十」語出《戰國策》,意思是說, 要走一百里路的人,把走了九十里只當走了一半,此言末段路之艱難。最近 prototype 接近尾聲,要進行交接,才發現連 prototype 的傳承,要做好也當真不是一件容易事。就是因為好的收尾是如此地困難,也難怪大多數的人都會為了順利畢業,而草草收尾了。
這次的 meeting 內容,主要是兩位碩士班的學弟,報告碩士論文的內容。到底出了什麼問題,又讓項老師「不滿意」呢?
原因其實一直都沒變:老師認為 Presentation 就像在說故事,必須有連貫性,必須「make people understand what you are saying」。一般同學的報告,多半徒具形式,但動機不明、定義不清、想講的東西又太多太雜(多半是畫蛇添足)。同學報告時,老師若神智還清醒,聽過幾頁後就會開始因「看不懂、聽不懂」而質問投影片上的內容「到底是指什麼」。而現在一般的學生,很少受過嚴謹的訓練,因而多半無法「真的了解」自己在說些什麼。於是,老師就會因「受不了」而開罵了。
項老師很少循循善誘地教導學生。因而,要從老師身上學到東西,除了自己要很認真、多觀察、多思考之外,就是在 meeting 裡聽老師訓話了。我自己倒是覺得,除了被罵的人因為「身在其中」而常感挫折外,聽這些訓話通常都頗有收穫,值得反覆咀嚼。
這個星期,老師在訓話中,提到「行百里路半九十」,並且說,很多人都有這樣的毛病。他還特別提到,我的博士論文研究,其實做得很不錯,但缺點就是「沒有(好好)做完」。
我其實也了解,自己的博士論文,當初在收尾時,確實是有些草率的。事實上,多年後,我現在繼續寫的論文與檢索雛型,就是把博士論文的內容「繼續做完」(嚴格地說,光這兩項也還算是沒有做完,但總是「比較完整」了)。只是,當初如果真的要「好好收尾、好好做完」,那我或許得多待個三五年,才能夠畢業呢。
「行百里路半九十」語出《戰國策》,意思是說, 要走一百里路的人,把走了九十里只當走了一半,此言末段路之艱難。最近 prototype 接近尾聲,要進行交接,才發現連 prototype 的傳承,要做好也當真不是一件容易事。就是因為好的收尾是如此地困難,也難怪大多數的人都會為了順利畢業,而草草收尾了。
星期二, 3月 14, 2006
計算 pi 的小程式
多年以前,曾經對如何用電腦計算 π 的小數展開值感到興趣。
例如,要如何算出 π,精確到小數點後 1000 位的值呢?課堂上,似乎只知道可以運用數值方法(例如牛頓法),或者 π 的無窮級數展開式(Wikipedia 關於 π 的詞條,有列出數十個這樣的展開式)來計算。
Wiki 雖然有列出數學式,但很可惜沒有相對應的程式碼,因此總覺得有些遺憾。前些時日,在這裡找到一份 Tcl 寫的程式碼,可以計算出 π 的前 2400 個小數位數。
將程式碼轉為 PHP script 如下:
頗難想像,計算 π 到 2400 位小數,竟然只需要如此簡短的程式碼。根據網頁上的說明,這份程式碼是依據 Stanley Rabinowitz 與 Stan Wagon 在 1995 年的論文寫成的,背後用到的數學式子是 π 的連分數展開式:
我花了一些時間,嘗試了解程式是如何運用這個連分數展開式,來精確地計算出 π 的小數位數。可惜,直到現在,這份嘗試還是失敗的。或許,原始的論文有說明如何用程式實作;或許,我就是缺乏這樣的能力,能從數學展開式裡,直觀地看出如何漂亮地實作。
然而,有程式的原始碼與背後的數學式,可以跑出結果、程式碼也很簡短,但卻看不懂程式背後的演算法,說來是不是也有些諷刺呢?這是不是也暗示,程式如果失去了註解說明、失去了解讀的指引,那麼想要直接從原始碼來了解演算法,或許也還是一項艱困的事情?
例如,要如何算出 π,精確到小數點後 1000 位的值呢?課堂上,似乎只知道可以運用數值方法(例如牛頓法),或者 π 的無窮級數展開式(Wikipedia 關於 π 的詞條,有列出數十個這樣的展開式)來計算。
Wiki 雖然有列出數學式,但很可惜沒有相對應的程式碼,因此總覺得有些遺憾。前些時日,在這裡找到一份 Tcl 寫的程式碼,可以計算出 π 的前 2400 個小數位數。
將程式碼轉為 PHP script 如下:
<?php
$digits = 2400;
$size = (int) ($digits * 14 / 4);
$e = 0;
for ($b=0; $b<=$size; $b++) {
$f[$b] = 2000;
}
for ($c=$size; $c>0; $c-=14) {
$d = 0;
for ($b=$c; $b>0; $b--) {
$g = 2 * $b - 1;
$d = ($d * $b) + ($f[$b] * 10000);
$f[$b] = ($d % $g);
$d = (int)($d / $g);
}
printf("%04d", $e + $d / 10000);
$e = ($d % 10000);
}
?>
頗難想像,計算 π 到 2400 位小數,竟然只需要如此簡短的程式碼。根據網頁上的說明,這份程式碼是依據 Stanley Rabinowitz 與 Stan Wagon 在 1995 年的論文寫成的,背後用到的數學式子是 π 的連分數展開式:
π = 2 + 1/3( 2 + 2/5( 2 + 3/7( ... ( 2 + k/(2k+1)(...)))))
然而,有程式的原始碼與背後的數學式,可以跑出結果、程式碼也很簡短,但卻看不懂程式背後的演算法,說來是不是也有些諷刺呢?這是不是也暗示,程式如果失去了註解說明、失去了解讀的指引,那麼想要直接從原始碼來了解演算法,或許也還是一項艱困的事情?
星期四, 3月 09, 2006
想的比做的快
兩週前將論文的初稿拿給老師看,昨天取得回應。
令人高興的是,老師「竟然」看完了,還稍稍稱讚說內容頗有趣,寫得也不錯。但接下來說明缺點與該改進的地方,討論起來還是慘不忍睹。
老師說,我這文章前面寫得都不錯,但後來有些虎頭蛇尾的味道,而且「想的比做的快」,沒有好好想清楚主題與脈絡。
這些問題的根源,其實還是在於自己有「畫蛇添足」、「尾大不掉」的毛病。許多時候,覺得有些想法在心中悶得太久了,或者覺得有些觀點捨不得割愛,就會這裡講講理由,那兒說說感想,最後導致整篇文章失去簡潔與可讀性。
其他當然還有許多問題。例如有個式子的定義,我沒有把某些變量寫進數學式子的參數裡,導致老師在看的時候,必須猜測我這個定義「到底是什麼意思」。另外,文章裡也還是出現不少英文用字的錯誤,或者冗贅模糊的語句。
我說,老師以前從沒有「看超過三頁」呢。這回卻竟然真的看完了,著實令人感謝、感動。然而,取回初稿後,我卻覺得自己好似虛脫了般,竟然提不起勁來好好地修改這份初稿。
或許是因為最近忙著修改 prototype 程式,專心到忘記論文的「感覺」了。要好好地修改論文,應該需要好些時日,重新找回這份感覺吧。
只是,原先以為三月底就可以把論文與 prototype 結束,現在看來是過份樂觀了些。「收尾」竟是如此費心耗時的工作呢。依目前的狀況看,若五月底之前能夠收尾完成,或許就應該感到滿意了吧。
令人高興的是,老師「竟然」看完了,還稍稍稱讚說內容頗有趣,寫得也不錯。但接下來說明缺點與該改進的地方,討論起來還是慘不忍睹。
老師說,我這文章前面寫得都不錯,但後來有些虎頭蛇尾的味道,而且「想的比做的快」,沒有好好想清楚主題與脈絡。
這些問題的根源,其實還是在於自己有「畫蛇添足」、「尾大不掉」的毛病。許多時候,覺得有些想法在心中悶得太久了,或者覺得有些觀點捨不得割愛,就會這裡講講理由,那兒說說感想,最後導致整篇文章失去簡潔與可讀性。
其他當然還有許多問題。例如有個式子的定義,我沒有把某些變量寫進數學式子的參數裡,導致老師在看的時候,必須猜測我這個定義「到底是什麼意思」。另外,文章裡也還是出現不少英文用字的錯誤,或者冗贅模糊的語句。
我說,老師以前從沒有「看超過三頁」呢。這回卻竟然真的看完了,著實令人感謝、感動。然而,取回初稿後,我卻覺得自己好似虛脫了般,竟然提不起勁來好好地修改這份初稿。
或許是因為最近忙著修改 prototype 程式,專心到忘記論文的「感覺」了。要好好地修改論文,應該需要好些時日,重新找回這份感覺吧。
只是,原先以為三月底就可以把論文與 prototype 結束,現在看來是過份樂觀了些。「收尾」竟是如此費心耗時的工作呢。依目前的狀況看,若五月底之前能夠收尾完成,或許就應該感到滿意了吧。
星期二, 3月 07, 2006
三歲半的純真

即將三歲半的寶寶,這一陣子晚上會這樣問我。星期二,我說。
「那... 星期二過去呢?」星期三。「再過去呢?」星期四。「再來呢?」星期五。
「再來呢?」寶寶問。「妳自己說啊」,我回答。「星期六?」寶寶說。「對!」我回答。「耶,好棒,爸爸就可以陪我玩了」,她露出天真滿意的笑容。
小孩子長大、懂事變化的速度很快,許多令人回味無窮的動作或習慣,都只有在特定的時期才會出現。從三歲到三歲半,從分辨不出你我的差異,到了解週末可以在家裡陪她,小孩子時常在不經意間,透露出他們神奇的學習能力,讓父母們充滿著驚訝與感動。
我很珍惜這樣的對話,感受其中莫名的感動。有人說,在有了寶寶後,人才會真的變得成熟。或許,這是因為有了寶寶後,人才會更能體會、體諒他人,才會更懂得欣賞、讚嘆世間的美妙吧。
星期五, 3月 03, 2006
從患了流感談起
生病了,攪亂了原先看似規律的生活。
起初,只是覺得有些頭暈,在丹堤看報紙,看著看著就漸漸有昏睡的念頭。接下來半天,則是偶而會打個噴嚏。心想,大概是普通的感冒吧?吃吃成藥,休息個半天,應該就可以好轉。
可是狀況卻比想像來得糟。雖然服用了普拿疼,但全身開始痠軟無力,而且發起了高燒(約 38.5 度)。結果是,整整在家裡躺了三天,至今才勉強恢復行動力。
查了查相關書籍,應該是患了流行性感冒吧 --- 症狀比普通感冒來得快速且凶猛。矛盾的是,雖然早猜測是流感,期間卻幾度懷疑,「是不是得了其他更嚴重的病,否則怎麼會發燒那麼久都沒有退?」
人就是這樣,身陷棋局,才更明瞭「想的是一套」、「說的是一套」、「做的又是另一套」。要言行如一,著實不易;要言行始終如一,更是難上加難。嗯... 牽扯得似乎太遠了些,近來天氣多變,大家可要多注意身體健康啊。
這一週的紐約時報,有一篇「The Racial Divide, In Black and White」,大意是一部六集的紀錄片,藉由好萊塢的化妝術,將黑人扮成白人,白人妝似黑人,然後將一個黑人家庭與白人家庭「對調」,藉此觀察、突顯、討論膚色種族的問題。
有趣的是,在第一集,交換膚色體驗生活後,白人並不覺得膚色變黑後有太大的差異,但黑人卻覺得膚色換白後備受禮遇。白人認為黑人是在雞蛋裡挑骨頭,是「You see what you want to see」(只看見自己想看的),而黑人的回應是白人「You don't see what you don't want to see」(沒有看見自己不想看見的)。
真是精妙的應答啊。我還需要在腦子裡轉個幾下,才了解這兩句話的不同處呢。我想,在大多數時刻,我們都「只看見自己想看的」吧。然而,「沒有看見自己不想看見的」不也表示出,我們或許都是戴著有色的眼鏡在觀看、了解這個世界嗎?
起初,只是覺得有些頭暈,在丹堤看報紙,看著看著就漸漸有昏睡的念頭。接下來半天,則是偶而會打個噴嚏。心想,大概是普通的感冒吧?吃吃成藥,休息個半天,應該就可以好轉。
可是狀況卻比想像來得糟。雖然服用了普拿疼,但全身開始痠軟無力,而且發起了高燒(約 38.5 度)。結果是,整整在家裡躺了三天,至今才勉強恢復行動力。
查了查相關書籍,應該是患了流行性感冒吧 --- 症狀比普通感冒來得快速且凶猛。矛盾的是,雖然早猜測是流感,期間卻幾度懷疑,「是不是得了其他更嚴重的病,否則怎麼會發燒那麼久都沒有退?」
人就是這樣,身陷棋局,才更明瞭「想的是一套」、「說的是一套」、「做的又是另一套」。要言行如一,著實不易;要言行始終如一,更是難上加難。嗯... 牽扯得似乎太遠了些,近來天氣多變,大家可要多注意身體健康啊。
這一週的紐約時報,有一篇「The Racial Divide, In Black and White」,大意是一部六集的紀錄片,藉由好萊塢的化妝術,將黑人扮成白人,白人妝似黑人,然後將一個黑人家庭與白人家庭「對調」,藉此觀察、突顯、討論膚色種族的問題。
有趣的是,在第一集,交換膚色體驗生活後,白人並不覺得膚色變黑後有太大的差異,但黑人卻覺得膚色換白後備受禮遇。白人認為黑人是在雞蛋裡挑骨頭,是「You see what you want to see」(只看見自己想看的),而黑人的回應是白人「You don't see what you don't want to see」(沒有看見自己不想看見的)。
真是精妙的應答啊。我還需要在腦子裡轉個幾下,才了解這兩句話的不同處呢。我想,在大多數時刻,我們都「只看見自己想看的」吧。然而,「沒有看見自己不想看見的」不也表示出,我們或許都是戴著有色的眼鏡在觀看、了解這個世界嗎?
星期二, 2月 28, 2006
來自史料的想像
在報紙上看到一篇「來自史料的想像」。
文章內容,提到台灣歷史的研究,因為政治立場而限制了歷史視野,眼界無從開展,想像無從飛揚。作者林載爵認為,目的性的解釋,忽略了歷史演進中,最有趣的幾個元素:流動、變異、交融、與混雜的多樣性。
他也認為,史料的閱讀,是當今台灣歷史與文化研究最大的弱點。並起提及台灣歷史史料:台灣文獻叢刊、台灣研究資料彙編、明清內閣大庫檔、還有對岸(可能是為了統戰吧)所出版的「台灣文獻匯刊」 --- 咦?這些不就是實驗室想要收集、提供檢索、並據以研究發展「歷史資訊學」的嗎?
由此看來,古文書的數位化、檢索、研究,雖然對學資訊技術的人來說,沒有流行科技的風光,但其實應該也是屬於「基礎工程」的。但是要如何更上一層樓,利用資訊科技來突破「文件檢索」的範疇?我猜想暗示應該就在於那些「流動、變異、交融、多樣性」等等有趣的元素裡。
說來也怪。生長在台灣,卻對台灣的歷史幾乎完全不了解、對台灣各地的風光,也是少有接觸。雖然還是覺得,到歐美日等先進國家旅遊,休閒的品質比較好,但其實應該多找機會,欣賞台灣的在地美。
文章內容,提到台灣歷史的研究,因為政治立場而限制了歷史視野,眼界無從開展,想像無從飛揚。作者林載爵認為,目的性的解釋,忽略了歷史演進中,最有趣的幾個元素:流動、變異、交融、與混雜的多樣性。
他也認為,史料的閱讀,是當今台灣歷史與文化研究最大的弱點。並起提及台灣歷史史料:台灣文獻叢刊、台灣研究資料彙編、明清內閣大庫檔、還有對岸(可能是為了統戰吧)所出版的「台灣文獻匯刊」 --- 咦?這些不就是實驗室想要收集、提供檢索、並據以研究發展「歷史資訊學」的嗎?
由此看來,古文書的數位化、檢索、研究,雖然對學資訊技術的人來說,沒有流行科技的風光,但其實應該也是屬於「基礎工程」的。但是要如何更上一層樓,利用資訊科技來突破「文件檢索」的範疇?我猜想暗示應該就在於那些「流動、變異、交融、多樣性」等等有趣的元素裡。
說來也怪。生長在台灣,卻對台灣的歷史幾乎完全不了解、對台灣各地的風光,也是少有接觸。雖然還是覺得,到歐美日等先進國家旅遊,休閒的品質比較好,但其實應該多找機會,欣賞台灣的在地美。
星期六, 2月 25, 2006
交接與傳承
最近每天都在忙碌地修改程式、準備投影片,卻看不到系統有多大的改進。
怎麼會這樣?我想,是因為自己並不是真的了解體會,「收尾」的困難處。此外,因為我並不喜歡虎頭蛇尾的感覺,因此總想把「整件事情」做到比較能令自己滿意的地步。
很早以前,就已經打算把 prototype 在適當的時機傳承給其他人;半個月前,甚至已經找到相關的人力(就是實驗室的學弟妹啦)。然而,系統交接與傳承,如果只是把手頭的程式打個包,簡單地寫些文件,通常下場都是草草收尾,承接的人怨聲載道,恨不得重新開發一個系統。
系統的傳承中,我覺得應該包含了「溝通」。要傳交出去的人,應該讓承接的人,了解到他們想了解的系統背景、模型、架構、設計、與實作。以實驗室的例子來說,這些了解,甚至應該包含「當初為什麼要採取這樣的作法、從中間學到了什麼教訓」等等。
溝通可不是一件容易事 --- 至少,我一直都不擅長溝通。要充分溝通,除了彼此都需要投入許多時間與精力,他們之間更需要有相當的互信與尊重。不過,或許是因為現代人太追求快速,因此典型的交接,才會變成「打包」、「寫些文件交代程式各做些什麼」吧。
另一方面,在工作上「人員的流動頻繁」是項現實。我想,「流程標準化」之所以重要的原因之一,或許就是因為它有這樣的優點:傳與承、交與接的兩方,都對這項標準有者相當程度的共識,因而能夠有效降低交接傳承的成本。
怎麼會這樣?我想,是因為自己並不是真的了解體會,「收尾」的困難處。此外,因為我並不喜歡虎頭蛇尾的感覺,因此總想把「整件事情」做到比較能令自己滿意的地步。
很早以前,就已經打算把 prototype 在適當的時機傳承給其他人;半個月前,甚至已經找到相關的人力(就是實驗室的學弟妹啦)。然而,系統交接與傳承,如果只是把手頭的程式打個包,簡單地寫些文件,通常下場都是草草收尾,承接的人怨聲載道,恨不得重新開發一個系統。
系統的傳承中,我覺得應該包含了「溝通」。要傳交出去的人,應該讓承接的人,了解到他們想了解的系統背景、模型、架構、設計、與實作。以實驗室的例子來說,這些了解,甚至應該包含「當初為什麼要採取這樣的作法、從中間學到了什麼教訓」等等。
溝通可不是一件容易事 --- 至少,我一直都不擅長溝通。要充分溝通,除了彼此都需要投入許多時間與精力,他們之間更需要有相當的互信與尊重。不過,或許是因為現代人太追求快速,因此典型的交接,才會變成「打包」、「寫些文件交代程式各做些什麼」吧。
另一方面,在工作上「人員的流動頻繁」是項現實。我想,「流程標準化」之所以重要的原因之一,或許就是因為它有這樣的優點:傳與承、交與接的兩方,都對這項標準有者相當程度的共識,因而能夠有效降低交接傳承的成本。
星期二, 2月 21, 2006
寫程式與藝術創作
突然覺得,自己寫 THDL retrieval prototype 的心情,或許與藝術家創作類似。
這個 prototype 系統的輪廓,在模型上並沒有超越自己幾年前的論文。在實作上,我也只花了一個多月的時間,它就大致成形了。但是,算一算自己在寫程式所投入的時間,竟然已經有四個多月了 -- 那麼,為什麼我願意投入這麼多的時間,去修修補補、左看右瞧、反覆撥弄這個系統呢?
我想起去年年底,看紐約時報的一篇「Seeing through the distance」後,曾簡單地 post 一些感想。或許自己寫程式,就類似於創作一個藝術作品。藝術家心裡已經有了模型與底稿,花了許多時間雕塑出輪廓,但接下來的修飾,卻依然需要很長的時間,持續地思考、不斷地拿捏、無止盡地修正。
當然啦,把自己美化成一個藝術家,說來是相當冒昧、很大言不慚的。但是,我其實很難形容自己開發系統、設計模型、撰寫程式時,忽有所得的美妙心情。此外,也更難說明,為什麼自己每隔一陣子,就會想回顧從前的程式(作品)們,總想把許多「從前沒有寫好的程式」繼續完成。
有人說,生活即藝術。也或許,用藝術的角度來看待許多事情,可以讓人暫且遺忘工作賺錢的冷酷現實,讓人重新觀照、重視、欣賞天賦的潛能,讓人有找回自我的想望與動力。
這個 prototype 系統的輪廓,在模型上並沒有超越自己幾年前的論文。在實作上,我也只花了一個多月的時間,它就大致成形了。但是,算一算自己在寫程式所投入的時間,竟然已經有四個多月了 -- 那麼,為什麼我願意投入這麼多的時間,去修修補補、左看右瞧、反覆撥弄這個系統呢?
我想起去年年底,看紐約時報的一篇「Seeing through the distance」後,曾簡單地 post 一些感想。或許自己寫程式,就類似於創作一個藝術作品。藝術家心裡已經有了模型與底稿,花了許多時間雕塑出輪廓,但接下來的修飾,卻依然需要很長的時間,持續地思考、不斷地拿捏、無止盡地修正。
當然啦,把自己美化成一個藝術家,說來是相當冒昧、很大言不慚的。但是,我其實很難形容自己開發系統、設計模型、撰寫程式時,忽有所得的美妙心情。此外,也更難說明,為什麼自己每隔一陣子,就會想回顧從前的程式(作品)們,總想把許多「從前沒有寫好的程式」繼續完成。
有人說,生活即藝術。也或許,用藝術的角度來看待許多事情,可以讓人暫且遺忘工作賺錢的冷酷現實,讓人重新觀照、重視、欣賞天賦的潛能,讓人有找回自我的想望與動力。
星期六, 2月 18, 2006
「A+的秘訣」讀後感(下)
經過幾天的努力,終於把「A+的秘訣」也看完了。
不過,說老實話,我看到後來,覺得作者們有許多論點其實頗為牽強,因而感到有些乏味。許多受歡迎的管理類書籍,好像都有著些共通點,那就是 MPH 說的:「文章作得花團錦簇,其實是竹籃子打水」。文章天花亂墜,仔細省思後卻不過是一些單純的觀點或推論。
然而,這個年頭,若不極盡誇大能事,似乎就不能吸引廣大的讀者群。因此,有時我不禁懷疑,是不是由於資訊爆炸的威脅,讓讀者與作者的口味都變重了?
岔得太遠了,還是回到主題吧。就我的觀點,「A+的秘訣」這本書的內容,似乎主要是在說明多變社會下,消費者的消費價值觀確實也已經改變。而為了因應這些改變,企業必須從產品、價格、服務、可及性、與消費經驗等五個面向,來思考企業的競爭優勢。
雖說這類企管理論,多半是馬後放砲的歸納,但有時仔細想想,也似乎真能給自己一些啟發。想一想,這麼多年來,做生意的秘訣,似乎從來就不曾改變:「讓顧客滿意、他們才會再度上門」。但奇怪的是,很少企業能讓顧客完全滿意,不是嗎?
作者們認為,一個主要原因是,現今的消費者已經不再相信企業。傳統常見「訂高價再打折」的作法,讓消費者不再相信定價;對於特價商品,他們不但不領情,反而覺得平時價格根本就是剝削。就像 MPH 去年八月,在「令我作噁的icash」中所討論,總覺得特價品一定是把價錢攤加在其他地方,要不就是先加價再打折。
而現今的企業,或者因為商業環境複雜、或者因為競爭激烈,很容易失去自己該往哪裡走的方向、迷失自己該強調的商業特質。這本書的作者,就是經由各種產業實例,建議徬徨的企業們,在五項特質中,必須有一項傲視同儕、一項提供區隔、然後其他三項都保有業界的水準。
若要說這本書的觀點沒什麼「實際用途」,其實很簡單。只需如作者們自己所說:這些特質的標準,隨產業、地點、消費群特性等等而不同,就可以了。因此,這本書並非告訴大家「該怎麼做可以達到 A+」,而比較屬於「提供各種產業的成功典範、分析他們為什麼得到消費者信賴」的論述書籍。
前幾天,我走在校園裡,突然對這本書的立論背景(參考 讀後感(上)),產生了一些共鳴。是啊,現代人因為社會架構瓦解、個人時間壓縮、以及資訊與傳播科技興起,所以更希望能夠得到(家人、朋友、社會)關愛、了解、讚賞、與尊重。因而,應該會有許多公司,會藉著滿足這些人性需求,利用商業特質來區隔、取得消費市場吧。
不過,說老實話,我看到後來,覺得作者們有許多論點其實頗為牽強,因而感到有些乏味。許多受歡迎的管理類書籍,好像都有著些共通點,那就是 MPH 說的:「文章作得花團錦簇,其實是竹籃子打水」。文章天花亂墜,仔細省思後卻不過是一些單純的觀點或推論。
然而,這個年頭,若不極盡誇大能事,似乎就不能吸引廣大的讀者群。因此,有時我不禁懷疑,是不是由於資訊爆炸的威脅,讓讀者與作者的口味都變重了?
岔得太遠了,還是回到主題吧。就我的觀點,「A+的秘訣」這本書的內容,似乎主要是在說明多變社會下,消費者的消費價值觀確實也已經改變。而為了因應這些改變,企業必須從產品、價格、服務、可及性、與消費經驗等五個面向,來思考企業的競爭優勢。
雖說這類企管理論,多半是馬後放砲的歸納,但有時仔細想想,也似乎真能給自己一些啟發。想一想,這麼多年來,做生意的秘訣,似乎從來就不曾改變:「讓顧客滿意、他們才會再度上門」。但奇怪的是,很少企業能讓顧客完全滿意,不是嗎?
作者們認為,一個主要原因是,現今的消費者已經不再相信企業。傳統常見「訂高價再打折」的作法,讓消費者不再相信定價;對於特價商品,他們不但不領情,反而覺得平時價格根本就是剝削。就像 MPH 去年八月,在「令我作噁的icash」中所討論,總覺得特價品一定是把價錢攤加在其他地方,要不就是先加價再打折。
而現今的企業,或者因為商業環境複雜、或者因為競爭激烈,很容易失去自己該往哪裡走的方向、迷失自己該強調的商業特質。這本書的作者,就是經由各種產業實例,建議徬徨的企業們,在五項特質中,必須有一項傲視同儕、一項提供區隔、然後其他三項都保有業界的水準。
若要說這本書的觀點沒什麼「實際用途」,其實很簡單。只需如作者們自己所說:這些特質的標準,隨產業、地點、消費群特性等等而不同,就可以了。因此,這本書並非告訴大家「該怎麼做可以達到 A+」,而比較屬於「提供各種產業的成功典範、分析他們為什麼得到消費者信賴」的論述書籍。
前幾天,我走在校園裡,突然對這本書的立論背景(參考 讀後感(上)),產生了一些共鳴。是啊,現代人因為社會架構瓦解、個人時間壓縮、以及資訊與傳播科技興起,所以更希望能夠得到(家人、朋友、社會)關愛、了解、讚賞、與尊重。因而,應該會有許多公司,會藉著滿足這些人性需求,利用商業特質來區隔、取得消費市場吧。
星期三, 2月 15, 2006
「A+的秘訣」讀後感(上)
這幾天不管是在學校或家裡,事情都頗多,連寫寫網誌的時間都不夠。
不過,我覺得寫網誌有些像寫日記,不該拖太久、且需要有點恆心。因此,我還是強迫自己擠出一些時間,把最近看書的一些心得記一記。
最近在看一本擺在櫃上許久的書:「A+的秘訣」(The Myth of Excellence)。因為還沒有看完,所以只能抒發一下目前的感想。
大致上,這本書的立論背景是在於,現代人因為「社會架構的瓦解」、「個人時間的壓縮」、以及「資訊與傳播科技的興起」這三種轉變同時發生,促使消費者在交易時,看重的事物與以往有了不同。作者們強調,商機是來自於對人性、人性價值的關懷。
例如,在資訊爆炸的環境裡,消費者想要的,究竟是什麼?作者們認為,消費者要的,是清楚、簡單、明確和信任。他們需要值得信賴的人為其過濾資訊、簡化選擇(這讓我聯想起自己在另一個讀書心得:「選擇的弔詭」所提到,過多選擇所造成的困境)、並滿意自己的決定。
對我來說,一個有趣、且值得深入思考的主題是,作者所提到的五項商業特質:價格、產品、服務、可及性、以及消費經驗。作者認為,這五項特質最完美的組合,是一項特質得到五分(掌控市場)、一項得到四分(市場區隔)、另外三項則得到三分(達到可接受的業界水準)。但要注意的是,只要有任何一項特質達不到三分,整體成績就不及格。
用這五項特質來觀察、評量、了解當前那些公司為何成功,應該是相當有幫助的。我也問問自己:「之前所待的公司,為什麼無法取得成功?」、「它在這五項特質裡,各得了多少分?」
不出所料,它們的整體成績都是不及格。但若再深入思考一下,其實也可以感受到,要取得「及格」是多麼地困難。因此,我似乎也更能體會,一家公司或者企業的成功,是多麼得之不易了。
不過,我覺得寫網誌有些像寫日記,不該拖太久、且需要有點恆心。因此,我還是強迫自己擠出一些時間,把最近看書的一些心得記一記。
最近在看一本擺在櫃上許久的書:「A+的秘訣」(The Myth of Excellence)。因為還沒有看完,所以只能抒發一下目前的感想。
大致上,這本書的立論背景是在於,現代人因為「社會架構的瓦解」、「個人時間的壓縮」、以及「資訊與傳播科技的興起」這三種轉變同時發生,促使消費者在交易時,看重的事物與以往有了不同。作者們強調,商機是來自於對人性、人性價值的關懷。
例如,在資訊爆炸的環境裡,消費者想要的,究竟是什麼?作者們認為,消費者要的,是清楚、簡單、明確和信任。他們需要值得信賴的人為其過濾資訊、簡化選擇(這讓我聯想起自己在另一個讀書心得:「選擇的弔詭」所提到,過多選擇所造成的困境)、並滿意自己的決定。
對我來說,一個有趣、且值得深入思考的主題是,作者所提到的五項商業特質:價格、產品、服務、可及性、以及消費經驗。作者認為,這五項特質最完美的組合,是一項特質得到五分(掌控市場)、一項得到四分(市場區隔)、另外三項則得到三分(達到可接受的業界水準)。但要注意的是,只要有任何一項特質達不到三分,整體成績就不及格。
用這五項特質來觀察、評量、了解當前那些公司為何成功,應該是相當有幫助的。我也問問自己:「之前所待的公司,為什麼無法取得成功?」、「它在這五項特質裡,各得了多少分?」
不出所料,它們的整體成績都是不及格。但若再深入思考一下,其實也可以感受到,要取得「及格」是多麼地困難。因此,我似乎也更能體會,一家公司或者企業的成功,是多麼得之不易了。
星期六, 2月 11, 2006
修補程式的日子
這幾天都在忙著寫程式。
寫什麼程式?當然還是 THDL(Twiwan History Digital Library,台灣歷史數位圖書館)檢索系統的雛型。自從任務由 prototype 升級到 pre-β,日子就沒有一天悠閒過。
這也部分說明了,自己為什麼這一陣子都沒有什麼好內容可以 post 上來。並不是說,「寫程式」、「修改系統」就不會有什麼有趣的心得;而是說,寫程式經常可以讓人專注,進而不知不覺將時間耗盡(做不了別的事情)。
還好的是,已經有學弟妹們,要接下我的程式與系統了。因此,三月底之前,將這個 pre-β 系統交接出去,應該是有希望的。
而那篇「失散多年後,重新改寫的論文」,最近也接近尾聲,看起來也有機會在三月底前讓老師修改好。
我猜想,許多人為了取得博士學位,論文中都會割捨一些未能完成的想法、理論、系統、或研究。這兩件事(prototype 與改寫論文),也因為都像是在接續「數年前未完成的工作與緣分」,而讓我願意投入數個月的時間,盡全力去做好它們。
接下來呢?我是打算好好地休息(或者說,沒有特定目的地混日子吧)兩三個月。然後,就得努力找尋下一份「正式的工作」了。
寫什麼程式?當然還是 THDL(Twiwan History Digital Library,台灣歷史數位圖書館)檢索系統的雛型。自從任務由 prototype 升級到 pre-β,日子就沒有一天悠閒過。
這也部分說明了,自己為什麼這一陣子都沒有什麼好內容可以 post 上來。並不是說,「寫程式」、「修改系統」就不會有什麼有趣的心得;而是說,寫程式經常可以讓人專注,進而不知不覺將時間耗盡(做不了別的事情)。
還好的是,已經有學弟妹們,要接下我的程式與系統了。因此,三月底之前,將這個 pre-β 系統交接出去,應該是有希望的。
而那篇「失散多年後,重新改寫的論文」,最近也接近尾聲,看起來也有機會在三月底前讓老師修改好。
我猜想,許多人為了取得博士學位,論文中都會割捨一些未能完成的想法、理論、系統、或研究。這兩件事(prototype 與改寫論文),也因為都像是在接續「數年前未完成的工作與緣分」,而讓我願意投入數個月的時間,盡全力去做好它們。
接下來呢?我是打算好好地休息(或者說,沒有特定目的地混日子吧)兩三個月。然後,就得努力找尋下一份「正式的工作」了。
星期二, 2月 07, 2006
談古文書文件檢索:之六
咦!等一下,標題是不是打錯字了。原本是「談古契書資料處理」,怎麼變成了「談古文書文件檢索」?
喔,原來這一陣子從 prototype 升級到 pre-β,處理的文件,應頭頭的要求改成了「明清檔案」,也就是明清時期,與台灣相關的文獻資料。古契書當然也算是一種古文書啦。
至於「資料處理」轉變為「文件檢索」,則是因為近日慢慢釐清,項老師想探索研究的「歷史資訊學」(histinformatics),其基本必備的功能就是檢索。如此一來,做先期的資料處理、data purification,也可以說是為了文件檢索。
所以,看來寫序列短文,有時也像軟體開發,會慢慢演化 (evolve)的 :)
那麼,處理古契書和更具一般性的古文書,有什麼不同的地方嗎?
理論上是有的。因為,古契書在不同的時空背景,有它特定的格式。如果能夠善用這些特徵,應該能夠提供使用者更好用的檢索工具,甚至可以應用某些人工智能 (AI) 或資料採礦 (Data Mining) 的方法,找出一些有趣的東西。
當資料量增多,資料種類增加時,單純的全文檢索,通常是不夠的。想一想,如果不是有相當大的需求,Microsoft 為什麼要花那麼大的力氣,開發新的 desktop 搜尋系統 WinFS,利用各種文件(或稱作「可檢索物件」)的特性,來組織、搜尋與共用各式各樣資料與資訊呢?
另一方面,實務上要利用到各種文件(尤其是一般人很少研讀的「古文書」)的特徵與相異性,通常得費相當大的功夫。M$ 有錢有勢,實驗室可沒有這種本錢。因此,若沒有想清楚背後的檢索、採礦模型,弄出來的東西恐怕只能是「玩具」(toy system),很難「實用」或甚至「好用」。
本來這一回是想談談古文書檢索中,關於 Query Syntax 的一些經驗的。不過,在這兒光是發發牢騷,就已經寫了好幾段文字 :p 因此,就留待下回,再抒發這部分的感想吧。
喔,原來這一陣子從 prototype 升級到 pre-β,處理的文件,應頭頭的要求改成了「明清檔案」,也就是明清時期,與台灣相關的文獻資料。古契書當然也算是一種古文書啦。
至於「資料處理」轉變為「文件檢索」,則是因為近日慢慢釐清,項老師想探索研究的「歷史資訊學」(histinformatics),其基本必備的功能就是檢索。如此一來,做先期的資料處理、data purification,也可以說是為了文件檢索。
所以,看來寫序列短文,有時也像軟體開發,會慢慢演化 (evolve)的 :)
那麼,處理古契書和更具一般性的古文書,有什麼不同的地方嗎?
理論上是有的。因為,古契書在不同的時空背景,有它特定的格式。如果能夠善用這些特徵,應該能夠提供使用者更好用的檢索工具,甚至可以應用某些人工智能 (AI) 或資料採礦 (Data Mining) 的方法,找出一些有趣的東西。
當資料量增多,資料種類增加時,單純的全文檢索,通常是不夠的。想一想,如果不是有相當大的需求,Microsoft 為什麼要花那麼大的力氣,開發新的 desktop 搜尋系統 WinFS,利用各種文件(或稱作「可檢索物件」)的特性,來組織、搜尋與共用各式各樣資料與資訊呢?
另一方面,實務上要利用到各種文件(尤其是一般人很少研讀的「古文書」)的特徵與相異性,通常得費相當大的功夫。M$ 有錢有勢,實驗室可沒有這種本錢。因此,若沒有想清楚背後的檢索、採礦模型,弄出來的東西恐怕只能是「玩具」(toy system),很難「實用」或甚至「好用」。
本來這一回是想談談古文書檢索中,關於 Query Syntax 的一些經驗的。不過,在這兒光是發發牢騷,就已經寫了好幾段文字 :p 因此,就留待下回,再抒發這部分的感想吧。
星期五, 2月 03, 2006
「叫花李」的行銷策略
信箱裡,收到「音速忍者龜」轉寄來的許多有趣信件。
「音速忍者龜」是傅國長的學弟,有一陣子也常到實驗室來;但後來不知何故,就沒有再見面了。只有電郵信箱裡,還經常能收到他轉寄來的信件。也真感謝他,願意花時間來將有趣的內容,轉寄給認識的朋友。
這回收到的信件裡,有一篇叫做「『叫花李』的行銷策略」的短文。寫得輕鬆風趣、卻又隱含行銷策略運用的道理;但信件不知怎地被截斷了,只收到部分內容。上網查了一下,原來「學習電子報」曾經刊載過,網址在這兒。
這些日子,經常苦於自己的文學訓練、修養不足,寫不出像樣的句子與文章。因此,對於這篇短文的作者,我頗感佩服:他能夠流暢地設想出乞討這種極端的例子,用輕鬆詼諧的語調,深入淺出地介紹行銷的精髓(並加上許多現今流行的「藍海策略」、「差異化經營」、「注意力經濟」等用語),實在不容易呢。
「音速忍者龜」是傅國長的學弟,有一陣子也常到實驗室來;但後來不知何故,就沒有再見面了。只有電郵信箱裡,還經常能收到他轉寄來的信件。也真感謝他,願意花時間來將有趣的內容,轉寄給認識的朋友。
這回收到的信件裡,有一篇叫做「『叫花李』的行銷策略」的短文。寫得輕鬆風趣、卻又隱含行銷策略運用的道理;但信件不知怎地被截斷了,只收到部分內容。上網查了一下,原來「學習電子報」曾經刊載過,網址在這兒。
這些日子,經常苦於自己的文學訓練、修養不足,寫不出像樣的句子與文章。因此,對於這篇短文的作者,我頗感佩服:他能夠流暢地設想出乞討這種極端的例子,用輕鬆詼諧的語調,深入淺出地介紹行銷的精髓(並加上許多現今流行的「藍海策略」、「差異化經營」、「注意力經濟」等用語),實在不容易呢。
星期一, 1月 30, 2006
實務造就流程
這幾天看了一本幾年前買的書:「資訊革命了什麼?」
這本書的年代,應該還是在 Internet Bubble 的時期。大致上,作者是想強調,那些說「資訊萬能」、「新技術會終結報紙、媒體、中介者、公司與政府機構...」等等的論調,其實是很狹隘的直線式推論。
經過了泡沫的破滅,現在應該也沒有人會再說「資訊萬能」了吧。但是,在網路資訊當紅的時期,能夠提出異於主流的看法,並且加以論證(看了幾本書後,我發現這些作者都很會寫各式各樣的論述 --- 即使有時會覺得他們太囉唆)。
現在可以用比較平靜的心情,來看這本書。我覺得,自己最大的收穫,其實是來自於書中提到的「實務造就流程」(Practice Makes Process) 這個章節。作者們強調,流程對結合組織的各部門固然重要,可是終究要靠在組織工作的個人,來實現流程、並賦予流程意義。所謂實務,則是指為完成工作所進行的活動。
這類抽象的論述,在公司裡似乎常常可以聽到,感覺起來也沒什麼特別,那我的收穫在哪兒呢?
原來,要能夠合作,必須建立大家公認的詮釋架構。「每個人都有自己的想法,但觀念可以溝通」。而實務,就是建立順暢溝通的管道。例如,為什麼同樣的資訊,在不同的人身上,會產生相異的知識呢?從事的工作性質不同,所受的專業訓練有異,對資訊的反應就不一樣。是實務左右了如何消化知識。
所以,為什麼我總覺得系統設計與實作,在溝通上那麼辛苦呢?可能就是因為要溝通的人們,彼此並沒有相同、或者類似的實務經驗啊。「學習得到」(learn about) 與「學做、從做中學」(learn to be) 之間,差異竟是如此之大,以致於許多知識,只能乘著實務的翅膀來有效溝通呢。
也因此,我要將 prototype 或者 pre-β 轉交給學弟妹們,就不能只是強調理論與模型,而必須注意到實務的重要性。或許,必須讓承接的人員,經歷一些設計與實作上的磨練,才能夠經由「實務」,順利地溝通與移轉我在這部分的經驗與想法(知識)。
這本書的年代,應該還是在 Internet Bubble 的時期。大致上,作者是想強調,那些說「資訊萬能」、「新技術會終結報紙、媒體、中介者、公司與政府機構...」等等的論調,其實是很狹隘的直線式推論。
經過了泡沫的破滅,現在應該也沒有人會再說「資訊萬能」了吧。但是,在網路資訊當紅的時期,能夠提出異於主流的看法,並且加以論證(看了幾本書後,我發現這些作者都很會寫各式各樣的論述 --- 即使有時會覺得他們太囉唆)。
現在可以用比較平靜的心情,來看這本書。我覺得,自己最大的收穫,其實是來自於書中提到的「實務造就流程」(Practice Makes Process) 這個章節。作者們強調,流程對結合組織的各部門固然重要,可是終究要靠在組織工作的個人,來實現流程、並賦予流程意義。所謂實務,則是指為完成工作所進行的活動。
這類抽象的論述,在公司裡似乎常常可以聽到,感覺起來也沒什麼特別,那我的收穫在哪兒呢?
原來,要能夠合作,必須建立大家公認的詮釋架構。「每個人都有自己的想法,但觀念可以溝通」。而實務,就是建立順暢溝通的管道。例如,為什麼同樣的資訊,在不同的人身上,會產生相異的知識呢?從事的工作性質不同,所受的專業訓練有異,對資訊的反應就不一樣。是實務左右了如何消化知識。
所以,為什麼我總覺得系統設計與實作,在溝通上那麼辛苦呢?可能就是因為要溝通的人們,彼此並沒有相同、或者類似的實務經驗啊。「學習得到」(learn about) 與「學做、從做中學」(learn to be) 之間,差異竟是如此之大,以致於許多知識,只能乘著實務的翅膀來有效溝通呢。
也因此,我要將 prototype 或者 pre-β 轉交給學弟妹們,就不能只是強調理論與模型,而必須注意到實務的重要性。或許,必須讓承接的人員,經歷一些設計與實作上的磨練,才能夠經由「實務」,順利地溝通與移轉我在這部分的經驗與想法(知識)。
星期日, 1月 29, 2006
星期三, 1月 25, 2006
談古契書資料處理:之五
時間過得快,似乎也該繼續「古契書資料處理」的一些討論了。
原本在「之五」的討論裡,想談談檢索系統的。但是之前將全文檢索的資料庫,從 MySQL 轉到 M$SQL 的過程,遇到了許多不甚常見的問題(參考之前的 posts: MySQL 的全文搜尋效率、MySQL 到 SQL Server 的轉換、與 SQL Server 的全文檢索),因此就耽擱了。
將古籍數位化後,接下來就會想提供檢索系統。
然而,需要提供怎樣的檢索功能呢?一個很基本的要求,就是支援全文檢索。所謂「全文檢索」,就是系統對整篇文章(而不是只對某些特定的詞彙)都做索引,因此只要使用者輸入文章中出現的字詞,系統就能夠找到這篇文章。
但是,全文檢索在許多狀況下,似乎還不夠「好用」。許多詞彙(尤其是一般性用途的字詞)在大量的文章中都會出現,因此若僅僅輸入那些字詞當作 query string,系統就會「找到」一大堆文件,每個文件雖然都有出現指定的詞彙,但是卻不見得是使用者想找的。
這下子怎麼辦呢?
一般來說,有兩種方式或許可以改善檢索的有效性:一種是,對使用者提供合適的 query-refinement 建議;另外一種,則是對文件提供「分類」或「分群」的功能。有許多古籍資料有 metadata(詮釋文件的資料),因此可利用來提供 post-query classification 的功能。此外,clustering 也是一種常見的技術,通常是利用文件中的關鍵字,自動將文件分為數個群組。
我的 prototype 只考慮加上「相當有限」的 metadata,與一些(半自動化)特殊地名擷取的機制。但即使如此,整合起來,也不是「一片蛋糕」(a piece of cake) 般地容易。更何況,現在的 prototype 已經「升級」為 pre-β 了,要做的事情,可是排了很長的隊呢。
原本在「之五」的討論裡,想談談檢索系統的。但是之前將全文檢索的資料庫,從 MySQL 轉到 M$SQL 的過程,遇到了許多不甚常見的問題(參考之前的 posts: MySQL 的全文搜尋效率、MySQL 到 SQL Server 的轉換、與 SQL Server 的全文檢索),因此就耽擱了。
將古籍數位化後,接下來就會想提供檢索系統。
然而,需要提供怎樣的檢索功能呢?一個很基本的要求,就是支援全文檢索。所謂「全文檢索」,就是系統對整篇文章(而不是只對某些特定的詞彙)都做索引,因此只要使用者輸入文章中出現的字詞,系統就能夠找到這篇文章。
但是,全文檢索在許多狀況下,似乎還不夠「好用」。許多詞彙(尤其是一般性用途的字詞)在大量的文章中都會出現,因此若僅僅輸入那些字詞當作 query string,系統就會「找到」一大堆文件,每個文件雖然都有出現指定的詞彙,但是卻不見得是使用者想找的。
這下子怎麼辦呢?
一般來說,有兩種方式或許可以改善檢索的有效性:一種是,對使用者提供合適的 query-refinement 建議;另外一種,則是對文件提供「分類」或「分群」的功能。有許多古籍資料有 metadata(詮釋文件的資料),因此可利用來提供 post-query classification 的功能。此外,clustering 也是一種常見的技術,通常是利用文件中的關鍵字,自動將文件分為數個群組。
我的 prototype 只考慮加上「相當有限」的 metadata,與一些(半自動化)特殊地名擷取的機制。但即使如此,整合起來,也不是「一片蛋糕」(a piece of cake) 般地容易。更何況,現在的 prototype 已經「升級」為 pre-β 了,要做的事情,可是排了很長的隊呢。
星期日, 1月 22, 2006
工作與日常生活間的平衡
前兩天和貓談了談,他說我也是屬於「工作狂」的類型。
我不知道如何判斷一個人是否是工作狂。從某個角度看,我是有這樣的傾向。雖然,我幾乎都是回家吃晚餐(或許,有許多工作人士,會很羨慕吧);但是,我經常在家裡、週末、甚至夜半,想起一些「工作上或許可以改進的地方」,而在電腦前敲敲打打、修修改改。
或許,就是對於許多事情「放不下」的關係,所以會顯現出「工作狂熱」的現象吧。但是,我總不願把工作就只當成「為了賺錢」而工作,總希望還能得到些「成就感」、還能對其他人有一些貢獻。
有時,我會對無法陪寶寶玩上一段時間而感到愧疚。她可是真心誠意地邀請我和她一起玩「茶犬」的呢(她現在擁有五隻麥當勞茶犬、五隻扭蛋得來的小茶犬、還有一隻更小的麥茶犬 --- 小傢伙說是另外一隻的弟弟)。可是,陪著她玩著類似辦家家酒的茶犬遊戲,約莫二十分鐘後,我就感到坐立難安(覺得做工作相關的事情似乎更重要些)。
有時,當太太忙碌,而自己有些空閒時,也會感到有些歉意,而想幫忙做些家事。但是,自己有空的時間通常很短(尤其是,需要做些工作相關事情的時候)、處理家事的技巧也差。更糟的是,做了一陣子後,經常容易感到疲累。
有時,則是對父母、兄弟姊妹、還有其他家人感到虧欠。自己似乎總是顯得「沒有時間好好地陪伴家人」。是真的因為工作的關係,還是自己一直下意識地在逃避呢?
因此,歲月經常是在愧疚中,日復一日地度過。我不曉得,是否大家都能在工作與日常生活間,取得良好的平衡點;但我確實希望,自己能夠做好份內的工作(表現得突出些,當然更好,但這樣或許就算是奢望吧)、並陪伴家人度過溫馨的每一天。
我不知道如何判斷一個人是否是工作狂。從某個角度看,我是有這樣的傾向。雖然,我幾乎都是回家吃晚餐(或許,有許多工作人士,會很羨慕吧);但是,我經常在家裡、週末、甚至夜半,想起一些「工作上或許可以改進的地方」,而在電腦前敲敲打打、修修改改。
或許,就是對於許多事情「放不下」的關係,所以會顯現出「工作狂熱」的現象吧。但是,我總不願把工作就只當成「為了賺錢」而工作,總希望還能得到些「成就感」、還能對其他人有一些貢獻。
有時,我會對無法陪寶寶玩上一段時間而感到愧疚。她可是真心誠意地邀請我和她一起玩「茶犬」的呢(她現在擁有五隻麥當勞茶犬、五隻扭蛋得來的小茶犬、還有一隻更小的麥茶犬 --- 小傢伙說是另外一隻的弟弟)。可是,陪著她玩著類似辦家家酒的茶犬遊戲,約莫二十分鐘後,我就感到坐立難安(覺得做工作相關的事情似乎更重要些)。
有時,當太太忙碌,而自己有些空閒時,也會感到有些歉意,而想幫忙做些家事。但是,自己有空的時間通常很短(尤其是,需要做些工作相關事情的時候)、處理家事的技巧也差。更糟的是,做了一陣子後,經常容易感到疲累。
有時,則是對父母、兄弟姊妹、還有其他家人感到虧欠。自己似乎總是顯得「沒有時間好好地陪伴家人」。是真的因為工作的關係,還是自己一直下意識地在逃避呢?
因此,歲月經常是在愧疚中,日復一日地度過。我不曉得,是否大家都能在工作與日常生活間,取得良好的平衡點;但我確實希望,自己能夠做好份內的工作(表現得突出些,當然更好,但這樣或許就算是奢望吧)、並陪伴家人度過溫馨的每一天。
星期五, 1月 20, 2006
prototype 與 pre-β 的差異
這幾天頗為忙碌,但卻總覺得在實質上沒有取得什麼進展。
上週五實驗室 meeting。項老師說,希望以我目前的 prototype 為基礎,弄個「系統」讓歷史系的一些人試用看看。聽到這樣的「需求」,我的臉一下子就綠了。哎,prototype 與 pre-β 差異是「很大」的耶!
對我而言,prototype 的幾項主要功能是:提供團隊成員研究討論的基底、素材、與系統概貌,並在原型開發中,辨識出系統開發前期可能產生的風險。pre-β 版本,目的則在於提供真實的使用者試用,取得良好的回饋,並提供對正式系統的建議。要給他人試用,需要考慮相當多不同的層面。例如,安全性的控管,要做到什麼程度?是否要建立個人的 profiles?連線是否採取 session-oriented 的機制?系統可以提供多少人同時上線?還有,資料的品質,必須處理到什麼地步?
因而,這幾天幾乎又都是在重複做資料處理、資料轉換的工作。要給真實的使用者試用,資料就必須有相當的品質,不能含有「難以忍受」的錯誤。之前不是花了很多錢,建立了 metadata 來詮釋文件嗎?應用這些人工處理過的 metadata,應該比自動擷取的方法,有較好的資訊的品質吧。
但事情沒有這麼簡單。Metadata 既然是人工處理,就會有人為的疏失。舉個例子好了,「光緒十一年」竟然可以對應到西元 1866、1885、1886 年(1866 年應該是錯誤的)?還有,依日期欄位的規定,資料應該至少有「年份」的資訊,但為什麼可以看到「七日」、「五月二十三日」、甚至「署福建巡撫閩浙總督崔應階」這樣的資料呢?
在資訊處理的流程中,上游的資訊一旦品質不夠好,下游的處理就會事倍而功半。這時,就彰顯出傳統的 Waterfall(瀑布式)開發流程的缺點了。在瀑布式開發流程裡,每個開發階段都是明確的,上游必須經過嚴格的品質控管,才能將資料(或程式)轉給下一步的開發者。因此,下游不應該收到品質不夠好的東西。但實務上,我們也都知道,要保證上游資訊的品質,成本非常高;下游的處理者,就是會收到品質不夠好的半成品。
那麼,我們該怎麼辦呢?把責任推給撰寫 metadata 的人員,責怪她們不夠用心,並且等到她們將資料都修改好,才進行下一個開發步驟;還是把不夠好的系統丟給使用者,讓使用者自己去過濾篩選資料,並說明「自己只是中介者、只負責程式開發」呢?
因為兩邊都無法接受,我就只能在中間階段的處理中,盡量加上錯誤篩檢的機制。這樣一來,當然就會消耗許多寶貴的時間了。
我想,在方向上,項老師是對的:系統終究必須讓 real users 測試。然而,沒有經過良好的規劃,以為 prototype 與 pre-β「感覺起來差不多」,其實是很大的失誤。系統開發人員,還真是「苦命」啊!
而這下子,自己事情也變多了。至少,已經超過我原先的預期了(我原本只想做個 prototype,之後就由其他人接手)。我必須花時間思考一下,自己想將這個 pre-β 版本定位在何處。即使這個版本的使用說明是由別人負責的,即使這個版本只需做非常陽春的安全控管、連線控制、profile 管理、使用者介面調整、效能調校、或者系統品管與程式除錯,要考慮的事情都比單純的 prototype 複雜許多。
上週五實驗室 meeting。項老師說,希望以我目前的 prototype 為基礎,弄個「系統」讓歷史系的一些人試用看看。聽到這樣的「需求」,我的臉一下子就綠了。哎,prototype 與 pre-β 差異是「很大」的耶!
對我而言,prototype 的幾項主要功能是:提供團隊成員研究討論的基底、素材、與系統概貌,並在原型開發中,辨識出系統開發前期可能產生的風險。pre-β 版本,目的則在於提供真實的使用者試用,取得良好的回饋,並提供對正式系統的建議。要給他人試用,需要考慮相當多不同的層面。例如,安全性的控管,要做到什麼程度?是否要建立個人的 profiles?連線是否採取 session-oriented 的機制?系統可以提供多少人同時上線?還有,資料的品質,必須處理到什麼地步?
因而,這幾天幾乎又都是在重複做資料處理、資料轉換的工作。要給真實的使用者試用,資料就必須有相當的品質,不能含有「難以忍受」的錯誤。之前不是花了很多錢,建立了 metadata 來詮釋文件嗎?應用這些人工處理過的 metadata,應該比自動擷取的方法,有較好的資訊的品質吧。
但事情沒有這麼簡單。Metadata 既然是人工處理,就會有人為的疏失。舉個例子好了,「光緒十一年」竟然可以對應到西元 1866、1885、1886 年(1866 年應該是錯誤的)?還有,依日期欄位的規定,資料應該至少有「年份」的資訊,但為什麼可以看到「七日」、「五月二十三日」、甚至「署福建巡撫閩浙總督崔應階」這樣的資料呢?
在資訊處理的流程中,上游的資訊一旦品質不夠好,下游的處理就會事倍而功半。這時,就彰顯出傳統的 Waterfall(瀑布式)開發流程的缺點了。在瀑布式開發流程裡,每個開發階段都是明確的,上游必須經過嚴格的品質控管,才能將資料(或程式)轉給下一步的開發者。因此,下游不應該收到品質不夠好的東西。但實務上,我們也都知道,要保證上游資訊的品質,成本非常高;下游的處理者,就是會收到品質不夠好的半成品。
那麼,我們該怎麼辦呢?把責任推給撰寫 metadata 的人員,責怪她們不夠用心,並且等到她們將資料都修改好,才進行下一個開發步驟;還是把不夠好的系統丟給使用者,讓使用者自己去過濾篩選資料,並說明「自己只是中介者、只負責程式開發」呢?
因為兩邊都無法接受,我就只能在中間階段的處理中,盡量加上錯誤篩檢的機制。這樣一來,當然就會消耗許多寶貴的時間了。
我想,在方向上,項老師是對的:系統終究必須讓 real users 測試。然而,沒有經過良好的規劃,以為 prototype 與 pre-β「感覺起來差不多」,其實是很大的失誤。系統開發人員,還真是「苦命」啊!
而這下子,自己事情也變多了。至少,已經超過我原先的預期了(我原本只想做個 prototype,之後就由其他人接手)。我必須花時間思考一下,自己想將這個 pre-β 版本定位在何處。即使這個版本的使用說明是由別人負責的,即使這個版本只需做非常陽春的安全控管、連線控制、profile 管理、使用者介面調整、效能調校、或者系統品管與程式除錯,要考慮的事情都比單純的 prototype 複雜許多。
星期一, 1月 16, 2006
寶寶感冒過敏記
寶寶感冒後,又發現有過敏的症狀。為此忙碌了許久。
先是去看國泰的醫師。開了感冒、支氣管擴張的藥,吃了兩天,卻發現有過敏的症狀。
這下子怎麼辦呢?在去看同一位醫師,還是換一位對過敏比較有專長的?上網找了找,決定到馬偕醫院看小兒過敏科。醫師說,這是「長期累積」的結果,要我們把家裡的布沙發之類家俱「通通換掉」、然後開了一些藥、還要寶寶抽血檢查。扎了兩針,寶寶哭了許久。
但是幾天下來,情況好像沒有太大的好轉。於是,我們又再回頭看國泰的醫師。她說,馬偕醫院開的藥,含有類固醇,對小孩子不好。於是,又換用這個醫師開的藥。
馬偕的醫師還開了回診條,所以我們過了一週後,再去看診一次。這回,馬偕的醫師護士甚至說,過了十天咳嗽沒有康復,就是有氣喘的徵兆,還開了氣喘的噴劑呢。
為了該不該給寶寶服用噴劑,我們掙扎了許久。最後,我們決定再去找台大的小兒過敏科醫生看診。這位醫生聽了聽寶寶胸腔的聲音,說她的肺部很健康,應該沒有氣喘。然後,她看了看馬偕開的藥,說這些藥都開得太重了,不適合年紀小的孩童。
我覺得,馬偕醫院的醫師,實在太沒有醫德了。他怎麼可以未詳細問診、聽診、看診,就開了份量頗重、甚至含有類固醇的藥呢?太太說,她再也不要帶寶寶去馬偕看這位醫生了。
可是,病患就是這麼無助呢。醫師開了藥,我們竟需在「是不是該給寶寶服用」下掙扎。因此,找到值得信賴的醫生,就顯得相當重要。
是的,我們需要的是「信賴」。在這個講求快速的社會中,信賴已經逐漸變得稀少而珍貴了。
先是去看國泰的醫師。開了感冒、支氣管擴張的藥,吃了兩天,卻發現有過敏的症狀。
這下子怎麼辦呢?在去看同一位醫師,還是換一位對過敏比較有專長的?上網找了找,決定到馬偕醫院看小兒過敏科。醫師說,這是「長期累積」的結果,要我們把家裡的布沙發之類家俱「通通換掉」、然後開了一些藥、還要寶寶抽血檢查。扎了兩針,寶寶哭了許久。
但是幾天下來,情況好像沒有太大的好轉。於是,我們又再回頭看國泰的醫師。她說,馬偕醫院開的藥,含有類固醇,對小孩子不好。於是,又換用這個醫師開的藥。
馬偕的醫師還開了回診條,所以我們過了一週後,再去看診一次。這回,馬偕的醫師護士甚至說,過了十天咳嗽沒有康復,就是有氣喘的徵兆,還開了氣喘的噴劑呢。
為了該不該給寶寶服用噴劑,我們掙扎了許久。最後,我們決定再去找台大的小兒過敏科醫生看診。這位醫生聽了聽寶寶胸腔的聲音,說她的肺部很健康,應該沒有氣喘。然後,她看了看馬偕開的藥,說這些藥都開得太重了,不適合年紀小的孩童。
我覺得,馬偕醫院的醫師,實在太沒有醫德了。他怎麼可以未詳細問診、聽診、看診,就開了份量頗重、甚至含有類固醇的藥呢?太太說,她再也不要帶寶寶去馬偕看這位醫生了。
可是,病患就是這麼無助呢。醫師開了藥,我們竟需在「是不是該給寶寶服用」下掙扎。因此,找到值得信賴的醫生,就顯得相當重要。
是的,我們需要的是「信賴」。在這個講求快速的社會中,信賴已經逐漸變得稀少而珍貴了。
星期三, 1月 11, 2006
畫蛇添足
前些日子把「從前未完成論文」修改後的前半段先拿給項老師看,昨天中午取得回應。
坦白說,一時之間是有些傷心。怎麼回事呢?原來,自己多日來,輾轉反側、挖空心思寫的許多論述,本來奢想可以得到比較多的正面回饋;但實際上這是做白日夢。論文依然問題重重:
其實我一直都有畫蛇添足的毛病。主要是,覺得自己花了心力去思考許多層面,下意識裡捨不得割愛。昨晚想了想,老師說的冗餘、定義(引用)不清、「不知道想表達些什麼」部分,還真的不是那麼需要。畫蛇添足,不但多餘,連蛇的應有樣貌也失去了。
坦白說,一時之間是有些傷心。怎麼回事呢?原來,自己多日來,輾轉反側、挖空心思寫的許多論述,本來奢想可以得到比較多的正面回饋;但實際上這是做白日夢。論文依然問題重重:
- 單字拼錯、文法錯誤:通常是單複數弄錯了(許多地方是很明顯的錯誤;我猜是自己多次修改後,沒有好好地再校對一遍的關係。)
- 描述的方式笨拙(通常是因為英文程度不夠好吧。)
- 敘述不清、不知所云(除了英文程度不好,論述的條理性也不夠。因此有些地方會說著說著 miss the point,脫離了應強調的主題。)
- 引用失當(這應該是我自己的問題。許多假設引用久了,就以為別人也理所當然該知道;有時,甚至自己會延伸出一些新的意涵而不自知。)
- 畫蛇添足(有些論述不需重覆說明、有些假設與此論文無甚關係。無甚關係的論述應當勇於割捨。)
其實我一直都有畫蛇添足的毛病。主要是,覺得自己花了心力去思考許多層面,下意識裡捨不得割愛。昨晚想了想,老師說的冗餘、定義(引用)不清、「不知道想表達些什麼」部分,還真的不是那麼需要。畫蛇添足,不但多餘,連蛇的應有樣貌也失去了。
星期一, 1月 09, 2006
選擇的弔詭
終於把「選擇的弔詭」這本書看完了。
大致上,一開始看還頗有感觸,但書看到後來就漸漸麻木了。導論寫得好,結論也想看,但中間的許多鋪陳就顯得稍冗贅了些(這本書,有一半的篇幅是在說明:為什麼選擇這麼痛苦)。
有選擇,比沒有選擇好。但現代人比從前的人選擇多,卻似乎沒有比較快樂?
原來,選擇也是一項負擔。有時,甚至會因「不確定是否選錯」而苦惱。尤其是,選擇有機會成本,選了一項,就表示捨棄了其他所有的選項。此外,人有「寧為雞首、不為牛後」的傾向:滿足感並是不建立於客觀的基礎(例如,實際上賺比較多錢),而經常在於主觀的比較(例如,雖然實際上賺得少,但比身旁的人都要多)。
人還有「適應性」的特質:一件美好的事物,帶來的愉悅都是短暫的。隨著時間的流逝,愉悅的感覺就會漸漸褪去,剩下的只有舒適感而已。而每個人,應該都可以舉出一長串適應性的例子。例如,小時候我覺得蝦味先很好吃,但漸漸地就「適應」了,覺得它不再那麼美味;剛買筆記型電腦時,帶著它四處遊走,覺得好棒,但習慣後,也就只感覺到方便而已。
於是,書末的建議「竟」也類似於老生常談:
大致上,一開始看還頗有感觸,但書看到後來就漸漸麻木了。導論寫得好,結論也想看,但中間的許多鋪陳就顯得稍冗贅了些(這本書,有一半的篇幅是在說明:為什麼選擇這麼痛苦)。
有選擇,比沒有選擇好。但現代人比從前的人選擇多,卻似乎沒有比較快樂?
原來,選擇也是一項負擔。有時,甚至會因「不確定是否選錯」而苦惱。尤其是,選擇有機會成本,選了一項,就表示捨棄了其他所有的選項。此外,人有「寧為雞首、不為牛後」的傾向:滿足感並是不建立於客觀的基礎(例如,實際上賺比較多錢),而經常在於主觀的比較(例如,雖然實際上賺得少,但比身旁的人都要多)。
人還有「適應性」的特質:一件美好的事物,帶來的愉悅都是短暫的。隨著時間的流逝,愉悅的感覺就會漸漸褪去,剩下的只有舒適感而已。而每個人,應該都可以舉出一長串適應性的例子。例如,小時候我覺得蝦味先很好吃,但漸漸地就「適應」了,覺得它不再那麼美味;剛買筆記型電腦時,帶著它四處遊走,覺得好棒,但習慣後,也就只感覺到方便而已。
於是,書末的建議「竟」也類似於老生常談:
- 如果能學著滿意於舒適的感覺,當適應現象發生時,就不會那麼失望;
- 若能有意識地對美好經驗或抉擇心存感恩,對不好的經驗淡然處之,就可以大大改善主觀經驗;
- 在這個複雜多變、充斥各種選擇的世界裡,學會滿足,才可能得到內心的寧靜。
星期四, 1月 05, 2006
星期二, 1月 03, 2006
關於人的適應現象
「選擇的弔詭」提到,我們會逐漸習慣新事物,然後把一切視為理所當然。
而當你習慣、適應了各種樂趣的來源,這些就不再是樂趣的來源了。更糟的是,新的經驗也可能會改變參考點,使得原本已經夠好或甚至更好的事物,在經歷過新奇的經驗後,顯得不夠美好。
書中提到一個相當著名的實驗,比較了兩種際遇的快樂程度。其中部分參與者在過去一年中,贏得五萬到一百萬美元不等的彩金;其他參與者則因為意外事故導致半身癱瘓。當然啦,若實驗結果是「彩券得主比癱瘓病人快樂」,那就一點也不奇怪;但令人驚訝的是,經過數年,彩券得主並沒有比其他人快樂!(如果在彩券公布的第一時間詢問,得主的快樂程度都接近滿分;但經過一段時間後,就會逐漸習慣新情況。)
於是,為了得到樂趣,人必須不斷追尋更新鮮的愉悅感。但適應現象,卻說明了這種「樂趣不斷歸零」的苦果:就如同在跑步機上,不論跑得多快,只不過一直在原地打轉。
書中也提到,
而當你習慣、適應了各種樂趣的來源,這些就不再是樂趣的來源了。更糟的是,新的經驗也可能會改變參考點,使得原本已經夠好或甚至更好的事物,在經歷過新奇的經驗後,顯得不夠美好。
書中提到一個相當著名的實驗,比較了兩種際遇的快樂程度。其中部分參與者在過去一年中,贏得五萬到一百萬美元不等的彩金;其他參與者則因為意外事故導致半身癱瘓。當然啦,若實驗結果是「彩券得主比癱瘓病人快樂」,那就一點也不奇怪;但令人驚訝的是,經過數年,彩券得主並沒有比其他人快樂!(如果在彩券公布的第一時間詢問,得主的快樂程度都接近滿分;但經過一段時間後,就會逐漸習慣新情況。)
於是,為了得到樂趣,人必須不斷追尋更新鮮的愉悅感。但適應現象,卻說明了這種「樂趣不斷歸零」的苦果:就如同在跑步機上,不論跑得多快,只不過一直在原地打轉。
書中也提到,
- 「人顯然無法準確預測各種經驗將會帶來的感覺」(高估喜樂的影響)
- 「不管是多麼珍貴的抉擇,都不會對生活造成太大的轉變,但我們有時仍以為抉擇會大大地改變生活」(哦,真的是這樣嗎?有時,我還真以為抉擇可以大大影響生活呢。早個幾年取得學位、選擇到一份好工作、甚至中個樂透頭彩,經過數年後,影響真的如此微不足道?)
- 「許多對人生的失望,固然是事後覺醒,其實也經常是對適應現象的錯估」
星期六, 12月 31, 2005
年底的簡單回顧
今天是 2005 年的最後一天呢。想了想自己在這一年,到底做了些什麼?
嗯,和前幾年相比,我覺得成長了不少。說得確切些,應該是前幾年幾乎都沒有學到什麼。今年前半年,在舊公司進行了一項「品質改善」的專案,從軟體工程的角度思考與執行後,才慢慢讓自己對軟體專案的開發,有了不一樣的角度與看法。
九月離開公司,回頭再做博士後研究。除了「臨時性」與「薪資不高」之外,我覺得若是好好地「享受」一下,博士後研究也實在不壞:
當然啦,自己因為一頭栽入論文寫作、程式實作中,就沒有力氣能夠整理些「曾感到興趣的一些主題」了。對此,我其實還是頗感愧疚的。
過幾個月,把 paper 與 prototype 弄得差不多了,就得準備下一份工作了吧。現代人,如果沒有工作,似乎相當容易顯得失落;親朋好友善意的問候與建議,也很容易令人難以招架。對 MPH 的短期計畫,決定再休息個半年,我是帶點羨慕與祝福的(其實不該羨慕的,自己這幾個月也可以說是在休息,應該知足)。
嗯,和前幾年相比,我覺得成長了不少。說得確切些,應該是前幾年幾乎都沒有學到什麼。今年前半年,在舊公司進行了一項「品質改善」的專案,從軟體工程的角度思考與執行後,才慢慢讓自己對軟體專案的開發,有了不一樣的角度與看法。
九月離開公司,回頭再做博士後研究。除了「臨時性」與「薪資不高」之外,我覺得若是好好地「享受」一下,博士後研究也實在不壞:
- 上下班相當自由。偶而心情好,可以不上班,陪寶寶玩一天。
- 目前的工作內容,可主要是在延續自己讀博士班時,「尚未完成」的一篇 paper 與 prototype 實作。我覺得,或許也是因緣。
當然啦,自己因為一頭栽入論文寫作、程式實作中,就沒有力氣能夠整理些「曾感到興趣的一些主題」了。對此,我其實還是頗感愧疚的。
過幾個月,把 paper 與 prototype 弄得差不多了,就得準備下一份工作了吧。現代人,如果沒有工作,似乎相當容易顯得失落;親朋好友善意的問候與建議,也很容易令人難以招架。對 MPH 的短期計畫,決定再休息個半年,我是帶點羨慕與祝福的(其實不該羨慕的,自己這幾個月也可以說是在休息,應該知足)。
星期五, 12月 30, 2005
SQL Server 的全文檢索
從 MySQL 將資料轉到 SQL Server 後,接下來當然就是嘗試全文檢索的功能。
大致上,效能果然比 MySQL 好上許多(大約有十倍以上的效能提升吧)。這或許可以說明,MySQL 的全文檢索,可能只是「虛晃一招」,沒有好好認真去做。
即使是檢索「劉銘傳」,回傳 2407 篇文件也不會吃掉太多效能。但... 等等,印象中,在 MySQL 下用「海山口」來查詢,會取得 25 篇文件,但 SQL Server 怎麼只檢索出 23 篇?
雖然頗覺事有蹊蹺,但又有些懶:既然只是 prototype,這又頗明顯是 SQL Server 的問題,況且「大多數的查詢結果與 MySQL 的查詢結果是相同的」,不講大概也沒有人會發現。那麼,「假裝沒看到」又何妨?
不過,隔了一陣子還是忍耐不住,想了解究竟是怎麼回事。(哎,這該算是個性上的優點還是缺點多啊?)
最先浮上心頭的想法,是懷疑「海山口」的前後文,是否在 big-5 或者 unicode 中,含有特殊的字元;而這樣的字元,導致 SQL Server 在做全文索引時弄錯了。調出一篇沒有被檢索出來的文件,相關內容是這樣的:
嗯,看起來好像沒有什麼問題?
這下子有點傷腦筋了。懷疑是否 SQL Server 的全文檢索有參數可以設定。然而,搜尋網路與相關文件後,卻只找到 stop words 的檔案;但即使將 stop words 通通拿掉,也還是檢索不出這篇文件。
不信邪,用「海山」找找看。喔,可以找到數百筆資料,但怎麼就是不含這一篇?改用「山口」試試看好了 --- 咦,這回可以檢索到耶。這究竟是怎麼回事啊?
嘗試了一些查詢後,我覺得 SQL Server 好像把「北海」「山口」斷詞斷開(當成是兩個片語)了。想到前同事 Tim 曾提到,Microsoft Word 有類似的斷詞判斷能力,就把上面框起來的那些字拷貝到 Word 裡...
結果還真的頗有趣。當我在「北」或者「海」上頭 double click 時,Word 會 highlight 選出「北海」,在「山」或「口」上雙按,則會選出「山口」。看來,Microsoft 在 Windows 的某個地方,確實有個「斷詞」的程式模組,而 SQL Server 的全文檢索,則「笨笨地」誤用斷詞了。
找不到如何取消這類「自作聰明」舉動的地方,只好用類似於在 MySQL 上檢索中文的方式,在每個中文字間,加上空白,然後用「片語檢索」的方式,查詢 "海 山 口" (在字與字之間加上空白)--- 這下終於成功地檢索出 25 篇文件了。
實作中文系統就是這樣,常常會遇到一堆莫名其妙的問題。為了交差,有時就難免得用到 work around 的解決方式;而既然是折衝繞路後的解決方案,深層根本的問題也就比較多。我想,這應該也部分說明了,為什麼中文的系統,(比單純的英語系統)感覺起來經常是「問題一籮筐」吧。
大致上,效能果然比 MySQL 好上許多(大約有十倍以上的效能提升吧)。這或許可以說明,MySQL 的全文檢索,可能只是「虛晃一招」,沒有好好認真去做。
即使是檢索「劉銘傳」,回傳 2407 篇文件也不會吃掉太多效能。但... 等等,印象中,在 MySQL 下用「海山口」來查詢,會取得 25 篇文件,但 SQL Server 怎麼只檢索出 23 篇?
雖然頗覺事有蹊蹺,但又有些懶:既然只是 prototype,這又頗明顯是 SQL Server 的問題,況且「大多數的查詢結果與 MySQL 的查詢結果是相同的」,不講大概也沒有人會發現。那麼,「假裝沒看到」又何妨?
不過,隔了一陣子還是忍耐不住,想了解究竟是怎麼回事。(哎,這該算是個性上的優點還是缺點多啊?)
最先浮上心頭的想法,是懷疑「海山口」的前後文,是否在 big-5 或者 unicode 中,含有特殊的字元;而這樣的字元,導致 SQL Server 在做全文索引時弄錯了。調出一篇沒有被檢索出來的文件,相關內容是這樣的:
...比臺北海山口最上之米。一石僅低十錢...
嗯,看起來好像沒有什麼問題?
這下子有點傷腦筋了。懷疑是否 SQL Server 的全文檢索有參數可以設定。然而,搜尋網路與相關文件後,卻只找到 stop words 的檔案;但即使將 stop words 通通拿掉,也還是檢索不出這篇文件。
不信邪,用「海山」找找看。喔,可以找到數百筆資料,但怎麼就是不含這一篇?改用「山口」試試看好了 --- 咦,這回可以檢索到耶。這究竟是怎麼回事啊?
嘗試了一些查詢後,我覺得 SQL Server 好像把「北海」「山口」斷詞斷開(當成是兩個片語)了。想到前同事 Tim 曾提到,Microsoft Word 有類似的斷詞判斷能力,就把上面框起來的那些字拷貝到 Word 裡...
結果還真的頗有趣。當我在「北」或者「海」上頭 double click 時,Word 會 highlight 選出「北海」,在「山」或「口」上雙按,則會選出「山口」。看來,Microsoft 在 Windows 的某個地方,確實有個「斷詞」的程式模組,而 SQL Server 的全文檢索,則「笨笨地」誤用斷詞了。
找不到如何取消這類「自作聰明」舉動的地方,只好用類似於在 MySQL 上檢索中文的方式,在每個中文字間,加上空白,然後用「片語檢索」的方式,查詢 "海 山 口" (在字與字之間加上空白)--- 這下終於成功地檢索出 25 篇文件了。
實作中文系統就是這樣,常常會遇到一堆莫名其妙的問題。為了交差,有時就難免得用到 work around 的解決方式;而既然是折衝繞路後的解決方案,深層根本的問題也就比較多。我想,這應該也部分說明了,為什麼中文的系統,(比單純的英語系統)感覺起來經常是「問題一籮筐」吧。
星期二, 12月 27, 2005
轉移焦點
「爸爸你討厭,把帕還給我,嗚嗚嗚..」
昨天幫寶寶「保管」她的手帕,卻忘了還給她。電話裡,小傢伙哭得很可憐。我在電話裡說好說歹,就是無法讓她停止啜泣與不滿。據說,太太後來是藉著「轉移焦點」的方式,讓她注意到衣服上的小動物,寶寶才破涕為笑的。
今早繼續閱讀「選擇的弔詭」。書中提到,「對不快樂的人來說,他們重視的是相互比較...快樂的人與不快樂的人,之所以會做出不同的反應,關鍵在於能否抽離思緒、還是反覆思考」。當不快樂時,如果能夠分心,轉向思考其他事物,那麼就不會沈浸在反覆的思考或懊悔中。
我想起從前失戀時的一些經歷。失戀時,難過的感覺往往會佔住生活中的大半空閒時間;而旁人的安慰,通常都沒有太大的助益。脫離失戀悲傷情緒的最好方法,就是趕快找到下一個戀愛的對象。
而小傢伙似乎天生就有「顧左右而言他」的轉移焦點能力。當我們數落她做錯了什麼事時,她經常會主動轉移話題與焦點,令人又好氣又好笑。我想,如果這種能力,能夠讓她生活得比較滿足與快樂,那也是一種很好的本領罷。
昨天幫寶寶「保管」她的手帕,卻忘了還給她。電話裡,小傢伙哭得很可憐。我在電話裡說好說歹,就是無法讓她停止啜泣與不滿。據說,太太後來是藉著「轉移焦點」的方式,讓她注意到衣服上的小動物,寶寶才破涕為笑的。
今早繼續閱讀「選擇的弔詭」。書中提到,「對不快樂的人來說,他們重視的是相互比較...快樂的人與不快樂的人,之所以會做出不同的反應,關鍵在於能否抽離思緒、還是反覆思考」。當不快樂時,如果能夠分心,轉向思考其他事物,那麼就不會沈浸在反覆的思考或懊悔中。
我想起從前失戀時的一些經歷。失戀時,難過的感覺往往會佔住生活中的大半空閒時間;而旁人的安慰,通常都沒有太大的助益。脫離失戀悲傷情緒的最好方法,就是趕快找到下一個戀愛的對象。
而小傢伙似乎天生就有「顧左右而言他」的轉移焦點能力。當我們數落她做錯了什麼事時,她經常會主動轉移話題與焦點,令人又好氣又好笑。我想,如果這種能力,能夠讓她生活得比較滿足與快樂,那也是一種很好的本領罷。
星期一, 12月 26, 2005
MySQL 到 SQL Server 的轉換
上週提到,使用 MySQL 全文檢索遇到的效能困境。
想起從前曾用過 Microsoft SQL Server 的全文檢索功能,而當初的感覺還不錯,所以就打算將雛型的資料庫改用 SQL Server 2000,來比對是否真的是 MySQL 的問題。
不過,字元編碼的問題又再度出現:MySQL 支援 UTF-8,但不支援 UTF-16 的字元編碼。M$ SQL Server 則正好相反,支援 UTF-16,卻不支援 UTF-8。當下嘆了口氣:看來,轉碼的功夫是省不了的...
找了幾個資料庫轉換的工具軟體,都無法在資料庫之間正確轉碼,所以就只好自己動手寫程式。不過,SQL Server 的 drivers 似乎很奇怪,大五碼(big-5)的字元可以正確地轉譯到 nvarchar 或者 ntext,但其他字元怎麼都會變成問號呢?
明明覺得「一定有辦法解決」,但怎麼總是有某個地方不對勁?又是一番冗長的手冊閱讀、網路搜尋、以及嘗試錯誤過程。頗幸運地,最後終於找到正確的轉碼方式了。
轉譯的過程,用到了 PHP COM 模組的 CP_UTF8 codepage,以及 SQL Server 指令的 "N" prefix。我想,這應該就是所謂的「know how」吧:明明知道必然有解,而最終也證明這個解相當簡單,但如果缺乏這個 know how,就怎麼也做不出來。
想起從前曾用過 Microsoft SQL Server 的全文檢索功能,而當初的感覺還不錯,所以就打算將雛型的資料庫改用 SQL Server 2000,來比對是否真的是 MySQL 的問題。
不過,字元編碼的問題又再度出現:MySQL 支援 UTF-8,但不支援 UTF-16 的字元編碼。M$ SQL Server 則正好相反,支援 UTF-16,卻不支援 UTF-8。當下嘆了口氣:看來,轉碼的功夫是省不了的...
找了幾個資料庫轉換的工具軟體,都無法在資料庫之間正確轉碼,所以就只好自己動手寫程式。不過,SQL Server 的 drivers 似乎很奇怪,大五碼(big-5)的字元可以正確地轉譯到 nvarchar 或者 ntext,但其他字元怎麼都會變成問號呢?
明明覺得「一定有辦法解決」,但怎麼總是有某個地方不對勁?又是一番冗長的手冊閱讀、網路搜尋、以及嘗試錯誤過程。頗幸運地,最後終於找到正確的轉碼方式了。
轉譯的過程,用到了 PHP COM 模組的 CP_UTF8 codepage,以及 SQL Server 指令的 "N" prefix。我想,這應該就是所謂的「know how」吧:明明知道必然有解,而最終也證明這個解相當簡單,但如果缺乏這個 know how,就怎麼也做不出來。
星期六, 12月 24, 2005
堅持
電視上訪問朱銘,問他如何能致現今的成功,朱銘的回答是:「堅持」。
從電視上,可以感受到朱銘是一個非常謙和,對自己的理念也非常堅持的人。他說,他堅持著自己的本性、規律生活、在生活中修行(他說,就是把雜念去除)。
堅持。短短兩個字,卻有力地道盡人世的滄桑。如果世界不是那麼現實,那又何需堅持?
想想舊公司竟然還有能力增資,也頗感驚訝。技術研發本來成本就高,舊公司開發的東西也理應有應用價值;只是,歷經一番大變化,看這些東西的角度竟也有了微妙的改變。公司能夠繼續生存,不管是因為賺錢、或者因為能夠找到金主,都是它的本領。只是,就像是政治人物常掛在嘴邊的「不逃避、不退縮」,這樣是否真算是「堅持」?
看來,堅持雖然令人嚮往,但箇中微妙之處,卻語言難以描述。而成王敗寇,就是現實的遊戲規則。或許,「馬後放砲,砲砲都響」,我們也真只能在事後,才能品茶論英雄。
從電視上,可以感受到朱銘是一個非常謙和,對自己的理念也非常堅持的人。他說,他堅持著自己的本性、規律生活、在生活中修行(他說,就是把雜念去除)。
堅持。短短兩個字,卻有力地道盡人世的滄桑。如果世界不是那麼現實,那又何需堅持?
想想舊公司竟然還有能力增資,也頗感驚訝。技術研發本來成本就高,舊公司開發的東西也理應有應用價值;只是,歷經一番大變化,看這些東西的角度竟也有了微妙的改變。公司能夠繼續生存,不管是因為賺錢、或者因為能夠找到金主,都是它的本領。只是,就像是政治人物常掛在嘴邊的「不逃避、不退縮」,這樣是否真算是「堅持」?
看來,堅持雖然令人嚮往,但箇中微妙之處,卻語言難以描述。而成王敗寇,就是現實的遊戲規則。或許,「馬後放砲,砲砲都響」,我們也真只能在事後,才能品茶論英雄。
星期三, 12月 21, 2005
逃避選擇
卸下「正式工作」後,總想能夠多看點書。
不過,自己看書的速度本來就屬烏龜等級,最近又為了古契書檢索的雛型傷腦筋;因此總難抽出足夠的時間,好好地讀上幾本書。
看看架上的圖書,都已經滿溢了,怎麼好意思再買書呢?在愧疚的心情下,挑選了一本「選擇的弔詭」,趁著早餐的時間,酌量閱讀。
這其實是一本嚴謹的科普著作。看看書後的參考書目,竟然有 138 條之多。想想自己近來想寫些東西,卻腸思枯竭無法動筆,就更欽佩作者的功力了。
在書中,作者提到「逃避選擇」:在許多狀況下,人們並不願意做選擇。如果在抉擇時被迫要面臨取捨,人不只會變得不快樂,還會顯得優柔寡斷 --- 如果實驗容許,人們甚至根本不想做決定。大家大概都曾聽過這樣的問題:
就我來說, 自己從來都不肯正面去回答這個問題,因而通常就是採取「拖延、玩笑似地回答、或逃避選擇」的態度。此外,就工作的選擇方面,自己似乎也總顯得有些意興闌珊。這應該也是一種逃避吧?
有意思的是,從書上引述的研究來看,這種心理反應是「正常」的:大多數人都是如此,因此似乎也不必太在意。雖然,許多提倡積極進取的書籍,總是會鼓勵「仔細評估、勇於決定、貫徹選擇」。
想起當兵時聽過的話:「時間的過去,就是任務的完成」(這句話,其實是我在 Maryland 求學時,因室友 Pony 多次提及,才比較深刻地映入腦海)。也或許,「不選擇」就是最好的選擇?
不過,自己看書的速度本來就屬烏龜等級,最近又為了古契書檢索的雛型傷腦筋;因此總難抽出足夠的時間,好好地讀上幾本書。
看看架上的圖書,都已經滿溢了,怎麼好意思再買書呢?在愧疚的心情下,挑選了一本「選擇的弔詭」,趁著早餐的時間,酌量閱讀。
這其實是一本嚴謹的科普著作。看看書後的參考書目,竟然有 138 條之多。想想自己近來想寫些東西,卻腸思枯竭無法動筆,就更欽佩作者的功力了。
在書中,作者提到「逃避選擇」:在許多狀況下,人們並不願意做選擇。如果在抉擇時被迫要面臨取捨,人不只會變得不快樂,還會顯得優柔寡斷 --- 如果實驗容許,人們甚至根本不想做決定。大家大概都曾聽過這樣的問題:
假想你的媽媽、太太、還有小孩掉入水裡,但你只能從中救一個人。你會選擇救誰?
就我來說, 自己從來都不肯正面去回答這個問題,因而通常就是採取「拖延、玩笑似地回答、或逃避選擇」的態度。此外,就工作的選擇方面,自己似乎也總顯得有些意興闌珊。這應該也是一種逃避吧?
有意思的是,從書上引述的研究來看,這種心理反應是「正常」的:大多數人都是如此,因此似乎也不必太在意。雖然,許多提倡積極進取的書籍,總是會鼓勵「仔細評估、勇於決定、貫徹選擇」。
想起當兵時聽過的話:「時間的過去,就是任務的完成」(這句話,其實是我在 Maryland 求學時,因室友 Pony 多次提及,才比較深刻地映入腦海)。也或許,「不選擇」就是最好的選擇?
星期日, 12月 18, 2005
MySQL 的全文搜尋效率
上個月才聲稱 MySQL 也支援全文檢索,但現在心裡卻頗有不滿。
怎麼回事?原來,MySQL 的全文搜尋效率並不好。當初的文件庫只有一萬多篇文件,效能還差強人意;但現在文件庫裡有了十幾萬篇文件,搜尋的時間竟然也是「直線上升」。那麼,做全文索引,還有什麼意義呢?
調了調幾項參數,都沒能改善效能。只好到網路上看看別人是否也有類似的經驗。喔,是了,確實有人做了些實驗,然後發現 MySQL 的全文效率,並不會比直接用 SQL 指令,下「WHERE content LIKE "% tag %"」來得好(其中,content 是資料庫儲存內容的欄位名稱,tag 是要搜尋的字串,% 表示任意字元都符合,而 tag 前後留有空白,是因為英文字是用空白來斷字的)。
這下子也真令人氣餒。雖說自己只是在做實驗性質的 prototype 或 demo,但尋找個「劉銘傳」、「海山口」竟也要花上半分鐘以上的時間,總讓人心裡不舒服。
於是,也強烈感覺到,強調互動的系統,「回應時間」是需要被關注的。 0.1 秒內取得檢索結果當然很好,但花個三秒鐘,也不會讓使用者覺得太難過。然而,如果需要超過五秒才有回應、甚至需要長達半分鐘的等待,那麼系統在「互動」上就顯得很不實際了。
怎麼回事?原來,MySQL 的全文搜尋效率並不好。當初的文件庫只有一萬多篇文件,效能還差強人意;但現在文件庫裡有了十幾萬篇文件,搜尋的時間竟然也是「直線上升」。那麼,做全文索引,還有什麼意義呢?
調了調幾項參數,都沒能改善效能。只好到網路上看看別人是否也有類似的經驗。喔,是了,確實有人做了些實驗,然後發現 MySQL 的全文效率,並不會比直接用 SQL 指令,下「WHERE content LIKE "% tag %"」來得好(其中,content 是資料庫儲存內容的欄位名稱,tag 是要搜尋的字串,% 表示任意字元都符合,而 tag 前後留有空白,是因為英文字是用空白來斷字的)。
這下子也真令人氣餒。雖說自己只是在做實驗性質的 prototype 或 demo,但尋找個「劉銘傳」、「海山口」竟也要花上半分鐘以上的時間,總讓人心裡不舒服。
於是,也強烈感覺到,強調互動的系統,「回應時間」是需要被關注的。 0.1 秒內取得檢索結果當然很好,但花個三秒鐘,也不會讓使用者覺得太難過。然而,如果需要超過五秒才有回應、甚至需要長達半分鐘的等待,那麼系統在「互動」上就顯得很不實際了。
星期三, 12月 14, 2005
談古契書資料處理:之四
古契書檢索系統,一般需要處理時間的問題。
什麼意思呢?一個提供全文檢索 (full-text retrieval) 的系統,難道還不夠嗎?
從某些層面來看,只有全文檢索的確不夠。例如,若我們只想查閱某些年代的資料,全文檢索因為無法辨識文件的年代,就無法提供「只搜尋清朝乾隆年間文件」的選項,因而回傳的結果,將會因為含有大量「非乾隆年間文件」而使檢索效率降低。
好吧,那我們怎麼提供全文以外的檢索呢?
一般來說,需要有詮釋資料 (metadata) 的配合。詮釋資料,就是用來說明資料特性的一些東西。例如,Windows 檔案系統有所謂的「延伸檔名」,它就算是一種詮釋資料。由於 .jpg、.gif、.wav、.doc、.xls 各表示不同的檔案格式,應用程式就能藉由這項資訊分辨處理的方式。
可是,古契書本身是沒有詮釋資料的。要將它數位化,就已經會遇到一堆問題了,哪有資源來為每份契書額外加上詮釋資料呢?於是,就會有「從文件中,自動擷取時間資訊」的想法。
讓我們先看一份完整、加過標注的古契書:
其中,「明治丙申年捌月 日」就是很明顯的時間資訊。
當我們要從文件中擷取出這類資訊,會發覺正規表示式 (regular expression) 實在是一個方便的工具。例如,寫一個簡單的式子:
就可以擷取出「明治丙申年捌月 日」、「同治拾貳年桂月 日」、「光緒丙子年拾貳月 日」等字串。其中,「\S」 代表任意的「非空白 (white-space) 字元」,「.」可以比對任意的字元,而「{m,n}」則表示符合的字元數目要在 m 與 n 之間。
當然啦,現實總不是那麼簡單與美好。和之前幾篇 posts 類似,總有些打錯的字、莫名其妙的斷行、以及更冗長的時間寫法(例如,「光緒八年歲次壬午拾壹月 日」之類)。此外,古時候中國是採用農曆,有時會有「潤八月」之類的字串出現。因此,要找出合用的正規表示式,就會複雜許多。
什麼意思呢?一個提供全文檢索 (full-text retrieval) 的系統,難道還不夠嗎?
從某些層面來看,只有全文檢索的確不夠。例如,若我們只想查閱某些年代的資料,全文檢索因為無法辨識文件的年代,就無法提供「只搜尋清朝乾隆年間文件」的選項,因而回傳的結果,將會因為含有大量「非乾隆年間文件」而使檢索效率降低。
好吧,那我們怎麼提供全文以外的檢索呢?
一般來說,需要有詮釋資料 (metadata) 的配合。詮釋資料,就是用來說明資料特性的一些東西。例如,Windows 檔案系統有所謂的「延伸檔名」,它就算是一種詮釋資料。由於 .jpg、.gif、.wav、.doc、.xls 各表示不同的檔案格式,應用程式就能藉由這項資訊分辨處理的方式。
可是,古契書本身是沒有詮釋資料的。要將它數位化,就已經會遇到一堆問題了,哪有資源來為每份契書額外加上詮釋資料呢?於是,就會有「從文件中,自動擷取時間資訊」的想法。
讓我們先看一份完整、加過標注的古契書:
od-ta_01516_000005
竹北二堡十寮庄土名七寮三五之二、三五之三
立截出山園字人周明盛兄弟等。緣因先年承買李家之山園,係叔侄兄弟人等備本,按作參股,每股備出本銀壹拾參元陸角正,盛備出本銀陸元捌角正。爰是族戚酌議,福叔姆邱氏備出本銀陸元捌角正,計共每壹股本銀壹拾參元陸角正,將此山園截出四至界址。東至貳鬮毗連種竹為界;南至路生屋角水壢透上;西至大龍種竹為界;北至糞箕窩分水為界。四至界址,即日經族面踏分明。愿將此山園壹處與叔姆邱氏前去掌管,收租納課,永為己業,日後子孫人等不敢異言生端等情。此乃二比甘愿,兩無迫勒。口恐無憑,今欲有憑,立截出山園字壹紙,付為執照。
即日批明:福叔姆邱氏備出本銀陸大元捌角正。立批照。
場見叔 元寶(印)
代筆人 廖青雲(花押)
明治丙申年捌月 日立截出山園字人 周明盛(花押)
竹北二堡十寮庄土名七寮三五之二、三五之三
立截出山園字人周明盛兄弟等。緣因先年承買李家之山園,係叔侄兄弟人等備本,按作參股,每股備出本銀壹拾參元陸角正,盛備出本銀陸元捌角正。爰是族戚酌議,福叔姆邱氏備出本銀陸元捌角正,計共每壹股本銀壹拾參元陸角正,將此山園截出四至界址。東至貳鬮毗連種竹為界;南至路生屋角水壢透上;西至大龍種竹為界;北至糞箕窩分水為界。四至界址,即日經族面踏分明。愿將此山園壹處與叔姆邱氏前去掌管,收租納課,永為己業,日後子孫人等不敢異言生端等情。此乃二比甘愿,兩無迫勒。口恐無憑,今欲有憑,立截出山園字壹紙,付為執照。
即日批明:福叔姆邱氏備出本銀陸大元捌角正。立批照。
場見叔 元寶(印)
代筆人 廖青雲(花押)
明治丙申年捌月 日立截出山園字人 周明盛(花押)
其中,「明治丙申年捌月 日」就是很明顯的時間資訊。
當我們要從文件中擷取出這類資訊,會發覺正規表示式 (regular expression) 實在是一個方便的工具。例如,寫一個簡單的式子:
(明治|同治|光緒)\S{1,5}年\S{1,2}月.{1,3}日
就可以擷取出「明治丙申年捌月 日」、「同治拾貳年桂月 日」、「光緒丙子年拾貳月 日」等字串。其中,「\S」 代表任意的「非空白 (white-space) 字元」,「.」可以比對任意的字元,而「{m,n}」則表示符合的字元數目要在 m 與 n 之間。
當然啦,現實總不是那麼簡單與美好。和之前幾篇 posts 類似,總有些打錯的字、莫名其妙的斷行、以及更冗長的時間寫法(例如,「光緒八年歲次壬午拾壹月 日」之類)。此外,古時候中國是採用農曆,有時會有「潤八月」之類的字串出現。因此,要找出合用的正規表示式,就會複雜許多。
星期日, 12月 11, 2005
不願長大
「我沒有長大,我長小了。」
前一陣子告訴寶寶,她已經三歲多、長大了,要學會自己穿衣服、自己刷牙、自己吃飯、自己睡覺。小傢伙竟然說她「長小了」,令人不禁莞爾。
當然,三歲的小孩,經常連自己想表達什麼,都說不甚清楚。但這一陣子,我常覺得,自己是不是也「不願長大」呢?
有人說,中年的主要課題是,摒棄自己想像的一切安全庇蔭,練習對自己負起一切責任。只是,我真的準備好了嗎?
看(聯合報附贈的)紐約時報差不多也有半年的時間了,近來越發覺得自己的英文程度實在不好。有時真的很希望時光倒流:若是自己能夠從十幾年前,就開始閱讀,現在的程度是不是能夠好上許多?
也想起自己兩個月前,是想用一年左右的時間,好好地整理、寫出一些曾感興趣的東西。然而,最近卻幾乎都把時間花在「工作」上了。雖然頗為確定:現在的工作,都是在自己意願下去做的;但是,總是希望時光走得慢些,好讓自己有多些時間來喘息。
想起貓在 Blog 引村上春樹的話語:「四十歲是人生一個很大的轉捩點。那時,我將選擇一些什麼,並捨棄一些什麼。」我想,這應該是個困難、卻又無法逃避的選擇吧。
年近四十,對時光的飛逝,有時真會有股莫名的煩亂。雖感覺不出書上常說的恐懼(不願接受、想找方式來逃避),但卻常帶點無奈、有些悲傷(為逝去的青春感嘆)、更常感困惑:這些日子裡,自己究竟做了些什麼;而接下來的日子,我又想做些什麼、該做些什麼?
想擁有多些時間,來更了解自己。但歲月催人老,不願,卻也無法拒絕長大。
前一陣子告訴寶寶,她已經三歲多、長大了,要學會自己穿衣服、自己刷牙、自己吃飯、自己睡覺。小傢伙竟然說她「長小了」,令人不禁莞爾。
當然,三歲的小孩,經常連自己想表達什麼,都說不甚清楚。但這一陣子,我常覺得,自己是不是也「不願長大」呢?
有人說,中年的主要課題是,摒棄自己想像的一切安全庇蔭,練習對自己負起一切責任。只是,我真的準備好了嗎?
看(聯合報附贈的)紐約時報差不多也有半年的時間了,近來越發覺得自己的英文程度實在不好。有時真的很希望時光倒流:若是自己能夠從十幾年前,就開始閱讀,現在的程度是不是能夠好上許多?
也想起自己兩個月前,是想用一年左右的時間,好好地整理、寫出一些曾感興趣的東西。然而,最近卻幾乎都把時間花在「工作」上了。雖然頗為確定:現在的工作,都是在自己意願下去做的;但是,總是希望時光走得慢些,好讓自己有多些時間來喘息。
想起貓在 Blog 引村上春樹的話語:「四十歲是人生一個很大的轉捩點。那時,我將選擇一些什麼,並捨棄一些什麼。」我想,這應該是個困難、卻又無法逃避的選擇吧。
年近四十,對時光的飛逝,有時真會有股莫名的煩亂。雖感覺不出書上常說的恐懼(不願接受、想找方式來逃避),但卻常帶點無奈、有些悲傷(為逝去的青春感嘆)、更常感困惑:這些日子裡,自己究竟做了些什麼;而接下來的日子,我又想做些什麼、該做些什麼?
想擁有多些時間,來更了解自己。但歲月催人老,不願,卻也無法拒絕長大。
星期五, 12月 09, 2005
星期三, 12月 07, 2005
Seeing through the distance
上週聯合報附贈的紐約時報,有一篇「捷克梅第的女人,訴說她們的故事」。
原文的標題是「Women Who Posed for Giacometti Tell the Tale」,大意是幾位曾讓藝術家 Giacometti 繪描、塑像的女性,回顧她們當模特兒擺姿勢的情景。原文還有附譯稿,可以讓英文程度不怎樣的我,更有機會一窺紐時報導的文采。
我很喜歡中間的許多描述。尤其是,它讓我對這位藝術家的「追求完美、挑戰不可能任務」產生極大的嚮往與敬意。
文中說,Giacometti 對自己雕塑出來的頭像,總是不滿意。而一位模特兒回顧說,她在擺姿勢時,有時會覺得自己好像是靜物,而旁邊的雕像才是活的。她說,Giacometti 的頭像,總是超越物體朝遠方看,總是「看著遠方」(seeing through the distance)。
好一句「seeing through the distance」。雖說被翻譯為「看著遠方」,但我總覺得有「看穿距離」、「洞察時空」的意涵。用它來形容藝術家的執著與追求,真有股力透紙背、畫龍點睛的效果。
原文的標題是「Women Who Posed for Giacometti Tell the Tale」,大意是幾位曾讓藝術家 Giacometti 繪描、塑像的女性,回顧她們當模特兒擺姿勢的情景。原文還有附譯稿,可以讓英文程度不怎樣的我,更有機會一窺紐時報導的文采。
我很喜歡中間的許多描述。尤其是,它讓我對這位藝術家的「追求完美、挑戰不可能任務」產生極大的嚮往與敬意。
文中說,Giacometti 對自己雕塑出來的頭像,總是不滿意。而一位模特兒回顧說,她在擺姿勢時,有時會覺得自己好像是靜物,而旁邊的雕像才是活的。她說,Giacometti 的頭像,總是超越物體朝遠方看,總是「看著遠方」(seeing through the distance)。
好一句「seeing through the distance」。雖說被翻譯為「看著遠方」,但我總覺得有「看穿距離」、「洞察時空」的意涵。用它來形容藝術家的執著與追求,真有股力透紙背、畫龍點睛的效果。
星期日, 12月 04, 2005
星期六, 12月 03, 2005
Obviously ..., so ...
那些東西是「不證自明」、「明顯不過」的呢?
前一陣子某篇post的回應裡,MPH 舉出「刻卜勒的猜想」這本書裡,提到知名數學家也會犯類似的 "Oh, it's obvious!" 錯誤(或可說是「傲慢」吧),看了真的頗有感觸。
也就像 Ankh 對同一篇 post 的回應,什麼樣的東西才算 "obvious"、才算 "trivial"、才算 "clear" 呢?
Papadimitriou 有一本很有名的課本「Computational Complexity」,已經接連著約十年,被台大資工所拿來作為理論課程的教本了。這本書內容廣泛、證明也多半相當漂亮。但是,有多少人會注意到,它有一個證明「應該」是錯誤的呢?
經過了這許多年,似乎沒有太多人注意到這個問題,而更正版也沒有修正。或許,因為這本書的主旨是在「Complexity」,不是在「Logic」,所以很少人在意吧。
說是「應該有錯誤」,是因為我認為它證明有誤。但是,人家可是大師級的理論學者啊,或許是我自己弄錯了呢!(問題出在哪裡呢?出在它前四行半的鋪陳,拉拉雜雜說明了許多沒錯的事實或推論;但這些並不能得到「So, ...」之後的結果。由此觀點來看,這和「芝諾的烏龜」,是不是也有異曲同工的味道?)
我想起時下的一些政治評論與財經報導。許多「看似有理」、「假借客觀方式論證」的文章,通常都會先東扯西扯地說許多沒什麼相關、但也沒怎麼錯的觀察(但通常有意無意地忽略了相反的意見),然後就突然跳到結論。
不甚明白:他們究竟是想說些什麼、是不是真的知道自己想說些什麼。還是,他們其實另有所指、別有所圖?
前一陣子某篇post的回應裡,MPH 舉出「刻卜勒的猜想」這本書裡,提到知名數學家也會犯類似的 "Oh, it's obvious!" 錯誤(或可說是「傲慢」吧),看了真的頗有感觸。
也就像 Ankh 對同一篇 post 的回應,什麼樣的東西才算 "obvious"、才算 "trivial"、才算 "clear" 呢?
Papadimitriou 有一本很有名的課本「Computational Complexity」,已經接連著約十年,被台大資工所拿來作為理論課程的教本了。這本書內容廣泛、證明也多半相當漂亮。但是,有多少人會注意到,它有一個證明「應該」是錯誤的呢?

說是「應該有錯誤」,是因為我認為它證明有誤。但是,人家可是大師級的理論學者啊,或許是我自己弄錯了呢!(問題出在哪裡呢?出在它前四行半的鋪陳,拉拉雜雜說明了許多沒錯的事實或推論;但這些並不能得到「So, ...」之後的結果。由此觀點來看,這和「芝諾的烏龜」,是不是也有異曲同工的味道?)
我想起時下的一些政治評論與財經報導。許多「看似有理」、「假借客觀方式論證」的文章,通常都會先東扯西扯地說許多沒什麼相關、但也沒怎麼錯的觀察(但通常有意無意地忽略了相反的意見),然後就突然跳到結論。
不甚明白:他們究竟是想說些什麼、是不是真的知道自己想說些什麼。還是,他們其實另有所指、別有所圖?
星期二, 11月 29, 2005
芝諾的烏龜
芝諾 (Zeno) 曾提出一個有名的「烏龜悖論」。
希臘戰士阿基里斯跟烏龜賽跑。烏龜說,如果牠比阿基里斯先跑10公尺,那麼阿基里斯永遠都追不上牠。因為只要阿基里斯跑了10公尺,這時烏龜就又多跑了幾公尺;若阿基里斯再跑到烏龜曾經停留的點,烏龜一定又跑到阿基里斯前面去了... 如此這般,阿基里斯永遠追不上烏龜。
這悖論 (paradox) 之所以引人入勝,一個主要原因是:它看似有理,但我們卻很清楚地知曉以上的論證必有錯。用腳趾頭想也知道,善跑者怎麼可能追不上烏龜?
問題是,我們該如何說明論證的錯誤點。先撇開這個悖論中的「時空」觀念(據說,這部分仍然引發學者的爭辯),許多人同意羅素的看法:「從 Cantor 之後,在邏輯上才解決了這個悖論」。
嗯,Cantor 的確是說明了,無窮級數的和,並不一定是無窮大(可能收斂在某個數)。但... 等等,這和悖論的論證,又有什麼關係呢?
原來,論證的錯誤在於:前面的無窮個推論(每當阿基里斯跑到烏龜曾停留的點,烏龜就又往前跑了一小段路),並不能推導出「如此這般,阿基里斯永遠追不上烏龜」的結論。
換句話說,雖然每一步的推論的確都沒有錯,也「看得出來」每一步的推論,都讓阿基里斯與烏龜又多跑了一小段路,但即使有無窮多個「向前推進」的正確推論,我們仍然無法得出「追不上烏龜」的結論。
於是,邏輯上,要證明某項結論,必須經由有限個推理步驟。利用無限個逼近步驟所推得的結論,在邏輯上是無效的。
希臘戰士阿基里斯跟烏龜賽跑。烏龜說,如果牠比阿基里斯先跑10公尺,那麼阿基里斯永遠都追不上牠。因為只要阿基里斯跑了10公尺,這時烏龜就又多跑了幾公尺;若阿基里斯再跑到烏龜曾經停留的點,烏龜一定又跑到阿基里斯前面去了... 如此這般,阿基里斯永遠追不上烏龜。
這悖論 (paradox) 之所以引人入勝,一個主要原因是:它看似有理,但我們卻很清楚地知曉以上的論證必有錯。用腳趾頭想也知道,善跑者怎麼可能追不上烏龜?
問題是,我們該如何說明論證的錯誤點。先撇開這個悖論中的「時空」觀念(據說,這部分仍然引發學者的爭辯),許多人同意羅素的看法:「從 Cantor 之後,在邏輯上才解決了這個悖論」。
嗯,Cantor 的確是說明了,無窮級數的和,並不一定是無窮大(可能收斂在某個數)。但... 等等,這和悖論的論證,又有什麼關係呢?
原來,論證的錯誤在於:前面的無窮個推論(每當阿基里斯跑到烏龜曾停留的點,烏龜就又往前跑了一小段路),並不能推導出「如此這般,阿基里斯永遠追不上烏龜」的結論。
換句話說,雖然每一步的推論的確都沒有錯,也「看得出來」每一步的推論,都讓阿基里斯與烏龜又多跑了一小段路,但即使有無窮多個「向前推進」的正確推論,我們仍然無法得出「追不上烏龜」的結論。
於是,邏輯上,要證明某項結論,必須經由有限個推理步驟。利用無限個逼近步驟所推得的結論,在邏輯上是無效的。
星期六, 11月 26, 2005
朝三暮四
朝三暮四,是一則歷久彌新、發人深省的寓言。
我想,莊子真是個細心的人。他竟然觀察到,春秋時期,猴子就已經很聰明了。牠們知道:先拿到的先贏。早上先拿到栗子,即使不拿去投資,把栗子儲存起來,得到的樂趣也(比晚上再拿到)更多!
究竟是猴子愚魯,不知道「3 + 4 = 4 + 3」;狙公狡猾(或聰明),懂得搬弄「朝三暮四、朝四暮三」來取悅猴子;還是猴子竟比想像中的還要聰明,知道先取先贏(很像社會現況呢)的道理?
感覺寓言的巧妙,有時竟可從不同角度、不同層次,得到不同的解讀。莊子真的很有智慧。
狙公賦芧,曰:『朝三而暮四。』眾狙皆怒。曰:『然則朝四而暮三。』眾狙皆悅。
---《莊子‧齊物論》
我想,莊子真是個細心的人。他竟然觀察到,春秋時期,猴子就已經很聰明了。牠們知道:先拿到的先贏。早上先拿到栗子,即使不拿去投資,把栗子儲存起來,得到的樂趣也(比晚上再拿到)更多!
究竟是猴子愚魯,不知道「3 + 4 = 4 + 3」;狙公狡猾(或聰明),懂得搬弄「朝三暮四、朝四暮三」來取悅猴子;還是猴子竟比想像中的還要聰明,知道先取先贏(很像社會現況呢)的道理?
感覺寓言的巧妙,有時竟可從不同角度、不同層次,得到不同的解讀。莊子真的很有智慧。
星期四, 11月 24, 2005
談古契書資料處理:之三
要做好資訊處理,必須對「欲處理的資訊內容」有些最起碼的認識。
很不幸(或很幸運 --- 因為問題難纏,所以很少人願意花力氣去做)地,一般的古籍,是沒有標點符號的。一篇沒有標注逗點、句點符號的文章,看起來可是有夠令人氣餒的。
不信?請看這一小段摘錄下來的「古地契」:
要處理古契書,多多少少就得花些時間看看這些契書的內容、並看看它們有沒有一些可資利用的樣式(patterns)。不過,一般資訊人(嗯,或許是阿尼說的「資遜人」?)看到像這樣未經標注的古文,沒有昏倒、也很難著性子看完幾篇吧。
適當的標注,也會影響到文章的解讀。就像是著名的「下雨天留客天天留我不留」,加上不同的標注後,可以產生迥然不同的解釋:「下雨天、留客天,天留、我不留」、「下雨天留客,天天留我不?留」。
碰到這類棘手的問題,一種方式是花錢請「專家」來標注。好吧,就算我們請一些「歷史系的專家或學生們」來對一些古文加上標注,也假設他們的標注是可接受的;接下來也還是會遇到中文處理的許多困難,其中之一就是「斷詞」。
一般來說,中英文都沒有斷字的問題。英文嘛,一個「字」(word) 是由 a, b, c 等英文字母組成,字與字之間可由空白、逗點等來區隔。例如,"This is a book." 這個句子,其中 "this"、 "is"、"a"、"book" 都是個別的「字」。而中文由於是方塊字,每一個字有獨立的字碼,也沒有斷字的問題。
但是,在中文裡,個別看每一個字,通常對內文的了解沒有什麼幫助;數個字連接起來成為一個「詞」之後,這個詞才會具備特定的意義。例如,「新」、「竹」如果分開來看,與「新竹」的意義,經常是完全不同的。
所以,中文有斷詞的問題。在前頭舉的古地契例子裡,「山埔」、「田薗」、「南港」、「鹿廚溪」都可以算作獨立的「詞」;但看起來像是個人名的「黃鼎愛斯」呢?是該斷作「黃鼎愛」、還是「黃鼎愛斯」?
可以想見,適當的標注,有助於斷詞的正確性。至少,我們知道一個詞不應橫跨由標點符號隔開的兩個子句。但是,即使有加上標點,想要適當地斷詞 --- 甚至斷出「地理名詞」、「人名」等特殊意義的詞彙 --- 都還是一項艱難的挑戰。
很不幸(或很幸運 --- 因為問題難纏,所以很少人願意花力氣去做)地,一般的古籍,是沒有標點符號的。一篇沒有標注逗點、句點符號的文章,看起來可是有夠令人氣餒的。
不信?請看這一小段摘錄下來的「古地契」:
立杜賣斷根山埔田薗字人黃鼎愛斯先年承買有山埔地壹所坐落土名南港鹿廚溪尾四至界址載在總契詳明金因乏銀別立母特此地東片拆開壹角東至陳家小溪田崁直上龍崗倒水為界西至波塘下帶田壹大坵左君子田唇毗連直透橫崗倒水為界南至左君子会埔直透大凸為界北至伯公艮直透洽溪為界四至界址同中面踏分明...
要處理古契書,多多少少就得花些時間看看這些契書的內容、並看看它們有沒有一些可資利用的樣式(patterns)。不過,一般資訊人(嗯,或許是阿尼說的「資遜人」?)看到像這樣未經標注的古文,沒有昏倒、也很難著性子看完幾篇吧。
適當的標注,也會影響到文章的解讀。就像是著名的「下雨天留客天天留我不留」,加上不同的標注後,可以產生迥然不同的解釋:「下雨天、留客天,天留、我不留」、「下雨天留客,天天留我不?留」。
碰到這類棘手的問題,一種方式是花錢請「專家」來標注。好吧,就算我們請一些「歷史系的專家或學生們」來對一些古文加上標注,也假設他們的標注是可接受的;接下來也還是會遇到中文處理的許多困難,其中之一就是「斷詞」。
一般來說,中英文都沒有斷字的問題。英文嘛,一個「字」(word) 是由 a, b, c 等英文字母組成,字與字之間可由空白、逗點等來區隔。例如,"This is a book." 這個句子,其中 "this"、 "is"、"a"、"book" 都是個別的「字」。而中文由於是方塊字,每一個字有獨立的字碼,也沒有斷字的問題。
但是,在中文裡,個別看每一個字,通常對內文的了解沒有什麼幫助;數個字連接起來成為一個「詞」之後,這個詞才會具備特定的意義。例如,「新」、「竹」如果分開來看,與「新竹」的意義,經常是完全不同的。
所以,中文有斷詞的問題。在前頭舉的古地契例子裡,「山埔」、「田薗」、「南港」、「鹿廚溪」都可以算作獨立的「詞」;但看起來像是個人名的「黃鼎愛斯」呢?是該斷作「黃鼎愛」、還是「黃鼎愛斯」?
可以想見,適當的標注,有助於斷詞的正確性。至少,我們知道一個詞不應橫跨由標點符號隔開的兩個子句。但是,即使有加上標點,想要適當地斷詞 --- 甚至斷出「地理名詞」、「人名」等特殊意義的詞彙 --- 都還是一項艱難的挑戰。
星期一, 11月 21, 2005
戴帽子問題
有沒有聽說過「戴帽子問題」?
問題的描述是這樣的:有三頂黑帽與兩頂白帽,自其中挑選三頂,讓 A、B、C 分別戴上一頂後,讓 A 排在 B 之前,B 排在 C 之前,形成一直線。每個人可以看到排在自己前面的人所戴的帽子顏色,但是卻看不到自己或排在自己後面的人所戴的帽子。現在,問 C 是否知道自己的帽子顏色,C 回答「不知」;接著問 B 是否知道自己戴的帽子顏色,B 也回答「不知」。最後,問 A 是否知道自己戴何色的帽子,A 卻回答「知道」。那麼,A 戴的帽子顏色是什麼呢?他又如何推斷出自己的帽色?
就像一般的邏輯問題,我們可以從證明論(Proof Theory;例如從「若 P 則 Q」以及「P」,可推斷出「Q」)或模型論(Model Theory;例如,窮舉所有可能性,然後說明,在所有的狀況下都成立)來著手解決。
一般的解答,都是利用證明論來解釋:
A 自問:我的帽子是白色的嗎?如果是,B 可以推論他自己的帽子是黑色的;因為若 B 的帽子也是白色的,C 就會看見兩頂白帽,從而推斷出自己戴黑色的帽子。然而,B 並沒有推斷出他自己戴什麼顏色的帽子,因此一開始的假設「A 帶白帽」不成立,因此可推斷出「A 帶黑帽」。
這個解答,因為用到數次「反證法」(Proof By Contradiction;用「非 P」為偽來證明「P」為真),因此很容易讓人有「喔,好聰明的解答啊」之感。不過,若換個角度,從模型論的觀點來看,或許可以得到更深刻的直觀:
參考上圖,帶黑帽標示為小寫 b,戴白帽則標示為小寫 w。
首先,我們知道,每個人頭上都帶有一頂帽子,因此 A, B, C 戴的帽子可能性,共有 8 種(參考圖 (1),每一列是一種可能性)。
但問題又敘述說,黑帽有三頂(或三頂以上),而白帽只有兩頂,因此不可能三人都戴著白帽(參考圖 (2),我們把三人都戴白帽的狀況用紅線刪除掉)。
接下來,問題又說:「問 C,回答不知自己所戴帽色」。因為 C 可以看見 A, B 所戴的帽子顏色,所以從圖 (2) 可知,A 與 B 不能夠同時戴有白帽(換句話說,A, B 若同時戴有白帽,則從圖 (2) 的第七列,C 可知自己戴著白帽)。所以,我們可以把 A, B 同時戴有白帽的狀況刪除(如圖 (3))。
然後,問題說,「接著,詢問 B,也不知自己戴那種顏色的帽子」。因為圖 (3) 說明了,若 A 戴白帽,則 B 必然戴著黑色帽子(圖 (3) 的前四列說明了,若 A 戴黑帽,B 可能戴黑帽、也可能戴白帽;而接下來的兩列則說明,若 A 戴著白帽,則 B 必然戴著黑帽)。不過,由於 B 回答他不知道自己的帽色,因此,我們可以把 A 戴白帽,B 戴黑帽的狀況刪除(參考圖 (4))。
最後,問 A 知不知道自己戴哪種顏色的帽子。因為在圖 (4) 的所有可能狀況中,A 都必然戴有黑帽,所以 A 可以很有自信地回答:「我戴黑色的帽子」。
問題的描述是這樣的:有三頂黑帽與兩頂白帽,自其中挑選三頂,讓 A、B、C 分別戴上一頂後,讓 A 排在 B 之前,B 排在 C 之前,形成一直線。每個人可以看到排在自己前面的人所戴的帽子顏色,但是卻看不到自己或排在自己後面的人所戴的帽子。現在,問 C 是否知道自己的帽子顏色,C 回答「不知」;接著問 B 是否知道自己戴的帽子顏色,B 也回答「不知」。最後,問 A 是否知道自己戴何色的帽子,A 卻回答「知道」。那麼,A 戴的帽子顏色是什麼呢?他又如何推斷出自己的帽色?
就像一般的邏輯問題,我們可以從證明論(Proof Theory;例如從「若 P 則 Q」以及「P」,可推斷出「Q」)或模型論(Model Theory;例如,窮舉所有可能性,然後說明,在所有的狀況下都成立)來著手解決。
一般的解答,都是利用證明論來解釋:
A 自問:我的帽子是白色的嗎?如果是,B 可以推論他自己的帽子是黑色的;因為若 B 的帽子也是白色的,C 就會看見兩頂白帽,從而推斷出自己戴黑色的帽子。然而,B 並沒有推斷出他自己戴什麼顏色的帽子,因此一開始的假設「A 帶白帽」不成立,因此可推斷出「A 帶黑帽」。
這個解答,因為用到數次「反證法」(Proof By Contradiction;用「非 P」為偽來證明「P」為真),因此很容易讓人有「喔,好聰明的解答啊」之感。不過,若換個角度,從模型論的觀點來看,或許可以得到更深刻的直觀:

首先,我們知道,每個人頭上都帶有一頂帽子,因此 A, B, C 戴的帽子可能性,共有 8 種(參考圖 (1),每一列是一種可能性)。
但問題又敘述說,黑帽有三頂(或三頂以上),而白帽只有兩頂,因此不可能三人都戴著白帽(參考圖 (2),我們把三人都戴白帽的狀況用紅線刪除掉)。
接下來,問題又說:「問 C,回答不知自己所戴帽色」。因為 C 可以看見 A, B 所戴的帽子顏色,所以從圖 (2) 可知,A 與 B 不能夠同時戴有白帽(換句話說,A, B 若同時戴有白帽,則從圖 (2) 的第七列,C 可知自己戴著白帽)。所以,我們可以把 A, B 同時戴有白帽的狀況刪除(如圖 (3))。
然後,問題說,「接著,詢問 B,也不知自己戴那種顏色的帽子」。因為圖 (3) 說明了,若 A 戴白帽,則 B 必然戴著黑色帽子(圖 (3) 的前四列說明了,若 A 戴黑帽,B 可能戴黑帽、也可能戴白帽;而接下來的兩列則說明,若 A 戴著白帽,則 B 必然戴著黑帽)。不過,由於 B 回答他不知道自己的帽色,因此,我們可以把 A 戴白帽,B 戴黑帽的狀況刪除(參考圖 (4))。
最後,問 A 知不知道自己戴哪種顏色的帽子。因為在圖 (4) 的所有可能狀況中,A 都必然戴有黑帽,所以 A 可以很有自信地回答:「我戴黑色的帽子」。
星期六, 11月 19, 2005
MySQL 也支援全文檢索
要提供一套查詢、檢索文件的系統,「全文檢索」(full-text retrieval;使用者輸入 query 字串,系統會把這個字串與文件的全文字串做比對,來找出符合 query 的文件們) 已經是不可或缺的要角了。
沒有人會質疑 Google 搜尋引擎的威力吧。事實上,Google 搜尋引擎做得最好的,就是能針對使用者下的 full-text query,在極短時間內,從非常大量的網路文件庫中,找出(並排序)「最有可能滿足使用者 query」的文件(URL、摘要、以及庫存檔)。
而實驗室既然想做一套「古契書的檢索系統」,當然也得提供全文檢索的功能。不過,現實面上,很容易就會處於抉擇的難點。難以抉擇的地方在哪兒呢?原來,我們的系統,並不只是想提供全文檢索,還希望利用其他的 metadata(好像是翻譯為「詮釋資料」吧)來增進檢索的效能。
於是,系統可能就得整合一套關連式資料庫 (RDDB)、與一套全文檢索系統(例如,Apache 的 Lucene project)。「整合」總是件吃力卻不怎麼討好的工作。
雖然 Microsoft SQL Server 很早就有同時提供 RDDB 與 full-text retrieval 的功能,但是實驗室老闆是很討厭 M$ 的;Oracle 有很好的 RDDB,但全文索引不是內建;因此,腦筋通常都會動到開放原始碼的 MySQL 上。
很高興地看見,MySQL 文件上,說它是支援全文檢索的。不過,實際跑了跑,就會有些沮喪:對中文資料而言,似乎行不通。手冊、甚至是網路文件上,對於如何處理中文的全文檢索,雖有片段的說明,卻缺乏完整的實例。
好吧,這又是一個需要做實驗(測試、並嘗試找到解答)的地方。「實驗室」嘛,就是得做做實驗,不是嗎?
透過以下這些步驟,應該可以讓 MySQL 處理中文的全文檢索:
沒有人會質疑 Google 搜尋引擎的威力吧。事實上,Google 搜尋引擎做得最好的,就是能針對使用者下的 full-text query,在極短時間內,從非常大量的網路文件庫中,找出(並排序)「最有可能滿足使用者 query」的文件(URL、摘要、以及庫存檔)。
而實驗室既然想做一套「古契書的檢索系統」,當然也得提供全文檢索的功能。不過,現實面上,很容易就會處於抉擇的難點。難以抉擇的地方在哪兒呢?原來,我們的系統,並不只是想提供全文檢索,還希望利用其他的 metadata(好像是翻譯為「詮釋資料」吧)來增進檢索的效能。
於是,系統可能就得整合一套關連式資料庫 (RDDB)、與一套全文檢索系統(例如,Apache 的 Lucene project)。「整合」總是件吃力卻不怎麼討好的工作。
雖然 Microsoft SQL Server 很早就有同時提供 RDDB 與 full-text retrieval 的功能,但是實驗室老闆是很討厭 M$ 的;Oracle 有很好的 RDDB,但全文索引不是內建;因此,腦筋通常都會動到開放原始碼的 MySQL 上。
很高興地看見,MySQL 文件上,說它是支援全文檢索的。不過,實際跑了跑,就會有些沮喪:對中文資料而言,似乎行不通。手冊、甚至是網路文件上,對於如何處理中文的全文檢索,雖有片段的說明,卻缺乏完整的實例。
好吧,這又是一個需要做實驗(測試、並嘗試找到解答)的地方。「實驗室」嘛,就是得做做實驗,不是嗎?
透過以下這些步驟,應該可以讓 MySQL 處理中文的全文檢索:
- 資料庫採用 UTF-8 編碼格式,以支援中文。此外,欲提供全文檢索,資料表必須採用 MyISAM 的型態。例如,CREATE TABLE table_name (...) ENGINE=MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci;。
- 在資料表內建立欄位的全文索引。由於 MySQL 並不支援中文的斷字,因此我們目前還得新增一個欄位來儲存輔助全文檢索。例如,假設我們想對 DOC 欄位做全文索引,那麼除了 DOC 之外,我們還得新增一個(名稱自取的)DOC_FOR_FULLTEXT 欄位。然後,在 CREATE TABLE 時,加入 FULLTEXT (DOC_FOR_FULLTEXT) 來對這個輔助欄位的資料,建立全文索引。
- 將全文資料填入 DOC 欄位時,也將「自行斷字處理後的文件字串」填到 DOC_FOR_FULLTEXT 欄位裡。例如,假設要填入 DOC 欄位的全文是"新竹縣東興庄",那我們也同時將斷字後的 "新 竹 縣 東 興 庄 "(註:若字串內容為 UTF-16 Little Endian 編碼,利用 PHP 的 chunk_split() 可以在字串內,每隔兩個 bytes 插入一個空白字元 "\x20\0")填入 DOC_FOR_FULLTEXT 欄位。
- 執行 full-text SQL query 前,先執行 SET NAMES 'utf8'
- full-text SQL query 長得像這副模樣: SELECT * FROM
WHERE MATCH (DOC_FOR_FULLTEXT) AGAINST ($fulltext_query IN BOOLEAN MODE) 。其中,$fulltext_query 是一個對 user query 做過處理的字串。例如,若使用者輸入「新竹」,則 $fulltext_query 需要被處理為「'"新 竹"'」(注意:「新」與「竹」之間要有空白斷開,「新 竹」要用單引號框住雙引號;還有,不要忘記,SQL query 必須以 UTF-8 編碼的)。
星期三, 11月 16, 2005
Oh, it's obvious
在 Maryland 求學時,曾發生一件事情,讓我至今印象深刻。
當時,我是計算理論 (Theory of Computation) 的助教(但因為英文程度不夠好,並不是擔任需要上台授課的 TA;而只是改改作業與考卷、回答學生問題的 Grader)。有一天,一位頗有年紀的女學生,到助教室來問我一個問題(有些可惜,我已經忘記當時的題目是什麼了)。
那時討論到某段證明的一個癥結點。她問說:"Why?" 我回答 "Oh, it's obvious." 結果她滿臉苦惱,說了一段令我至今難忘的話:"It's obvious... I hate obvious!"(答案很顯然... 我厭恨這種「顯然」!)
至今我仍難忘她當時那副沮喪苦惱的表情。為什麼我忘不了這一幕?因為,事後我稍微仔細地想了想,發覺自己其實也不是那麼了解;換句話說,當時我的回答,算是自欺欺人的作為!
但為什麼當時沒有立即承認、只隱隱地告訴自己「嗯,有些不對勁...」呢?或許,一個很可能的原因是,雖然自己當時只是似懂非懂、一知半解;但有學生來問問題,實在無法大大方方、毫無羞愧地說:「我不懂、我不知道」。
也或許,這是難以避免的成長歷程。
在許多課本或者課堂上,都經常看見或聽到 "It's obvious" 或甚至 "It's trivial!" 的回答。雖然我們不太好懷疑,作者或者講課的老師,對問題的答案,是否真的感到「明顯、微不足道」,但我仍強烈地贊同「知之為知之,不知為不知」、甚至「打破沙鍋問到底」的求知態度。
下次,回答 "Oh, it's obvious" 前,讓我們先謹慎地問問自己,是不是「真的那麼顯而易見」罷。
當時,我是計算理論 (Theory of Computation) 的助教(但因為英文程度不夠好,並不是擔任需要上台授課的 TA;而只是改改作業與考卷、回答學生問題的 Grader)。有一天,一位頗有年紀的女學生,到助教室來問我一個問題(有些可惜,我已經忘記當時的題目是什麼了)。
那時討論到某段證明的一個癥結點。她問說:"Why?" 我回答 "Oh, it's obvious." 結果她滿臉苦惱,說了一段令我至今難忘的話:"It's obvious... I hate obvious!"(答案很顯然... 我厭恨這種「顯然」!)
至今我仍難忘她當時那副沮喪苦惱的表情。為什麼我忘不了這一幕?因為,事後我稍微仔細地想了想,發覺自己其實也不是那麼了解;換句話說,當時我的回答,算是自欺欺人的作為!
但為什麼當時沒有立即承認、只隱隱地告訴自己「嗯,有些不對勁...」呢?或許,一個很可能的原因是,雖然自己當時只是似懂非懂、一知半解;但有學生來問問題,實在無法大大方方、毫無羞愧地說:「我不懂、我不知道」。
也或許,這是難以避免的成長歷程。
在許多課本或者課堂上,都經常看見或聽到 "It's obvious" 或甚至 "It's trivial!" 的回答。雖然我們不太好懷疑,作者或者講課的老師,對問題的答案,是否真的感到「明顯、微不足道」,但我仍強烈地贊同「知之為知之,不知為不知」、甚至「打破沙鍋問到底」的求知態度。
下次,回答 "Oh, it's obvious" 前,讓我們先謹慎地問問自己,是不是「真的那麼顯而易見」罷。
星期日, 11月 13, 2005
談古契書資料處理:之二
上回談到古契書資料處理的一些棘手處。
在數位化的過程中,必須有人介入(掃瞄、打字等等)來產生「第一手的數位化資料」。這裡的重點是:有人介入,就會有錯誤產生。有時是看錯原籍,有時是打錯字詞,有時則是心不在焉、錯誤連連。此時,如果沒有安排「校對」的人力(據說,實驗室的古籍資料,是有安排校稿的人力;但從結果看來,似乎在品質上沒有改進太多),寫程式來做後續處理的人,就注定陷入一番苦戰了。
此外,如果沒有事先加以規範(但老實說,要「事先」就知道困難所在、並加以防範處理,是相當不容易的),即使看到同樣的字,不同的輸入人員可能會將其數位化成「形狀類似、但實際上不同」的字碼。例如,古契書裡並沒有使用阿拉伯數字,因此 40 會寫成「四〇」。從實際數位化的資料來看,至少有「四〇」、「四O」、「四0」、「四○」(這些「零」--- 〇O0○---看起來很相似吧?)等幾種不同的結果。
如果數位化資料只是供人閱讀,那倒還好;但若想對這些資料做進一步的處理,寫成不同的字碼,會導致寫程式做進一步處理時的困擾(例如,要搜尋文件中出現「四〇」字串),甚至會導致資料轉換的錯誤。
最後,還想再為「編碼」所導致的煩惱多說幾句。事實上,光是編碼、轉碼的問題,就夠資料處理的人員忙翻了。多種編碼共存也就算了,開發工具與國際組織們,往往也各支援不同的標準。例如,目前的 PHP 版本,就只支援 ISO-8859-1 編碼格式的程式;Windows 與 Java 內部則是採用 Unicode (不過,前者是 Little Endian 編碼;後者是 Big Endian 編碼);而現在流行的 XML 則建議使用 UTF-8。
怎麼這麼多種「標準」啊?從技術的觀點來看,每種編碼是各有其優缺點。但我有時不免會想:那些英語系國家的開發人員,大概不曉得處理這種編碼轉換是多麼令人厭煩吧。
在數位化的過程中,必須有人介入(掃瞄、打字等等)來產生「第一手的數位化資料」。這裡的重點是:有人介入,就會有錯誤產生。有時是看錯原籍,有時是打錯字詞,有時則是心不在焉、錯誤連連。此時,如果沒有安排「校對」的人力(據說,實驗室的古籍資料,是有安排校稿的人力;但從結果看來,似乎在品質上沒有改進太多),寫程式來做後續處理的人,就注定陷入一番苦戰了。
此外,如果沒有事先加以規範(但老實說,要「事先」就知道困難所在、並加以防範處理,是相當不容易的),即使看到同樣的字,不同的輸入人員可能會將其數位化成「形狀類似、但實際上不同」的字碼。例如,古契書裡並沒有使用阿拉伯數字,因此 40 會寫成「四〇」。從實際數位化的資料來看,至少有「四〇」、「四O」、「四0」、「四○」(這些「零」--- 〇O0○---看起來很相似吧?)等幾種不同的結果。
如果數位化資料只是供人閱讀,那倒還好;但若想對這些資料做進一步的處理,寫成不同的字碼,會導致寫程式做進一步處理時的困擾(例如,要搜尋文件中出現「四〇」字串),甚至會導致資料轉換的錯誤。
最後,還想再為「編碼」所導致的煩惱多說幾句。事實上,光是編碼、轉碼的問題,就夠資料處理的人員忙翻了。多種編碼共存也就算了,開發工具與國際組織們,往往也各支援不同的標準。例如,目前的 PHP 版本,就只支援 ISO-8859-1 編碼格式的程式;Windows 與 Java 內部則是採用 Unicode (不過,前者是 Little Endian 編碼;後者是 Big Endian 編碼);而現在流行的 XML 則建議使用 UTF-8。
怎麼這麼多種「標準」啊?從技術的觀點來看,每種編碼是各有其優缺點。但我有時不免會想:那些英語系國家的開發人員,大概不曉得處理這種編碼轉換是多麼令人厭煩吧。
星期四, 11月 10, 2005
技能、態度、注意力
教育(或者說專業教育)的主要目的是什麼呢?
"The main purpose of professional education is development of skills; the main purpose of education in subjects like mathematics, physics or philosophy is development of attitudes." Discrete Thoughts 的作者如是說。他們認為,專業教育是要發展技能,而數學、物理、哲學等科目的教育目的,則是在發展態度。(喔,或許,理學院與工學院的差異也在於此?)
在一本小書裡,則看到這樣的話:法國的思想家 Simone Weil 認為,注意力的培養,是學校教學的真正目的;它是唯一的意義所在,其他的意義都是第二位的。(且不說獲取知識就需要專心一致;如果不能夠聚精會神、專注地做某件事情,再多的知識又有什麼用呢?)
接受了十幾年的教育,我們在技能、態度、與注意力上,是否學到了什麼?
"The main purpose of professional education is development of skills; the main purpose of education in subjects like mathematics, physics or philosophy is development of attitudes." Discrete Thoughts 的作者如是說。他們認為,專業教育是要發展技能,而數學、物理、哲學等科目的教育目的,則是在發展態度。(喔,或許,理學院與工學院的差異也在於此?)
在一本小書裡,則看到這樣的話:法國的思想家 Simone Weil 認為,注意力的培養,是學校教學的真正目的;它是唯一的意義所在,其他的意義都是第二位的。(且不說獲取知識就需要專心一致;如果不能夠聚精會神、專注地做某件事情,再多的知識又有什麼用呢?)
接受了十幾年的教育,我們在技能、態度、與注意力上,是否學到了什麼?
星期二, 11月 08, 2005
摸著牆走迷宮
在迷宮裡,要如何找到出口呢?
很多人應該都聽過「摸著牆壁走」的方法:只要一直摸著右邊(或者左邊)的牆走,最後一定可以走出迷宮(例如,「迷宮、黃金比、索馬立方體」這本書,就有提到這種策略)。
但是,為什麼這種策略可以行得通呢?

原來,在概念上,沿著一邊的牆壁走,就相當於在執行「深度優先搜尋」(DFS, depth-first search)。參考上面的圖形,應該可以給我們一些感覺:給定左側的小迷宮,目標是由 A 點走到 C 點;而迷宮的樹狀圖(在此先假設迷宮任兩點間只有唯一的一條路)如中間圖所示:最右側的圖,則畫出「摸著右側牆壁走」的路線(迷宮中的藍線,就相當於樹狀圖)。
這樣的走迷宮策略,有什麼限制嗎?如果,迷宮是多連通(multiple-connected,兩個迷宮格之間,不必然只有唯一的路)的,那怎麼辦呢?
一般來說,即使迷宮是多連通的,「摸著牆走迷宮」的策略依然行得通。例如,在下面的圖形裡,我們要從入口 A 點,走到出口 D 點。因為 F-E-I-M-N-O-P-L-K-G-F 構成一個圈 (circle, loop),因此從 F 到 G 有兩條路可走:F-E-I-M-N-O-P-L-K-G 或者 F-G。中間的圖形,說明了沿著右側牆壁走,依然可以從 A 點走到 D 點。(事實上,只要「迷宮出入口」不在這個圈子內 --- 例如 J 點 --- 這個方法就行得通。)

像這樣的圖說,當然不能算是證明。不過,有了直觀後,通常證明就呼之欲出了。有趣的是,這樣的走迷宮策略,與現實生活處理問題的方式,還有著可類比之處:有 時,我們會找不到方法來解決現實環境碰到的問題。這種時候,或許只能依靠「摸著牆壁走」的方式,藉由拓展對問題(空間)的認知,一步一步地走出迷宮呢。
很多人應該都聽過「摸著牆壁走」的方法:只要一直摸著右邊(或者左邊)的牆走,最後一定可以走出迷宮(例如,「迷宮、黃金比、索馬立方體」這本書,就有提到這種策略)。
但是,為什麼這種策略可以行得通呢?

原來,在概念上,沿著一邊的牆壁走,就相當於在執行「深度優先搜尋」(DFS, depth-first search)。參考上面的圖形,應該可以給我們一些感覺:給定左側的小迷宮,目標是由 A 點走到 C 點;而迷宮的樹狀圖(在此先假設迷宮任兩點間只有唯一的一條路)如中間圖所示:最右側的圖,則畫出「摸著右側牆壁走」的路線(迷宮中的藍線,就相當於樹狀圖)。
這樣的走迷宮策略,有什麼限制嗎?如果,迷宮是多連通(multiple-connected,兩個迷宮格之間,不必然只有唯一的路)的,那怎麼辦呢?
一般來說,即使迷宮是多連通的,「摸著牆走迷宮」的策略依然行得通。例如,在下面的圖形裡,我們要從入口 A 點,走到出口 D 點。因為 F-E-I-M-N-O-P-L-K-G-F 構成一個圈 (circle, loop),因此從 F 到 G 有兩條路可走:F-E-I-M-N-O-P-L-K-G 或者 F-G。中間的圖形,說明了沿著右側牆壁走,依然可以從 A 點走到 D 點。(事實上,只要「迷宮出入口」不在這個圈子內 --- 例如 J 點 --- 這個方法就行得通。)

像這樣的圖說,當然不能算是證明。不過,有了直觀後,通常證明就呼之欲出了。有趣的是,這樣的走迷宮策略,與現實生活處理問題的方式,還有著可類比之處:有 時,我們會找不到方法來解決現實環境碰到的問題。這種時候,或許只能依靠「摸著牆壁走」的方式,藉由拓展對問題(空間)的認知,一步一步地走出迷宮呢。
星期四, 11月 03, 2005
談古契書資料處理:之一
這一陣子在「想寫的文章」上進展頗為遲緩 --- 那我在忙些什麼啊?
嗯,一言難盡。簡單地說,是在做實驗室古契書電子檔的一些資料處理實驗。
實驗室裡,多年來持續在進行一個 THDL (Taiwan History Digital Library,台灣歷史數位化圖書館)的計畫。希望能藉由電腦科技與數位化古籍資料,來改善歷史學者(與一般民眾)對台灣歷史的研究與了解。
因此,實驗室有著許多「花不少錢」請人數位化的台灣古契書資料。然而,光是「資料數位化」這個過程,其實就隱含著許多困難。例如,古契書常常會有一些奇特的字,沒有被收錄到 Big5 或者 Unicode 裡,而這就產生了「缺字問題」。
除了這個相對明顯的「缺字問題」外,還有一些努力(或者說是苦工)就經常被忽視。例如,將這些不同 corpus(文獻集)的資料數位化時,通常都是請人「把文件內容掃描、打字」來取得數位資訊的,因而就產生了「資料彙整」的問題。例如,若打字人員是用 Microsoft Word 來鍵入資料,那麼我們最後還是得寫程式來將文字資料從 Word 文件中轉出。
對文件做資料格式轉換,聽起來也沒有什麼。不過,它背後還隱含著文件編碼(Big5、UTF-16 Big Endian、UTF-16 Little Endian、UTF-8)的假設。於是,用 Java 寫的轉換程式,輸出就是 UTF-16 Big Endian 的格式 -- 這讓我稍嫌老舊的 UltraEdit「無法正常編輯檢視」,於是我就得花點力氣再將它們再轉成 UTF-16 Little Endian 編碼。
另一方面,寫程式從 Word 文件將文字資料轉出,有可能對某些文件處理失敗。通常,這部分的努力很少得到「長官」合適的重視,也因此讓「資料處理」成為一件吃力不討好的差事。
經過一些資料檢視與實驗,我對於實驗室學弟妹們的辛苦(做了很多雜事,卻沒有被 appreciate 到的感覺),其實是有一份理解的。
嗯,一言難盡。簡單地說,是在做實驗室古契書電子檔的一些資料處理實驗。
實驗室裡,多年來持續在進行一個 THDL (Taiwan History Digital Library,台灣歷史數位化圖書館)的計畫。希望能藉由電腦科技與數位化古籍資料,來改善歷史學者(與一般民眾)對台灣歷史的研究與了解。
因此,實驗室有著許多「花不少錢」請人數位化的台灣古契書資料。然而,光是「資料數位化」這個過程,其實就隱含著許多困難。例如,古契書常常會有一些奇特的字,沒有被收錄到 Big5 或者 Unicode 裡,而這就產生了「缺字問題」。
除了這個相對明顯的「缺字問題」外,還有一些努力(或者說是苦工)就經常被忽視。例如,將這些不同 corpus(文獻集)的資料數位化時,通常都是請人「把文件內容掃描、打字」來取得數位資訊的,因而就產生了「資料彙整」的問題。例如,若打字人員是用 Microsoft Word 來鍵入資料,那麼我們最後還是得寫程式來將文字資料從 Word 文件中轉出。
對文件做資料格式轉換,聽起來也沒有什麼。不過,它背後還隱含著文件編碼(Big5、UTF-16 Big Endian、UTF-16 Little Endian、UTF-8)的假設。於是,用 Java 寫的轉換程式,輸出就是 UTF-16 Big Endian 的格式 -- 這讓我稍嫌老舊的 UltraEdit「無法正常編輯檢視」,於是我就得花點力氣再將它們再轉成 UTF-16 Little Endian 編碼。
另一方面,寫程式從 Word 文件將文字資料轉出,有可能對某些文件處理失敗。通常,這部分的努力很少得到「長官」合適的重視,也因此讓「資料處理」成為一件吃力不討好的差事。
經過一些資料檢視與實驗,我對於實驗室學弟妹們的辛苦(做了很多雜事,卻沒有被 appreciate 到的感覺),其實是有一份理解的。
星期二, 11月 01, 2005
一無所有
日子過得很快,回鍋做博士後研究,也滿一個月了。
這個月來,對實驗室的環境漸漸進入狀況。主要的工作,就是在實驗室幫助學弟妹們討論、釐清研究主題與方向。此外,旁聽了一場座談會,並且代替項老師主持了兩次實驗室 meetings。
就像是貓所描述的「四十歲中年危機」,自己這一陣子,在自我認同、自我觀念上,確實有些變化。幾天前帶寶寶到中正紀念堂參觀「廣場藝術節」展覽,意外碰到大學同學老鮑,他的孩子已經十歲了。閒聊許久,他說,在這個年紀會這樣應屬正常,他同樣地也對生命價值感到困惑。
「是否我真的一無所有?黑暗之中沈默地探索你的手。是否我真的一無所有,明天的我又要到哪裡停泊...」大學口的重順餐廳,傳來一陣陣王傑的歌聲。這可是我大學時代的歌曲呢,想不到連續幾次在重順用餐,都聽到這首老歌。
哦,是否我真的一無所有?如果不是,那我又擁有了些什麼?
這個月來,對實驗室的環境漸漸進入狀況。主要的工作,就是在實驗室幫助學弟妹們討論、釐清研究主題與方向。此外,旁聽了一場座談會,並且代替項老師主持了兩次實驗室 meetings。
就像是貓所描述的「四十歲中年危機」,自己這一陣子,在自我認同、自我觀念上,確實有些變化。幾天前帶寶寶到中正紀念堂參觀「廣場藝術節」展覽,意外碰到大學同學老鮑,他的孩子已經十歲了。閒聊許久,他說,在這個年紀會這樣應屬正常,他同樣地也對生命價值感到困惑。
「是否我真的一無所有?黑暗之中沈默地探索你的手。是否我真的一無所有,明天的我又要到哪裡停泊...」大學口的重順餐廳,傳來一陣陣王傑的歌聲。這可是我大學時代的歌曲呢,想不到連續幾次在重順用餐,都聽到這首老歌。
哦,是否我真的一無所有?如果不是,那我又擁有了些什麼?
訂閱:
文章 (Atom)