2007年12月31日 星期一

搜尋與推薦

原本想下的標題為「資訊傳播的推與拉」,轉念一想,這麼遜的標題大概沒人想看。

《隨意搜尋》的分類,資訊傳播的方式可分為「推」 (push) 和「拉」 (pull) 兩種。舉例來說,傳統入口網站如Yahoo的做法,是透過人工編排網站,將資訊「推」給使用者;相反的,Google的搜尋引擎則是讓使用者自己「拉」資訊。廣為人知的關鍵字廣告,則是成功將「推」、「拉」兩者整合成功的獲利方式。相較於傳統橫幅式廣告,關鍵字廣告的成功如今已不需多做說明,有興趣了解背景歷史的話,可以參閱《搜尋未來》,書內有提到當初Overture的創辦人Bill Gross怎麼提出這個構想,以及被Google拿去使用後的發展。

前陣子有幸參與一場很辦的討論,聽到搜尋的可能性,如今Google發展成熟的關鍵字搜尋,其實不過是搜尋發展的冰山一角吧,搜尋的方式仍有很多可能性,現今諸多 Vertical Search 網站是很好的例子,以 location based service (LBS) 為例,我們可以問:「離我最近的加油站在那?離我最近的餐廳有那幾家?半徑五公里內有那些電影院?」從而產生大量的新應用和獲利模式,不在此多提。值得注意的是,搜尋的輸入方式不止有關鍵字;輸出方式也不止有網頁。

除了搜尋種類的變化外,依人、時、地來看,任何搜尋都可以變得更精緻。以關鍵字為例,若你是珠寶商,搜「Ruby」時,你預期看到珠寶相關的事;若你是程式設計師,你預期看到程式設計相關的事。搜新聞時,當我們鍵入「颱風警報」,預期看到的是最近的消息,再者,預期看到的是自己所處地域的消息。搜尋的延伸變化多端,絕不如我們現今看到的如此單調。

然而搜尋有個極限:使用者必須提供資訊。有時候使用者不知道他要什麼,或著是他沒想到。創造未知的服務,正是開拓新市場的契機。舉例來說,統計過各個消費者的購物記錄後,可以推測出他們可能在什麼時候需要補貨,也可以依貨品的互補性提供優惠,比方小明常買泡麵,告知小明最近熱水壺在特價,或是買十箱泡麵送熱水壺,可以促銷。推廣一層來看,除了個人的過去記錄外,可以分析他的社交圈,比方小明常和大毛、二毛一起看電影,最近大毛、二毛看了部新電影,小明還沒看,可以推薦小明去看。再廣義點來看,小明並不需要真的認識大毛和二毛,只要他們的興趣相似就夠了。於是 social network 帶來了新的發展,從最近火熱的 FaceBook 相關新聞可窺知一二。當然,個人使用記錄和 social network 也可以用在搜尋,強化個人化搜尋功能。

這看起來像是「推」與「拉」模式的變化,當「推」的方式變得更靈活、不如傳統入口網站笨重時,應該會出現別於關鍵字廣告外的全贏模式。全贏是指平台經營者 (例如Google)、服務提供者和消費者都滿意,都能從中獲利。

2007年12月30日 星期日

search驗證的方法

兩個月前寫的心得,當時沒餘力將心得整理得更完備,隨手寫了草稿,丟了也可惜,先放上Blog備忘吧。

警告:本篇的心得並不嚴僅,只是抽樣讀了幾篇近二年SIGIR論文,簡單歸納的結果,不見得正確。

我從SIGIR’06、’07裡用ranking當keyword找paper title,隨意挑幾篇有興趣的paper看,只看abstract和實驗裡keyword附近的說明,簡單地整理一下驗證的方法。

驗證 ranking order 的差異性都是用 Kendall’s coefficient of concordance,這個方法對 n 個 item 比較 C(n,2) 對的差異,若比較的兩個 item 在這兩個 ranking 的 order 一致就 +1,不一致 -1,其中一邊相等則為 0,總合除以 C(n,2) 即為結果,1.0 表示完全一致,-1.0 表示完全相反。

驗證 ranking 的正確性時,常用的測量基準是: NDCG,MAP (Mean Average Precision),和 k-precision (取不同的 top k 結果看 precision),個人覺得 NDCG 很怪,無法像 MAP 或 k-repcision 從數字值理解出大致狀況,只能從高低之分得知那個好,但大概接近半數論文採用這個做法,而且作者都說這是well-known,很有用的基準。它的概念不差,強調名次之間重要性的差異,就性質的判斷來說不錯,但無法判斷重要性的差異有多大。例如,我們可以用NDCG了解 A ranking 比 B ranking 好,但無法從數據得知好多少。而且這個整體差異也許是某局部計算帶來的,很難分析數字計算出的成因。

在使用這些基準前得先決定兩件事:

  1. query words。
  2. groud truth,也就是那些文件和query相關。

這兩者通常會一起討論,比方使用TREC的資料,裡面已有整理好的documents和queries,以及標示為相關與否;或是從 search engine log裡找 click 的情況 (大公司的玩法),將資料多的網頁取出,先透過某種搜尋方式 (e.g. by Lucene) 取出 top k,再由人工驗證相關與否。不管怎麼說,人工驗證耗時可靠性又有限,但很難避開這問題。

以上的準備結束後,再來要說明自己的方法真的有效,於是要找個替死鬼來打,說自己的方法比它好,早期的論文可能會用 tf*idf,一個針對 query 取出網頁和排序的算式,而近兩年我看到的SIGIR paper,幾乎都用 BM25 (Best Match 25),BM25是由 tf*idf 變化出的複雜算式,似乎是某年 workshop 的冠軍,所以大家都用它當替死鬼吧。於是把自己算出的網頁權重 (e.g PageRank) 和 BM25 的結果合起來,畫個圖表說在 NDCG,MAP,k-precision 下,合起來都比單純的 BM25 好,就算達到目的了。

合的方法也有很多種,像用 RankSVM,RankNet (learning to rank的做法),這些做法似乎是把 BM25 算的值當一個 feature (或稱 attribute),也就是 learn 出合起來的 weight;或是用 BM25 取出 top k,再用自己方法算出來的值重排。

大致上是這樣吧,但看的時候跳來跳去沒有細看,不敢保證正確性,我只是大概了解情況而已。

2007年12月25日 星期二

先破後立

前幾天konya問我,這一個月半來想法轉變的原因,說實在的,這還挺難回答的。

我一直很喜歡這段話:

看山是山,看水是水;
看山不是山,看水不是水;
看山還是山,看水還是水。

我走過的路,常常如此,在記下過去的想法後,這個軌跡更是明顯。我愈來愈明白,為什麼成功人士都說些像屁話般的大道理,像是「態度決定高度」、「你的心胸有多大,舞台就有多大」,可惜我無法清楚地描述出這個轉變,硬要說明,也只是用更長的篇幅說屁話。但和我聊天的人,我可以依他們所處的位置,給相對應的回答。如果對方看到的還是山,我必須說明其實那不是山;而當對方明白那不是山時,我卻要更直接地點出,其實那是山。

舉個例子,《通往成功的方法》裡提到,當不知如何是好時,選困難的路。當對方接受這個想法,並落實時,必須改告訴對方,如果你努力錯了方向,再怎麼跑也到不了終點。用商管的角度思考會更直覺,我們要為客戶創造價值,產品做得再好、價格再便宜,客戶不想用,還是白費力氣。比方說現在大家普遍使用19″ LCD電腦螢幕,若製程有所突破,38″ LCD電腦螢幕的價格和19″的差不多,38″的會大賣嗎?其實不見得,考量到使用電腦的習慣和一般住家的大小,38″ LCD適合當電視,卻不適合當電腦螢幕。那麼38″ LCD沒有價值嗎?也不見得,要看針對什麼樣的客戶(市場區隔),年輕人只用一台電腦沒有家用DVD播放器或電視,平時工作用NB,多一個38″ LCD,可以做為娛樂用。

重點是,要先確立客戶需求,再行研發;先確立自己的目標,再開始努力。那麼,為何一開始要說選困難的路?因為那總比不努力來得好。我也很喜歡這句話:

沒有前提,沒有答案。

在「看山」的議題上,有類似的意境在。要破還是要立,端看我們處在什麼位置。

附帶一提,當我們回頭看山是山時,內心的想法已有所不同,這個想法轉變,將帶動其它方面的提昇,比方眼界更廣,立足點更高,連帶反映在日後的行動上。我愈來愈常聽到人生歷程的前輩和我說最重要的還是「人」,或是最重要的能力是「態度」,不管在什麼情境,在什麼考量下又聽到這老掉牙的詞時,我漸漸明白他們的意思。

在不斷地自我提昇後,我們無法簡單地和他人解釋這一串成功背後的原因,因為在每一階段,內在和外在都在轉變,沒有一個方法能含蓋這個過程。當我們在 A 情況時,我們該這麼想,進入 B 情況後,應該改成這麼想,...。面對一個素昧平生的人,想分享這一系列的想法,太費時也無助益,於是只能用最後的體悟來回答對方,而形成另一個屁話。

2007年12月20日 星期四

無入而不自得

晚上和 ltw 閒聊了一陣子,剛才靜坐時忽然想到「無入而不自得」這句,查了一下原文,深有同感。偶而讀讀古文,可以感受到中國文化的博大精深。真的,真理早已被前人記錄下來,只是我們還沒參透。

原文出自中庸

君子素其位而行,不願乎其外。素富貴,行乎富貴;素貧賤,行乎貧賤;素夷狄,行乎夷狄;素患難,行乎患難:君子無入而不自得焉。

2007年12月19日 星期三

自信和積極

剛才看到李開復寫的文章:《給中國學生的信:做個積極主動的你》,有些啟示。

先談「自信」,高中時我寫下這樣的疑問:

人為什麼會有自信心呢? 是出於本能嗎?
還是別人給他的? 是因為有了別人的表示,
所以才會有自信心? 還是因為天生如此?
為什麼有些人會覺得自己一無是處, 很失敗,
沒優點? 是真得嗎? 還是因為他缺乏自信心?
又有自信心是來自於有能力嗎? 一個平凡過日子的人
也可以擁有自信心啊

我覺得自信心或許也可以由”看到別人沒有自信”
而導至自己產生了微妙的自信, 看到別人的失敗,
覺得自己成功. 也或許是因為自己有份優於別人的能力.
是種比較後得到的感覺

當時正在轉型的階段,經過後來六年多的嘗試,我漸漸建立出自信,有些誤打誤撞。記得李開復寫過一些文章,提及自信是需要培養的,藉由自己的經驗,我印證了這點,並了解往後自己仍有培養不同方向自信的可能性。這裡必須補充的是,當時的體悟不夠完善,真正的自信應該來自於本身,從比較而來的自信,終究會由比較而失去。唯有達到超越自己,才能自強不息啊!對此觀點有興趣的人不妨看看電影《霍元甲》。

不只自信如此,認識會長、skylight這類人,給我最大的啟發在於積極的程度。常會發現「原來也可以這麼做哦?」,接著反問自己:「我為什麼不這麼做?」,而在和家人或朋友聊天時,在他們身上看到我過去的疑惑,從而明白我的確有在前進。對於那些未能踏出的朋友,也只能簡單地分享觀念,待他們自己踏出來。

這裡引用李開復該篇文章裡的一些反面例子,深有同感:

他們總是抱怨:「我沒時間。」——這表明:又是外力控制了我,讓我沒有選擇的機會。
他們還喜歡說:「我不得不如此。」——這其實意味著:迫於環境或他人的壓力,我只好選擇服從。
他們在自我表白的時候說:「我就是這樣的人。」——這其實是在宣稱:我已經無法改進或提高自己了。

對於沒時間的觀點,李開復給了一段說明:

遇到困難時,不要找藉口,應該多想一想,有沒有別的解決方案?能不能將問題分解開來,一步一步地加以解決?或者,是否需要先提高自己在某方面的能力,然後再回頭來處理這個難題?不要因為逃避而說自己沒有選擇或沒有時間——沒有人缺少時間,只不過,每個人分配時間的方式有所不同而已。

漸漸地,我發現自己在挑合作伙伴時,不像以前那樣極力看重個人能力,而轉為看重態度,或著更明確的說,是積極的程度。

然而,在沒有明確目標時,人很難有熱血地衝衝衝,像我自己,時常覺得我憧憬的生活,是悠閒自在,到不用成就一番大事業,只是偶而又不甘於平凡,想做點什麼。李開復是這麼回答的:

美國人很喜歡嘗試不同的工作,他們一生中平均要換四次工作。在長期計劃經濟的思想影響 下,更多的中國人不願意換工作,而更傾向于終生做一件事。其實,換工作崗位的意義在於,你一開始作的決定並不一定是你的終生決定,你仍然有機會去嘗試更多 的東西,只有這樣才能真正找到自己的興趣所在,才能最大限度地發揮自己的潛力。

所以,不要因為暫時不瞭解自己的長處而猶疑不決。大家要珍惜每一次嘗試,因為機遇往往不可複製。要隨時作好準備,以免機遇到來時錯失良機,同時也應學會從每一個失去的機遇中吸取教訓。此外,只有敢於挑戰自我,你才能充分地開發自身的潛力。

這和Paul Graham的格言一樣,有兩條路可選時,走難的那條。當選擇差不多時,有時這意外地受用。

ps

李開復果然是大道理天王啊!之前略讀「最做好的自己」時,就覺得那是本佳言錄大全,偶而讀很有感受,但讀太多時會感到很空虛。學而不思則罔,思而不學則殆。

2007年12月16日 星期日

高中生活

得先感謝shakalaca,豬頭站沒倒,偶而能回去看看高中的文章。

發現我高中時真是一整個熱血啊,當時大概是最接近我理想的學習環境,難怪剛上大學對於大學環境的落差難以接受,畢竟幻想破碎了。

在高中這麼忙碌的時間裡,還能寫一堆無聊自娛的東西,像是GTK版的雙人對戰五子棋、Linux console版的網路對戰貪食蛇、bash版的電腦鍵盤電子琴、bash版的Hanoi、自以為的平行處理排序,還有高一和邱、孝銘、ggod一起在社辦coding的事,真是一生難以忘懷的事,常寫到八點被校方強制斷電,接著聽到大家大喊「幹!又停電了!」,那種感覺真得很棒。後來高三用OpenGL寫的天蠶變,以及最後未完成的大計畫:HSNU Game(簡稱為H-Game,一群人合寫到萬行呢),印象到是比較薄弱,大概是申請上學校後時間較鬆,成就感較低。

一路走來似乎有堅持理想,也不可否認看法變得愈來愈實際,嗯,現在的我覺得,純理想是難以實現的,也許高中的我會認為我在狡辯,然而現在的我,確實認為兼顧現實考量的理想,才有實現的機會,而不會淪為夢想。

ps

「自以為的平行處理排序」值得解釋一下,當時我和孝銘一起做科展,在Red Hat 6.x下,把一台電腦輸入的資料,用TCP傳到自己和另一台電腦上排序,再傳回來合併。當時胡亂看了一些平行處理的書,一開始不太順利,後來速度真的有變快!只不過科展結束後才發現,原來是網路傳輸時掉資料,排的資料變少才變快的...。

2007年12月15日 星期六

讀iWoz初感:耐心

最近和一些朋友聊天時,加上自己做研究的體悟,耐性真的很重要,比快速的反應力還重要。從網路上大師的文章讀到,從學長那聽到,自己體會到,還有發現學弟又遇到一樣的問題。看到Woz提到「一次跨一步」的重要,再次從不同背景的人身上獲得印證。

p75,培養一次跨一步的耐性:

多虧了這些科學計畫,我得到了在工作上終生受益的核心能力:耐心。我是說真的。大家往往低估了耐心的重要。我是,說從小學三年級到初中二年級,我所進行的科展計畫讓我逐漸學到多事情,學會如何把電子元件組合起來,而不是只懂得翻書。多時候我想,天啊,我真是太幸運了,看來我似乎從一開始就幸運走對方向,從小就學會一次跨一小步的做事方法。我學會不要太擔心結果,而是專注在做事的過程上,並且要盡可能把事情做到最完美。

今天在工程界做事的人並非每個人都有同樣的領悟。我在蘋果電腦和其他公司工作的時候,看到很多怪才想一步登天,卻不肯先一步步完成中間的步驟,出來的結果當然不對,絕不可能行得通,那只是一種認知層次上的發展結果,如此而已。如果沒有經過實做,你無法單單在認知的層次教會別人下兩步該怎麼走。

話說回來,也如同Woz在書裡提到的,不要隨便相信任何事,科學家的精神就是要自己動手實驗。不少大道理大家都聽過,實際走一遭後才會確實了解,而不是單單知道而已。令人為難的是,當自己走到一個程度後,難以和別人分享自己的經驗,以減少別人的冤枉路。我們只能剛巧碰到差自己一步的人,向他們請教,或協助他們,讓自己跨向他們的所在,或讓他們跨向自己的所在。所以我喜歡像這樣一路記下自己的心得,減少自己忘記成長歷程的遺憾。

讀iWoz初感:父母的教育

Blog的好處就是,即使你不是偉人,仍可以寫篇落落長的回顧感謝文。

「 如何選擇科系與工作」文中提到找工作的三個指標:

「我喜歡做什麼?」、「我擅長做什麼?」、「我覺得做什麼最有意義?」
這三個問題,其實是卡內基訓練的黑幼龍先生提出的。他說:
「要判斷一個人是否成功,
就看是否常常做他最喜歡、最擅長,和最重要的事,
如果他都能做到,就表示他符合自己的興趣、能力和價值觀。」

我不知道我熱愛什麼,於是,我拿起iWoz,先看看熱愛當工程師的人是怎麼看的。Woz在書的前幾頁提到,他今日的成長,來自於父親從小帶他的方式,讓他接觸到工程師的樂趣,激起改變世界、改善生活方式的想法。我想到自己的成長背景,忽然明白為什麼成功人士都會感謝小時候的環境,即使有時看起來關聯性不高。以前我看到費曼感謝父親給他的教育,我感到納悶,這樣的教育也許不多,但不是誰都能拿諾貝爾獎,為何他將父親的教育當做首功?現在我似乎懂了一些。

我對小學以前的記憶很模糊,國二以後的記憶卻很鮮明。國二那年,爸媽為了鼓勵我讀書,說考個班上第一名,就送我一台Sega Saturn!為了能在家練KOF系列,去電動場才不會被電,那次考試有比較努力一些,因綠巧合剛好塞中第一名,而我父母也確實實現他們的承諾(結果這個承諾造成我日後近視的主因,一個暑假從1.0/1.0掉到0.6/0.3,還自以為遊戲字太小)。在那之後成績漸漸穩了下來,父母的管理也愈來愈鬆,忘了從什麼時候開始,我甚至能說我要去電動場玩,會晚點回來。或是當父母外出,剛好可以載我回家時,我可以在漫畫店慢慢地邊看漫畫邊等。

當然,高中社團的轉機,造就我讀大學時的優勢,則是另一個故事了。不管怎麼說,沒有高中時對我的完全信任,讓我能每天在社團待到晚上八點回家,九點十點到家後再開始讀書,也不會有高中練功的機會。於是,持續的良好表現,和持續的管理鬆綁,持續的向父母聊我最近做了什麼、去那裡玩,到後來父母唯一在乎的事,只剩我的健康狀態,其它事情,都隨我發展。也許是這樣的成長背景,造就我現在的樣子吧。

2007年12月12日 星期三

群眾機制評價的問題

相較於專家機制的評價,群眾機制的評價普遍存在強者強,弱者弱的問題。以YouTube來說,很多人看過不見得是好影片,後進的讀者看到很多人看,跟著點那些「熱門」影片,發現很無趣後也來不及了。雖然有評分機制,多人看的影片似乎是4或4.5星,參考價值不大。像熱門排行榜更是極端,除非有做適當的分隔,像依上傳時間區隔,否則新產生的內容難以追過舊有的熱門內容。

有些網站會用文章是否被捲到底,來判斷是否真的有被閱讀(也許再加上一點時間判斷),而非點了就算一次。依人類閱讀的習性來判斷影片或網頁是否有被完整觀看,甚至是自動判斷觀後旳評價,應該有發展的價值。影片用時間判斷,文章可用時間和被捲動的情況。配合真的有給評價的數據,這可視為classification的問題:

  • 基本屬性:觀看時間長度內容被看過的比例
  • 外部屬性:使用者的個人資訊、過去的行為如看過的影片(網頁)、好友清單
  • 分類的目標:給予的評價(例如:0~5顆星)

研究進行的流程大致上是:

  1. 分析問題的嚴重性,即影片熱門指數的誤報比率(定性分析,這問題是否真的存在,誤差到一定的值視為有)或各影片誤報程度的平均值(定量分析,將誤差量化,了解問題的嚴重性)
  2. 在給定基本屬性的情況下建classification model的結果,能改善多大程度?可用cross validation做驗證手段
  3. 考慮外部屬性,先討論如何整理外部屬性成可用的資料,再看引入後對問題的影響程度
  4. 應用到實驗平台,觀察使用者的反應,分成使用者回報感想和自動判讀指標(參考第一步的分析),綜合判斷改進的程度

若能拿真實資料玩玩,應該很有意思。忘了是誰說的,真正的研究,應該是來自於日常生活的體驗。

2007年11月30日 星期五

到清大彈琴

這週三晚上去清大琴房彈過後,心情舒暢許多,在那之後表演前的緊張感就沒了,希望能維持這股自在直到正式上台表演後。

清大有兩台平台式鋼琴,牌子似乎是Petrof,彈起來音色很棒,低音沉,高音通透,手指觸感很好。彈琴前還挺緊張的,現場人多又都是高手。但彈下幾個音後,注意力隨即被手指的觸感和聽覺給抓走,立即忘了緊張這回事。

彈完一遍Tifa’s Theme後,接著彈一首夏影,也很享受,好琴真是令人會愈彈愈無法自拔,愈來愈想買一台平台式鋼琴放家裡彈,看看一二十年後有沒有望達成。協助修曲的老師和我借了譜去,請我再彈一次Tifa’s Theme。彈完後立即給了一些建議,指出踏板可以放得更乾淨,感覺會不同。還有點出其它缺失,由於老師說話方式太婉轉不傷人,聽了有感受到什麼,但沒有真的理解,注意力被圓融不傷人的評語分散了,真可惜(在心裡佩服說話的技巧時,反而沒注意到話裡的指示)。當場從老師手裡彈出的示範相當動聽,不愧為專業級的,讓我心生日後有錢的話,一定要找個人指導練琴。

老師有小小地稱讚,說我有彈出感情,讓我鬆了口氣,較有信心用自己的方式詮釋曲子。此外,又說蕭邦夜曲和我的曲風很合,建議我可以練看看蕭邦夜曲,真是一矢中的!一直以來我就很喜歡蕭邦夜曲,也很想練,之前就和aoss聊過幾次。之後抽時間來挑戰看看吧,大概會從大家都聽過最芭樂的op.9 (ii) E flat minor開始吧。

在其它時間裡聽了另外三人的演奏,大家彈的曲風差異很大,各自有吸引人的地方,老師針對各人給的建議也很犀利,很享受的一個夜晚。

另外有個驚人的小插曲,其中一位演奏者用手指滑鍵盤時,有個黑鍵飛了出來!這輩子第一次見識到鍵盤飛出來,而且我還是離案發現場最近的兩人之一。原本我以為這是偶而會生的事,當下沒太驚呀,還把黑鍵拿起來看看,沒想到是塑膠的,我還以為鋼琴鍵都是木頭做的。演奏者彈完後,大家發現黑鍵飛了,立即陷入一片慌亂,我才知道原來這是極稀有事件啊!

2007年11月28日 星期三

伊蘇-菲爾蓋娜之誓約 (YsF)

最近把看動畫的時間省下來打電動,YsF真的是相當出色的遊戲,強力推薦!

兩年前出的PC單機遊戲YsF,用的3D Engine和前款作品Ys6一樣,但運鏡似乎更靈活些,移動場景不限於「雙截龍」這種視角,還有遠鏡頭俯視,類似縱向2D的場景,甚至是由玩家視野出發往螢幕遠方照去的取景。

相較於Ys6來說,YsF動作更豐富,三種魔法武器運用起來很自由,回氣速度也快,能痛快地享受魔法劍士的快感!而不像Ys6的魔法只能享受短暫的視覺效果。

YsF的難度亦大幅提昇,打王的過程大致上是「被KO -> 找出破綻拆招 -> 魔王換招」的循環,直到看透王的所有招式,以最少的損血擊敗王。由於無法攜帶補血道具,挑戰的過程更痛快,也沒機會光用以血換血的方式勝出,以我玩Normal的情況來說,懶得和王週旋時,就去練個等級,大概提高一兩級就可以輕鬆點打贏,大概是一半技巧一半賴皮換血的勝法。

玩ARPG這麼多次,第一次覺得打王是如此的享受,雖說也是第一次打ARPG打到有絕望感,得休息一陣子再回頭挑戰。小兵的部署也很用心,我有兩次看到小兵而倒抽一口涼氣的經驗,當深入迷宮一陣子,踏入新地方後,卻看到一個超強怪物外貌的新角色在眼前,嚇得不敢硬碰硬,用迂迴的方式解決對方。

迷宮也不會刁難人,配合可以傳送到去過的紀錄點的道具,流暢度很高,不會浪費不必要的時間奔波。

劇情方面依然是中規中矩,很傳統的勇者故事,不錯的小品。全破後看著官方設定集描述角色們小時候的事,放著背景樂「予感」,有些鼻酸。

音樂的整體性大幅勝出Ys6,開頭選單的背景樂「予感」更是讓我甘願放開手把,閉上雙眼靜靜地聽著琴鍵的流動聲。

對ARPG有興趣,喜好挑戰難度的玩家,絕不能錯過YsF!全破後的隱藏模式不少,有兩個隱王,詳細的介紹可以參考巴哈的Ys版,我空閒時間不夠,全破一次Normal,偶而玩玩Normal的Time Attack,已很滿足了。

唯一美中不足的部份是遊戲採用StarForce這惡名昭彰的防拷軟體,聽說很傷DVD,而且無法移除它,聽說Falcom近來的遊戲不會用StarForce,令人慶幸的好消息。

2007年11月25日 星期日

外婆生日.買衣服

為了慶祝外婆80歲大壽,親戚們一同到山裡吃午餐、散步、泡茶。途中聊的話題免不了未來出路和女朋友,其它話題也挺難找的。實際的出路考量包含研發替代役三年、當兵一年、去業界上班和出國讀博士等四個變量,混合起來變化無窮,沉思多日仍未參透,面對親戚們的詢問,還是回答最容易懂的方案:「有考慮要出國讀博士,但還不確定啦。」至於女朋友的話題,則是有開始想了,比起以前沒有考慮來說,應該算前進一步了吧?

表姊最近剛生完第二胎,一家看來挺恩愛的,表弟表妹似乎各有男女朋友,也算順利。連同前幾天和國中同學的聚會,我發現原本認為理所當然的生活步調,對於非高中大學研究所一直線的人來說,其實還挺極端的。像表姊差不多在我的年紀結婚,國中同學聚會時,老師們第一句先問有誰結婚了嗎?退伍多久了?而在我的圈子裡,大學朋友們畢業後才漸漸地一個個交起女朋友來,要論及婚嫁,還得先過當兵這關才有可能。

親戚們對女朋友的看法不一,表姊夫和表姊說我這樣讀書時代的愛情學分沒修足,要趕緊補救;表妹則是說沒談過戀愛也好,可以專心在事業發展上,比較不會想東想西。用表弟朋友送他的話來總結,「該你的就是你的啦」,想做的事太多,女朋友部份還是先被動地觀望吧,雖然我個人的信念是,想要的就要積極地實踐,被動地等待只會一事無成。最近漸漸地覺得,其實我有一點完美主義的味道。

另外值得一提的是,山上有個塔,爬上塔後,景觀超讚的!一望無際,其中一邊可看到遠方雲裡的山綾線,另一邊可看到一整個鄉鎮。看著雲中的山綾線,我想起新海誠的作品:「雲之彼端,約束的地方」,或許新海誠也曾看過類似的景色吧,才能創作出如此炫爛的作品。和姨丈聊到大陸的景觀,姨丈說每個自然風景都會想再去看一遍,而且,聽一千遍不如親眼看一遍,加深了我實地走訪壯麗山川的心。有時看看遼闊的天空,心境也跟著寬闊了起來。光是台灣的景色就能如此激起心裡的感動,世界的奇景應能喚起更為強烈的感動吧?可惜之前去北京和西安時都沒規劃好,只有看人工產物,沒有參觀到自然奇景。

傍晚回到新竹,爸媽和老哥陪我到大潤發附近的店買衣服,在老哥的鑑定之下,最後買了四件衣服、一件牛仔褲和一件薄外套,共花了$3500左右(剛好遇到特價打折)。長這麼大,第一次認真地挑選衣服,以前都是衣服不夠了回家裡拗老哥的。回來後就頭痛了,先是忘了買洗衣袋,明天得再跑一趟大潤發;牛仔褲會褪色又要分開洗,其它衣服則要反過來洗。以前買兩三佰元的衣服都隨便洗,想說壞了就算了,現在得多花些心思在衣服上。看看收支表,這個月破財啊,買鞋買書買遊戲聚餐買衣服,還沒到月底,支出已創歷史新高。

2007年11月12日 星期一

和sissy聊研究

昨天淩晨和sissy聊了兩小時多,解開不少疑惑。一方面是sissy的背景和我相似,我們的看法似乎也很類似,加上在國外待數年的經驗,sissy給的建議對我都很受用。

最近在想究竟要研發替代役服三年,去理想的公司工作;或是先當兵一年再出國唸博士,累積夠實力再去理想的公司或學界工作。然而出國唸博士是很複雜的事,先不談它的困難度,每個人出國的動機都不同:想了解不同的文化、想見識厲害的人、想在國外就職、想拿頭銜。但這些對我來說,動機都不夠強烈,我也想想見識厲害的人,唸大學和週圍的人互動較多,或許還有可能,但唸博士就難說了。而碩士畢業先去就職,如今在等待時機回學校讀博士的sissy,唸博士的目的是為了完成自己想做的題目--這正是我追求的目標,只是我仍未找到非完成不可的題目,不曾想到這個動機。sissy提到,他覺得許多博士生唸了五年才畢業,是因為他們進去前只有一個方向,開始唸博士後才在找專攻的點,自然要先花費兩三年打基礎找目標。雖然這個說法相當嚴格而不易達成,但這看法正好適用在我身上。如果我沒有找到明確的目標,找到非做不可的題目,為什麼我要費很大的力氣擠進讀博士的門檻,再來思考擠進來了要做什麼?sissy又提到,平時也可以想自己做的題目,工作有空時就抽點時間進行,待流程都想得差不多清楚,由目標反推回起點的路都標示好後,再進去唸博士也不遲。如此一來,也許兩三年就能找到博士學位,因為你進去只是把想法實現而已。

我和sissy提到我有想做的方向,但仍未有非專攻不可的點,sissy強烈建議我先去工作再說。這對自認唸博士準備條件都差不多的我來說,是個當頭棒喝,事實上我仍未準備好。換個角度想,當明確的目標出來時,申請學校也會變成簡單的事,SOP、想找的教授都會自然地隨著這個點而展開,這無嘗是值得一試的方法。不過台灣和國外的不同是,工作之外的時間很少,想在平時尋找研究目標,難度比國外工作的人高很多。我問sissy,那你擔心過年齡增長腦力體力下降的問題嗎?sissy的回答很直接,那只是熱情不夠的藉口。

整體來看,sissy提的想法和一些大師寫給研究生的信重疊,但由於我們研究的領域相似,對研究的看法相似,而sissy自身給了個實證,而且是正在發展的實證,而不是完成二十年後的老人和小毛頭分享的心得,因此我受到的影響更為強烈。

其它也有聊到人際關係的重要性,還有在國外工作的情況,真的是薪水多工時少。另外,即使是大公司,也是靠經驗分勝負,不見得會遇到憧憬的強者。也許只有研發中心(非產品研發)才有可能實現心目中的理想工作環境吧?也聊到國外大學的通識課很讚,聊到sissy參加Data Mining大賽的事,聊到對Data Mining的看法,像是我們都不喜歡複雜的數學式子,會質疑複雜式子的必要性,有否可能實用,偏偏這類論文似乎較容易投上。也談到近來Data Mining似乎沒有革命性的發展,沒有公信的benchmark,目前的發展似乎有些混亂。這些只是兩個小毛頭的觀點,經驗尚淺,不足以代表整體。

這次的談話帶給我許多啟示,目前的規畫差不多確定了,但我還會再找幾個不同背景的人聊聊,思考不同層面的考量,再決定最後要怎麼走吧。

2007年11月10日 星期六

aoss來訪

今天aoss來交大,問我有沒有空聊聊研究的事。上次aoss回交大時,我正在水深火熱地趕論文,只好拒絕遨約,今天時機正好,痛快地聊了一個下午。

aoss提到他看了不少related work,但不知道要怎麼做新題目;也聊到了雙方做研究遇到的趣事和鳥事,還有對於研究的看法。我並沒什麼新的見解,雙方領域也不同,但聊起研究還是很有意思,這種立即的互動很有趣,期待有天能看到aoss的成果。後來聊到出國的看法,聊到是否要讀博士的事,雖然沒有什麼重大啟示,雙方應該都多了一些心得,待多一些經驗的累積,多一些時間思考,慢慢地會影響到最終的決定吧。我希望人生的每一階段都盡我所能地審思,如此才能每一時期都痛快地進行,而不帶一絲後悔。

我們都嚮往與充滿才智和熱情的同伴共事,就算被電得再慘,只要能達到環境裡的最低要求,仍能有巨幅成長。這成長不單是專業能力面的,像在交大的大學時光裡,我很慶幸在DMCC裡多了不少音樂欣賞的機會,雖然資質不佳吸引有限,仍能一小步一小步地提昇對音樂的興趣。碩士畢業就這麼停下腳步是很可惜的事,而且,在大學和研究所的環境裡,我仍末看到心目中最理想的景象,若有機會在博士生涯裡看到,我很想試看看。

於是aoss問我,為什麼不考慮讀博士?我只能說,我也想,但考量到經濟和耐心問題,我仍無法下定決心。一來是希望能早日幫家裡減輕經濟負擔,二來是我不確定我能否一年兩年地專攻同一問題:我了解唸博士具備的不是靈光一閃的天份,而是無比的耐心。最近和朋友們聊聊,出國唸博士似乎有機會打平生活費學費,並能給家裡一些經濟協助,看來剩下的主要問題,是我的毅力了。除了這兩大要素外,自己的研究要能又有趣又有意義,真的很難。有些題目很有趣也很有意義,但那不見得適合在學界進行,也許到頂級公司的研發部門才行,那裡才有我需要的資源,這些次要因素也影響到我對唸博士必要性的看法。

中途也有穿插聊些音樂話題,像是《蕭邦在巴黎》這本書,還有聊到巴哈的曲風,音樂模型辨識等。aoss提到他對技巧或即興演奏沒有以前那麼要求,反而希望能聽出曲子演奏的差異,了解作者作曲的用意;而我仍和以前一樣,希望能即興演奏。或許是習慣聽的鋼琴曲不同,對演奏的觀點不同。古典樂的演奏版本眾多,可以聽到不同的詮釋方式;而我慣聽的動畫遊戲配樂,通常只有一個演奏版本,當聽到中意的曲子沒有搭上中意的演奏時,我會很想用自己的手指,將每個音用自己理想的方式表現出來。聊天到最後又開始彈起鋼琴,聽aoss分享些彈琴的心得,像是左手的重點在根音,其它的分解合弦力度不用放太重,aoss的個人看法是作曲家腦海裡想的應該是合弦的搭配,左手根音後的發展,目的是輔助,不該搶去右手主弦律的色彩;而我以前一直覺得每個音都有它的目的,老覺得鋼琴演奏裡,左手伴奏音量似乎太小了點,白費了這麼好的樂符,而在自己演奏時習慣彈大聲些。仔細想想,aoss的觀點滿有意思的,之後來試看看會有什麼變化。

ps. 在7-11第一眼看到aoss時,戴著有色護目鏡,真是超像Cyril的,若再學些魔術就更像了!

2007年11月3日 星期六

老人球團,再度起動!

可能有一季沒有打球了吧,至少我沒有夏天打球滿身汗的印象。咦?那這樣應該快兩季了吧?

今天很難得看到一年不見的Jalamorm,看起來沒什麼變,講話也沒什麼變,結果就好像才幾週沒碰面的感覺。值得特別一記的是,今天最早到的人是我(小豬的車比我晚進F棚幾秒,所以我最先到!)結果小豬說要去全家買個東西吃,於是在路上遇到阿德時,阿德看到的是,手裡拿著剛裝好熱水的「來一客」的小豬。怎麼會有人打球前吃泡麵啊...

在球場坐著聊天,陸續地人都到了,但沒球,幸好有和旁邊的人借到球,後來他們也來報隊,打得滿盡興的。今天大家準頭都不好,我大概命中率不到兩成吧,但垃圾話命中率依舊100%就是了。打完球坐在全家喝口舒跑,啊~~久違的痛快感!打85折後只要22元就能享受,這麼便宜又充實的娛樂,上來找啊!

這陣子都坐著太少動了,總覺得身體愈來愈虛,一個月前扭到的脖子也沒完全好,之後看能持續運動多久吧,

學琴追憶似水年華

Google為了懲罰我都在寫論文不寫Blog,還有在論文裡寫它壞話(偉哉!Google大神明察秋毫!),把我的PageRank由3降到1了,只好來多寫些文章啦。

看到一篇有趣的文章:「彈琴可能讓你更聰明」,提到學習樂器和大腦發展的關聯性。我這生很少有後悔的事,幾乎不會想如果當時我怎樣怎樣,現在就會如何如何。但對於學琴這件事,到是覺得有些可惜。小一時媽媽逼我學鋼琴,大概是聽從謠言:「學琴的小孩不會變壞」,記得那時候很討厭彈琴,常踢琴或用手亂敲琴鍵。而鋼琴老師,也是我媽的老朋友,獲得我媽授予的體罰權利(多麼開明的母親啊!),於是我踢琴敲琴的頻率漸漸減到零。

昇國一時,又因為母親大人以為昇學很忙,而中斷了學琴。我也樂得輕鬆,繼續打電動看漫畫(沒錯,省下的時間當然是放到這裡)。國中三年大概沒和鋼琴連上什麼關係,挺多合唱比賽之類的被抓去當伴奏(剛好我不想唱歌,爽)。結果,奇妙地在高三申請上大學後,我開始有一搭沒一搭地彈起琴來,愈彈愈覺得有趣。喚起我彈琴熱情的,大概是從「To Zanarkand」(FFX Opening )開始的吧。那時看完八小時的動畫感動不已,找了譜來彈。後來又在做畢典時聽到徐唯槐彈蕭邦的「幻想即興曲」和自創的曲子,加深我對鋼琴的印象。

大學時則是誤打誤撞,原本想了解MIDI的資料格式而加入數位音樂創作社(DMCC),結果莫明奇妙地開始練習作曲,也連帶著想加強彈琴的技巧。在DMCC陸續認識許多厲害的學長姊學弟妹,獲益不少。有時作曲陷入瓶頸,索性只練琴不作曲(俗稱的不務正業啊),做完大學的最後一首曲子soar後,就持續這個狀況至今。中途雖然因瑣事繁忙中斷一陣子,斷斷續續地對練琴的熱情持續存在。

回憶了這麼囉哩八嗦一大串,我只是想說:「多敲點琴鍵,少敲點(電腦)鍵盤吧!」

2007年10月26日 星期五

十八尖山探險

下午去了久違的十八尖山,住到學校外後老是說要去十八尖山晨跑,結果連下午去跑的次數都不到十位數。和平時一樣,走出停車場的起點,順著柏油路走一陣子,又看到路旁的楷梯分路和在那楷梯上的木製扶手,似乎在說著「來吧」、「來吧」。這回沒想太多,就順著楷梯往上走,而非我過去慢跑的柏油路。

穿過楷梯後,進入眼簾的是另一段柏油路,看來這楷梯是捷徑啊!當下只想順著往上走的路,想看看高處的景色,於是就這麼順著大路走,一但看到分歧的楷梯,就走上歧路(這句話似乎怪怪的),往上爬。有時也不算是楷梯,而是樹根和人工整理過的小路。就這樣經過兩三次小路後,一下就到山頂的涼亭。想起大一體育課要跑十八尖山,老師帶隊讓大家從交大出發,順著光復路跑,上十八尖山,到山頂才算及格。而我們那寢的四個人都睡過頭,驚醒時大家已出發一陣子了(嗯,而且我們四人還是所謂的體育幹部...),於是匆忙地騎機車(沒錯,是犯規)到十八尖山,把車停在停車場,開始趕往山頂,可惜當時沒注意走小路攻頂的祕技,人都差不多下山了我們才到,被體育老師抓包,被抓包了也沒言詞可唐塞,因為大家上山的路線不是從停車場開始,老師一看我們進山頂的方向就知道了...。

在山頂看了一下,風景被週圍的樹擋住,雖然空氣清潔視線良好,也看不到整個市景。我轉往別的高處走,十八尖山顧名思議(真的是這樣嗎?),山頂不高但頗多的。就這樣一直走著不知名的小路,途中最長的一條應該走了一二十分鐘吧,中途還在想要不要回頭,最後還是順著地上的路痕,走到另一端的大路上。有趣的是,走了這麼多的小路,沒有一條是死路,都會通到山裡的另一邊。

就這樣在山裡「迷路」個快一小時,穿過最長的小路,覺得腳酸沒力氣做下一個小探險時,也剛好接到以往的慢跑路線,2m+600,回頭走個幾百公尺就能回到停車場了。於是就這麼精神飽滿地走下山,結束今天的隨意小探險。要活就要動,人還是多活動活動身體才會健康啊!

2007年10月25日 星期四

雜想

最近實驗連連卡關,挫折不少,偶而還會懷疑自己是否高估了自己的能力,自信開始動搖。幸好這樣的想法不會持續太久,看看別人的文章,轉換心情,又能進行正面思考。

深夜,躺在床上感到訥悶,現在的生活隨心所欲,為什麼還會悶悶不樂,以前覺得時間不夠專心集中思考一個問題,今天反而浮現相反的想法:「這樣把大量時間花在一個問題上,到底值不值得?」或許這就是人在福中不知福吧。腦裡隨便亂想,想到過去自己看過的研究,好的壞的交錯浮現,想到這些人為什麼要花這麼多時間在這樣的事上?難以想像好論文背後付出的心力,更不用提長期進行深入研究,或像是Turing Award得主的大師,他們究竟為何要過這樣的生活?想到這裡又驚覺自己的得失心太重,做研究有趣、能改善世界即可,為啥要計較個人記錄好壞,隨即想到霍元甲電影裡提的,能決定輸贏的只有自己,自己才是最清楚勝負的人,最大的競爭對手也是自己,唯有自強不息,才能超越自己。想到這裡,得失心隨即淡化,心胸也開闊起來。

瞬間,無法明白前一刻我的,究竟在為何事煩惱,原本似乎有很多想法可打,卻什麼也想不起來,大概又是芝麻小事,庸人自擾吧。

2007年10月19日 星期五

洗澡時思考的缺點是浪費洗髮精

我習慣在洗澡時思考,相較於走路或騎車來說,洗澡思考安全多了,最慘挺多泡沫跑進眼睛,或被水嗆到吧?不過洗了這麼多年都沒遇過,應該不用擔心。而且洗澡時眼耳沒外務可做,又有熱水按摩的放鬆感,可說是集中精神的絕佳領域啊!但也因為集中過頭了,有時回神時,不知道剛才洗到那個步驟,特別是頭髮不容易髒,洗前洗後有時沒啥差別,無法分辨的情況下,保險起見只好再洗一次,洗下去後可能又覺得情況有點熟悉,剛才八成洗過了,於是又浪費了洗髮精。不過和節省時間並能集中精神的好處相比,一點洗髮精的費用,划算啦!

2007年10月17日 星期三

和阿伯、try閒聊未來出路

好久沒有寫這種偶遇閒聊文了,因為最近都窩在家裡趕論文,碰不到人自然不會有偶遇閒聊。今天傍晚終於把bug修掉,開開心心地執行程式,出去吃晚餐以及到學校聽聯發科的「研發替代役」座談會。回來後看一下進度,程式似乎快執行完了,執行速度似乎快了不少,希望不是有新bug才會如此。

到會場時,看到許久不見的廣玲姊、佩君姐和資優生嘟嘟。打個招呼就急忙進入會場,已開始一下子了。大致上和傳言差不多,聯發科很有前景,人數不斷上昇,代表進去後昇遷有望。公司資源充足,做得事夠規模,但...晚上十點下班和週末加班的傳言也是事實。「我大概十點離開後,發現車還有很多。」這句真是太糟了!

會後在門口旁和廣玲姐、嘟嘟小聊一下,他們都說今年資訊組長很可靠,廣玲姐還說他很可愛。嗯...都是意料中之的評價,感覺不錯,這正是人力仲介的成就感啊。在門口聊時還有看到不少認識的人走出來,最後看到阿伯,剛好關於工研院的狀況要和他聊一下,就和阿伯邊走邊聊到工三大廳沙發上坐著聊。

坐在工三大廳沙發聊好處真不少,可以看到不少認識的人進進出出的,打聲招呼;還可以大致窺出資工所的操勞度,沒想到這麼晚還有不少人搭電梯上樓。幾位認識的老師像鍾伯伯也是頗晚才離開。但若是依興趣而做,就沒什麼辛勞啦,就像別人付錢請你玩一樣。相對於此,阿伯說得好,去園區上班很操,那是付你精神損害的費用。

中途try看到我們在聊,也過來討論一下對一些公司的看法,還有未來的歸劃。我其中一種考量是,找個有趣的公司做三年,收入普通即可,最重要的是六點下班,週末不用加班。這樣才有時間享受人生,若之後想出國唸博士,也才有時間準備相關事宜;若不出國的話,再找個外商去做吧,我希望能進像Google、IBM在台灣的研發部門。目前我還無法想像有什麼樣的工作能持讀做到十年以上(就算工作內容是打嘴炮也是會膩的),所以研發替代役不會考慮公司未來升遷發展的可能性吧。阿伯對這個想法很呀異,想想後又覺得不錯,原本他想找個值得做個五年十年的公司進去。聽阿伯提到skylight的想法又更有趣了,skylight說可以去聯發科操個三年,把學費賺齊,之後出國讀博士才能專心研究,不用為生活費煩惱。我倒是沒想過這種可能性,仔細想想,嗯...搞不好可行。

偶而像這樣隨意遇到隨意聊聊,很有意思,這樣才算享受人生啊!

2007年10月7日 星期日

近一個半月來的Clustering心得

最近做了一個和clustering有關的研究,基於不要被自己吐糟的考量下,花了一些時間讀clustering相關的東西,發現這領域真是又深又廣,永遠有做不完的題目,呃...有沒有意義是另一回事。趁剛結束一個階段的研究,記錄一下心得,不然腦容量有限,一個月後大概就忘了。

clustering的定義是,給定 n 筆資料,每筆資料有 d 個屬性,將資料分成 k 群。特別的是,事先沒有群的定義,只能從屬性判斷兩筆資料是否相似,將相似的資料放到同一群。比方資料是地理位置,那台北市和台北縣就挺像的,應該歸到同一群裡。注意,何謂「相似」是無法明確定義的,這是 clustering 裡一個很大問題,也提高驗證方法正確性的難度。於是,依據分群的特性,就分成許多不同題目,像是centered-based clustering,同一群資料的屬性的變異數 (variance) 要小;或是density-based clustering,同一群資料和「週圍」資料之間的密度要相近。也有將資料以 graph 表示而成的 graph-based clustering。一開始我沒把這些分類弄清楚,以為可以有某種程度的互通使用,但實測後才意識到,其實方法之間差異很大,依要解的題目特性,套錯方法效果會極差,比方資料可以輕易地轉成graph,但這不表示套用graph-based clustering會有用,至少像 graph 難以用 edge weight 表示 centroid (or mean),所以不適合用來解 centered-based clustering。

除了五花八門的分群目標外,cluster 的數量也是個問題。是要給定 k ,找出 k 個 cluster?還是給定一個範圍?或是根本沒有數量限制?於是各群內部的相似度和分群的數量合起來,就變很複雜的問題,畢竟群的數量愈多,各群的變異數會愈小。很難同時考量兩者給個合理的評估分式,所以大部份的研究先限定 cluster 的數量,再討論如何降低變異數或其它評估值。silhouette coefficient是個有趣的公式,它的概念頗合理的,又能同時考量兩者,但我套用它到centered-based clustering,實測的結果 [1],計算量頗大,效果也不好。原因不明,我後來沒有仔細測試和探討背後成因。

若再加上一些細項要求,題目可以組合出更多變化,像是利用每個 cluster 內最少要有幾筆資料,可以得到一些良好的數學特性,而有不錯的成果。當然,當這個數量限制難以找到合理值時,這些方法也無用武之地。細項限制帶來的變化在 clustering with constraint 中有更系統化的研究,用這當 keyword 應該會找到一大票研究,有限制不見得是加深題目難度,有時反而變更簡單,可以協助分群;甚至也可以將重心放在如何從既有資料裡生出 constraint。

從分群的反向來看,驗證分群結果也是一大難題,但似乎沒有論文在專門討論這個(吃力不討好?),我也沒仔細去找就是了。對於未知答案的研究來說,有時只要改變評估方式,大壞的結果也可能變成大好。前面提到分群的概念變化多端,加深了評估方法之間優伏的難度。Introduction to Data Mining
的 ch 8.5 有頗詳細的介紹,值得一看。

以上的心得是以該書的 ch8, ch9 和一些零星論文得來,書裡那兩章的內容我也沒全看完,若要看完那兩章並確實理解,一兩個月跑不掉吧,但若有心在這個領域研究的話,個人覺得是必須做,而且很值得做的事。最後補一些雜項,參與 clustering 研究的人,就我個人的主觀分類,可以分成 Data Mining 背景、 Machine Learning 背景和 Statistics 背景的人。依不同背景來看,方法的切入點差異很大。 Data Mining 背景是指像傳統 Computer Science 背景的做法,或是指「比較不數學」的做法。另一方面,是否一定要能處理大量資料,才稱得上有意義的方法,就見仁見智了。

ps.

  1. 我的做法是用hierarchy clustering,一開始每筆資料自成一個 cluster,看合併那兩個 cluster 可以達到最佳的silhouette coefficient,就選那兩個合併。全部併完後,會有 n 種可能分法(全部一群、兩群、...、 n 群),選silhouette coefficient值最高的 k 個cluster當結果。

2007年9月27日 星期四

Gosh!我遇到Gosh了!!

既然是遇到Gosh,當然要用這麼老梗的標題囉。傍晚走向車棚時,看到眼熟的面孔,雖然之前有看過,但那時怕認錯人沒打招呼,五年沒見,樣子變了很多。這回沒想太多,就叫了聲「Gosh!」,結果真的是Gosh,和蘇胖子一樣,Gosh上大學沒多久就瘦了下來。和Gosh說上回看到你怕認錯人沒打招呼,Gosh馬上說「幹嘛這麼weak啊!」,果然是89人的說話風格,令人懷念。大概聊聊大家的近況,約看看之後要不要大家一起打球,新竹幫的走了幾個,又來了幾個,還是湊得到兩三隊打三對三鬥牛啦!和Gosh聊天時想了很久,想說新竹幫還有誰,偶而想到一個人,又多一分樂趣。結果打這篇時忽然想到漏提了王X宇,明明之前才在版上看到,怎麼會沒有印象,哈哈!

2007年9月24日 星期一

VIM-LaTeX

官網:http://vim-latex.sourceforge.net/

下載和安裝說明:抓下壓縮檔、解開到~/.vim下(Un*x)或~/vimfiles(Windows),就這麼簡單。

這玩意兒真是太強了,之前自己key那堆符號是key心酸的。place holder的概念真不錯,打完該打的字後,按個Ctrl+j就能跳到下個位置,像插入Figure時感受特別明顯,打個EFI後,就能一路填完檔名、標題、索引名稱等。還有以 ` (反單引號)開始的縮寫字,像是 `/ 會變成分數用的 \frac{}{}, `* 變成乘法 \cdot,省不少工。愛惜手指,才能用更久啊!

其它像插入reference也是超方便,會先列出各節內的label,游標移上去按個ENTER就自動加進去了。若要發揮更完整的力量GVIM才是王道啊,開始考慮要不要移回Windows環境用LaTeX,之前習慣在Un*x server上做事,自然地也在上面用LaTeX了。

白天的時候沒什麼差別,到了夜裡,沒有人的空房子,顯得特別冷清。平常室友間的交談也不多,夜裡也是睡得睡,沒睡得在自個兒房裡忙,照理說有沒有人在,沒什麼分別。然而,沒有人的四人公寓裡,就是有著這樣的微妙感,不禁讓我想到,等我有錢後,也不會想買大房子(不是因為富爸爸說房子是負債哦)。

第二天的夜裡,習慣了冷清的公寓,取而代之的,是熟悉、帶有潛藏愉悅的孤獨。孤獨和寂寞是不同的,也許這也是我一直沒交女朋友念頭的原因,畢竟,孤獨是一種享受,是隨著年歲增長,漸漸步入社會之後更難找回的感覺,另一方面,也是沒適合的對象。這種時期,正是閱讀村上春樹作品的好時機,可惜手邊只有一本英文版的「國境之南‧太陽之西」,讀起來費力許多。趁著晚餐送來之前翻了幾頁,立即從”Only”的字樣裡感受到村上營造的隔離感,配合封底的介紹,觸即內心深處、一個遺忘的角落。

”And a boyhood memory of a wise, lonely girl named Shimamoto clouds his heart.”

即使沒有放著音樂,即使是深沉的夜裡,週圍還是存在著聲音,在意識清醒的狀態下,絕對安靜是否存在呢?那又會是什麼樣的感受?記得小時候害怕完全無聲的夜,躲在被窩裡不敢伸出腳。習慣社會喧鬧聲後,反而漸漸期待著。然而,當絕對安靜出現的那一刻,立即又會害怕這樣的存在,而刻意破壞它吧。

對我來說,隱居在都市裡才是最棒的,如同陶淵明所言一般:

結盧在人境,而無車馬喧。
問君何能爾,心遠地自偏。

只不過我不是什麼心遠地偏這類高尚的心境,只是離不開網路和便利商店罷。既然要隱居,當然是選最方便的形式執行。

2007年9月13日 星期四

程式語言效能評比

這可能不少人看過了,剛才看了Joel的一篇文章,提到Ruby效能吊車尾,加上最近寫了不少Ruby program,感覺Ruby的確有點慢,好奇地看了一下熱門語言的差異。Ruby真的是時間慢又占空間,相較特性差不多的Python,Python快多了,但Java又比Python快,問題是Java用的空間比較多,但空間相較時間較沒那麼苛 ( 64bit的時代,RAM可以加,CPU很難再快了 ) 。大致上來看,Java的速度還不壞,雖然仍輸C++一大截啦,若JRuby完全整合成功的話,Ruby才有希望普及使用吧 但像Google不管怎麼樣,應該仍是用Python沒用Ruby吧,而且Python作者都挖進去了,必要時也可以投入改進Python。

不過我還是要強調一樣的觀點,大部份時候,我們並不需要那麼快的速度,而較重視開發時間。極端來說,跑得再快的程式沒有寫完,也是無法用的。
但這個平衡點就因人而異啦,我學Ruby是因為它能幫我快速處理掉大部份的事。

2007年9月8日 星期六

偽晨跑紀念

雖然不算晨跑,至少是上午跑,紀念一下。去程用走的,回程慢跑,來回大概半小時吧,先看看能不能一週至少跑一次。

2007年9月7日 星期五

快速找中位數演算法和KNN

之前找到kd-tree這個data strucutre,想說可以用它來找KNN (k nearest neighbors),而且建立kd-tree的速度很快,空間成本又和資料量成線性關係,實在是很讚的資料結構。

實作kd-tree的關鍵在於要能快速找到中位數,而在quick sort的Theta(N*log(N))的證明裡,有經典的找中位數演算法:用Theta(N)的時間找出中位數。不過這個演算法的常數項很大,是理論上很有意思的方法( 由它證明了quick sort的order可以寫為 Theta(N*log(N)) ),但實務上不會拿來用。

找了一下快速計算中位數的方法,找到一篇有趣的報告:“Fast Median Search: an ANSI C implementation”。這篇報告裡提供幾種找中位數的方法以及時間比較和實務考量的分析,並附有 C source code。這篇報告用的方法都是從沒排序的陣列裡找第 k 小的數字,而找中位數只是這個問題的特殊化罷了。關鍵在於從不同的角度思考中位數的定義:

The median of a list of N values has the property that in the list there are as many greater as smaller values than this element.

很漂亮的出發點,值得學習。

我從中選了差不多最快、且馬上能讀懂的Wirth,將它改成Ruby版,畢竟我其它相關的code都用Ruby寫的(按此觀看Ruby版的Wirth)。Wirth的精神和quick sort一樣,若已學過quick sort的話,看一下code就能明白Wirth的做法。

改完Ruby版的Wirth演算法後,準備要寫kd-tree時,才想到既然我要找KNN,其實找到第 k 近的鄰居後,就可以用它當pivot快速找出前 k-1 個鄰居(掃陣列一遍而已),可以不用實作kd-tree,執行效果應該還可以接受。事實上Wirth的演算法有個副作用(side effect),它會更動原來陣列內元素的順序,但妙的是,這個副作用在KNN裡反而省下一次線性搜尋的時間,因為找完第 k 近的鄰居後,前 k 個元素就是 KNN 了 (讀一下code立即可以明白)。

有時候意外地把不同時期學的片段記憶整理一下,串成一個完整的觀念,感覺頗爽的。最棒的是,破碎學到的東西,可以更有系統地重新吸收。

ps.

  • 當然,網路上可以找到不少kd-tree的實作code,像Weka裡就有Java版的kd-tree,只是功能太雜,code太長了,以我的小規模用途來說,看懂它的code還不如自己寫快一點。
  • 真的建出kd-tree的話,應該會更快,因為kd-tree建一次可以找所有元素的KNN,每個元素找的時間是O(N),但大部份元素應該不會真的要看N個元素。而Wirth的演算法在找各個元素的KNN時,相當於每個元素重算一次,每個都是Omega(N)。有時間的話真想來比較看看kd-tree能比Wirth快多少。

2007年9月1日 星期六

微軟就甘心:記錄篇

來學小豬記錄一下,今天剛好早睡成功,因為疲勞累積到一個程度,做事沒啥勁,大概晚上11點左右躺下去沒多久就睡著了。微軟真是貼心的作業系統,知道我早上都爬不起來,剛才利用windows servicepack幫我來個morning call(update後會自動重開電腦,會有關機音效),時機算的正準!難得能這麼早起,特此記錄一番。

2007年8月29日 星期三

Hidden Markov Model

最近被迫得讀 Hidden Markov Model (HMM) 相關的內容,我入門的方法是參考下面這三篇:

最近學新東西,愈來愈習慣先看完WikiPedia的介紹再開始,WikiPedia上的介紹通常比書裡寫得還要清楚,真方便。

個人認為最好理解HMM的例子是語音辨識,摘錄Viterbi algorithm裡的一段例子:

For example, in speech-to-text (speech recognition), the acoustic signal is treated as the observed sequence of events, and a string of text is considered to be the “hidden cause” of the acoustic signal. The Viterbi algorithm finds the most likely string of text given the acoustic signal.

每個文字代表一個state,state和state之間有條件機率,稱為state transition,即文字的連續關連性,比方「駱」下個字出現「駝」的機率很高,出現「馬」的機率很低,丟個文章集統計一下就可以得知state transition。主要的差別是這裡假設每個state只會被上個state影響,所以不會直接統計「王八」下個字出現的機率,得先算出「王」到「八」才行。這點和 N-gram 的做法不同,以文字為例子的話,可以將state transition看成是 2-gram 而已。

單純文字之間的關聯已有很多發展空間,比方套用 Markov chain ,算出給定第一個字的情況,第五個字最有可能出現什麼字?或是無論開頭為何,第三個字最有可能出現什麼字?而在語音辨識的例子裡,除了 state (=文字)外,還有 symbol 。

每個 state 會產生一個 symbol ,打個比方,可以想成在數位電路裡的 Finite State Machine 中的 Moore Machine ,跟著一連串的 state 轉換,每個 state 都有伴隨輸出的資訊,但在 HMM 裡,每個 state 不會只輸出一種 symbol ,而是各個 symbol 有對應的輸出機率,所以不只 state 和 state 之間有條件機率, state 和 symbol 之間也有條件機率。在語音辨識的例子裡, symbol 是聲音訊號。畫圖太麻煩了,麻煩各位發揮想像力, HMM 的架構可看成兩層,上層是一個 graph , vertex 表示 state, edge 表示 state 間的條件機率;下層是數排 vertices 每個上層的 vertex 對應到下層一排 vertices ,之間有個有向邊由上層指向下層, edge一樣是條件機率,表示在這個 state 下,會產生的 symbol 機率為何。

那麼 HMM 要解決的問題為何呢?直接從語音辨識來看比較容易理解,我們可以取得一連串的聲音訊號,經過處理後斷成一個個文字的聲音,但我們不知道每個聲音對應到的文字為何?考慮這個例子(喔,注音文的正當使用):

ㄌㄨㄛˋ ㄊㄨㄛˊ ㄏㄨㄟˋ ㄈㄟ

這個例子對應的文字可能是「落鴕會妃」,也可能是「駱駝會飛」,那一個組合較合理,得看文字間的接連出現的機率夠不夠高。在 Markov chain 的例子裡,我們是直接由 state 找出 state sequence,而HMM的例子裡,我們不知道 state 為何,所以稱為 Hidden State ,我們必須由 observation ( symbol sequence ) 來推測原來最有可能的 state sequence。

注意上述的說明都是假設 model 是正確的, model = initial state probability + state transition probability + symbol probability (emission probability)。在 Machine Learning 裡有些方法說明如何找出最有可能的 model ,有空再來看看吧。

2007年8月26日 星期日

前進的理由?

看到bc的文章有感,留了這麼一段話:

隨著不斷前進, 也會發現許多過去的同伴停下腳步,
安於在某個階段, 覺得有點可惜
 
有時我也會想停下來, 反正活得快樂就好, 有沒有大發展到是其次,
只是呢, 偶而又會想著, 如果就這麼停下來, 似乎太可惜了,
好像會對不起過去的自己, 白費他們的辛勞, 而湧出繼續往前踏的鬥志
 
愈接近碩士畢業, 這種想法愈強烈,
若最後我決定出國念博士的話, 大概是因為不想停止發展吧

bc在blog上提到數年後回頭來看,還是心情文最有感覺吧,我也這麼認為,偶而多寫些心情文吧。技術文則是留給自己備查以及分享給大家用的。

2004 - DMCC Work 3

聽膩了最近放的音樂,太累睡不著又無法思考,想說找點平常很少聽的風格來放好了。忽然想到這張DMCC Work 3 (絕版了哦!),拿出來放感覺真不賴,大學生涯裡值得紀念的一個作品,雖然大二因此更忙了不少,但不管是當時還是現在,都認為是相當值得的事。詳細介紹見這裡

這張CD裡的一些作者還有持續在創作,像是ychm,可以從他的blog聽到他的作品。還有Katsu的作品也有部份試聽放在個人工作室網站上。印象中社站上應該有一些作品可以試聽,不過社站目前似乎掛站中。後來的學弟妹們也相當厲害,遜腳的我在做完最後一首soar時面臨瓶頸,得花不少心力才能突破,於是就停擺了,只有偶而練練琴。

不知道何時才能痛下決心加強樂理重新嘗試作曲。

ps

雖然Blog自動偵測的Related Post很少準過,但這篇的Related Post也差太多了吧。

2007年8月24日 星期五

鳥之詩各種編曲版

整理一下鳥之詩的曲子,這首曲子有太多版本了,這裡列出幾個很有特色的曲子,其實只是老梗重新整理而已。

原版

=AIR=鳥之詩 MTV。應該是原版吧。

Re-feel版

http://key.soundslabel.com/discography.htm,進去後搜”Re-feel”,有片段試聽。最近練完Re-feel的《夏影》後,終於要開始練這首了。

另一個鋼琴版

spearmint介紹的,AIR動漫中,史上最完美的鳥之詩。網頁下方有譜可以下載,這版也很棒,看看半年內能不能練起來吧。《夏影》練了21天,推測Re-feel的《鳥之詩》要練20~30天,這首鐵定要更久。

以結尾來說,我最喜歡這版的,倒數第二頁時將原版的前奏和主弦律結合起來,並在最後一頁將氣氛托到另一個高潮。中間刻意改變melody聽起來也很耳目一新(第二頁中間),聽習慣Re-feel後改聽這首感覺很棒。

炫技版

primenotes - 『ピアノソナタ第2番 第一楽章 -鳥の詩-』 (VisualArt’s/Key AIRより)。我覺得弦律不錯,但難度太高,無法將曲子彈得正確又融入感覺。當時從herbage那看到時,在這篇有一些討論。

Rock版

herbage介紹的,X+鳥の詩(vocal:ゼブラ) 「METAL of 鳥の詩 -AIR-」。嗯...眼見不一定為憑啊。

2007年8月23日 星期四

試用JRuby失敗,只好用Java讀圖檔

Ruby查不到怎麼讀圖檔,只好從Java下手,原本想用jruby來搞定的,結果碰上jruby的bug,jruby還未成為完全體嗎?Java的解法見這裡,寫好的code在這裡。以下是用jruby的測試情況:

# jruby -v ruby 1.8.5 (2007-06-07 rev 3841) [amd64-jruby1.0] # cat read_bmp.rb include Java import java.awt.image.BufferedImage; import javax.imageio.ImageIO; f = File.new("test.bmp"); img = ImageIO.read(f) # jruby read_bmp.rb RubyFile(test.bmp, 0, 3) :-1: no read with arguments matching [class org.jruby.RubyFile] on object JavaUtilities (NameError)

ImageIO.read()無法讀出BufferedImage,只好重操老本行寫Java,輸出的method打成puts…,幸好Java的compiler很強,就算很久沒寫Java,想寫出能動的code還是很快,大不了多compile幾次罷了。

2007年8月22日 星期三

Introduction to Data Mining

書藉基本資料: Introduction to Data Mining

最近在做clustering的研究,仔細讀了這本書的ch8, 9,愈讀愈覺得該學的東西愈多,作者們真是太強大了,怎麼能懂這麼多東西,又能這麼有條理地分析整理出來,並配合許多直接易懂的例子說明。如果有時間的話,真想把這本書好好地讀一遍,但真的要讀完一遍,半年的時間都不夠吧,特別是需要數學較深的方法不是三兩下就能體會的。

讀的過程裡,漸漸產生懷疑,目前做clustering相關研究的人,有多少人真的將related work分析好,並選出他們心中最滿意的方法,再針對此方法做必要的修改?沒辦法,我尚來是人性本惡的觀點,容易做此聯想。至於自己,則是愈讀愈汗顏,沒想到單一領域的發展如此深廣,以前真是太小看clustering了。真的要做學術研究的話,也是可以達到很理想的境界,看到這樣的好書,讓我對學界的興趣提高了些。

只是理想抱持太高的話,永遠踏不出第一步吧。忽然對以前看過一堆給研究生建議的文章有所體會,幾乎每一篇都強調不要好高鶩遠,不然只會自挫銳氣。讓我想起和大中聊研究時,大中也提出做研究像是小步前進的觀點,勸我標準別定大苛反而失去興趣。但反向來看,有勇於挑戰的氣魄,才有機會大步邁進,試了不見得會成功,但不試是不可能成功的。

原本只是想讚賞這本書寫得太棒了,後半變得有點嘴炮。btw,有些人認為學界有許多人像是自己圈一塊地方出來自己玩自己的,我也如此認為。但是,有玩得差勁的業餘玩家,也有玩得令人讚賞的大師級玩家。能看到大師的行事風格,總是能激起一些對學界的熱情,只是維持不了多久就是了。

2007年8月18日 星期六

Bill Gross真是有趣的人

最近在看《搜尋未來》,第五章介紹Bill Gross,一位從少年時期就有經商頭腦不斷賣公司的強者。由於他有太多點子想做,不滿於專心做一件事,或著做一陣子就會嫌無趣,在賣了幾次公司後,創了Idea Lab,有點像育成中心,Bill Gross想許多點子,由此機構協助人力、空間、經費成立新公司,做個一陣子,可能又拿去賣掉。成功地開創並賣掉一個公司已很困難了,沒想到竟然有持續賣公司賺錢的人,真強!

Bill Gross賣掉的公司裡以Overture最為有名,是第一個提出點擊廣告付費模式的公司,不過後來被Google沿用後,反而被Google幹掉了,最後以十六億多美元的金額被Yahoo收購。近年來許多Blogger用的SNAP,也是Gross的作品,這個2004年秋天產生的公司,提出了新的搜尋付費模式,Gross在《搜尋未來》裡說他有信心成功。本書的原文版出版於2005/09,沒有足夠資料分析SNAP的概況,總之SNAP算現在進行式的產品,不知道後續發展如何,真有意思。

Range Search的演算法

原本找到kd-tree覺得夠威了,沒想到還有很多有趣的相關研究。像是”Data Structures for Range Searching”鞭闢入理地分析了6種方法,針對hyperrectangle range query (或稱orthogonal range search)的time complexity、建data structure的time complexity和所需的space complexity,簡潔易懂。結論是一般來說kd-tree最適用,cell(切成格狀)在特殊條件下最適用。

摘錄自1.8 Comparison of Methods:

Both the cell and k-d tree structures are appropriate in situations where the query restricts several of the attributes. If the approximate size and shape of the queries are roughly constant and known in advance, then cells defined by a fixed grid with size and shape similar to those of the expected queries is most advantageous. For queries with sizes and shapes that differ considerably from the design,

For most applications of range searching that are not characterized in the preceding paragraphs, k-d trees are likely to be the method of choice.

但這篇沒提到R-tree,也許那時R-tree還沒發明,得再評估一下R-tree的可能性。

關於演算法的早期研究就是這麼美麗、完備,但現在也沒什麼發展空間,只能拿來用就是了,cite ”Data Structures for Range Searching”的兩篇range query延伸研究分別是“On the Average Performance of Orthogonal Range Search in Multidimensional Data Structures”和”Improving the performance of multidimensional search using fingers”,前者看來像理論分析,後者則是實作分析。

原本感到奇怪,為什麼這些研究都是用orthogonal range search,而不是圓形(球形)的range query,後來才想通,圓形的range query可以先用正方形的range query取出資料,再用圓形的條件去掉多餘的資料即可,效率分析差異不大。

2007年8月16日 星期四

半年來用Ruby的觀感

原本想把《Programming Ruby》K一K後再來寫心得,轉念想想,正因為學得不夠深,心境貼近,才能寫出未入門也感興趣的心得文;另一方面,照我在技術方面待學清單來看,不知那天才會輪到讀這本書,還是先寫心得吧。

今年寒假時,受到《Beyond Java》的鼓吹,對Ruby燃起興趣,那段期間一邊學Ruby一邊學Rails,做完一個網站,賺一筆工讀費,接著在過年回家期間花了一週啃完《Programming Ruby》Part I,之後開始漫長的實戰之旅。

寒假讀了這些書後,覺得投資Ruby前景看好,依我個人寫程式習慣,可分為三類:

  1. 處理文件雜事的小程式,一般用Perl、awk、shell script等雜項工具打發。
  2. 寫個人網頁、接case,一般用PHP打發。
  3. 寫作業、做研究用途,一般用C或Java,規模小的用C,大的用Java。

但Ruby將三個願望一次滿足!Ruby身為Perl的後續者,Perl有的能力差不多都有,只是lib比不上CPAN,不過前景看好,不用擔心這個;Rails這殺手級framework不需多介紹,用PHP寫一堆重覆零亂的程式後,我已厭倦用PHP寫網頁;至於Java,唯一的不滿是笨重,在《Beyond Java》的心得裡有些討論。

這半年來我確實全都用Ruby搞定要做的事,用Ruby寫比賽用的網頁和後端程式、用Ruby抓Web data、用Ruby實作研究用的演算法、用Ruby處理文字檔。each和map愈用愈多,去掉語意不明的for loop,改用語意明確的一行code搞定,還有配合irb這個runtime interpreter,即時測試method用法,或處理小資料,相當方便。半年前投資Ruby的決定至少幫我省下一半coding時間,當然,愉快度也提高一倍以上。唯一的不滿是Ruby沒有直接支援UTF-8,相較於Python,這是很大的弱點。

接下來要找個時段好好地讀《Programming Ruby》,學習更進階的用法,發揮Ruby更大的功效。

另外,我不覺得Python不好,之前和Scott討論後,覺得兩者大同小異,只是剛好寫慣了Ruby,暫時不會嘗試Python,個人稍微嫌Python要打的code多了一點,寫起來爽快度低了一點,不過玩Python也是遲早的事,唔...還有在淹沒在待學清單裡的Haskell。

ps

用一個語言與否,個人認為主要考量是語言的特性、既有lib的質與量,以及開發社群。以C#來說,開發社群是MicroSoft,以Perl來說,是廣大的OpenSource族群,開發社群決定語言的未來。這半年來JRuby有不少消息,透過良好的商業發展,Ruby和JVM的完美結合指日可待,JRuby的完成,等於立即幫Ruby裝上數卡車的火藥,威力倍增,Java有的lib都能被Ruby使用!所以這半年來不論從那個方面來看,我對Ruby的信心又更高了。

2007年8月8日 星期三

台北24H渡假記

最近忙著趕研究進度(還有看完《誰是接班人》第一季,大力推薦!),總覺得花個半小時寫Blog不如拿來讀些related work,結果就積了一堆文章沒寫。這篇是上週六(8/4)的事了。

原本想趁週六日衝研究進度才留在新竹的,無奈工三停電,無法取資料出來看,要趕進度也不太方便。將近中午時接到 D 的電話,說下午要不要去Mr. P家玩,還說他己和 P 講好了,可能會住 P 家,看我要不要當個驚喜,和他一起殺到他家,再大刺刺地說「哈囉,我來玩了,我今天也要住這哦!」。雖說 D 的提案聽來很有趣,但做為一個驚喜,有不少風險,所以還是先打電話給 P ,報備完再出門。

下午兩點看天色變了,就和 D 提早出門,搭客運回台北,到台北後憑著不太確定的消息搭公車前往 P 家,結果和 D 聊太專注而坐過站,幸好 E 提早發現,「只有」坐到南松山去,如果是我一人坐過站的話,大概會越過松山火車站逛逛吧,畢竟是小時候長大的地方,真令人懷念。返程加倍注意,安然抵達 P 家附近的站牌,看到 P 在站牌等我們。到 P 家後,看起來還不賴,雖然住在高樓,但沒啥高樓的感覺,在台北水泥建築裡,不管是住2F還是20F,大概看起來都是一個樣吧,只有地震時才會有不同感受。

一看到 P 的42″ 液晶電視,我馬上試著打B看看,果然感覺相當怪異,看網頁也很怪異,不過若習慣和人簡報,操作不是用鍵盤和滑鼠的話,用大螢幕上網應該不會這麼突兀。晚餐前 P 在看一些奇怪的節目,像什麼《棒棒堂男孩》,除了 P 以外,我們都無法理解這節目的笑點。晚餐在樓下解決,附近有不少吃的,而且有一家路邊攤賣素食麵和滷味,我買了炒麵和炸杏鮑菇,麵的味道還過得去,但我還是第一次吃到這麼不好吃的炸杏鮑菇。

晚餐後看 D 帶來的悶片, P 還看到睡覺,片子看不到一半大家受不了了,改看動作片,果然大螢幕就是要配爆炸飛車之類的,人多才能顯出大螢幕的好。看完電影改打Wii,一開始當然是玩Wii Sports,網球打一陣子後 D 愈打愈順,我則是一開始實力超弱,大概只有上週三lab辦Wii網球大賽時的一半實力吧,後來和 D 互有勝負,最後還是讓 D 霸台了。接著 P 讓我用Wii測體能,出來結果是43歲...,再來改玩百瓶保齡球。

大家本來就不是愛玩電動的人,玩到沒啥好玩時,就讓我圓Zelda的夢了,終於,可以玩到《Zelda:Twilight Princess》!遊戲的中文翻成曙光公主,雖然這名稱比較好聽,但從劇情來看,稱為黃昏公主可能正確一些。我憑著破破的日文勉強從頭玩到拿釣竿,由於其他人只能看著我玩,不好意思卡關太久,中途請 D 幫忙查查攻略,加快遊戲進展,增加觀眾的興趣。後來明明拿到釣竿,裝備欄上卻沒有出現,而遲遲無法進入下一步,大家都累了各自倒在床上、沙發上睡著了,我實在很不甘心,找了攻略影片,對照影片的每一步來看,發現我該做的都做了,只是影片裡真的有拿到釣竿,而我沒有,推測是Wii的bug。於是我讀別人的進度,體驗一下揮劍的樂趣後,在清晨三四點時,也倒下去睡了。

早上七點多, D 的鬧鐘響了,因為前一天他調七點要看王建民打球忘了關...,但只有吵到我和他的樣子。十點半時,我第一個醒來,接著大家跟著醒了,有人問「幾點了」,忘了是 P 還是 D 說真令人懷念,好像以前一起住學校的樣子,一個人起床後大家問著幾點了,而陸續地起床。

起床後我讀森之神殿的進度繼續打Zelda,大家在旁邊看,反正也沒啥事好做,接著看看中午新聞,和 D 重戰皮卡丘排球和小朋友下樓梯,兩者都由我大勝,用42″電視打小遊戲的感覺超怪,由於距離拉遠的關係,小遊戲的畫面感覺沒變大多少。下午大家一起回新竹啦,而 P 因為早上起床喝昨天剩下的香檳加上沒睡好,早上起來後就掛在沙發上。就這樣結束突如其來的台北24H遊。

晚上我上網看看Zelda相關消息,像是到巴哈看看中文劇情翻譯,燃起全破它的熱情,但這大概要花數十甚至上百個小時吧,記得高三時玩N64的時之笛,花了好多時間。無論如何,Zelda是必玩的好遊戲啊(和本文主旨無關的結語)!

2007年7月27日 星期五

用O(NlogN)的時間比較兩個序列的差異

Problem Definition

  • given two sequences of the same item set, compute how many order relations are different
  • order relation: a < b < c vs. c < a < b, in this case, there are two different relations which are (a, c) and (b, c)

Sample inputs and their results:

  • [a, b, c], [c, b, a] -> 3
  • [a, b, c, d], [d, a, b, c] -> 3
  • [a, b, c, d], [d, a, c, b] -> 4, the different order relations are (a, d), (b, c), (b, d), (c, d)

Algorithm

想法

展開所有可能的order relation需要C(N, 2)次,N是item set的大小,聽Oshin說有O(NlogN)的方法,用Merge Sort的概念即可。昨天睡不著想了兩個小時,感覺差一環就想通了。今早起來忽然想通關鍵的merge,利用已排好的特性,merge的時間只要O(n)。

Pseudo Code

大概寫寫,邊界沒有算很準,陣列由1開始算,R[1..m]的意思是R的sub sequence,範圍是1..m。

CompSeq(R, R’)
Input:R, R’ which are sequences (e.g. R = [a, b, c], R’ = [b, c, a])
Output:n, the number of different order relations

  1. for each c in R, H[c] := index of c in R, where H is a hash table
  2. return CompSubSeq(R’)

CompSubSeq(R)

  1. return 0 if |R| = 1
  2. let m := |R| / 2, R1 := R[1..m], R2 := R[(m+1)..|R|]
  3. return CompSubSeq(R1) + CompSubSeq(R2]) + Merge(R1, R2)

Merge(R1, R2)

  1. let n := 0, k1 := 1, k2 := 1 and R be a new array
  2. for i in 1..(|R1|+|R2|) do:
  3. if k2 > |R2| or (k1 < = |R1| and Smaller(R1[k1], R2[k2])),
    then R[i], k1 := R1[k1], k1+1
  4. else R[i], k2, n := R2[k2], k2+1, n+|R1|-k1+1
  5. end for
  6. return n

Smaller(a, b)

  1. return true if H[a] < H[b]

雜記

Ruby寫的版本見這裡,原本想寫完整版的測試,寫完演算法後懶了,果然應該先寫test code再開始寫,才不會懶得寫test code啊。

可以利用如下的方法實作test code:產生(a1, a2, …, an) item set的所有排列,在產生排列的同時,可以知道目前產生的是第幾組序列,得到序列值後,可以用O(N)的方法算出差了幾個relation,以(a, b, c, d)和(d, c, a, b)為例,(d, c, a, b)是第23個序列,23 = 3*3! + 2*2! + 0*1! + 1*0!,所以是3 + 2 = 5次;以(c, d, a, b)來說,這是第17個序列,17 = 2*3! + 2*2! + 0*1! + 1*0!,所以是2 + 2 = 4次。利用餘數的技巧,序列數轉成階乘表示只要O(N)。

昨天原本想用這個序列順序轉答案的方法來解這問題,大部份的思考在這裡打轉。雖然成功地將原問題reduce成找序列順序的問題,並且可以用O(N)的方法由序列順序算出答案,但想不到O(NlogN)算出序列順序的方法。

2007年7月22日 星期日

《海潮之聲》中文版小說

書藉基本資料: 海潮之聲

喔喔喔喔喔喔喔喔喔喔喔喔喔喔喔喔喔喔喔喔喔喔喔喔!!沒想到竟然出了!!

想當年,我為了查相關資料,而找到龍貓森林這有趣的blog,和站長請益之後,買了第一集的日版回來練日文,妄想藉由我對這作品的愛來貫徹練日文的決心。結果我的愛徹底地被沒標假名的內文擊敗了,只讀了一兩章...

剛才從jnlin那得知中文版出了,而且還是一個月前的事,下次回台北一定要買回來看的啊!看來最近有小說可看了。(書架上一堆借來的書,你們就再多等一會兒吧...)

2007年7月21日 星期六

MoinMoin、PmWiki和DokuWiki editor比較

整理一下最近用Wiki的心得。MoinMoin的GUI editor超威,特別是table的編輯,還可以按右鍵選table/cell property,包含 text/border/background color,text alignment等設定,而且速度很快,GUI editor和text editor之間的切換也很快。有GUI editor後語法也不用查,先用GUI editor產生後再切到text editor看,很方便 ,基本上除表格外,我都用text editor,自由度較高,比較習慣(個人偏好)。

PmWiki和DokuWiki都是text editor加上輔助按鈕,按了可以產生sample code,DokuWiki的功能強一點,還有特殊符號字元表。語法文件方面,PmWiki列得很詳細,分基本和進階的教學,Wiki裝好後預設放在sidebar上,方便查詢。DokuWiki則是放在編輯頁面的上方,點了syntax鏈結後可以看到全部語法和範例,也滿清楚的,文件部份PmWiki和DokuWiki都不錯,MoinMoin因為GUI editor太方便了,我還不知道它的Wiki code文件放在那,因為一次也沒查過。

雖然乍看下PmWiki editor較弱,但我最喜歡PmWiki的Wiki syntax,簡潔易讀。而section editing部份,DokuWiki預設就有,PmWiki要裝plugin SectionEdit,而MoinMoin的作者認為可以用Include page的做法,而不需要section editing的功能,所以沒有這功能。

2007年7月20日 星期五

MySQL偽memory leak問題

Problem

我用的server是Debian 64bit (AMD64), DB server是 5.0.32,有8G memory,但MySQL使用一陣子後,用top和free會看到8G的memory都被吃掉,但沒有任何process用到這麼多memory,而且swap沒有被用到,關掉MySQL daemon後memory的用量也沒改變。

Solution

查到兩篇類似的苦主:

從第二篇裡找到解法:

Despite the fact that “top”, “/proc/meminfor”, “free” show me that 98% of all memory on server is used that memory is not really used by MySQL nor kernel (as I can see from /proc/slabinfo).

I wrote simple C app. which tries to allocate as much memory as possible calling malloc() in a loop I found how much free memory _really_ available. Looks like it is Linux reporting problem, but same time this _only_ happen to me with memory previously used by MySQL server. I can see memory returned back to free memory pool as soon as other applications exit.

上面說是top和free報錯數據,MySQL query結束後,query用掉的memory有還回去,但top和free的統計數據裡卻沒有減少。

我也寫了個 C app來試,如他所言一般,程式結束後memory回來了,但查了半天找不到單一process的maximum memory usage定義在那,有人說在limits.h裡,INT_MAX就是maximum memory,但顯然是錯的,我設到比它大的值,anyway,下面是我「要回」memory的 code,因為設到15*會超出上限被killed,只好設12*並同時跑多個,但想想這個數字也不太對,它比8G大,但跑起來大概只用了2G吧,不知道process到底怎麼跑的

#include <stdio.h> #include <stdlib.h> enum { MAX = 12000000000 }; char s[MAX]; int main(void) { int i; for (i=0; i<MAX; i++) s[i] = i; sleep(10); return 0; }

另外聽小豬說在Debian的MySQL 5.1上沒這問題,也許是已修正的bug吧。

備註:query cache相關指令

http://dev.mysql.com/doc/refman/5.0/en/flush.html
http://dev.mysql.com/doc/refman/5.0/en/query-cache-status-and-maintenance.html

The RESET QUERY CACHE statement removes all query results from the query cache. The FLUSH TABLES statement also does this.

還有可以用SHOW VARIABLES查環境設定,像是myisam_max_sort_file_size、max_binlog_cache_size。

2007年7月18日 星期三

享受生活.努力工作?

我並沒有忘記升等考的傳言,只是因為比賽太令我開心了,
所以覺得太早划到終點很可惜。
我想要慢慢地,以我自己的方式,朝著獨當一面的境界邁進。
是的...反正都要做,就開心地做。

by Akari, from ARIA comic 01 

最近又在想未來要做啥,相較於一般人來說,我從小就沒有特別志願,既沒有成為科學家的夢想,也沒有娶妻生子的憧憬,更沒有現實的2x歲賺進第一筆一百萬這類規劃。一直以來,二十多年過去,還是沒有。硬要說的話,人生目標是悠閒過生活,不過這樣的目標只會讓人愈來愈懶散,只肯撥出一些多餘時間為日後的悠閒準備,其餘時間要享受目前的生活。

昨天和大中聊到未來似乎沒啥幹勁,不知要做啥好,想找有意義又有趣又能賺錢的工作,真難啊,二十多歲正值人生邁向顛峰的開始,這麼沒幹勁怎麼行。兩人沒幹勁地聊著人生真沒幹勁,大中忽然想起他要準備AWA、GRE,下週起要開始工作,似乎快來不及準備了,於是大中就這麼脫離了沒幹勁小組,剩我一人沒幹勁。

想來想去,畢業後要嘛當工程師,要嘛出國念博士、回國當教授,似乎也沒第三條路可走。今天看完《阿拉斯加之死》,發現有第三條路:走入曠野。嗯,其實我們可以活得更自在地,但我已離不開便利商店和網路了,如果深山裡有這兩者的話,或許可以走入曠野做SOHO族接case維生。

今天聽wcpeng提到和羊的合作過程,他們如何努力地用email、MSN討論,不斷修改paper,最後投上ACM CIKM 2007。雖然羨慕羊的成果,可惜這不是聽完會熱血的事,如開頭引言所述,我想悠閒自在地做,而不是拼命地做。台灣人愈來愈奇怪,學界業界都講強努力努力,卻不明白這麼努力是為了什麼?或是被環境逼得不得不超時工作,生活品質降低,但產能不見得會提高多少,整個環境惡性循環。

如果睡飽清醒花一小時能做完的事,為什麼要熬夜拼兩小時做完它?費時品質又差。

如果能在正常工作時間內完成的事,為什麼要讚揚加班的人認真?搞得能做提前做完的事也要拉長做。

將研究看成工作的話,我始終無法接受教授們將修改paper視為理所當然的事,不斷地強調好的paper就是要不斷地修改。我相信好的paper需要多次修改,但這不表示大量修改是正常的。經驗可以累積,方法可以改進,為什麼paper不能愈寫愈快,愈改愈少次?比方程式設計師知道bug一定會產生,debug也是必然的,但程式設計師還是會不斷思考如何減少bug的產生,或是如何更快地debug。

也許是我天真,總覺得即使是努力,也可以輕鬆寫意地努力吧,沒必要強調吃苦當吃補,強調付出比別人更多的時間,將這視為美談。相反的,我始終相信偷懶才是進步的原動力,就像不滿於自行車而發明了摩托車;為了省下穿鞋時間而發明拉鍊。我少數的行為準則之一,就是做什麼事都要獲取經驗,不能愈做愈好,至少也要愈做愈快,要有成長做起來才有趣。

回頭來看工時,像歐洲人一樣,一週工作40小時,週休二日不上班,享受生活,這才是美好人生啊!

PS1

ARIA取材自威尼斯,看了大中拍的威尼斯照片,兩者真的很像,挺多現實生活的河髒了些,Gondola上坐的人多了些,舟與舟之間看來有點擠,不像ARIA那般色彩鮮麗。

PS2

別忘了《財經》百大企業之一的執行長,也認為要求超時工作的主管不是好主管,附篇ptt的文章《加班文化》,真是說出我的心聲,希望當我當主管時,不會忘了員工的不滿。

作者: elven (虛無之海、飄渺之空) 看板: Tech_Job
標題: Re: 加班文化…
時間: Wed Jul 4 00:31:05 2007

※ 引述《crary (crary)》之銘言:
: ※ 引述《yasteree (yasteree)》之銘言:
:
: 不想加班最簡單的方法…
: Show出你卓越的工作能力…拿出你的high performance….
: 工作並非只求把事情做完….
: 而在於是否你能達到老闆要求的120%….
: 人家靠加班表現..你則要拿出你的gut….
: 下午五點前我不只把事情做完..還把多的那20%也做好了….
: 這樣你就可以早下班了….
: 反之..如果只求把事情做完就下班….
: 老闆當然就只給你一般達到水平的評價與績效囉…
: 砍展 是衝出來的…

也許你在的環境這樣可行,但是有很多公司是行不通的。

明天下午三點主管要的東西,你明天一大早就放在他桌上,
這是high performance? Yes!
不過下次交給你這種任務,就不是明天下午要,而是當天下午就要!
交給別人沒辦法這麼快完成,所以這些事以後都算你的。

主管訂的工作進度如何如何…
表現你的High performance!超前進度20%! Good!
保證你開始share同事的work,誰叫你能力好,看起來就很閒。
別人做不完的你當然要幫忙,誰也不記得什麼guts什麼鬼。

誰記得你能力強工作表現好,只知道你沒在加班,一定沒貢獻,考績一定差。
希望你和你的主管非常match,他又挺你。
不然發股票/年終時…你就到旁邊畫圈圈吧!

現實,總是在謀殺理想,你有理想,很好。
等你當上主管當上老闆,好好實行你的理想。


※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.56.133.218

2007年7月13日 星期五

Parse invalid HTML by Hpricot (2)

關於Hpricot的基本介紹,可以參見前篇,Hpicot的API文件可以參見這篇這篇,怪的是好像沒在官網看到連到這些API網站的鏈結,我從Google找到的。Hpicot雖然好用,但文件似乎沒有很齊,這裡簡單說明crawl web pages會用到的部份。

開檔

可以從檔案或URL開啟,用法:

require 'uri' require 'open-uri' require 'rubygems' require 'hpricot' doc = Hpricot(open('http://fcamel.twbbs.org/'))

會得到一個Hpricot::Doc物件,接著可以使用search()找出特定部份的資料,我都是用CSS path,配合Web Developer查CSS path,容易使用。

Search

example code:

doc.search("//div#sidebar.list/ul/li/a").each do |t| ... end

這個例子裡,search回傳Hpricot::Elements,Elements是類似陣列的資料結構,每個元素的型別是Hpricot::Elem。t.inner_text的型態是String,tag內的純文字;t.attributes[…]是Hash,存放各屬性的值,比方用t.attributes[’href’]取出超鏈結指向的URL。

Hpricot::Elements可以繼續search,可以先取出一大區塊的HTML後,再配合if, else來找資料:

doc.search("//div#sidebar.list/").each do |e| if e.search("//h3.label").inner_text =~ /Introduction/ # find data in <h3 class='label'>Introduction</h3> ... elsif e.search("//h3.label").inner_text =~ /Related Work/ # find data in <h3 class='label'>Related Work</h3> ... end end

2007年7月11日 星期三

去年寫的小遊戲:Dice War改版

這個Blog好像幾乎沒提到Game,曾經,我也是個愛打Game的男孩啊!只是興趣轉到電腦後,比較少接觸而已。以前也想過要當Game Programmer,後來漸漸了解這行業而當興趣而已(同樣的事也發生在軟體工程師上啊)。

沒想到轉眼一年過去了,當初玩了Dice War這個遊戲, 覺得很有意思,想弄個多人連線對戰的版本,後來又想,乾脆再加入自訂AI,可以讓人和自訂的AI混戰, 應該更有意思,而且自己寫的話也可以自己調整遊戲性,就這樣衝了一週把它寫出來。有興趣的人可以看“WDW - Wow! Dice War!!”,包含遊戲和原始碼下載,以及玩法說明。

2007年7月6日 星期五

MoinMoin Wiki心得

簡介

MoinMoin官網

聽老光頭說,在他接觸的open source project裡,用MoinMoin當Wiki的居多,看到Fedora官網做得如此精緻,想來試看看MoinMoin,適合的話可以用來做lab首頁。

MoinMoin是用Python寫的CGI,由於用到CGI的緣故,裝起來比PHP寫的Wiki麻煩一些,由於安全考量,通常各目錄預設都是不能執行CGI,所以apache要多做設定。雖然沒有PmWiki或DokuWiki這麼好裝(1 ~ 5 mins即可裝好),但相較Twiki來說,MoinMoin Wiki好裝許多。

安裝

官網的安裝教學頗為散亂,我大概和MoinMoin Wiki的文件不合,有時寧願自己試也懶得翻文件,總覺得文件的脈絡沒有整理清楚。相較之下PmWiki和DokuWiki清楚多了。

  1. 從官網下載
  2. 解開後,參照Basic Installation執行安裝的script:

    python setup.py install --install-data='/usr/local'

  3. 參照Wiki Instance Creation新增Wiki base,直接用網上提供的script較快。
  4. 從網頁上按 login -> UserPreferences 註冊account,修改wikiconfig.py:

    superuser = [u"YourAccount", ]

    設定permission:

    acl_rights_before = u'YourAccount:read,write,delete,revert,admin Known:read All:read'

    Known表示已註冊使用者,All表示所有人(包含未登入者),這樣設完包含註冊的人和guest在內,預設權限都是唯讀,需要其它權限的話再改acl_rights_before。

(待修,改天再補完整點)

過程裡有錯誤發生時,可以參照web page的回應,或是看/var/log/http-error.log,error message寫得很清楚。可能會遇到的問題像CGI不能執行、Python版本不對或缺Python module,或是改config檔時沒照Python規定的縮排,懂一點Python有助於除錯。

Plugin

對我來說,一個Wiki的好處,除了安裝容易、Wiki code好寫、權限設定完整外,最重要的是plugin的質和量,這裡簡記一些plugin相關的心得。

對MoinMoin來說,

wiki code: [[XXX(args)]]

parser讀到這行wiki code後,會呼叫data/plugin/macro/XXX.py內的procudure “execute(macro, args)“。

相當簡單易懂的plugin做法,把plugin的python code放到data/plugin/macro/下,即可使用(CGI每次都會重讀,但standalone server可能要重跑server),因此史上最簡單也最有威力的plugin:in-line HTML,只要這麼寫:

in data/plugin/macro/HTML.py:

def execute(macro, args): return args or " "

wiki code example,貼flickr的圖(兩行合一):

[[HTML(<a href="http://www.flickr.com/photos/12203797@N00/287454598/" title="Photo Sharing"> <img src="http://farm1.static.flickr.com/112/287454598_d5c67feb2a_o.png" width="555" height="376" alt="couplet" /></a>)]]

表格

MoinMoin的table可以做到rowspans和colspans,而DokuWiki和PmWiki做不到colspans。使用table必備的plugin:MiniPage

雖然code有點醜,但透過MiniPage可以在table cell裡塞wiki code,做到像是table內的list,table中的table應該也OK,我沒試就是了,因為wiki code必需寫成一行,可讀性接近於 0,詳細介紹參照MiniPage上的說明。

surge protection

原意是避免被DoS,讓使用者各項操作到限定數量後,禁止對方的操作,但在我反覆測試編輯的情況下,反而是我一直被封,要等一會才能用。雖然可以調高限定數量,但還是很麻煩,後來發生狀況後我就直接砍surge log ( data/cache/surgeprotect/surge-log )。

ps.

有機會的話,再來寫篇三個Wiki的試用心得,現在是覺得各有好處,不見得那一個比較好或比較不好。

2007年7月5日 星期四

早起的陷阱

剛才差點中陷阱爬不起來,被try叫起來後睡了一下回籠覺,張開眼後驚覺已九點多了,急忙忙地爬起來,放音樂提振精神,看似一切完美即將趕上出門時間。

但…其實我還在夢裡,現在po文的行為應該不是二次陷阱吧? (孔明!?)

說到早起就不得不談今天要搬回台北的try,再會啦,感謝你多次拯救我睡過頭的危機。雖然一年來我們沒有打過puyo,但我們共同為Defender奮戰過,還有昨晚打一點點的Boxorz

記憶

在健文的版上看到小遊戲(?)讀心術,想起以前當家教時曾用這把戲唬過學生,藉此說明「數學其實很有趣的」,希望引起學生對數學的熱忱。這遊戲結合了創意,將簡單的把戲發揮更為淋漓盡致,可看成結合美工、創意的數學魔術!

想起完全忘記的事總會帶來很妙的感覺,像是想起大一大二有家教、想起大四上飛去北京五天。除了為記憶感到不可思議外,更覺得過去活得比想像中還要充實,從而感到欣慰(雖然回頭看最近的事,永遠嫌不夠充實)。

轉念想想為什麼會忘了這些事呢?這代表同一時期,有更多更累的事存在,轉而忘了這些「小負擔」,也顯得自己曾有過更深的磨練,進而為過去的自己感到驕傲,也更有自信開啟下一個挑戰。好漢不提當年勇,但正因有過當年的好漢,才有今日的自信。心胸有多大,舞台就有多大,一再地放大自己的眼界,提高自己的氣度,才能不斷地提昇自我,永不滿足地追求自我實現。

哈,好久沒寫這類喔喔喔地勵志文。

ps. 讀心術背後原理

1. pick a number 10a+b
2. follow the rules, you’ll get (10a+b) - (a+b) = 9a
3. all the figures with number 9n are the same

附中的回憶

(寫於2007-04-14,保留當時BBS上的排版)

看到flyhermit版上的”附中守夜”, 順著去看”史上最大搖滾教室”的相關活動,
激起了埋在深處的附中回憶, 無法退去的熱情,
剛才和yulong很high的聊了些附中的事

高中真是不可思議的階段,
能進附中對我來說也是奇蹟般的轉捩點,
在進附中前我對自己沒那麼強的自信,
也沒那麼強的熱情追求自我實現

真要追憶參與活動的回憶, 國中大概是最認真參與活動的時候,
高中比較被動, 加上參加的是電腦性社團, 活動都是技術面的,
動手做的活動只有畢典, 也因為畢典而有無法完成HSNU-Game的憾事

記得那時還因為要趕畢典進度而翻牆回學校佈置,
不確定有沒有守夜…

喀嚓!!

剛才回憶的鎖終於敲開了, 守夜的景象一張張地湧上心頭,
和TB等人一起在中興堂2F打牌, 玩殺手,
還有到附近某個同學家陪他拿東西,
五年前, 最後一次動手做, 認真投入的活動

還有某天和徐維懷(我肯定名字有打錯XD)輪流彈中興堂鋼琴的回憶,
irace當時也在場, 那時和徐維懷借了琴譜,
那陣子正好讓我對改變對鋼琴看法, 激起對鋼琴的興趣

大學後雖然活動沒少過, 但愈來愈技術向,
非技術向的嫌做起來太不順手, 費時不討好,
想做的事愈滾愈多, 而將投入活動的心埋藏起來,
甚至忘了辦活動的樂趣

有些事, 現在不做, 以後的確不會再做了,
一直有好多事想現在做啊…

ps. 經阿吉提醒,正解為「徐唯槐」。

2007年7月4日 星期三

厄夜變奏曲(含一點《鬥陣俱樂部》介紹)

囉哩叭嗦的開場白,只想說明這部片有多恐怖

大概半年前我看了《鬥陣俱樂部》(原名:”Fight Club”),驚為天人,像這樣劇情好、結局佳,又能令人思索的電影,實在難得一見,但這電影有個問題,使我遲遲定不下心來寫心得,因為《鬥陣俱樂部》富含大量的反社會思想,若看過沒多加思索,可能會被導引到負面無助益的思考,或著年歲已高的情況下,觀後忽然覺得人生了無意義,又無力捥轉,反而會活得更為行屍走肉。

我不覺得這樣的想法太過誇大,《鬥陣俱樂部》確實孕含這種力量,當然,多數人可能只當作普通娛樂片,它確實也是不錯的娛樂片。在種種考量下,我變為選擇性地找人聊這部片的樂趣,而沒有寫篇公開心得。那麼,我今天為何又提了出來?因為我發現比它更恐怖的東西。

《厄夜變奏曲》(原名:”Dogville”)是部相當奇特的電影,開場馬上告訴觀眾這是不折不扣的劇情片,空盪盪的舞台代表一個小村,只佈置必要的道具,連門都沒有,在地板上圈出一塊狗形表示看門狗,簡化至極的佈景突顯一個重點,什麼都是次要的,專心注意劇情就是。去除簡陋的佈景,鏡頭壓迫感地直拍人臉是另一問題,初看不太舒服,而且全劇長達168分鐘。無論從那一點來看,都是令人望之怯步的作品,但自從聽朋友介紹過它奇特的舞台呈現後,我一直想找機會看看,今天碰巧看到浩然圖書館新進這片,耐著性子看,看完一小時後視線已無法離開,直直想知道劇情發展,回神時168分鐘已經過去。看完片後,我有些晃神,一方面是168分鐘太長了些,另一方面結尾的衝擊對白令我不明所已。

若說《人魔》、《奪魂鋸》這類影片是視覺和聽覺上的恐怖片,那《厄夜變奏曲》不折不扣地是精神和思想上的恐怖片,從那毫無誠意的佈景來看,它毫無娛樂效果,我也不需如《鬥陣俱樂部》那般擔心,這部片只有想挖掘人性醜陋的人會看,對這些人來說,看這類片子不是問題。像我了解看鬼片或恐怖片(非思想面的)會令我睡不好,我自然不會看。

開場白寫這麼多,到底《厄夜變奏曲》在說什麼?劇情很簡單,一個封閉的小村莊,村民只有一二十人,在觀察者湯姆(男主角)眼裡,每個人都封閉內心,不願承認自己的弱點,像是自私、猜忌、傲慢。藉由新訪客葛莉絲(妮可基嫚飾演,全劇唯一賣點)的到來,湯姆利用她做人性實驗,藉由葛莉絲和村民的互動,突顯出村民不願承認的弱點。另外,充滿反諷意味的旁白是一大特色,。

以下是簡單的劇情描述

故事一開始非常美好,在葛莉絲的努力下,村民打開心門,自承缺點,使得整個村莊過得更快樂。但一些小小的火花,使得村民變本加厲地要求葛莉絲幫忙,葛莉絲愛這個村莊,也需要這個村莊窩藏她,不斷地積極正面地思考,但這樣的行為只使村民日漸過份,最終一發不可收拾,突顯出種種人性醜態。

以下是含劇情的心得,含些許負面情緒,不喜者勿看

全劇用了大量的雙關,Dogville(狗村)意味著村民如狗一般,劇末葛莉絲和父親的對話揭曉狗村的反諷點。葛莉絲認為當環境壓迫人們,人們不得不做壞事以維生時,我們有什麼權力指責他們?但導演顯然已有答案,狗村的行為沒有正當到如《悲慘世界》中尚萬強那般不得已,到像是順著本性開啟的惡。導演似乎想說明這樣的惡行沒那麼令人憐憫,而是比狗還不如的行為,於是劇末,一二十人和一隻狗組成的狗村,只有悻活那麼一隻狗。

也許導演想說的更為殘酷一些,被環境迫始為惡仍是不如狗的行為,不過在我看來,《厄夜變奏曲》較像是人為因素,而非環境因素(性侵不是生活必需的,和環境惡劣無關),但話說回來,環境不正是人造成的?似乎說也說不清。看到葛莉絲「醒悟」而下令屠村那幕,我的心裡有股痛快感,是的,劇情就該這麼演變,寬恕地饒過他們,不會令他們學到什麼,最多只是暫時性的恐懼和伴隨暫時性的安份。

在後半劇情裡,有太多可以探討的問題,而不知從何談起,似乎是一個個無解的問題。好比葛莉絲的順其自然是否有錯?若葛莉絲早一步呈現強烈的反抗,是否村民不會逐漸習慣解放惡意,終而麻痺為比狗還不如的存在?這麼看來,受了眾多不人道欺凌的葛莉絲,反而是原罪?

自認是觀察者的湯姆,不斷地用力思考而什麼也沒做,是另一值得探討的存在。如同旁觀葛莉絲被欺凌的其他村民,故作高尚而最終爆發的湯姆,是否在精神層面是更高的罪惡?

可以探討的內容太多,思索下去只會令人反感,令人無力。其中我認為有趣的一點,是引發葛莉絲父女吵架的原因 - 傲慢(arrogant),這也是開頭一再強調的伏筆。究竟像湯姆以實驗人性、觀察人性而樂,自以為是地高高在上看著一切才叫arrogant?或是認為權力即是一切,看到一群瘋狗就殺一隻警示他們的葛莉絲父更為arrogant?還是以崇高的道德標準審視一切、自認為崇高地承受一切的葛莉絲最為arrogant?

或著,以觀眾身份看著他們揭露人性醜態,並在旁冷靜分析的我們才是真正arrogant?

或著,自許為萬物之靈,以狗或其他動物字眼象徵低劣、目空一切的人類,一直以來都是arrogant的存在?

這部作品還有續集《命運變奏曲》,剛才和浩然薦購了,看看那天有緣觀看吧。老爸我不清楚,老媽老哥相信人性本善,借這種片子回家看不太好,對他們有害無益,只會令他們不舒服。

在Rails裡用AJAX Observers

Rails預設即有內建prototype.js,並提供一些語法操作prototype.js,會將rails code轉為prototype的function call。參照“Agile Web Development with Rails” ch18,有用Observer實作livesearch的例子,但這份code有點小問題。

in observe.rhtml:

<label for="search">Search term:</label> <%= text_field_tag :search %> <%= observe_field(:search, :frequency => 0.5, :update => :results, :with => 'term', :url => { :action => :search }) %> <div id="results"></div>

注意observe_field()要放在追蹤的field_id之後,observe_field()放到text_field_tag()之前會失效。

in xxx_controler.rb:

def search @phrase = request.raw_post || request.query_string ... end

這段code裡的request.raw_post會從POST取得form內的資料,但如同raw_post的名稱一般,它取得的是如同GET後附上”var=value”的內容,並且,observe_field()會把追蹤的field_id內的內容取來當做key,若使用者在text field裡輸入”hello”,raw_post內的值會是”hello=”,而不是預想的”search=hello”

因此,解決方法有兩種:

  1. 修改controller:改成request.raw_post[0,request.raw_post.length-1],去掉’=’
  2. 修改view (observe.rhtml):改成

    <%= observe_field(:search, :frequency => 0.5, :update => :results, :with => 'search', :url => { :action => :search }) %>

    參照官方文件,:with會補上key值,再將追蹤的field_id內的值填入key內。

照理說,預設把追蹤的field_id和它的值設為”field_id=value”再傳給:url指定的method才合理吧?

2007年7月3日 星期二

中華「甜愛玉」

在炙熱的夏天時,小時候我總會吵著老媽買愛玉來吃,特別是10元一盒方便食用的中華「甜愛玉」。但老媽總說加工物對身體不好,又嫌愛玉貴,吵個幾次才到菜市場買一大包的仙草,配著砂糖融成的糖水吃。為什麼每一年吵著要愛玉,最後買回來的是仙草,長大後問老媽,她只說忘記了。

隨著年歲增長,經濟能力從零提昇到可以自己生活的程度,一盒10元的中華甜愛玉自然不是問題,想吃時就吃,管它春夏秋冬。或是到大潤發一次買一堆,兩盒四盒地吃到爽。剛才在7-11看著最近推出的愛之味「寒天」和我曾吃過的7-ELEVEN「白葡萄廬薈凍飲」,兩者都是凍飲,喝(吃?)起來都很過癮,售價分別是30元和25元,足足是中華「甜愛玉」的兩倍以上。這時我煩惱的是,肚子只有一個,我沒辦法一口氣吃完兩個。

雖然長大後夢想幻滅了不少,多少曾以為長大後能辦到的事,在接近目標時才發現自己無法做到,才發現時間愈剩愈少。幸好,隨手實現的小夢想也不少。時間無法逆流,也只能走一步算一步,享受不同時期的樂趣吧。

別了,期待吃愛玉的我,取而代之的是,無法明白愛玉可貴之處的我。

ps. 離開7-11時,我手裡拿著愛之味「寒天」和7-ELEVEN「白葡萄廬薈凍飲」,而廬薈凍飲已在打這篇文章的途中喝完了,洗個澡過一會兒再來喝寒天吧。

2007年6月30日 星期六

Kanon Vol.1+收藏盒入手

這個Blog的ACG文實在太少了,不符現實,雖然盡是沒營養的內容,偶而記一下吧。

jnlin的忙,今天拿到Kanon DVD Vol.1+收藏盒,$570元,附贈海報一張。平時為了應付房租伙食費學費等而賺錢,久了會有種無奈感,偶爾買ACG產品時,才會有精神上的充實感,有種「賺錢真好啊~~」的感覺。

原以為海報是和封面一樣的名雪獨照,打開後發現是5人合照,這版本的圖也不壞。btw,雖然我是Ayu支持者,名雪外貌還是大勝Ayu啊。

海報貼上牆後,目前房內累積有四張了,這是一個人住一間房間的好處啊。海報都是背對桌子的貼法,總覺得貼在書桌正面有點怪,牆壁還是雪白一片才清爽。至於DVD,不知道擺到那一天才會想看,幾個月前買的鋼之鍊之術師劇場版現在還沒拆封,買動畫對我來說,最享受的還是調查、在店內逛,以及買下手的那一刻吧,買完後反而擺很久才會看。

2007年6月27日 星期三

Google Image Search相關雜記

綜合摘要近來看到和Google Image Search相關的舊消息,三個消息合起來滿有趣的,Image Search已是第二主打,又不斷有新動作,像是加新功能或是用Human Computation增加dataset的量以提高準度。

Google Image Search是Google第二紅的服務

Google Image Search占Google所有服務使用率將近10%,是Google主頁外最多人用的Google服務。

資料來源:Hitwise在2006年5月公佈的資料,主頁占了將近80%,Image Search將近10%,GMail才5.5%。統計方法寫在該頁留言裡,節錄如下:

Hitwise uses the IAB definition of a visit (considered the standard by most) which is defined as: “a series of page requests with a gap of no more than 30 minutes between each one.” All data on my blog (unless otherwise specified) is coming from our U.S. sample of 10 Million internet users (all residing within the U.S., we also have samples for the UK, Australia, New Zealand, Hong Kong and Singapore.

Google Image Search加上臉部篩選功能

這裡看到的,在URL最後加上 “&imgtype=face” 就會專搜臉部特寫,用認識的人試也滿準的,不過搜ACG人物有些不太準(像搜綾波零會看到碇司令,這是精神汙染啊),稍微看一下後,應該是Image Search本來就不夠準的原因,不是臉部篩選的問題。

Google Image Labeler

之前有提過這個收集image tag data的遊戲,收集來的資料可以用來加強Image Search。

2007年6月26日 星期二

沃爾瑪效應

書藉基本資料: 沃爾瑪效應

由於是一個月前看的書,當時有留下片段的摘要,現在看看有些已無法體會,所以說寫心得不能拖啊。

二月國際書展和Ambuscade逛大街時,他推薦了幾本書,《沃爾瑪效應》是其中一本。雖然目錄做得有點糟,章節名意義不明,都是看了不會想翻進去看的名稱,但每章都很有趣。我通常會在即將還書的幾天內開始猛看,但這本量多又很有趣,因此逾期了好幾天才還。

大家都稱讚規模經濟好,業者造出規模經濟後,可以壓低成本,在售價不變的情況下提高淨收入。但若反向操作呢?在擁有超大規模經濟的情況下,要求供貨商降價,並把降下來的成本反映到價格上,讓售價同步降低,提高消費者購買意願。這正是全世界最大的零售商沃爾瑪的策略 - 天天低價。

本書前1/3左右介紹沃爾瑪的優點,後面開始從不同面象將社會亂象的源頭導引到沃爾瑪,作者做了大量的訪談,訪談對象包含沃爾瑪的關係企業、研究沃爾瑪的學者、沃爾瑪的離職員工等,點出沃爾瑪帶來的負面效應有可能大於它的正面效應。

比方後記寫的尼爾森水龍頭公司裁員事件,依不同時期被裁掉的員工整理出順時序的訪談,彷彿和這些員工一樣一步步看著公司改變,等著輪到自己被裁而結束這樣的掙扎,看了相當有衝擊力。當一個美國員工的人事費可以聘用十位中國員工時,已不是美國員工願意打拼就能解決的問題,取代性高的員工只能等著被裁掉。這些員工在後記裡也反映出原公司產品的品質陸續低落。不用中國員工可以嗎?不行,沃爾瑪逼你降價,降不下去它就找別家合作商。於是供貨商只有兩條路可選:逐年降價改變生產結構而倒閉,或措手不及地失去大量營業額而倒閉。值得注意的是,假設營業額一樣是一億,預期營業額兩億變為一億和預期1.2億變為一億,虧損差很多,要考量之前的製造成本、持續的囤貨成本以及錯失時機無法銷售的風險,所以沃爾瑪的離去不僅是暫時少掉幅面的營業額這麼簡單。

書裡有些側寫沃爾瑪的文化很有趣,像是講求省錢的沃爾瑪,連總公司開會都是坐箱子,而且沃爾瑪從來不付電話費,不管是一二十年前的創業期到現今茁壯發展,沃爾瑪總是要求對方付費。或是為了省人事費,部份賣場要求員工打卡下班後回賣場工作,甚至把門關起來,不讓他們離開,或是顧用非法外勞掃地。眾多省錢措施引爆勞資糾紛,沃爾瑪敗訴賠了一筆費用。還有沃爾瑪行事相當低調,關係企業怕惹毛沃爾瑪,也不敢回答什麼。作者說這是相當辛苦的調查,像第一位研究沃爾瑪的學者想要獲得各沃爾瑪賣場的開市日期,沃爾瑪不願提供,她只好全美各州自己查,花了一年才弄齊名單。

我沒修過經濟學,觀點可能有些偏頗,但個人覺得這本書提供很有趣的實例了解規模經濟的正反面力量,而且去除意義不名的目錄不談,作者的文筆不錯。

2007年6月25日 星期一

未來出路

經過碩士一年後,未來想做的事更明確了些,一年前假若我能進Google工作,我不見得會去,因為還沒經歷過學術研究的生活,有些事沒做過就會很羨慕,總要嘗試後才會懂。

現在我覺得真的想做研究的話,到那都可以,而且以我的興趣來說,到Google這類公司不見得不能做研究。所以呢,目前的計畫是,好好利用剩下的一年體驗認真做研究的日子,至少可以避免一項遺憾,不會日後感嘆研究真美好。

體驗過研究生活後,是否要出國唸博士,反而不是那麼重要的事,畢竟我的最終目的不是出國唸博士,那只是我期望的一種過程,但人生只有一次,期望的過程卻有很多種。

不過去除出國唸博士這樣的大目標,想讓生活具有同等級的充實度,需要很強很強的自制力,anyway,具體來說,任何計畫不變,一樣是碩二畢業後再考慮是否要出國,碩二畢業到Google應徵看看,了解自己的水準差多少,只是我更相信這是我想走的路,雖說我還是不明白我最有興趣的工作在那。

2007年6月24日 星期日

交大畢業典禮

中午吃飯時接到flyhermit的電話,說人在交大,看要不要聚一下,不巧的是,明天可是決戰formal language的大日,加上下午很熱,而且我晚上原本就要到交大,雙方就很隨性地說傍晚再電話連絡吧。吃飽回家後,開始和formal language奮鬥,歷經數小時的廝殺,小有成果,我帶著滿意的心情到果庭素食吃飯。果庭素食餐點不錯,但人實在太多了,點菜要等一陣子,而且我特別愛點要等更久的焗烤。到果庭找個位子,打開日文版的四葉妹妹,慢慢看漫畫消磨時間,還能學日文,一舉數得,不管做什麼,樂在其中是最重要的啦。

吃飽也快六點半了,騎車到交大後打電話給flyhermit和spearmint,將畫冊拿給spearmint,和flyhermit合照,這傢伙不懂得尊重學長,人都比學長高了還墊腳合照,啊呀呀。合照完flyhermit匆匆離去,大概是一年半沒碰面,談話時神色有點不自在。不過對我來說是沒啥差啦,只要網路上有偶爾有連絡,一兩年沒見也沒太多差別,看來我先天就很適合網路時代。

接著和spearmint到系計中聊了升學研究的事,遇到喜歡先放假消息的立文(說不讀碩士,結果提早半年入學;說不讀博士,又提早半年入學),八奇的思考是很特別的,故意先讓你知道下一步,再掉入他們思考的陷阱,我們平凡人猜不透的。還有看到不想買冷氣卡又想吹冷氣的大碩,看來也是期末奮戰中。

七點多離開系計中前往中正堂外看煙火,竟然都來了交大,不看完煙火再走,是跟自己過意不去,那就像把一梱梱的千元鈔票燒起來往天空扔的表演,自己玩不起,有機會當然要看一看。打手機連絡一年不見的command,果然沒任何違和感,這就是command的特色,不管過多久都一個樣,一樣想嗆他。上回和DL比校內賽時才在感嘆大學時沒能三人一隊比ACM真可惜,不然我和DL一起嗆command,比賽一定更有意思。command和flyerhmit說一樣的鳥話,什麼bbs看版分類太雜不想看,都是ACG文,明明就是認真和娛樂文各半,勉強均衡的生活。

在路上看到威佑,和家人在一起的樣子,好像還有看到大刁的身影,但回神時已沒看到。還有看到詹家欣和海寧,他們和flyhermit、command都是工研的學弟,這兩人和command站在一起一看才發現不得了,三個學弟都是留過學的,兩個UIUC一個Chalmers,只有我是土生土長的。人活著要懂得把握機會,大學專題的三個同伴也陸續到西半球晃過,想想我實在太龜了。

今年煙火還不錯,但時間似乎比去年短,大概是一部份經費流到燒很久的煙火瀑布吧。那瀑布燒了數分鐘之久,頗不可思議的,可惜火花小了點。當往天空爆的煙火一出來,也沒人注意在旁默默燃燒生命的煙火瀑布,回過神時才發現差不多熄了。天空的煙火很讚,一直仰頭看得我膀子都酸了,有一發似乎太早引爆角度也有問題,往人群的方向射,幸好在頭上三五公尺處爆炸。

煙火結束後,和學弟們拍個照,遇到花僮bc和立文,哈拉幾句我就往車棚方向離開,在車棚遇到大學四年來沒什麼照顧的直屬學弟阿男,不過包含高中在內,我不會主動找直屬學長姊和學弟妹,阿男大概是和我說過最多話的直屬學弟了。回家後發現比預期到家進度早一小時,索性記下今天的流水帳,就這樣結束了今天的交大畢典。

Web OS

近來Web as software(Webware)愈來愈流行,整合(marshup)網站也愈來愈多,Yahoo、Google先後推出Marshup功能,分別是Yahoo! Pipes Google Mashup Editor。關於這兩者的介紹,可以參照ericsk寫的《Google Mashup Editor》。這樣的整合仍不夠徹底,既然將Shell Script的哲學轉到Web上,將OS也轉到Web上,豈不是做得更徹底?這正是這篇文章的中心想法 - Web OS。

大家多少會認為不打遊戲、不做美工繪圖的話,電腦其實不用買多好,大部份人也只要上網和處理文書而已。Webware有兩大好處:

  1. 不用備份(公司倒了東西當然也沒啦,但我想這應該比硬碟壞軌的機率低)。
  2. 走到那用到那

若對Webware感到陌生的話,可以想想Gmail之於Outlook、del.icio.us(或HEMiDEMi)之於我的最愛,還有像Google Calendar、各式Wiki等。文書軟體的發展也愈來愈便利,文書軟體的介紹可以參照stephon寫的:《常見的 Word Processor 的比較》,用Webware的文書軟體,具有即時線上共寫文件的好處(包含同步資料、目前撰寫的成員、線上對話功能),這是一般文書軟體難以做到的功能。從去年七月開始,我已漸漸把常用功能轉到Web上,資料都存在Web上,信件使用Gmail,其它服務寫個script備份到Gmail裡,所以Google別倒就不會有問題。

功能過剩的PC、software轉到Web上的發展,在軟硬體上各隱含一種可能發展方向:

  • 發展Web OS整合各式Webware,不只可以加速Webware的開發,降低跨瀏覽器的問題,順利的話也能發展協助除錯工具(Web OS底層的library包掉這點)。
  • 發展開機直接上網的電腦,也就是什麼功能都不需要,將成本壓到最低,只要內建簡單的作業系統具有上網功能和瀏覽器即可,這有助於電腦的普及

像Hinet這類電信業者若有心發展,必能掀起一陣風暴,就像推廣MOD的做法一樣。MOD的特色是,將一個盒子接上電視,盒子開機後會自動連上伺服器,即可透過搖控器選擇想觀看的內容,包含一般頻道和隨意選擇播放的影集。同樣的做法可以用到個人電腦上,將PC換成這樣的盒子,開機後自動連上Web OS,開機快且操作簡單,而且可以幫用戶省下軟硬體開銷以及備份資料的問題。

雖然我是這麼期望的,但再好的產品,客戶不領情也是沒用,最近一篇的新聞寫得不錯:《「Web OS」只是海市蜃樓嗎?》,文末提到:

「雖然在充滿科技怪人與新潮流追隨者的世界中,網路作業系統很有趣,但其實我們這些人可能只佔總人口的百分之十,」他說:「總是有人問我這些新名詞是什麼東西,要用來幹嘛。所以這些技術最後還是要回歸到一個重點,就是你的產品是否能解決問題,而讓別人願意付錢購買。」

若單看軟體層面,Web OS不夠有魅力讓使用者放棄PC上的功能較強的軟體改用Web OS內的軟體。但搭配硬體一起賣就有不同的效果,對還沒建立自己使用習慣的使用者來說,購買價格一半以下的簡單硬體+內建連上Web OS的方案,應該很有吸引力。另一方面,文書軟體的大市場不是個人用戶,而是公司、學校和政府機關。以學校來說,若全校學生同時在Web OS上做作業,教師要觀察進度和批改作業都很容易,資料直接共有。而且在這類場合較不用擔心原本的使用習慣,可以整批一起汰換。

無論如何,Web OS和簡單硬體是否會發展成功仍是個問號,這篇不敢說是預言未來發展,只是記錄下自己希望的發展方向,日後用來對照自己的思維和整體變動的差異性。最後,WkiPedia上有目前的Web OS清單,可以玩看看,其中YouOS的速度頗快的,不用註冊就可以感受看看Web OS。

西安行,第三天(續) + 第四天

第四天是發生在6/3 (Sun.)的事,果然應該一回來立即寫,竟然可以拖到三週才寫完。

第三天晚上會長帶我們去逛回民街,看起來和台北忠孝東路差不多發達,不過路更寬一些,店面也大一些。沒什麼新奇的地方,逛起來沒啥意思。買了些紀念品就回飯店了,我買了個用鞭子打的陀螺送老哥。當場我有試打,感覺挺容易的,但回家後一試,發現買回來的鞭子太細了,和試玩用的鞭不同,打不動陀螺,玩不起來。

第四天早上又到飯店附近的小街晃,白天看起來安穩多了,不像第二天晚上那樣看起來可怕。中午到機場搭機到香港轉機,再返回台灣。接著是這篇唯一的重頭戲,也是不可不記的要事。進中正機場入關檢查護照時,我們三人都快速地過關,唯獨Eason被攔了一下,只見海關小姐看著Eason的照片微笑,多問了幾句問題,推測是發現Eason本人而藉機寒喧幾句,但Eason不告訴我們海關小姐說得話,隨便唬弄我們,把話題帶開。可惡,所以說Eason人帥真好!

出機場後開始下雨,只好把行李放在實驗室,待沒晴天再載回家。結果那陣子台灣連下了一週雨,我的行李也這麼擺了一週,只好把換洗衣物一小包一小包帶回家,不然就沒衣服穿啦。接著是迎戰6/7 (Thu.)的Data Mining期末考,比賽剛完就得唸書,這就是人生啊!日記可以拖這麼久也很了不起,算算Data Mining的最終成績再幾天也要公告了,西安行也終於打完了。

2007年6月23日 星期六

Folders4Gmail:解決Gmail labels太多的困擾

Problem

Gmail用久後,label只會愈來愈多,但過一段時期後有些label不常用到,砍掉以後就不能用了,不砍和一堆label擺在一起占空間不方便點選,若有個階層式label分類就方便多啦。

Solution

官網: Folders4Gmail

用內嵌在瀏覽器的javascript改編顯示介面,真是聰明的點子。照Folders4Gmail網頁的指示先裝Greasemonkey ,再裝Folders4Gmail即可使用。

Folders4Gmail會把名稱取為”DIR\LABEL”的label歸類到名稱為”DIR”的label下,例如我是這麼用的:

  1. 建立新label:Seldom Use
  2. 將不常用的label A更名為”Seldom Use\A”

於是產生一個新的分類目錄”Seldom Use”,不常用的label放在下面,平時可以摺疊(fold)起來,眼不見為淨。

不過這個做法有個問題,在沒裝Folders4Gmail的電腦上會看到更亂的label區。Gmail快把這功能加進去吧,Google內部員工沒這困擾嗎?還是他們自己用別的方法解決了?

2007年6月18日 星期一

台灣加油 !

看了真得很感動,政治人物別再為一己之利而對立吧,團結力量大!看了video下的留言,有不少謾罵之詞,大家各自讓自己過得舒服就好,為什麼要刻意攻擊他人呢?btw,這個WPVideo真是不錯用,安裝和使用都很簡單。


台灣加油 ! Taiwanese hero !

2007年6月17日 星期日

西安行,第三天

比賽結束後,第三天是觀光行程,一早七點多就出發前往秦王墓參觀兵馬俑,車程大概一小時。一般來說是先參觀秦王墓再到兵馬俑現場看,但我們的行程太趕,只有經過秦王墓沒停車參觀,直接到兵馬俑。

車上聽導遊介紹西安歷史,中國最早建朝的古都長安,也是最多朝代的首都,歷經十三個朝代。雖說如此,城市開發太快速,看起來沒什麼古味,反而北京保留比較多古城,感受不太到西安的古味。

到兵馬俑後,換成該區的專員帶隊介紹,果真如專員所言,要七分聽,三分看,不然只是看到一堆泥人,感受不到世界第八奇景的魅力。雖說如此,我對自然奇觀比較有興趣,雖然兵馬俑的史蹟聽起來很驚人,看起來也不壞,給我的衝擊卻是普普。有圖有真相,附上和兵馬俑的合照(攝景者:會長):

兵馬俑
(背後是修復中的兵馬俑,聽說是項羽進關後搶走兵馬俑手中的兵器,並特意破壞秦王陪葬品)

參觀完兵馬俑,大家在商店內買紀念品,不少人買藍田玉,我不懂玉,聽導遊介紹辨識方法,玉的顏色愈暗對身體愈好,透光看時要有高透明度,那才是好玉。將玉佩在身上,玉上的白色花紋會愈來愈少,這稱為人養玉,玉養人。接著就一群人買了一堆直徑兩個指節的環狀玉,說掛在腰間可以改善健康。一個要人民幣200元,在國營店裡賣,應該不會有假貨,但品質還是要挑一下。挑好一個買下手後,才想到家有二老,只買一個似乎不太對,再買一個,這次在大陸的主要花費就是這塊玉,姑且不論掛著是否會變健康,買保健紀念品給父母的心意會讓他們開心,身體也會因而變好吧。這也算是我大學之間的轉變,要是以前,我只會在意東西是否有效,很務實地計算,最後覺得買玉不如早睡早起多運動吧。

藍田玉

中午在附近一家餐廳吃飯,衛生水準相當地...嗯嗯,用餐途中有服務員來詢問感覺如何,大家都形式上地點頭說不錯,倒是西安當地的學生批頭就說衛生很糟,菜不熱,一個人一句,連續說了一大堆缺點,我們坐在旁邊感到有些尷尬。服務員離開後,西安的朋友說他們平常都這樣的,餐廳有問題,甚至會叫經理來說話,真猛。

下午到碑林參觀,碑林像一邊的老式建築,又有點像寺廟,裡面收集許多名家的碑,我有印象的只有康熙的「寧靜致遠」。也有看到現場拓碑,拓下來的內容大概拿來當紀念品賣吧。

碑林-1
(「碑」字是故意少一撇,為了看起來對稱)

碑林-2

碑林參觀完後到陝西博物館,以中國人為主介紹人類演化歷史,但我們都沒在聽,一來是我們請到的介紹員像念稿般地碎碎念,旁聽又一群人,不方便看,二來走了大半天路,累了,就在館內閒晃,看到椅子就坐著休息一陣子。由於我們團內有位外國學者,多請了一位用英文介紹的專員。這位專員說話好聽多了,可惜英文太差,我聽一陣子就放棄,繼續閒晃。

離開博物館差不多快六點了,六點在大雁塔前有水舞表演,導遊說這是亞洲最大的水舞,但聽會長、桶哥他們說台中亞歌花園的水舞比這漂亮多了。單看這裡的水舞,變化太單調,也沒合節拍,看一陣子就膩了,到是挺想跳進水柱裡玩,可惜沒那勇氣。另外唐三藏取回的西經,就是放在這個大雁塔裡,可惜沒入內參觀。

大雁塔水舞

晚餐到市中心附近的大飯店吃飯,上菜時還會有服務員用麥克風介紹菜名,像是「這首菜是本飯店最著名的...,還受某某給予高度評價」,不過隨行的西安朋友一樣不給情面,在旁邊小聲說「這做得沒另一家好吃」。這裡不得不感謝微軟的隨行人員史先生,託他的福,我這素食者這幾天吃得還不壞,這一餐弄了四盤一人份旳菜給我,再單點一大盤大白菜,剛好中午衛生不好不太敢吃,這餐把量吃回來,吃得很飽。

吃飯時照舊和西安的朋友聊兩岸的差距,像是他們覺得台灣便利商店的密集度不可思議,或是麥當勞這類外來店的價位差異,麥當勞在台灣或西安的價位差不多,這表示在台灣,麥當勞的價位和其它餐廳差不多,所以麥當勞很有競爭力;但在西安就太貴了,所以生意不太好,這類店不會很多。還有陝西人很愛吃辣,他們說四川人是把辣椒當配料用,陝西人是當菜吃。說完席間一位湖南人就滿臉悲苦地述說他剛來西安唸書的慘痛經驗,導致他後來吃飯都先把花椒挑光,再開始吃。接著當地的西安人就吐糟說他太沒用了。而我呢,平常也不太吃辣的,在這餐終於吃到有浸過辣油的菜,果然夠勁,一小口辣海帶可以拌1/3碗飯。大概是火氣大的緣故,吃完回台灣嘴巴破了一週才好。

另外大陸人的口音滿有趣的,北方人似乎比較會捲舌,兩位河北人說的話我都聽不太懂,問西安的朋友聽不聽得懂我們的話,他們說聽起來很標準,對我們平時就使用普通話溝通感到有點呀異,因為他們在家鄉時大多說方言,像在學校的成員太雜,才會用普通話溝通。想想我們早年也是說閩南語和客家語的多,現今反而沒什麼方言,都是普通話。

(待續)

2007年6月11日 星期一

西安行,第二天

第二天早上吃早餐時,會長當代表去開賽前會議,回來後帶來不得了的消息,說大賽要求我們走「星光大道」,要喊口號(比方「向前衝!衝衝衝!!」之類的。),到時會有600多名學生觀看,盡量把氣氛弄high一點。聽完我們啞口無言,第一次遇到這種比賽,我腦裡浮現校慶時搭的舞台,我們要繞場走上舞台看著台下一群群觀眾,還會有暖和氣氛的主持人在旁搭腔。

午餐很豐盛,在南泉大酒店內吃合菜。第一次見識到所謂的八冷八熱,先上八道冷盤,再上八道熱菜,一桌大概10人出頭,沒有一餐吃得完。中國人很計較數字,這個「八」是無法妥協的,所以每餐都是十六道合菜,外加餐後湯、水果、點心,真是太可怕了。由於我是素食者的緣故,是給我單點一份三菜一湯,吃起來還不錯。下午討論完報告內容後,會長、Eason、yulong各自在房間睡覺,都是Eason人紅害大家太high太累的緣故。我由於生病的影響,昨天飛機上都在睡,晚上又早睡,下午還算有精神,只好苦命地一人坐在椅子上再排練一次報告流程。

三點半後,輪到我們到會場排練,一出飯店就覺得很熱,明明早上涼爽到想穿外套,第一次待在大幅溫差的地方,還滿新鮮的。走在西安交大校內,路上看來男女比例是 1:1 ,但當地學生說他們是 6:1 ,比新竹交大還誇張。而且西安交大人數是我們的三倍,但校地差不多大,逛起來較沒新鮮感。另外,聽說西安交大是目前唯一和交通運輸有關的交通大學了。

到會場時,上海交大還在排練,在外面等的時候,沈向洋一群人剛好到達會場,和我們寒喧幾句,難得有機會和沈向洋對話,可惜是這樣的內容:

沈:「你們是新竹交大嗎?」
我:「是。」
沈:「你們老師是那位?」
我:「他沒有來。」
沈:(側頭想了一下,再轉回來)「你認識林進燈老師嗎?」
我:「認識。」
沈:「他是我學長。」
我:「哦。」

事出突然,我的反應太爛了。沈向洋近距離看起來比上回在圓山大飯店時蒼老一些,也可能是上回講者平均年齡較高,顯得沈向洋年輕吧。

由於排練一直出狀況,我們只好在休息室等,後來西安交大的隊伍也來了,和西安參賽隊員和大賽的工作人員一起在休息室聊天,附帶一提,大賽的工作人員都是西安交大的微軟推廣社團,他們說這個競賽是他們辦過最大的活動。和西安的朋友聊啊聊,很自然地聊到收入和生活費,驚人的是,大陸高科技業的收入已和台灣高科技業的收入差不多了,但我們的物價指數比他們高,所以我們的科技人才反而過得比較苦。物價指數反映出平均所得,這突顯出大陸貧富差距更大。另外他們的碩士要唸三年,第三年寫畢業論文和找工作,我們這裡反而逐年有縮短修業的趨勢,近來資訊學院更有鼓勵大四先修碩士課程以便一年畢業的制度。

由於排練嚴重延遲,排練結束後立即趕回飯店參加晚宴。晚餐和午餐一樣是八冷八熱,這回和西安交大參賽者坐一桌,聊了不少內容,漸漸熟了起來。

終於到了比賽時刻,幸好一切都是我想太多,當晚比賽時確實有600多人,但看起來就和一般比賽會場一樣,在類似禮堂內的場地報告。賽場請了六位身穿紅色旗胞的美女,領各隊伍進場。幸好原定進場走道被觀眾濟滿,我們改走講台旁的小路上去,省了走星光大道穿過觀眾群的步驟。

報告過程還不錯,我的隊員們覺得這是我報過最好的一次,我自己也頗滿意的。報告前我不確定我到底會不會怯場,常常我的表層意識不覺得緊張,但潛意識卻緊張得讓手腳發抖。但這回挺有趣的,從頭到尾感覺都很平常,也能偶而左右掃視觀眾。報告完的Q&A特別有成就感,評審一問完問題立即流暢回答,並能在投影片裡翻到準備好的答案,回答的字句一停,台下立即報以熱烈掌聲,感覺挺爽的。這次大賽在簡報上費不少工夫,增加不少做簡報檔和報告的經驗。

最後,桶哥那隊拿到大獎,我們得優勝獎(參加獎加強版),大賽結束後,還有學生記者來訪問桶哥那隊,可惜不知道他們報導會怎麼寫。

回飯店的路上,我覺得肚子很餓,請西安帶隊的朋友帶我們去找東西吃,晚上的小街看起來還挺恐怖的。後來在一家超市買了神奇的果汁牛乳,這是西安朋友推薦的。添加15種微生素,原料裡更有從沒聽過的「濃縮牛乳還原」(不是奶粉嗎?),喝起來和可爾畢斯差不多,幸好喝完沒什麼異樣。由於明天一早要出發參觀兵馬俑,回飯店後沒多久就睡了。

十二國記 ~ 月之海.影之海(上)

(寫於 2005/07/22,對照動畫有洩露部份劇情)

上集結束的時候,正好是陽子對人性失望,瀕臨死亡之時,也就是說,下集一開始那集死老鼠,不…是好鼠代表就要出場了。看了原作的上半卷後,我對十二國記動畫小組的敬意從原本的200%提升到400%,動畫改編小組實在是強到我只能說

“再來看一遍動畫吧!!”

原作沒什麼缺點,是動畫改編的太好。原作裡,陽子是唸女校,而且,只有她一個人穿過虛海,沒錯,動畫以不少的戲份加了兩個角色進去,而且賦予他們重要的戲份。就算大家沒看過小說,只要想想那兩位原創人物[*1]的長期演出,也能體會出動畫制作小組的修改有多出色。

動畫裡的蒼猿更是傳神十足,個人認為聲優選角是主因之一(我超喜歡他的演出),另外,蒼猿對話重心的修改也使得蒼猿部份的劇情更出色(也更黑暗)。蒼猿在小說裡只是一直勸陽子一死百了,動畫裡改為強調人心的假面,再配上畫面實在很有魄力,劇情支線上也配合修改成陽子被連續嚴重出賣,這些事件原作也都有,但殺傷力弱了很多,欺騙,人心的假面,最後以陽子的獨白收尾擊退蒼猿,個人相當欣賞這段,還不知道小說下卷怎麼寫就是了。

這邊對照一下一些支線差異,可能更能了解:

小說 動畫
達姐 被賣 被賣
同鄉老人 行李被偷 老人去告官
河邊的母女 極度疲累時被那對母女救,被救後立刻逃走 想行搶卻被救,立刻逃走
水禹刀 內容和動畫差不多,但沒有刻意強調的主題,訴求有點離散 強調陽子,朋友,師長和父母都戴著人心的假面

此外,兩位原創人物,男的在”風之萬里.黎明之空”裡恰當地結束掉,圓順地完成一部份支線劇情,杉本在描述黑麒麟的故事裡扮演了”換景角色”。動畫裡有許多陽子和雁王聊天,或是杉本調查黑麒的部份,在原著都是直接描寫的,動畫改編巧妙地用這種手法將和陽子無關的故事串起來。

PS

*1 杉本有在原作出現,但只是原世界裡的過場角色,只是被人欺負的存在,並沒有像動畫裡那樣高傲,富有企圖心。不過杉本在動畫裡的活躍,也帶來一點設定上的小bug啦。

十二國記 ~ 圖南之翼

書藉基本資料: 圖南之翼

有山田章博的插畫,小野不由美的文筆,《十二國記》真是小說裡的上上之選。

《十二國記》的動畫版亦是動畫裡的錮中翹楚,動畫版更將優秀的原作發揮得淋漓盡致,更加上深一層的原創劇情。可惜八部小說裡,只有四部改編成動畫,但看過小說後,也能明白未改編的這四部,的確不適合改編成動畫,而《圖南之翼》正是其中一部。

並不是《圖南之翼》不夠精彩,事實上,未改編的四部小說裡,《圖南之翼》可說是最有意思的一部。一般小說在看過一次後,會降低第二次閱讀的樂趣,畢竟已知道結局,期待度大減。然而,《圖南之翼》是一部還沒看就知道劇情大綱和結局的小說。《圖南之翼》的主角,珠晶,在前幾部裡已用治理恭國九十餘年的恭王身份登場,《圖南之翼》講得是這位十二歲小女孩如何昇山成為恭王的故事。

小野不由美在《十二國記》系列裡刻劃人性的特色,一樣在《圖南之翼》裡表現出來,雖然部份內容講道理的成份重了點,中局將劇情拉到高峰後,卻接銜得有點散,但大致上故事性掌握得很好,人物個性刻劃明確,讀來生動有趣又能反覆思索對話裡隱含的人生道理,這正是《十二國記》出色的地方,不只是有趣的故事,更能反覆思索體悟出新想法。

《圖南之翼》前期有放一個伏筆,在終章再揭曉,也讓第二次閱讀多了點樂趣,可以用不同的角度觀察。另外,由於《圖南之翼》的主角個性是呈強好勝又鬼靈精怪的珠晶,正好是我喜歡的類型,多少對故事加成效果。去除這個人加分要素,一般而論,《月之海.影之海》和《風之萬里‧黎明之空》或許更有意思。

近來輕小說大幅流行,我看得不多,但綜合朋友們和自己的評價來看,似乎夠份量的作品不多,喜歡看小說的人,不妨試試老字號的《十二國記》,相信能感受到不少樂趣。

2007年6月6日 星期三

西安行,第一天

上週四托比賽的福,能到西安一趟。原本不怎麼期待,但查WikiPedia後發現西安是古都長安的舊稱,而起了很大的興致,也才發現,西安在陝西省,位於大陸的中央,而不是「印象」中的西南邊。地理老師,我對不起你,難怪我高中月考分數只有六開頭。

上次去大陸是前年11月時,到北京比賽,這次到西安回想起一些當時的經驗,對照之下還滿有趣的。像是不少朋友不習慣西安人車分道不明顯,喇叭聲太吵,但和北京的經驗相比,個人覺得西安交通還好,也許現在北京也改善了吧。西安看得到不少機車,數量比例和腳踏車差不多吧,不像北京禁止使用機車,只看得到一堆腳踏車。不知道我有沒有看錯,大多為電機車,沒看到排廢氣的管子,感覺比較環保。另外不得不說,每輛車速度都不慢,卻總能在快撞到時巧妙的錯車,在西安待了四天沒看到一個交通爭執事故,看來大家技術都不錯。

西安的街道看來頗現代化的,像是台北加桃園除以二吧,這點在第三天晚上的逛街感受更明顯,廣告看板以霓虹燈為主,不過都是平的,不像台灣的店面廣告,一塊比一塊往前突出,不知道西安有沒有管制,印象中日本有管制的樣子,這樣市容較好看。比起西安現代化的街道,北京的古味比較重,比較有新鮮感。

第一天行程很簡單,中午12:00搭車往機場,兩點多的班機飛一小時到香港,之後再飛兩小時多到西安,到西安後已是晚上八點多。台灣往返香港時搭國泰,座椅、服務、伙食都不錯,其實這些優點都是在返回台灣時才深刻體認到,感謝強大的對照組東方航空,在香港往返西安的旅程裡告訴我們國泰有多麼美好。值得一提的是國泰的素食伙食還不錯,去的時候是吃點心回來時是晚餐,兩者都OK。衝著素食令人放心這點,以後出國我會選國泰吧,不知道其它家如何就是了。

在香港等轉機時正好是下午,外面天氣也好,雲海相映。在無聊等機的途中,會長發現一件驚人的事實,連帶影響後三天的旅程,以及影響到西安朋友們的觀點,那就是 --- P嫂的照片超像陳奕迅(Eason),當真是兩岸看過的人都說像,可惜沒能拍照存證。

到西安後,住得是西安交大旁的南洋大酒店,看起來挺高級的,住起來也不差,我們住的是普通間,一房兩張床一天500人民幣,價錢還OK。微軟的招待人員請餐廳幫我們做份晚餐,用畢晚餐大家就回房休息了。轉轉電視,看到一個套好的辯論節目,辯題是「哭和笑,那個好?」過程挺精采的,成語名言脫口而出,仰揚頓措的口音,雖然是娛樂性節目,有這樣的說話本領,將內容包裝一下,就能轉為很有格調的演講者。這類人才在大陸大概不少,台灣卻很難看到。

由於身體不太舒服,不到淩晨一點我就睡了(出發前幾天我都是清晨五六點睡),隔壁房的會長大概是和Eason同住的關係,兩人太high弄到四點多才睡。桶哥那隊則是臨時趕程式,弄到早餐時間才搞定,索性吃完早餐才回房補眠,真猛。

狼與辛香料

書藉基本資料: 狼與辛香料

看到 jnlin 推薦這本小說,起了興趣,果然是沒有科幻沒有魔法,只有經濟學的小說。

令我意外的是,作者只大我兩歲,在就讀物理系時能以經商為背景寫出這麼有趣的小說。當然,若對經商沒興趣的話,部份內容讀來會有些無味,但這不構成看這本小說的阻礙。書中有不少想法值得深思,雖然不如《十二國記》般老練,又有另一番思索空間。像是眾人熟知的「時間就是金錢」,由赫蘿來看,時間稱不上錢,畢竟時間對她來說並不稀有,由此反映出物以稀為貴的想法。或是提到受騙(和包裝只有一線之隔),「被騙時只懂得生氣的人根本不成對手。應該要懂得佩服這種手法,才算是真正的商人。」人生就是不斷的競賽,讀書考試只是其中一小環,有時因為包裝不當而輸了比賽,常抱怨對手狡滑、評審太笨,卻沒思考自己如何改變。山不轉路轉,路不轉人轉,懂得不斷學習對手,不斷調整,最後才能笑得多,哭得少。

這是本很有趣的小說,唯一小遺憾是,不知是翻譯問題,還是作者功力不夠,部份鬥嘴情節不夠通順。期待這部的續集。

2007年5月25日 星期五

用Ruby畫圖表

gruff會用到librmagick,librmagic會使用libmagick,畫圖要用到字型,所以一共要裝gruff、librmagick (自動裝libmagick)、字型。畫出來的圖很漂亮,預設配色就很讚了,這裡有些輸出例子。

documents頗少的,幸好用法很直覺,麻煩的是要裝libmagick,還有需要字型,之前Gnuplot也要字型,但不知怎麼搞的,雖然有錯誤訊息,還是能畫圖,但這回沒辦法,在freebsd without X的server上用gruff會有這樣的error message:

/usr/local/lib/ruby/gems/1.8/gems/gruff-0.2.8/lib/gruff/base.rb:965:in `get_type _metrics’: Can’t measure text. Are the fonts installed? Is the FreeType library installed? (RuntimeError)
from /usr/local/lib/ruby/gems/1.8/gems/gruff-0.2.8/lib/gruff/base.rb:965 :in `calculate_caps_height’

我不想裝 X ,也不清楚單獨裝字型的方法,於是跳槽到已裝有 X 的debian上用 XD 。debian上用gem安裝rmagick失敗,只好用apt-get裝,但我找不到package,後來在york協助下,才發現我搞錯名稱,是 librmagick-ruby1.8,不是libmagick-ruby1.8,我漏打一個 ‘r’ ,難怪找不到。

官網上已有畫line chart的例子,附上pie chart的例子:

require 'rubygems' require 'gruff' g = Gruff::Pie.new g.title = "My Graph" # gurff會把data內的值加起來輸出相對比例 g.data("Apples", 3) g.data("Oranges", 2) g.data("Watermelon", 4) g.data("Peaches", 1) g.write('my_fruity_graph.png')

興趣和賺錢

未來想做什麼工作,可以看成在興趣和賺錢之間做平衡,也就是這樣的公式:

w(job) = r*w(interest) + (1-r)*w(money)

如果w(interest)能量化,能得知比重 r 的值,這是個簡單問題。許多人可能放棄尋找interesting job,一來自己的興趣很難找,二來有趣的事很難賺錢,於是有些人的看法是,先賺夠錢再退休做有興趣但不賺錢的事。

對我來說,最重要的是活著的目的,我覺得活著就是為了享受,要活得有意思,怎麼個有意思法,仍是半開放問題,但我確信我無法接受先賺錢再退休這種說法,一來是賺錢時很無聊,二來是退休後我要做什麼? 還是得回頭找什麼是有意思的事。

無奈的是,判斷什麼是無趣的事很容易,找到有趣的事很難,我一直搞不清楚我想做什麼,想過什麼樣的生活。 只找local optimum很容易,只要判斷新的事是否比現在的事好,但我常會懷疑,這個方向是否正確。

依目前不同時期體驗過的生活來看,最有趣的生活是各種活動都有,要生活充實,心靈悠閒,循環週期要小,活動包含:

做出有用的東西、得出新的心得、看ACG、看小說、看不同領域的閒書、聽音樂、做音樂、打球、和朋友閒聊、增加CS能力、找強者聊特別的事、…、以及免不了的賺生活費

時間有限,我總希望能找出同時滿足多方期望的事,比方和強者共事做出有用且賺錢的東西,並在做的途中學到新的能力。

由於這樣的期望,我時常選擇能一石數鳥的事,久而久之,沒想到這個習慣對我產生很強很正面的影響,唯一小小負面影響是做事挑東挑西,很不情願做一石一鳥的事,但有些必要之事就是這麼單純。

從小到大,我唯一持續具有的使命感是「資訊整合」,從這角度來看,進Google工作最合我的志向,但這事難度很高,不過沒試過也不知道難度有多高,我想碩士畢業那個暑假,我會嘗試看看。

那麼,在那之前,在畢業之後,我要做什麼? 什麼是有必要做的事? 如何才能避免浪費生命和瞎忙? 我有自信不會落入忙碌無意義的生活,但很難專注在一件事上,做不了多久我馬上會詢問自己:

“是否存在更有意義的事? 我該維持目前生活的步調嗎?”

很慘的是,看書中途也會這麼想,睡覺時也會這麼想,做任何需費些時間的事前也會這麼想。

生活太平淡時可以加速決策,”反正不做也沒啥變化,先做再說吧”,但當有多件事可做,且已做了一些事時,就會徬徨是否該多做新的事,即使機會稍縱即逝。舉例來說,我不想落為一直發現有賺錢機會,而一直賺錢,賺到最後忘了自己為何需要賺錢。為了充實而充實,為了特別而特別的,都會落入爬不出的泥沼。

學生生活即將剩最後一年,進大學前的理想生活只剩這個機會實踐,不知最後我會帶著懊悔離開學校,還是慶幸終於能體驗理想生活。

我的理想生活很簡單,每天早睡早起,固定時間運動,每天學英文數學,兩三天看看閒書,維持更新電腦科學和工程的能力,偶爾練琴作音樂,讀詩詞古文,學日文,不可省的ACG休閒,週末和朋友聚會,最重要的是能持續數個月以上。

學生時代有可能做到,但出社會後面臨經濟問題,則變另一回事了。

2007年5月21日 星期一

包裝是門學問

當我還是技術狂時,覺得嘴炮是次要工作,東西好別人自然會用,所以把基本能力學札實點才對。然而報告也是門學問,不如我原本想像那麼簡單,這年頭選擇太多,如何快速吸引觀眾注意力,讓他們了解自己的東西為何,好在那裡,變得相當困難。所以做報告,做簡報檔,上台報告都變成值得深入學習的能力,看來很淺顯的道理,但還是很多人不願意做,或是認為那是膚淺的事,仍然認為重要的是技術吧。

但剖析社會結構就會發現,即使現今結構看似「扭曲」,做品牌,做包裝的部份獲得最高比率收入,上台報告的人看似做最輕鬆的事,卻最風光,收入也高。以前我覺得這是歪道,只想弄好技術,但現在漸漸覺得走上這歪道比較適合我 XD 。或著說,一半技術,一半包裝才是最適合我的工作,真要說包裝能力,見識過商管人才的作品,我了解自己再怎麼學,也只是個半調子。

技術人才會覺得過度包裝的報告很浮誇,不足取信又找不到重點;擅於行銷的人會覺得技術人才的報告令人想睡,什麼也聽不進去。我應該頗適合當中間份子,我本來就一直走中間路線啊。

依目的區別slide的做法

看了vgod Blog的“World’s Best Presentation Contest”後,得到許多新想法,slideshare真是好站,從中整理出一個新思維,其實學生複習時也是看slide,只有少數的課要看課本,有些文章指出別把slide當Word用,塞一堆字進去,這個說法有對有錯,一般性報告時這是對的,但上課用講義或技術性報告(例如group meeting報paper),應該要塞多點字,條列性描述很好,不過不要塞句子。

整合近來slide的用法,slide已有多種用途,視目的而定:

大型演講

大型演講要用Lessig Method,也就是含大量的圖和極短的單字。

  • 極佳的例子:identity2.0,或是聽Steve Jobs介紹Mac新產品。

這種slide已可看圖說故事,目的是抓住觀眾焦點,強調或整理觀眾大概知道的事,說服觀眾這很重要,或這個方向是對的。高橋流和Lessig Method很像,差別在於前者字較多,後者字較少。(都是庵野秀明為了省制作EVA費用,只放靜態大字少放圖,高橋流才會變較遜的版本。)

上課或報paper

上課或報pape用的slider要多用條列式,別塞句子,當然圖也不能少,多放例子。wcpeng或icwu的slide做得不錯,一些book附的slide也不壞。用Lessing Method或高橋流是自爆,觀眾需要時間思考,需要多些訊息留在畫面上給他們回想。

介於文件和slide之間的用法:圖畫書?

目前還沒把這部份厘清,用法介於文件和slide之間。

看起來像圖文並茂的圖畫書,可能是資訊爆炸時代產生的新文化,資訊量大要能短時間吸收又要能抓住讀者的吸引力,於是有這種可以直接讀的「圖畫書」,和大型演講簡報的差別是資訊量多,觀眾可以自己直接讀,講者可有可無,大型演講簡報的內容讀過後只能獲得片面資訊。

另一個好例子:The Brand Gap一書的slide版,看到p45真是笑翻了:

The three most important words in differentiating your brand:
focus
focus
focus

用bbs或Blog來做效果很弱,一般書籍印刷成本太高也不能這麼做,只有電子文件才有本錢這麼做,配合slide特殊換頁的格式,效果很讚,但沒多久就會被用到老梗吧。

區分聽眾類型

看到這篇留言深有同感,第一個comment說得好,聽眾分佈混雜時,就像拿一支箭射兩個目標一樣,是不可能做到的事,但比賽往往如此,有些比賽不知道評審組成,還要猜目標是什麼,準備方向只比丟銅板猜測好一點。

我問一些講者如何處理聽眾問題時,有些講者竟然用茫然的表情看著我,似乎從來沒想過這問題,如果沒有假想聽眾是誰,那來演講不就像對天空射箭一樣,運氣好射中才能皆大歡喜。感覺上是第一個要考慮的事,但往往被忽視的事,《管理是什麼》第一章提到組織目標要由外而內,思考如何為顧客創造價值,不然做得再好的東西,顧客不買單還是沒用,這是一樣的道理,沒找好箭靶就亂射箭,浪費資源。但許多組織忽視這事,所以該書才要花一兩章的篇幅強調它吧。

2007年5月19日 星期六

執行力

書藉基本資料: 執行力 (Execution:The Discipline of Getting Things Done)

由於事太多做事又沒效率,常忙一陣子懈怠一陣子,所以借了這本來看,想說來看看如何才能時常保有執行力。結果我搞錯了,這本不是鼓吹如何有熱情,也沒有勵志小故事,取而代之的是如何務實地管理。作者是前百大企業的執行長,書中從執行長的觀點說明如何管理這樣龐大的組織,值得一看。

綜合《管理是什麼》和本書的說法,組織存在有個目的,組織營運需要策略,但再好的計畫,沒有落實等同於沒有計畫。執行不是一種策略,而是必要的元素。許多公司的失敗,不是策略不佳或方向不對,而是沒有徹底執行。

方法人人會講,執行是很務實的事,大家都知道,就是做不到。這麼看來,這本書似乎在白費力氣?但這本書確實做到了,讀來不會感到虛無飄渺。各章有些準則,內文再進一步用許多case study,用很務實的方式說明如何管理,所以寫下各章摘要就和沒寫一樣,只會變嘴炮,得親自讀才有用。由於經驗不足,後半談人員、策略、營運執行的部份吸收率很低,等多一些相關經驗後,或許可以再看一次。

這裡隨意摘要部份心得:

  • 十個重點等於沒有重點,重點不能多。
  • 重視員工,和他們直接對談。
  • 執行長再忙,組織再有階層化,執行長偶爾還是要站在第一線,才不會狀況外。
  • 要時常追綜執行結果,不然員工會認為公司不重視這計畫,忙一陣子後老闆又會想新主意,不用太在意。
  • 要有強力對話(robust talk,這裡沿用書裡的翻譯,不過我覺得翻成穩健對話較好),讓大家肯發表意見,讓大家認為發表意見有效,開會才有效率,而不是大家不坑聲通過決議,再擺爛讓它不了了之。
  • 要找會學習肯做的人,而不是找有才能不認真做事的人。再好的想法,沒有落實等同於沒有想法。
  • 超時工作不可取,若主管超時工作,表示主管什麼都得自己來,無法充份授權(管理失當)。並且,他很可能會要求員工超時工作,拖累整個部門,很可能某天整個部門一起垮掉,拖累公司。
  • 預算或預估營收不是看去年的數字調整出來的,而是依今年各計畫細項制定出來的。常見的錯誤做法:去年營收一千萬,今年要成長20%,所以今年預估營收訂為一千兩百萬。如果今年時機良好,和同行相比,成長20%搞不好反而是市占率下降。如果今年時機不好,營收八百萬搞不好算是表現良好,不能因此認為負責的主管失職。

上面提到許多管理常見的問題,一般主管認為位階愈高事愈多,那可能和基層談話,那可能一一追踪,而讓下層感到不滿。大部份人可能當員工時罵管理階層,當管理階層後覺得這也沒辦法。但其實是該做,而且可以做到的事,從前百大企業執行長口裡說出,特別有說服力。

和《管理是什麼》一樣,談管理方法的最後,都會說要回歸人本,要能了解自己,改善自己的為人。讓我想到《僕人》說明領導的方法,也是一路往內推,最後說明要有愛心。

相關文章

2007年5月13日 星期日

SIM卡壞了

昨天坐在客運上坐著坐著,到台北後打開手機一看:

請插入SIM卡

結果SIM卡壞了。

回家後和老爸交叉測試手機和SIM卡,證實確實是SIM卡壞了,打104問中華電信的客服號碼,藉由客服很快就問出週日客服中心有開,帶些本人帶證件去就能當場換SIM卡,$300元會加入下個月的電信費裡,真是方便。電話總機的操作很方便,選項也放得不錯,客服人員態度也好。今天下午到客服中心,也很順利的換好SIM卡。沒想到中華電信的服務這麼好(還是每家客服都差不多?),看來激烈競爭的結果,對消費者來說真是福音。

另外中華電信的客服中心旁邊有遠傳以及其它兩家客服中心,四家併排,不知道是不是計畫好的,還是這幾家電信業者的老闆有交換持股,所以才這麼安排客服中心的位置?

整個換SIM卡過程輕鬆簡單,唯一的問題是...要把消失的號碼一個個輸回去,所以啦,若打給我時發現我不知道你是誰,別太在意,我只是懶得把還沒用到的電話輸入回去而已。

2007年5月11日 星期五

微軟思源競賽:簡報雜記

今年第一屆的兩岸三校微軟思源競賽,交大預賽部份今天結束了。這次有個不錯的想法,做得比以往參加比賽來得認真,或許也是因為經驗更多了,時間較能花在刀口上,不像以前一群人聚在一起猜評審想看什麼。雖說如此,我們這次也沒完全猜中評審想看的東西,經理人和學者的著眼點差很多,評審包含學者和經理人時,又要在極短的報告時間內面面俱倒,很難。

由於點子不錯,有實作出成果,我怕報告鳥掉得話,會相當嘔。愈害怕報告鳥掉,準備得愈認真,去除反覆修改簡報檔的時間不算,15分鐘的報告,我大概演練了一二十次,最後才能在一氣呵成的情況下,將報告時間縮到15分鐘內。現在想想,我真的有輕度完美主義傾向,算了,Intel總裁不是說嗎,「唯偏執狂得以倖存」(”Only the paranoid survive”)。

比賽前一天因為近來作息太亂,加上緊張的緣故,結果失眠了。三四點睡不著時還想說在腦裡默練一次,練一練就會睡著了吧,結果沒效。只好改放純鋼琴音樂,沒效;改放ARIA Drama,還是沒效。最後到早上六點半還是睡不著,索性爬起來看「相聚一刻」的心得,待有睡意後再放純鋼琴樂回頭睡覺。

由於中午前和老師約好要報一次給他聽,所以睡沒多久又得爬起來。看幾集動畫放鬆心情,就出門找老師。報給老師聽的感覺不錯,突顯出練習的成果。下午正式報的時候,不知是那個開關忽然Switch On,忽然變得很high,報起來比平常更有力一些,去掉一些小錯,和錯估評審想聽的內容外,整體看來,應該是我這輩子報過最好的一次,有流暢度,適度放鬆的笑點有達到效果,語氣有變化不會太平淡,也有顯出自信(大概吧)。由於各層面沒大問題,因而突顯出做簡報檔的問題,內容太單調,圖放太少。看來想提昇報告的能力,要先花些工夫在做簡報上。

我認為報告時要站在螢幕前才對,才不會讓評審不知要看螢幕還是看報告者,達到人幕一體。另一方向,紅外線燈效果還是沒有手指來得清楚。今天報告的結果也驗證我這個看法是對的,只是事前忘了和yulong及jenho商量按「下一頁」的時機,變成臨時起意由他們聽我指示按「下一頁」,雖然會變很吵(下一頁、下一頁、下一頁...),也沒辦法。沒想到搭得頗有默契的,我語句一停,就順勢到下一頁,很少需要我出聲才換頁,看來昨天的練習有發揮成效,聽很多次後,他們自然知道換頁時機。

就我自己來看,目前還要加強的報告能力,除了做簡報檔外,還有要從容自在地掃視觀眾,以及更明確的仰揚頓措。另外就是我那脆弱的抗壓力,太重視比賽時,比賽前的心境更難調適。加油,繼續朝完美簡報之路繼續邁進。

2007年5月6日 星期日

執行力 (Execution:The Discipline of Getting Things Done)

書藉基本資料: 執行力 (Execution:The Discipline of Getting Things Done)

《管理是什麼》的前言有天下文化對該書作者做的訪談,裡面提到《執行力》和《管理是什麼》有互補關係。《管理是什麼》讓我們了解正確的方向;而《執行力》讓我們了解如何前往正確的方向。目前看完前兩章,核心觀念在於「執行不是一種策略,而是必要條件」。

《管理是什麼》和本書都有提到戴爾電腦(Dell)的例子,說明戴爾電腦的成功在於去掉中間商,降低成本,讓消費者花更少錢而更願意購買,而自身又能獲得更多利潤。這樣的經營模式相當簡單,似乎誰都想得到,聽到後也能如法炮製,那麼戴爾電腦持續的競爭力在那?《執行力》一書指出,關鍵在於戴爾電腦每一環節的確實執行。

前兩章不斷強調執行的重要性,說明策略已夠多更複雜了,但沒有執行的計畫稱不上計畫。再好的計畫,沒有確實執行仍是無用。如何確實執行是後幾章的重點,前面只有點到一些方法,像是發現數據不合預測時,應該詢問該部門原因,而不是只有責怪。

類推到個人來說,聰明的人很多,但光聰明不努力仍沒有用,只有努力才能發揮自身的才能,就像 A 的才能有100, B 的才能有 60 ,如果 A 的執行力只有一半,結果仍比不上全力執行的 B 。想到自己以能更有效率完成事情自豪,但常常無法落實自己制訂的計畫,就感到慚愧。近來更加明確看到自身專注力和毅力不足的危機,若想做更有成就的事,光用小聰明比別人更快完成小事是沒有用的,重要的是長期的投入。

管理是什麼 ( What Management Is)

書藉基本資料: 管理是什麼 ( What Management Is:How It Works and Why It’s Everyone’s Business )

先前讀《決策聖經》是一頭霧水,後來找了這本《管理是什麼》,號稱沒有專用名詞,寫給大眾看的管理書。還真的是淺顯易懂,另外借了和這本書相輔相成的《執行力》,兩本書一起看真的很讚。

目前看完《管理是什麼》的第一章《價值創造:由外而內看世界》,有不少心得。價值創造是指能明確算出來淨收益 ,例如將省下的時間、人力成本換算成金錢,價值由顧客界定,顧客肯買才有用。從反面例子來看,互動式電視是劃時代的產品,但消費者不買單也沒用。另一方面,效率能創造價值,但不能誤把效率當作價值,再怎麼有效率,顧客肯買才算有價值,還是要回歸顧客的需求,再來思考如何供給,所以價值創造要能由外而內看世界。

經濟學大師杜拉克提了幾個問題讓組織成員不斷提醒組織的目的,避免組織專注於研發而忘了根本:

我們從事的是何種事業?
我們的顧客是誰?
這些顧客重視的價值是什麼?

類似的看法為

誰依賴我的工作?
他們如何應用我的工作?
我的工作對他們為何有價值?

最近看商管的書,覺得這些想法可以和做研究有個對應,有時用商管的方法回頭看研究,會讓研究變得更明確,畢竟商管要能明確定義出變動性大又廣的經濟市場,採用的策略其實很具體。

經濟學上提到供給和需求是一切根本,延伸來看,貨品有互補關係,像是汽車、汽油和輪胎是互補貨品,汽車需求量提高能帶動輪胎和汽油的輸出。從管理學來看,廠商要有良好的價值鏈管理 (supply-chain management),正面的例子是豐田(Toyota)推動輪胎業者採用新設計,以降低車子的成本和重量;負面的例子是福特(Ford)因凡士通輪胎(Firestone)生產瑕疵輪胎涉及數十件死亡車禍和數百件車禍意外,連帶使福特聲譽下降。

營利性組織要由顧客的價值來看自身定位,但非營利性組織(如教育、醫療)重視的是使命。然而現實生活中,非營利性組織必須和其它營利性組織形成價值鏈,而影響到其定位和是否能持續營運。

從顧客和使命的觀點來看,讓我想到工程師和科學家,工程師旨在滿足顧客需求,科學家在追求真理,追求使命。當然,工程和科學之間亦有灰色地帶,站在前線的企業必須思考如何創造新的消費市場,讓不存在的消費族群成立,像是汽車的發明帶動旅遊和運輸的需求;網路電話的發明衝擊傳統電信業。從另一個領域來反思自己投入的領域,總會發現有趣的類推想法。

2007年5月2日 星期三

知識管理:bbs, wiki, blog, bookmark (2)

上篇為《知識管理:bbs, wiki, blog, bookmark》,前陣子有學弟開始用Wiki,於是來分享近來的使用心得。

這篇重點在寫文章和工具的用法,一樣工具,隨著目的不同,用法會不同,寫文章(筆記)前要先決定讀者為何,這點明確定位後,工具用起來就會很順,反之,定位不清,寫起來只會綁手綁腳。

我目前的心得是bbs,wiki,blog,bookmark都會用到,我的心得不是工具的功能有多強,而是我對這些工具的定位更清楚了,下面描述的都是我的用法,不代表它們就是這麼用的。

使用工具前要先確保兩個重要功能:
1. 全文搜尋
2. 多重分類 (or tag)

再來的議題有:
1. 流通性 (傳播能力,有RSS者較佳)
2. 備份的便利度

比方Blog上述條件全符合,bbs完全不行,wiki的流通性不及Blog。

wiki是寫給自己看的,寫起來快速有組織即可,wiki適合條列編修,反覆修改,內文交互參照,很適合寫筆記和想法暫存,而且像DokuWiki有section editing和folding(plugin),以及headline的sidebar,在wiki page成長後仍保有top-down的可讀性。

lab合作時有用wiki當公告欄放想法,個人想法暫記再從公告頁內開子頁面寫,避免大家頻繁改wiki時造成衝突,試用的結果挺微妙的,似乎有點亂,但滿有用的 ( wiki的特性是可以翻頁面修改記錄,可得知何時誰做了那些改變 )。

blog的流通性最高,用來寫給大家看,寫起來最累,因為對象廣,文章要有組織性,要有背景說明 / 出處參照 / 相關探討 / 文章分類,寫blog有助於組織想法,這種組織和wiki不同,wiki寫給自己看,加上便於修改,組織性比較隨性,blog則有一定受限,像我寫blog摸索一陣子後,就很少開新分類,開一個分類表示我有心在那分類產生後續文章,我在寫blog時的自我要求比較多,像是盡量避免笑臉符號,盡量用通順文章的格式,加強正式表達能力。

bbs則是介於blog和wiki之間的用途,由於看bbs的大多為已認識的朋友,要feedback比較快,而且寫起來比較快,不像寫blog會很在意文章架構,在意語句和段落間的連接性。

bookmark網站的用法還在摸索中,目前只是當URL暫記,說來諷刺,我的研究方向是針對bookmark,但用的頻率最少。

以上不管那一種用法,都有滿多實驗空間,像是讀書心得,在寫成blog前可以放在wiki上暫記,累積到一定的量再集合成文章,但不知怎麼,就是覺得寫在bbs上較順,順便期待在寫成blog前能不能先得到feedback。

另外我覺得開不同的wiki站感覺也不錯,我目前有三個wiki,lab的PmWiki記研究想法,個人的PmWiki暫存舊的,短期間的東西,不在意資訊的組織性,個人的DokuWiki記新的想法,逐漸將wiki架構弄得更明確,最近看《資訊架構學》和《隨意搜尋》有些心得,覺得wiki可以有更多可能,再摸索看看。

另外配合GMail的label + filter可以做到不錯的合作溝通媒介,人多時可以考慮用Google Newsgroup,大家再用GMail訂閱,依我目前的試用情形,三人使用mail溝通很有效率,確保大家都能即時看到資料,重點是要用label + filter將信件自動分類。

如果溝通時需要有行程表之類的長時間記錄,可以考慮用newsgroup或wiki記下來,我傾向用wiki記。

近況:研究 + 比賽

今天在浩然睡著時,夢到我在Blog上費些心力地寫了篇好文,也有人給正面反應。醒來發現文章是在夢裡寫的,醒來後連文章標題都忘了,虧我在夢裡打這麼久。看來這是日記神在暗示我,該到Blog除除草,寫篇文章。

最近在趕研究,深深覺得想做個好研究,發表在學術界,所費心力已足以完成一個上市產品(當然,會是beta版),研究占掉主要時間,剩下的時間要應付參加的比賽、修課、打工、實驗室雜事。3月時看到一堆比賽,原本想效法會長的”不放過一絲機會”精神,都報看看,反正人多互相罩,應該可以撐過去,到時再看心力要放在那個比賽上。結果除了獎金最高的比賽還沒公佈第一階段結果,其它都過初選了,而且看來都挺有機會的。

於是就開始暗無天日的趕趕趕,今天趕比賽,明天趕研究,今天和老師開會討論研究,明天和朋友開會討論比賽,當真是Endless Meeting。每天早上爬起來就覺得慘,但因為都是自己想做的事,累歸累,到沒有很煩悶。當然動漫畫是不能省的,精神能量的補充是很重要的。

趕到4/15算是階段性結束,休息一下下,接著持續各目標的第二階段準備,再來的重要日期剛好錯開,配合中途殺入的兩科期中考,會一路忙到期末吧。

和老師開會時發現一個問題,畢竟是想真心做研究,不像比賽有個既定目標,做到目標後就能停,或是花超過多少時間就要減少之後的投入時間,做研究既沒目標上限也無時間下限,所以和老師開會時會很認真的想這方向有不有趣,我能不能繼續做下去?但每個人的認知不同,和兩個老師同時開會後,加上自己變成有三份認知,要讓三份認知達到一致看法,覺得一樣有趣,一樣有說服力,而且這方向還要有貢獻,非常麻煩。

無論如何,先繼續朝研究方向衝吧,打工實作、競賽合作的經驗已有不少了,現在需要做研究的經驗,先有個學術成果,才能斷定我到底適不適合走學術界。

2007年4月23日 星期一

1/5 rule self-adaptive under (u+k)-ES (2)

( 寫於2005/12/20 )

想了一種新方法, 測試結果還不錯

將sigma encode到chromosome裡, i.e., chromosome含有Gk, Gs, sigma

select a parent p,
if p.Gk == G
do adaptation (=> revise p.sigma)
p.Gk = p.Gs = 0
fi
p.Gk++

offspring = mutation(p)

if offpsring.fitness BetterThan p.fitness
p.Gs++
fi

如果parent在replacement時被幹掉了也沒差,
一直都留下來的話自然會做到adaptation
( 即parent夠優秀, 才有必要對它調適sigma )

看起來很直接的想法,
但在想出來之前, 一點也不直接, 得跳出幾個迷思才行

1/5 rule self-adaptive under (u+k)-ES

( 寫於2005/12/06 )

前言: 這篇是針對了解ES的人寫的

原本的(1+1)-ES如下

Gs: succesful mutation (offspring is better than parent)
G : sample generations
p = Gs / G
a = (0,1) (recommendation a = 0.8)

sigma = {
sigma / a, if p > 0.2
sigma * a, if p < 0.2
sigma , if p = 0.2
}

經測試結果, 1/5 rule非常有威力, 大大加速了收斂和找到好結果

但在(u+k)-ES時要怎麼套呢? (k > 1)

way1:

count all mutations, if it’s successful, Gs++
p = Gs / (G*k)

way2:

count all successful replacement,
Gs = number of offsprings which is replaced into populations
p = Gs / (G*u)

測試結果, way1比way2好 (還滿合理的),
但都比N step-sized的self-adaptive差

今天終於想到一個解法

way3:

for each generation, count successful mutation, say n,
Gs++ if n/k >= 0.5
p = Gs / G

結果比way1好很多, 而且比N step-sized self-adaptive好

我的解讀:

每一generation的mutation成功與否, 應該是各自判斷, 而非累計,
way1有個盲點, 假設sample 5 generation,
結果1st generation幾乎都成功, 但2~5 generation幾乎都失敗,
但加起來的機率仍 > 0.2怎麼辦? 這個反應已和1st generation的情況差很遠了

所以我認為way3最合理, 而且1/5 rule應該比N step-sized好 (一般來說)

個人認為fitness愈能合理且即時反應在meta-parameters上,
self-adaptive才會有效果, 但要怎麼個合理法, 怎樣才夠即時, 是另一大問題

EC is for optimization or design?

相較於以前不認同不知所云的解,現在我不會排斥用EC解。漸漸覺得傳統嚴僅的AI無法做出超越人腦的產物,雖然人腦運作方式還沒完全破解,但我想類神經網路或演化計算的做法,較接近人腦運作的原理吧。


( 寫於 2005/12/09 )

昨天ypchen說, 如果將design和optimization做比較,
他覺得EC是做design的還較有道理

所謂的物競天擇, 適者生存, 真的有選出最佳種嗎?
還是只是設定了一個門檻, 低於此限的物種就無法延續下去,
所以EC無法拿來做optimization, 只能去掉比較不好的

如果針對這兩者來比較的話,
EC較像用來選design的, 不是做optimization,
我們可以從EC的結果看出一些隱藏的想法

我認同這個觀點, 拿蟑螂來看就可以明白,
蟑螂稱不上很突出的物種, 它之所以能一直存活,
是因為它仍能適應環境的限制

原本我以為EC就是做optimization的,
聽了ypchen這番話後想想, 覺得很有道理,
這個想法更明確地釐清一些現象

我覺得我對EC的態度, 比較像是從中激發一些靈感, 而非用它來解決問題,
以我的個性來說, 即使用EC解決我的問題,
我也不想用一個不知所芸的東西當解決方案,
所以我會把EC當做達到最後目標的過程裡的一個嘗試吧

用Generic Algorithm實作N-Queen後的初步心得

這系列Evolutional Computation的文章是去年修課時寫的,今天收到別人寄信說看到我去年寫的筆記,對他有些幫助,滿高興的。事實上我已忘了把筆記轉到web上這回事,與其讓這些資料繼續躺在web角落,不如放到普及度較高的Blog吧。


( 寫於2005/10/08 )

Evolutionary Computation,
這是門詭異的學門, 耳熟能詳的Generic Algorithm是EC的一種

據ypchen所言, 這個領域的人不知道為什麼, 不愛寫書, 不愛寫paper,
看來神祕的力量都是不留記錄

EC發展20多年, 仍然沒有基本定理, 沒有公式, 沒有證明,
沒有人知道它為什麼對, 只能說些似是而非, 看起來好像有道理的話,
雖然有些中心思想[*1], 但不怎麼數學, 比較像物理化學,
發現一個現象, 再想辦法掰公式, 想辦法解釋它,
如果風行已久, 又沒人推翻它, 就大概是對的吧

簡單的描述一下用EC解N-Queen的一種作法 (以8-Queen為例)
1. 隨機產生100個盤面, 放到Set S裡
ex: 1 2 3 4 5 6 7 8, 4 1 2 5 3 8 7 6, …
這裡的數字表示各個row的queen要放在第幾個column上

2. 挑一個看起來最正確的, 隨機選兩個位置做swap
ex: 4 1 2 5 3 8 7 6 ==(swap 1,8)==> 4 8 2 5 3 1 7 6,
將新盤面加到 S 裡

3. 從 S 裡刪掉看起來最不正確的

4. 重覆step 2, 3到你高興為止
ex: 找到一組解了, 或是執行個100次

結果呢?
要找大量不同的解很困難, 但只要找到一個解到是出乎意料的快

ex: N = 100時, 4 secs, 在第171代找出一組解 (即試了100+171 = 271種可能)
N = 200時, 28 secs, 在第522代找出一組解 (試了621種可能) [*2]

很顯然的, 一般解法 (Backtracking的經典例題),
不可能在可接受的時間內(比方一天)找到一組解

從以上的作法裡, 看得出來”Why it works?”嗎?
只能說冥冥之中自有天意啊

PS

*1
EC的學者認為, 在一堆隨機的候選答案裡, 存在和最終解的關聯性,
只是我們不知道怎麼找出搜尋的規則,
EC的作法, 就是想辦法讓這莫名的規則發生,
使候選答案一步步成長為最終解

拿DP來比喻可能會有所領會,
也就是問題的最佳解取決於子問題的最佳解,
DP有明確的數學規則, EC則否

*2
N = 200時的解, 看看就好

125 142 24 196 45 105 179 140 107 20 49 92 148 165 48 197 78 8 155 80
132 7 153 93 31 72 161 190 103 53 116 40 188 75 111 119 187 69 18 130
77 55 36 106 19 83 65 141 100 89 101 129 34 162 192 28 46 10 169 173
114 32 4 143 95 61 189 193 200 133 96 166 60 22 131 172 152 112 57
146 113 102 90 87 71 15 109 183 170 52 118 174 21 186 137 167 11 67
25 157 33 35 120 2 117 98 44 50 26 104 184 68 177 73 164 9 47 147 64
97 168 1 62 121 38 178 182 13 63 154 145 160 86 199 5 138 29 74 158 3
37 126 191 91 56 181 156 94 115 110 195 39 6 23 27 16 58 81 134 128
76 150 124 180 84 42 171 151 127 41 136 163 144 99 175 17 85 122 194
185 135 70 14 66 59 54 12 82 139 30 43 149 79 176 51 159 88 108 123
198

PmWiki:顯示最近更新列表

最近讀了《資訊架構學》,覺得即使是Wiki,也可以構思如何將頁面以更豐富的方式呈現,比方加上最近更新的頁面。

原本 Site.AllRecentChanges 就有顯示所有更新過的頁面,但不方便自訂格式,像是去掉一些不想統計的頁面(例如*.RecentChange),所以自己來弄一個。做法相當簡單,只要用shell script找出wiki.d/下的更新時間即可,再將shell執行結果讀進自訂變數,由wiki page內文裡讀出變數的結果即可。由於做法太簡單了,我就沒找Cookbook裡有沒有類似工具,自己直接黑手做掉了。

修改local/config.php

最上面加入shell script取得更新列表:

function GetRecentUpdatedList() { $result = `ls -tl wiki.d | perl -ne 'print if ! /\.RecentChanges|\.AllRecentChanges|PmWiki\.|Site\.ActionLog|^total /' \ | perl -ane 'print " \$F[-4]-\$F[-3] \$F[-2] [[\$F[-1]]]\n";' | head -30`; return $result; } ... $result = GetRecentUpdatedList(); $FmtPV['$RecentUpdatedList'] = "'" . $result . "'"; #capture contents of $result

在wiki page裡讀出script結果

比方在Main.HomePage裡加上:

!! Recent Updated List {$RecentUpdatedList}

原理說明

這個做法的關鍵是使用自訂變數,參照PmWiki官網說明:OtherVariables,有使用自訂變數的範例。

2007年4月20日 星期五

圖解經濟學

書藉基本資料: 圖解經濟學

圖文並茂的入門書,編排方式都是左頁文字右頁圖,大部份內容看右頁圖就好,讀起來很快。從基本的供給和需求講起,到市場運作機制,貨幣制定和運作機制,最後是說明國際貿易和貨幣流動(升貶值)的關係,將基本名詞解釋得很清楚。除了貨幣升貶和景氣之間的變化沒完全看懂外,整本書看下來,偶而細想一下即可吸收,真的是不錯的入門書。

如同《圖解OOO》系列的副標語所言:「一冊通曉,不可不知的基礎人文知識」,理工人了解一些社會人文的內容,有個基本認知,應該很有幫助。況且在一個領域待久了,腦袋只會愈來愈硬,試著看看不同領域怎麼思考,滿有趣的。

錢也是物品的一種

《圖解經濟學》真是易讀易懂的好書,弄懂不少觀念。經濟流通的根本是供給和需求,物品的價值由供需雙方共同認定,基本觀念大家都懂:

  • 供給 > 需求:物價下跌。
  • 供給 < 需求:物價上漲。
  • 供需平衡取決於供給和需求雙方的變動。

以此發展的基本原則有「物以稀為貴」、「以價制量」、「以量制價(規模經濟)」,皆不離供需的運作。

當物價有廣為人知的標準時,就是俗稱的行情,比方一般600c.c.的飲用水賣20元左右。當物價的供需標準不夠流通時,就回歸原始的做法,喊到買賣雙方都認可的價格,比方買古董或接case。

貨幣也是物品的一種,運作的法則也是如此。

銀行和物品專賣店的本質一樣,只是銀行買賣的物品是貨幣。所以銀行內有很多貨幣時,借貸率低;貨幣少時,借貸率高。於是中央銀行(大盤商)要把關貨幣流通率,貨幣量對社會的影響如下:

  • 當貨幣量大於社會需求時,消費能力過度,供不應求,物價上漲,通貨膨漲,經濟不穩。
  • 當貨幣量小於社會需求時,消費能力不足,供過於求,物價下跌,經濟不景氣。

中央銀行要調整各家銀行的貨幣備存量(比方必須保留20%的貨幣),限制銀行能借出的貨幣額度。

另外政府缺錢時可以徵稅、發行公債、讓中央銀行發行貨幣(就是印鈔票啦),前兩者的運作模式和後果容易理解,但以前我搞不懂印鈔票的運作模式。如果可以印鈔票,為什麼不印?如果可以印鈔票,那錢不就無中生有,不合常理。

其實印鈔票並不是無中生有,錢也是物品,印鈔票增加鈔票量,造成鈔票貶值,也就是通貨膨脹,假設中央銀行印了現有鈔票一樣的量,也就是讓總量變兩倍,那每張鈔票的價值可能會跌為一半,一碗25元的陽春麵可能變成50元。換個角度來看,印鈔票就是讓全民買單,政府從全民口袋裡的鈔票抽走部份價值,再從自己口袋拿出來用。這樣來看,政府三種補錢的做法,只有舉行公債才不會傷到全民,徵稅是有差別比例傷害,印鈔是無差別全砍,但砍得方式比較無形,暫時看不出影響。

終於解開小時候的疑惑了。

備註:相關名詞

  • 信用創造:透過借錢而增加的金錢總額。比方甲銀行有1億貨幣,借5000萬給廠商,廠商將5000萬存到乙銀行,結果原本的1億元在市場上變成1.5億元。

2007年4月19日 星期四

讀資工不是要會寫程式,而是要寫比別人好的程式

看到學弟們在討論這個話題,也來寫些感想。

最重要的是想法,想法包含效率分析,開發前要能算出這個想法(演算法)的時間複雜度和空間複雜度,而不是用力衝下去發現很慢再回頭改。

同樣的觀念可以用不同的語言呈現,但反過來說,各種不同的語言,背後有作者的設計理念,使用不同的語言,可以讓自己學習新的想法。像是用Lisp寫些小程式,保證遞迴觀念大增,因為不用不行,沒有for和while。

沒有最好的語言,只有最適合的語言。

多學多種不同語言,能增廣不同的切入點,像是Ruby將”外而內”的map和”內而外”的iterator輕易地呈現,用Ruby寫code自然會用map和iterator的方式思考; 因為有interface的設計,用Java自然會寫得較OOP。反過來說,如果寫Java不懂OOP,那只是學另一個C/C++ like的語言,用 C 的語法在寫,不算學新的語言,語法,語意,語用,最難的是學會語用,語法細節在要用時再查即可。

上面是依個人經驗舉例,不是說Lisp,Ruby,Java就好,每個人喜歡的語言不同,在語言大混血的年代,相似的概念各個語言多少有沾一些。

在語言之外的話題是library (package,API,framework都算類似的詞),個人覺得大一大二打好基本功,能自己刻Data Structure後,就不該自己造輪子重寫一堆基本元件,大三應該開始找library,練習找資料的能力,比方要存取XML的內容,用語言A的話,要上那找library?

沾過各種語言學會不同的思維,有把握針對問題需求用適合的語言開發,找出那個語言用的library,相信不管到那都能很有自信地coding的。

2007年4月18日 星期三

和Ambuscade聊商

最近因比賽所迫,讀了一點和商相關的東西,和會長聊天聽到不少相關內容,自己又因興趣在讀《圖解經濟學》,算是踏出小小小小的第一步。

剛才Ambuscade打來聊天,先是聊到我最近做的研究,很high地和完全不同背景的人說明我在幹嘛後,Ambuscade的評語是”好吧,還滿有趣的”,加個”好吧”是聽不太懂,但好像又好滿有趣的。後來聊到我參加的比賽,話題轉到商上。

Ambuscade說最近有個仲介商用1/10價的方式賣商品,但這1/10價的手法很漂亮,等我拿到詳細介紹時再補上這塊。聽到1/10價的想法,我提到半價網,接著Ambuscade提到規模經濟也不能殺到半價吧,這讓我挺high的,因為我馬上聽懂「規模經濟」一詞,用到讀的東西,可以加深學習印象。

由於比賽的經驗,問Ambuscade品牌為何,如何在報告裡說明”打出自己的品牌”。聽了一些說明後,用我的方式來描述的話,就是”打出自己的品牌”的意思就是”如何宣傳自己的產品,確立自己的定位,透過行銷讓別人將品牌和產品特色建立聯想”。經濟學的詞彙讀了以後,還是要能用自己的方式想通,重描述一次,才稱得上讀懂啊。

很有趣的談話,就是要這樣充實地生活,偶而聊聊近況,獲得新的思維。

Update - KIKIGO:用十分之一的價格競標

看到KIKIGO內容後,想說Mr.6應該會有介紹,果然google “kikigo mr.6″有找到,只是連結指向Mr.6介紹半價網的文章 XD 。那篇的留言裡有些人已提到KIKIGO,更妙的是Mr.6用的Google Adsense上有KIKIGO的廣告。