2008年12月27日 星期六

some might say

今天又去爬了一次柴山

但竟然被猴子搶了我的餅乾, 可惡

呼. 這也不能怪他們, 終究是人類造成他們變成這樣的...

一整天都很開心, 希望可以持續下去

媽媽最近有點變瘦, 她一直害怕血糖太高而不敢吃東西

我是希望她能吃就多吃一點

魯莽

魯莽應該可以算是組成我的某種元素之一

常常講話,做事都沒有經過大腦思考

一條腸子通到底的,因此在某些地方常常得罪別人而不自知

就像我這禮拜就得罪了主任

是故常常因為這個元素,讓我在很多地方都吃了大虧

在軍中,算是可以修正我一些魯莽的地方

2008年12月21日 星期日

這兩天放假

這兩天放假我過得相當愜意

昨天跟坤陽還有世傑去吃火鍋

整天就彈一下吉他, 聽聽音樂

明天早上要到軍團繼續作業, 然後回到部隊去.

又聽了好多好歌, 真幸福

2008年12月20日 星期六

入伍四個月

今天是12/20, 入伍剛滿4個月

4個月,以學生生活而言大概就1學期, 2次期中考, 16周, 也許交了32個作業

但入伍這4個月以來倒是見識了不少東西, 對許多東西的看法也許稍微有點改變

在我內心的某些零件稍稍的換了個位子

是福不是禍,是禍躲不過

2008年12月12日 星期五

這禮拜

又過了一禮拜

這禮拜四被叫到軍團支援

總之又是弄不清楚狀況, 亂搞一通.

sometimes words have two meanings.

我是一個說話相當直的人, 不喜歡拐彎抹角的

但也許是這種個性, 讓我在許多地方都吃了許多虧

或是得罪別人. 對於該有的禮節之類的, 我也不太懂

唉, 我總是想, 為什麼大家要活得這麼虛偽呢?

也許是環境逼迫吧. 如果你不跟著這樣做, 你可能就被貼上某種標籤

"適應不良", "不合群" ... 於是大家就開始偽裝自己

最後連自己都不是自己了

2008年12月10日 星期三

居能夠在星期三打網誌

一早我就起床, 折好棉被蚊帳, 來到辦公室

泡一下牛奶, 在電腦前打這篇網誌...

在這個地方真的不像在當兵

壓力還是有,而且不少

但學長說得有道理, 我們不亂搞, 還不至於會被抓去關

只是有些地方已經開始有點fake讓我有點擔心^^;

媽媽就快出院了, 應該就下禮拜吧

希望她可以康復

2008年12月5日 星期五

這禮拜

禮拜一二在連上, 擔任待命班, 演演戲

禮拜三被叫到軍團的工兵組去, 在那邊充當了水電兵, 到頂樓吹風, 在工具室摸魚
聽一個快退伍的傢伙虎爛

禮拜四被派到知義去, 我想這是我軍旅生活中最後的一站吧?

在知義是一個不像部隊的部隊, 我們的工作就是負責監工.

總之又是一個新的挑戰來了...

話說軍旅, 就像在旅行阿, 我總共換過這些床位:

1.屏東龍泉
2.隘寮靶場
3.工兵學校三中隊調適
4.工兵學校二中隊受訓
5.工兵學校二中隊待撥
6.54群橋樑營裝備連待撥
7.54群橋樑營一連待撥
8.54群戰工一營三連連上
9.54群戰工一營三連衛兵排
10.軍團本部連
11.知義營區 102
12.知義營區 101
13.軍團軍官寢
14.群部軍官寢

睡過14個床位了 哈哈

2008年11月30日 星期日

介面 & 實作

想寫點什麼程式, 但時間不足

試試看之前改DRIVER時看到的一種介面 & 實做分離的方法

從別人寫的code去學習, 應該是不錯的方法




這兩天真是好日子

一路上前往長庚的路上

看到好多喜宴, 我家這邊也有一攤.

最近母親病情有控制下來, 我也鬆一口氣

昨天帶母親到外婆家, 外婆身體還是一樣硬朗

一直寫母親的事情好像也不是很好, 但這也是我最掛心的事情

常常不小心就想起和母親相處的時光...

最近偶而會想一下未來該怎麼做

剩下8個多月的役期, 之後, 我該留在高雄? 或是到北部去闖一下?

總之真的該好好想想了.

2008年11月28日 星期五

happy

母親的病情有進展, 大家都替她高興, 她本人也很開心

之前醫生說諾利刀10人做只有4個有效, 還好我媽的反應還不錯

腫瘤的指標有明顯的下降, 我真的很高興

因為許多治療方式不是不能做就是效果不佳, 希望能持續進步啊

當然我想最後還是必須肝臟移植, 希望能在退伍之後完成我的心願!

2008年11月22日 星期六

25 歲了

前天在軍中過了生日

來到這個新單位, 馬上又是戰備, 又是衛兵排

我們幾個最菜的就負責打飯... 真的挺累的, 照三餐打

我覺得當小兵快樂多了, 為什麼當初要當下士呢?

總之我25歲了, 人生大概也已過了1/3了

我的另一半到底在哪呢? 有時候忽然這樣想, 算了, 就順其自然吧

今天家煌跟我說我有可能編到工程組

人算不如天算阿... 老實說我真的不想站衛哨站到退伍...整天看著車群發呆

但天曉得還有什麼變數? 無論如何還是逆來順受吧!!

媽媽, 媽媽, 您還是我目前最擔憂的阿!

今天夢到我去問醫生母親的病情, 醫生說有好轉, 使我非常的高興

真希望那不只是一個夢阿

待會休息一下就到醫院去吧

2008年11月16日 星期日

呼呼

終於到了部隊, 以後應該不用像遊牧民族一樣搬來搬去了吧

我覺得環境還不錯, 除了有些學長比較兇(我猜是裝出來的, 因為私底下看他們有說有笑)

接下來的時間應該會過得很快吧.

現在我只希望母親可以好起來.

這禮拜她的精神很不錯, 一直跟我說話, 腹水也都消了

希望醫生可以全力的治療我媽媽

2008年11月8日 星期六

events

前幾天有位同梯弟兄的錢被被偷了(8千多), 讓我有點驚訝

大家表面上看起來有說有笑的, 怎麼會發生這種事情

我想問那位偷錢的人, 你難道不會良心不安啊

最近倒楣事特別多, 父親的車子被撞了. 還好人沒怎樣, 感謝神.

說到神, 阿壽前幾天跟我討論了一些問題, 他說你相信死後是怎樣的?

1. void.
2. ever sleeping.
3. going to heaven or hell.

我想應該是1, 神只是放唱片, 按Play的角色

昨天剛到部隊

位於台南市小東路上的54工兵群

這兩週由於調適教育,所以放洞八

感覺是個不錯的地方, 目前沒有太多感想

只是我體能不是很好有點擔心無法放到榮譽假

反正都進來了, 就自己多多加強吧

母親開始做放射線治療了, 最近狀況還不錯, 繼續加油阿

待會還有點事情要處理, 所以明天才能去醫院

或說昨天晚上我做了個夢, 夢到我留了一個言給子孫

"如果你們那個世代發明的時光機之類的東西,請回來救救我母親"

之類的話, 真是有點愚蠢

2008年11月4日 星期二

11/4

待會就要收假了

早上跑到醫院去, 大阿姨也來了, 跟我說了許多話

她是一個充滿活力的人, 總是穿著T恤牛仔褲, 我從小就相當敬畏她

雖然她也有自己的宗教信仰, 好像叫什麼"阿蘭達馬加", 但她卻是個相當明理的人

母親這兩天食慾有明顯進步, 算是好現象, 氣色也好許多了

接下來要做的是放射線治療... 希望能夠有效果

2008年11月3日 星期一

...

禮拜六日都在醫院陪媽媽

我跟二阿姨吵了架

她, 不知道為什麼總散發著一股讓我不想親近的感覺

從小就這樣, 我也不知道為什麼

------

母親因為腹水需要嚴格限水, 而且她有糖尿病, 高血壓

因此在飲食上需要相當注意, 而不是像正常人想吃什麼就吃什麼

昨天早上讓我看到母親在吃梨子, 我馬上阻止, 二阿姨就說"吃得下去才能活"之類的話

梨子, 昨天護士才說過屬於高糖份, 高水分的水果, 實在不適合母親

唉, 二阿姨總是自以為看了很多養生的書, 認為西醫只會讓母親愈來愈嚴重

講了之類的話, 我很不以為然, 於是跟她吵起來(我很小聲講話, 都是她在喊)

最後她自己不爽就離開了, 這樣也好, 母親讓她照顧我實在是不放心.

經過我昨天嚴格的水分控制(雖然還是超出醫生要求的1000cc)

母親腹水總算有點消(腹圍少了2.5cm)

今天請了一個看護, 我看得出來她是做事相當認真, 有經驗, 並且會遵從醫生指示

我才放心離開醫院

明天要收假, 早上我打算先去醫院探望一下, 在準備回營

------

今天有件事讓我很感動

阿騎剛剛打電話來問我需不需要他幫忙送回營

有這麼讚的朋友真是福氣

我的朋友都知道, 我是知恩圖報的 (教父台詞)

2008年10月31日 星期五

結訓

今天是結訓. 結束受訓的日子.

母親上禮拜做栓塞效果不佳, 醫生開始要用一種"光子刀"的方式治療

我所能做的就是好好照顧自己, 有空多陪母親, 給她加油打氣

結訓假四天, 我打算在醫院那邊住個三天, 第四天回營

我從來都不是孝順的人, 聽到母親說我很孝順, 實在是讓我很難過

我很愛他們, 但很少以行動或是言語表示, 真是糟糕阿, 我

在學校很多人都說我很悶, 我也沒辦法阿, 我總是這樣子

難道要我說一些低級的笑話嗎?(雖然有時後腦中會浮出, 但實在不想說)

如果是國中時的我大概不是這樣的, 應該算是開心果吧.

我怎麼會變成話這麼少呢?

難道是我沒辦法相信別人, 把內心的話講出來嗎?

還是我受到什麼打擊變成不太愛說話?

應該不是吧. 還是找不到與我臭氣相投的傢伙?

我自認為是一個親切的人阿, 遇到需要幫忙的人總是很少說不

也還算正直, 沒有暗算別人的念頭, 個人也覺得活得很快樂

還是說我不擅長交易? 害羞? 怕生?

我真的不曉得

2008年10月23日 星期四

請了1天假

明天媽媽要做栓塞, 我希望能在旁邊陪她

很感謝隊長對我的體諒, 感謝.

本來醫生說不能做栓塞, 讓我心裡涼了半截..

經過許多醫生會診, 決定讓我媽做栓塞試試看, 加油阿 老媽!

2008年10月19日 星期日

加油

這兩天母親的狀況還不錯

但是肝實在是一個相當沉默的傢伙阿, 受傷了也不吭聲

昨天高中同學有兩個要入伍, 本來要去幫忙慶祝一下, 但因有事就沒去

他們很感心的昨天吃完飯來探望我媽, 一群9個人, 還帶了鮮花水果. 真是感謝他們

阿騎, 賤狗, 寶毅, 士傑, 雋祥, 佳升, 小秉, 坤陽, 銘凱

下禮拜二要開始進行治療了. 要加油阿.

2008年10月17日 星期五

心情調適

心情稍微能夠接受了

我一直控制不要往壞的地方想

中隊長也知道我的事情, 但我實在不想讓其他不相關的人擔心

該做的事情我還是會做好, 不想找藉口, 不想同情自己, 不想增加別人的煩惱

今天中隊長給我了個提早假, 讓我提早30分鐘離開

雖然不太想要這樣但還是默默心懷感激的接受

明天換我去陪媽媽, 她下禮拜一要開始做治療了, 加油!

2008年10月12日 星期日

這兩天都在醫院



陪著母親

我好愛她, 好愛她

請不要這麼早離開我

請妳要撐過去, 也許治療會很痛苦

母親的狀態是

肝癌 - 腫瘤接近血管的部份, 醫生說做栓塞有點危險, 但是能列入考慮

肝硬化 - 先將肝癌處理好再來看這個

高血壓 - 控制中

糖尿病 - 控制中

天阿,為何要讓我的母親受到這麼多痛苦

這兩年在外地唸書沒什麼時間陪她

現在又要當兵, 等會要回營了

這兩天我一直哭, 一直哭... 我才不管別人的眼光, 這是我的媽媽阿

2008年10月10日 星期五

阿阿阿

今天是我有生以來最痛苦的日子

我的母親, 被檢查出有肝硬化還有肝癌

由於腹水他目前已經是住院狀態, 醫生表示不太樂觀

我好難過, 好傷心, 好痛苦

我該怎麼辦? 我待會就要去醫院陪母親了

2008年10月5日 星期日

保持好心情

這是我當兵學到的技能之一

保持好心情

軍中難免有時候會被罵, 但一直保持好心情是相當重要的

aging

年紀一直在增加

這由不得你

我們只能默默接受. 對於年紀增長, 我並不會感到恐懼

有些事情更容易完成, 相對的, 有些以前容易做到的現在反而不容易做到

當兵後, 我想多少有些成長吧.

2008年10月4日 星期六

貪吃

我就是一個貪吃的人

有時能夠克制自己, 有時就忍也忍不住

就像狗一樣

聞到香香的味道唾液就不自覺得冒出來

真是傷腦筋

回到家當然也是一陣猛吃, 當然知道這樣不好

但我就是貪吃

君子食不求飽,居不求安

我還是當不成君子阿

感動

每個人對感動的反應都不太一樣

感動是一種相當特殊的狀態

當人類對外界的事物達到某種條件下,生理及心理上產生的反應

對我而言再為小的事物都可能讓我感動

我的反應差不多就是: 心跳加快, 手腳冒汗, 脊椎有如電流通過一般, 淚腺開始發達,

心臟有如被掏空一樣

雖然不是多麼快樂的生理反應, 但我還是喜歡可以令人感動的東西

這樣說, 感動似乎可以製造出來的樣子,

你可以完成某些條件, 令某些人造成感動, 無論是文字, 音樂, 等等各種形式都可能

你, 是否也在尋找另你感動的事情呢?

2008年10月3日 星期五

工兵學校第一次放假

工兵學校的生活相當規律
跟新訓差不多"趕"
早上6:00起床,現在是冬令
6:15分集合
掃地到6:50
7:00集合上餐廳
7:30集合上教室.
大概走了30分鐘到教室
8:00上課
11:30從教室走回餐廳
12:50起床, 13:00集合上教室
13:30上課
17:30帶回上餐廳
19:00集合晚自習
20:30左右集合回來盥洗
21:30就寢

有幾個心得:
1.營戰非常遠,別想了.
2.飯菜比起龍泉好吃太多了
3.完全沒有操體能, 目前為止只拉過一次單槓

我是分配到開推土機的
機械督導士, Bulldozer 推土機, 以前施工方法與機具有學過
就是牽引機配上鏟刀, 嗯嗯, 這樣稍微有點學以致用吧

軍中的官僚文化相當不適合我
但我一直把當兵當作是一份暫時的"工作"
這樣想心情就好很多, 無論如何我都是盡量把工作做好
來這邊也認識一些人, 我想大家都還不錯

2008年9月25日 星期四

essay

等等就要收假了.

經過這7天,感冒居然還沒好

軍中的病毒實在是厲害.

忽然想起, 好久沒看電影了

自從回高雄後幾乎沒看什麼電影

下次放假 10.4

2008年9月24日 星期三

吉他

關於吉他, 我是半調子.

高二的時候曾經學過一陣子, 接下來就是自己亂彈到現在

學的東西都忘了, 也沒有做什麼筆記, 想一想真是糊塗

這幾天忽然有種想要把吉他學好的心情

於是跑去樂器行買了新弦, 並且買了一本吉他教本"彈指之間", 是一本相當有份量的書

學而時習之,不亦悅呼
溫故而知新,可以為師矣
自勉之

真懷念

之前玩過一陣子樂團

至於樂團, 我們沒有正式的名字, 唯一的一次表演名稱是用

"沈ㄟ與他的夥伴們" 這個有點好笑的名字, 典故是從小飛俠來的... 彼得潘與他的快樂夥伴們

為什麼有這個名字? 剛組完沒多久 那時還沒有bass手. 晚上忽然接到一通電話

好爐晚上找我去清大跑步, 跑到一半在想團名, 我忽然冒出這個名稱

其實是在開玩笑, 沒想到就被拿來用了 哈哈

好懷念阿

對於過去, 人們總是會懷念, 無論是好的回憶或是壞的回憶

這算是人類的一種機制吧.

2008年9月23日 星期二

今天幾個朋友來找我

我煮了咖哩義大利麵招待他們

下午就打打麻將, 到燕巢的工兵學校門口晃了一下

晚上練練吉他

真是快樂

2008年9月21日 星期日

empty

一放假, 整個人也跟著放空

不像在部隊裡面, 按表操課

時間就在放空之間不知不覺的溜走

但這種自由的感覺真不錯, 有種我是真的活著的感覺

還有很多想完成的事情, 不要再浪費時間囉

2008年9月20日 星期六

sing sing sing

在新訓中心見識了不少人
也算是還不錯的回憶,畢竟一生中也只有一次
我平時算是話不多的人,也可能是沒能找到可以讓我打開話匣子的人
聽同梯弟兄說我總是看起來很嚴肅的樣子
跟以前比起來我也變得很多,但也可能這才是真正的我
我一直在自己的世界中,就像在游泳池底下一樣
外面的聲音對我而言相當的模糊

我想要大聲唱歌 sing sing sing

2008年9月18日 星期四

結訓假


放7天
好好休息休息
接下來是戰鬥工兵!!

2008年8月31日 星期日

XD

進去的這幾天有兩件讓我覺得悸動
在此紀錄一下

1. 在莒光園地聽到"威風凜凜進行曲"
- 有一個禮拜沒有聽到自己喜歡的音樂
- 深深感到自由的美好
2. 第一次打電話回家聽到媽媽的聲音
- 我差點哭出來, 還好我忍住了
- 並不是因為在這邊受訓有多苦, 只是聽到媽媽的聲音,
- 我能感受到她有多高興...

放假也是任務

這就是軍人生活
昨天懇親, 高中同學, 父母有來看我, 感謝他們
新訓第一次放假, 下次就是結訓假了
剛進去時大家都相當緊張, 到現在能夠互相開開玩笑, 差不多也都適應了

在軍中有許多看不慣的事情
1. 相當喜歡做表面工夫
2. 長官沒有以身作則
3. 浪費食物
4. 欺下怕上
5. 有些白木喜歡欺負別人

伙食相當差, 本以為二餐三樓已經很爛.
但軍隊伙食實在很差, 爛到不行, 並不是說我喜歡吃什麼大餐
但那種東西真的能叫做食物嗎? (有些菜)

2008年8月19日 星期二

這幾個禮拜

過得還不錯
每天跑步 運動
去找高中老師, 跟同學吃吃飯, 到處玩
明天就要入伍了, 心情到算平靜

2008年8月16日 星期六

今天騎腳踏車



跨了岡山, 彌陀, 梓官
途中朋友的車壞掉
我們在路邊一間店修理 順便去吃了個愛玉冰-30元, 是手洗的愛玉
然後沿著阿公店溪一直到海岸邊, 看看夕陽
最後來到蚵仔寮的魚市集吃了個蚵仔煎, 相當大一份50元
然後踏上歸途

2008年8月4日 星期一

fake

真想快點去當兵啊

過幾天是奶奶的生日

我想我又要被一堆人追問: 你有女朋友了嗎?

雖然是小事情, 但每個人總是有不想被人家一直追問的事情

2008年8月1日 星期五

兵單GET!!!

2048T
屏東龍泉!!

2008年7月27日 星期日

一直在做夢

回到家就一直睡不好
無論是午睡或是晚上睡覺
一直在做夢
推論是床太小了...

2008年7月26日 星期六

25元的刨冰

我想只有鄉下才看得到這種價格
新竹至少40
去岡山也要35-40
在彌陀這個小小的漁村居然25元的刨冰
料不會比35元的少喔
這家在彌陀國小對面的刨冰據說已經有相當久的歷史了
我爸說他小時候就吃了, 那時候一碗5元 @@
我點了粉條粉圓冰
使用的是完全沒有加色素的粉圓

2008年7月25日 星期五

賭博真是邪惡

今天跟高中同學吃飯
然後又去同學家打麻將(買了啤酒過去)

玩了一圈, 輸掉300多, 其中有一個高手
最後一圈連莊5次, 嚇到我了, 第一次看人家連莊這麼多次

我想一想賭博這東西的本質是邪惡的
就像今天大家都想從那個連莊的傢伙那邊贏回來
連莊越多次放槍輸的也越多
不自覺就會陷入那種特殊的情緒中導致輸得更慘
總之玩玩小條的還ok,千萬不要賭大條的

今天剛好看到一個同學的msn狀態如下
想用1元贏100元是賭博
想用1元贏10元是投機
用1元贏5分才是投資

說得真是有道理

2008年7月22日 星期二

Decorator - c++

Decorator

C++有些要注意的地方
像是呼叫super class的constructor要在brace前用: Base()
以及呼叫super class的method要用"::"運算子: Base::Method()



#include
using namespace std;

class IComp {
public:
virtual void doSomething() = 0;
};

class fromComp : public IComp {
public:
virtual void doSomething() {
cout << "non Deco" << endl;
}
};

class Deco : public IComp {
public:
Deco(IComp* i) : theOrin(i) {}
virtual void doSomething() {
theOrin->doSomething();
}
virtual ~Deco(){
delete(theOrin);
}
private:
IComp* theOrin;
};

class DecoA : public Deco {
public:
DecoA(IComp* i) : Deco(i) {}
virtual void doSomething() {
cout << "DecoA" << endl;
Deco::doSomething();
}
};

class DecoB : public Deco {
public:
DecoB(IComp* i) : Deco(i) {}
virtual void doSomething() {
cout << "DecoB" << endl;
Deco::doSomething();
}
};


int main()
{
fromComp* a = new fromComp();
a->doSomething();
DecoA* b = new DecoA(a);
b->doSomething();
DecoB* c = new DecoB(a);
c->doSomething();
return 0;
}


2008年7月20日 星期日

這兩天

颱風過來
水差點淹到我家, 還好我家地勢高一點, 還沒有淹到我家的紀錄
我爸眼光真準

昨天去高中同學家打麻將, 小輸40
麻將我只知道怎麼胡, 至於規則我完全不懂
經過同學介紹才知道有一種作弊方式是擲出10的骰子點數
就可以拿到面前的牌...

這兩天繼續用了python寫一些程式
發現其效能實在不是很理想
我用內建的urlretrive函式跟呼叫wget比起來
後者大勝,
python比較像是進階操作作業系統的語言
你可以做一些你想要的功能
但比較critical的部份還是請用C吧

2008年7月16日 星期三

沒什麼事情

昨天更朋友去爬柴山, 直奔雅座
路上相當多猴子, 也不怕生
這麼多猴子, 是不是該考慮節育了...

現在一樣每天早上腳踏車下午跑3000的生活
念念書, 寫寫程式, 一天就過了

2008年7月14日 星期一

接下來的計畫

回到家也三天了, 目前是在等當兵
區公所人員說大概是8月中

這段期間有幾個計畫:
把大學及研究所念的東西拿出來看一下做一下review
玩一下Python
每天早上騎腳踏車50分, 下午跑3000公尺
重力訓練

2008年7月13日 星期日

http server using python


import BaseHTTPServer
import SimpleHTTPServer
httpd = BaseHTTPServer.HTTPServer(('localhost', 80),
SimpleHTTPServer.SimpleHTTPRequestHandler)
httpd.serve_forever()

沒錯, 以上幾行就是一個http server
python提供了強大的模組庫
但我對於沒有資料類型的參數還是有點不太習慣...
後來想一想, 這根本是完全的泛型阿!
例子中HTTPServer的constructor第二個參數, 傳進去的東西是一個class
利用class委任的方式來處理...這好像是某個pattern應用..builder?

2008年7月12日 星期六

python



昨天又把python拿出來複習一下
我是看"byte of python"這個電子書, 網路上可以下載到
python是一個很有趣的動態語言
compiler interpreter
py --------> pyc(bytecode) -----------> binary code
pyc只是加快速度的手段, 執行的話是直接從.py去執行
以module架構整個程式
如果說JAVA是以class為基本元件, Python無疑是以module為元件
當然module中也可以定義函式或是類別
python是一個物件導向程式語言, 具有物件, 可以繼承, 多型

在宣告時所有的東西都是物件
更精確的說都是"object"這個class
藉由constructor或是一些built-in的(如 =123 表示數字或是 ='abc'表示字串)來達到多型
在宣告時不需要指定其類別
a = 10 #數字
b = 'bc' #字串
c = test(10) # c 是test這個class的一個物件
至於所有的reference都是object
大概是這樣 指向
object(做GC,或是一些資源管理) ------> 本體

在程式的撰寫上相當精簡
利用縮排來表示block, 挺聰明的作法..嘿
這樣就可以避免看code看到眼花, 有些人的寫作風格實在是不敢領教

判斷或是迴圈的描述如下
if a == b:
print 'yes'
elif:
print 'no'

while True:
prnit 'hello'

for obj in range(1, 10):
print obj
跟C還是有點像, 值得一提的是他的 for ... in
提供一個探訪循序資料結構的方法

python 提供了3種內建的資料結構, 相當實用
list -> alist = ['a', 'b', 'c'] #底層應該是linked list, 可以用del刪除節點
tuple -> atuple = ('a', 'b', 'c') #不可變更的list
可以用於字串處理 '%d%d%d' % ('1','2',3') -> '123'
dict -> adict = {'a':1, 'b':2, 'c':3} #hash table
另外還有對循序資料結構進行存取的方法
alist[:] -> 表示從頭到尾
alist[3:] ->從第三的元素到結束
這些存取方式都是複製一份reference出來

物件導向的部份
很單純, 很像用C寫物件導向..尤其是那個method還要提供個self這個參數XD
但語法上還算ok, 跟java一樣所有override的方法都屬於virtual
藉由特殊名稱的method來達到建構,解構,還有運算子複寫 ..ex. __init__, __del___ , __lt__

IO部份,packle這個module提供了dump跟load
那麼我想所有的object都實作了類似java的序列化介面吧.(不確定)

其他部分, 像是
lista = [2, 3, 4]
listb = [i*2 for i in lista if i > 3] #非常牛b的寫法, 實在是粉語意
print listb

還有
def powsum(power, *args):
t = 0
for i in args:
t += pow(i, power)
return t

print powsum(2, 2, 3, 4) #2, 3, 4將會被視為tuple args傳遞

還有
lambda 這玩意相當新奇, 基本上就是動態產生一個function pointer
def power(order):
return lambda s : pow(s, order)

binary = power(2)
print binary(11)
像是這樣

exec用來執行字串形式的code, 用這個似乎可以來做reflection ?
exex 'print "hello"' = print hello
eval用來評估一個字串形式的表達式
eval '3*3' = 6

assert就是斷言,
其實就是做檢查判斷是否成立, 不成立就丟出例外
是一種錯誤處理機制


2008年7月11日 星期五

總算是回高雄了

所以我已經脫離學生生活了
往下個階段邁進

下午去了鹿港, 真是令人失望的地方...以後不會再去了

回家量一下體重, 嚇到
可能是最近吃東西沒節制...
慘慘慘, 要開始運動減肥了

2008年7月10日 星期四

Return

明天就要離開新竹了
今天去吃了趣味一下, 阿阿, 應該是最後一次了(希望)

意外得知博班學長資格考沒有過...
有點替他傷心, 但又不知道怎麼安慰
只能拍拍肩膀

總之我要離開新竹了
真高興能夠來這邊唸書, 這兩年我過得很快樂, 也學到不少東西
回想起剛來到新竹,人生地不熟
昊志帶我去找房子
多虧好爐的照顧, 常常陪我喝酒看電影以及游泳, 希望他一切順利
還有研究室學長姐的照顧, 一起去吃吃喝喝, 做做研究
然後還有對面研究室的同學, 常常去那邊吃飯,打電動...
IT組的學弟妹, 每次都是找你們吃東西, 真對不住XD
老師對我也很好, 讓我那麼早畢業~
感謝啦

交大的校園真的很美, 綠意盎然
希望以後還有機會回來

2008年7月8日 星期二

今天在研究室

把我在研究室的電腦重灌了一下
xp一直裝不上去
於是我改裝ubuntu, 多虧了lazybuntu 省下許多調整時間
馬上就可以看電影^^

2008年7月7日 星期一

函式呼叫之esp , ebp變化觀察

趁早上洗衣服的時間觀察了一下
然後做個紀錄, 我的功力還是很弱啊, 慢慢來吧...

2008年7月6日 星期日

in bruges

這部電影的場景相當美麗
在比利時的Brugge[http://www.brugge.be/internet/en/index.htm]
到處都是6-7百年以上的建築物
我知道我不是在作夢, 但彷彿置身於童話世界
真想去那邊走走阿
就算是漫步於街上也很棒

2008年7月5日 星期六

吃吃吃

前田屋燒烤跟趣味一下火鍋店
這兩家店應該是兩年來吃最多次的店了, 趣味一下應該不下10次
趣味一下的雞塊, 尤其是剛出爐的, 相當美味
前田屋, 五花豬肉則是很不錯, 肥嫩多汁

其他還有像是

生活館, DoReMe, 歐吉桑壽喜燒, 東京都日本料理, 新幹線燒烤
韓味煮義, 耀武羊威, 林記火鍋店...

西提, 城隍廟小吃, 鴨肉許, 黑貓包, 北門炸ㄍㄨㄟˋ, 披薩, KFC

清大夜市有竹塹園, 客家雞腿飯, 金芝園, 阿金滷味, 鹽酥雞, 3Q雞排, 金城廣東粥
肥仔龍鐵板燒, 銅鑼灣咖哩飯, 烤鴨

清大風雲樓的素食, 很美味

二餐是我最常吃的. 7-11, 難吃的自助餐, 多多咖啡, 二樓的麵店, 三樓的萬年自助餐
港式燒蠟, 蔥抓餅, 老陳雞排飯, 飲料店, 八方雲集, 難吃的麵店, 八寶冰
水果攤...

還有交大校園的鬆餅店, 巧克力鬆餅, 抹茶鬆餅...

學長帶我去台北士林夜市亂吃一堆東西, 雞排, 春捲, 鴨肉餅? ...

我在新竹這兩年也吃了不少東西嘛

2008年7月4日 星期五

齊天大聖東西遊記

今天學弟問我有沒有看過這部
我說沒有, 於是他就很熱心的放到FTP上

幫忙別人弄完論文, 吃飽飯想說來看一下這部傳說的經典
[真是他媽的太好看了]

2008年7月3日 星期四

公主追殺令

又是一部復仇電影, 或說是動畫
但非常不適合兒童觀賞...

C - 在程式運行中取得function name

在傳統的作法可能像是用

void hello()
{
printf("hello");
}

但在C99的規格中出現了 __func__ 及 __FUNCTION__ 去取得函式的名稱
改寫成
void hello()
{
printf(__FUNCTION__);
}
就可以取得函式名稱. 讓Compiler幫你處理
在 .rdata section出現了這段. 其實就是"hello"字串
00403000 <__FUNCTION__.0>:
403000: 68 65 6c 6c 6f
403005: 00 25 73 00 77 6f

the lars and real girl

早上來到研究室
想說看一部輕鬆的電影
所以我選擇了"充氣娃娃之戀" ( lars and real girl )
結果這部片一點都不輕鬆...

Lars是一個27歲的男孩, 是一個非常好的人
他因為某種原因沒辦法跟其它人交往(因為童年的因素)
因此他選擇充氣娃娃當他的女友, 起初大家都以為他瘋了
家人帶她去看心理醫師, 醫師說: 這可能是他在現實生活的絕境中所尋找的出路
而產生的妄想症, 不一定有害
於是家人開始接受他獨特的女友, 鄰居也相當配合...
最後Lars走出來了...
其實這部片子相當溫暖. Lars發現大家都愛著他, 因此才能為他跟他女友做了那麼多事情

2008年7月2日 星期三

門把有電

我"經常"被研究室的門把電到
為什麼會有電呢
因為上面裝了類似防盜的東西(但我很懷疑是否有作用)
問了一下學弟, 他說"從來沒有"被電過
可能是因為我的導電係數比較高吧

Reprise && The Royal Tenenbaums

今天看了這兩部電影

Reprise講的是挪威兩名年青人的故事

The Royal Tenenbaums 則是講述一個美國家庭的故事

2008年7月1日 星期二

我的左派老師

左派, 的意思有相當多種, 從wiki的解釋來看

公平的結果是左;公平的程序是右
反對自由市場造成的不均等為左;而接受之則為右
偏好一個「更大的」政府為左;偏好一個「更小的」政府為右
平等為左;自由為右
一個現世政府為左;一個宗教政府為右
集體主義為左;個人主義為右
革新為左;保守為右
法律支配文化為左;文化支配法律為右
支持跨國家團體為左;僅支持獨立國家和政府為右
國際主義和世界觀為左;國家利益為右
認為人性和社會為可變性的為左;認為它們為固定性的
認為人性本善為左;認為人性本惡為右
社會主義為左;資本主義為右

如果可以把一件事情分為兩面來看待, 世界將會容易許多

與過去看到的講述老師的電影相當不同
如:春風化雨, 這部電影中的老師是個毒蟲, 但他並沒有多壞
偶然在廁所中吸毒被撞見, 而意外發展出一段學生與老師的情節

2008年6月30日 星期一

ACM488

今天下午幫同學試了一下SAP2000的API
使用COM介面的API, 挺不錯的東西

然後寫一題簡單的ACM488
心得是英文誤解意思的話是很糟糕的事情



char* sary[] = {"0", "1", "22", "333", "4444", "55555", "666666", "7777777", "88888888", "999999999"};
int waves;

struct Wave {
int order;
int Amp;
int Frq;
void (*Draw)(struct Wave* this);
};

void Draw(struct Wave* this)
{
int i,j,k = this->Frq;
while( k > 0 ) {
for(i = 1; i < this->Amp; ++i) {
printf(sary[i]);
printf("\n");
}
for(i = this->Amp; i >=1; --i) {
printf(sary[i]);
printf("\n");
}
if( k== 1 && this->order == waves);
else
printf("\n");
--k;
}
}

struct Wave* New_Wave(int order, int Amp, int Frq)
{
struct Wave* ret = (struct Wave*)malloc(sizeof(struct Wave));
ret->order = order;
ret->Amp = Amp;
ret->Frq = Frq;
ret->Draw = Draw;
return ret;
}

int main()
{
struct Wave** wav;
int i, amp, frq;

scanf("%d", &waves);
wav = (struct Wave**) malloc( sizeof(struct Wave*) * waves);
for(i = 0; i scanf("%d", &);
scanf("%d", &frq);
wav[i] = New_Wave(i+1, amp, frq);
}

for(i = 0; i < waves; ++i) {
wav[i]->Draw(wav[i]);
free(wav[i]);
}

return 0;
}

瘋狂理髮師

這部影片也是在講"復仇"
奇怪最近怎麼都看到類似的電影^^;

主角是一個理髮師, 為了向拆散他們夫妻的人進行復仇
這個主角有點走火入魔, 殺了很多人
整部片以音樂劇的方式闡述, 讓人家比較不會背黑暗壓到喘不過氣
但實在是一部相當黑暗的電影

2008年6月29日 星期日

The Mist

剛才又啃了一部電影 "the Mist" 迷霧驚魂
原著是史蒂芬.金( 讓我覺得像是食神中的人物 )
我還看過他的...刺激1995, 鬼店, 綠色奇蹟 等改編電影

迷霧驚魂大概就是B級的恐怖片
很囧的結局,出現這樣的結局太突兀了.

原罪犯

Old Boy
這是韓國電影
整部電影都在講"復仇", 但是跟昨天看的Red Road的復仇類型相當不同

主角算是"被複仇"的對向
而那個要向主角復仇的人先把主角監禁了15年,再開始執行他的復仇
這15年,是為了等待某件事情成熟,真的相當驚悚

2008年6月28日 星期六

Red Road

剛剛看了這部電影
主要講一個女人
為了替自己在意外事故死掉的丈夫女兒報仇而接近兇手
有點像是"21 gram", 兇手都不是故意的, 而且他們都有自己的人生

那個兇手被假釋出獄後, 女主角想盡辦法接近他
想把主角再送進監獄...

"這種鳥事天天都在發生, 這就是人生", 那個兇手說

Insertion Sort

平均時間複雜度是 O(n^2)
其它還有一些變形
insert的部份改用二元搜尋(加快insert速度)
以及使用linked list而不是用陣列(減少memory copy的overhead)

這種演算法沒用嗎? Quick Sort都比這個快
但當做學生作業似乎還不錯啊



#include
using std::cout;
#define MININT 0 // any key must grater than this

class Element
{
public:
Element(){}
int getKey() const{ return key; }
void setKey(int k) { key = k; }
private:
int key;
};

void insert(const Element e, Element *lst, int i)
// insert lst[0] -- lst[i]
// lst must have i+2 capacity, cause we inset a new element to ordered list
// assume lst[0].getKey() = MININT, make sure all keys are grater than this
{
while( e.getKey() < lst[i].getKey() ) {
lst[i+1] = lst[i];
--i;
}
lst[i+1] = e;
}

void InsertionSort(Element* lst, const int n)
// sort lst[1] to lst[n]
{
lst[0].setKey(MININT);
for(int j = 2; j <=n; ++j)
insert(lst[j], lst, j-1);
}

int main()
{
Element *lst = new Element[6];
lst[1].setKey(2);
lst[2].setKey(3);
lst[3].setKey(4);
lst[4].setKey(5);
lst[5].setKey(1);
InsertionSort(lst, 5);
for(int i =1 ; i < 6; ++i)
cout << lst[i].getKey() << " ";

return 0;
}

2008年6月27日 星期五

今天去吃壽喜燒

在竹北的壽喜燒, 然後順便拍個畢業照
IT組的同學就四個, 想起來真是囧
昨天去剪了頭髮, 清爽多了



2008年6月26日 星期四

inline assembly

這種在C語言裡面穿插組合語言的作法實在是非常powerful
就我觀察, 一種良好的系統, 總是會提供多種solution
包含high level與low level

asm("組語" : output : input : regs);

像這樣把組合語言穿插在原本的程式
組合語言我幾乎不會, 但我想應該不難學, 因為指令相當的單純

2008年6月25日 星期三

畢業證書

今天去跑了離校

拿了畢業證書

薄薄的一張紙, 深怕有一點損傷

應該拿去護背一下才是

謝師宴

今天去西堤吃謝師宴
我覺得還不錯, 吃得蠻飽的
點了"法式鴨胸", 好大一塊鴨肉...
我從沒看過這麼大塊又沒骨頭的鴨肉

服務相當不錯...開胃菜 前菜 沙拉 濃湯 主菜 甜點 飲料
吃得好飽. 現在還在飽

最近花了不少錢, 但都是花在必要的東西上
我騎機車回程的時候忽然這樣想
對於花錢, 平時可能都不太花大條的
但有必要錢還是要花, 並不需要那麼斤斤計較

2008年6月22日 星期日

鍛鍊

由於之前改論文
所以跑校園的活動也停了下來

最近比較有空, 應該開始為當兵做一下準備
菜單是:
跑步 3000公尺為單位
仰臥起坐 30下為單位
伏地挺身 50下為單位

先以1單位為目標吧

2008年6月21日 星期六

畢業典禮

今天畢業典禮, 不過我沒參加

昨天爸媽過來找我. 帶他們去18尖山還有城隍廟拜拜.

今天帶他們去學校跟他們合照一下, 然後中午吃完飯他們就回去了

畢業典禮也只是個形式, 我不感到歡樂, 因為接下來我還有更多事情要做

很高興他們能夠過來

2008年6月19日 星期四

洞裡春光

講述一個奶奶為了孫子
而從事幫人家XXX的工作
很感人...

2008年6月18日 星期三

Being John Malkovich

這個導演真是天才
好久沒有看過讓我如此吃驚的片子
imdb 7.9分 但我覺得有8分以上

講述有一個人發現一個通道可以進到某個人的身體
故事從這邊出發
這個導演真是天才

2008年6月17日 星期二

pay it forward

很久以前看過這部電影
它主要的意思是說

當你受到別人的恩惠(favor),你不一定要回報,你可以將這個恩惠施予其它人
然後遞迴
像是蝴蝶效應一般,也許有一天你會受到某個陌生人的幫助
而那個陌生人也曾受到你間接的幫助

我很喜歡這個idea

2008年6月16日 星期一

口試結束了

蠻順利的 沒被問什麼問題
我想老師們也不曉得我做了些什麼
請大家吃了批薩跟烤鴨 反而是我自己沒什麼食慾
真的有點不捨...
開始稍微整理一下房間, 發現一張95年的發票, 那時我剛搬過來沒多久
常常一個人吃飯, 一個人唸書
現在我有一些朋友, 心中也比剛來的時候踏實
我似乎在這兩年中比過去成長了
人生過了1/3,也是最美好的1/3
接下來我必須更加努力, 切勿浪費時間
在新竹剩下20幾天...

經過了很多事情
我真的要感謝身邊的朋友
Q___Q

口試

等一下要口試了
話說我已經做了三個關於口試的夢了
雖然沒有很緊張
但心理還是有點壓力阿

2008年6月15日 星期日

明天要口試

昨天我做了一個關於論文口試的夢
我只記得面試結束的情景
然後我一直在想我口試的過程但怎麼想也想不出來
可能是大腦還沒有辦法製造出影像
有點像是一個失憶的人

2008年6月13日 星期五

我的左腳

剛剛看完這個傳記電影
講述christy brown一個生來就腦性麻痺的傢伙的人生

2008年6月12日 星期四

換燈泡

研究室的日光燈管壞了6隻
這可以算是我惰性的極限
從去年開始日光燈就一個接著一個壞掉
我還是蠻不當一回事,想說:還看得到嘛!
前幾天壞了第6隻後,開始覺得有點暗了
但我還是撐了幾天, 終於今天下午有空, 就去系辦借了梯子拿了3根來換
換了之後感覺好亮阿, 還有三根沒換到, 但應該這樣就夠了, 也算是做環保(哈)
多謝猛虎幫我扶梯子

2008年6月11日 星期三

Google

剛剛花了點時間了解一下什麼是RSS
是一個很有趣的東西, 主要就是觀察者與被觀察者的模式

當被觀察者出現更動它會通知觀察者
就像是Blog與Read間的關係,用一個protocol溝通, 應該是使用XML這類的文件進行吧

Google提供了相當多的服務
Web能幫助人們做什麼事? 要以這個方向進行思考
技術只是為了實現某種思想的手段

2008年6月10日 星期二

今天早上

早上起來6點多起來
把There will be blood後半段看完
一個功利主義的傢伙的故事
不相信神, 只相信自己
但我可以感受到在他鋼鐵般的外表裡面藏著一個軟弱的傢伙
只是他不再別人面前表現

不知道為什麼, 我的心忽然不空虛了, 我感到什麼東西進到我的內心
我不相信任何宗教, 也不相信什麼救贖之類鬼東西
但我相信唯有人的心中擁有愛, 這個世界才會更好

2008年6月9日 星期一

粽子

這兩天都有粽子可以吃
這要感謝對面研究室的同學

今天論文改一改就要拿去印了
然後明天交給三個口試委員

2008年6月8日 星期日

和平的戰士

今天看了這一部電影
講說一個什麼都不缺的小伙子尋找自我的過程
中文應該是"在深夜的加油站遇見蘇格拉底"
哲學的東西我不懂
本片也沒提到什麼哲學
主要就是叫我們活在當下
他們說:行動決定思想, 但什麼來決定行動呢?
反正這種有點說教的電影看看就好
我對任何事情還是都抱持著懷疑的態度

由於最近把事情忙得差不多了
剩下口試與畢業典禮
終於有點時間可以做點自己想做的事

想把Understand Linux Kernel看完
想把Development of Linux Kernel看完
想把約翰克里斯多夫看完
想把Live fresh看完
還有一堆想看的電影...

2008年6月7日 星期六

CCC-Iterator

使用C實作了Iterator
C語言實在是一個非常有趣的語言
應該說是
high level assembly ? 雖然我不太懂組合語言
但光是使用C就能感覺到他的power


#include
#define TRUE 1
#define FALSE 0

struct Iterator;
struct List;
struct List_Node;
typedef unsigned short (*Method_hasNext)(struct Iterator*);
typedef void* (*Method_next)(struct Iterator*);


typedef struct Iterator {
struct List_Node* current_element;
Method_hasNext hasNext;
Method_next next;
} Iterator;

typedef struct List_Node {
void* data;
struct List_Node* next;
} List_Node;

typedef struct List {
List_Node* head;
Iterator* (*getIterator)(struct List*);
void (*addData)(struct List*, void*);
} List;

void addData(struct List* stru, void* data)
{
List_Node* n;
for(n = stru->head; n != NULL; n = n->next ) {
if( (n->next) == NULL ) {
n->data = data;
break;
}
}
n->next = (List_Node*) malloc(sizeof(List_Node));
n->next->data = 0;
n->next->next = 0;
}

unsigned short hasNext(Iterator* i)
{
if(i->current_element->data == NULL)
return FALSE;
return TRUE;
}

void* next(Iterator* i)
{
void* ret = i->current_element->data;
i->current_element = i->current_element->next;
return ret;
}

Iterator* getIterator(struct List* stru)
{
Iterator* ret = (Iterator*) malloc(sizeof(Iterator));
ret->current_element = stru->head;
ret->hasNext = hasNext;
ret->next = next;
return ret;
}

List* New_List()
{
List* ret = (List*) malloc(sizeof(List));
ret->head = (List_Node*) malloc(sizeof(List_Node));
ret->head->data = 0;
ret->head->next = 0;
ret->addData = addData;
ret->getIterator = getIterator;
return ret;
};

int main(void)
{
List* strs = New_List();
strs->addData(strs, "John\n");
strs->addData(strs, "Paul\n");
strs->addData(strs, "Ringo\n");
strs->addData(strs, "George\n");
Iterator* i;
for( i = strs->getIterator(strs); i->hasNext(i) == TRUE;) {
printf("%s", (char*)i->next(i));
}
return 0;
}

CCC

嘗試用C實作了simple factory如下


#include

typedef void (*Method)(void);

typedef struct Interface {
Method method;
} Interface;


void good_method(void)
{
printf("good\n");
}

void bad_method(void)
{
printf("bad\n");
}

Interface* New_Product(char* type)
{
Interface* ret = (Interface*) malloc(sizeof(Interface));
if( strcmp(type, "good") == 0 ) {
ret->method = good_method;
} else if( strcmp(type, "bad") == 0) {
ret->method = bad_method;
} else {
return NULL;
}
return ret;
}

int main(void)
{
Interface* product;
product = New_Product("bad");
product->method();
product = New_Product("good");
product->method();
product = New_Product("bad");
if( product == NULL )
printf("nothing");
else
product->method();

return 0;
}

2008年6月6日 星期五

Into the Wild

中文翻譯叫做"阿拉斯加之死", 這是一個真實事件
今天我到224去看了這部電影

主角拋棄了自我想到阿拉斯加去一個人生活
但最後在阿拉斯加度過最後的3個月...
他因為誤食了有毒的植物而喪命
最後留下了這句話
"I HAVE HAD A HAPPY LIFE AND THANK THE LORD. GOODBYE AND MAY GOD BLESS ALL!"
這部電影讓我很感動
我有許多想法都跟片中的主角很像, 影片很多地方都讓我產生共鳴
有時候真的想一個人到什麼沒人認識我的地方生活
只是我沒那個勇氣一個人生活
我們人夠活著多多少少都有受到很多人的幫助
這一群人組成了社會, 社會算是國家的子集合吧

他死後兩週被獵人發現
在他的相機中發現了這張自拍照, 他真的很快樂

台灣草根臉譜

http://tw.myblog.yahoo.com/i2taiwan/

令人感動的相片"Common People"
小時候父母都出去工作,都是奶奶在照顧我
所以我對老人家都抱持著敬意
人總是會老,但重要的是如何保持年輕的心
時時充滿活力、好奇心、求知慾
Life is Just for Fun, right?

2008年6月3日 星期二

最後一堂課

結束了

碩士生活的最後一堂課

我愛交大

2008年6月1日 星期日

Doonie Darko

今天看了這一部~
非常不錯的科幻片
但我覺得一部電影要能夠成功
一定必須融合多種元素並且能夠處理的和諧
電影插曲"Mad World"很好聽

另外看了豆豆假期,邊吃飯邊看的
其中有一幕唱"喔 我的父親" 很好笑 哈哈

能夠擁有一個電影播放室應該列入我小小的夢想之一了

2008年5月31日 星期六

大概過了人生的1/3了

我今天忽然有這種感覺
老實說我還不曉得我活著要幹嘛
但總有一天我會曉得吧?

總之,已經過了人生的1/3了

我有時候會想起一堆小時候的事情
小時候我很容易做惡夢,也許現在也是
半夜總是會夢囈,然後母親總是會過來陪我睡覺
抱著母親睡覺,我不會做惡夢
幾乎可以感受到在母親子宮那種安心的感覺,非常的溫暖
那種動物本能般的感受,讓我感到很安全

昨天專題報告

我報告了論文
那些東西主要是上學期+上上學期做的
但老師說ok就ok

我想到幾個方式可以改良
Relationship , 的related elements應該用arraylist
select type及抽象類別應該要用 reflection 來處理...
我之前不太清楚reflection是什麼, 上了java寫了project之後才有感覺

我比較喜歡的學習方式是先動手實做, 再來思考, 做中學習

2008年5月29日 星期四

看完了罪與罰

前幾天把論文修改完等著老師回復
也把Project4解決
總算可以做一些想做的事

早上把JAVA的Collection看了一下
有點想是C++的STL, 總之就是資料結構
ArrayList
LinkedList
Vector
Queue
Stack
HashSet
TreeSet
HashMap
HashTable
TreeMap
這些是比較常用的...演算法部分我應該要好好加強一下
還有作業系統

下午就開始把罪與罰拿出來看...就在剛剛終於看完了

主角從頭到尾都不認為自己犯了罪
甚至到最後還認為自己的罪就是沒有好好的犯罪
但我很羨慕主角
有深愛著他的母親、妹妹、還有索尼雅
有一個很好的朋友拉祖米興
多麼可憐的人阿...這本小說充滿了許多可憐人的人
看了新聞, 伊索比亞有許多兒童在餓肚子...比可憐實在比不完
但對於活在台灣的我, 應該要以什麼樣的態度活下去呢
我ㄧ直在想這個問題...
我討厭虛偽的偽裝

你的穿著不能代表你
你的財富不能代表你
你開的車不能代表你
你的學歷不能代表你
你的外表不能代表你
你的工作不能代表你
你的成就不能代表你

PS:主角叫拉斯科爾尼科夫, 這大概是我少數能夠記得的小說主角名子!

口試日期敲定

今天下午老師忽然來研究室
填一下口試申請的資料
心情有點緊張起來了
由於這一屆老師只有收我一個
我勢必要一個人處理很多事情
還有重點的口試, 就以審慎的態度面對吧!
趕快做論文的修改! 送給口試委員吧!
6月16!

2008年5月27日 星期二

吃到一個苦頭

之前在寫java程式沒有什麼package的概念
public protected這些modifiers, 有寫沒寫差不多
今天在用reflection時才發現
我之前建構子都沒有加"public"..導致跨package時.無法由外部呼叫><

2008年5月26日 星期一

RMI

今天時間都花在弄這個上面
光是跑個範例而已...orz

Remote Method Invoke, 就是呼叫遠端物件(Remote Object)的方法
兩個物件分別在不同JVM中, 我們藉由Interface來呼叫它


Websvr |<-----------
| |
Client | <----> Registry <---> Server
| |
| |
---|---------------->Web svr (Code Base)

昨天我住的地方忽然出現一堆蟲
我記得國中的時候學校也曾經發生這種事情
不明原因, 那種蟲俗稱"大水蛾", 只有在大雨欲來前會出現
房東也覺得很奇怪, 從沒見過這種事情
我掃了一堆蟲的屍體, 房間噴了殺蟲劑, 就準備到研究室過夜
去了公共研究室看了一部電影
黃金三鏢客 ~ imdb 9分的電影, 也是我第一次看西部電影, 過去這種題材蠻多的
the good, the bad, the ugly
看完都1點多了, 看到其他三個人似乎都還精神飽滿,
我總是到了12點左右就睡了, 因為我喜歡早晨的感覺
回到研究室, 發現躺椅壞了, 不是我的錯, 他不知道為什麼就壞了
然後我拿出充氣床墊, 這玩意真不錯, 我很快就睡著了

還蠻好睡的, 起來都8點了
我做了一個夢, 夢到有個人可以改變別人的未來
然後我想到可能是我看了ptrace的文章XD
這玩意有點像是第四度空間的神
他可以任意改變位於第三度空間的程序
藉由ptrace system call. 可以dump出該程序的register
甚至還能修改該程序...
就像神改變我們的命運

2008年5月23日 星期五

今天去吃前田屋

沒錯,我們又去吃燒烤了orz
由於吃太飽的罪惡感讓我跑回研究室繼續改論文
今天打算2點多在睡
Ah-Ah Everyting Will Flow
剩沒多少日子了

2008年5月22日 星期四

最近從圖書館借了一些書

Live Flesh
發條橘子
小氣財神
罪與罰
約翰克里斯多夫

目前看了小氣財神跟發條橘子^^

2008年5月20日 星期二

沒有辦法集中精神

最近腸胃一直不舒服精神沒辦法集中
檢討了一下
1. 蔬菜吃太少
在外面不太容易攝取纖維質, 我想最近可能要跑一下二餐三樓了
據說那邊15年來沒有漲過價, 根據學長說那邊菜擺放的位置從沒變過
但便宜蔬菜又多口味清淡, 白飯不用錢. 我大概40-50就能吃得很飽

2. 吃飯太快
這是我一個很久以來的缺點, 小時候因為迷上電動玩具
常常隨便吃一吃就跑到電視前面, 但腸胃因此弄壞了, 常常在拉肚子
看看現在我吃飯的速度還是太快, 今天還被同學說"哇,吃這麼快"
我本人倒是沒什麼感覺, 怎麼辦呢, 又沒有辦法像寫程式一樣Sleep一下執行緒
前鎮子我發現一個不錯的方法, 就是在食物中加辣, 這樣我就會吃比較慢

3. 吃太飽
常常跟同學去"衝"吃到飽的店, 長久下來腸胃也受不了


昨天老師問我什麼時候要口試
害我爽了一下
我說:希望在畢業典禮前
他說:那麼6月中
喔耶, 雖然高興了一下子, 但我知道接下來還有很多事情要解決
我想這就是人生, 像鬥陣俱樂部的一幕, 一直都在選擇, 直到我斷氣為止

昨天晚上我玩了一下Python這個語言, 很像script腳本的直譯式語言
語法精簡, 支援物件導向, 例外處理, 我想會繼續玩玩看
在過去這種語言不太盛行主要是cpu沒麼快, 但現在cpu資源那麼多
像這種VM語言逐漸多了起來, 它們都被編譯成byte code or whatever
它們提供很多這種語言才能提供的特性像是 reflection

然後今天去demo了JAVA的project3, 這次還蠻順利的 雖然被扣一點分
但後來又加回來^^

2008年5月19日 星期一

昨天做了一個夢

還蠻真實的
我夢到我有非洲的血統
為了認祖歸宗我到非洲去
然後遇到了親人,我看到一個很慈祥的老奶奶在招待我們
看到一些表弟之類的人,當然他們是非洲人所以很黑
然後夢到我到他們的超市去逛
這算我的嗜好之一,我總喜歡到超市找新奇好吃又好玩的東西
我買了一些新奇的泡麵還有餅乾
最後我好像說了類似"沒有你們就沒有我"的話
總之是一個非常玄的夢

2008年5月18日 星期日

unforgiven

今天看了superbad (個人覺得很爛)
還有unforgiven, 這個電影是1991年的, 有些年紀了
電影沒有訴說什麼大道理, 裡面沒有什麼善良邪惡
主角是一個退休的殺手, 為了獎金重出江湖
總而言之主角是壞人, 連女人小孩都殺的壞人
但在妻子感化下他已經從良? 妻子死後他跟小孩相依為命
日子很難過, 他為了獎金重出江湖
自己一直告訴自己說: 要殺的傢伙是壞蛋, 但是誰有奪取別人生命的權利呢?

劇中主角提到: 你殺一個人, 除了奪取他目前的所有東西, 也奪取他即將擁有的

值得省思的一部片

2008年5月17日 星期六

children of men

人類從某個時間開始因為不明原因, 無法生孕
世界開始崩潰, 某些國家藉由嚴峻的法律維護秩序
然而忽然有位難民懷了孕, 這個小孩是人類的希望
這是這部電影的背景

2008年5月14日 星期三

the downfall

剛才看了帝國毀滅(Downfall)這部電影
訴說希特勒在自殺前的日子
這應該是我看過最多人舉槍自盡的影片 ><
但我覺得算是相當不錯的電影
也許歷史根本不是這樣也說不定

我國中高中的時候對歷史還蠻有興趣的
因為我最喜歡聽故事,這也是我覺得上課有趣的地方
也許因為如此我才會那麼喜歡看電影

2008年5月12日 星期一

American History X

翻譯為美國X檔案
但這是一部講種族仇恨的電影
我覺得任何心中有仇恨的人都應該看看
讓我紅了眼框兩次的電影
一次在兄弟兩人將納粹的裝飾拿下那一幕
還有弟弟被殺掉那一幕
對於那些想要挑起仇恨的人...fuck you

沒有敵人,只有朋友

我ㄧ直在想我該做什麼工作

今天忽然想到

"能夠讓我對某件有興趣的事情持續提升興趣的工作"

應該就是我想做的工作了

2008年5月11日 星期日

21 grams

人在死後身體會減輕21克

21克又多重? 幾個10元硬幣? 一隻蜂鳥?

剛剛看了這部電影21 grams
這應該是第二次看了, 第一次應該是大學時看的
大概看了15分鐘我才想起來,但還是決定重頭看一便
之前看過這個導演的其他作品 : 狗娘養的, 火線交錯, 它們都是多線劇情的電影
(mulit-threading?)
不同的人生因為某件事情有所關聯
而這些關聯並不是像"11:14分"這樣,有點像刻意製造出來的偶然
有點像是"命中注定"

主角之一是西恩潘,我覺得他演戲蠻有味道的

2008年5月4日 星期日

今天去爬柴山

跟一個老朋友,一個新朋友一起去
柴山棧道規劃的相當不錯, 一行人一直走到雅座
沿路上有相當多猴子, 而且都不怕生, 據說還會搶人類的食物
我們從頭到尾都在聊天, 從日本旅遊, 電玩遊戲, 工作, 股票, Linux ...總之就是講個不停

中午去大立百貨公司後面巷子的一家吃壽喜燒, 雖然蠻便宜的但還是覺得新竹的好一點
吃完飯我們買了酒衝到英國領事館, 這個地方相當不錯, 靠在觀景台望著大海
聽著街頭藝人表演, 看老鷹近距離飛翔, 大口喝著啤酒, 還有什麼事情比這更快樂?

最後有點醉意的騎機車回家, 算是我第一次酒駕orz, 途中闖了好多紅綠燈
想想沒事,真是萬幸

2008年5月2日 星期五

我媽說

我媽說"你不要再瘦了"
我聽起來很好玩,以前這是不可能的事
我從懂事以來一直胖到大學
是那種讓人家覺得害怕的胖
身高-體重大概60-70這種ps:我183公分
大三才減肥
應該要感謝以前一個好友,他讓我知道健康的重要
減肥後身體機能逐漸回覆
以前的脂肪肝,高血壓也都回復正常,甚至還能夠去捐血
能夠捐血應該是很幸福的事情,因為你擁有健康,而且還可以幫助別人

昨天睡前又把罪與罰拿出來看
這本應該是我最喜愛的小說,從國中看到現在

這兩天一直在碰鍵盤模擬的東東
前幾天成功從Kernel Mode模擬後, 今天寫了個GUI讓它更方便使用
寫程式還蠻快樂的,我這麼想,然後邊寫邊喝完一整瓶葡萄酒


奶奶身體好像有點不好,希望他趕快好起來

2008年5月1日 星期四

little fun

前陣子裝了一款olg
讓我注意到nProtect這個防止作弊的軟體
許多線上遊戲都有用這款軟體
他的其中一項功能就是擋下模擬鍵盤的api
像是SendKey這類win32 api

但它檔的下kernel mode的鍵盤模擬嗎?
對於這點我很有興趣,但並不是真的想寫什麼賣錢的外掛
結論是[真的會擋,但是有方法可以逃過]

hardware software
keyboard (i8048) -> (acpi) -> port driver(i8042) -> kbd driver(kbdclass) -> filter driver

irp, 這玩意我想有點像是軟體中斷, 由ioctl或是read write等送出, driver 再由
call back function處理, port, kdb各有一個buffer用來放置進來的資料
當irp沒有將資料讀完那些資料就會放在buffer中,等待下次再讀

實驗的方法:使用windows driver development kit
對鍵盤驅動程式(kbdclass)新增一個ioctl, 再藉由外部程式add key

使用ioctl, 傳進去一個make code buffer, 進到kernel mode
(這時已經把那些buffer copy到 kernel stack),使用syscall
然後將這些buffer包裝成keyboard data的struct, notify os

nProtect會擋下送出ioctl的process, 但是他在process執行一段時間後才會偵測到
如果我的process每次只送出少數的key呢 ;) 這樣就擋不下了

2008年4月30日 星期三

今天上課

我一直好想睡覺
好想睡
這幾天到了晚上7-8點總是很想睡覺
好像每年到了這個時期都會這樣?
去年也是, 我早早就回家睡了

今天主要在講Java Bean, 老師說這玩意非常的重要
但怎麼看,不就是Reflection的應用嗎?
另外就是大家Follow一個Pattern來Design

像是
private Color background;
public void setBackground(Color c);
public Color getBackground();
用這樣的pattern Design出來的軟體,在藉由reflection取得attribure
就可以plug-in方式加入

Java的一些IDE, NetBeans, Eclipse 都可以利用Beans增加一些元件...

作業要我們寫一個whiteboard 可以用Bean畫圖, 定義一個介面
然後要可以把屬性利用server boradcast給其他client,
恩 先把reflection弄清楚在開始寫吧

2008年4月28日 星期一

nice web

早上在trace linux kernel(跟著Understanding linux kernel這本書的腳步:p)
無意中發現這個網站
http://hira.main.jp/wiki/pukiwiki.php?%A4%E8%A4%A6%A4%B3%A4%BD
Su Go iiiii
趕快加到我的最愛

今天喝了兩瓶啤酒

好像喜歡上喝啤酒
flesh drink
這就是人生

2008年4月27日 星期日

懺悔

以前
年少不經事, 加上住在鄉下地方, 可能大家比較沒水準
髒話總是掛在嘴邊(可能覺得這樣很炫), 我就是在這樣的環境長大,
一直到高中到市區, 比較有改善

但有時候, 髒話還是會不經大腦的從我嘴巴跑出來, 唉
我並不是真的想說髒話, 尤其是汙辱別人母親的話
現在我覺得母親真的很偉大, 無論是自己的母親或別人的母親都應該要尊敬
母親節快到了, 希望您健康快樂, 我的母親

2008年4月26日 星期六

昨天在吃火鍋

聊到各老師的指導方式
我忽然冒出一句話:我們老師都是無為而治
大家覺得很好笑,但卻是事實
基本上我們老師不太管你,很少主動關心學生
就連論文方向題目都是學生自己找^^
這種作法有好有壞,我有更多的時間唸我想唸的書,看我喜歡的電影
至少我生活上也覺得相當充實
但我還是覺得時間不夠用,太多想做的事情了
現在主要忙著論文撰寫,但禮拜二Java又要出project
大概要我放開所有東西忙個兩三天

不要浪費時間喔~一個大學時候的學長這樣告訴我

2008年4月23日 星期三

今天看到的一句話

[若真的有心,不必靠別人一樣可以找到辦法.
如果不用心,我想說了也是白說.]

深深覺得很有道理
記得國中老師也一直強調做事情要用心
現在想想真的很有道理

但我承認在某些事情上我顯得不夠用心

昨天上課

介紹了Reflection, JNI, JIT

Reflection是一種相當重要的機制,有點像是DLL
能夠在動態取得類別物件的資訊並產生新的物件
有點抽象,以Java而言其參考並不是像C++這樣指向記憶體
為了能夠作garbage collection他至少跳了兩次
先指向一個固定size的欄位,這個欄位放在一個表格
這個表格由一個GC執行緒管理, 這個欄位至少有指向兩個東西
一個是這個物件的資料(code seg, data seg),另一個欄位指向一個特殊的class
"Class",這個class(注意大小寫),儲存了關於這個class的Method, Filed, Superclass, Interface訊息及Static成員資料,相同類別的物件都指向這個Class

使用Class.forName(String)這個方法可以將class檔動態載入,取得其資訊
在利用Class.newInstance方法產生物件,預設是沒有建構參數,有的話要多一些手續
Reflection加上介面抽象化很容易便可以設計一個相當flexible的系統
像是Applet, RMI, IDL, Beans...
Simple Factory Design Pattern + Reflection 更能發揮其power

JNI則是C/C++與Java程式溝通的方法
透過JVM提供的一些方式呼叫/被呼叫Java函式
沒什麼道理,就是這樣用而已,知道有這個東西就好,非必要不要碰

JIT(Just in Time Compile)是一個相當重要的概念
JVM將class檔load到資料結構後,JVM其實就是用C/C++實作的
開始執行時將一部分bytecode翻譯成native code,這個地方牽涉到許多最佳化的問題
一開始是one by one mapping, 從byecode to Assembly,所花的時間是線性的
但是當一段code被執行的次數增多(JVM通常會去profileing)
會多花一些時間進行Compiler這段code以減少cpu cycle

2008年4月21日 星期一

meeting

剛才meeting
可以感覺到老師的火氣
然而我學到了一點東西

別人在指責你時,盡量不要回話(尤其是長輩)
讓他講完,然後先承認自己的錯(不管那是不是真的錯)
這樣才能夠繼續談下去

溝通實在是非常的重要
要好好學學,尤其像我這種死要面子、死鴨子嘴硬的人

2008年4月20日 星期日

why

了解為什麼是相當重要的
或是說目的
知其然而不知其所以然
一定要避免發生這種情況

2008年4月19日 星期六

頹廢的一天

睡了一整個下午
喝了兩瓶啤酒
開了三包餅乾
看了兩部電影

2008年4月16日 星期三

z-words movie

http://imdb.com/title/tt0365748/
今天看了這部直得讚賞的殭屍片
之前看了這個導演的Hot Fuzz,我很喜歡他的風格
非常的Funny, 這難道就是英式幽默? 嘿 我好喜歡英國腔

其中有一段與僵屍格鬥時,點唱機撥出了Queen的Don't Stop Me Now
主角說Kill the Queen指要關掉這個點唱機
所有人都愣住(我猜以為他要人家放Killer Queen這首XD)

有感人的地方,又充滿歡樂的元素
至於為什麼人會變成Zombie, who care?(電影從頭到尾都沒有提到 哈哈)

2008年4月15日 星期二

今天下午覺得很悶
事情都沒辦法做,好想去海邊,我這樣幻想著
走到窗邊看著藍天,心情有好一點

回來盯著論文發呆,覺得怎麼寫都不對
然後看了一部電影 Fargo, 講述一件可笑的綁架謀殺事件
一個傢伙策劃一個假綁架,但是事情總是沒那麼順利
我覺得,盡量不要鋌而走險比較好,雖然偶而承擔一些風險是必要的

11點半吃午餐,5點吃晚餐
這就是學生生活(或說是研究是生活?)

2008年4月14日 星期一

beatles

最近又把beatles的歌拿出來聽
不虧是經典中的經典
我特別喜歡從Help到Sgt. Pepper's Lonely Hearts Club Band這段時期的Beatles
應該是他們之間隔閡最少,最專注於創作的時期
但早期,後期還是有些不錯的
把一首40幾年的歌拿出來聽,居然百聽不厭,可見他們多麼厲害
Beatles, the best band ever !

今天把Project2修改一下,看了一下Java source code
然後做了個Applet版
http://140.113.134.106

2008年4月13日 星期日

花了三天的時間在寫一個作業
但比NP的poject2好多了,但還是很累
吳毅成老師的課有個慣例
會有四個project+一次考試
每個project都會用到前個project的東西,這點很機車
可能p1要你寫server, p2就要你寫client(可能又包含另一個server)
總之就是累,但作為學生生活的最後一門課,倒是挺適合的

再兩個多月就告別我的學生生活了,這兩年在交大過得蠻快樂的
稍微彌補了平淡的大學生活

2008年4月11日 星期五

今天在二餐

買飲料的時候,猛虎叫了一聲
我回頭一看,一個老太婆跌倒了(地上常常都很油)
這時猛虎馬上就說"過去扶一下吧"
二話不說我跟猛虎過去扶起那個老太婆,猛虎問他有沒有怎樣

想起我有一個叫阿騎的同學,遇到老人他都會禮讓,而且扶他們過馬路
對這種人我總是很敬佩,對別人親切的人(尤其是弱勢),值得作朋友

唉,說到這個我就要反省了
我對身邊人發生什麼事情都不是很在意
總是想說:那是別人的事情,不關我的事
應該要多關心別人才是

2008年4月9日 星期三

昨天上課

發表了 HW2 & 3
真夠勁,打算用禮拜六日來寫

講到了Class檔的format
如何把java所有資訊塞到class檔.const data, code segement這些東西
Java在執行過程中擁有完整的資訊,所以可以實現Reflection機制
及一些安全性的東西(validation)
JVM在class還沒開始執行前會檢查檔案是否被修改過
由於register是一個stack,它會檢查這個stack在每個instruction的狀態

這節課讓我對JVM的design有初步認識

把一個class dump出來看看,長這樣
這是一種二進位檔的format, 有點像ELF/PE這類的東西
有標頭檔, Data, code segment, 給JVM吃的
其中Code Segment就沒有解碼了



u4 magic; cafebabe
u2 minor_version; 0000
u2 major_version; 0032
u2 constant_pool_count; 0039 (57)

constant_pool:
01: 10: Methodref(class: 15, 29)
02: 9: Field(class: 11, 30)
03: 9: Field(class: 31, 32)
04: 7: Class(33)
05: 10: Methodref(class: 4, 29)
06: 8: String(34)
07: 10: Methodref(class: 4, 35)
08: 10: Methodref(class: 4, 36)
09: 10: Methodref(class: 4, 37)
10: 10: Methodref(class: 38, 39)
11: 7: Class(40)
12: 10: Methodref(class: 11, 41)
13: 10: Methodref(class: 11, 42)
14: 8: String(43)
15: 7: Class(44)
16: 7: Class(45)
17: 1: UTF8(4,"data")
18: 1: UTF8(1,"I")
19: 1: UTF8(6,"")
20: 1: UTF8(4,"(I)V")
21: 1: UTF8(4,"Code")
22: 1: UTF8(15,"LineNumberTable")
23: 1: UTF8(3,"run")
24: 1: UTF8(3,"()V")
25: 1: UTF8(4,"main")
26: 1: UTF8(22,"([Ljava/lang/String;)V")
27: 1: UTF8(10,"SourceFile")
28: 1: UTF8(13,"MyThread.java")
29: 12: NameAndType(19,24)
30: 12: NameAndType(17,18)
31: 7: Class(46)
32: 12: NameAndType(47,48)
33: 1: UTF8(23,"java/lang/String/Builder")
34: 1: UTF8(4,"Run ")
35: 12: NameAndType(49,50)
36: 12: NameAndType(49,51)
37: 12: NameAndType(52,53)
38: 7: Class(54)
39: 12: NameAndType(55,56)
40: 1: UTF8(8,"MyThread")
41: 12: NameAndType(19,20)
42: 12: NameAndType(23,24)
43: 1: UTF8(9,"JVM test!")
44: 1: UTF8(16,"java/lang/Object")
45: 1: UTF8(18,"java/lang/Runnable")
46: 1: UTF8(16,"java/lang/System")
47: 1: UTF8(3,"out")
48: 1: UTF8(21,"Ljava/io/PrintStream;")
49: 1: UTF8(6,"append")
50: 1: UTF8(45,"(Ljava/lang/String;)Ljava/lang/StringBuilder;")
51: 1: UTF8(28,"(I)Ljava/lang/StringBuilder;")
52: 1: UTF8(8,"toString")
53: 1: UTF8(20,"()Ljava/lang/String;")
54: 1: UTF8(19,"java/io/PrintStream")
55: 1: UTF8(7,"println")
56: 1: UTF8(21,"(Ljava/lang/String;)V")

u2 access_flags; 0020
u2 this_class; 000b
u2 super_class; 000f
u2 interfaces_count; 0001
u2 interfaces[interfaces_count]; 0010
u2 fields_count; 0001
field_info fields[fields_count];

filelds[1] {
u2 access_flages; 0000
u2 name_index; 0011
u2 descriptor_index; 0012
u2 attributes_count; 0000
attribute_info attributes;
}

u2 methods_count; 0003

Method[1] {
u2 access_flags; 0000
u2 name_index; 0013
u2 descriptor_index; 0014
u2 attributes_count; 0001
u2 attribute_name_index; 0015
u4 attribute_length; 0000 002a (42)
u1 info[attribute_length];
00 02 00 02 00 00 00 0a 2a b7 00 01 2a 1b b5 00 02 b1 00 00 00 01 00 16 00 00 00 0e 00 03 00 00 00 07 00 04 00 08 00 09 00 09
}



Method[2] {
u2 access_flags; 0001
u2 name_index; 0017
u2 descriptor_index; 0018
u2 attributes_count; 0001
u2 attribute_name_index; 0015
u4 attribute_length; 0000 0039 (57)
u1 info[attribute_length];
00 03 00 01 00 00 00 1d b2 00 03 bb 00 04 59 b7 00 05 12 06 b6 00 07 2a b4 00 02 b6 00 08 b6 00 09 b6 00 0a b1 00 00 00 01 00 16 00 00 00 0a 00 02 00 00 00 0b 00 1c 00 0c
}

Methid[3] {
u2 access_flags; 0009
u2 name_index; 0019
u2 descriptor_index; 001a
u2 attributes_count; 0001
u2 attribute_name_index; 0015
u4 attribute_length; 0000 003b (59)
u1 info[attribute_length];
00 03 00 02 00 00 00 17 bb 00 0b 59 10 0a b7 00 0c 4c 2b b6 00 0d b2 00 03 12 0e b6 00 0a b1 00 00 00 01 00 16 00 00 00 12 00 04 00 00 00 0e 00 0a 00 0f 00 0e 00 10 00 16 00 11
}

Attributes count: 0001
Attributes:

SourceFile_attribute {
u2 attribute_name_index; 001b
u4 attribute_length; 0000 0002
u2 sourcefile_index; 001c
}

2008年4月7日 星期一

善與惡

今天來學校的路上剛好想到
一個人的善跟惡根本沒有辦法判斷
就像愛跟恨一樣,它們是同一種感情
我不是好人,也不是壞人
有時候會做好事,也做了不少壞事
所以評論一個人是好人壞人根本沒什麼意義

罪與罰那個主角,他基於一個善的想法
去做了一件惡的事情,最後接受法律制裁

也有看過一則新聞,有個在醫院打工的小夥子
強姦了一個準備送到太平間的女孩
但那個女的卻因此活過來,似乎是陷入某種假死的狀態
這個人基於一個惡的行為,卻導致善的結果,但他還是必須接受法律制裁
那個女孩家屬相當感謝那個小夥子還幫他打官司

------------------------------------

剛剛看了"Once"這部電影
充滿很多音樂元素的
關於愛情的處理也相當不錯
在台灣好像還沒上映
電影中捷克女孩好美...
我喜歡這部電影!

-------------

因為感冒一個多禮拜沒有跑步
今天又開始跑
...
體力變差了
..
明天早上去游泳!

2008年4月6日 星期日

Decorator

Decorator 用來將功能擴充
先定義一個介面,Decorator具有該介面,且將之擴充功能
Java的IO用到很多這個Pattern


class Base {
public:
virtual void Action(){}
};

class Decorator : public Base {
private:
Base* base;
public:
Decorator(){};

Decorator(Base* base)
{
this->base = base;
}

virtual void Action()
{
this->base->Action();
this->Add_on();
}

virtual void Add_on(){}
};

class BaseClass : public Base {
public:
virtual void Action()
{
cout << "Action:\n";
}
};

class GoodDecorator : public Decorator {
public:
GoodDecorator(Base* base) : Decorator(base)
{}

virtual void Add_on()
{
cout << "Good\n";
}
};

class BadDecorator : public Decorator {
public:
BadDecorator(Base *base) : Decorator(base)
{}

virtual void Add_on()
{
cout << "Bad\n";
}
};


int main()
{
BaseClass *bs = new BaseClass();
GoodDecorator *good = new GoodDecorator(bs);
BadDecorator *bad = new BadDecorator(bs);

bs->Action();
good->Action();
bad->Action();

return 0;
}

2008年4月5日 星期六

Composite

Composite
很難解釋
簡單的說應該像是樹狀結構
我們定義一個樹狀結構節點的介面
每個節點又包含其他節點
這些實做這個介面的物件就能夠用組合起來(如樹狀結構般)
Java SWING的component就是用這個方法設計的


#include
#include
using namespace std;

class component {
private:
list children;
public:

component() {

}

virtual void Action()
{}

void Trace()
{
this->Action();
list::iterator i;
for( i = children.begin(); i != children.end(); ++i)
{
(*i)->Trace();
}
}

void Add(component* child) {
children.push_back(child);
}

void Remove(component* child) {
children.remove(child);
}

};

class NodeA : public component {
public:
virtual void Action()
{cout << "NodeA\n";}
};

class NodeB : public component {
public:
virtual void Action()
{cout << "NodeB\n";}
};

class NodeC : public component {
public:
virtual void Action()
{cout << "NodeC\n";}
};

int main()
{
NodeA a;
NodeB b1;
NodeB b2;
NodeC c1;
NodeC c2;
NodeC c3;

a.Add(&b1);
a.Add(&b2);
b1.Add(&c1);
b1.Add(&c2);
b2.Add(&c3);

a.Trace();

return 0;
}

2008年4月4日 星期五

Chain of Responsibility

Chain of Responsibility
目的在將一個訊息傳遞下去
讓每個物件都判斷是否有該處理的事情
就像老闆交代一件事情下來,所有員工都問問看,有沒有人會
java awt就是使用這個pattern
有點像linked-list


#define ART 0
#define ENGINEERING 1
#define SCIENCE 2
#define LABOR 3
#define POLITICS 4

class Request {
public:
int request_type;
Request(){}
Request(int type)
{
request_type = type;
}
};

class Handler {
public:
int handler_type;
Handler* next_handler;

Handler()
{
this->next_handler = NULL;
}

void try_handle(Request* request) {
cout << "review request...\n";
if( request->request_type == this->handler_type ) {
this->handle(request);
}
if( this->next_handler != NULL ) {
this->next_handler->try_handle(request);
}
}

void set_next_handler(Handler* next_handler)
{
this->next_handler = next_handler;
}

virtual void handle(Request* request) {

}

};

class DirtyRequest : public Request {
public:
DirtyRequest() : Request(POLITICS) // 這邊算是trick, invoke superclass的constructor必須在code block外面
{}
};

class Engineer : public Handler {
public:
Engineer()
{
this->handler_type = ENGINEERING;
}

virtual void handle(Request* request) {
cout << "Engineer Soloved\n";
}

};

class Artist : public Handler {
public:
Artist()
{
this->handler_type = ART;
}

virtual void handle(Request* request) {
cout << "Artist Soloved\n";
}
};

class Politican : public Handler {
public:
Politican()
{
this->handler_type = POLITICS;
}

virtual void handle(Request* request) {
cout << "Politican Soloved\n";
}
};

int main()
{
Engineer *eng = new Engineer();
Artist *art = new Artist();
art->set_next_handler(eng);
Politican *pol = new Politican();
pol->set_next_handler(art);
pol->try_handle( new DirtyRequest() );

return 0;
}

Builder

Builder Design Pattern
用在Java的Thrad其Runnable介面即是利用Builder Design
寫Java其實你已經跟著他的步驟在使用Pattern
只是渾然不覺
使用別人寫的系統時不如花點時間思考一下
為什麼別人要這樣設計?


class Ibuilder {
public:
virtual void build(){}
};

class good_builder : public Ibuilder {
public:
virtual void build()
{
cout << "good building\n";
}
};

class bad_builder : public Ibuilder {
public:
virtual void build()
{
cout << "bad building\n";
}
};

class who_use_builder : public Ibuilder {
private:
Ibuilder *builder;
public:
who_use_builder(Ibuilder *builder)
{
this->builder = builder;
}

who_use_builder()
{
this->builder = this;
}

virtual void build()
{

}

void start_build()
{
this->builder->build();
}
};

class I_use_builder : public who_use_builder {
public:
virtual void build()
{
cout << "fair building\n";
}
};

int main()
{
// like extends Thread
I_use_builder* me = new I_use_builder();
me->start_build();
// like implements Runnable interface
who_use_builder* w1 = new who_use_builder(new good_builder);
w1->start_build();

who_use_builder* w2 = new who_use_builder(new bad_builder);
w2->start_build();

return 0;
}

Abstract Factory

Abstract Factory
跟Simple Factory不同的是
進而將Factory抽象化,實現不同的工廠
必要時工廠能夠快速的抽換
例如在版本控制或是跨平台

class Iproduct_Food {
public:
virtual void eat(){}
};

class Iproduct_Game {
public:
virtual void play(){}
};

class abstract_factory {
public:
virtual Iproduct_Food* create_Food(){}
virtual Iproduct_Game* create_Game(){}
};

class good_food : public Iproduct_Food {
public:
virtual void eat()
{
cout << "eating good food\n";
}
};

class good_game : public Iproduct_Game {
public:
virtual void play()
{
cout << "playing good game\n";
}
};

class good_factory : public abstract_factory {
public:
virtual Iproduct_Food* create_Food()
{
return new good_food();
}

virtual Iproduct_Game* create_Game()
{
return new good_game();
}
};

class bad_food : public Iproduct_Food {
public:
virtual void eat()
{
cout << "eating bad food\n";
}
};

class bad_game : public Iproduct_Game {
public:
virtual void play()
{
cout << "playing bad game\n";
}
};

class bad_factory : public abstract_factory {
public:
virtual Iproduct_Food* create_Food()
{
return new bad_food();
}

virtual Iproduct_Game* create_Game()
{
return new bad_game();
}

};


int main()
{
abstract_factory* f1 = new good_factory();
abstract_factory* f2 = new bad_factory();

f1->create_Food()->eat();
f1->create_Game()->play();
f2->create_Food()->eat();
f2->create_Game()->play();

return 0;
}

2008年4月3日 星期四

Simple Factory

目的在對一個產品進行抽象化,將其介面獨立出來
建立產品去實現這個介面
再由一個工廠產生,實作此介面的物件

C++沒有Reflection,如果要用的話應該要使用一些library

class Imust_imp {
public :
virtual void do_something(){};
};

class Imp1 : public Imust_imp {
public:
virtual void do_something()
{
cout << "I am singing\n";
}
};

class Imp2 : public Imust_imp {
public:
virtual void do_something()
{
cout << "I am playing\n";
}
};

class Simple_factory {
public:
Imust_imp* create_by_name(char* class_name)
{
Imust_imp* ret;
if( strcmp(class_name, "Imp1") == 0 ) {
ret = new Imp1();
return ret;
}
if( strcmp(class_name, "Imp2") == 0 ) {
ret = new Imp2();
return ret;
}
return 0;
}
};



int main()
{
Simple_factory *fac = new Simple_factory();

Imust_imp* a = fac->create_by_name("Imp1");
Imust_imp* b = fac->create_by_name("Imp2");
a->do_something();
b->do_something();

return 0;
}

2008年4月2日 星期三

昨天上課

講到了Awt跟Swing

一開始awt的design方式是用abstract factory這個design patten
所有的元件都是用作業系統的,一個按鈕在MAC跟在X-window顯示出來會不一樣
由於這樣做,牽涉到許多context switch會造成許多overhead(因為交給OS的componet處理)

作什麼事情,當你需要快時,就先用dirty solution,但是記著這邊有問題,以後有餘力要回來改
(有點像考試前先死記,之後再融會貫通XD)
當初發展JDK 1.0時也是抱持著這樣的想法,等Java紅了之後,他們派人來處理這塊
於是誕生了Swing

Swing的元件彈性很大,因為他們之所以看起來一樣是他們都是"畫"出來的
所以在MAC與Windows看起來都一樣,不再使用OS的widget(除了JFrame以外)
但Swing實際上也存在著一些問題需要解決,例如:因為是軟體畫的,無法有效運用顯示卡

然後提到了
paint & repaint & update & double buffering & GUI thread & M-V-C & applet & jar

當畫面需要更新: repaint -> update()
當視窗移動或改變: paint

如果你沒有override update時,java會先把你的影像清掉然候等待時機再paint
(考慮 GUI thread的安全) 這時會閃爍
要避免可以override update()方法 然後call paint( 相反也可以 )
或是用double buffering先畫在一個image再更新到Graphic

介紹了一下Model View Control的概念
例如JTree 這個swing componet將其樹狀資料(Model)及控制與外觀分開

還有applet與jar
把用到的class包成jar會比一個個去load快(這跟網路連線有關, TTL)
jar其實是zip , 有點像tar方式包裝
複習一下
tar -zxvf xx.tar.gz des
tar -zcvf xx.tar.gz des
jar很類似

2008年3月30日 星期日

Pedro Almodóvar

最近連續看了幾部他導的電影
之前看"我的母親"(all about my mother)就深深被他的風格吸引
然後看了"壞教慾"(bad education), "悄悄告訴她"(talk to her), "活色生香"(live flesh)
今天看了"玩美女人"( volver)

"想繼續找他早期的電影來看",心中有這種想法

看電影常常會改變我的一些想法
也許不會更成熟,但想法確實在改變

我也看了現代啟示錄 1979的電影
一部講越戰,在電影中到處都在批評美國政府
世界上充滿一堆偽善的人,他們做盡壞事,然後又想要自己看起來像個好人
在電影中美國政府就是這樣
但其實我看這部電影是想看馬龍白蘭度
可惜他的戲份不是很多哈哈

2008年3月28日 星期五

hot fuzz

非常好玩的一部電影
裡頭很多暴力場景,但都會讓人忍不住大笑
居然能夠把槍戰暴力場景拍得如此 funny

做了一個很奇怪的夢 血腥 但是不恐怖, 可能是看了hot fuzz的關係
我看到一多傘兵從空中跳下來
但有些人的傘沒開他們就直接摔成肉醬
然後有一批人他們完全沒有帶降落傘就往下跳
仔細一看穿著綠色衣服好像是郵差
聽到他們的叫聲~~啊~~趴 變成肉醬
我抬起頭看到他們好像往我頭上飛過來
我趕緊閃開 然後就醒了

感冒了

果然不出所料
感冒了
早上起來覺得頭會暈
身體有點冷
覺得很懶散身體好像沒有正確連起來一樣

今天

早上起來喉嚨就怪怪的
應該是快感冒了
拼命的拿鹽水漱口
希望明天早上爬起來會好點

今天我看了"悄悄告訴她" talk to her
這部電影,我非常喜歡
除了有一堆臉紅心跳的畫面外,我很喜歡他的劇情

到底什麼是愛?如果不清楚,可以看看這部電影

2008年3月26日 星期三

手機掛了

我把充電器放在家
這樣終於可以享受一個多月不用帶手機在身上的樂趣了
昨天家人不死心把充電器寄過來
但上天保佑,他們寄錯了
總之沒有手機在身邊的我是快樂的

2008年3月24日 星期一

進度

今天論文進度2頁
然後寫了一個chat client的plugin
我在家用vb 2005寫的給它port到2003
.net framework在1.5與2.0有一些不同
2.0似乎包得更好了比1.5簡潔許多
然後create出來的thread不能access視窗thread的資料(1.5卻可以)
唉 管它的

今天看了贖罪這部電影
聽說還不錯,但沒有給我多大的感動

2008年3月23日 星期日

back again

這次回家看了三部電影

鐵面特警隊 <- 羅素克洛真男人, 讚
也是三部裡面最讚賞的電影
我很喜歡看這種看好人壞人很難分清楚的劇情

記憶裂縫(paycheck) <- sucks 大概是馬蓋先電影版,一開始鋪陳的還不錯
但中間後面就遜掉了,可惜了,動作片,我覺得我愈來愈不喜歡這種電影
子彈好像無限發,但又打不中主角,難道這就是好萊屋式的電影?

時空線索 <- 這部還不錯,跟記憶裂縫剛好相反,有一台可以看到過去的機器
但那個過去是分支的過去,也就是你可以改變那個過去,但不能改變目前
跟七龍珠特南克斯回去救悟空的劇情很像XD

坐車回新竹的路上把hw client的部分完成了
因為事先用vb.net寫過ㄧ個gui client
現在用java寫 大概一個小時多就解決了
然後呢 拿出nb看電影
我看了壞教慾
講男同性戀、戀童癖的電影
很多歐洲電影都比較敢描述一些特殊題材的電影
我很喜歡以前看的一部叫做"我的母親"的義大利電影( 冏 後來我去查 發現是同一個導演 )
風格很像
離題了,這部壞教慾倒沒有什麼什麼很露骨的部分
這位導演實在是很厲害
但是看完總是被一股強大的感情淹沒
會想哭,但哭不出來那種感覺

其中有一幕讓我印象很深刻
神父跟小男孩在樹林下,神父彈著吉他,小男孩唱著Moon River
我好像聽到天使的聲音

喝酒

前幾天叔叔搬了一打的葡萄酒來
我每天都喝不少
但最忌在空腹喝,會很難過
我很喜歡喝酒但事實上分辨不出什麼好酒壞酒
記得去日本時好爐請我喝過日本清酒
非常好入口,很滑順的通過喉嚨, 應該是我目前喝過最好喝的酒
有時後會買一些40%的洋酒自己隨便調一下(大多是加汽水)
我想我應該還沒有喝醉失態過
喝酒真的可以壯膽阿(目前我桌上就有一杯葡萄酒)
讓我想起教父一幕, 克里沙曼在教麥克做菜,
在一鍋子的蕃茄肉醬裡面, "涮"的加入一些葡萄酒
下次來試試看酒的料理吧,

2008年3月20日 星期四

今天想到的一句話

對抗無知的武器 - 勇氣

其實我們對事實的本身都不是很清楚,但我們還是可以活下去,靠的就是勇氣

盜版軟體? 先用了再說,靠的是勇氣

菜不乾淨? 先吃了再說,靠的是勇氣

話說,花了一天把程式作業寫出來了,一個簡單的chat server

之前修網路程式設計就寫過類似的東西,之前是用C,這次用Java
想想看枝前我花了一個多禮拜,果然功力有小小的提升了

Java藏了太多東西了,有時候反而會掉入他的陷阱,似是而非
最簡單例子就是 if( string == "a") 這是在比memory address 而不是字串內容
String這東西根本不是原生的資料結構,他是類別,在Java類別變數可以想像成指標
還有,我把client socket關掉了,居然readLine()還是會讀到(null)而不是丟出IOException

thread programming真的不是簡單的事情
讓他們"自然死"有幾種方法,設一個變數一直檢查
或是用InterruptedException(但是必須要在sleep或wait狀態下)
或是用IOException(在做IO時)
然後catch後做安葬的動作

2008年3月17日 星期一

ohoh

剛剛聽了艾蜜莉異想世界的原聲碟
真令我驚訝 好好聽
有點後現代搖滾的感覺但柔和許多
又感情充沛
我看到一個景象
有個小孩遊樂園去玩,空無一人的遊樂園

2008年3月16日 星期日

今天

看了追風箏的孩子
值得推薦的好片

2008年3月13日 星期四

寫文章

我不太會寫文章
寫論文對我來說還蠻痛苦的
我不寫我不清楚或是來源不明的東西

2008年3月12日 星期三

潛水鐘與蝴蝶

剛剛看完這部片,很感動
一個忽然腦中風的人,在生命的最後一個階段,用眼皮紀錄自己的人生
我想會不會有一天我也會這樣?
如果我變成這樣該怎麼辦?

2008年3月11日 星期二

今天上課

之前上網路程式設計老師有說: multi thread programming 很困難
今天上課又提到一次,multi thread 我還沒有真正寫過
在linux 下用fork產生一個新的process而不用thread
process跟 thread最大差別就在 process有自己的address space, thread沒有
雖說fork但也沒有完全copy一份memory
有一些機制例如: copy on write之類的再需要動到資料時再copy
process則利用一些IPC的機制如pipe或是shared memory溝通

今天另外一個主題是Exception handling Java在這邊處理的還不錯
code 看起來更清楚了
在C常要用
#define ERRORA -1
#define ERRORB -2
code = foo();
if( code == ERROE )
{
... 做一些例外處理
}
code = bar();
if( coid == ERROEB)
{
.., 做例外處理
}

Java 則是

try
{
foo();
bar();
} catch( ERRORA) {
... 例外處理
} catch(ERRORB) {
... 例外處理
} finally {
... 只要有catch exception都會執行, 用來free一些資源
}

寫Thread最重要的就是資料要分開 分清楚!
小心不要Double Lock

Dream

昨天做了一個很奇怪的夢
我爸帶我去買玩具
夢裡的我不是小孩子
但我還是在那邊選,好像選食材一樣拿起來看看又放下
然後我看到一組玩具,那是我小時候買過的機器人組合
我小時後確實花了不少錢在買玩具orz


今天要去跟老師meeting,該去學校了

剛meeting完了,我想趕快論文弄一弄畢業吧

2008年3月9日 星期日

組合

今天看到這篇
http://www.codeproject.com/KB/recipes/combinations_cpp_2.aspx
如何寫出各種組合的演算法
我可想不出來

常常,我會感到不安
我好像很遜,我到底可以作些什麼事情
感覺自己就算消失了也沒差

Note

前幾天玩了那個手套,他用了一些Information Hidden的方法
覺得蠻有趣的 想要自己來試試看 順便練習一下C

[ hidden.h]
#ifndef HIDDEN_H
#define HIDDEN_H 1

// 在這邊藏起來了,用void*
typedef struct Hidden {
void* data;
} Hidden;

Hidden* Hidden_New();
void Hidden_Show(Hidden*);

#endif

[hidden.c]
#include
#include
#include "hidden.h"


typedef struct dataContent {
int ID;
char* name;
} dataContent;

typedef dataContent* ptrData;

Hidden* Hidden_New()
{
ptrData p = (ptrData) malloc(sizeof(dataContent));
p->ID = 577;
p->name = "Pingting";
Hidden* ret = (Hidden*) malloc(sizeof(Hidden));
ret->data = (void*)p;
return ret;
}

void Hidden_Show(Hidden* target)
{
ptrData p = (ptrData)target->data;
printf(" %d, %s \n", p->ID, p->name);
}

[test.c]
#include
#include "hidden.h"

int main(int argc, char** args, char** envp)
{
Hidden* p = Hidden_New();
Hidden_Show(p);
return 0;
}

gcc -c hidden.c
gcc -c test.c
gcc -o test test.o hidden.o

#test
577, Pingting

2008年3月8日 星期六

funny

To follow the path:
look to the master,
follow the master,
walk with the master,
see through the master,
become the master.

2008年3月7日 星期五

昨天吃太多,今天也吃太多,肚子不太舒服

今天我把玩了一下之前老師買的裝有Sensor的手套
他是USB介面的,直接插上XP後就會出現"找到USB人性化裝置",支援Plugin & Play
然後利用廠商提供的Win32 DLL (包含一個.DLL 跟 .lib, .h)
這個DLL有點像是filter的東西並不是真的驅動程式,他只是一段程式
去跟Windows的驅動程式溝通,Open, Close, Read, Write,IOCTL 這些東西都看不到
而是直接提供比較高級的API,如果是Memory Mapped IO
應該是去讀取某段記憶體位址 (非虛擬記憶體)
或是Port IO就去開啟另一個特殊的位址
但應該沒有分配到IRQ, API只提供主動去讀取值
他範例的作法是透過一個Timer去取得手套Sensor的值

手套上總共有5個Sensor,測定每個Sensor的張力,表現手指的狀態
手套有預設幾組手勢,例如比Yeah就是3
我改了一下他的範例讓程式可以在某些手勢時發出聲音 ( 後來發現比中指的辨識率最高 哈哈 )

關於這個DLL, 應該是MicroSoft C++ Compiler產生的
我嘗試用Gnu C++ Compiler去include他會出現Signature出問題的Error(我試過改calling conversion還是不行)
g++ 跟 cl 產生的DLL果然是不能互通的? 也許有方法但我沒google到(但意外google到把Dll轉成static lib的東西)
其實DLL就是一段編譯好的程式,利用.h跟(.a / .lib)在你Inlude的程式裡面留個空間
當你執行(或使用)的時候在動態載入( 藉由Loader的幫忙,幫你把DLL mapped到你的程式,包含Data & Code segement )

今天晚上用Visual C++ Express 2008嘗試玩用一下
第一次對MS這麼厭惡
之前寫VB.net都沒什麼感覺,用得很爽
但為了.Net Framework, C++多出了很多莫名奇妙的東西, ref Class? &Class::Function ???
弄得我有點暈頭轉向,把以前寫的Code要port進來,我看有得改
他同時支援標準的C++跟他自己發明的一些玩意(copy Java copy 很大),.net Framework可以用很多種語言C#, VB, C++, ...
不想去搞那些東西,看他.net版本跳那麼快,還是把基礎打好要緊
.Net的程式跟Java比較大的差別是.Net編譯出來是Assembly Code, Java是ByteCode
.Net會因為這樣所以效能好一點嗎? 但也比較不好Port到其他平台吧?

對了 今天慢跑的時候 忽然想到怎麼寫論文的誌謝 哈哈


以上都是我在自言自語 沒有整理 想到什麼就寫什麼

2008年3月5日 星期三

王牌冤家

這部電影我還沒看完,大概看了一半,剩下明天解決吧
有點是村上春樹的"遇見100%的女孩"的感覺的電影
雖然是金凱瑞演的,但不算是娛樂片,目前為止我還蠻喜歡的

3/6
今天把這部片補完了

logical and physical

昨天聽到這種兩用法
所有的事情都可以皆由logical簡化再簡化
不要去管physical的細節
有些事情真的這樣處理比較好呢

2008年3月4日 星期二

今天上課

坐我前面那個人一直在打電動
讓我有點分心XD

今天老師介紹一下Java基本的OO部分
講到ADT其實就是Interface, Class其實是Implement後的東西
這個概念挺不錯的
還有一個東西 "volatile"這個modifer
之前修嵌入式系統在一些driver上常看到,上網查一下也看不是很懂
今天老師只解釋一下就恍然大悟了
int a;
a = 1;
a = 3;
a = 5;
這時Compiler可能會跳過a = 1 or 3讓 a 直接等於 5

但對於那些memory Mapped IO的device而言a所指的address是對應到某個裝置
( 可能是led的register )
跳過a = 1, a = 3 不是我們想要的,所以用"volatile"修飾一下告訴compiler不要亂來

2008年3月3日 星期一

吃到飽

常常去吃一些吃到飽的餐廳
吃得很痛苦跟吃到飽之間只是一線之隔
只要一穿越那條線--就會很痛苦,在那之前感覺都還好
吃了那麼多次,好像漸漸可以摸清楚那條線了

反省一下,發現我做事情有點三分鐘熱度的傾向
小時候就是這樣,有點過動兒的情形,讓家人很頭痛
但做事情這樣子可不好,每每到了關鍵地方就想要轉個方向
這時需要勉勵一下自己"好好的做下去吧!"

2008年3月2日 星期日

master piece

最近在念 the art of assembly language
寫得真的很棒
釐清了一些以前不太了解的東西

CPU, pre-fetch, pipeline, interrupt ( interrupt vector )/ polling IO , dma, cache,
memory mappped IO / port IO

以及組合語言
而且我才念到第三章啊 ...

2008年3月1日 星期六

if

if( 格物致知 && 誠意 && 正心 && 修身 && 齊家 && 治國 ) 明明德於天下;

C語言的一個特性,由格物致知到治國其中一個為false就不會繼續check下去

2008年2月29日 星期五

typedef

觀看 http://zh.wikipedia.org/wiki/Typedef
原來 在C++
宣告struct時自動已經幫你typedef加上去了

在C常常看到
typedef struct Name{
...
} Name;
這種寫法,可以在宣告時少寫"struct"
struct 跟一般變數不太一樣的地方,應該是還需要一個table紀錄一些成員的資訊

落花水面皆文章

有時候覺得看書似懂非懂,但只要實際摸過就會覺得: 其實也沒有什麼啊

2008年2月28日 星期四

Othello Game

一年多前修AI時寫的程式
昨天翻出來看一下,整理一下
之前對OO的概念還不太懂 ( 現在也沒多懂,只是稍微了解的程度 )

利用下面的方法就可以做一個可以同時當Application跟Applet的程式
當在寫一些比較不牽涉系統資源的程式,這樣做還挺不錯的( 例如Game )

實做JApplet這介面是為了瀏覽器,讓你的瀏覽器以Plugin的方式執行程式
當然要先安裝JVM及在瀏覽器上裝Plugin

public class myApplet extends JApplet {
private myApplect application;

// Application 的 Entry Signature
public static void main(String[] args)
{
application = new myApplet();
application.init();
}

// Applet 的 Entry Point Signature
public void init()
{
// 開始實作內容
}

}

至於AI的部份
用很簡單的搜尋法
heuristic function( 每個可以下的位置 ) = 可以吃的子數 * w1 + 下一回可以吃的子數 * w2 + 下一回最多被吃的子數 * w3 + 是否為C-square * w4 + 是否為X-square * w5 + 是否為邊點 * w6 ...

直接玩( 當作Applect )
http://s-web.nctu.edu.tw/users/u9516577/WWW/test.html
或是抓下來( 當作Application )
http://s-web.nctu.edu.tw/users/u9516577/WWW/Game.jar

2008年2月27日 星期三

father

父親非常愛我
小時候家裏沒什麼錢,父親還是常帶我出去玩
依稀記得坐在父親那台舊野狼的前座
帶我去火車站看火車
帶我去釣魚
帶我去找朋友
帶我去各種地方 ...
啊 我的父親 O mio babbino caro
他似乎是一個不太表現感情的人
但我實在是很尊敬他
曾經傷了他的心( 還有母親 ),實在是很抱歉

父兮生我!母兮鞠我!拊我畜我,長我育我,顧我復我,
出入腹我,欲報之德,昊天罔極!

2008年2月26日 星期二

C

C語言是一個很有彈性的程式語言
可以繁複,可以簡約
可以華麗,可以樸實
可以高階,可以低階
實在很佩服設計這個語言的人
讓我讚嘆不已

今天稍微嘗試一下簡單OOP in C, sweet

[ common.h ]
#ifndef COMMON_H
#define COMMON_H

#define SHAPE int X;\
int Y;\
void (*Draw)( struct Shape* );

typedef struct Shape {
SHAPE;
} Shape;

typedef struct Circle {
SHAPE;
int radius;
void (*SetRadius)( struct Circle* , int);
} Circle;
Circle* New_Circle( int );

typedef struct Square {
SHAPE;
int Xdim;
int Ydim;
void (*SetDimension)( struct Square* ,int, int );
} Square;
Square* New_Square( int, int );

#endif


[ circle.c ]
#include "common.h"

static void Draw( struct Shape* shape )
{
Circle *circle = ( Circle * ) shape;

printf( "drawing a circle, radius : %d \n", circle -> radius );
}

void SetRadius(struct Circle* c, int r )
{
c -> radius = r;
}

Circle* New_Circle(int r)
{
Circle *circle = ( Circle* ) malloc( sizeof(Circle) );
circle -> radius = r;
circle -> SetRadius = SetRadius;
circle -> Draw = Draw;
return circle;
}

[square.c]
#include "common.h"

static void Draw( struct Shape* shape )
{
Square* sq = (Square*) shape;

printf( "dwawing a square, area:%d\n" , ( sq->Xdim * sq->Ydim ) );

}

void SetDimension( struct Square* sq,int X, int Y)
{
sq -> Xdim = X;
sq -> Ydim = Y;
}

Square* New_Square( int Xdim, int Ydim)
{
Square* sq = ( Square* ) malloc( sizeof( Square ) );
sq -> Xdim = Xdim;
sq -> Ydim = Ydim;
sq -> Draw = Draw;
sq -> SetDimension = SetDimension;
return sq;
}

[ main.c]
int main()
{
Shape* shapeCollection[ 3 ];
shapeCollection[ 0 ] = (Shape*) New_Circle( 10 );
shapeCollection[ 1 ] = (Shape*) New_Square( 4, 3 );
shapeCollection[ 2 ] = (Shape*) New_Circle( 3 );

int i;
for( i = 0; i < 3; ++i )
shapeCollection -> Draw( shapeCollection[ i ] );


return 0;
}

[ output ]
drawing a circle, radius : 10
dwawing a square, area:12
drawing a circle, radius : 3

2008年2月24日 星期日

決定

一直在決定各種事情啊
決定退掉"高等Java程式設計"專心弄論文 ( 後來我又選了, 人心多變 )
決定參加環校路跑
決定...
總之,決定好好的活著

昨天把借來的"古都"看完了,川瑞康成的作品
與其說是小說不如說是一本介紹京都之美的旅遊書籍
之前去過京都,但也許時間錯誤,並沒有看到什麼祭典之類( 2月份去的 )
也沒有花朵盛開
但是書中提到的一些寺廟名稱倒是耳熟能詳( 畢竟在京都5天都在逛寺廟 )
有機會的話想再去京都走走
看待事情的態度是會隨著時間改變的
有點年紀再回頭走走過去走過的道路,會有不同的感覺

2008年2月22日 星期五

run

最近開始在學校慢跑
打算以跑兩圈為目標,大概4.5公里

實在是很無聊,快點結束吧

2008年2月16日 星期六

Here comes the sun

前陣子終日不見太陽
今天終於露臉了

2008年2月13日 星期三

開始弄點論文

開始衝論文了
關於IFC
Industry Foundation Classes
有些人相信用這些東西可以用來當作一種Protocol
讓不同的Software可以溝通
他其實是一種Product的描述語言,藉由一些OO概念
以Express File或是XML存在

IfcProject -> IfcSite -> IfcBuilding -> IfcStoery -> IfcBuildingElement
不僅如此,一些如時間也可以屬性存在
他除了描述形狀,位置,能夠描述更多的東西

這個標準還在發展當中,算是有潛力成為ISO的玩意
但好像沒什麼學術的味道
我想能夠畢業就好了
白天弄論文,晚上玩我的

2008年2月11日 星期一

I will be back

要回新竹了,這次待得挺久的
身上增加了不少肥肉
應該要把他們甩掉才是

給自己一個小目標吧
每個禮拜跑15Km, 伏地挺身150下

我想自我激勵的Daemon, Priority要提高一點了XD

新竹好冷
體重不爭氣的跑到82kg . 目標75啊 orz

2008年2月10日 星期日

nice website !

http://www.study-area.org/programing/progfr.htm
nice website ! 裡面有一些學習資源

2008年2月9日 星期六

walk

今天下午跟家人出去走走
奶奶感覺好老了,想起小時候父母出去工作,都是奶奶在照顧我
今天我們去吃排餐,奶奶好像是第一次吃XD
他拿了一塊巧克力布丁,然後說這好像是生豬肝,讓我笑得半死

little hack of keyboard

過年有點無聊。嘗試玩了一下windows device driver
參考 : http://www.catch22.net/tuts/kernel1.asp
首先要下載WINDDK, driver development kit 裡面是建構driver的環境
包含 compiler, linker, 及一些lib, header
使用C語言,好像沒有用到clib ...

嘗試修改鍵盤的驅動程式
windows鍵盤滑鼠訊號傳遞大概是長這樣( 也許有錯 )

硬體 -> kbdfilter.sys -> kdbclass.sys -> Application

kdbfilter 這一個可能是某種裝置的驅動程式( 例如usb 或 ps/2 )
kdbclass 這一個接著處理鍵盤的輸入pass給Application

修改
[kdbclass.c]
VOID
KeyboardClassServiceCallback(
IN PDEVICE_OBJECT DeviceObject,
IN PKEYBOARD_INPUT_DATA InputDataStart,
IN PKEYBOARD_INPUT_DATA InputDataEnd,
IN OUT PULONG InputDataConsumed
)
{

... 省略

ULONG i;
ULONG num;
ULONG keycode;
PKEYBOARD_INPUT_DATA data;
data = InputDataStart;
num = InputDataEnd-InputDataStart;
for(i=0;iMakeCode;
DbgPrint("Keyboard Filter Driver Sample - keycode=%u\n",keycode );
data++;
}

... 省略
}

重點是以下兩個東東

InputDataStart 鍵盤輸入的資料,Pointer到buffer起始位置
InputDataEnd 鍵盤輸入的資料,Pointer到buffer起始位置

Scan Code
scan make 1 就是MakeCode

[ntddkbd.h]
typedef struct _KEYBOARD_INPUT_DATA {

USHORT UnitId;

USHORT MakeCode;

USHORT Flags;

USHORT Reserved;

ULONG ExtraInformation;

} KEYBOARD_INPUT_DATA, *PKEYBOARD_INPUT_DATA;


利用Debugview就可以看到鍵盤的輸入了...
從kernel mode直接取得,而沒有透過一些API



2008年2月7日 星期四

我算對體重還蠻敏感的
以前我曾經很胖,從開始記得事情以來,總是被叫胖子
一直到大學最後一年才瘦下來
胖子會不會受到大家的歡迎,幾乎是一點都沒錯,但也有一些例外
但現在我差不多在標準體重了
我很能體會一些很胖人的感覺
當我很胖時,我總是認為自己"還沒那麼胖"
但這是很恐怖的事情,因為自己對事情的了解總是沒那麼正確
需要外在更可以陳述事實的東西---體重計
所以我買了一台不錯體重計,電子式的
每天照三餐量體重,隨時追蹤紀錄
我記得最重的時候...125Kg, 現在我差不多80吧?

我到底了解自己多少部份了呢
不到30%, 保守估計

剛剛看了"象人"這部電影
一個畸形的人,但他的內心卻是像一張白紙一樣...
如果身旁有這樣的人,我該用什麼態度面對他呢

2008年2月6日 星期三

deer hunter

中文名稱好像是"越戰獵鹿人"

"This story is neither an accusation nor a confession and, least of all, an adventure because death is not an adventure to those who stand face to face with it. It will try simply to tell of a generation of men who, even though they may have escaped its shells, were destroyed by the war..."

把西線無戰事的序拿來解釋這部電影,再適合不過了

2008年2月5日 星期二

Taxi driver

勞勃狄尼洛看著窗外,慵懶的開著計程車
一部充滿自省味道的電影

主角因為患有失眠的毛病,所以半夜在開計程車
興趣是看看情色電影,他認為自己是一個孤獨的人
他嘗試去接觸別人,但得到冷酷的回應,人與人之間總是充滿誤解
有一天她忽然有一些想法,I should do something

他準備暗殺一位總統候選人,這邊也許是為了報復那位誤解他的女生,不過他沒有成功
最後他殺進一個私娼寮,一個充滿雛妓、毒蟲、混混的地方
他想要幫助一個叫Aries的女孩,有一次她想要逃離那個地方,但是在車上被boss拉回去
他想要幫助她離開那個地方

非常值得一看的電影!

2008年2月4日 星期一

女性主義

昨天看了蠻牛今天看了末路狂花
似乎都跟女性主義有點關係
我特別喜歡末路狂花

對女生好一點吧!!

2008年2月1日 星期五

friend

今天去找一個朋友
住在家裡又有在聯絡的,似乎只有他一個

他是一個怎麼吃也吃不胖的人
他沉迷於楓之谷
他是一個RPG遊戲的練功狂

恭喜他找到工作了
離家近,薪水也不錯

啊 該下去洗碗了

2008年1月31日 星期四

hu

今天去國中母校跑了3k, 累得跟狗似的
體力需要毅力去維持

發現我常常會對一個景觀看到發呆

前陣子常常在學校待到11點多才回家
路過竹湖, 有時會有戀人在長椅上喃喃細語
有時空無一人, 遠處大樓的燈光, 校園的路燈
新竹獨特的風, 整個交織成為一個獨特的景觀, 只有當時人在那邊才能感覺的到
此時的我獨自一個人往D棚停車場前進, 並不感到寂寞, 因為我被更大情感給吞噬

有時很平凡的景觀也能深深的打動我

2008年1月30日 星期三

buuu

一回家我就開始K電影

1.回到未來
2.Juno
3.The man from earth
4.推手
5.革命前夕的摩托車日記

喜好順序是
5 > 3 > 4 = 2 > 1

[5]這部很不錯,一個人很可能因為某種契機,整個人改變,旅行是本片的重點
真人真事改編,主角後來成為很有名的革命家
[4]李安的另一部電影,郎雄演得很棒,看到流眼淚
[3]很奇妙的一部電影,我很喜歡主角的一些想法
[2]講一個未婚媽媽的故事,我還蠻喜歡的
[1]還不錯啦

2008年1月29日 星期二

回到家了

今天回到家了
口腔長一個包,去看醫生,說是血管瘤
似乎是因為昨天吃的蝦子

sweet dream!

2008年1月26日 星期六

來新竹這麼久,第一次會想家
我想下禮拜2或3就回家了,然後過完年再回來新竹

有一天我會有自己的家嗎?
記得有一次上英文課,老師問 What is the different between home and house ?

house 房子
home 家

房子是家的容器
而家對我而言是一個我會想回去的地方

2008年1月24日 星期四

吃吃喝喝

一整天都在吃吃喝喝
早餐+中午吃了,磨菇羅勒三明治+熱拿鐵 150
晚餐吃了,韓國料理 395

有食慾似乎還不壞
如果連食慾都沒有時那才悲慘
對我而言,有食慾跟健康幾乎可以畫上等號

2008年1月23日 星期三

廢話連篇

莫名奇妙的寫了一百篇文章,大部分都是在紀錄我的心情
但應該比較像是在自言自語
也許有一天喪失記憶時可以recall memory

今天把嵌入式系統期末Demo完了,放下心中一塊大石
快過年了,今年的希望是 : make the world the better place
很虛偽嗎 ? 但我真的這樣想,我希望可以一直都這樣,至少這個希望不要變

有時候覺得自己沒什麼建樹,實在是很恐怖,我到底都做了些什麼事啊?
無論如何,希望你死前不要留下遺憾

2008年1月21日 星期一

emotional

It's been emotional

真無聊啊 這一切的一切
好想去英國 坐在利物浦港口 聽著器笛聲 看著海鷗飛翔
晚上去bar邊聽別人演奏邊喝威士忌
人生苦短啊

2008年1月20日 星期日

Parklife

在學校超過一半時間不是在我的研究室
這也算是一種Parklife吧?

像FPE或是GameMaster這種軟體能夠attach process
然後scan memory的值並加以修改,感覺是很危險的東西
這跟program安全性有相當關係吧?
下面這篇文章有個老兄介紹的很詳細
http://www.codeproject.com/KB/cs/sojaner_memory_scanner.aspx
之前上課聽老師說整個process在32位元的電腦正能用的其實大概2G
剩下的都是kernel的東西佔去
算了 有機會在研究一下

對了 我想是該開始運動了,加油啊!
我不想做什麼鬼替代役 讓我去部隊吧 我不介意吃虧

2008年1月19日 星期六

做了一個奇怪的夢
-------
我養了一隻寵物,我不確定是貓或是老鼠,感覺一開始是貓,但卻變成老鼠
我餵牠飼料
他吃著吃著毛長出來了
接下來過一段時間,我好像很久沒餵牠了
牠變得好瘦好瘦,躲在牆角,而且有點畏懼我
然後不知道在哪邊找到了飼料,馬上拿去餵牠
但他吃了之後,過一會,毛開始掉落,變得很小隻,越來越小
然後牠吐了,牠把鐵片從嘴巴吐出來
我馬上把飼料拿起來看,裡面竟然摻雜著鐵片,螺絲
然後我看牠一動也不動了
我開始覺得自責,很傷心,對不起,對不起,我不是故意的
-------
這個夢似乎在暗示我什麼

2008年1月17日 星期四

friendship emptying?

有沒有那種曾經很要好的朋友
過了一段時間,就完全沒有聯絡
就算MSN遇到也不會打招呼
為什麼?
人跟人之間的關係真的那麼脆弱嗎?
還是每個人都沒有勇氣當那個ice breaker?

就我所知
All the relationships are emptying and temporary
無論是怎麼堅強的情感的繫結

2008年1月16日 星期三

sucks

今天去唱歌,發現那個選歌排程的系統實在有夠爛
怎麼我選的歌都沒有出現?
有些人在插撥還"一直"插撥,你不知道這樣很沒有禮貌嗎?

突發奇想,如果可以給每個人一個點歌裝置( client ) 輸入自己想唱的歌還有順序
然後有一台Server負責排程,這不是很棒嗎?

我常常隨著我的思慮到處去旅行

2008年1月11日 星期五

ESD期末project---orz

---- 1/9 , 1/10

經過兩天在網路上搜尋
目前能做的方向就是

使用Linux running on PXA270
使用Creator母版上的Codec
使用PXA270 LCD/ CODEC Driver
使用Linux 的Networking

接下來
實做簡單的SIP protocol 只要能接收,撥打就好
怎麼把16bit 的voice data 用RTP包起來
VoIp Client / Server 程式撰寫, Keep it Simple
有必要修改CODEC的 Driver

重點就在SIP Protocol的Implemnet 跟CODEC !!

-- -- 1/11

目前可以用PAX270與Linphone Talk了, 在PXA270弄了個UDP Server
但是SIP protocol 要怎麼做? 網路找還是自己寫?

-- --1/12

放棄自己寫,無盡的尋找..看看有沒有比較不複雜的SIP stack
liboSIP 太複雜
PJSIP 這個也許可以參考參考
繼續尋找,今天看了11:14這部電影,裡面有各種巧合,但是輸兩根槍管很多

-- --1/13

現在我想也許嘗試Cross Compile ,Linphone 也許可行
用的是1.2版, arm-linux-gcc 3.4.1, 因為pxa270是arm架構的

編譯完成, 在pxa270上也可以跑, 除了沒聲音以外
我想是audio device driver的問題, /proc/asound 底下確實是有東西的
char device , Major Num , Minor Num
mknod /dev/dsp c 14 3
mknod /dev/mixer c 14 0
用以上這兩行解決這個問題

完成可以打出去/ 收進來了 ! 高興得跑到對面研究室找人家來看
最困難的地方完成了,剩下介面
目前為止還沒有寫到半行程式( 除了那個Udp server )

自由軟體萬歲!

今天看了"哥哥我還要"電影,有些地方還蠻好笑的

---- 1 /14

簡單介面完成了,不用藉由電腦就可以溝通
期末project 最基本的要求 終於達成
接下來要挑戰其他bonus嗎?
FPGA / DSP / Video .... ?


---

...

昨天晚上呆在研究室
又把西線無戰事拿出來瀏覽一遍
閱讀最好的時刻就是一個人,當心情得以沉澱時
我很享受這種感覺

最近頭髮掉落頻繁,讓我有點擔心
看了書上其中一段
"只要能佯裝不知,便可以忍受恐懼,而若是朝思暮想,則其殺傷力足以致命"
真是有道理,但最後還是要面對,只是不需要朝思暮想
明明知道明天還要上戰場,今天還是今朝有酒今朝醉,互相開開玩笑,吃吃喝喝
我能體會這種感覺

"我們變老,有些人可以適應,其他若干人只能苟且偷生,而大部分的人則會手足無措"

2008年1月7日 星期一

...

最近這幾個禮拜,對自己要求太少
這可不是好兆頭

laugh

我很喜歡大笑
不是業務員隨時掛在嘴邊那種
而是大聲笑出來

哈哈哈哈哈

一想到什麼有趣的事情,我會先自己笑出來
然後分享給別人
有些人覺得好笑,有些則不
但無論如何,大笑實在是令人感到愉快的動作
雖然對那些被笑聲嚇到的人感到很抱歉就是了

說到嚇人,我可以說是專家,不過留著以後再談吧


2008年1月5日 星期六

給別人希望,但是不要給自己希望

我這樣勉勵自己
是因為我覺得希望會讓自己軟弱
給別人希望比給自己希望有意義多了

2008年1月4日 星期五

Blur

Blur是我喜歡的樂團之一
最喜歡的歌是"No Distance Left To Run"
跟這首歌頻率接近的是槍與玫瑰的"Since I don't have You"
但是我覺得Blur的略勝一籌
很憂鬱的歌
還有Jeff Buckley的"Hallelujah"也是( 我只是照著我的感覺判別 )

2008年1月3日 星期四

extern

先不管extern C

今天寫作業忽然需要用到這個
extern 可以宣告一個類似替身的變數
你可以使用他,但是他必須先存在 ( 宣告 )
編譯器會去找本尊歸位,這時就可以視為全域變數啦
但如果不想被視為全域變數 在宣告時加 static

火鍋

我喜歡吃火鍋
食物在鍋子裡咕嚕咕嚕的滾
夾著肉片在鍋子裡涮涮涮
這三天來吃了四次火鍋

Happy

歡樂過頭了
ESD還有兩次Demo
結構動力下禮拜要期末考
我怎麼還能悠哉悠哉的呢?

2008年1月1日 星期二

西線無戰事

昨天把這本書看了一遍,很有趣的一本書
節錄一些我覺得不錯的文字

西線無戰事,翻譯 by 蔡憫生

最聰明的只有窮人和思慮單純的老百姓。他們知道戰爭會帶來災難,而富人本應更能洞悉戰爭之惡果的,卻載欣載奔地投入戰爭的洪流。
卡辛基說,那得歸因於他們所受的教養。那使他們愚昧無知。

當他們繼續大放厥詞時,我們卻在目睹生死離別。當他們在教誨報效國家是偉大的情操時,我們則早已體認到垂死的掙扎是更強烈的情感。

兩國交戰應像是熱鬧的節慶,就如鬥牛般,可以收門票,也有樂隊助興,然後兩國的各部會首長及將領們穿著泳褲,拿著木棍,到競技場內,
自己去打個痛快。能倖存者,他的國家就贏了。這樣乾脆多了,也比目前這種讓不相干的人廝殺,拼鬥的安排,公平多了。

人類基本上是種野獸,只不過披著禮儀的外衣,就像麵包塗上奶油一樣。
若在平時能讓你隨意挑選工作,有什麼職業可以像帶兵一樣恣意整人而不會被揍得鼻青臉腫?只有在軍中能這麼搞。
而在當老百姓時越是卑賤的人,得勢之後越是會亂搞。

Happy new year

新年快樂

快樂也是可以感染的