星期六, 12月 27, 2008

最近

好久沒有寫blog了。可能自己懶性使然吧XDXD

研究所考試越來越近了,但是我依舊沒有進入狀況,總是想著要把學校作業做好,有一種兩頭燒的感覺。在宿舍始終睡不好,半夜室友才會開門回來,我總是最早躺在床上,而最晚入眠。

最近想外宿,如果在林口長庚醫院附近有好房子可以通知我嗎,謝謝XD

或許,這一切的事該結束了,我會繼續念書念下去,但是用我的方法,因為我屬於我自己,不屬於任何事。

若要我說大學最重要的事是什麼,在大三之前我會說,態度正確及學習如何學習,但是更值得花整個大學時間去探究的是,找到自己想做的事,啟發自己的熱情,如果沒有找到,常常會努力一下子就懶病發作了,這就不好玩了。

我還沒調整至最佳狀態,但是會盡一切努力的。

---
似乎很多事。

星期六, 12月 13, 2008

這個領域很缺人

本來想寫成嚴肅文,我們來寫搞笑文好了XD

系上某位老師: 資工不要做硬體了啦,做硬體是做的贏電機系喔。
yen3: 嗯...

系上某位老師: 資工寫軟體沒有用,外面都嘛是搞硬體。
yen3: 嗯...



這一陣子,我對於我的研究領域為何很不清楚,於是跟了蠻多老師聊天。

gwchen: 來做生物資訊吧,這個領域很缺人。
yen3: XD

ycma: 來做IC Design吧,這個領域很缺人。
yen3: XD

jdwei: 來做多媒體資訊領域,這個領域很有趣。
yen3: XD

Josh Ko: 來做Programming Language吧,這個目前也只有sinica iis在做而己,這個領域很缺人。
yen3: XD

結論: XD

---
完全不知道XD

星期二, 12月 02, 2008

基礎

我所認知的一個programmer要能夠達成三件事: 用數學做深度思考、用英文描述的四平八穩、用程式語言寫的高度藝術。

我很喜歡數學、英文及編程,很不幸的,我喜歡的事我都做的不甚好,會持續努力嘍,在這三個目標還沒有達成一定水平之前,我都會認為我還在打基礎。

有感

---
lay out lay 到死 XD

星期日, 11月 30, 2008

Time Complexity

這個問題非常的簡單,不過最近在對這個做練習,我做個簡單的筆記好了。

Algorithm所提的Complexity分為Space Compleity和Time Complexity

先談談Space Complexity,我覺得爭議還蠻大的,以fundamental of data structure in C/C++裡面所提及的計算,皆以programming language所佔用的記憶體做為計算,這對於新一代的程式語言,並不是具有良好定義,所以我想就此略過。

而Time Complexity的計算方法,可參考OOPS: Introduction to Algorithm 2005 Spring, Asymptotic Notation (這一堂課到2008都有,老師都同一個,可以看 這裡)。

而對於Recurrences Time Complexity的方法有如下幾種

  • Substitution method: 代入然後猜測最後的結果
  • Recursion tree: 把整個Recursive的狀況畫出來,依序得到一個結果。
  • Mater Method: 當T(n) 符合某個型式時即可使用。


最有趣的是Master Method,定義如下。

簡而言之,就是要比較n^{log_b^a}和f(n)的大小,那個函數的成長速度較快,就取用那一個,當然,這只是一個大概的描述,因為當兩者成長速率相似時(Case 2,允許差一個log^k_n),蠻常聽到有人叫他"老大定理",其實我比較喜歡Master翻譯成"主要",似乎會更為貼切。



至於其於兩個方法,Recursion Tree本身最主要的重點為,這顆tree不可能長成一個balanced tree,所以很難算出很直接的值,大部分都是算出整顆樹的高度,用逼近法算出Time Complexity。而Substitution method也很直觀,帶入後觀看規律,猜出公式即可得證哩



---
感覺上很像隨便寫寫XD

星期四, 11月 27, 2008

稱呼

這個,似乎最近越來越多人叫我老大、大哥...etc 呃,個人無意混黑道,叫我yen3就好XD

不過也還好,大部分都是學弟妹叫的,我認識的學弟妹也不多啊,昨天與一個大二的學弟聊天,沒有什麼很實際的感想,只能說,自己持續努力了。

感謝竹竹提供的東西,非常感謝,唉,時間過的越久越覺得自己像米蟲一樣啊,什麼都不會。

---
感冒中。

星期三, 11月 19, 2008

幫忙的藝術

我不覺得我有什麼資格可以提這件事,不過仍然很想提一下XD

前幾天聽到有人提及師大資工有一個學弟高中就用Ruby寫了一個查榜系統還因此上了電視,後來考上師大資工。非常好,我高中的時候尚屬於混吃等死的白目死小孩年代XD。

我大一剛進我們學校資工系時,意氣風發,樂於助人,交作業前的一個晚上曾經有15個msn,後來我就養成交作業前一個晚上去打籃球的習慣XDXD 不過當然,由於我到後面就生氣了,從那個時候,跟班上大部分的人處的很平淡到現在(說現實一點叫做,沒有在往來。)。

我想這不是最主要的原因,最主要的原因應該是我太白目XDXD,哈哈。但是後來這些年我遇到一些人,對於是否要幫忙這件事,我一律回答,只幫忙有價值的問題; 反面而言,請學會拒絕沒有價值的問題。

何謂有價值的問題,很簡單,單看這個提出問題請求幫忙的人自己下過多少功夫了,沒有所謂難的問題或簡單的問題,只有好問題和沒有價值的問題。所以當有人問我時,我常常說,這是一個好問題XD。

如何學會拒絕? 在我的經驗中,大部分的人是吃軟不吃硬的,請柔性拒絕,當然,也有人很白爛的,請視情況罵他xxx,說老子不幹了。絕大部分的狀況如果我不想回答這種問題,我就會,嗯...我想想,我可以改天再回答你嗎? 這個問題我當下也回答不出來。抑或是,我最近有蠻多事要忙的,可能沒辦法處理你的問題,你要不要等過幾天?

我個人認為,只要是朋友有難,我就會盡其所能的幫忙,不管我身處什麼樣的狀況(事實證明,這種想法有時候會把自己搞的很慘,不過常常會得到意外的喜悅:)),對於自己不熟的或者是不想幫的,學會拒絕的藝術與幫忙的藝術是一樣的重要的。

當然,像我大一樣,直接跟所有人說,我不幹了,我不幫這種鳥事,有時候不一定是好效果,喜歡寫程式的人,有時候是會從不喜歡慢慢變喜歡的,這樣子等於直接封殺了所有的可能性,就有點可惜啦XD,很想說,以後遇到這種情況時,可以發一篇類似"與妻訣別書"的感人文章,讓別人不好意思麻煩你,也是很不錯的XD。

---
又閒聊了XD

星期日, 11月 16, 2008

服務

最近有太多事想要寫,反而不知道要寫什麼,不過隨著準備研究所考試,這個blog的更新會越來越慢XD。

最近有朋友電腦壞掉,所以對這個名詞蠻有感覺的,以前的我很不喜歡品牌桌機,覺得平平同樣的價格,為什麼品牌電腦會賣這麼貴? 同時會覺得為什麼國外比較喜歡品牌電腦?

其實大部分買電腦與組電腦的人,都把服務視為一個無形的成本,其實服務應該是要花錢的,當然,用盜版軟體就免費啦,所以很多人去光華買零件組一組cost-down下來,其實差不多只有花掉很多時間及硬體部分的錢(以時間管理而言,學生時間真的很多XD),服務呢,如果你有好人,就有好人替您服務,如果你本身就是好人,那麼更不用說了。

不管買MacBook還是買一般的筆電,其實售後服務,我都得說,我不知道效率為何(我的上一台筆電送修三次,都很快),但是我得說,至少都有一個明確的點可以送,可以收,然後balabala就回來啦,很方便。一般所組的桌機,壞了,小則自己重灌,大則檢測硬體,送修換掉,其實這些都是很無形的服務成本,但一般人愛免費啦,所以就會導致,我只是想拿電腦做一件簡單的事(上網、聊天、交報告)。就變成,想要過的好,百般武藝不可少。

所以會有人說,Apple的電腦除了漂亮,就貴,阿婆關心(Apple Care)又要花很多錢,其實這些事都把隱形的軟體成本與服務去掉了。當然我不否認,Apple電腦售價是比較高一點,但把這些成本加回來之後,覺得貴不貴就變成見仁見智了。

現在的電子產品是越來越精密,也蠻容易壞的,這幾年,我比較會把售後服務也考慮進來,因為服務也是成本的一部分。

不要小看這些成本啦,你欠那些好人的便當與飲料,記得該請一請,不然以後外面公司的服務成本價位表看到你會哭哭喔XD

科科(這純粹是應景XD)

---
閒聊一下。

星期一, 11月 10, 2008

趕工失調

我在趕工寫作業之下,竟然寫出這麼GY的寫法,不太好玩...Orz

ifstream& readWavFile(char* filename, WavHeader& header){
ifstream* infile = new ifstream;
infile->open(filename, ifstream::in | ifstream::binary);
infile->read(static_cast(static_cast(&header)), sizeof(header));

return *infile;
}


---
真不懂自己為什麼會這樣子寫...Orz

星期日, 11月 09, 2008

神經水管與髮絲

這當然不是指真實神經,真實神經細胞很複雜,我也不太能理解這是一個怎麼樣的東西。

神經像水管有好處,排水比較方便,沒有爆炸的危險,由於粗了點,對於外界觀感較為輕鬆直覺,然後常常會做對一些事(不自覺的),也常常做錯一些事(不自覺的)。

神經像髮絲有好處,細水長流撐比較久,當然有爆炸的危險,對於外界非常敏感,然後常常會做對一些事(或許有感覺),也常常做錯一些事(或許有感覺)。

今天晚上,你要那一種神經呢XD?

---
單純白爛啊XD

星期五, 11月 07, 2008

Do As Infinity - For the future

To eating: for the future

MV

誰だって一度は大空を飛べるさ
今日から君の限界目指せ
For the future

やりたい事をガマンしてたり
よせばいいのに大人ぶったり
断る事もできなかったり
ホンとの君は
何処へ行ったの?

教科書通りの
人生 なーんて
うんざりするでしょ
さぁ 行こう!!

誰だって一度は大空を飛べるさ
今日から君を今 見せてよ
For the future

あと少しでまた強くなれるさ
輝く瞬間を駆け抜けよう
For the future

僕等 自由なんだ
さぁ 行こうよ

誰だって一度は大空を飛べるさ
今日から君の限界目指せ
For the future
さぁ一度はあの空を飛ぼうよ
今日から君の限界目指せ
For the future
さぁ一度はあの空を飛ぼうよ
フルスピードで限界目指せ
For the future

每個人都有一次機會可以飛上天空
從今天起就以你自己的極限為目標 For the future

想做什麼就別再忍耐
不要假裝自己很成熟
不懂得如何拒絕別人
真正的你到底在哪裡?

一如課本上所寫的 人生 難道不會
讓你受不了 來 出發吧!!

每個人都有一次機會可以飛上天空
從今天起就以你自己的極限為目標 For the future
沒有時間讓你再嘆息
用全速朝向極限前進 For the future

名為人生的故事
這劇本是你在當主角
如果有任何的不滿
儘管自己來重新寫過

不要什麼都沒做 就在怨東怨西
這樣怎麼會開心 來 出發吧!!

每個人都有一次機會可以飛上天空
從今天起就以你自己的極限為目標 For the future
只要再努力一下就可以變得更強壯
奔向閃耀的那瞬間吧 For the future

我們 是自由的 來 出發吧

每個人都有一次機會可以飛上天空
從今天起就以你自己的極限為目標 For the future

給自己一次機會飛上天空吧
從今天起就以你自己的極限為目標 For the future
給自己一次機會飛上天空吧
用全速朝向極限前進 For the future

---
幹,今天踩到狗屎...Orz

星期三, 11月 05, 2008

平靜

這幾天生活過的一團糟,今天是重新開始了。

---
習慣了。

星期六, 11月 01, 2008

沒有優選

輸了沒關係,不要輸掉自己的熱情與靈魂

這是我對我的人生最佳註解,其實比較擔心的是cllee,他每次看我們輸了就會很難過。

I have a passion for Computer Science so I don't give up anything what I want to do.

---
How to save a life.

星期五, 10月 31, 2008

耗能

有一種筋疲力盡的感覺

---
什麼事都不想做。

星期一, 10月 27, 2008

專題結束








睡不著,於是起床寫些東西。在下筆的此刻還是沒有完整的照片。這裡是複賽回顧,對於我在於決賽的表現,我只能說

我在這一個禮拜多所犯的錯誤,遠超過這三個月的總和。

分工不很明確,做事也不很好,把自己累的半死,卻總有閒置人員,只能說,自己做的太差了,或許事情不具有分割性,但是分配不均或不好總是對的描述,在這裡我想跟所冒犯的人道歉。我一有壓力或很累時很明顯,因為臉會垮掉,心情會不好,會不想說話或無目的碎碎念或自嗨,這些症狀在決賽這週通通跑出來了,也謝謝大家對我的包容。

eating 是整個過程中最讓我覺得驚豔的人,她的耐心與時間管理程度超出一般人太多太多,她處理的GUI極為漂亮,美工能力一流,文件撰寫相當流暢,學習新事物很積極(我看她用photoshop覺得一切都好神奇XD),雖然她大三上就擔心自己的能力是否能勝任這個專題,不過在種種事情中她都表現的勝任有餘,在這個專題過程中,我受到她的許多幫助,非常感謝。

Clara 在整個專題中有著絕佳平衡力,她主要負責程式設計、資料庫整合、GPS API使用、簡訊API開發、文件撰寫等等,最後的決賽簡報由她負責,我不覺得換作我去報告會比她好(我的專長是和老師吵架XD),穩定度極高,在整個專題的合作過程中相當愉快,如果有發生任何問題,絕對是我的錯,不是她的問題。

fire7617 有著很好的爆發力,雖然中間發生很多不愉快,是我工作分配的問題,他在OCR開發中付出的心力,還有決賽中影片的剪輯,及生動的表演,如果有機會,我願意再和他合作。

gb014388 是一個人際關係的極佳調合劑,不管發生任何人的問題,我總是麻煩他,他在整個決賽過程中所表現出的美工能力一流,雖然描述只有了了數語,但是很難說明什麼我和他的情感。

yen3 我自己,負責嘴炮和寫程式,在這個專題上談不出做了什麼,所以努力寫感謝文。沒有他們,就沒有我。

Chun-Liang Lee 是我大學最尊敬的老師,在我大學最白目的時候,他跟我說"做事不只有對不對,還有好不好",開啟了我的自我學習之路,在整個專題中,沒有老師,我無法成為一個有用的人(莊子:以無用為大用),提到老師,我難以下筆,因為能說的事真的是太多太多了,老師在最後寫與我們的文字寫著

Expecting the Glory to Come
Hi guys:

比賽終於在昨天告一個段落, 在結果公佈之前, 我想要告訴大家, 你們都是 No. 1!
You guys have done a wonderful job!
Let's expect the coming of the glory.

我想跟老師說

老師,你是我心目中最好的老師!!

在整個比賽中,有苦與樂,有笑與淚,無論如何,到今天總算是雨過天青了。我的大學生活,在去年的矩陣運算競賽中和今年的中華電信比賽,兩個拿上自己的全部來賭的夏天,堅持做好每一件我想做的事,我的人生才有價值,也因為賭上自己的全部,我才能看清自己的能力。或許

我不相信自己,但我相信這個團隊
也感謝母親與efang對我無私的支持,也感謝這blog的讀者,太多人可以感謝,所以不謝天XD,謝謝各位。


---
有照片時會補照片。

星期六, 10月 25, 2008

專題結束

等有照片的時候再寫吧~

---
謝謝大家!!!

星期三, 10月 22, 2008

今日笑話

efang: 這張圖片好假好做作喔
yen3: 對不起,我好傻好天真(大誤)


所以其實本人是長這樣的XD

星期一, 10月 20, 2008

最近

好友發生了一件好事,非常恭喜,在此公開徵求,有沒有人知道不錯的賣巧克力的? 我在Google打巧克力專賣店,結果發現 "割豬肉"(你要嗎,yen3吃不起...Orz)

學會了忍耐是一件很重要的事,總覺得現在的自己還是過於任性,自我要求還是不足。除此之外,能力上的不足,或許我應該朝向多面向發展,說自己對於某件事沒有天份就拒絕學習是不對的事,應該還是得要學習至一個水平的。

昨天與人聊天,他的blog有不少人訂閱,所以寫起來有點擔心,我昨天看了一下自己的Google Reader,人數只有兩個耶XD 代表我可以繼續在這個小天地胡言亂語,而不用被人發現。

不管怎麼樣,隨手書寫生活。

寫作blog的人得負擔一定的社會責任,但是寫出讓自己開心的東西非常重要,有人回應當然會高興啊,沒有人回應就繼續寫吧XD。

---
亂寫 XD

星期五, 10月 17, 2008

[寫作] 哭泣

小女孩哭泣著。面對所有的未知,她感到害怕了。

從認識爸爸媽媽開始,她必需獨立一人面對未知的世界,不對,她還有一個尚未出生的弟弟,但,這世界已經扭曲不堪。

尤想起第一天上幼稚園時,在媽媽的懷中大哭訴著,在她的面前卻是一棟彩色的可愛城堡,她感到恐懼了,對她而言,可愛城堡就有如糖果屋一般的存在,而院長就是那可怕的巫婆。在陌生的孩子群裡,小女孩放不開,面對其他男孩的捉弄,她只能無助的後退,安靜著。

然而,誰都沒有想到,十年後的小女孩會怎麼樣...

---
即興創作,寫作果然很難,花了二十分鐘只能寫出這段文字。

星期三, 10月 15, 2008

入選決賽

決賽名單

接下來又是十天了...

---
keep going

雜事記錄

近日雜事如下


  • Wikipedia English幾乎什麼都查的到XD

  • 閒聊的blog是最多人回覆的XD

  • Bakery's Algorithm真是太神妙了(Operatring System的Process Synchornization Algorithm)

  • 張懸的歌一直唱不好,盧廣仲的兩次就好了,因為後者歌詞都非常簡單XD

  • 有老師推薦我去推甄中正資工,但是我竟然對這個系所一無所知XD

  • 前幾天一天灌了接近兩公升的可樂,再這樣子喝下去我就準備換腎了(連洗腎都免了...Orz)



---
雜事真多

星期六, 10月 11, 2008

文如其人?

高中時,小說創作完稿告一個段落,在和國文老師聊天。

老師: 大家都說文如其人,可是我看你的文章和你的人不像啊。
yen3: 囧rz

---
還真的蠻不像的XD

星期三, 10月 08, 2008

敗家

近日敗家清單如下

  • 基地
  • 基地與帝國
  • 第二基地
  • 基地邊綠
  • 基地與地球
  • (CD) 盧廣仲 - 100種生活


---
好多錢啊...Orz

星期二, 10月 07, 2008

撰寫自傳

自己成績不是很好,但是最近剛好有機會看到三個人的自傳,前面兩個都沒有太大問題,看到第三個的時候,我的小宇宙就爆發了...文章裡面不要有大量重覆的詞,記得排個版,都是小事,但是

請寫出自己會相信的內容。

寫出有點浮誇的內容是在所難免,不然以我天天晚上都在聊天沒有寫程式的人,我還真不知道要寫什麼,但是如果寫我很認真,認真到自己都不相信的境界...呃,我想我也不會相信。

請試著自己校稿,試著念出來,你就知道問題在那了。

---
突然暴走XD

星期一, 10月 06, 2008

最近

最近的生活總覺得自己處於一個失控的狀態,不過似乎也好,如果人生一直在預料內,似乎這個生活就不是這麼有趣了。

去台北大部分的理由不是買東西就是拜訪朋友,不知何時,四處與高中同學聚餐是我去台北一個很重要的選項,昨日前往拜訪朋友,雖然知道一些可惜之事,但是人與人之間的關係若失去平衡時,誰都無法決定下一步為何。

但是也只能自己嘲笑自己,當嘗試把生活變的更為單純,把複雜因子去除時,因為想要去掉複雜,而讓自己陷入一個泥沼中,可見我還是不擅長處理這種事,就這樣子過生活吧。

念書漸漸上了軌道,幾曾何時不想面對這一切,因為我對於這個真實社會懷抱著恐懼,或許我應該多多嘗試,但是必然會面對,唯有面對,才能說服自己完成事。

就這樣子吧

---
盧廣仲 - 好想要揮霍

星期六, 10月 04, 2008

Haskell Learning Note(3)

試論curring

在Haskell中,不用C++這麼複雜的方法來解決問題,而是採用curried function來解決這個問題。

Prelude> let add x y = x + y   -- 簡單來說就是寫一個 (+)
Prelude> :t add
add :: (Num a) => a -> a -> a -- 此時的add是一個具有兩個引數的function
Prelude> :t add 1
add 1 :: (Num t) => t -> t -- 此時的add 1 是具有一個引數的function
Prelude> :t add 1 2
add 1 2 :: (Num t) => t -- 此時的add 1 2是一個不具有引數的function

在Haskell裡,使用單純的curried function即可解決,寫起來很像C++的function default arguemnt,意義不太一樣,在Haskell裡是真的把引數代入形成一個新的function,其實+ operator也可以做出同樣的功能(Josh Ko說這是語法糖XD)

Prelude> :t (+)
(+) :: (Num a) => a -> a -> a
Prelude> :t (1+)
(1+) :: (Num t) => t -> t
Prelude> :t (1+2)
(1+2) :: (Num t) => t

寫到這裡我在想,我幹麻沒事自己寫一個add呢 XD那麼,可以試著用map寫出一點有趣的東西

Prelude> map (1+) [1..10]
[2,3,4,5,6,7,8,9,10,11]

當然,一個curried function在FP中的功用不止於此,curried funciton可以做更多事,隨你寫,隨你造,而不用C++ STL裡的bind2nd這種相較之下較不直覺的方法。curried fuction的好處是在Haskell底下是lazy evaluation,也就是說,你function引數可以不用給全,直到你要求把答案算出來的那一刻把argument給全就行了,而且可以隨你組合,隨你寫,可以做出相當多的靈活變化,也就是說,curried function並非要求一次把function arguement給齊,在Haskell底下大部分的funciton都是curried function。

那麼有沒有要求要一次給齊的,換個腦子想想,就是uncurried function,在這樣子的一個function底下,沒有一次給足所有的argument就會出錯(一時想不到有什麼function)

補充:當我們寫(1+)而我們又呼叫這個function時,是類似C++的default argument還是wrapper function的技法呢,如果記得是沒有錯,是前者,也就是說,不管怎麼compose,都是只有一層的呼叫,相當的方便。


---
真糟,寫的真少。

Haskell Learning Note(3) - 前傳

我本來想要參考和Josh Ko的MSN對話紀錄來這一篇的,但是發現MSN對話紀錄竟然不見了...Orz

funciton interface如何改變

一個function,會有0個至多個不等的argument,而function只有一個signal output(當然也不一定是signal output,你可以說傳一個list出來,說我傳了一堆東西,但是就整體而言,你還是傳了一個符合某一個type的東西出來),這對 functional programming更是如此,基本上就算是function name相同但是arguments 個數不同的話,我們仍視為不同的function

先跳回C/C++,眾所皆知,C++有著function overloading機制(靠著compile-time決定呼叫那一個function,為一個static-linking),基本上靠著這樣子的機制,避免非常多的name collision。

題外話,C++靠著三種機制來避免name collision,一種是name scope,一種是funciton overloading,一種是polymorphism,不過很可惜的是,沒有類似Java裡的inner class來避免一次性的class使用,但是到了boost,有提供lambda calculus來解決部分的問題。

或許換個角度來想,程式碼複用性一直是一個很重要很重要的問題,以function層面而言,最常見的wrapper function

int add(int a, int b){
return add(a, b, 0);
}

int add(int a, int b, int c){
return a+b+c;
}
當然,這個程式在C++中可以更簡單的寫成
int add(int a, int b, int c=0){
return a+b+c;
}
這些都是程式撰寫上的技巧,不足以掛齒,在寫程式的單純呼叫function時,引數是不足以構成問題的,可是call-back function上呢,在STL algorithm的比較呢,以STL的find_if為例。
template<lass InputIterator, class Predicate>
InputIterator find_if(InputIterator first, InputIterator last,
Predicate pred);
其中的Predicate要求傳入一個value type的變數,傳回bool,也就是說,如果你的function不是一個引數,是不符合Predicate的要求,那麼就無法變成find_if所能使用的function object。

STL所提供的解決方法有二,如果你要求剛好是function object adaptor和predefined function object組合起來可解決,那麼就使用組合技,第二個方法為,自行撰寫一個較為general function object ,再使用funciton object adaptor來改變一個function object的interface。舉個簡單的例子
std::find_if(u.begin(), u.end(), std::bind2nd(std::less<int>(), 0)); //尋找某個區間第一個小於0的數字。
我不能不說,我當初看到這樣子的寫法,我以為找到了救星,funciton可以玩組合技耶,而且這樣子的確解決了call back function的問題。

利用wrapper function或者是STL裡面的function object adapter或種種程式語言的技能的確可以改變一個function原本的interface,但是有沒有更好的方法? 有啊,不然我就白寫了,看到Haskell的方法之後,以前的我好傻好天真(大誤)~XD。

---
還沒進入正題XD

星期四, 10月 02, 2008

有趣的圖



靠腰這圖真是彷彿穿透了我的內心,洗滌了我的靈魂,讓我淚如雨下~我應該認真面對的~m(__.__)m

好友gb014388的創作,還是以後blog走這種路線也不錯XD?

---
歡迎廣為流傳XD

猜測

我不喜歡去猜測人的想法,雖然大部分人的行為都有跡可循,但是僅止於明顯的行為部分。

常常會有說者無心,聽者有意的狀況發生,我最近常常下意識的去猜測其他我所不認識人的想法,感到非常漸愧,這不是我該做的事。或許有90%的事是可預測的,但是我們遇到的事常常是落在10%的範圍,程式可以預測行為,但是人的預測,往往有太多足以造成蝴蝶效應的因素而難以預測,我的做法相當直接,傾向直接詢問,當然,詢問的方法往往也得適當。

最近的自己,或許會縮自內省自己世界的狀況,被親人責斥,其實不管問題的源始為何,如果發生這樣子的問題,只能說,如果自己沒有做錯什麼或表達錯什麼,不會發生這樣子的事,所以最該做的是反省自己。

雖然發生很多事,很多想寫的,仍得靜下心來看待每件事

---
無欲則剛

星期二, 9月 23, 2008

Google Calendar 和 iCal 同步

在Google Calendar推出CalDav之後,以前只能單純的利用iCal訂閱Google Calendar,要更動還是得從網路上,並不能做雙向同步,現在單純的利用CalDav之後,就可以同步了

官方說明網址

簡單的來說,就是在 偏好設定 中 新增帳號
使用者名稱,你的帳號,一定要打全名,ex: google@gmail.com
密碼,莫在提
帳號URL: https://www.google.com/calendar/dav/{你的Google Calendar帳號}/user

不過一個iCal的新增帳號,只能擁有一組日曆,如果你有很多組日曆的話,看一下你的日曆id再進行新增。

這樣子不管改那一邊,都可以同步喔XD

---
我每次都要把最後一句寫的好神奇XD

複雜

我果然還是不擅長處理複雜的事。

---
媽的,誰能教我。

星期日, 9月 21, 2008

回顧

在我下筆的此時,其實只僅僅是複賽交件。

去年的此時此刻,我同時在比賽,在cllee的指導下,我比了去年國網高速運算和今年中華電信電信應用加值大賽。第一次比完,收工的時候其實真的很高興(接近一個月沒睡好),這一次比完只有簡單的鬆了一口氣的感覺。或許再多比幾次就會很習慣了XD。不過對我而言

比賽的結束代表大學生活的告一段落。

我的大學生活極其簡單,念書、研究、思考概括了全部的生活,在前三年的大學生活,我得學會太多太多事,撇開技術不談,對於人生價值的觀察,已經起了根本性的改變。人其實在每一個時段都很難準備好當下該做的事,因為都得同時看著未來,我在大學生活學會的其中一件事。

活在當下看著未來。

如果每個當下都是為了未來努力,那麼現在的當下一定顯得可憐,我的人生很簡單,只是單純的想要把事情做好,做好的同時,常常會帶來異想不到的驚喜。

大學生該學的技能或者是該有的心態,已經有太多文章在討論了,而我選擇的,是一個最簡單的方式。若要說大學和高中有什麼最大的差別,我想,高中的學科其實並不困難,為了因應所謂的大考而必需把熟練度拉到極高,大學的課程並不簡單,雖然老師僅僅考課堂上的東西,考不好或許會調分,但是如果不是對這個學門有所興趣進而下功夫苦讀,或許什麼都學不到,僅僅只是拿到一張文憑,而且這張文憑也不能說明什麼事。我在我的前三年生活中,大部分的科目是用混的混過去的XD 但是有極少數的科目,或許學校沒教,或許學校教很少,但是我肯花時間學習我想要學的東西,其實這就夠了。很多科目其實只要肯花時間,沒有學不會的道理,但是我只能說我念書的時間仍然太少。

當班上同學都立志考取好學校時,我祝福,但是我同時也想跟自己的學弟妹說,好好的想想,大學和研究所文憑對自己而言是什麼? 如果真的虛渡了六年的時光,或許真的是一件非常可惜的事。

有看到朋友的網誌,怕自己沒有準備好,我真的覺得朋友是一個很認真的人,我的想法是,人永遠沒有準備好的時候,但是人可以靠著自己的熱情與時間(或許是肝XD?)去克服很多很多問題,大學之所以學不好,因為還沒有找到領域想要定下來,多聽聽多看看,有一定的學習廣度,大學生活其實就不虛此行了,找到目標就會等於找到不停止的動力,在這之前,確定自己所要的是什麼。沒有所謂的強與弱,我所認識的強者或者一般人稱為的神人,都是在該領域專注極長時間下的結果,有足夠的專注及熱情,其實每個人都一樣的。

或許我下一個該思考的問題是,讓自己變好和所謂的反社會傾向有什麼關係?

---
有一種還沒寫完的感覺。

星期二, 9月 16, 2008

興趣

pigtail 的興趣是balabala(族繁不及備載),看到很多人都有明確的興趣,我的興趣為何?

寫作,閱讀,思考,寫程式。

---
結果花的時間剛好是反向序列XD

星期一, 9月 15, 2008

倒數

今天是開學,比賽只剩一個禮拜,而文件和程式大致上完成了,還有一些事要做。

每當我規律作息一段時間之後,就會有某幾天比生理時鐘早上很多醒來,通常這些天,我會好好的思考一些事,不然就拿來閱讀書籍,今天是特別早的日子,但是我卻覺得空盪盪。

颱風來了三天,雖然現在已經遠離台灣了,但是天空依舊黑沉,算了,收拾傢伙去實驗室吧。

eating問,我寫什麼是比較認真的,當這篇文章沒有出現大量XD的時候,大概就是我寫作比較認真面對的時候。

---
胡言亂語。

星期五, 9月 12, 2008

颱風

去年的中秋節我沒有回家,因為比賽進入倒數最後一個禮拜,今年的中秋節依舊沒有回家,今年的比賽依舊剩最後一個禮拜。

去年和今年都有颱風,也是一種很奇妙的記憶。

---
風雨變大了,明天大概是燕麥片+泡麵 XD

星期三, 9月 10, 2008

有趣

今天看ptt C_and_CPP 版,PcGrek 版友寫了一個非常有趣的code


double** mat = (double**)malloc( h*sizeof(double* )+
w*h*sizeof(double));
double* x = (double* )(mat + h);
for(int y = 0; y!=h ; ++y, x+=w )
mat[y] = x;

free(mat);


---
看懂真的覺得很有趣

專題進度

09/20就要交出複賽文件了,在昨天cllee就停止要求增加新功能,我倒是蠻高興的,並不是說不樂於接受挑戰和工作,實則是想要把已經寫的程式,好好的修補一番,最近的這幾個禮拜都陷入在修改已知的bug和增加未知的功能上。

Clara: yen3,程式有bug喔~
yen3: 我記下來了(寫在紙上~)

yen3: Clara,database有功能要加。
Clara: 嗯嗯,馬上加好。
yen3: eating可以拜託你嗎? 有GUI要修改。
eating: 沒問題。

cllee: 程式那裡可以再加個功能。
yen3: 我這幾天會寫(寫在紙上~)

當然,今天也要開始對說明文件進行排版,發現,這個暑假過的很快,時間勒過就親象是鳥仔勒飛~是時候把最後一段該做的事完成了。

我想,該是跟Clara借個相機,我想把一些事照下來。自己的相機,也不是說不愛惜,電池六年,再怎麼充都會沒電,還是得尋求一個解決方案就是了。

---
還有好長一段路要走。

星期二, 9月 09, 2008

魔幻奇緣

簡介

常聽過胡迪尼,但是不知道是誰。看wiki也覺得這個人頗有趣的。

---
應該從內心來關心,而不是從表面。

星期四, 9月 04, 2008

國境之南

國境之南

詞:嚴云農

如果海會說話 如果風愛上砂
如果 有些想念遺忘在漫長的長假
我會聆聽浪花 讓風吹過頭髮
任記憶裡的愛情在時間潮汐裡喧嘩

非得等春天遠了夏天才近了
我是在回首時終於懂得(也許天氣永遠會那麼熱)
當陽光再次回到那 飄著雨的國境之南
我會試著把那一年的故事 再接下去說完

當陽光再次離開那 太晴朗的國境之南
妳會不會把妳曾帶走的愛 在告別前用微笑全歸還

海很藍 星光燦爛 我仍空著我的臂彎
天很寬 在我獨自唱歌的夜晚
請原諒我的愛 訴說的太緩慢

星期二, 9月 02, 2008

認真

認真的玩一場吧。

---
人生

想法

人是一種以形而上的思考和形而下的慾望結合。

若說要懂了什麼,恐怕只能說什麼都不懂,但是學會面對自我想法時,往往帶著一種嘲笑,拆開成赤裸裸的慾望時,其實人與人之間沒什麼不同。

堂而皇之的華麗遮掩了原始慾望的單純,拆開包裝之後剩下的又是什麼呢?但不幸的是,人長越大,自已為自己覆蓋的一層包裝,張愛玲所說的荒涼於心中徘徊不散。

一個故事就此開始。

---

星期一, 9月 01, 2008

最近

最近,其實,生活很平靜,今天才去看了海角七號,有很多想法,等過一陣子再寫。

禮拜六日,為了不要讓自己太無聊,繼續寫程式,把cllee交待的新工作做的差不多了,明天要meeting,希望能順利一點,明天早上再把最後一個bug修掉即可。閒暇時利用一些時間在看boost,覺得有趣的東西都是functional programming的東西,所以我還是回來看FP好了。

還有三個禮拜複賽截止,還有二個禮拜就開學,不用打卡,不用寫工作日誌的第一天,其實很棒,但生理時鐘早就被調成打卡的作息了,早上八點醒來,下午五點吃飯,或許就這樣子發現我很容易被某件事制約?

也一直想寫一些黑暗的東西,但是心情太平靜,反而寫不出來? 也好,寫些平淡的東西也不錯。

---
閒聊文

星期六, 8月 30, 2008

小試一下

第一次裝boost,雖然知道很久,但是一直沒時間試,今天寫了簡單到爆的程式碼

#include <boost/array.hpp>
#include <iostream>
#include <algorithm>
int main(){
boost::array<int, 10> a;
for(unsigned int i=0;i<a.size();i++) a[i] = i;
std::copy(a.begin(), a.end(), std::ostream_iterator<int>(std::cout, " "));
std::cout << std::endl;
}
輸入指令如下
g++ -I /usr/local/include/boost-1_36/ test.cpp
可獲得如下結果
0 1 2 3 4 5 6 7 8 9 

---
我真無聊XD

星期四, 8月 28, 2008

Fink Project

Fink Project 是一個可以讓你以套件管理形式來管理OpenSource的安裝套件,整個安裝說明在此在dkg解壓縮之後,安裝完,記得把"FinkComander" 移入應用程式中,會有一個非常像ubuntu的套件管理程式(其實安裝指令也有部分雷同,估計兩者有血緣關係XD),可以試試,比起MacPorts而言,有更多選擇。

---
學習。

旅行

暫定這個時候,09/20複賽截止,還有很多事可以做。

---
準備與期待

星期二, 8月 26, 2008

專題

有一個段落,比較不會那麼擔心,有一種放鬆的感覺,雖然還有很多事要做,但是是安心了些。

---
平衡

星期一, 8月 25, 2008

Sixpence None The Richer - Within A Room Somewhere

I breathe the mist
Floating about the stars
I can caress
With velvet hands
I breathe the mist
Floating within, without this pen
This pen between my fingers

Messiah
I know you are there
Within, without me
Holding me
Messiah
I know you are there
Catching, carrying
This beautiful mess

Escape the pain
Within a room somewhere
Escape the pain
So deep inside the soul
I have no key
No map to find

星期日, 8月 24, 2008

裝死

這是一個連裝死阿宅都會被打擾變成嚇死阿宅的年代~

---
下次要記得啊...Orz

真實與性

今天下午花了時間去看了 失樂園 這部電影,不過我沒有看完我就關掉了,因為我的心底很沉重。

我不懂性,因為我不知道。

看這部電影時,導演用冷色調的藍色表示夜景,不斷的切斷內心與真實的場景,其實,當人深陷其中時,是愛情造就了性還是性造就了愛情,已經分不清楚了,一再的沉倫,當男主角說我們一起下地獄時,何謂救贖呢? 在這部的電影,冷色調的夜景,似乎對我而言是一個失恆的世界

閱讀的小說,多多少少都會有少則數行,多則成頁的有關性的描述,有的表達,只是為了一種情感的抒發,有的想要藉由性表達某一些觀點,更有者只是為了讓書更有看頭,等到人漸漸了解是怎麼一回事之後,突然有個感想

人長越大不是祕密越少,而是越無法承認自己真實的內心,或許真實的內心參雜慾望時,越發難以了解真實想法。人之所以複雜,是無法面對真實的自我,就有如日劇白夜行的最後警官所說,她已經無法說出實話了。

看著很多發生的事,其實我還蠻喜好閱讀D51的小說,但總是有一個心中的疑問,為什麼每篇小說都脫離不了夜店?

當人陷入一個巨大而被吞噬的寂寞時,性與真實,謊言與否已不重要,唯一的是抓住當下的快樂,而何謂解放,其實已經失焦。

這個社會存在著多種角度的社會,只是剛好我選擇了一個最簡單又幸福生活,但是豈又能知道進入這個旋渦時,又能剩下多少真實的自我,不哭泣面對明天的太陽。

唯一能做的,快樂的過生活。

---
有感

星期日, 8月 17, 2008

如何用Haskell寫出笨拙的99乘法表

目前想法如下。

mult_line x = map (x*) [1..9]
mult_table x = map mult_line [1..x]

之後,我在ghci中呼叫
*Main> mult_table 9
[[1,2,3,4,5,6,7,8,9],[2,4,6,8,10,12,14,16,18],[3,6,9,12,15,18,21,24,27],[4,8,12,16,20,24,28,32,36],[5,10,15,20,25,30,35,40,45],[6,12,18,24,30,36,42,48,54],[7,14,21,28,35,42,49,56,63],[8,16,24,32,40,48,56,64,72],[9,18,27,36,45,54,63,72,81]]

星期六, 8月 16, 2008

雞湯哲學

yen3媽: 兒子,今天喝雞湯好嗎?
yen3: 嗯嗯
yen3媽: 有一塊雞肉如何?
yen3: 嗯
yen3媽: 二塊雞肉?
yen3: 嗯
yen3媽: 三塊雞肉?
yen3: 我沒辦法吃這麼多...
yen3媽: 那三塊半?
yen3: ...

---
母親總是富有哲理XD

返家

已經不記得上次是什麼時候返家,這次回來透露著陌生的熟悉感,家人聚在一起的感覺非常美好,從美國回來的姊姊送與我和efang衣服各一件,也拿到了Introduction to Funcitonal Programming 2/e,雖然上面沒有簽名XD,還是開心的想要大叫XD

---
我回家了。

星期四, 8月 14, 2008

信仰

我並不是一個無神論者,我是一個普通人,我相信很多事。本來還想寫很多很多事,先從這篇寫起吧。

昨日看"旅美小簡",陳之藩先生在1955年29歲時完成了這本書,,其實人的核心概念並沒有改變多少,但是我們卻了花了更多時間來證明真理的價值。看著他的大學時代與胡適的信,邊看邊感覺汗顏,在大學時代,能對這個世界抱有遠見及書寫社會,讓身為大學生的我,愧對大學生的名稱。

現在不是自我檢討的時候,看旅美小簡可以理解一些事。科學家的信仰是所追求的真理,及其這個存在理性的社會。不是不相信宗教,而是超越宗教之上,還有更值得我們做的事。我不是一個科學家,但是我的信仰是科學。

說一點輕鬆的,不知道美國那個有名的研究機構,對於一群大學生做了問卷調查,其中有一群人立志成為有錢人,有一群人立志把事做好。過了很久之後再做一次問卷調查,發現立志把事做好變為錢人的比例比立志成為有人錢的人比例更高。不過我可以預估到我以後會很窮...XD

從事學習或研究工作最有趣,也是我最喜歡的一點,透過自己的力量,用一個自己所能理解的角度,多接近世界一些。

---
或許有一天我會需要別人救濟XD?

星期三, 8月 13, 2008

感嘆

Thinking in Java 4/e 中文版現身了,但是The Java Programming Language 4/e 中文版卻不知在何處...

---
Orz...

星期二, 8月 12, 2008

有關物件導向的胡言亂語

老實說我也不知道我要下什麼標題比較好XD

昨天閒逛時發現,今年人次快要接近一萬了,想一想也沒什麼好高興的,從Google點進來的都是去年的文章居多XD 可以說今年到現在為止是過的比較懶散的生活,不過我想,寫blog還是一件相當有趣的事。

暑假過一個多月了,每天都在寫程式中與閱讀渡過,可謂是過的相當充實,目前只有滿心希望能夠把眼前這個專題完成。並不是每一次都可以遇到很好的合作對象的。

最近也沒什麼空在閱讀小說上,以前幾個禮拜看的"殺人本能"就覺得不甚讓人覺得緊張,還是戰慄遊戲比較提升我的腎上線素,應該是說,我最近的興趣是閱讀重構之類的書,書的清單如下。

  • 物件導向設計模式: 可再利用物件導向軟體之要素(Design Patterns)
  • Object-Oriented Analysis and Design with Applications 2/e (這本尚末閱讀)
  • 重構 - 改善即有的程式設計(Refactoring - Improving The Design of Existing Code)
  • 重構 - 向範式前進(Refactoring to Patterns)
  • 敏捷軟體開發 - 原則、樣式及實務(Agile Software Development: Principles, Patterns, and Practices)

其實看了好幾次Design Patterns,我從來沒有記得裡面的經典patterns,這種書本來就是看完就忘,如果為了pattern而pattern,很容易陷入一般教科書所謂的pattern happy,有幾本書提到使用XP(eXtreme Progarmming)來使用OO,對我而言,從這邊開始去了解整個思維是不錯的,雖然好像不是那麼多人注意就是了,在前陣子 "Refactoring to Patterns" 在天瓏暢銷排行榜上,我們只能保佑,不要有一堆人買回去供養XD。

以自己大膽的猜測而言,其實學習 OO 沒有入口,因為原則非常簡單,OOP 是一門藝術,但是並不科學,因為他並不像數學一樣,經過一連串的演算即可獲得結果。而是得靠一個一個unit testing去確認程式的正確性。其實進入這個世界,就有如木匠帶領學徒一樣,技巧只有幾樣,但是不斷的精練自己的能力,方能寫出有如藝術品的程式。雖然擁護者會說,OO 是最接近人類思考的方式,並輔以相當的科學佐證。

物件導向最重要概念為class hierarchy,利用class hierarchy方有可能把物件導向用到淋漓盡致,但是問題來了,要用多少技巧來包裝? 過或不及都會造成整隻程式的有趣現象。書上所提及的所有物件導向技術都是用以改善一個程式的class hierarchy,抓住這個重點再來閱讀,我的心思越辯越明。

此外再提及一個在學校有趣現象,大家都會說,物件導向很重要,要盡快學會,但是卻看不到幾人能夠善加利用而教授他人,或許過幾年我也會聽到XP很重要,programming的發展長時間在配合業界,而非配合科學。

何謂Computer Science,推薦ptt CSSE版上瞧瞧高手討論。也是不錯

---
果真是胡言亂語

星期六, 8月 09, 2008

感謝

不知道要下什麼標題才好

Clara's blog article about birthday

朋友提及才發現,升大四的時候,好像很少有人有過生日的習慣了,蠻感謝同組組員的,應該是說,我不是一個擅長表達的人,一直不知道怎麼說自己的感謝之情。還是很感謝eating, Clara, fire7617。

想想我們這組感情也不錯,始終都是自己白目了些。謝謝大家。

---
謝天

Josh Ko 與 scm


昨天得到甚為有趣的照片,為Josh Ko 和 scm 的合照,兩個人亦師亦友,不錯不錯

順便幫Josh Ko徵煮飯婆女友,需要長期飯碗熱情專注的人,可以出門左轉,歡迎歡迎(記得給介紹費)

---
紀念一下

星期二, 8月 05, 2008

生日

其實,每一年都會思考,我是否有足夠的資格過生日...

不知道從什麼時候開始,我覺得我少不更事的年紀太長,認為自己不甚好,從理所當然,到覺得自己應貢獻社會。在更多時候,覺得自己應該要會某些事,卻總是一事無成。雖有Josh鼎力相助,發現自己興趣為何,從imperative programming 跳到 functional programming 學習(我曾自嘲,這跟我打了九年的注音不打從嘸蝦米的基本學起其實差不多(笑))。不知為何想起國文課本所提及的一句話。

真實偉大的樸實無華

少不更事看書時,只是為了炫耀自己會了什麼,並不是一個可取的想法,現在看書的時候,只是單純想要了解一件事,到現在我不認為我理解了這句話,但是我所想,持續的努力,或許可以了解這件事。雖然一事無成,但努力前進,總有一天會找到答案,笨笨的前進,總可以讓一群人了解你笨笨的前進為何。

我曾跟Josh聊過一連串的事,才覺得自己總是浪費了一堆時間,不過我總是不後悔,因為因此我才會更珍惜當下與未來。就某個程度而言,有著一群我很感謝的朋友,我可以安靜的過生活,雖然實力不足,但更應該努力幫忙身邊的人。今年並不想和往年一樣列了一堆人名,大家不一定認識,且少列誰我都會覺得抱歉。我想說的是

希望,身邊的大家都活的平安快樂。

---
謝謝大家,今年是一個相當愉快的回憶。

星期一, 8月 04, 2008

列印

第一次買碳粉,才知道原來很貴,2650...Orz

人生因有夢想而為大,所以我正在K我印下來的兩份文件 "Introduction to lambda Calculus" 和 "Yet Another Haskell Tutorial"。

我的夢想很簡單,我想知道如何寫好程式,然後帶領一個團隊把程式寫好。我的兒時夢想很簡單,我想要寫出一個可以讓很多很多人用的好程式,我一直都因為這個原因前進。我不是一個有能力的人,我更不是聰明的人,但是我相信Randy Pausch說的兩句話

如果你認真過生活,那麼你的人生自然會帶給你答案
阻擋你的夢想必有其原因,而這道牆是讓你展示你有多麼想達成夢想。

其實在一兩個月前就知道有關Randy Pausch教授的事,但是腦中一直在思考非常多事,我想我有非常多的事想說,而這篇,只是一個開始


---
認真過生活,人生自然會帶給你答案。

星期日, 7月 27, 2008

Haskell Learning Note(2)

欠稿很大,預估要寫到folder後才能停一下。

環境
建議是用ghc(The Glasgow Haskell Compiler),大部分的環境都有提供binary,直接安裝即可,而ghci是一個互動介面,較為常用指令如下。

  • :q 離開ghci
  • :l xd.hs 載入某個module(Haskell副檔名為.hs)
  • :r 重新載入module
  • :e 編輯所載入的module的文字檔(我在mac上,預設是用vim開啟)

簡單的開始
如果撰寫了一個function,可以使用:t 來看其形別要求,舉個例子

Prelude> :t sum . map read . words
sum . map read . words :: (Read a, Num a) => String -> a
剛開始學習,學會看type是一件非常重要的事。然而,就此打住,想先講講一些別的東西

Just Function
在Haskell中最小的組成單位是function,想要表達一堆資料,可以用list(不知道對不對,不過倒是知道list沒有這麼簡單),一個function必有其input 和 output,然而,我學習的第一個問題,怎麼樣得知input和output的要求為何,如果跟C++ STL一樣,use type as an argument,必有其限制,所以:t非常的重要(因為就是拿來看型別要求),在Haskell裡,有著非常神奇的type system,有好幾次我問Josh,為什麼會如此時,卻超出我的範圍,以剛剛說的例子而言

Prelude> :t words
words :: String -> [String]
(yen3註:一個String為input,產生一個為String的List)

Prelude> :t read
read :: (Read a) => String -> a
(yen3註: 一個String為input,產生一個型別為a符合Read的要求)

Prelude> :t map
map :: (a -> b) -> [a] -> [b]
(yen3註: map是一個神奇的function,基本原理就是,input為一個list,output也是一個list,但是map會套用一個function,將list of a轉換到list of b,簡單的來說,就是對每個元素做同一個動作)

Prelude> :t sum
sum :: (Num a) => [a] -> a
(yen3註: input 為一個list,輸出後型別為a符合Num的要求)
接著再回來看看原來的例子
Prelude> :t sum . map read . words
sum . map read . words :: (Read a, Num a) => String -> a
(yen3註: 變的很明顯,輸入一個字串,而輸出一個型別為a符合 Read 和 Num,全部串起來做一次就會變成...)

Prelude> sum . map read . words $ "123 456"
579
(yen3註:把字串根據空白分開成為個一list,然後每個元素被讀取成某一個型別之後,sum把每個元素做一求和的動作。)
其實這一行沒有解釋的很清楚,何謂Read要求 ? 還有,轉型的時候為什麼要轉成a? 這就再說XD (因為我也不會XD) 其實就學到這裡的時候,可以猜到一件事,Haskell自己幫你做了非常多的事,很多事硬要推測到底,其實反正看不懂。看清楚一個function的要求為何,似乎變的很重要,看懂他的運作方式會更有趣



每次連載都不會寫太長,基本上都是利用專題空閒寫作,我就盡量寫啦XD


---
基本上這篇的註都是大膽的猜測,但是想不到要用什麼字XD

Haskell Learning Note(1)

原本想說要用什麼 Learing about fuctnional programming using Haskell 之類的標題,但是一則是標題太長,一則是,我沒這麼專業,受到Josh Ko幫忙甚多,如果有任何錯誤是我表達不好,如果你看的懂,請出門左轉到Joshsoft留言感謝XD

What? Why?
什麼是functional programming? 簡而言之,一個programming組成的最小元素為數學性的function,在真實世界中的數學函式是沒有任何side effect,也就是說,給你一個input就會產生一個output,中間不會改變其他事。所以就某種狀況而且,這種思維非常適合數學好的人學習(我數學不好XD)。

functional programming之所以紅不起來的原因有很多,主要原因有二,第一,比起現在大部分的主流語言都來的慢,第二,如果很習慣現代的主流語言,學FP就會很痛苦(我就是那一個...Orz),但是誰都不能忽略FP本身強大的特性。在Erlang本身而言,善用了No side effect特性,以較為簡單的方法寫出平行程式。最重要的原因,現在的FP不再像以前一樣這麼慢了,但是良好的特性還是存在的。

Haskell是一個不怎麼紅而且推廣者也不打算讓他紅的語言,紅的FPL很多,Erlang, ML, F#都是,但是這些較紅的語言都允許一些現代主流語言的特性,反正都要踏入這個不紅的領域了,學比較純的東西或許比較有趣?

為什麼要學Haskell,最重要的原因,Haskell is a pure functional programming language,次要的原因,Josh Ko誘拐我成功了XD,如果夠純,或許我會從裡面學到非常多有趣的東西。

參考資料
基本上Haskell的參考資料中文的不是很多,入門的更少,看英文是一個比較好的方法,網站參考資料如下


而我目前的參考書單只有兩本
  • Introduction to Functional Programming using Haskell 2/e
  • Real World Haskell
然後我都沒有看過XD

連載中XD

---
考慮要不要寫在GooglePage還是wiki上

訂書

剛剛透過在美國的姊姊訂了一本 Introduction to Functional Programming using Haskell只能說,便宜一點點,不過還是覺得天瓏的代訂價3227有點誇張。

---
耶~期待~XD

星期五, 7月 25, 2008

寫程式的胡言亂語

這是一篇有關programming的文章,不想看的可以跳過了XDXD,不過最近的我似乎很少寫這些文章。

最近一直在寫C# with .net compact framework,老實說,我一直被微軟的名詞搞的暈頭轉向,當我有問題只能靠著MSDN來解決的時候,有一種很深刻的無力感...不過我不得不說,Visual Studio .net 是一個很棒的軟體開發工具(雖然eating畫GUI時常常出現記憶體堆疊錯誤,她應該是畫太好...Orz),這部分是專題兼比賽關係,所以我大概等到比賽之後才會提及可以提及的部分,如果中華電信有保密條款之類的,我也只能說聲抱歉啦。

所以我想要提及一些我最近覺得很有趣的部分。寫程式越久只會覺得自己越來越不會寫程式,最近的興趣著重在兩個大重點functional programming 和 Refactoring。

functional programming 最近頗有復活的傾向,據我粗淺的知道(轉錄自某個老師告訴我的故事),上一次FP紅的時候是在一堆人瘋AI(Artificial Intelligence)時,Lisp是一個非常聞名的FPL,在1990年代附近一堆人在做這個題目,但是並不是有那麼實際的成果,結果做這類的題目變人人討打。FP其實專長並不止於此,就我的了解,讓你寫程式更像寫數學一樣,No side effect,lazy evaluation,等等之類的特性,使得近代的FPL極具威力,而跟現在主流的Imperative programming大異其趣,著實是一個讓我產生高度興趣學習的領域,據Josh Ko描述,有比較靠近主流的ML和pure FPL的Haskell,外加我自己所買的Erlang,我想我的學習會以後面兩個為主。到目前為止,我還是不會寫,或許過一陣子,可以自己試著寫出一堆有趣的東西。

舉個例子好了sum . map read . words $ "123 456"我當初看到這行程式碼我就哭了,這可是我第一次碰C寫的要死要活的題目,轉成簡單的C++ Code;

std::string s = "123 456";

s += " ";
int sum = 0, temp=0;
for(std::size_t i=0; i< s.length();i++){
if(s[i]>='0' && s[i]<='9') temp = temp*10 + s[i]-'0';
else{
sum += temp;
temp = 0;
}
}

當然,上述的程式碼沒有做任何的最佳化寫法,不然可以用C的atoi()之類的function,重點是,再看一次FP的程式碼,光看字面就可以猜到程式的意思了(要了解沒那麼簡單,我被Josh Ko搞死了好久...Orz),以後會盡量把自己學習寫FP的筆記放上來,我想我有很大的機率會喜歡上這種程式思維。

接下來回主流Imperative programming XD,昨天嘗試的把Refactoring從第二章推進到第八章,這是一本我很少數後會後悔大一沒有買來看的書(當初錯過Effective C++也沒那麼嚴重),裡面提到種種的方法太漂亮了,從function level的Composing Method到Object之間的Moving Features Between Objects& Organizing Data等等的方法,給我在OOP上很多體悟,也再一次深深的了解自己基本功的不足,舉個例子而言,一般寫身份字號產生器時,最難處理的是每個英文數字所代表的數字,我在寫作時就提出了一個很簡單的方法

// normal writing
char c = 'a';
int value = 0;
if(c=='a') value = 10;
else if(c=='b') value = 11;
/*...*/

// better writing
const int c_value[] = {10, 11 /*...*/};
char c = 'a';
int value = c_value[c-'a'];

這個方法在Refactoring也有收錄,名字為Substitute Algorithm(6.9),Refactoring並不會改變程式所要表現為何,很多時候會把一個複雜的function拆成由許多小function所組合,由專家告訴你如何測試及重構出一個更好的程式,在看這本書時,是一個很棒的體驗,縱使自己原本就會復審自己所寫的程式碼,我想我還是會不定期的看看這本書,會給我什麼體悟

學習相關OOP的運用最大的問題是,我一定得知道這些事(Design Patterns, Refactroing ...),但是我又得忘掉他,然後在需要的時候想起來,而不是為了運用而運用,但是我想,或許我會在Refactoring改變一下作法,或許我很難體會怎麼用Design Patterns,但是我想我會很樂意的使用Refactoring來學會Design Patterns,這時候就不得不提到 "重構-向範式前進(Refactoring to Patterns)",我還沒閱讀,但是我覺得或許是一個行的通的閱讀。

還有很多想提的沒有提及,就下次再說吧。

---
好長的一篇XD

星期三, 7月 23, 2008

無言

繼主機掛點之後,螢幕(Benq FP71Q+)又壞了,跟上一次死在同一個錯誤,螢幕的開關壞了,距離上一次送修一年多。

我的桌上型電腦大概整組壞完了...有一種懶的修的衝動...

---
有一種很衰的感覺...Orz

星期日, 7月 20, 2008

程式與人生

原本想要回彰中講Generic Programming的,不小心講成這個XD

只能說自己在認識的人面前都會爆走,顯然是一個不太好的現象,講解的主軸還是GP,不過中間穿插了許多小故事,也講解了許多自己的想法,我想在這個blog再講一次。

我遇到許多人都跟我說要努力達成某件事,但是只有少數人能達到,沒到的人不是沒有這樣子想。
如果想要對自己構成某件改變,不改變自己的生活形態是不可能的,如果只有想一想之後,生活仍然一模一樣,我想不會有什麼改變。

要認真是一件好事,我想以後如果有類似問題,我會這樣子回答的。

---
所以我連NFS都戒掉了XD

星期五, 7月 18, 2008

表達

以前可以暢所欲言的我,似乎漸漸的消失。或許因為知道世界之大而安靜,保持更好的觀察與學習能力,在前進。

明天準備回去講我忘的差不多泛型程式設計,今天因為颱風只有中部停止上班上課。想一想還是頗要有趣的,一般都是其他地方停課的。還是說我可以就此偷懶,讓他們今天的上明天的課XD 不過人得認清現實,有這麼好嗎XD

時間充足的狀況下,我蠻願意準備這堂課給大家的。

---
似乎不會有時間充足的狀況

星期四, 7月 17, 2008

電腦

我的桌上型電腦掛的差不多了。

現在想想,這台當初升大一買的時候,可是一個不錯的配備,Athlon64 3500 + 1 GB DDR + Geforce 6200,在這台寫程式,著實十分快樂(不過那時候寫的程式老實說也不吃重),但是大一心情不好的時候,每天拿它來跑Need For Speed: Most Wanted跑到顯卡熱當為止,到大二之後,就不會這麼操了(和efang在一起了,沒時間玩XD),現在想想,大一操這麼兇的電腦,不掛也困難。

這個學期當機頻傳,不是顯示卡出錯,就是記憶體掛掉,昨天徹底掛點,開機時連逼聲都沒有,初步推測,主機板掛了,記憶體掛了一條(學弟幫忙測試得到的結果),顯卡應該也差不多了。想想,以前電腦掛掉,就會很有活力的自己下海測試,換零件,直到好為止,漸漸的,我只是想安心的寫程式,這學期用MB的時間非常長,所以連這台什麼時候掛的,我都不甚清楚,想想也甚為慚愧,疏於照顧自己的電腦,電腦也不太可能會乖乖幫你忙。

或許暫時還是以MB為主工作,等比賽比完,再來好好的修理它,總是要盡心盡力照顧好每一台電腦的。

---
感觸良多。

星期六, 7月 12, 2008

男人

Clara: 朋友問,男人都用下半身思考嗎?
yen3: 是啊,但是大部分有色無膽。

---
(茶)

乖乖

看了Zerolex的blog,我明天去買一包乖乖回來放好了。

乖乖傳奇

今天順利的和eating把GUI相關部分取得一個初步成果,接下來還是得忙自己的事了,efang回家,很多事在暑假得適應。明天還有事要做,得買兩本書,還好都不是自己買的XD。

---
研究 pkizzy 中。

星期五, 7月 11, 2008

Visual Studio + svn

Visual Studio .net 2005 or 2008 雖有 Team Suite 協助做版本控制,但是並不是一個非常好的選擇,當然,Team Suite(2008稱為Team System)還包括版本控制以外的功能,例如說可以做單元測試(Unit Class Test),等等之類的,由於Team Suite太肥了,我決定還是朝向軟體來協助。最主要的原因,要做到Team Suite的版本控制,Server端要裝Windows Server 2003,什麼鬼...Orz

Subversion(svn) 在 OpenSource 界是一個非常常用的工具,如果在純Windows的環境下,伺服器端,可以使用Apache + svn,是一個不錯的選擇。也可使用IIS + VisualSvn,網路上可以爬文,我就不再多廢話,我是使用後者(因為Server原本就有裝IIS,不想相衝)。

在Visual Studio .net 2005, 2008,皆可使用 Ankhsvn,這個軟體為一個plug-in的形式存在於Visual Studio中,不過並不是那麼穩定,可以使用TortoiseSVN來做為輔助(雖然大部分的狀況下他比前者還重要XD)。

如何讓很多人用在Visual Studio 用svn寫同一個專案,我試出來的方法為,先讓其中一個人建好project,用svn上傳之後,其他人先用TrotoiseSVN下載下來,之後直接開啟裡面的專案檔,在Visual Studio裡面即可設定好,可直接Commit,非常方便,不建議使用Anksvn來做設定新專案的動作,通常會有一些奇怪的事發生。

設定好了,大家可以快樂的使用svn來寫同一個專案了。

---
為什麼我覺得這篇的口氣很怪啊...Orz

星期四, 7月 10, 2008

最近

其實很多事很難以解決,明明每天都忙到很晚,感覺上總是沒什麼進度。或許只能說自己太久沒有上緊發條了。

Qt其實是一個很有趣的東西,我建議自己的學弟去學習,我自己還是在Google Static Map API上打轉,pre-fetch map其實有很多事可以考慮,可以試試。

開始閱讀和運動習慣,算了,想到再寫,超多事可以寫的,下筆此刻竟一個思緒也無。

---
無狀態

星期三, 7月 02, 2008

架構

人跟人之間的問題果然非常難,還是生程式架構比較簡單...Orz

---
雖然這次要生的架構也超難就是了

星期一, 6月 30, 2008

新工作環境


這幾天一直忙著趕期末project,今天算是稍微告一段落,跟Clara借來相機照一下自己的工作環境,大概暑假都會在此定居了。

目前只差床墊了,明天就會有嘍。

---
持續寫程式~

星期日, 6月 29, 2008

今日

我決定叫自己 Event-Driven Yen3。

---
狀況還蠻像的

星期五, 6月 27, 2008

大三下回顧

雖然還有一個project要完成,對我而言,大三下已經正式邁入一個尾聲。雖然這學期寫的程式都不大,但是也不少,雖不能輕鬆應付,但是也沒有遇到多大的問題,我想,cllee帶我們去比賽,在這個學期是有產生決定性的效用的。

思考了很多事,以學業上而言,有時候人不能思考太多事情,笨笨的去做,反而會有更多的效果,對於寫程式這條路而言,我才剛開始,我並不是跟Josh一樣很努力又有很好的結果,我是一個不怎麼努力的人,且很笨(笑)。早期大一大二閱讀的書到現在漸漸用的上了,不過卻有一股心虛的感覺,越用才越發現,原來以前的自己所學是不怎麼踏實的,但是也得說,如果以前不堅持看某些書的話,現在可能更無法把事情做好了。

對我而言,我希望盡量把我的現實面對生活拖到最後一刻,一直到現在,我還是可以很熱情的學習每一項東西,雖然這每一項東西考試不會考到,對於實質的生活不一定會有幫助,但是我喜歡。ycfu跟我說,你書看太多了,應該直接下去接個project來實作才對。這句話是對的,我理論不好,我寫程式也不行,有時候寫程式,下去寫就對了,並不用思考太多能與不能的問題。

最該感謝的還是cllee老師,在我覺得心情不好啊,人生徬徨的時候,找他聊聊,總是會給我一股最直接的力量,也感謝老師一直容忍我們進度落後,暑假我會一次補回來。

smallpig老師,對我而言,他是一個講話有點毒的老師(雖然blog一點都看不出來XD),不過從他的身上學到不少的現實生活的程式設計的想法與技巧,非常感謝老師,我這學期有一半的時間在寫他要求的程式,也可見我的功力不足,但也無妨。

ycma老師,有人說他悶騷,我覺得他是對某些技術存在著狂熱的老師,unix programming上的非常精采,雖然我們一直拖課,不然會聽到更多東西,但是這些事物帶給我是全新而不同的想法,也從老師身上學到很多編程技巧,雖然老師常常被我們嚇到XD。

efang,我很感謝,心情不好的時候,總是會陪著我,我會努力寫程式的。

eating,雖然你可能覺得你做不了什麼,但是一個安心寫程式的環境非常難求,沒有你,我也辦不到。

clara,雖然你常手殘XD,不過常常從你身上學到很多很有趣的程式想法,讓我的腦子開通了不少。

fire7617,雖然你常看我不爽,但是感謝你容忍我一直犯錯,我們要一起向前衝。

gb014388,全方位的心靈導師,以後還是靠你了XD。

其實,在這學期才完全想通一件事,我一直很想認真做專題,但是專題會卡到研究所考試,我的想法很簡單,我想把專題做好的原因是,我想做好一件事,做好一件事的態度會影響我一輩子,然而,今天考研究所是一個選項,當然,沒有考上是一件可惜的事,重點是我考研究所是為了什麼。在人生的目標前面,路不只有一條,但是我要選擇我做起來不會後悔的路,如果今天沒有做好該做的事,考上研究所也是沒有用的,做好該做的事,接下來才能談下一步,能影響人生的,往往是想法,而非現實生活的事物。我會試著努力準備研究所,但是,在把這一件事做好之後。

這個學期生活非常的簡單,連愛看的日劇都很少看了(這跟桌上型一直當沒辦法抓日劇看也有很大的關係XD),事情比以前多的狀況下,如果保持同樣的生活,能做的事只會比以前更少,得要有所交換,才有辦完成自己想要做的事。

---
好零碎,不過想法只有這些。

qt

php project暫告一段落,明天試著用Qt看看

---
大膽的嘗試。

星期三, 6月 25, 2008

開始

期末考的結束,代表寫程式的開始。

---
現在的壓力比期末考還要來的大。

星期二, 6月 24, 2008

觀察



由於blog去年有寫了Graph Algorithm的筆記,剛好今年smallpig也用了相同的簡報來上課,其實,由圖中就可以知道,系上大概什麼時候期末考XD

---
真明顯XD

星期一, 6月 23, 2008

期末考

好久沒有對某一科這麼堅持了,明明沒有考試就會過的科目...

---
下午的科目是該堅持一下了

星期六, 6月 21, 2008

日落

很高興認識Zerolex這位朋友,他在PHP和C上的功力非常好,不像我一個四不像的人XD 私下聊天才發現,他是一個很有趣的人,但有身為資訊人應有的堅持,假以時日,會閃閃發亮的。

---
已加入blog sidebar

星期四, 6月 19, 2008

花園克拉拉

Clara是我少數認識會寫程式的女生(沒辦法,資工系女生本來就少XD),在認識她的大部分,她的寫程式其實架構良好,問題都不大。

不過當她的程式有問題,就是大家該撞牆的時候了XD 這是因為絕大部分時候,她錯的並不是程式問題,也不是邏輯問題,也不是架構問題,而是

打錯字問題...Orz

打錯字倒也不是一個很大的問題,她的手殘從來不會拖超過第二天就可以找到,只是想做個紀念,因為這個學期好像四次還是五次她的程式有大問題都是打錯字XD 這某個層面而言也不錯,至少沒有很大的問題存在。不過當辛苦幾個小時之發現是打錯字的問題,我想這心情也頗難描述XD。

不過總和而言,她還是一個很寶的人,尤其在寫程式上XD

---
做個紀念XD

星期二, 6月 17, 2008

小小嘗試

發現這個blog的程式文似乎沒啥人在看,所以想做一點嘗試,因為自己的英文很爛,寫程式文時,又很容易中英夾雜,所以以後應該會試著用英文寫作。但是鑑於自己的英文實在是很爛,所以請大家多多指正了~

---
拜託大家了~XD

星期日, 6月 15, 2008

Google Developer Day

這大概是我第一次參加Google的活動,也感覺到Google非常的有錢XD 同行的人不少,所以拿回來的餅乾也真的不少XD。

進入正題吧,由於專題需要,選擇了Maps API,由於自己的興趣,選擇了Clound Computing,我對於如何寫出平行程式具有蠻大的興趣的,做Application並不是我的強項。

Maps API 本身已經算是非常的完整,不過由於架構在Javascript上,事實上我覺得是AJAX,在手機上是無法使用的,雖然有Google Map Mobile,不過是一個close software,問了在會場的工程師,得到的Soluction有兩種,一種是,找到夠強的browser,一種是,嘗試去讀tile server(工程師說,網路上有很多破解可以直接讀的方法XD)。等事情告一段落會試試這些方法。

Clound Computing 這個技術其實是一個非常有趣的想法,一直會思考一個問題,如何寫出sequentional program,但是具有平行運算的效果,many to many,其實還是一個client-server的架構,但是把one server變成many server時,這個問題就變的很複雜而且很有趣。

題外話,每個人都跟我說在會場的女生很少,為什麼我會覺得很多,難不成我是錯覺嗎,在此節錄eating的想法 "少部分的女性中,大部分的女性來都是家眷而非相關科系的" hmm 觀察入微,不過我不知道耶,我現在一整個還是在思考會場所聽到的東西。

---
大概就是這樣XD

星期六, 6月 14, 2008

想法

我的想法跟大部分人沒什麼不同,如果對這個議題沒有興趣可以跳過(笑)。

前幾天,Smallpig老師丟出一個問題,我們憑什麼覺得Microsoft不好,你有付過一毛錢給他嗎? 而Google又真正好嗎? 免費的通常最貴 我只能說,我付了不少,不過我也承認,遠小於我使用的數目。

有關MS的討論,我在很久很久以前轉錄過一篇文章,我永遠都認為以前少不更事,當然,現在也沒多好(笑)。對我而言。

其實Google和Microsoft都在做一樣的事,只是Google做的比較成功。

MS其實是一個商業公司,通常在產品輸人時,會傾向把該公司買下來,不然就降價因應,最後不行才會真正想找人寫出一個不錯的軟體,今日的我不喜歡MS的原因,大概是不喜歡他的商業手法吧。雖然有時候我真的覺得MS有事沒事就要自己造一堆只有他的軟體能用的標準出來,讓software portable非常的低,這點也是讓我不喜歡用他的工具開發的原因。

我不喜歡被綁死的感覺,尤其是很貴的綁死。

Google其實是一個廣告公司,當然不可否認的,他們做的事真的非常棒,只是Google也是嘗試包下所有的Web Service,但是今天Google不會被人垢病的原因是,他所提供的服務通常是免費的,而且沒有很恐怖的廣告佔據你的眼睛。但是簡單的來說,Google就是想要包下所有的Web Service,然後放上廣告吸引人去點選,從中獲利。雖然表面上看起來沒有什麼很殘酷的商業手法,但是每推出新服務,無法避免的會對現有的廠商造成衝擊。其實會有一種猜測性的想法,如果今天新出來的一個idea,縱使想出來的人有辦法實作,那麼依今日Google的實力,是否有辦法找一群非常好的人把該創意複製下來呢? 不可否認的,Google可能有著全世界最頂尖的人才。

大者恆大,免費的最貴。

---
想法到此。

便當

今日參加Google Developer Day,中午的便當是我吃過最高級的,竟然會有我吃不完的便當XD

---
國網的便當...唉...Orz

星期五, 6月 13, 2008

誘人

雖然我對functional programming具有高度興趣,但一直沒有時間XD,如果我不太可能做相關理論,那麼學會寫functional program也是一個不錯的事情,今天看到了Erlang 程式設計 (Programming Erlang: Software for a Concurrent World)的出版,好誘人啊,有空應該會去看看。

此外,jjhou與陳裕成合譯的書也出來了"重構-向範式前進 (Refactoring to Patterns)"應該也會列入閱讀清單裡。

---
說不定就這樣子買了XD

星期四, 6月 12, 2008

BTree完工

比預計來的順利,簡單的文字介面也完工了。

---
介面比較難寫XD

當大Mac遇見小Mac



昨天有gscott老師詢問關於MacOS的相關設定問題,我主動要求幫忙整理他的電腦,於是有了一個很有趣的畫面。

---
雖然這還蠻常見的XD

最近

好久沒有紀錄一下了。

首先,還是恭喜好友的決定啊,畢竟是一件好事。

自己生病了兩個禮拜之後回來寫了三天的btree,預計明天或後天就接近尾聲了,生病的時候想了很多事,大部分都是蠻荒誕可笑,病好了之後也花了比較多時間在與朋友閒聊,讓自己不要那麼像機器。

人不是機器,如果像機器總有一天會倒。

養病時也看了一點書,母親也嘗試告訴我,人啊,一天的時間就是那麼多,每個人都很忙,與其還要想有多少事情要忙在擔心,不如想想完成多少事而開心吧,真是一個非常棒的想法,怪不得我的生活步調越來越慢,但是效率並不以前差。這個學期著實寫了不少的程式,雖然都是小程式居多,不過寫久了,對於寫程式的速度有相當的提升,人果然是要操的,雖然在這個學期休息時間是變的很少,不過依舊開心的過生活。縱使生活對於一般人乏善可陳,但是我越來越喜歡這樣子單純的生活了。

---
單純即是幸福。

星期三, 6月 11, 2008

debug

Btree實作的差不多了,只剩下delete要檢驗,而有關delete的部分寫超過200行。

---
大部分都重覆,所以還蠻煩的XD

星期日, 6月 08, 2008

seekg() and seekp() in C++

前幾天和efang討論一個問題,如何Random access a file,最主要要問題是能跳到檔案任一byte處進行寫檔和讀檔動作。我提出來的第一個解決方式,使用Unix System function即可搞定,對於unix而言,everything is a file,於是可以寫出這樣子的code

struct _bnode{  /* ... */  };

_bnode node;
int fd = open(filename.c_str(), O_RDONLY);
lseek(fd, index*sizeof(_bnode), SEEK_SET);
read(fd, &node, sizeof(_bnode));
close(fd);

write的code也差不多,我就不寫了,這樣子的確可以迅速的完成我想要的目的,不過efang問我,seekg和seekp呢? 好問題,我從來都不知道這兩個function(看來我熱愛C++的牌子可以收起來了XD),這兩個funtion也的確屬於C++ Standard,於是我又寫了測試碼如下

ifstream infile;
infile.open(filename.c_str(), ifstream::binary);
infile.seekg(index*sizeof(_bnode));
infile.read(static_cast<char*>(static_cast<void*>(&node)),
sizeof(_bnode));
infile.close();
infile.clear();

寫檔也一樣,只是把seekg改成seekp,也就不寫啦,其中inflie.read()是用了一點取巧的方法,因為C++是strong-type,所以得把_bnode*強制轉型成void*,才能再轉成read function protype的char*,這樣子對於讀取整個struct _bnode也方便的多。


---
看來efang比我更熱愛C++ XD



2008/06/17
In fact, it is not easy in random writing files. we can try to use the std::ofstream argument.

std::oftream outfile;
outfile.open(filename.c_str(), std::ios::in | std::ios::out | std::ios::binary);

It would avoid some problems.

星期二, 6月 03, 2008

休息

沒有全好,回家緩慢休養中,我答應了大家還要給大家一個健康的yen3 !!

---
努力休息中的XD~

星期六, 5月 31, 2008

上工

睡了好多天,該是上工的時候了,所有進度已經延後三四天了。

---
雖然中間還是偷偷解決了幾個簡單的作業XD

復原

大前天燒到37.6,前天燒到38.2,昨天燒到38.5,今天起床和一般沒生病感覺無異,只是體力差了一些,希望是好了。

---
一直發燒的感覺很討厭...Orz

星期四, 5月 29, 2008

休息

幾乎從大二以來每個學期都有一次過操勞發生偏頭痛,睡一整天就可以康復的差不多,這一次比較不一樣,剛開始是偏頭痛,後面直接發燒,在efang的陪同下看了醫生吃了退燒藥才沒事。

不過在此很感謝fire7617, gb014388, ColdFunciton, Edson,沒有大家,我不太可能好的這麼快。

---
聽說有人對我沒去上課很不爽XD。

星期二, 5月 27, 2008

寫作業

比想像中來的麻煩,不過積極解決中。

---
不解決也不行,哈

星期一, 5月 26, 2008

好友創作


今天好友snake傳了一張圖給我,是有關於期末考的感觸的,我看到了,雖然心有所感,但是不得不佩服這樣子的圖,極具大膽性的張力但是不失細節,還蠻喜愛的。

但是因為她才想到,對吼,期末考近了XD

---
管他的XD

星期日, 5月 25, 2008

戰略改變

聽從Josh的建議,一次專一解決一個程式,暫停分時多工模式

---
這對我也比較輕鬆

星期六, 5月 24, 2008

耐心

在什麼程式都很想寫的狀況下,寫程式得更具有耐心才行。

---
不過程式也有可能多到寫不完XD

星期四, 5月 22, 2008

OpenOffice 3.0 beta for mac

其實我一直是OpenOffice的愛好者,大概是因為他的跨平台性比起MS Office好了很多很多倍XD,3.0 beta脫離了x11,其實我也不知道是好是壞,但是執行起來還蠻穩定的,大部分不要太複雜的簡報都可以正常的觀看(隨機客的簡報看起來會變的非常慢XD),速度只能說差強人意,期待正式版嘍。

---
真是的一個很不錯的軟體。

閃光

最近不斷有人跟我反應說我和efang的blog太閃了,節錄某人對話如下

我一直很想看內文,不過旁邊那一塊太亮了,我都看不到

---
拍謝拍謝,我會改進XD

星期三, 5月 21, 2008

Windows Mobile 6 SDK 隨手筆記

由於完全沒有相關的開發經驗,所以其實去了是受益良多,一時之間也記不下來,我學新東西一向只著於兩點,一點是目的,一點是可用資源有那些。

Windows Mobile 6 Professional SDK應該安裝的有

  • Microsoft Visual Studio .net 2005
  • Visual Studio .net 2005 Service Pack 1
  • .net Framework v2.0 SP1
  • Microsoft ActiveSync 4.5
  • Microsoft Virtual PC 2007
  • Windows Mobile 6 SDK Professional
  • Windows Mobile 6 SDK Professional 6 - CHT Language Pack
  • Microsoft Device Emulator v2.0
  • Remote Display Control
  • (optional) WIndows Mobile Power Toy

列出來的參考書籍有
  • WIndows Mobile 平台應用與開發 by 劉彥博、胡硯、馬騏
  • SQL Server 2005行動裝置開發指南 ISBN: 9867198638
  • Microsoft Mobile Development Handbook ISBN: 0735623589
  • Microsoft .net Compact Framework ISBN: 0735617252 (以.net CF v1為底,觀念為主)
  • The Definitive Guide to the .net Compact Framework ISBN: 1590590953
  • .net Compact Framewrok Programming with C# ISBN : 0321174038

在Google中尋找有關Windows Mobile時,可以加入下列關鍵字

site: msdn2.microsoft.com inurl:library

如果想要看整個.net Compact Framework的概觀,可以

物件瀏覽器 -> 瀏覽 -> 編輯自訂元件集 -> 瀏覽 -> C:\Program Files\ Microsoft.NET\SDk\CompactFramwork\v2.0\WindowsCE\*.dll* 加入
然後
瀏覽 -> 自訂元件集 即可觀看所有compact framework的相關libarary

遠端工具操作介紹

  • Remote Zoom: 截取畫面
  • Remote Process Viewer: 遠端工具管理員
  • Remote Registry Editor: 遠端登錄檔編輯器
  • Remote File Viewer: 遠端檔案總管

如果有問題,可以至官方討論區討論: 微軟技術社群討論區 行動與嵌入式裝置開發或者去中國CSDN

C:\Program Files\Microsoft.NET\SDK\CompactFramework\v2.0\WindowsCE\Diagnostics\
底下可以找尋相關的CHT的cab檔裝在裝置上,可以獲得較多的Exception資訊


---
好亂...Orz

星期一, 5月 19, 2008

重灌

在MacBook上分割Windows磁區失敗,可能整台Mac又要重灌了...Orz

---
很久沒有寫blog,這個竟然是第一篇...Orz

星期三, 5月 14, 2008

地圖


今天早上逛痴漢水球的blog,看到了這張地圖XD

---
我笑了XD

星期六, 5月 10, 2008

返家

六個禮拜沒有返家,頗有一種近鄉情卻的感覺...

---
前陣子還蠻想回家的。

星期五, 5月 09, 2008

遺憾

我有關學Computer Science的遺憾有很多,現在遇到 SmallPig老師,有時候還真的蠻想把一堆有關網路相關呈現技術搞懂的,這也是我所不會的一塊,有空應該是要專心花時間搞懂,所謂的文件,應該不只有排版的pdf,在網路上的呈現也是相當重要的一環,不過我卻在網路這一塊知之甚少,該是花時間的時候到了。

昨天看到Erlang的介紹,應該會抽點時間去了解這是什麼,不過看到另外一篇介紹,想不到竟然是functional programming language,這更讓我覺得有趣了XD

---
雜記文一篇

星期四, 5月 08, 2008

可樂

今天中華電信桃園分公司經理(聽說是很大的職位XD),因為報名參加了中華電信加值比賽,來到我們學校送禮卷,有參加就有獎XD,一個人拿到了400塊統一集團禮卷,可以在7-11, Starbucks, mister donut, 康是美, Coldstone(我聽eating介紹才知道XD),等等消費,算是蠻方便的,於是我跟efang說了。


yen3: 我拿到400禮卷耶~可以用在7-11 balabala
efang: 請客~
yen3: 好啊
efang: 我要喝可樂~
yen3: XD

之後又有對話如下


yen3: Clara和eating聯名推薦 ColdStone http://www.coldstone.com.tw
efang: 喔喔喔
yen3: 你會想去嗎
efang: 還好耶,我比較想喝可樂XD

---
這樣子可以喝好多好多可樂XD

聽說 FLOLAC'08


這樣子的blog頗有被Josh入侵的感覺,只剩一個禮拜了,有興趣的可以趕快報名,我想想我能做的只有這樣子吧,有興趣的就可以進去喔,因應節慶,調整成Josh送的桌面

---
雖然我也蠻想去但是我不能去XD

星期二, 5月 06, 2008

體會

我一直以為我得到別人很正向的reponse是一件很幸福的事,現在漸漸在理解,如果自己給需別人的想法越大,所得到的reponse也是成正比的,也就是說,在正常的狀況下,可以帶動人與人之間的氣氛。

---
不過這個問題需要再思考

睡過頭

睡過頭導致全部的事都超出預料,還沒有午餐可以吃....Orz

---
再過一個小時就可以吃飯了...

星期一, 5月 05, 2008

Page Rank

Josh Ko 升成4分,我升成2分,神奇的是,efang 升成1分XDXD

---
PageRank的家族關係嗎XD

星期日, 5月 04, 2008

搞笑

剛剛突然想到,為什麼要有std::find()和std::find_if()的分別,翻了一下書,就知道為什麼了XD


template <class InputIterator, class EqualityCompareable>
InputIterator find(InputIterator first, InputIterator last,
const EqualityComparaable& value);

template <class InputIterator, class Predicate>
InputIterator find_if(InputerIterator first, InputIterator last,
Preicate pred);

在還沒有具現化之前,兩個function都是三個argument,是分不出來的,看來沒有睡醒真的不是一件好事

---
快樂的生活快結束啦XD

Heap Sort v2

在Josh Ko的幫忙下,終於寫成可接受的heap.hpp了,現在可以試試了

---
終於要進入正題了嗎...XD

Inclusion Model

事實上是為了回覆問題這一篇,在經過Josh Ko幫忙之後,我在"C++ Templates全覽" "6-1 置入式模型(Inclusion Model)"找到答案,實際上,template code是不支援 separation compile,在p.63有提及

function template的定義並沒有具現化,為了具現化一個template,編譯器必需知道"以那一份定義式"以及"以那哪些template arguments"對它具現化。不幸的是這個例子中,這兩項資訊被分置於兩個分開編譯的檔案...

而接著又在下面提到

解決這個問題最常見方法是,把template定義式放到其宣告式所在的表頭檔,可以在xxx.hpp最後一行加入#include "xxx.cpp";,也可以用到該template的每一個.c檔案中#include "xxx.cpp", 第三種作法是完全丟開xxx.cpp,把宣告和定義全部放進xxx.hpp ... 這種template的組織法稱為"置入式模型(inclusion model)"

在文中有說明,如果使用了,事實上也會連結hpp中其他的碼,讓程式碼非常的大,也會讓編譯時間變慢,但是不得不否認,這是一個最不會帶來問題的方法,書有說明,我引用的非常多啦,在此就不描述了

---
在Josh Ko幫忙之下,讓自己渡過一個愉快的週末XD。


Macintosh-2:huffmanTree yen3$ g++ -o test.out test.cpp heap.hpp
ld: warning in heap.hpp, file is not of required architecture

雖然compile過了,但是還是對這行waring非常感冒,還是想想怎麼解決好了


在回覆中有提到,其實g++ -o test.out test.cpp就可以解決了。

點名

A.被點到名的在自己的部落格裡寫下自己的答案,然後去掉一個你最不喜歡的問題再補上一個你的問題,仍然組成20個問題,傳給其他8個人,列出其他8個需要回答問題的人的名字,還要到這8個人部落格里留言通知對方~~~你被點名了,被點名者不得拒絕回答問題,完成遊戲的人將會永遠得到大家的祝福.

B.這8個人要在自己的部落格裡註明是從哪裡接到的,並且在傳給其他8個人,讓遊戲繼續下去"不得回傳".被點名字的人將會得到大家的祝福,並且所有美好的願望都會在不久的將來實現

我是被efang點名的,點到就寫吧,雖然我有很多朋友寫blog,但是沒啥人點到我XD

************************************************

1.如果喜歡的人把你撲倒,你的反應是?
答: 應該不可能發生(笑)

2.下輩子的你(妳)想當什麼?
答: 狼

3.你最想去哪個地方?為什麼?
答: Google 總部,那邊一定存在很多高手,可以學到很多東西

4.最受不了自己哪個缺點?
答: 過於自信

5.如果有不開心的事情,你會怎麼辦?
答: 找efang、寫程式、睡覺

6.最害怕失去的東西?
答: efang

7.喜歡當女人還是男人?
答: 男人

8.最令你難忘的人,事,物
答:efang, programming, thinking

9.如果你有一億元,你會拿來怎麼用?
答:七成交給父母,三成交給efang

10.對一場無即而終得戀情你會複合嗎?
答: 不會,不追求逝去的想法。

11.如果被喜歡的人拒絕,怎麼辦?
答: 不追求,雖然令人傷心,但是就隨風而去

12.誰曾經做過令你感動的事,什麼事?
答:太多了,每個人都做過很多讓我很感動的事

13.目前你的心裡有沒有喜歡的人?
答: efang

14.你愛錢嗎?
答: 夠生活就好,其他的錢可以拿來買書。

15..現在最想要做的事?
答: 休息

16.你最希望達成的願望?
答: 與efang平靜的渡過一生,每天快樂的寫程式

17.跟情人的發展程度
答: excellent

18.對現在的生活滿意嗎? 為什麼?
答: 還不錯,如果我可以再睡多一點的話XD。

19. 現在最想要的東西?
答: 朋友回來一起做事

20.說出傳給你的人的優點和缺點各一
答: 優點:可以依靠 缺點:依靠成習慣

我的題目:
No thinking

點點點
Josh Ko(雖然知道不會寫,還是期待一下 XD)
這會讓我想到小世界原理,我就不點了。

---
我習慣把事情快速解決

星期六, 5月 03, 2008

問題

遇到了一個我覺得不會發生問題的問題。


Macintosh-2:huffmanTree yen3$ g++ -o test heap.o test2.o
Undefined symbols:
"void heap_sort<__gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > > >(__gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >, __gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >)", referenced from:
_main in test2.o
ld: symbol(s) not found
collect2: ld returned 1 exit status


---
克服中...Orz

休息

最近的我很閒嗎? 老實說也不會。

今早起來為了演算法作業裡面有提到的huffman tree實作,考慮使用heap-tree來實作,但是訪視自己所實作的heap-tree,實在是不盡人意,於是今天又重新利用Random Access Iterator的概念來實作,實作出來只能算差強人意,暫時把程式碼釋出,看看最近有沒有空,再把compare獨立成一個function object,讓程式碼的復用性更高。這也是一個蠻有趣的娛樂。

---
當然我還記得Huffman Code這回事XD。

星期五, 5月 02, 2008

合作

有很多事說穿了其實是一樣的東西。

我不否認我非常喜愛閱讀Design Patterns 和 Refactoring 之類的相關書籍,因為裡面提到的方法非常之吸引人,OO方法論是我非常早就接觸到的一件事物。不過在實際開發上,我鮮少用到這些東西,應該是說,有用到也只是皮毛而己。為什麼呢,說穿了很簡單,不要為了Patterns而Patterns,Refactoring也是。

我與人進行軟體開發時,也非常少用到這些我所喜愛的事物,我所認為的patterns,應該是程式寫到一半,腦袋上面突然有一個燈泡亮起來說,啊,這個地方可以這樣用,而不是,解決這個問題的方法,我們就用這個patterns吧,事實上書上提及的只是一個想法,鮮可以原封不動而直接套用的,這種機率非常低。而且更重要的是,我現在所寫的程式強度倒也沒有會用到,當然可以當作練習,不過強迫別人做這件事是非常奇怪的事。

我不否認我喜歡XeLaTeX這個排版語言,我也會四處與人推廣,但是一旦我與人合作寫文件時,我還是使用Word, Powerpoint來做為首選,XeLaTeX自己玩玩可以,但是沒有必要強迫別人跟自己一樣,當自己有興趣時,可以玩玩,甚至做大膽的嘗試都可以,但是與人合作時,應該以團隊都能達成的強度做為考量。就算整個團隊都會這些高度工程藝術了,也是得小心翼翼的使用,不太了解為什麼有些人可以成天開口閉口就OO,patterns。

但是有一件事還是很重要,就是可以推廣這些思考的存在,而不要讓自己思考時落入規格中,這些方法真的很漂亮,看看說不定會給自己另外的世界,但是如果真的硬要實作這些方法,我只能說。

招式是死的,人是活的

硬要用這些招式,恐怕只會逼死自己,一般狀況下大家都懂的已所不欲勿施於人,但是遇到這種狀況時,就忘了這件事,也是一個有趣的現象。

---
難得寫這個議題XD

星期三, 4月 30, 2008

生活

每天都把自己逼到很累...其實也不知道為什麼,工作是一種生活,而我就是實踐這種方式的人。其實也會有一點小失落,因為專題緣故,並不是我每天做的事都能對外釋出,所以我只能努力的做,然後期待專題結束,比照上次,把所寫的及所做過的東西釋放出來。

當然也有點對不起gb014388和snakexu,兩個人的生日我都沒空寫祝賀文了,在此還是得跟她們說生日快樂,有時候真的覺得自己這個身為朋友的不夠稱職,請大家多多擔待了。

其實寫作的另外一個好處是可以回顧自己的寫作軌跡,所以我也很喜歡看自己的blog,還好StatCounter不會計算我所造訪的次數,不然應該是大爆炸才是。我想我的人生如同我以前所說的,一切即劍,萬里一空。

不把自己的標準加諸於別人的身上,因為這就是我的生活。

---
但是感謝朋友加諸於我面對生活的動力。

早起

在經過很長一段時間睡眠不正常後,昨天正式回到十二點睡,已經很久沒有那麼早起過了

今早Mac OS更新時,看到一份期待已久的更新啊
---
我比較喜歡這種生活。

星期六, 4月 26, 2008

生活

聽從Clara的建議,讓自己放慢生活的腳步(其實我自己覺得我過的不快),有很多問題可以討論,我想等到過幾天再說吧。

今天藉由閱讀來放慢自己的生活腳步,於是我選擇"重構-改善既有的程式設計(Refactoring - Improving The Design of Existing Code)",在p.61 "間接層和重構(Indirection and Refactoring)" 文中提到

計算機科學是這樣一門科學:它相信所有問題都能藉由多一個間接層(indirection)來解決。 - Dennis DeBruler

看到時雖然驚訝,但是不失望,因為我在很早之前就對ycma提出了這樣子的想法,不過總覺得有很多需要思考的地方,但是這篇文補足不齊之,大都是物件導向軟體工程看法,ycma曾跟我提過,在硬體上多一層就會多很多麻煩,不過看這種書,就多多思考吧。

---
事實上,我不太知道如何休息,就讓閱讀取代休息吧。

星期五, 4月 25, 2008

最近

先對祥龍說聲抱歉,我晚一點才會寫生日文,真的是太忙了...

真正想要下筆的時候卻不知道要寫什麼,有時候唯一能做的事,就是讓自己埋頭於螢幕前努力工作,直至累趴,習慣了,很多事其實都一樣的。

---
C'est la vie

星期二, 4月 22, 2008

有關學習的兩三事

由於不怎麼念的下書,最近做的事又乏善可陳,只好寫點這樣子的文章來欺騙社會大眾XD

這兩天把Peopleware看完一次,頗有心驚的感覺,原來以前做對了很多事,但是也做錯不少,寫成文章有一個好處,讓你能夠不會再犯錯,也由於蠻感動這本書所寫的,想要買一本英文版回家K,但是天瓏說缺貨中,無妨,再等等看吧。

最近由於寫程式的關係,常常需要看相關資料,這部分的心得,我引用Jserv's blog: 對自己好一些:談技術手冊閱讀來作結,他寫的很好,我實在是不需要重寫一篇。沒有人可以否認,從Google上得到的資料相當的片段(不過能找到整個上課投影片也是一個不錯的選擇),如果自己手上沒有一本技術手冊,無法從該技術做一個全覽是一件相當可惜的事,除非只是即興寫作,抑或是應付了事,不然我覺得,擁有該領域的一本良好技術手冊,是相當必要的。

但是在學習時發現,現代人的心態,有時候習慣於補習班的教育,有人教最好,沒人教就跟老師橋,過度習慣別人給你資訊,如果能力不足,尚可原諒,如果志不在此,也可理解,但是天生就是要走一行飯的,實在是得把"看技術手冊"和"Googling"兩件事並列首位,而不是不會就問人,拖到會為止,這樣子顯得相當奇怪。我問人頂多問到keyword或者是該領域的技術手冊,剩下的自己來。通常這樣子的學習,幾個round下來,對於學習能力大有幫助,久而久之也習慣了這樣子做,方能讓自己成為獨立學習的人。有人問過我,為什麼人會產生如此的局面,我只能說,當人越來越懶的時候,是沒有理由的。

---
嚴肅快筆書寫

Big Eyes

最近終於有好事發生了。

---
Go!

工作環境


最近的工作環境為此,相當不錯,事實上我有對自己工作環境拍照的習慣,不過現在都用手機拍照比較多了,哈

星期一, 4月 21, 2008

學弟,有種

身為一個不成材的學長,我想對學弟說

雖然沒有做,你他媽的你真的很有種,以後我要叫你有guts的男人

---
CF

美麗

在接觸過那麼多programming language之後,到現在我還是感嘆於C/C++的美麗,精簡的語法建構一個又一個美麗主題,太漂亮了。

---
真想用C++開發出一個美麗的東西,會有機會的XD。

星期六, 4月 19, 2008

發現

最近自己的打字速度又比以前快上不少,連帶寫程式速度又變快了。

---
誰說壓力沒好處XD

星期五, 4月 18, 2008

utmpx

在大部分的linux下,是可以從"/var/run/utmp" 這個路徑得知現在使用這台伺服器的使用者資訊,資訊是開放任何人可讀,不過在Mac OS 10.5以後不支援這個檔案,而改採用NetBSD的utmpx,故資訊可從"/var/run/utmpx"這個檔案讀到。寫了一小段測試碼如下

#include <stdio.h>
#include <utmpx.h>
int main(){
struct utmpx utmpx_entry;
FILE* fp = fopen("/var/run/utmpx", "r");
while(fread(&utmpx_entry, sizeof(struct utmpx), 1, fp)>0){
printf("%s\t%s\t%s\n", utmpx_entry.ut_user, utmpx_entry.ut_id, utmpx_entry.ut_line);
}
return 0;
}

事實上我覺得使用起來沒什麼差別,不過細細比較utmp.h和utmpx.h之後,會發現struct utmpx記載了更多資訊,可能更符合現在的作業系統設計,畢竟現在的作業系統不是只有單純的command line了,而一個xwindow也是一個terminal,所以我覺得新增這些資訊還算蠻合理的。

---
事實上這篇重要性不大XD

期中考

一覺醒來與Clara說話,被提醒時發現,期中考近了...

---
做專題做到忘記期中考...Orz

星期四, 4月 17, 2008

測試

今天中午醒來,思考,如果unix system call都是C 寫成的,是否有辦法用class包起來呢,於是寫了一個小小的class測試一下。

class FileAttribute{
public:
FileAttribute(const char* dir, const char* file){
name = string(file);
path = string(dir) + "/" + name;
stat(path.c_str(), &buf);
};
FileAttribute(string& dir, string& file){
name = file;
path = dir + "/" + file;
stat(path.c_str(), &buf);
};
const char* ab_file_path(){ return path.c_str(); };
const char* file_name(){ return name.c_str(); };
bool is_file(){ return !S_ISDIR(buf.st_mode); };
bool is_dir(){ return !is_file(); };
unsigned int size(){ return buf.st_size; };
private:
string path;
string name;
struct stat buf;
};

看起來成效不錯,其實效率很差,多一層包裝,就要浪費掉很多時間在此包裝上,不過如果在發展大型程式時,還是有其包裝的必要。
---
我真無聊,不過我喜歡XD

星期三, 4月 16, 2008

耐心

在越忙碌時,又記得這兩個字的重要性,若無此個性,則無法完成任何事

---
最近是磨練的好時期。

星期二, 4月 15, 2008

簡單、複雜、思考與證明

這段文字很早很早之前就想寫了,不過總是沒有一個好的著力點,不過我得先聲明,我數學和英文都不好XD。

我朋友問過我一個問題,為什麼總是有人要把一個很簡單的問題變的很複雜。此外也有等價的問題,有人跟我說過,要證明1+1=2是數學家無聊做的出來的事。

先回答第二個問題,因為比較簡單,在普遍狀況下,1+1=2是成立的,問題,我們如何證明+這個元素存在,又如何證明兩者等價,這在高等微積分好像有解答(我不會也沒修過,不要問我XD)。而且證明1+1=2的人是Bertrand Russell和另外一個人,花了320頁證明,他是用邏輯證明的,千萬不要小看這個證明,這個證明讓數學與哲學有了連結。他是一個哲學家。數學家和哲學家並不無聊,為了讓整個理性的社會存在,他們可是花了不少的功夫。

那麼為什麼總是要把一個簡單的問題變成很複雜。好問題,這對我學英文時也造成不少的困擾,雖然我英文從來沒有好過。我在用英文的時候想過一個問題。為什麼不能用簡單的字,而是要學很多很複雜的字。(這或許造成我某程度懶惰不背單字的原因XD),在這些等價描述下,唯一要做的解釋就是...

嚴謹是一件非常重要的事。

人類之所以發明文字,發明思考方式,一切只是為了知識累積,讓後人可以站在先人的智慧上,做出更多的開展。人類的學習就像一個超高速齒輪一樣,剛開始會很慢很慢,到最後會越轉越快。於是,怎麼把知識做一個正確且快速的傳遞,變成一個很重要的事。於是乎,寫作要求嚴謹是一件很重要的事,那麼怎麼讓嚴謹做一個最好的呈現?

發明符號和語言變成相當重要,數學對於大部分的人可能落於算術這個部分,但是數學最迷人之處就是,如果你能夠用數學語言看到這個世界,很多事是垂手可得的,你用邏輯語言看懂了另外一個世界,就會發現,原來還有很多很多思考的方式。

不過最不幸的是,符號和語言是先人制定的,這兩件事往往成為門外漢(如我XD)學習最大的門檻,那麼為什麼要用最嚴謹的符號和語言來定義呢? 因為在知識的累積和展現上,不太能容許出錯或定義不明之處,這會讓承先啟後的人們顯的相當無助(發明人都做古時,去那問啊XD),然而這在一般的狀況下卻不是很大的問題,因為肯在某個領域學習的人,往往可以很快的適應。如果學的會這些東西,可以為自己打開一扇窗,快速的學習與探索自己想要學習的東西,可謂是相當的快樂。

而我呢,大概只會程式語言吧,只是剛好有所機會看到一些東西,算是蠻幸運的XD

---
因為幸運所以偷懶嗎XD

星期日, 4月 13, 2008

想寫點東西卻又不知道要寫些什麼...

---
Just that.

星期六, 4月 12, 2008

錯誤

當已知發生錯誤,總是在無法挽回的時候

---
我不是聰明人。

星期三, 4月 09, 2008

便利

前幾天Mac OS X被我搞的並不是那麼穩定,所以今日重灌,還蠻便利的,選擇清除重新安裝後,再用TimeMachine復原資料,但是留下一個乾淨的系統,有些command line底下的東西要重灌,不過正符合我意,因為我前陣子一直在測試,重灌過程相當愉快。

---
在這方面Apple做的真的是蠻不錯的。

星期一, 4月 07, 2008

有感

這陣子作業著實不少,不過都是小作業居多就是了,昨天使用Visual Studio .net 2008 Team Suite 的測試程式是否正確否,簡單而言,就是存在一個function,給予一個input和 excepted output,而軟體會自行幫你比較程式輸出結果是否正確(不過只有C#有...Orz),這對大型專案應該是一個蠻有用的工具。所以我寫了一個簡單的測試碼


public static int[] BubbleSort(int[] u){
/* ... */
return u;
}

之後VS所產生的測試碼片段如下

public void BubbleSortTest()
{
int[] u = { 3, 5, 2, 4, 1 }; // TODO: 初始化為適當值,此行為自行輸入
int[] expected = {1, 2, 3, 4, 5}; // TODO: 初始化為適當值,此行為自行輸入
int[] actual;
actual = Program.CountingSort(u);
Assert.AreEqual(expected, actual);
//Assert.Inconclusive("驗證這個測試方法的正確性。");
}

很可惜的,這個測試結果會告訴你,永遠是錯的,expected 永遠不會等於actual,我起初還蠻天真的認為說應該會等於,其實不會,因為AreEqual對於此型別的比較等於C++中的int* == int*,只要兩個存在指向不同記憶體之處,其值就不可能相等,而我移到AreEqual的程式碼定義處一看,哇,什麼都有,似乎沒有針對這個狀況所解決的方案。其實這算是一個小問題,而C#也支援Generic,稍微改寫一下即可支援,但是這樣子的問題出現在一個這樣子的軟體上,似乎不太對勁,當然,也可以跟我說我的使用方法不當,或許我真的不太會用這套軟體吧。


C#是MS發展算蠻成功的語言,雖然抄襲自Java,隨後又用了一堆C++的概念,導致我遇到錯誤時,兩個語言的思維都套上來試試看,大部分的問題都會有解,但是很難免的都遇到現存高階語言存在的一個問題,發展的過於龐大而難以維護(我得說C++算漂亮的,以發展library來降低整體複雜度),現在的C#,沒有VS.net就很難開發,而這個語言沒有一個統一的思維,也是一個很有趣的問題。


算了,如果用以前MS的東西恐怕會更糟。



---
發個牢騷XD

星期六, 4月 05, 2008

學習

現在在看php,對我而言,php真的是一個很歡樂的語言,可以用php做很多事XD

---
只是沒有compiler嗎 XD

I am Legend

我大概跟一般人相反,我只有看過小說沒有看過電影XD 或許回校時會借來看看。

文學和電影最大的不同是,由於電影要給大家看,不太能敘造太多悲劇或結局,而且文學的美感,轉換成影片時會有一定量的失真,所以因應這種媒體的轉換,改寫是必然的。

這本書是暢銷書,跟電影有很大的關係,不過我得說,除了這篇小說,後面所書寫的小說就略嫌老套,抑或是說,這本書出來甚久,在當今的時代,這樣子的寫作方法已經非常常見了。

等電影看完再一次寫心得吧

---
寫這篇是騙文章數的嗎XD

星期五, 4月 04, 2008

返家

隔了一個月才回家,下次回家不知道什麼時候。

---
睡了五個小時XD

星期四, 4月 03, 2008

忙碌

好像更忙了,不過也無妨,尚未火力全開

---
事實上也很難火力全開XD

星期二, 4月 01, 2008

April Fool's Day

我竟然會感到害怕,平常壞事做太多嗎XD

---
到現在才知道這是愚人節的英文名字XD

星期日, 3月 30, 2008

最近

催生文件告一段落之後,接下來便是開始構築整個程式架構的時候了,不過今天不想動工,於是便有偷懶的一天。其實也稱不上偷懶,只能說是可以開心做著自己的事。

喜歡的書Advanced Programming in the UNIX Environment 2/e 終於到了自己手上,雖然ycma說,每個系統上面的system library有點不同,還是用man查詢相關資訊會比較好,我不反對,不過就對於一個初學者的自己而言,我想還是有必要把書想翻的翻一翻,對於整個system library有個概觀是比較好一點的,雖然書也厚了一點就是(笑)。

最近也必需得習慣Visual Studio .net 2005,我想還是會有這一天的到來,上課會用到,專題也會用到,我總是死命的在拖,不要用到這一套軟體,不過還是有一天會用到就是了,遇到了就好好學,然後學完了再跳回bsd的懷抱XD

念書的習慣慢慢的在開始,會有進展的。

---
超高速齒輪

初賽文件

建立起一個很好的團隊,初賽文件完工了,讓大家都很滿意的文件:)。

---
也同時也看的出來自己的弱點XD。

星期五, 3月 28, 2008

小技巧

在Word中要插入背景浮水印是一件具有技巧的是,預設的方法為
格式 -> 背景 -> 列印浮水印
這方法不錯,可以快速插入,但是可以調的東西不多,我想到的方法是
檢視 -> 頁首/ 頁尾
插入圖片 -> 設定圖片格式 -> 配置 -> 文字在後

此方法相當靈活,圖片也隨你擺放,算是蠻不錯的一個方法。

---
不知道拿LaTeX做會怎麼樣...Orz

星期四, 3月 27, 2008

排版

終於排出一個自己滿意的基本版面,接下來就交給eating了,我不是專業:)

---
還有一堆說明沒打XD

星期二, 3月 25, 2008

Text Editor

前天去拜訪朋友,結果我把MacBook的變壓器忘記在朋友家,導致我現在只能乖乖的活在Windows的世界中,感到非常不習慣,結果我還是比較習慣ubuntu XD

這幾天也由於初稿完工,可以稍微喘息一下XD 也由於這段日子以來,活在unix-like底下的時間遠超過Windows的時間,text editor著實用了不少,或許,對我這種人而言,一個好的text editor遠比一個能動的word更重要,因為我絕大部分時間寫的東西都是純文字檔XD

Windows下本來的首選是ConTEXT,經由學長的推薦PSPad會更好,文字編輯器大都是大同小異,但是把PSPad稍微調整一下,可以取代大部分的Dev C++的功能,我覺得Dev C++最重要的功能就是單檔編譯,這對寫小程式非常方便,當然不用說,他可以拿來寫其他程式了,最重要的是,支援ftp server存取寫入檔案,雖然沒有支援sftp是一件蠻遺憾的事,不過對於現在的我而言似乎還好。

Mac OSX 下的文字編輯器倒是沒有那麼強的,倒是有人寫過討論text.editor.addicts.txt,不過小而美的文字編輯器倒是不少,我目前所使用的是Smultron ,雖然我不怎麼喜歡這個程式的圖案,不過我真的得說,還不錯用啦(或許我本來需求就少了XD)

Linux下的文字編輯器,我得我說不常用,學長的建議是wine + PSPad,剛剛試過,效果不錯,不過軟體的語言選English會比較好,選ChineseBig5,會有破字的問題,不過也無妨,用久了應該會很習慣,不然一般狀況下我就用預訂的text editor就好了,GNOME有gedit,KDE底下有Kate,畢竟到linux底下,command line我還蠻習慣的XD。

不過command line下的文字編輯器,我還是偏好vim,雖然很多人都會罵說這套軟體不好用,而它也的確不好用XD,不過我覺得至少比vi好很多XD,學長的建議是使用joe,為什麼我要用vim,只是習慣了,而且真的蠻多地方都會有的,用過PE2,我真的覺得vim還不錯用,不過還沒學的人,可以考慮試試看joe,應該不錯用吧XD?

不過還是很斤斤計較Text Editor的人,可以考慮看一下這個Wikipedia: Comparison of text editors 應該會有一些有趣的想法產生吧。

不過Text Editor是個工具,重點是我們利用他創造了什麼,雖然挑一個好工具也是蠻重要的一件事~XD

---
這篇寫起來好像軟體介紹XD

星期五, 3月 21, 2008

初稿

v2完成了...

算是可以小小休息一下。

---
接下來只剩細節的修改了。

約約相欠

稿債何時了...Orz

星期三, 3月 19, 2008

生病

我的胃實在是不怎麼好,至少在吃學校自助餐這件事上是如此(笑)。

晚上十一點多莫名胃痛,直至睡著,睡醒之後發現全身無力,也不怎麼樣,會想起一些事,我朋友都笑罵我說,明明知道自己不能吃學校自助餐,還吃,這樣能怪誰。

是不能怪誰,但是很感謝朋友的關心,fire7617和gb014388甚至出去買飯煮,好感動捏...T__T

相信我一定很快就會沒有事的,不然我快要稿債纏身了,我不要有寫不完的稿啊...Orz

---
呵,efang也不要太擔心喔。

星期二, 3月 18, 2008

俗語

硬碟容量決定宅的力量XD

---
320 + 160 +160 + 120 + 120 + 2 + 1 + 0.5 XD

星期一, 3月 17, 2008

簡單講解

作者 yen3 (yen3) 站內 CGUCSIE99
標題 [分享] 程設會- Introduction to UVa Online-Judge
時間 2008/03/17 Mon 23:31:53

【名稱】 Introduction to UVa Online-Judge

【時間】 2008/03/20 6:00~8:00 PM

【地點】 資工系系上會議室

【說明】 yen3

【對象】 除程設會成員外,歡迎大家參加

【說明】 事實上這是程設會第一次公開講演,希望能夠帶一連串的講解,
讓大家更了解有關Computer Science的種種。

如果有下完課後不知道該拿什麼程式來自我練習,還是說對自己
程式設計能力想要多加磨練的人,不妨來聽聽這堂課,UVa Onl-
ing Judge是一個線上評量程式系統,可以將自己撰寫的程式碼
上傳上去測試自己是否能對,希望能藉由這次介紹,讓大家多多
利用交流。

---
真想在下面補註,其實我講的很搞笑,現場還有放送XD

星期六, 3月 15, 2008

簡報

看起來很簡單,做起來很麻煩...orz

整合

比想像中的還要困難,毫無頭緒...Orz

----
以後會更恐怖...Orz

星期五, 3月 14, 2008

無狀態

聽來聽去,我還是非常的喜歡這首歌,故重po


無狀態 張懸 詞曲:張懸

  我喜歡永恆的短暫
  化主動為被動的昏暗
  所有公允的景觀之中 我都不存在

  我喜歡邂逅的對白 抹有某部電影的光采
  你要我給的,應該也如此的
  是這答案

  不要把美好的故事留下來
  不去制約 被制約 沒有習慣
  我喜歡獨白勝過眾人的綵排

  不要讓眼淚成為生活的客串
  不去制約 被制約 等待遺憾
  我酷嗜孤獨的愛

  我酷嗜倔強的愛

---
不去制約 被制約 沒有習慣

醒來

睡不著,於是醒著

---
嗯,沒事


06:05AM 這種時間才能發現打呼聲此起彼落,蠻有趣的XD

星期四, 3月 13, 2008

寫文件哲學

我現在的寫文件軟體哲學就是,如果只是單純撰寫,搞個純文字軟體就好,負擔輕,能不要開Word就不要開XD

Word是一個有點缺陷的排版軟體,但是排中文還算方便就是了,而XeLaTeX的話,時間沒有上限則是完美之選。

---
不過與人合作時選前者比較好XD

工程師性格

今天eating與我說,我過度強調"工程師性格"這幾個字,不甚好,也對,現在開始改進。

---
不過倒是很多我覺得很多很像工程師的老師XD

星期三, 3月 12, 2008

MacPorts

搞了很久的OpenSource軟體才知道MacPorts這個軟體很重要。

顧名思義,用相同FreeBSD思維的方式,提供給Mac OSX 下可以快速且順利安裝OpenSource的方式,而DarwinPort是早期的名字。目前出到1.6 (Leopard, Universe),而官方網站提供了約4500個軟體套件的相關說明。安裝方式很簡單,只需要找到package name,在command line(終端機)下輸入(這邊以安裝boost為例)sudo port intall boost,如果想要知道MacPorts有沒有更新,就輸入sudo port -d selfupdate

若想要更新已安裝的軟體則 sudo port -d selfupdate
sudo port upgrade installed
就可以把安裝的更新了。



結果我搞了很久的apache, mysql, php5 瞬間被解決,gocr也有解,算的上是相當方便XD。

---
在還沒有找到之前我都乖乖的重新編譯後安裝XD

星期二, 3月 11, 2008

準備

應Josh Ko之邀(還是說我死賴皮XD),回彰中展開一次教學,時間為三個小時,題目讓我自己選,相當的有彈性,本來在Generic Programming和Unix Programming中游移,最終決定為前者,由於是給高中生的教學,所以應該不太會太難,目前Slide準備大綱如下。

  • Function Overloading - 簡單的開始
  • Abstract Data Type - 正式的開始
  • Function Template - 來一點有趣的
  • Class Template - 痛苦的開始
  • C++ Standard Template Library - 藝術品般的傑作
  • Generic Programming - OOP對稱之紅花綠葉


暫時想到這樣子的大綱,隨時可以再變動,不過這簡報大概要準備一個月吧,最近非常忙...Orz

---
還算是愉快的準備XD

早起

今天七點就起床了,早早就來了實驗室,頗有睡的越準時就睡的越少的趨勢。

---
或許這才是最省時間XD

星期一, 3月 10, 2008

自清

呃,看到Jserv留言,最近花了一點時間在看他的blog,相較之下,我頗有浪費生命的感覺,哈哈

我不是一個頂認真的人,頂多只是偶爾閒閒沒事看看書,事實上要正視自己能力不強這件事,讀了一點書,程式卻寫沒有半滴,作業系統課程又放掉,剛好對FreeBSD有興趣,而Jserv又開了一堂課,我從從這裡開始,一步步的研究FreeBSD。

事實上我自己很清楚,我沒寫過什麼很大的程式。

因為這樣,所以我才會努力的準備比賽,單一程式語言寫的太久總是會有一個問題,如何整合多個元件,這就是我這次比賽中要學到的,不要每一次造輪子是真的,但是要怎麼把既有的輪子裝好,也是一個需要學習的課題。

所以,持續前進,如果我真的看完這些書,也應該可以寫出相對應的文章才是,事實上我並沒有,呵,所以某部分的呈現事實是,我必需再努力。

彰中電研社(CHCRC),是我生涯中唯一加入過的社團(到大學一個也無XD),經過一番波折,擔任了第四屆社長兼硬體組教學長,而Josh和pigtail分別擔任了程設組教學長,分別在台大資工和師大資工,而bluegmn擔任了網頁組教學長,現在在淡大資管。到現在都有在聯絡(得感謝網路的進步)。從這從我學到了很多,這對我而言是一個很長的回憶。有空再提吧

---
為什麼會提到CHCRC,想到我就提了一下,沒有什麼想法。


pigtail昨日跟我提及說,自己愧對程設教學長的職位,他還記得自己是公關長,但是我不這麼認為,能力不是唯一決定的因素,認真做的也是很重要的,況且,他的能力也是真的不錯的(笑)

星期日, 3月 09, 2008

錯誤

自己總是過於衝動嗎...Orz

---
每次都是事後...真不喜歡這樣子的自己。

有感

看著efang玩ubuntu linux,我決定,我還是玩....FreeBSD好了,我不要沒事每天都要搞Kernel和library不一樣時的痛苦,而且Mac OSX也是BSD Kernel,一個名叫Darwin的Kernel,查了資料才發現原來Apple有釋出source code。不過FreeBSD的相對中文資料也是比較少,沒關係,看英文也不錯,最近感覺到自己的英文退步到一個鳥程度XD。

多多吸收新東西總是好的。

---
雖然這很花時間XD

逛逛

今天早起逛到這個,看到

Orz,我節錄一下我和朋友的對話XD

blueforest /* Dear efang, Happy Birthday */: 我一直在想,這一篇會不會不像是我寫的blog
[Eighteen] ↗(放空)↙: 不然你可以把efang這個字改成Computer Science
[Eighteen] ↗(放空)↙: 這樣就符合你的風格了
blueforest /* Dear efang, Happy Birthday */: XD
blueforest /* Dear efang, Happy Birthday */: 我的風格這麼糟啊XD
[Eighteen] ↗(放空)↙: 是啊XD

比起向上快變成reserch blog,我的blog會變的怎麼樣呢?

---
不怎麼技術的技術blog ?XD

星期六, 3月 08, 2008

極限

在昨天早上確定題目之後,傍晚返家,得知efang玩ubuntu玩的很高興,事實上我還蠻關心她玩的怎麼樣的,因為在還沒受到MS的深刻影響時,多多玩OpenSource的東西總是好的,而且可以做一些觀察。

看到Josh從英國寄回來的明信片,看到時大為感動,不過我得為自己辯解一下,我可是什麼都沒有做,哈,anyway,還是很感謝(笑)。

回來之後感到極度疲累,八點一睡到現在,家族有事得忙碌,習慣了就好,回學校的時候,得要開始寫文件了,三個禮拜的題目折磨期終於結束了,希望接下來會更好,因為想題目真的很難訂時程表,接下來的時間進度真的比較好訂了。

回家找到兩本FreeBSD的書,我想我會帶著北上,這是我下一個想要深刻了解的作業系統。

---
有正課要上,我不會忘記XD

星期四, 3月 06, 2008

演講:快快樂樂學 GNU Debugger (gdb) Part I + II [台北]

難得我會用那麼長的標題(笑)

anyway,這是我從主講者Jserv處所看到的資訊報名處 節錄資訊如下


活動說明:
有鑑於一月份於SA@Tainan舉辦的「快快樂樂學 GNU Debugger」造成的狂響,
以及北部學員的聲聲呼喚,感謝Jserv講師的撥冗及豐富的教材,
將於三月下旬帶給大家一整天的精華分享,機會不再,別錯過囉。

簡介:延續一月份舉辦的「快快樂樂學 GNU Debugger」,
將之前對 Debugging (偵錯分析)所建立的概念與初體驗作更進一步的擴展,
以「作中學」途徑探討實務與概念應用。
使用情境與案例分析。

議程主題:
. 實用 GDB 指令
. macro 與技巧
. 當 GDB 遇上 C/C++:具體的範例
. (選擇性) Eclipse CDT 整合

時間:
2008年03月 22 日 (星期六)
   Part I 回顧 => 10:30-12:00,
Part II => 14:00-17:00

地點:台灣科技大學-國際大樓(IB) 401 教室
   基隆路大門進來右手邊第一棟大樓
   台北市基隆路4段43號.

費用: 0 -

地理位置/交通路線:
http://www3.ntust.edu.tw/front/bin/ptlist.phtml?Category=16
http://140.118.31.155/campus_guide/welcome.aspx

活動報名網址:http://registrano.com/events/sataipei200803


參考資訊:
. GDB: The GNU Project Debugger
http://sources.redhat.com/gdb/
. 快快樂樂學 GNU Debugger (gdb) Part I 資料:
http://blog.linux.org.tw/~jserv/archives/001958.html

講師簡介:Jim Huang (黃敬群 / "jserv"),熱血工讀生,
閒暇時投入新酷音計畫、Free Java、GNU GCC、X Window System,以及相關自由軟體的開發工作。
website: http://jserv.sayya.org/
blog: http://blog.linux.org.tw/jserv/

講師特別交代之注意事項:
1. 本議程基於知識共享之原則,提供免費教育訓練,但僅限於 x86 硬體平台,
若有 ARM 與 MIPS 平台需求者,請進一步聯繫講者
2. 本議程在台北與台南各有一場
3. 事先提交問題,可優先解決與討論
4. 歡迎招待當地名產,或廣結善緣


---
難得我會全文轉貼XD

星期三, 3月 05, 2008

上課

在題目有個初步想法之後,早上醒來頗冷,不過有個空閒可以記錄一下自己的想法也是不錯,或許暫時沒有辦法發什麼技術文了,最近做的事都不怎麼技術(笑)。

這學期修的課都偏苦幹實幹型,也就是說,班上會較少修這種課,其中最讓我感興趣的是Unix Programing,馬詠程(ycma)老師是第一次上課,上課頗有交大的風格,不過我很習慣,cllee也是交大畢業的XD,還有另外一堂是Web Service Programming,授課老師為SmallPig,這兩堂課都以寫程式為主,還有Introduction to Embedded System,授課老師為wyshieh,都是偏實作類的課程,這些課程或許也是少數讓我有機會逃離MS的機會,其實MS做的並不差,這我了解,但是還是會很想在unix-like之類開發程式,不過自己有種體悟,電腦會存在,但是上網的唯一媒介不再是電腦了,但是也有一個問題,端看自己肯網路控制到什麼程度了。

在sidebar新增兩項,分別為Google Redaer和Twitter,Google Reader連結為我的RSS訂閱分享,簡單而言,我在閱讀他人blog文章時,可按分享,就會自動匯集至此處,但是可以設定的事物極少(接近不能設定),所以暫時為測試用途,Twitter的話為一種心情亂寫吧,或許雜記也說不定,不過還是會保持在No title上的一行文風格,我很喜歡這樣子的書寫方式,每篇文章都很長對於我自己是不小的負擔,偶爾我也想要有偷懶的機會XD。

事實上一直很想轉換自己的寫作為搞笑風格,無奈不怎麼成功,甚至有耍冷風格,也想在文章中加入點髒話之類的,可是只要一聽音樂,一到寫作的心情,整個人就只能寫出這樣子的東西,想想也是蠻有趣的,不過很肯定,沒有技術,我還是會快樂的寫作下去,刷姊跟我說過,寫作的人不太需要社會性的分數。非技術文一發多,事實上也不是那麼care這一堆有的沒有的事了。

---
黑眼圈, 陳綺貞

星期二, 3月 04, 2008

躺在你的衣櫃

長期習慣聽著音樂生活,有時候蠻不習慣讓別人知道我在聽什麼音樂,因為這或多或少會洩漏出我現在的情緒。前幾天efang推薦了 躺在你的衣櫃, 陳綺貞, 吉他手

efang的描述是,這首歌的音樂沒有侵略性,在做事情的時候並不會被音樂吸走,可以很享受這個音樂,我聽了三次才有這個感覺,不過我也不準,我連聽Linkin Park都可以專心做事XD 所以應該不怎麼準吧,不過可以聽聽看。

躺在你的衣櫃(Guitar)
詞/曲:陳綺貞

前奏:DA LA LA DA LA LA DA LA LA DA LA

你的毛衣跟著我回家了 我把它擺在我的房間
它曾經陪你走過幾條街 它曾經陪你喝了好幾杯
冰的咖啡 陪你遠走高飛
拍照留念 也曾經靜靜的躺在你的衣櫃

你的毛衣跟著我回家了 我把它擺在我的房間
它這樣覆蓋了我的冬天 它就要刺痛了我最敏銳
愛的幻覺 陪你遠走高飛
拍照留念 天熱了靜靜的躺在你的衣櫃

我的冬天 就要來了 我的冬天 就要來了

你的身體跟著我回家了 我把它擺在我的房間
它曾經被你展示借給誰 它現在靜靜的躺在我的衣櫃
天熱了靜靜的躺在我的衣櫃

我的冬天 就要來了 我的冬天 我的冬天

----
躺著睡覺不錯啊XD

delete

今日meeting時,我跟cllee提及如下對話

efang: 你最近都在做什麼呢?
yen3: 想題目讓老師刪除

聽完之後。

cllee: 不要把我說的都給你挫折,很罪過XD
Clara: 中肯XD

---
這真不知道是中肯誰XD

Begin

終於開始了

cllee說過 It all starts here.

----
Linkin Park - In the end.

星期日, 3月 02, 2008

撞牆

Josh曾經與我聊過,一個理論不通的話,就像一道牆,多撞幾下就通了,雖然會痛總是有個好結果,現在的我是

連牆在那裡都不知道...

---
有牆可以撞真好...Orz

星期六, 3月 01, 2008

頭痛

腦袋有空掉的感覺

---
可是還要想東西...Orz

星期五, 2月 29, 2008

偷懶

好久沒有寫blog了,原因,想偷懶XD 不過昨天都破功了,所以今天索性上來寫寫吧。

首先,我用起了Google Reader + igoogle 工具,我現在可以非常快速的使用RSS特性來閱讀文章,當然,會失去一些版面之美,也無妨,遇到喜歡的網頁再衝進去就好了。RSS Reader我知道非常久了,但是懶的去用。最重要的原因,我覺得不怎麼好用XD 真不知道自己的堅持是那裡來的XD 改用之後,上網閒逛的時間少了非常非常多,不過有時候還是會流連別人的blog一整夜。

我習慣,也喜歡看一個人的寫作軌跡。

再來,我最近發現,我使用MSN+Skype的時間減少了非常多,可能大部分是我找人聊天比較多,而現在我沒什麼時間找別人聊天(笑),或者是大家都年事漸長,沒空理我XD 有空我再我用即時通訊聊天的經驗寫寫好了XD。

再來,最近對於內鎖效應感觸非常深,Josh Ko介紹給我的,但是英文名詞我已經忘了,嘗試在wiki上打lock-in effect,結果沒找到XD。內鎖效應泛指人害怕面對新的事物而寧願保持現況,如果肯突破會有非常大的改變與進步。我剛剛提的RSS Reader就是一個範,而從注音轉換到嘸蝦米也是一個很經典的例子。但是也不能說,肯突破現狀的改變就是好的,因為一旦突破,重新學習的成本是否會帶來長久的效益呢,這不一定那麼好評估。

以寫blog這件事而言,我嘗試換版面,因為現在的版面真的非常簡單,於是我花了一個晚上試了三欄式版面,發現不甚滿意又改回來了。我還是比較喜歡簡單而讓閱讀的人沒有壓力的風格,一個版面塞了太多東西只會失焦而己。但是我不後悔這個晚上的嘗試。

有勇氣改變現況做更好的事也是不錯的。

保持不斷的學習,這件事似乎變的很重要,還是蠻感謝Josh,他說的內鎖效應,讓我有勇氣面對許多我本來不想改變的事物。還年輕的時候,多多改變總是好的。

---
平靜的生活。

星期四, 2月 28, 2008

發現


原來Google Picasa有這樣子的功能啊

原圖XD

---
還是email通知XD

星期二, 2月 26, 2008

要看的文件會不會太多了...Orz

---
算了,繼續看XD

星期五, 2月 22, 2008

有感

昨日經由Clara介紹,聽了王若琳的音樂,雖然平淡無奇,但是蠻有慵懶的感覺,聽起來還不錯。

但是這會讓我想到,由於我對整個社會的不了解,所以至多只能做一些猜測,這些音樂的出現,是從陳綺貞、張懸開始的。當然,查到的資料是說王若琳的父親是王治平,但是我實在是不知道他是誰。不過還是得說,打造一個非主流歌手的成本非常低,不過我本身非常樂見這樣子的狀況發生,畢竟台灣流行歌手我早已不抱希望(笑),常常看見說某個藝人花了多少錢打造了一首MV,花了多少錢在宣傳預算上,但是很少看到花了多少精神在把一首歌做好。

唱片的本質就是唱片,而不是附加於其上的價值。

從張懸、陳綺貞、蘇打綠到魏如瑄(前自然捲主唱)甚至到現在的王若琳,際遇各有不同,不過我得說,張懸和陳綺貞,要塑造成這樣子歌手的隱形成本是非常高的,張懸唱了Live House五年,陳綺貞在師大夜市賣過自己的唱片,各有自己對音樂的堅持。這些才是一般歌手不會付出的成本。張懸唱了Live House五年,勢必能為自己塑造一個市場區隔,當然,她自己本人有沒有想過,我不知道(不過我覺得照張懸的個性,沒有XDXD),當然得說,唱歌的人何其多,歌唱的再好也需要際遇,我想,這就不是我所能了解的。

---
身為一個聽眾能做的事就是好好聽歌(笑)。

星期四, 2月 21, 2008

解釋

昨天在逛學弟blog寫筆記時,一方面還蠻高興的,有認真看書,但是一方面也看到讓人覺得奇怪的錯誤XD
vector<int>::iterator mid = (ivec.begin()+ ivec.size())/ 2 ; // error!

簡單一點來說,學弟並不是很了解指標運算是什麼XD,算了。先來說明正式一點的原因,第一個最重要的原因就是,iterator並不支援operator overloading "/",在此算式中,由於使用了(),使得優先權較高先執行,operator+沒有問題,但是operator/ 就會變成undefined。

iterator支援operator+ 嗎? iterator共有5種concepts,分別是input iterator, output iterator, forward iterator, bidirectional iterator, random access iterator。應該要花時間把這幾種了解,而利用type traits實作advanced,是一個值得探討的問題。

就算回到C語言的指標運算,上述的算式也不是對的XD,我們稍微轉化一下成一般的狀況(使用陣列)。


const int N=10;
int u[N];
int* mid = (u+N)/2;

上述的程式碼編譯是一定會過的一定不會過的,但是通常得到的不是你想要的答案,想想為什麼呢?

為什麼不會過,看一下compiler給的message
invalid operands of types `int*' and `int' to binary `operator/'

指標運算支援前進或後退,但是不支援其他運算,顯然現在的type checking遠比以前好多了,我寫這類東西時,還是多多思考比較好。

---
寫解答的人一定很偉大...Orz

星期三, 2月 20, 2008

母親

很多事的想法,社會上的人物是比不上我的母親的。

雖然我的母親位於傳統觀念中成長,但是生活有什麼疑問,我傾向詢問我的母親。因為她擁有著比大多數人還要來的好的智慧與習慣面對問題。長期安靜生活告訴我一個生活原則。

少欲知足。

現在的社會,很容易陷入一種資訊焦慮,總擔心自己看到的聽到的不夠多,事實上,我們也不需要這麼多的資訊才活的下來,在材與不材之間,扮演好自己的角色,當然無需妄自菲薄,生活其實很簡單。不過在母親身上,我幾乎看不到些事,安靜的過生活,就是一種喜悅。

---
思考與生活。

星期二, 2月 19, 2008

好玩的Google Trends

前幾天在朱學恆的路西法地獄中看到了有關Google Trends的文章。所謂的Google Trends就是提供一個模糊的相對搜尋趨勢。

來截一些有趣的圖XD

Pic01 (馬英九 vs. 謝長廷),在路西法地獄有啦,我只是稍微更新一下XD


Pic02 (馬英九 vs. 謝長廷 vs. 陳冠希),只要是鄉民都會知道的威力XD


Pic03 (電機 vs. 資工),讓人傷心的一張圖XD


Pic04 (電機 vs. 資工 vs. 123),123大勝XD


Pic05 (幹 vs. 靠 vs. 操 vs. 硍),髒話使用率XD


---
博君一笑XD

閒聊linux與Freebsd

事實上我是一個蠻關心這兩個作業系統的初學者,但是由於自身經驗和能力不足,有時候會有不得其門而入的感覺。

事實上在linux上寫程式,雖然有gcc可以寫,但是一旦寫到應用程式與系統程式,對我而言,不得其門而入,問題很多,最重要的是,我實在是不太會找到切入的點,當然,這應該是我自身的問題,我看書寫程式的時間比較多。

不過昨日與ycfu閒聊,他在linux和freebsd上開發軟體是非常有心得的。他大概跟我說明了linux和FreeBSD的現況,兩者皆為Open Source,但是授權狀況有很大的不同,詳情請看這裡但是簡單而言,還蠻好分辨的(往下看,有註解)。

顯然最自由的是BSD License,於是很多人喜歡使用,包括最有名的Mac OS,ycfu跟我說,Mac OSX只是把FreeBSD包裝的很好而己XD,事實上我不知道,因為我不甚了解,但是MacOS確實以FreeBSD為基礎進行開發,原因有二,第一,FreeBSD是以穩定為前提進行開發,第二,沒有授權問題,思科的router有一個名叫IOS的OS,有hacker無聊進去一看,發現以BSD 核心進行開發的。

若談到軟體撰寫,事實上在linux是一個很大的問題,linux 的 kernel 與 library 是分開的,而且基於自由,kernel 會載入什麼 module 也是不甚清楚的,如果要撰寫程式,在每家的linux中,portable 非常低,這是一個基於自由的非戰之罪,當然,我雖然喜歡OpenSource,但是在FreeBSD上開發卻沒有這個問題,因為kernel + library皆由有同一個團隊維護,所以非常穩定,不過最顯然的缺點是,驅動程式支援相對於linux是非常老舊的(沒人寫是最重要的原因XD)。

但是不得不說GNU GPL,我覺得是一個蠻讓我覺得不舒服的制度(雖然很多人不鳥他XD),GPL 不能說是自由的條款,BSD License 才是,一個人要不要開放自己所撰寫的程式碼,應由他自己決定,GPL卻是說,你若用到就得開放,深入了解,我只能說,GNU不是傳教士就是海盜,這會讓我想到一個故事。

居禮夫婦當初發現鐳的時候放棄其專利,為了造福人群,此舉當然可以讓相關應用快速被發展開來,而也不要求任何回饋。但是居禮夫婦使用類似GPL的協定的話,以後相關的研究專利都得開放,這樣子的科技似乎不會發展那麼快XD,但是使用BSD License的話(的確很像居禮夫人原本的作法),自由取用,那麼到底那個license比較好,見仁見智。當然會有人打著自由口號做壞事,不過我得說,尊重每個人的自由是很重要的。

自由是完全的,而不是強制性。

說到這邊,我還是不知道切入點為何,不過我想我會從FreeBSD開始學,致少初學者,學比較具有一致性的東西比較好,而且FreeBSD port 到Linux的話,我也不知道難度(笑),所以我還蠻期待本學期的Unix Programming XD。

---
說多了


  • GNU GPL: 只要你有使用到GNU Library,你所撰寫的程式碼需全部開放
  • GNU LGPL: 若有改到GNU Library,有使用到該library開放即可。
  • BSD License: 程式碼皆可自由使用,但檔前註解不可移除掉。

星期日, 2月 17, 2008

整合

為了盡量把帳號往google集中(這樣子我也比較好管理),我的email信箱如下,msn也移至此。


希望變成永久信箱嘍,不過也要看狀況了,至少這帳號會有效非常久。

---
走的出來才能夠看的更遠

星期六, 2月 16, 2008

溫度

在長庚桌上都會佈滿寒氣,連帶我的MacBook運轉時出現難得一見的超低溫,37度XD

---
之前有過打開只有22度 XD

星期四, 2月 14, 2008

Valentine's Day

今年的情人節,沒有意外。不過尚可以說是過的平平安安,因為都在睡覺...Orz,還是來點首歌曲好了,Linkin Park - Valentine's Day

Valentine's Day, Linkin Park, Miniutes to Midnight(2006)
My insides all turn to ash, So slow
And blew away as I collapse, So cold
A black wind took them away, From sight
And held the darkness over day, that night

And the clouds above move closer
looking so dissatisfied
but the heartless wind kept blowing, blowing

I used to be my own protection, But not now
Cause my path has lost direction, Somehow
A black wind took you away, From sight
And held the darkness over day, That night

And the clouds above more closer
looking so dissatisfied
and the ground below grew colder
as they put you down inside
but the heartless wind kept blowing, blowing

So now you're gone
And I was wrong
I never knew what it was like
To be alone

On a Valentine's Day
On a Valentine's Day
On a Valentine's Day
On a Valentine's Day
On a Valentine's Day

(I used to be my own protection)
On a Valentine's Day,
(But not now)

On a Valentine's Day

(Cause my mind has lost direction)
On a Valentine's Day,
(somehow)
On a Valentine's Day

(I used to be my own protection)
On a Valentine's Day,
(But not now)
On a Valentine's Day

(Cause my mind has lost direction)
On a Valentine's Day,
(somehow)

事實上我的狀況跟歌所描述的完全不像,但是我還是非常喜歡這首歌曲。

---
以前或許很像XD

星期三, 2月 13, 2008

Mac OS 更新

昨天得知有Mac OS 10.5.2更新,但是一更新完,我就陷入"login loop",於是乎我就上網求救啦,結果有好心人告訴我原來官方可以尋找答案,但是捫心自問,我不太會下英文關鍵字就是了,官網是這樣子說的

If Leopard is installed
Start up from the Leopard Install DVD and perform an Archive and Install installation (and select Preserve Users and Network Settings).

簡單的而言,你重灌就對了XD 今天和JC見面,順便借了Leopard光碟重灌(我的放在桃園...Orz),於是乎修復好了。

去掉這點奇怪的原因,10.5.2真的讓人感覺好很多了(或許是心理作用? XD),至少Adobe Printer可以用了,之前都不能用...Orz。

---
麻煩一場XD

星期二, 2月 12, 2008

function object

首先,心愛的MacBook無法開機,感到非常的心痛,偏偏光碟在學校,只好等回學校再說了。心痛歸心痛,文字還是得寫的。

function object 到底威力何在,抑或是說,重要角度為何。

function object(functor) 是泛指利用overloading operator(),而讓一個class能像function一樣使用,但是擁有更多的彈性,一般書上都會寫,由於class擁有data member,所以functor可以有local state。 舉個例子而言

#include <iostream>
#include <algorithm>
#include <iterator>
using namespace std;

class Print_Call{
public:
Print_Call():t(0){};
int operator()(){
return ++t;
}
private:
unsigned int t;
};

int main(){
generate_n(ostream_iterator<int>(cout, "\n"), 5, Print_Call());
}

首先要注意的是Print_Call(),此行是為了喚起default constructor,而不是function call(一開始我的確搞錯XD)。事實上我們可以寫一個比較簡單的等價呼叫,來試試
int Print_Call(){
static int t=0;
return ++t;
}

int main(){
generate_n(ostream_iterator<int>(cout, "\n"), 5, Print_Call);
}


那麼再來看generate_n的原始碼(我稍微重寫了一下)
template<typename OutputIterator, typename Size,
typename Generator>
OutputIterator
generate_n(OutputIterator _first, Size _n, Generator _gen){
for(;_n>0;--_n, ++_first){
*_first = _gen();
}
return _first;
}

在C++中,operator * 和 operator () 皆可做overloading的動作,所以*_first可以是一個trival pointer或是一個iterator,而_gen(),只要能夠支援operator() function call即可,也就是,traditional function 或者是function object 皆可支援,有了最大的共通性,重點是,如果可以寫成function obejct,加上template,就會形成Generic Programming的一部分,因為可以針對很多的共通動作寫成template function object,省下不少麻煩,而STL內建的function object並不多,但是可以用組合技來達成自己要的效果,要怎麼使用組合技呢,重點就是function adaptor了。

不過當然,function object不是沒有缺點,很大的缺點就是,如果為了配合Generic Algorithm,可能會寫出很多一次性的function object,這在程式碼上會變的較難維護,Java的inner class是一個不錯的選擇,而在Boost中也有提出良好的解決方案,可以看一下Joshsoft: Lambda Expressions in C++0x,不過如果想偷懶不想使用function compose, bind,當然可以自己寫一堆function object,也不會有人說你犯規,只是以後好不好維護而己(也還好XD)。

寫到這邊吧,本來還想寫function adaptor,只能說待下回分解了。


---
不知道有多長耶XD

體悟

現在比較能了解Josh為什麼有關程式的文都那麼長了,因為敘述一個完整的思考所須的文字不會太少...

---
所以我決定下次要寫長一點XD

有感

這是一篇Generic Programming 的文章,不是生活文,不想看的可以跳過了XD

今天又把"泛型程式設計與STL"看完一次,對於大一自己的大膽假設,感覺到非常的有種,對於member function adaptor 的說法,我真是白癡到一種境界,不過我也不打算重新說明,因為以前的blog就寫過了。

對我而言,C++ Standard Template Library 用嚴謹的Concepts所組成,STL的六大組件則使用了這些 Concepts 發展成嚴謹的組件,而且非常的明快易讀,捨棄了OO的hierarchy方法,而使用了類似Mathmatical functions 的 f(g(x)) 作法,將整個程式庫壓平,不過背後所帶來的成本,非常高,環環相扣的呼叫,雖然在Compile Time 會化身成如你手工精鍊的一般,但無法針對特定資料的最佳化,還是無法克服的,不過寫到這裡,若要針對資料高度最佳化,不妨尋求OOP的這一塊。

STL的入門關鍵技術有三,一是template,二是type traits,三是operator overloading。

第一個我就不廢話了,沒有辦法針對data type做到generization,就不用玩了XD 而我們先把type traits略過,這可以講一整篇了,先說第三個operator overloading,也是Java的GP無法做到的。為什麼operator overloading那麼重要?

因為operator overloading不僅讓 class 更像一個 real type,也可以讓 class 像一個 function,但是可以比function做更多的事。

最大的原因是,我們可以overloading "()",也就是說,如果對以一個class做operator() 的定義,這個class可以做為一個functor,而也因為我們可以對眾多的 operator 做獨立定義,很多時候的溝通,只要用這招就可以搞定了,如果這招搞不定,而需要用另外的方法時,template + type traits就出場了,在這邊就暫且不論。

不過回到比較簡單的話題,學好STL還是很難的,因為組件不少,目前唯一的想法是,寫完一次程式碼,再盡最大極限來使用STL裡面的概念轉換之,轉換個十多次之後應該會好一點,不過目前當下的我應該是沒有什麼機會。

說多了,下次想到再寫吧。

---
寫完有大陸人的感覺?XD