2007年6月15日 星期五

第二隻kukury


第二隻kukury的相簿

昨天晚上吃完晚餐的時候,就聽到咪咪叫了,聽起來是很小的貓,我在那附近一直找,大概知道是樓梯下面,但是看不到,也找不到進去的方,後來小愛來了,一直在樓梯上走來走去,往樓梯縫裡面看,很想抓的樣子,然後小愛跑到樓梯側面,在那邊猛鑽,我想說他大概找到入口,就跟去看,的確是看到很小的縫,可以讓貓進去,但是狗絕對進不去的大小,當然人也進不去。

後來小花也來了 =____=

兩隻狗就在樓梯側面開始亂鑽,然後發出小聲的攻擊叫聲,因為他們兇兇,我就賞他們兩個一人一拳,後來好像有什麼東西衝出來,因為黑黑的我不是很確定,小花跟小愛馬上衝去追,但是衝了一段就放棄了。後來我也沒聽到貓聲,就回研究室去了。

今天中午去吃飯,又聽到貓叫了,還看到一群人圍在那邊,看了一下,只有聲音,但是還是沒看到貓咪,從側面也看不到。進去吃飯,吃完出來,還有人圍在那邊,小愛也在 =____=

那隻貓從昨天到今天都在那裡,小愛也一直都在,隨時都想抓的樣子,我在想就算有母貓大概也都沒辦法進出餵食,這樣表示他餓了很久了。既然這樣,那我想應該抓出來就好,不然的話給母貓照顧也許比較好。

大家找了一下終於找到貓咪了,的確就在樓梯下面,但是很不容易弄出來。要直接抓的方法,只能把樓梯拆掉,不然不可能。學姐跟一位同學去買了鮪魚罐頭,想放在洞口,想試試看能不能把小貓誘拐出來,但是小愛一直在旁邊想要抓貓,實在很想給她巴下去,雖然說她會翻肚子很可愛。叫她去旁邊也不聽,推她也不動,趕也趕不走,因為她太歡了,現場一位懷生社的同學:「恩,抓去鎖起來。」可憐的小愛就直接被整個抱起來,抓去鎖起來了 XDDD

把鮪魚罐頭放好在洞口,我從樓梯的縫縫可以看到他,洞口還都是灌木叢,手實在很難進出,鮪魚罐頭真的很香,連我都聞到了,好想吃 (= =)+本來擔心他會不會沒聞到,但是連我都聞到,那應該沒問題,結果大概一分鐘以後他就開始往洞口移動,但是還是非常膽小,一直觀察,後來一點一點走出去,靠近洞口,出來了,在舔罐頭,好可愛 @_@

手很難進去,看我從上面灌木叢當中伸進去,一點一點慢慢的,靠近他~但是罐頭不夠外面,他只有頭出來,身體還在裡面,手沒辦法抓到他,我慢慢的把罐頭一點一點往外挪,他都沒什麼反應,還是繼續舔,看來很餓了,然後另外一位同學的手來幫,結果他嚇到了,縮回去了。

我趕快把罐頭放在足夠外面的地方,重新等待,他在樓梯裡面亂晃了一下,然後又靠近洞口了,(鮪魚罐頭好香 = =)出來了,出來了~靠過去罐頭旁邊了,開始吃了...我手慢慢過去,慢慢過去... 他很專心的吃,沒注意到我的手... 在他的正上方...

抓!

抓到了! 我抓到啦~~~!!!我出運啦!!!我出運啦!!!

謝謝在現場的各位的幫助,我們終於抓到他了 @@

懷生社的同學打了電話給社長,但是懷生社現在沒辦法照顧,喔耶,那只好我先照顧了,我家以前也養過這樣小的小貓喔。帶回研究室,很快的跟他整理了一下,弄了一點牛奶跟鮪魚罐頭給他吃,他不喝牛奶,但是吃鮪魚,看來應該是那個香味他比較喜歡。

上完下午的課以後,打算吃飯順便帶他去看醫生,給醫生檢查一下,把他放在紙袋裡面,去小吃部的時候,看到小愛還在樓梯上聞來聞去,喔,小愛已經被放出來了。「啦啦啦~在我這邊~怎麼樣~~~」不過小愛聽不懂,所以只有我自己自嗨,他還是在那邊找小貓。

吃完飯以後,我出來,看到小愛還在那邊聞,我蹲下來,叫小愛過來,然後很小心(怕給他一口咬走)的把袋口打開給他看,「嘿嘿,是我的,不是你的,啦啦啦~」然後我就站起來要走了,小愛很哀怨的眼神在看我,我走了很遠他還在看我。

去了小花動物醫院,
醫生:「好小隻 @@」
「大概多大?」
「三個禮拜,我幫他檢查一下...」
........
「沒有看到寄生蟲,牙齒也長了,可以吃飼料,也沒受傷,健康。」
「現在是不是還太小不能打預防針?」
「恩,對,等他六週齡的時候要記得帶去打第一劑預防針。」
「好,謝謝 ^____________^」
問了護士哪裡有寵物用品,護士說埔頂路的熊寶貝可以去。
(ps. 護士姊姊很可愛,不過沒有真相,要自己去看)

然後去了熊寶貝,老闆娘很熱心,那邊還有一隻超漂亮的大狗,又漂亮又黏人。
「我要乾洗粉,飼料,還有貓沙,貓沙盆。」
「乾洗粉?為什麼要乾洗粉?」
「醫生說他還很小隻,不能洗澡」然後打開袋口給老闆娘看
「好小隻 @@」
「三個禮拜大,很健康 ^________^」
「我們乾洗粉沒有賣一點點了,不然我倒一些給你好了。」
「謝謝你,你人真好 ^_____^」
然後買了飼料,貓沙,很大的外出籠(順便給他當小時後的家)
但是貓沙盆賣完了,老闆娘叫我用小盒子就可以了,因為他很小。

喔耶~我有貓咪啦~名字叫做 kukury,跟咕嚕咕嚕魔法陣的女主角科科麗一樣喔~他吃了泡水軟軟的飼料以後,玩膩了,正在我的大腿上睡覺。

2007年6月14日 星期四

蘋果

日前接了一個php網頁的案子,其實我不會寫網頁,是學民學長的老師的太太,麗美姐,給我的案子。一邊學一邊作,最後總算是完成了。

過程當中,麗美姐的態度非常好,人非常有禮貌,對於我的錯誤也都很包容,我覺得她真的很好,最後也給我非常高的薪水,讓我很不好意思。

在最後一次來到研究室的時候,麗美姐還帶了一袋水果跟一袋零食餅乾過來,水果還是已經洗好的呢,其中還有櫻桃跟奇異果這種貴貴的水果說,對於窮研究生來說,這種水果真是好難得。

詩芳那個時候正在感冒,我把櫻桃洗了,想說都給她吃,這樣對感冒比較好。之後另外把蘋果都切一切。

其實我是不喜歡吃蘋果的,我覺得蘋果處理麻煩,水不多,也沒有很甜,吃起來粉粉的,放久了以後又會變得很難吃,所以從小就不太喜歡蘋果。但是因為麗美姐就送了兩顆蘋果,所以還是要趕快吃掉,這樣才好。

我把兩顆蘋果帶去洗一洗,慢慢的用削皮刀削皮,一顆切成四塊,小心的把心去掉,避免切掉太多肉浪費,我發現這個蘋果的心很小,所以只切掉一點點就可以吃了,以前小時候的蘋果心都很大,看到這個蘋果我很開心。心去掉以後,再切成小片小片的方便入口。切好以後把蘋果片放到保鮮盒裡面,把蘋果皮撿一撿,台子洗一洗,然後把水果端進研究室。

我自己吃了一片,我在想:「恩,很好吃。」

然後拿到中鎮跟學姐旁邊放著,想說給他們吃。

那個時候我心裡想著:「他們吃了會不會很開心呢?會不會覺得好吃阿?是我很辛苦削的喔,他要是吃了開心,那我一定會很快樂。」

然後就突然想到以前媽媽切蘋果給我們吃的時候,是不是也是一樣的想法?可是我以前看到蘋果都不會開心,只會想到:「阿,是蘋果,不好吃,不喜歡。」然後就不太吃蘋果,現在想一想,那一定很傷人吧?

除了蘋果以外,其他的水果,或是煮飯這件事情,都一定會期待吃的人很說很好吃,有的時候雖然知道不是真心的阿,但是就是會很開心,因為可以感覺到對方的快樂,或是感覺到對方對自己的付出是有感謝的。

我會看著他們,他們把蘋果拿起來,放進嘴裡,然後咬咬咬,吞下,看著他們的表情,他們覺得好不好吃?他們會說什麼?好吃嗎?是我削的喔~

突然想到,原來媽媽每天晚上端著蔡盤從廚房走出來的時候,都是這樣的心情,「今天晚上的菜不知道小孩子會不會喜歡吃?」期待的看著小孩子吃下去以後的表情,小孩子會做什麼回應?(結果大部分的回應是:後~我不要吃這個青菜~很難吃耶~ = =||)當媽媽很可憐。

有付出過,才體會到以前別人對自己有多好,也才知道以後別人對自己付出的時候,要怎麼回應。

以前我被愛過,知道什麼是被愛,現在因為去付出,更知道什麼是被愛,也更知道怎麼去愛人了。有付出,才會真正體會到什麼是被愛吧?不斷的去愛跟被愛,這樣心裡就充滿愛了。

我這樣有進步嗎?比以前麻木不仁沒感情的,有進步嗎?

2007年5月28日 星期一

看不見的朋友

小時後有看不見的朋友,是個忍者,是從我的左手出來的。

以前上廁所坐在馬桶上很無聊,會用手在牆壁的紋路上面跳呀跳的,用食指跟中指作成人走路的動作,然後到處跳,功夫很好的樣子,這樣我就很開心。有的時候也會有壞人出現,就是我的右手,他也很厲害,左手跟右手會打架,但是都是左手贏,因為我覺得左手比較可憐,因為幼稚園的時候左手肩膀骨折,很久不能動,力氣也比較小,所以打架都要讓他贏。不然就已經很虛弱,打架還要打輸,就實在太可憐了。

後來就常常用想像的,想像有一個小人,會到處跳,就是從我的左手延伸出來的,他是我的好朋友,不過別人都看不到,我無聊得時候他就會出來陪我玩,陪我說話,還會告訴我他去哪裡了,我要是很久沒陪他的話,他還會生氣,我要跟他道歉,然後他就會跟我分享他去了哪裡哪裡,看了什麼,遇到什麼,每次我很久沒想到他,之後想到他我就會覺得很愧疚。

國小的時候多了新朋友,是一台軌道車,媽咪買給我的軌道車,不是四驅車喔,他只有兩個後輪會動,而且底盤比較低。我坐車的時候,他會在外面旁邊的馬路上一起跟的奔馳,跟著我的車,很快速。忍者也會在外面跳阿跳的,跟著我走。

國一的時候,我畫圖,隨手畫了一個女孩,雙手交疊在身前的模樣,長長的裙子,短髮,其實我喜歡的是長頭髮的女生,但是我不知道為什麼很喜歡她,每次都會看著那張畫發呆,看到痴呆的程度,現在想一想,我很像是希臘神話裡面的畢馬龍(Pygmalion,一個雕刻家,迷戀上自己所雕塑的雕像,後來愛神維納斯被他的深情感動,將雕像化作真人),完全迷上自己的畫作,她時時會走在我的左右,陪了我很長一段時間。我後來畫了很多東西給她,像是衣櫃阿,衣服阿,日常用具阿,然後把這些東西統統夾在一本筆記本裡面收藏好。因為我完全認為她跟我生活在一起,雖然我不會跟她說話讓別人以為我在自言自語,但是我走路會讓她,也會看她,會注意她,有時候我也會很擔心別人知道我有一個看不見的朋友,然後被別人當作神經病。

其實還有一台飛機,是我自己設計的模樣,我還有用紙做出模型,我很喜歡他,他的形狀很單純,只有五個面。然後後來忍者也有的別的忍者朋友,右手的忍者也出來了,也不當壞人了,跟左手當了好朋友。我的看不見的朋友,從最初的一個,到了後來變成了一票。

我從幼稚園開始,國小國中,這些朋友都一直在我的身邊的,我上課無聊的時候,他們會小小隻的在我的桌子上,陪我聊天講話,或是演戲給我看,或是跳跳鬧鬧的,讓我很開心。到了高中,很多時間都投入到漫畫跟寫程式上面去了,很少想起他們,慢慢的,他們就從我的生活中淡出了,大學的時候幾乎沒想到過他們,但是現在研究所,不知道為什麼,前陣子,我突然想起來這些陪我很多年的朋友,看不見的朋友。

2007年5月15日 星期二

AI-RPG

我們研究室正在做的計畫 AI-RPG

把人工智慧應用到 RPG 設計,建立一個虛擬社群,讓 NPC 展現更真實而且複雜的行為。

比方說,在武器店賣東西老闆,不再只是武器店的老闆了,他也有一段自己的過去,內心也有一股想要到處冒險的衝動,玩家跟他的互動不再只是買賣武器而已,當你面對他的時候,你可以跟他說:
唷,老闆,我看的出你內心的一把火,我們一起去冒險吧!

也許他就會把攤子收了,跟你去冒險。

或是他會說:
年輕人,我以前也跟你一樣想要到處闖蕩,但這些年過去,我知道平安才是福阿。打打殺殺哪裡好,我兒子也跟你一樣好殺戮,不過他現在在西邊的城堡當魔王的副手,你要是有機會遇到他,記得幫我問候他,叫他逢年過節要回家看媽媽。但是我知道你的個性跟你的身份,還是要殺他的,這種要求對你太過分了,但是請答應我一個要求,如果你非要殺他,請用這把劍,這是我精心製作的,我兒子看到他就會知道是我。既然他要死,那就讓我的武器來殺他吧!對不起,我終究還是自私的...

語畢,老人拿了一把精心製作的武器給你。

你前往西方的魔王城堡,看到一群壯碩可怕的守衛正在聊天,他們正在抱怨禁衛軍裡面那些只會打嘴砲的人都一直升官,像他們那樣老實做事的人卻只能守城門。你走上前去,他們注意到你,開始戒備,你拿出一把寶石:
不要幹了,收下這些,去城裡面快活下半生吧,我不想跟你們打,你們應該也不想跟我打,我們都輕鬆一點,應該沒意見吧。想搶錢的話也可以盡管來,不過既然有機會穩穩的生活,又何必賭上生命?

就這麼前進著,當然也有不能被買通的小兵,那就戰鬥吧。

最後遇到了魔王的副手,武器老闆的兒子,是個年輕壯碩,風度翩翩的男子,你拿出老頭製作的武器,說:
我們是你爸派來的,他想要你回家去,如果你乖乖聽話,那我們也不用你死我活。

男子說:
你們已經不是第一個來的人了,我不會回去的,我不喜歡當人類,一點也不好,老頭子年輕時候,為了自己的夢想,在外奔波當勇者,完全忽略我跟我媽。我恨你們這些勇者,所以才投靠魔王,你們來了,那就死吧....

戰鬥開始了,頃刻之間,你用老頭的劍刺入的男子的身體。
男子沒事,劍斷了。你還沒搞清楚狀況的時候,感覺到肚子一陣溫涼...
你們也被老頭騙了吧?他給你們的劍是假貨,根本耐不起打。他終究是捨不得殺我的,我畢竟是他的兒子,他也一直因為年輕時候的冷漠而愧疚...

對不起,我終究還是自私的...

死前,你回想起了老頭講這句話的臉。

2007年5月7日 星期一

Minsky & Learning

這邊是人工智慧大頭 Minsky 在接受《會思考的機器:AI人工智慧的發展與趨勢(Machines Who Think:A personal Inquiry Into The History and Prospects of Artificial Intelligence)》一書作者 Pamela McCorduck 訪問的時候所說的話:
我們花了好久的時間才明白,而其他人一直還不太明白,就某方面來說,只要有對的描述跟機制,學習其實不太重要,重要的是找出事情該怎麼作,只要你瞭解了,你就容易明白一件事是怎麼被學會的,在觀念上這是很深的改變。要學習上的問題,從我們看來,是去決定你要放什麼東西在你的記憶裡,這要依賴好的描述,然後在描述中找到差異,才能說,這是個新東西。所以差別不是在事情裡,是在描述裡。經過很長的時間,人們才開始能體會。

這是一本有二十五年歷史的老書,內容講的是人工智慧領域的發展跟歷史,在去年重新再出版,補上了人工智慧在這二十五年的新發展,人工智慧的科普這幾年幾乎不見新書,難得看到一本,當然是要拿下來看的,雖然新東西不多,但是聊勝於無。

上面這段是第一章的內容,可以看到人工智慧大頭 Minsky(算是人工智慧領域的開創元老之一)對於機器學習(Machine Learning)的看法,大致上說起來,就是學習沒什麼用。文中所講的「學習」指的是在人工智慧裡面的「機器學習」,而「找出事情該怎麼作」,指的是人工智慧裡面的「規劃/計畫」(planning)。

所謂機器學習,是指不用靠人類去設計複雜的演算法,而讓電腦自己從環境當中根據過去的經驗來學會應該怎麼做事情,學會怎麼把事情作對做好。電腦一開始會表現得很差,但是隨著時間過去,機器的經驗越來越豐富,越來越聰明,表現也就會越來越好。聽起來很神奇,不過他到底是怎麼做到的?

神經網路(Neural Network[1]) 用的方法是模擬生物神經傳導的方式,利用大量的神經元,互相串街連結,形成複雜的神經網路,透過輸出跟預期輸出的正確性,慢慢調適網路連結上的鍵值來達到學習的效果。一個神經網路會接受外界的刺激當作輸入,然後會產生一個動作當作輸出,如果輸出的動作是正確的,那麼本來神經連結上面的鍵值會被加強,表示這是一個正確的動作,應該被獎勵。如果神經網路產生的動作是錯誤的,那麼連結上面的鍵值會被削弱,以示為懲罰,久而久之,神經網路就會偏向產生正確的輸出,而避開錯誤的決定。

演化計算(Evolutionary Computation[2]) 模擬自然界的演化機制,設計者會設計一堆生物,而這種生物的基因,就是問題的答案,而這種生物所生存的環境,就是所要解決的問題。如果一個生物的表現不好,表示他沒辦法良好的解決這個問題,會有比較差的適存值(fitness),如果一個生物表現的很好,表示他對於這個問題的解答不錯。基因演算法的機制會挑出活的比較好的個體,來進行交配,以產生下一代,而下一代的基因,則是來自於父母的混合交配。長久下來,適者生存,表現的越好越有機會有後代,而表現的差的,就會慢慢被淘汰掉,最後整個族群就都是表現良好的個體了。

上面兩個是目前台灣最流行最熱門的機器學習還有人工智慧技術,不過國外已經沒什麼人在玩了,人工智慧還有其他如 Independent Component Analysis(ICA),Principle Component Analysis(PCA),Hidden Markov Model(HMM),Boosting,Support Vector Machine(SVM)等等技術,都是常見的機器學習模型。機器學習最常見的領域是那種需要高度容錯的系統,像是圖形辨識,語音辨識等等。

所謂「規劃」(Planning)是跟學習相反的一條路,透過程式設計師的腦力煎熬,在一開始就打造了強悍的思維模型,程式擁有強大的力量在已知的解空間裡面去尋找答案,並且透過一些有策略的搜索方法,可以在龐大的解空間當中刪除不可能的答案,或是不進行重複的搜索活動。使用 planning 的 AI 是在程式完成的那一瞬間,就展現出高度智慧,像是各種棋類程式都是屬於這一類。

人工智慧領域很少有這兩邊都通的人才,大部分的人只能專精其中一樣,Minsky 選的是 planning,他認為如果用 planning 就能解決的事情,那我幹麼用 Learning? 理論上他說的沒錯,只要用 planning 就能解決的事情,那的確不用 learning,不過實際上,有很多問題就是不能用或是不好用 planning,像是影像辨識,機械控制,這類東西,你很難仔細的描述事情應該怎麼被做好。或是當環境常常變動,你今天設計好的機制,明天就不能用了,而要設計一個什麼都能用的機制,又是難上加難,像這種時候,就是 learning 存在的理由。

本來我以為 AI 大頭都是全方位的,看到大師也會選邊站,我感覺到很有趣。

[1] AI Junkie 一個不錯的 AI 網頁,這邊是他關於神經網路的介紹
[2] 一個有 Java applet 介紹 GA 的網頁,很生動易懂

2007年5月5日 星期六

末日,因果,緣份

做了怪夢,是世界末日到了。

不知道為什麼天上一直閃光,天色變成很奇怪的顏色,大概就是有點偏紫色的紅色(那不就紫紅色嗎?),然後會一直冒出奇怪的閃光,人看到那種閃光好像會慢慢發瘋,不知道原因,忘記了其實,但是很多人都變得很奇怪了,好像會到處打人咬人吧,變得很瘋狂,要是被他們抓到會死的。

事情發生得很突然,大家都沒時間回家,也沒機會聯絡家人,很多人都已經發瘋了,到處都是一片亂,研究室的同學還有朋友們,我們很快下了抉擇,知道沒辦法回家了,要當下處理這種狀況,大家把能帶的東西都帶一帶,然後往山上躲去了,夢裡面學校附近有很高的深山,幾乎都沒有人到過,然後地形也很險惡的那種深山。

大家死命的往山上跑,路上很艱難,但是大家都很努力,可能是因為平常都有跟中鎮一起慢跑吧,大家腳力都很好的一直跑,後面其實有零零星星的發瘋的人在追我們,但是都沒跟上,或是追丟了,我們很平安的到了山上,在樹上架了瞭望台,我們可以看到附近有沒有人來。

在一個視野比較好的地方,我們有望遠鏡,還可以看到平地上的人,看到市區裡面有的人正在被追,一直逃命,沒看到他最後怎麼了,把視野轉到附近的山區,可以看到一些零星的人正在亂走,有的應該是發瘋的沒錯,但是因為離我們這邊還很遠,所以還不用擔心。

挖了井,有水,是我挖的,但是又不是我挖的,是刻庭挖的。夢裡面我是第一人稱,但是不是蕭刻庭,我是蕭刻庭的朋友,我也不知道我的身份是誰,但是刻庭正在跟我講這個井,說我們要好好使用他,因為不知道可以用多久。然後他給我看了另外一個黑黑的地洞,說這個是緊急逃生的路,入口的門是特殊設計過的,要打開要動點頭腦,隨便亂敲是打不開的。望進去黑鴉鴉的,我問刻庭這個通去哪,他說這個不能說,感覺上像是非常不得已的通道,他也不希望走這邊,所以他也不希望我們知道,看他皺眉頭,應該是真的沒有別的選擇吧。

白天很短,通常很快就天黑了,天空會是很沉很濃的顏色,一整片都是霞光紅,遠處已經慢慢可以看到轉黑了,算是很美的天空吧,但是卻有一種絕望的感覺,不知道什麼時候才會恢復正常的天空?天空到底怎麼了?資訊都被隔絕了,什麼都不知道。

很絕望的站在海邊,有一小塊地突出在海邊,長滿了綠色的草,突岸上面有一顆綠色的樹,後面就是被染成紫紅色的海,還有紫紅色的天空,海面有微微的波紋。米絲緹從天上下來,她一直哭,一直哭,她已經是神了,我還是凡人,在動亂開始的時,忘記了,但是她應該是做了什麼,犧牲了自己,但總之並沒有跟我們一起逃到山裡去,她變成神了,但是好像因為規定而不能幫助人,她叫我要加油,要讓我心情好,就讓天空變出了很多煙火,看到煙火我就一直哭,因為覺得這是文明世界的東西,在這種近乎末日的時候能看到煙火感覺真的很讓人想哭。我下次看到煙火會是多久以後?我還能看到煙火嗎?不知道,但是眼前佈滿半個天空的煙火,真的非常漂亮,儘管是可怕的顏色的背景。煙火越來越暗了,米絲緹說她必須要走了,她說她不能隨便下來的,她還是哭,叫我要加油,我不敢答應她,因為我不知道未來會是什麼樣子。

在山上種田,因為總得要吃飯,我們一堆人,不多,但是還是要吃東西,所以就種田。身上弄的都是泥巴,心裡卻很開心,覺得泥巴帶有生命的感覺,只要有泥土就可以種植,能種植就會有食物,這樣就不怕餓死,有泥土就有希望。我可以都只吃素就能活,我很好養。

我身上沾了很多草草葉葉的,不知道為什麼右手臂上有兩株豌豆,長在我的手臂上,生根的那種,我也沒覺得怎樣,就覺得有東西生長很好,至少不會餓死,長在那邊就不這麼重要。正在整理田地,米絲緹來了,她說:「你手上的是好朋友。」我看看手上的豌豆,突然想到蝴蝶,以前好像幫助過一隻蝴蝶,還有一株豌豆,我不記得為什麼幫助過他們了,但是我知道那隻蝴蝶跟那株豌豆是有緣份的,他們有因果,關聯在一起。我看到他們在我手上,我知道是他們,就是感覺到了,米絲緹沒說的話我會不知道,但是她一說是朋友,我看到手上的豌豆,就感覺到他們是誰了,我一直哭。

因為感覺到他們的感情,他們在我身上,表示他們覺得我很重要。他們許下願,這輩子在我身上過,用這一世來報前世的恩,感覺到有人把自己看的這麼重要,我就很感動,一直哭,停不下來,他們為了這輩子能看到我,回報到我手上來,我一直哭,一直哭。我不知道能幫他們做什麼,但是很高興能夠永遠不分開了。

2007年4月28日 星期六

用 GreaseMonkey 自動抓網頁

昨天詩芳說她有個需求,要自動去網頁抓資料。

她打算用 Java 寫,我看了一下網頁內容,Java 我不會,那我用 Pyhton 試試看,結果用 urllib2 弄了辦也弄不出來,生氣,換上 wget,結果 server 丟了一個 500 給我,告訴我這樣是行不通的,我沒辦法啦。就在這個時候建勳剛好用 MSN 找我吃晚餐,我記得前幾天以前在 PTT 的 Python 版上看到他在跟別人討論抓網頁的東西,我想他應該有經驗可以指教,就詢問他這個問題,結果得到了很不錯的答案。

前置動作:
  1. 請使用 firefox 瀏覽器
  2. 請學會簡單的 JavaScript
    不過我本來是不會,一邊用一邊學,一個晚上就好了。
  3. 請裝上 GreaseMonkey 插件
    GreaseMonkey 可以在載入指定網頁的時候,執行自訂的 JavaScript,使用者可以透過 DOM 變更網頁內容,操作瀏覽器執行特定動作,像是跳到指定的網址,然後跳回來等等的動作。這邊有 GreaseMonkey 的使用教學(Dive into GreaseMonkey)必看。
  4. 請裝上 Auto Save 插件
    Auto Save 會在 firefox 瀏覽到指定頁面的時候,自動將該往頁儲存起來。所以你只要把你想要儲存的頁面用一些像是 prefix 的規則寫好,那你配合 GreaseMonkey 自動切頁過去的時候,Auto Save 就會剛好自動把你的網頁給存起來。
  5. 請裝上 DOM Inspector 插件
    firefox 選單「工具」拉下來應該就可以看到,如果你沒看到,那表示你沒裝,firefox 從 2003 年 11 月之後,他就被內建到安裝程式裡面的,安裝 firefox 的時候,選擇自訂選項安裝,把 DOM Inspector 打勾,然後完成你的安裝就可以了。這個東西等等可以幫助你用來解析你的目標網頁,讓你可以知道要怎麼透過 JavaScript 操作你的網頁。
  6. 請裝上 Inspect Context 插件
    因為只有 DOM Inspector 並不是很容易定位你要的資料位置,配合 Inspect Context,你可以在網頁的任何一個地方按右鍵,選擇「Inspect」,這個時候 DOM Inspector 就會開啟,並且自動展開到你所點選的位置。
  7. 請到 Web Development Bookmarklets,把第一個 shell 拖曳到書籤工具列上。
    這個 shell 可厲害了,點他一下,他會跳出一個 JavaScript shell 視窗,你可以即時的在這邊進行操作,而不用每次都寫一個完整的 JavaScript 檔案掛到 GreaseMonkey 上面去測試,是開發期的良好工具,請善用。
大致流程:
  1. 針對要抓取的頁面,一邊使用 Inpect Context / DOM Inspector 這兩樣東西分析你的目標網頁,一邊使用 Java Script Shell 進行開發跟測試你的 JavaScript。
  2. JavaScript 寫好以後,把寫好 JavaScript 掛上 GreaseMonkey。
  3. 打開 Auto Save 設定好網址,然後 enable。
  4. 開始瀏覽,自動抓取,完工 :)
當然這個是很粗略的介紹,不過我想重要的都沒有漏掉。