星期二, 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