星期二, 2月 19, 2008

閒聊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

星期一, 2月 11, 2008

最近

我看我可以幫最近開一個系列文了XD 這個標題幾乎是我懶的想標題的避風港XD

這幾天看小說, 睡覺,還蠻自在的,終於回到桌子上打電腦了XD 也是一件不錯的事,預計這禮拜三回彰中一趟,禮拜四有事,禮拜五回學校,宣告下學期的來臨。睡覺睡很多,但是有助於思考,讓自身回到一個簡單的狀態也是一件不錯的事。雖然最近這陣子Mac OS常當,到底什麼時候要出10.5.2啊XD。報怨完了,也沒啥正事XD

有學弟跟我提及C/C++到底重不重要這個問題,呵,就我自己而言,我覺得非常重要,只是初學C++的人要過很久很久才能摸到應用程式,應該是說,一般的書也不會寫說,如果你要用C/C++開發某些功能應該用什麼喔。所以我稍微列一下我現在所能碰到的,事實上我沒有用C++開發應用程式過,但是要我選擇, C++/ Java 仍是我的首選(笑)。

  • GUI Programming: 在Windows上有VS可以選擇,但是跨平台上則有QtGTK,如果上述都不喜歡,可以考慮一下wxWidget
  • Network Programming: 可以使用ACE,當然,也可以使用Unix 上的Socket Programming
  • 3D Programming: 在Windows上有DirectX可以用,而OpenGL是跨平台的

族繁不及備載(而且我還沒有提System Programming XD),但是我所能接觸到的就會學不完啦,語言的重要程度是看你想拿語言來做什麼,沒有一個程式語言能夠解決所有事的。

回到一般生活上,回學校的生活似乎有點趕,不過也還好,打算看看上課狀況再調整吧,比賽的進度還蠻趕的,如果不要落後,大概每天都要蹲實驗室吧,不過也無妨,多寫點程式總是好的。

一起加油吧!

---
沒什麼組織的文章 XD

星期日, 2月 10, 2008

電子之星

這是一本短篇推理小說集。

我一直以為這是推理小說,但是看完之後的感覺是,這是很像推理小說的一般小說XD。主角在書中被人稱之為萬事通,專門解決問題,看完這本的第一個感覺是,會讓我想到宮部美幸,不過這位作家的書我也只看過兩本,分別為模仿犯Level 7

事實上石田衣良和宮部美幸有可能會被我歸類成同一種作家,他們都想藉由推理小說的架構來表現出現代日本的社會問題,直接講有什麼社會問題,並不是沒有人理會,而是所能使力的部分太少,如果不能深入分析,恐怕一般人不予以理會。

我不太清楚東京池袋在日本是什麼定位,不過根據wiki來看,是一個繁華的地方,這句話或許很普通,但是就我個人的感覺。

繁華伴隨著黑暗。

台北是一個很繁華,但我始終不能適應台北,也是同一個道理吧(笑)。我看書沒有一定的習慣,通常是隨機取樣,所以我沒有看過池袋西口公園123 XD 但是從這本書而言,我看到了比較輕鬆而且是美好結局的敘述方式(要看相反的可以看模仿犯XD),想要了解日本社會的架構,不妨多讀讀這兩位作家的書,我從閱讀這些書,學習蠻多的。

---
不過要有時間就是XD

戰慄遊戲

這是一本驚悚小說,不過很精采,但是我也得承認,我比較少看這種小說。

整個故事的人物架構非常簡單,一個專門寫暢銷小說的作家,跟一個瘋狂連續殺人犯的書迷,在作家發生車禍之後,被書迷要求重寫小說橋段,地點也很簡單,大部分只在該連續殺人犯的屋子裡,更精確的來說,只在囚禁該作家的房間。而故事的結束伴隨著死亡。

死亡方能結束這扭曲的關係角力。

這本書不很薄,不過故事架構很簡單卻不失其張力,閱讀蠻愉快的,我花了一個晚上看完,不過這本書不能帶給我什麼啟發就是了,但是享受故事往往就是一件很不錯的事。

---
寫心得(這不能稱之為書評XD),我還須要很多的練習XD

星期五, 2月 08, 2008

心情

好多了

---
還蠻簡單的

十二點了,手機沒開,十二點半就關機

---

星期三, 2月 06, 2008

sidebar 小更新

除了遊客留言之外,終於加入最新回應的功能啦(我不會寫,泣...Orz),後來在google上找到有人撰寫,非常的感謝。

同時新增了WishList,對於sidebar的link有稍做更新。

---
有更新回應很重要XD

閱讀清單

我從小時候就有不怎麼良好的閱讀習慣,而我的買書習慣不怎麼好,習慣看了喜歡就抓,然後再難看都會強迫自己看完,不過通常很好看,或許是我不怎麼挑? XD

不過工具書真的是考慮再三,因為有關Computer的工具書,可不能買來保值啊XD 不過我的確有幾本書是買來就絕版了..Orz

"STL源碼剖析"會絕版並不在我的意料之外,雖然我個人蠻喜愛這本書的,給初學者看太難,給進階使用者也沒有利基,能銷售的恐怕只有莘莘學子了,這本就是我買完就絕版的書,雖然覺得絕版可惜,但是並不難過。

扯遠了XD

不過過年閱讀清單暫列如下吧

  • 池袋西口公園4 - 電子之星 by 石田衣良, 劉名揚譯
  • 池袋西口公園5 - 反自殺俱樂部by 石田衣良
  • 戰慄遊戲 by 史蒂芬 金, 柯清心譯
  • 棋王樹王孩子王 by 阿城
  • 我是傳奇 by 理察 麥特森, 陳宗琛譯
  • 基地 by 以撒 艾西莫夫, 葉李華譯
  • 慈悲的滋味 by 黃凡
  • 黑名單 by 勞倫斯 卜洛克, 林大容譯

誰說我不看課外書的XD 不過上面的清單可以看出,推理小說最多XD 可能跟我這近幾年的閱讀習慣有關吧,我高三時看的小說大部分都是台灣小說新興小說作家為主,我最近看到有人在票選歌曲,有一首也蠻讓我shock的,雖然我沒聽過XD 王心凌-那年夏天,寧靜的海,老實說我不知道這首歌唱的時麼樣,但是我倒是看過郝譽翔寫的就是了,不過我還是偏好黃凡就是了,如果我有閒,或許我可以來討論一下這方面的事,但是我不是專業,不要太期待就是了XD。

閱讀,可以帶給自己不同的人生。

---
想到就寫,果然沒什麼章法XD

星期二, 2月 05, 2008

冷天氣

適合進行寫作,寫些什麼東西也好...

---
好久沒有這種感覺了 寫的出來就當作禮物吧,呵

星期一, 2月 04, 2008

簡單的heap-sort 練習

這幾天在看第二份簡報,就隨興寫了測試碼,並沒有使用嚴謹的STL寫法XD 不過還是稍微做了一下template(到這種年紀了,這種有做跟沒有做差不多,應該要寫個template<class RandomAccessIterator>之類的),不過想想了,都是練習,就放一下,概念一通,這種簡單的演算法並不難以實作,重點是,怎麼實作會比較快,恐怕就要針對特有的資料特性做研究了,寫到這裡,還是繼續看書比較實在,哈。

code

事實上還是蠻喜歡這種基礎練習的,總覺得基礎要打好。

---
事實上冷到不太想動了XD

星期六, 2月 02, 2008

閒逛

我不否認我一直有閒逛網頁的習慣,而且什麼都逛XD 但是蠻常說看看會有誰來看自己的網頁,結果今天發現,今天有來自於一個scm的內部網頁,這,應該是被逆向追縱? 也不是什麼稀奇的大事,然後就順道看一看有什麼更新(當然,上面都看不懂XD),發現有五個與其研究的學生(當然裡面有Josh XD),發現都很強,唉,自己還是多練習吧

突然還想到,我以前跟Josh開玩笑說,如果有人欠倒茶水,我會去XD 照我現在來看啊,去也只能倒茶水XD
---
繼續熱血XD


10:48PM 記錄一下。今天吃隔壁家喜酒前,被放的歌吵醒,歌名是"今天你要嫁給我",頗有趣XD

熱血吧

昨天剛寫完證明題(也沒有寫完,有些題目不會寫),信心大傷,但是看到後來的簡報,我又熱血起來了,繼續衝,才會熱血啊,突然很後悔忘了帶數學書回來。

---
熱血好啊


10:07 PM 順利轉成latex,事實上只是硬幹而己,毫無美感可言...Orz

星期三, 1月 30, 2008

念書

終於把隨機客今年上的slide 1看完,發現自己要能夠很精準的表答一件事還蠻難的,待會來寫作業練習了(麻煩Josh了...Orz)

---
還好寒假計畫不是說假的XD

星期一, 1月 28, 2008

隨身聽

這對我而言一點都不陌生,在我高中時代,我蠻常一個人自己走路,自己讀書,自己逛書店,從我高中第一台隨身聽以來,在我生活中佔有很重要的角色,而我自己也是從這個時間點開始聽歌。

還記得我買第一台隨身聽的原因是,為了逃避公車的上的賣藥廣播XD 當我每天搭乘彰客時,不一而足的神奇藥在耳中排迴,還蠻難讓我接受的XD 於是我進入了CD隨身聽時代。

CD隨身聽

高一寒假時,跟老爸死凹活凹凹到了一台Panasonic SL-CT410,這是一台很簡單的隨身聽,但是卻很棒,但是只能聽CD,這成為我高中買燒錄片很大的理由,雖然我從高一下開始買孫燕姿的專輯,但是基於愛物的理由,我還是會另外燒一片起來,那怕破壞了正版,不過老實說,這台並不如我所想像的耐用。用到後面,因為我的不小心,就不見了。現在想想還是一件非常可惜的事,它渡過我不少逃避賣藥的快樂時光XD

本來想試著過著一段聽著賣藥訓練耐性的日子,不過耐性終被磨盡了,我在高二下非常的努力存錢,買入了現在仍然還是好物一枚的Panasonic SL-CT710,我還記得我買回來時非常高興,還特別研究了隨身聽的進貨差異,說明書看了好多好多次,那怕遺失了那個功能不會,而且這台可以聽MP3,在我一個人的高二下,努力念書的高三,CT710仍然非常的盡職放著Do As Infinity - For the future, 樂園,伴過渡過很多黑白的夜,也從這個時間開始,我只要是一個人做事,一個人走在路上,我都會聽著音樂。

我喜歡透過音樂來播放這個世界。
這或許某程度的說明為什麼我仍然喜歡孤獨的原因,不過一切都習慣了。

MP3隨身聽

從我大學開始,我姊給了我MP3隨身聽,我慢慢能接受MP3的便利性與可洗性,與...呃,環保XD,我姊給我了一個Acer的mp3隨身聽,只可惜還是不見了(我常常把東西用不見...Orz),之後我姊又給了我BenQ JoyBee 125,體積非常的小,而且內建usb,非常滿意,不過到大學之後,面對電腦的時間變多了,mp3隨身聽對我而言,可能變成一個多功能的隨身碟,到現在,連我的手機nokia 5200都可以聽mp3,這次坐火車返家,便是聽手機mp3回來的。

老兵不死

聽音樂那麼久了,我不是一個行家,我只是習慣邊聽音樂邊做事,很明確的知道不想陷入沉靜,雖然很想要ipod,但是一直沒有下手的原因是,現在的mp3隨身聽,大部分放出來的音質,沒有我聽到 SL-CT710時的那份感動,今日清房間時,又看到它了,一聽之下,要找回聽音樂那一份感動,而不是單純的把音樂播放出來的感覺,是一件非常困難的事。

如果有興趣的人,可以捎個訊息與我,我不想CT-710在我手上荒廢,聽起來,這聲音還是讓人感動的。

---
溝通的好,不一定要錢喔XD

星期日, 1月 27, 2008

今天

都在睡覺,我承認XD (16個小時?)

本來想著文述說有關網路文章寫作的二三事,想了想還是懶了,這種文章前人之述備矣,我想我不需多著墨。

最近發現以前看不懂的某些書,現在變的很容易看懂,毫不費力,不知道是好還是壞,不過我想因為這樣子,確定自己的寒假目標是正確的,也是一件不錯的事。

回家後,才發現,閒適生活似乎只剩這個寒假了。呵,不過工作即是生活,也無須擔心什麼XD

---
閒聊有益身心健康 XD

星期五, 1月 25, 2008

推文

今天由於C++ Primer 4/e 中文版現身,大喜過望,所以特別po版 XD

 作者  yen3 (yen3)                                          站內  CGUCSIE99   
標題 [分享] C++ Primer 4/e 中文版
時間 2008/01/24 Thu 22:52:36

C++ Primer 4/e 中文版出現了

高興之餘,我明天要去天瓏搬書,為了慶祝出版

開放十本,不過我想大家很多人要回家了

錢要自己出,我可以幫忙搬回來。

這是我一時興起,呵XD


就有如下的推文,SmallPig是張賢宗老師,主持一個blog - 張小p過生活

→ yen3:btw,這本書一半是我朋友譯的,所以我非常的高興,呵            08/01/24
推 SmallPig:我書櫃的 C++ Primer 5/e 是怎麼回事? 08/01/24
→ yen3:C++ Primer Plus 和 C++ Primer 不一樣,後者才是bible 08/01/24
→ coolsky:老師自己翻的?! 08/01/24
→ yen3:C++ Primer Plus的定位比較像初學者 08/01/24
→ yen3:而 C++ Primer 本身定位為一個導論,每個點都有一個概觀 08/01/24
→ SmallPig:XD 真的耶~我被騙了! C++ Primer 真的是一本超好的書~ 08/01/24
→ SmallPig:我當初是買 2/e 08/01/24
→ SmallPig:後來送學弟了~一本多少?我也想買一本! 08/01/24
→ yen3:XD 08/01/24
→ yen3:只能說越多人打越多折XD 08/01/24
→ yen3:天瓏參考價: 792 08/01/24
→ SmallPig:這一版也是碁峰出的嗎? 08/01/24
→ yen3:是碁峰的出的,jjhou譯 08/01/24
→ SmallPig:侯捷 是你朋友喔? 我有認識碁峰業務,也許也可以問問他 08/01/24
→ yen3:喔喔喔,侯捷是負責後譯 XD 老師要幫忙問嗎 XD 08/01/24
→ yen3:http://joshkos.blogspot.com/2008/01/c-primer4e.html有解釋XD 08/01/24
→ SmallPig:可以阿,我等等寫信去問~~ 08/01/24
→ SmallPig:你們先登記~ 08/01/24
→ yen3:那麼就是老師開放登記啦,謝謝老師,呵呵 08/01/24


所以C++ Primer 4/e至少變成系上推文了,目前累積30本了? XD

---
好歡樂XD
結果是58本XD 一本700,好歡樂XD

星期四, 1月 24, 2008

97

這是efang在Data Structure and Algorithm (I) 所拿到的分數,實至名歸

---
下學期換她罩我了? XD

星期三, 1月 23, 2008

女人

這世界上有一種人惹不得,她叫做女人,for example。

yen3爸:不要惹你媽
yen3媽:不要惹我

yen3: 不要惹女人XD

---
就是這樣XD

發生

來的第一天發生很多事,不好的事居多,或許我會很直覺的認為,本當如此,不過接二連三有人資料被毀,恐怕就不是一件好事....

我寫的程式碼,由於沒什麼重要性,我全部丟Google Code(比較早期的丟gmail),相關文件丟GooglePage,知識累積電子化的寫在blog上(知識分享會有更大的利益),電腦上的資料用一顆外接硬碟備份,如果電腦和外接硬碟同時壞了,我就認了。偶爾會燒成DVD。從我壞了五顆硬碟之後,我深深相信資料備份的重要性。

今天很多事非我所能主導的,我頂多只是聽命行事而己,人和人溝通的問題是很難解決的,很多事是有對於不對的問題,但是在這之上,也有做的好與不好的問題,我想,很難兩全。

可以再說很多的,就說到此吧。

好啦,我知道有某位老師會看我的blogger,我幫他的Google Group打廣告一下,他說了一件事給我們聽,當他有一年他做的上課簡報不見了,想問學生有沒有備份,結果竟然找不到,他從此就把文件全部丟在Google上,當然,我覺得這位老師上課很有趣,我學到很多,他主要從事流感模式研究。

複雜適應性網絡與系統實驗室 黃崇源

---
Josh,除了學術之外,很多事的複雜超乎你的想像

星期二, 1月 22, 2008

網路

昨日至下個學期要坐的位子,發現網路線只有一條,兩個人要用,所以過了半天沒有網路的日子(去跟老師聊天也慶生,所以還算忙碌)。今早用自己的AP架起來,現在一切相安無事XD

似乎也宣告,下個比賽(這個?) 開始XD

---
不過現在發文的時間我還在吃早餐XD

星期日, 1月 20, 2008

最近

好啦,寫了那麼多有關程式的,我來寫一些事物,雖然這對我而言可能一點都不輕鬆。

有很多時候,我們會問自己一個問題,當喜歡一個女生時,女生為什麼要選你而不選別人? 比條件是比不完的,會有很多人條件比你好,也會有人比你更會當好人,那麼問自己,憑什麼?

廢話,我們對自己喜歡的女生好一定比其他人來的長久。

換個簡單的說法就是,自忖可以給女生幸福,但是嚴格說來,不是幸福,而是我們比別人更持久,真正喜歡一個人不是玩玩的心態,也不是說來賭賭看,真心喜歡一個人,失敗了會很累很累。只是這樣子的心情,女生並不容易看到吧。當然,我們這邊把單純只會比較外在的人忽略掉,我們也不應該喜歡如此膚淺的女生。

當我們喜歡一個人的,我們比別人好的就是,我們能帶給她幸福。那怕失敗了,我們都會希望她幸福。

---
加油, 我的朋友

懷念


剛剛去acm的submit一看,發現上傳系統移到新的Server去了,順利的轉移之後,截圖留念XD

No comment

這是我在學弟妹版上po了一篇文章的預期,這篇只是興之寫至,不會有任何reponse是預料中的事,不過,身為一個學長,該告知學弟妹的事,該幫忙的,我們還是得做,原文轉錄如下


[閒聊] 寫程式的兩三事

各位學弟妹好,我是資工三,知道我的可能不多,不過也
不重要(笑)。

我是一位喜愛寫程式的人,當然,我曾經也是遇到很多問題
最大的問題是,我平常該怎麼練習寫程式這件事?

多閱讀,多思考,多寫程式是很重要的事。

多閱讀是無法避免的,如果以後想要走資工這條路,就得看
原文書,當然,從高中上來要變成完全閱讀原文需要一點時
間,中文書是輔助你學習,但是不是主導你學習,最新的訊
息還是只有原文書才有(侯捷says: 不讀原文不是你混不
下去,不然就是你不想混了。)

換個角度來思考,如果想要做好一門學問,真是的該好好讀
完一本書的,如果長期適應補習班的填鴨式教學,是否已經
喪失自己學習好一件事的機會?如果只想應付考試,是一件
非常容易的事,重點是,這四年過去之後,對自己留下了什
麼呢?

讀原文書的方法很簡單,以Absolute C++ 3/e為例,相
信大家都知道for, if, else之類的語法了,不妨從此
看起,因為懂了,看起這些片段比較容易抓到重點,也比較
沒有懼怕感,看久了,就習慣了,當然,一開始需要花很長
很長的時間,我記得我第一次看原文書時,一小時只看了
兩頁XD 也可以自己先試著看懂程式碼,再看內文,相信對
於抓住文章重點很有幫助。

如果一件事一下子就可以做好,那麼相信別人也辦的到,
唯有自己做很久的事,才能一點一滴的創造出差異。

當然,如果想要進階閱讀的話,我推薦
# C++ Primer 4/e 中文版(寒假會出)
初學者如果有不懂之處,看個中文也不壞 XD?

多思考的話,我們略過,不然這篇文章會過長XD 有興趣
歡迎找我討論XD

多寫程式的話,不妨多練習,而我們可以有下列目標。
# 老師上課所提及的程式可以試著重寫
模仿老師上課的程式,不妨一個一個字的重打,增
加熟練度,學習是從模仿開始。寫完之後可以自己
把課本蓋上,自己再重寫一次,是一個可以讓自己
快速熟悉程式概念的方法。

# 寫寫書上的練習題
我不否認,教科書上的練習題都蠻無聊的(尤其是
Absolute C++ XD),那麼可以看看中文書上
的習題,都還蠻好寫的,簡單的可以寫一寫,多少
可以增加對語法的練度,困難的也可以當作磨練
自己嘍。如果真的覺得很簡單或者是想看看世界

推薦書籍
@ 名題精選百則-使用C語言 冼鏡光著

# 寫寫網路的練習題
事實上最直接推薦的還是ACM,上傳程式碼之後
會幫你執行該程式碼,判斷對錯,由於題目難度
參差不一,我蠻建議可以先從簡單題練習起,但
是也蠻複雜的,如果有興趣的歡迎與我聯繫XD。

如果想要了解,可以先看看這個網頁
http://axp1.csie.ncu.edu.tw/~rick/acmguide/

推薦網站
@ ACM http://acm.uva.es
@ Lucky貓的acm園地 (ACM 部分中文題目翻譯)
http://luckycat.kshs.kh.edu.tw/


事實上只是想閒聊一下,想不到還是寫太長了(笑),不過如
果對寫程式有興趣,歡迎與我聯繫,或者是來blog逛逛(笑)


---
美好的世界就是期待奇蹟

星期六, 1月 19, 2008

錯覺


剛剛把書架上的書都拿下來,才發現,原來學校的書架也蠻大的XD

---
為什麼以前一直覺得很小XD

HashTable - 以簡單的STL實作之

嗯,我還是覺得用template比較好,畢竟可以完全把事情抽象化是一件很有趣的事,在這一次的程式中簡單的使用到functor和template partial specialization(用在產生hash value)上,參考了不少書只能寫出這樣子的程式,甚感慚愧,事實上寫這個程式我只是想回復使用template的手感,不過感到的最可惜的是下面這個程式碼

template<class T, class EV>
ostream& operator<< (ostream& out, HashTable<T, EV> rhs){
for(unsigned int i=0; i<rhs.u.size(); ++i){
copy(rhs.u[i].begin(), rhs.u[i].end(), ostream_iterator(out, " "));
out << endl;
}
return out;
}


code

應該有辦法避開這個for loop,使用STL應該有辦法的才是,只能說自己能力不足,這個寒假可以好好玩一下

---
我還是玩心很重XD

hashtable的簡單實作

讓我們談談如何實作一個簡單的hashtable

嗯,剛好我最近在複習怎麼玩C++的STL,也有學弟問,我想可以討論一下hashtable怎麼使用C++實作。由於學弟妹皆沒有template的概念(這是很可惜的一點),所以我們就不用template啦。

首先,我們大概說明一下hashtable,大概需要怎麼樣的資料結構

  • hashtable(廢話XD)
  • linked-list
  • dynamic array
以這一次學弟妹問到的bookmark為例,如果我們要做一個hashTable,那麼我們會希望有一個array,來儲存整個hashTable,所以我們會寫如下的程式碼
class bookmark_hashtable{
public:
bookmark_hashtable(int s);
/* ... */
private:
int _size;
bookmark_linklist* u;
};

bookmark_hashtable::bookmark_hashtable(int s=57){
/*
* 當決定整個array的size之後,隨之動態分配一個新的linkedlist array
* 每一個array element 皆為 linkedlist,而array index即是自己需
* 產生的hash value。
*/
_size = make_next_prime(s); // int make_next_prime(int num)並未定義,自行撰寫XD
u = new bookmark_linklist[_size];
}

bookmark_hashtable::~bookmark_hashTable(){
/*
* 當object life time end,記得delete dynamic array
*/
delete [] u;
}


這時候就興起一個疑問了,bookmark_linklist從那裡來,呃,基本上第一份作業有關url的實作,稍做改變即可,不過基本架構如下。
struct bookmark{
/* ... */
};

struct bookmark_node{
bookmark data;
bookmark_node* prev, next;
};

class bookmark_linklist{
public:
/* ... */
private:
/* ... */
bookmark_node* start;
};


那麼我們還需要做什麼? hashTable的架構已經完成了,接下來就只有增加功能,如果bookmark_linklist的功能寫的足夠,bookmark_hashtable應該都能直接支援。例如說

void bookmark_linklist::add_data(bookmark data){
/* ... */
}

/* 如果bookmark_linklist::add_data已實作之則我們可以寫 */
void bookmakr_hashtable::add_data(bookmark data){
int index = hash_value(data);
u[index].add_data(data);
}


匆促之下臨時寫成,有問題歡迎多多討論XD

---
還是有template比較好玩XD
08/01/19 05:58PM 聽說很多學弟妹對linked-list不熟,我想起來我以前寫過XD

星期五, 1月 18, 2008

計畫

寒假計畫好像很簡單,就三本書吧XD

  • Introduction to Algorithm 2/e
  • Computer Orgranization and Design: the hardware and software interface 3/e
  • C++ Primer 4/e 中文版(基本上是當故事書看,如果寒假拿的到的話XD)


就這樣,希望能開一連串的連載嘍XD

---
希望不要跳票 XD

星期四, 1月 17, 2008

寒假

開始啦,不過很多事情尚未確定,預計的計畫都是讀書,所以暫緩po出XD

星期二, 1月 15, 2008

以後再說

看到學弟妹的版上說一個學期五次作業很多...? 我自己試程式的次都遠遠超過

---
算了,考完再說...Orz

星期一, 1月 14, 2008

早晨

其實現在也不算早了,只是剛好這是期末考前的空檔XD 天氣轉冷的當下,其實很怕自己睡過頭XD

有時候仔細想想,每個人總是會有想把自己的事做好的時候,有人做好了,有人做不好,心有餘力而不足的事其實常發生,對我而言,其實這算不了什麼,我有些科目可以high pass,有些科目可以被當掉,我可以玩VHDL玩到整夜沒睡,我也有翻到書就掛點的記錄。

學生的最大好處就是,學校允許學生犯錯,但是不代表可以一直犯錯XD,應該是說,當我們在做多種嘗試時,可以由於很多因素犯了錯誤,進而學習,到了社會,可能就沒這個好處了。所以在我們當學生時,記得多嘗試,多學習,多接觸不同的人群,我覺得這樣子還蠻有趣的。

事實上PageRank升到1我還蠻高興的(看清楚,我沒有廣告XD),因為總覺得很平凡的自己,可以因為這個blog認識更多的朋友,從以前到現在,我還蠻喜歡抽學伴的(交了女朋友之後也是XD),因為我從他人身上,看到不同的人生(我只是愛聊天XD),不然我怎麼可能知道,政大無熱水XDDD。

有時候常常在想,我做的跟資工無關耶,我要不要改行當張老師算了XD DJ也不錯,還是,無業遊民每天嘴炮 XD

就算閒聊一下嘍XD

---
早起會讓心情好一點~

星期六, 1月 12, 2008

YUI


這是一個日本歌手,從Music Static 2007.2006 SuperLive 看起來很安靜的樣子,但是一看她演唱起來,整個人有亮起來的感覺,這次因綠際會,聽到她的第一張專輯 FROM ME TO YOU ,聽她的歌不能只聽太陽之歌喔,她可是有很多歌可以聽的,推薦 Merry Go Round(FORM ME TO YOU), CHE.R.RY(Can't Buy My Love)

---
我不懂日文,別問我歌唱什麼XD

Page Rank


這個是Josh的pagerank,我覺得有這個分數是很正常的事,恭喜恭喜,然後接下來是....
這是怎麼一回事...Orz 我又做了啥壞事了XD

---
開始懷疑pagerank了XD

星期五, 1月 11, 2008

小聊一下

雖然我不是頂認真的做知識管理的CMS,但是如果使用XAMPP + Drupal ,的確可以很輕鬆的把CMS架好,讓架好一個CMS的付出成本降至極低。

anyway,架站那麼容易了,架CMS的重點是什麼呢? 是你想讓這個CMS所扮演的角色,我蠻認同老師在課堂講的一段話

Web 2.0是以使用者為主的應用,但說穿了,這是將Client-Server架構發展到極致下的結果。

結果是一個很簡單的,當我看到PC World上的年度最讓人覺得失望的科技,Social Network名列第八,倒也不是一個讓人覺得太訝異的結果。只是發展到一種極致,我的興趣不是網路,不然以我不怎麼靈光的腦子來思考,網路的下一個未來在那裡? p2p似乎還是存在一點問題,並不是每個人都有固定的實體ip,只要這個問題存在,Server還是有必要存在的,但是如果每個人都有實體ip,具有不可變更性的話,你在網路上的所做所為是受到監控的,每個人該不該有自己的ip也是一個兩難的問題,誰喜歡被監控呢?

回到正題,當我們架設CMS時,定位是什麼呢,我跟老師說的是,我不想做大眾市場,市場機制很早就證明,把市場做大不一定會賺,但是如果做出市場區隔,或許可以保有一定的活力,所以我跟老師說了,該做的CMS是小眾的固定的,知道對方是誰的,和現有的存在CMS大異其趣。有一個原因是,被人做爛了,還有一個很大的原因是,當把一個知識市場做大時,貢獻的相對比例就降低了,如果不考慮從中獲利的因素,我比較喜歡小眾市場。因為一旦把市場做大時,就有人想要從中建立屬於自己的影響力,在小眾市場中,比較不需要這樣子的角色。

台灣的獨立音樂,就是一個很好的例子,看起來很小,但是加以分析,可以從中得知,如果可以做到一定的市場分隔與規模,獲利百分比不見得會比流行音樂來的低,如果今天獨立音樂有著一群有著mp3仍然會買正版CD的人,跟流行音樂,大家抓就好的人而言,我相信獨立音樂買CD的人較多,與其阻擋盜版,不妨試著建立屬於自己的市場,消費者是可以被教育的(這就讓我想到,張懸把聽歌的人稱之為聽眾,而李玟稱之為歌迷,兩個皆為我親耳聽見:) ),又扯遠了

只是閒聊,就當作廢話一則吧


---

只是有人說聽不懂我說的,我就隨興說說...XD

做壞事

昨日與Josh討論到很多事,有時候,能當上教授,除了本身的實力,還有一些額外的因素,當然,這會顯示這些事情很複雜,我們就跳過吧。

至於志向問題,我想不論是一個理論家,實作家,理論與實作並重的人,都有其發展的空間,決定好就去做吧。

另外也順便討論一下到底要怎麼樣的程式才能灌爆別人信箱,他之前試著做過,用Ruby做的,因為有內建套件,所以很方便,我想想,就用Java的Socket Programming部分做出來,也很簡單(不到三十行),不過事實上會卡在一些問題,現在大部分的Mail Server並不支援直接登入使用SMTP寄信,不過倒也還好,如果用一個浮動ip,然後再隨機尋找可以的就好了,比較大的mail server不行,我想還是有很多中小企業或中小學校沒有關掉? 這也是有可能的,不過當然,這是就技術層面來討論,實際上不會去做的,當然,也不會放程式碼XD

----
測試時,我的信箱多了好多信XD

星期四, 1月 10, 2008

看到鬼

這是真的嗎?

---
從Josh那邊看到的XD


印刷廠的排程趕不上,到一月底才會上架,譯序很讓人期待,雖然沒有某些東西我會很想炸人,那麼現在是預購時間嗎,書商應該要,預購有特價啊,送海報之類的(敲碗~)XD

星期一, 1月 07, 2008

最近

最近,沒啥大事發生,就是一直寫程式吧!? 聽說還有兩隻程式要寫 XD 不過都算是小事了,只是最近朋友寫程式落入一個我難以理解的狀況,我只能說,做事乃循序漸近之行為,絕對不是瞻之在前,忽之在後,君不見萬丈高樓平地起,豈有蓋空中樓閣的道理。

雖然擔心,但是也無法說什麼,只能說繼續努力了。期末考近啦,也希望自己翹課能翹少一點了XD

---
我為什麼要寫的文言不文言,白話不白話呢...Orz

星期日, 1月 06, 2008

Google Code

今天小摸一下,可以把程式碼集結成一個地方,也可以讓人搜尋,不太清楚怎麼用,但是一個project有100mb的檔案空間,我想我可以用很久很久,然後也可以直接下載,我想以後檔案會放這裡,比較好整理。

也因應Google Code和Picasa,訪客留言區,所以小小的調整的一下sidebar的版面配置

---
當然,還是全部都是free

星期六, 1月 05, 2008

用GooglePage存的檔案,最近又可以下載了,似乎是在我把音樂移掉之後的事,看來Linkin Park魅力不小,大概以後不敢放音樂在上面啦,保持可以正常下載就好。

所以我之前猜的是錯,原來google還是開放自由連結的,所以我還是會繼續放在那裡吧XD

---
剛好可以偷懶了XD


12:06 PM 發現好像蠻多人在找我放的新版個人代表圖(這絕對不是我畫的,不過我很喜歡),會不會再爆掉啊...Orz
01/06 06:39 PM把圖移回學校了,應該不會有事了XD

以UDP實作RDT

花了很多時間之後,實作出以UDP實作reliable data transfer的半成品(因為我覺得並不是那麼完美),檔案僅供參考嘍,以Java實作之。

code(Google Code)

還是一樣,歡迎自由轉載,無需告知,不過最近班上在寫這個作業,應該不會有人找到這裡來XD?

好像變成某些關鍵字第一名了XD

---
但是還是因為這個東西搞了一個禮拜...Orz

星期三, 1月 02, 2008

RDT二三事

建立在一個假設上,ack packet完全不會loss掉的話,那麼事實上單個packet transfer的RDT,已經做的差不多了,所以接下來該考慮實作如果連ack packet都不見時該如何處理。課本事實上用了一個偷懶的方法,反正在一定的時間內沒有收到ack就重傳,也是一個不錯的選擇XD

---
事實上有點語無倫次的感覺


02:29 AM 事實上sendPacket設定一下就可以達成這個要求了,我剛剛在想什麼,竟然認為很難,看來腦袋有錯亂的傾向XD

星期二, 1月 01, 2008

寫程式

寫程式就是一個可以把阿匹婆變成林志玲的魔術

---
但是寫程式不是魔術靈XD

星期一, 12月 31, 2007

寫程式之餘

RDTACKPacket ackSizePacket = null;
do{
sendPacket(sendPackets.get(0), clientSocket, IPAddress);
ackSizePacket = receiveACKPacket(clientSocket);
}while(!(ackSizePacket.getPakcetNumber() == 0 && ackSizePacket.getACK()));

寫RDT之餘,看到這一段程式碼,發現每一個function 都是自己撰寫的,也就是說這一段程式碼是我寫的程式碼的組合技XD 看起來也蠻有趣的

---
寫完會更有趣XD

星期五, 12月 28, 2007

RDT

經過一晚之後,總於做出一個基本來,要進行下一步,checksum and ack and retransfer XD 如果用UDP實做的話,事實上第一件事要做的是把每一個超長字串(這邊預設的支援大小約80mb (8192-9)*10000/1024 ),會把這80mb分割成約10000個封包加以傳送之,再接受端根據pakcet number再加以重排。

會搞那麼久的原因是,我對Java的String index不熟..Orz

---
對,沒錯,就是 String.substring(beginInex, endInedx) ...Orz

星期三, 12月 26, 2007

GooglePage

原來以為這是一個不讓Google注意的服務,所以我就放心的使用他來放一些有關blog的檔案(程式碼、文件、我的個人圖片),結果這幾天發現,好像不能直接連結啦XDXD,只好先暫時移回學校的個人空間,為什麼要放Google呢?想說都一起,也蠻方便的,也不用怕學校的空間什麼時候會倒掉,看來現在只好再另尋他處了。

---
這年頭放資料有點麻煩XD


有找到Google Code - Project Hosting,好像不錯玩,改天來試試看

星期二, 12月 25, 2007

沒有頭緒

過了好幾天,我依舊對RDT implement沒有頭緒,或許會邊做邊寫? 也是一件很有可能的事。

昨夜學弟在讀Degital Design時,發生的問題是就是不懂課本在說什麼,老實說,我覺得有Flip-flop的狀況下,若為synchronous ,也就是所有的電路皆聽同一個clock的狀況下,先用 finite state machine 規畫之,再把 state diagram 轉成 truth table,再把truth table 的每一個output使用k-map簡化出電路,即可實作之,一氣呵成,一次解決,所以我還蠻喜歡Flip-flop這個部分,可謂之把sequencl circuit 與 combinational circuit結合的美麗之處的開始。

說多了,回到正題,目前對Java熟練度有大大的提升,不過自己也很清楚,有些概念也只是自己硬用C++轉換,還是得再努力才行,目前已經回復至正常的生活。

---
keep going

星期六, 12月 22, 2007

最近

一個禮拜沒有寫blog了,囧XD

不過也過的還算平淡,就是因為平淡,學習的速度不明顯,心情也沒有太大起伏,所以也什麼事都沒有發生,不過今天也不算有什麼動力想寫作。

所謂的生活,就是不斷的精進努力,不是嗎

這幾天看efang在寫程式,自己也試著寫一寫,發現STL這一塊的概念比以前更好,但是有什麼好工具可以用卻快忘完了,而且還有boost尚未安裝,雖然C++是我最愛的語言,總有一種越離越遠的感覺,不過也無妨,現在正在學Java,學完再回來看,也是一個不錯的選擇,哈

Java的概念並不難(以學過C++而言),不過因為少了很多東西,才能夠發揮他的威力,但是也因為如此,在很多地方就顯的綁手綁腳的,也是很可惜的一點。不過在GUI Programming, multi-thread Programming, Socket Programming都是一些蠻有趣的發展。Boost已經有portable thread library,也是值得期待的XD。

anyway,現在的我可能是處於一個觀望期吧,但是多多少少什麼都看,也是一件不錯的事XD。

---
流水帳XD

星期五, 12月 14, 2007

大三下課表

1
2軟體工程平行演算法軟體工程
3資料結構演算法平行演算法軟體工程Unix程式設計
4資料結構演算法平行演算法Unix程式設計Unix程式設計
5智慧財產權嵌入式系統概論嵌入式系統概論
6智慧財產權嵌入式系統概論軟硬體協同設計
7計算機網路實驗體育網路服務應用系統軟硬體協同設計
8計算機網路實驗體育網路服務應用系統網路服務應用系統軟硬體協同設計
9計算機網路實驗資料結構演算法

隨性排了一下,大概是這個樣子,不過是24學分,紅色代表是大四碩士班選修,老實說,目前覺得課表很滿,修了可能會爆,也可能不會,不過這樣子一排,大概就決定大四上才能準備考研究所吧,所以目前還在想要怎麼排

---
好歡樂的課表XD

星期四, 12月 13, 2007

三天

三天之內寫了大約500行Java,但是也沒什麼了不起的,因為寫出來的大都是一些很普通的程式,只要能夠了解語法概念就可以,而且還是在Console Mode下的開發,GUI Mode還是沒寫(真不曉得為什麼我對GUI那麼執著幹麻XD)。

重要的是,和一群不錯的人合作愉快,雖然尚未開始,但是我的感覺是如此。

---
就是這樣

星期二, 12月 11, 2007

jbuilder2007

搞了老半天,終於搞懂如何使用內建的視覺化編輯器來撰寫GUI了,在老師的推薦下去查了一下Jbuilder 2007,原來不經世事真的是一個蠻有趣的後果,jbuilder 2007全面採用Eclipse做為修改,有分為turbo版,個人版,商業版,其中的turbo版為免費免註冊下載(謝天謝地,終於不用註冊了XD),抓下來的感覺,考,這就是Eclipse嘛XD,不過對其檔案可開啟為程式碼編輯器或視覺化編輯器(也就是GUI editor),算是蠻方便的一種方案,不過我初步安裝CDT於其上,似乎不行...有點可惜,有空再來試試。

---
這樣子我同學應該可以很快速的開發GUI了

星期一, 12月 10, 2007

畫圖


花了一整晚,參考了老師所給予的程式碼,畫了一個簡單的類別圖,第一次使用UML覺得不錯,第一次覺得Microsoft Visio,覺得有微軟的味道(我還記得這軟體以前很好用XD)。

---
算蠻順利的XD

星期日, 12月 09, 2007

project

剛剛稍微計數了一下,有期末project如下

  • 程式語言:用lex, yacc 寫一個很簡單的東西?!
  • 計算機網路:用UDP實作出簡單的RDT,還有一個簡單的Application,我們使用踩地雷
  • 物件導向軟體設計:畫所給予的程式的類別圖和物件圖
  • 網路應用程式設計:做出一個firefox外掛,主 是url聊天室
  • 知識管理:利用CMS,架出一個知識入口網站


看起來很多,事實上從現在開始做,時間排好,應該可以順利完成。

---
應該吧XD

星期五, 12月 07, 2007

恭賀

我很少在blog上提及家人的事,不過這次要特別提一下XD

恭賀姊姊高中台科大高分子研究所

想想,她念書比我還認真,卻比我還辛苦(陽明國中 -> 中台醫技 -> 崑山高分子 -> 台科大高分子),頗有峰迴路轉,柳暗花明又一村的感覺XD

---
結果我還是在打混中,anyway 恭喜

星期三, 12月 05, 2007

dirty work

這兩天幫好友灌筆電,由於所附光碟是Vista光碟,我上官網尋找XP驅動程式,一個一個的尋找整理是不難,只是有點落入dirty work的感覺。

---
還好做完了XD

星期日, 12月 02, 2007

Maze with Simple Implementation C++

今天整理程式碼時發現前陣子efang問的迷宮程式碼,我說明了,只是一個簡單的stack,沒有花很多心思寫,不過就這樣子釋出吧。

code

---
有點充版面的感覺

星期五, 11月 30, 2007

type traits

在經過一年之後!?!? 今日再翻 "STL源碼剖析" (應該七八次了),終於對type traits有所感覺,於是寫了測試碼如下。

template<class T> class Node;
template<class T> class LinkList;
template<class T> class iterator_traits;

template<class T>
class Node{
friend class LinkList<T>;
typedef T value_type;
};

template<class T>
class LinkList{
typedef typename Node<T>::value_type value_type;
};

template<class I>
class iterator_traits{
typedef typename I::value_type value_type;
};
簡而言之,type traits 就是一種type 截取機XD,一個type 可能經過class template的層層包裝,導致我們原本所想要處理的type得知變成隱性,這時候就需要type traits來追蹤出原本的type,相當有趣,當然,在STL中,並不是所有的iterator都是class type,而原生指標(ex: int*) ,可以用template partial specialization 來解決

(ref: STL源碼剖析 chapter 3.4 p.85~p.92)

---
一年前覺得不怎麼有趣XD

Android

前陣子看到一則新聞是有關Google Android千萬美金比賽雖然,這麼高額的獎金,我大概贏不了,但是開發平台是Java + Eclipse 再加上Google自己開發的套件,這就變的非常吸引人了,或許會試著開發看看 ?

---
我承認我是被錢吸引才去看的XD

最近

期中考終於結束了(笑)

對我而言,期中考結束代表的意義是,可以寫自己的程式,潛心於學習(本來想要說研究,後來發現稱不上,哈),當然我還是對機率與統計老師充滿了抱歉,因為我並沒有認真念。事實上,只要一到考試時,我就有資源被抽空的狀況,大部分的精神得拿來準備考試,而想要寫程式卻又動彈不得,這對我而言是一個很糟的狀況。

無妨,現在寫程式也來的及。

昨日與竹竹相談甚歡,得知她在最近獲得了一個充實的學習生活,甚為恭喜,而我自己只是不上不下,哈哈, 聊一聊之後,對班上的狀況有些釋懷了。人並不總是如此,但是仍有其美好的一面。總而言之,還是很謝謝她,還有推薦柴琦幸的歌,我會盡快整理好的。

---
撥雲見日,再下一城

星期一, 11月 26, 2007

上課

上課在即,因為Josh的blog,我跑去看了看隨機客今年的上課網頁,看到了覺得很想流淚,原來,我真的找到自己想要的是什麼了。

我會認真的,讓我們來應付學校該死的考試之後,專心做好自己的事吧。

---
感動之餘才會流淚才不是嗎(笑)

親愛的

親愛的(張懸, 親愛的...我還不知道, 2007) 現場版

深深的話要淺淺地說
長長的路要揮霍地走

大大的世界要率真地感受
會痛的傷口要,輕輕地揉

被抱緊的時候去
勇敢地祝福─

不被了解的時候,
相信自己值得
永遠心疼做過的夢

在乎的人要傻傻地愛
經歷的事,就慢慢地來

想法很多的時候,要細膩地用
擁有一切之後,就讓它走

在某個角落放一首歌
別忘了,要快樂
別忘了,要溫柔

---
一週年嘍,呵

星期六, 11月 24, 2007

今日成果


目前整理歌曲的進度如上XD

---
今日暫告一段落XD

星期五, 11月 23, 2007

James Blunt

這是好友mandy推薦我聽的一個人,在2007年的專輯 "All The Lost Souls" 整張專輯聽起來,可以讓人靜靜的喝咖啡欣賞,就我個人而言,是一張可以聽數十次到數百次都沒有問題的專輯,其中以 I Really Want you 以快步調進行到中段再慢步調的高音貫穿全歌,高低交錯,非常美麗

---
一次兩篇XD

mihimaru GT

這是一個日本團體,就我手上有的兩張專輯來看(mihimagic, The best of mihimaru GT),這個兩人組合毫無疑問的是流行音樂的團體,不過就我個人而言我還蠻喜歡聽的,在2006年時,因 心情high翻天成名,也有人說是因為 回家歌 而出名,no matter,就我聽The Best of mihimaru GT 這張專輯時,每一首的曲風不同,值得推薦

為什麼不寫裡面唱的怎麼樣,聽了就知道了,不過不喜歡high的人就別聽了,雖然大部分歌的曲調都不長且重覆,不過值得一聽了。

---
有空再寫長一點

星期三, 11月 21, 2007

Google Ads

有人跟我提過,有人跟我問過,為什麼不在blog上放Google Adsense,我想很主要的原因是,我想放了也很少人按(我也不是那麼缺錢),而且我覺得放在blog上蠻破壞版面的,所以應該暫時不會放?

---
或許我欠錢時就會放了XD

超英趕美

這幾天被期中考纏身,所幸考到現在沒有太大的爆炸,雖然有些事出乎預料之外就是了,在此還是特別感謝eating和mandy,平常有積陰德,不然Operating System Mid-exam應該是炸定了,所幸沒炸:)

今天Computer Netwrok提到的期末project,要在一個月之內用UDP實作出TCP的相關功能,而且還要有Application Software ,給我的感覺很像是,剛學完一元一次方程式,然後告訴你一月後考微分一樣,重點是,中間完全沒有任何提示,感覺很像要學生超英趕美。

抱怨也沒有用,這個禮拜的返家取消改至下禮拜,一方面是期中考使然,一方面想要先找找資料。

---
要為生活而努力:)

星期五, 11月 16, 2007

補充

我真是個瘋子,兩天看完25集的GTO漫畫...Orz

---
聽了下面那一首歌之後睡不著..Orz

墜落

每當我想墜落時,我就會聽這首曲子,Linkin Park - Announcement Service Public(Underground v6)

這首歌嚴格算起來還是有人聲,不過人聲是背景聲,也就是說,這首歌,事實上是沒有歌詞的? 或許這樣子的認知是錯的,不過在聽歌上我並不想做太嚴謹的定義。

聽完這首曲子,告訴自己更努力,以期待下次的墜落,再重新見到光明時,我要回到自己。

---
謹紀念三個禮拜的生活。

星期三, 11月 14, 2007

聊天

我從不否認,我很愛與人聊天,應該是個性使然XD。

聊天可以獲得很多訊息,昨天,就覺得對學弟非常的抱歉,雖然聊的很開心,但是他們今天還有課XD 還是不知不覺聊的很晚,也很對不起小祥,一直吵,讓他沒有辦法睡覺,但是,還是獲得了不少訊息。

人際關係永遠是一個很複雜的事,就看過的書及體會到的,懂的規則和其原理,好像,一切都變的很簡單一樣,但是,no matter what,都應該堅持專心做好自己的事,那怕是玩遊戲,我玩遊戲從不堅持,誰叫我都一直死的XDXD

外面對我的負面傳聞,大概還是多到爆炸吧,人不可能不在意,多多少少還是會有點在意的,我不是聖人,不過,我還是只能對自己說,專心做好自己的事,現在的我沒有辦法顧慮太多,呵呵。只是對efang就有點抱歉了,我會再繼續努力的。

聊了很久才發現,原來,現在的我已經比起一年前,或者是兩年前,好了非常多。但是還不夠好,還是得繼續衝下去。

---
大家辛苦了。

星期二, 11月 13, 2007

decay生日

呵,小花是我見過很心服的女生。

祝小花變成大帥哥兼大美女啦,好好加油,強者就是你的~

不要忘了有我們這群不要命的組員啊,哈哈哈

---
幫她慶祝生日的地方(快,按這裡)

星期一, 11月 12, 2007

高興

雖然不是多難的程式,看著efang寫的很高興,我也高興了起來

---
但是不要因此自滿,要努力前進喔~:)

想法

最近花了一些時間與efang念資料結構,有些感觸

最近重念fundamental of data structure in c++,感覺到贅句不少,應該是說,我喜歡Introduction to Algorithm 2/e的明快風格(雖然有時候嚴謹了些,但並不是一件壞事),我跟efang討論時,總是跟他說,有些事並不是那麼重要,data structure,有些部分是該懂細節,但是有些部分,真的不宜細讀。

有些想法是不宜細想的,不論是寫作或做其他事時,我們必需懂的因地制宜。所以當我聽到efang的朋友們把這本書抱著細讀時,覺得並不是那麼妥當,或許,該花時間在思考,如何彈性變動想法以適合真正的實作環境?

理論很重要,但是實作也很重要,目前的我是這樣子想的。但是可以分開發展,再結合,應該也是一個不錯的想法

---
所以更應該好好的研習資料結構演算法

星期六, 11月 10, 2007

最近

秋冬之際,我的寫作量(廢話量? XD)會隨之熱漲冷縮XD

沉潛之餘,省視自己過去所寫,雖有進步,但不大,這也不讓人憂心,因為有進步就好,有很多事急也急不來,不能要求太多的。還以為最近能寫一些技術文件的,想不到還是寫不出來,看來念的書都太無聊嗎 XD?

最近因為上課的機會,讀了一些有關網路的規格書,事實上建立在application layer之上的傳輸協定不會太難,最主要是在制定data format,所以不會很難,倒也沒有扯到太多底層的技術實作細節。所以我換個腦子想想,為什麼要寫這些規格書? 有人創造規則,而大家就遵守創造之,事實上這就跟language一樣,大家都說同一種話時才能溝通,說不同種話時大可以不理,這對創造人員是一種限制,也是一種仁慈,這樣子使得寫程式的人不需思考太多種輸入資料的可能性。舉個例子來說,光要判斷使用者輸入是不是一個在range內的數字,就很煩了(雖然程式不長,但是看見一串程式碼只是為了處理user的問題,著實會煩),回到技術層面,由於網路傳輸協定不是end user,所以我們可以定的死一點,這對使用的人才是一種寬容(所以我們知道html對於browser實在是不怎麼寬容XD)。

人是具有無限可能性的。

最近也兼伴讀寫程式,盡量以不幫人的幫人為目標,希望有所幫助,因為,真的很深刻的覺得,有時候,程式寫不好,問題不一定發生在自身,有人幫助是一件好事,我以前也曾經被人這樣子幫過的

想到什麼再寫吧。

---
發些生活文也不錯XD ?

星期二, 11月 06, 2007

Web Server

昨晚利用Java Socket Programming 實作了一個簡單的Web Server,但是參考的文件還不少,晚點把整份說明寫完放上來

---
但也因此欠了很多科作業XD


2007/11/06 11:54
課本的說明文件,自己寫解答釋出
如果嫌這份文件太長,可參考 陳鍾誠先生 所寫的教學文件 如何設計簡單的 WebServer?

星期一, 11月 05, 2007

如何清除grub

最近一堆朋友開始試著灌ubuntu desktop,但是要移除分割區的時候,似乎不約而同遇到了一些問題,我以前是Windows XP 的修復主控台使用

fdisk /mbr
即可順利把grub清除掉

但是最近這招似乎失效了,稍微查了一下資料,似乎是從Windows XP修復主控台下使用
fixboot
fixmbr
就可以順利了,此方法在ubuntu desktop 7.04/7.10有效

---
做個小筆記

星期日, 11月 04, 2007

記性

話說,繼鑰匙之後,我又把錢包忘了...Orz

---
還好撿回來了XD

星期三, 10月 31, 2007

備份

外接盒確定購買,可以好好準備備份工作了,接下來的問題是,何時主機板送修回來方能進行桌上型的備份。

btw,這個月已經五次把鑰匙插在機車上忘了拿了...Orz

---
這年頭,笨事永遠很多XD

星期一, 10月 29, 2007

book list

今天不想念書,於是稍微整理一下

  1. C++ Primer 4/e
  2. C++ Primer 3/e 中文版
  3. Thinking in Java 4/e
  4. Thinking in Java 2/e 中文版
  5. C++ Template 全覽
  6. Concrete Mathematics 2/e
  7. The C++ Programming Language 3/e
  8. The C Programming Language 2/e
  9. Effective Java 中文版
  10. Design Patterns
  11. 物件導向設計模式 Design Patterns
  12. Computer Systems: A Programmer's Perspective
  13. C++ 標準程式庫(The C++ Standard Library)
  14. Effective STL
  15. Effective C++ 3/e
  16. C++ Coding Standard
  17. Effective C++ 3/e 中文版
  18. Effective C++ 2/e 中文版
  19. More Effective C++ 中文版
  20. Exceptional C++ 中文版
  21. Modern C++ Design 中文版
  22. STL 源碼剖析
  23. 泛型程式設計與STL
  24. 深度探索C++物件模型(Inside The C++ Object Model)
  25. The Design and Evolution of C++
  26. cwTeX排版系統
  27. The TeXBook
  28. Introduction to Algorithm 2/e
  29. 演算法導論2/e
  30. Fundamenttal of Data Structure in C++ 2/e
  31. 實戰C++: 8個別具特色的實作經驗(The Art of C++)
  32. Object-Oriented Analysis and Design 2/e
  33. 世紀末軟體革命 復刻版
  34. Assembly Language for Intel-based Computers
  35. Computer Organization and Design: The hardware and software interface 3/e
  36. Operating Systems Principles 7/e
  37. 重構 - 改善即有的程式設計
  38. 精通vi 6/e
  39. 名題精選百則: 使用C語言
  40. 鳥哥的linux私房菜: 基礎篇
  41. 鳥哥的linux私房菜: 進階篇
  42. FreeBSD 6 架設管理與應用
  43. 駭客與畫家
  44. 人月神話
  45. Digital Design 2/e
  46. System Software:An Introduction to System Programming 3/e
  47. Java學習筆記
  48. The C# Programming Langauge 2/e
  49. Computer Science an overview 8/e
  50. Word排版藝術
  51. 深入淺出MFC 2/e (Dissecting MFC)
  52. Java 網路程式設計(Java Network Programming)


---
理論上應該還有遺忘的XD

最近

返家回來過後,買了一顆硬碟,應該會跟進Josh ? 這是一件非常有可能的事(笑)

最近和好友小聊了一下,才發現很多事不如自己原來所想像的美好,不過亦無妨,隱居是一個不錯的選擇,至少這學期到現在,我還過的不錯。有時候,事情仍舊靜靜的沒有改變(笑)

最近可以說看了很多東西,但是也可以說,根本就沒有看什麼東西,不然我怎麼會半篇技術性的討論都寫不出來(學伴也要求寫少一點XD ?) 雖然看到efang的程式碼有感,可以利用class 來做到proxy class的技巧,不過我覺得這更偏向STL functor 的做法,說穿了不值一兩銀,所以不提也罷。Java是我第二次接觸,老實說,沒什麼很特別的感覺,唯一的感覺就是,他變簡單了,不過也很正常,經過比賽之後,學習任何東西比較沒有那麼害怕,更不會為自己預設立場,所以學習的算蠻愉快的。

課業勝任愉快,雖然會有些課上的很糟,有些課跟不上的情形,每次花個小時間總能輕鬆追上,我因此滿足,因為我還是想好好的看自己想看的書,或許這樣子下去,我還真的不容易升學,不過無妨,人生過的快樂就好,至少我知道我沒有在偷懶的前進就是了。不過我還是很懶的把主機板送修就是了XDXD

最近接觸的人女生居多,還好大部分都脫團了,相處愉快,總而言之,最近也沒啥大事發生。

---
又是生活文一篇XD

星期三, 10月 24, 2007

variable

這個的標準意義是多變化的,不過在編程中,一般被稱為變數,事實上大家都知道,有良好的變數命名是一件非常重要的事,如果命名不好,大概就跟你在書上貼標籤,卻寫了無意義的代碼,那麼勢必要跳到該處看懂,那麼這個標籤似乎沒什麼用,當然,善用scope rule等等,都可以讓程式的可讀性大大的提高,不過,在暑假的時候,我看到這樣子的程式碼


#define km 3
#define mm 160
#define nn 120
double f1[mm][nn][km], f2[mm][nn][km], hxu[mm][nn],
hxv[mm][nn], hmmx[mm][nn], hmmy[mm][nn];
double vecinv[kk][kk], am7[kk];

main(){
double u1[mm][nn][kk], v1[mm][nn][kk],
ps1[mm][nn];
double d7[mm][nn], d8[mm][nn],
d00[mm][nn][kk];
double clock, sumf1, sumf2,
gsumf1, gsumf2;


int i, j, k, ka, nnkk;
int nproc, myid, istart, iend, icount,
r_nbr, l_nbr, lastp, iroot;
int itag, isrc, idest, istart1, icount1,
istart2, iend1, istartm1, iendp1;
int gstart[16], gend[16], gcount[16];
}


老實說,我一開始看到差點暈倒XD 老師上課提到,有可能非科班出身的會寫出奇怪的變數命名,誰說的,科班出身的照樣寫出讓人暈倒的程式碼。

---
這程式碼真噁心...Orz

星期二, 10月 23, 2007

聰明與智慧

我蠻常聽到某人好聰明,有人好厲害,卻不常聽到某人有智慧。日前家人提起"能者多勞"的這種問題,持著反面態度,我笑了。

世界上沒有所謂的能與不能的問題,也沒有聰明與否的問題,我碰到的人或許有聰明一點的,Josh ko和我,絕對不是聰明人。為什麼? 當你做的到每天七個小時以上專心做同一件事,而這件事做不好的機率,太低了,最近我可以花三四個小時做一份作業,事實上不用那麼堅持的,只是想做好一件事。

這社會,聰明人很多,而聰明只是泛指可以很快速的解決問題,提出想法,但是,就僅止於此,而能夠從聰明中,提出開創性的見解進而改變這個社會,可謂被稱之智慧。什麼是天才?我不知道,我知道這個社會有天才,但是我沒有遇到過,我遇到一般人所稱為的強者通常都是花很長很長的時間專注在某一件事情上的結果。

或許我們可以慢慢的知道,一般人所謂的大師是如何產生的,因為他們跳越了聰明的藩籬,而跨越到了智慧開創性的領域,我或許不太能成為大師,但是,我永遠可以向大師學習(笑)。

走出來,才看的更遠,學的越多永遠只會覺得自己會的越少。

---
雖嚴重警告自己不要再寫,但是似乎沒什麼用(笑)

maibells0 生日

事實上,這就是別人不愛看我很愛寫的一種文章之一。

maibell0現在就讀台大外文系,是我高中同學,對我而言也是一個特別重要的人,當然,也可能是我朋友中少數一類組XD 雖然我很難理解為什麼他的英文會那麼好(相較於我的破英文而言XD),我也很難理解為什麼他總是說自己不好XD 可能高手都這樣?

不過在我的認知中,他曾經在我最困難的一段時間陪我渡過難關,這是誰也無法取代,但是現在總是覺得很抱歉。他的生日,我也只能慢慢的待在電腦前鍵入文字,紀念他的21歲生日。

我還是寫一段難以理解的話吧。

當生命成長趨近於毀滅,即是新生
新生,不再一代名詞
唯實際行動,重構生命


---
refectoring

星期一, 10月 22, 2007

朋友到訪

今日(昨日)哈密瓜到訪,甚為高興,稍微調整一下MacBook,使其使用更為方便,之後帶其認識環境,吃個長庚最常見的餐點,相談甚歡。

---
感謝哈密瓜幫我帶書來,我少跑了一趟台北

星期五, 10月 19, 2007

Friday

我想這不是指一家很有名的餐廳,當然也不是指牛郎,更不是魯賓遜漂流記XD

這個學期開始期待禮拜五了,呵呵,倒也不是想偷懶,雖然我從不否認偷懶在我的生活因子中,我想,禮拜五之後可以較無顧慮的做自己想做的事是一件讓人高興的事吧,雖然有時候會有拜訪朋友,或朋友來訪打斷,但無妨。

最近想買幾本書,都不便宜

  • The TeX Book
  • Compiler
  • Java Networking Programming 3/e
  • The Art of Computer Programming: Volume 1
可能等有錢的時候再去買? 最近一直都很沒錢,不如說成把錢全部花在吃的上面,說到這個,昨天又吃十元燒烤好多串XD。

這個假日沒啥大事,應該可以把預計的作業系統筆記完成,雖然做的不好,但是可以好好的練習一下。當然,有朋友來訪也是一件讓人欣喜的事,在偏遠的地方,說真的,也沒有什麼人肯來。

---
糟,懶的把桌上型電腦的主機板送修了XD

有關debug的兩三事

身為一個愛寫程式的小孩,常常debug是常有的事,為了不讓有人罵我專門寫火星文,我稍微說明一下好了,非專業解釋就是

debug 就是驗證你寫出來的程式對不對,跟算出來的數學式子驗算是同一個意思

不過很不幸的是,我從小就是一個連加減乘除都很容易算錯的小孩,這個問題一直到寫程式的時候才改善,因為算錯了,可以說式子是對的,算錯沒關係,程式錯了,總不能說我的想法是對的,但是自己寫的程式總是錯的XD 所以我的逼的自己得好好的看著自己寫的東西好好的varify一下(寫到這裡,Josh 會跟你說literate programming, functional programming language都是不錯的選擇XD),久而久之,當然有自己的一套看自己錯誤的方法,寫程式的時候,我還蠻笨的,犯的錯誤總是那幾項,總是不能記取前人(這前人還是自己)的教訓。

當然,一般人會的deubber工具,我都不會,我永遠只會一招,印出一些資訊來看看,然後自行看看是不是對的,事實上很多開發工具都有提供debugger工具,Visual Studio.Net啦,Borlad C++ Builder啦,甚至我現在愛用的Eclipse都有,但是我都不會用... 老實說,這沒什麼好炫耀的,那麼我的問題出在那? 呃,可能我太常換環境了,在這之前雖然沒啥能力但是總不想被微軟綁住,於是我就很安份的用了Dev C++好多好多年,直至我知道MinGW XD 當然,還有一個很大的原因,有時候迫不得己,程式得用vi寫,很多個檔的時候,makefile也得自己來(我還是不會寫,有沒有人要教我的XD)。

說到印出來的訊息就千奇百怪了,不過大部分我都很安份的守已的印出我想要看的,有沒有專門搞的,我室友fire7617 就蠻喜歡印 "yen3 is handsome." 或 "handsome yen3" 這種東西,呃,這種話代表非常的虛假,不過在寫苦悶的程式能搞笑的也是好事,但是我曾在笨版看過一個故事,有人印過這種訊息。

某一程式員寫程式寫到後面壓力大,又跟上司(老頭)很好,所以常在程式的除錯訊息開玩笑,有一天程式好了之後,上司拿去跟客戶demo,結果發生錯誤,跳出了如下訊息

我想台下應該是一片囧臉吧XD 不過有時候也可以知道,不一定把寫程式的人看的很神奇一樣,大家都有搞笑的一面XD


---
我下次來寫 "cllee 早生貴子" 然後給他demo ? XDXD

星期三, 10月 17, 2007

輸了,不帶遺憾的

呵呵,我想,不論是輸贏,這篇總是難以下筆的。

雖然滿懷著期望,但是總是讓大家失望,總是要說一聲抱歉的。只能說自己實力真的不足,或許當下那一刻我以為我們的演算法實作是輸人的,但是李春良老師告訴我,還有SIMD這個重要的東西被我們忽略了,一個會導致三倍的差異的指令集。

是我自己的問題,學了那麼多硬體,似乎也沒有派上用場,或許,可以藉此說服別人,我沒有什麼,我自己也知道,我也真的沒有什麼,只有一身的不要命,但是有時候得承認,我聰明才智不如人,會再努力的

下個比賽,中華電信比賽,拿第一名吧!!

---
呵,總是要有企圖心的前進

Eclipse with C/C++, Java

如何在 Windows 底下使用Eclipse 進行 C/C++,Java 進行開發
Eclipse 本身是針對 Java 的一個開發工具,但是經由 CDT(Eclipse C/C++ Development Tooling) 的載入,亦可開發 C/C++ 專案。

要安裝的有



安裝提醒
  • Java Runtime Enviorment: 直接線上安裝即可
  • Java Standard Edition: Accept後,下載安裝即可
  • MinGW: 選擇Automated MinGW Installer下載,安裝時請選擇candinate,加選g++ compiler, mingw make
  • Eclipse + CDT: 下載Eclipse Classic,和其 CDT,兩個解壓縮至同一資料夾即可,Eclipse是綠色軟體,解壓後執行Eclipse.exe即可執行


那麼接下來就是設定環境變數了
在 我的電腦(右鍵) >> 內容 >> 進階 >> 環境變數 >> 系統變數 中設定,path和classpath(如果沒有自行新增),將下列路徑新增至該值的尾端(以Java SE 1.6 Update3, JRE 1.6.03為例),以;區隔
pathclasspath
Java Runtime EnviormentC:\Program Files\Java\jre1.6.0_03\binC:\Program Files\Java\jre1.6.0_03\lib
Java Standard EditionC:\Program Files\Java\jdk1.6.0_03\binC:\Program Files\Java\jdk1.6.0_03\lib
MinGWC:\MinGW\binC:\MinGW\lib


在這邊簡單解釋一下
  • path: 為comand line底下尋找執行程式的路徑,一般而言,從所在的資料夾尋找,若找不到則開始尋找path所列出的路徑
  • classpath: 為連結程式庫時所需的路徑,一般而言,從所在的資料夾尋找,若找不到則尋找classpath所列出的路徑


上述都做好,可以享受一下Eclipse嘍

---
雖然不難,但是常跟別人說明,寫一下也好

星期日, 10月 14, 2007

念書

第一次覺得念書是一件很輕鬆的事,雖然今天沒有念到什麼,不過還是有疲倦感,事實上這個假日還是拿來念書了(笑)

學校的作業系統上的七零八落,或許還不足以形容,那麼做人只好自救了,沒有好老師也要有好用心,花了一整天念書兼整理重點,在冼鏡光先生所寫的簡報的幫忙下,我也才念了三小節,或許沒有抓到要訣,但是筆記用XeLaTeX,真的需要一點時間來適應就是了,也第一次覺得,書自己一個念念不完的感覺,或許會尋求合作之道。當然,會非常希望重點有做完的一天,這樣子又有一項資料可以開放啦,呵呵,就盡量努力嘍

呵呵,這個blog一般時候會偏向閒聊,當然還是希望偶爾可以po出一些有趣的東西

---
寫作有助於解壓XD

星期五, 10月 12, 2007

最近

又到了禮拜五,雖然還沒上課,總有喘口氣的感覺。efang回家,沒有朋友來訪,這個週末可以一人較為隨性。

最近總有追著時間跑的感覺,雖然不再像從前天天作息不正常了,但是總有一股無法帶走的疲倦感,或許,從高中以來,沒有花那麼多時間在念課內書? XD

有時候會想問自己,到底可以把心思分給多少人呢? 分給太多就忽略我覺得很重要的人,不分的話,總覺得自己過於自私,什麼時候要分給自己呢? 或許,這答案顯然不那麼重要,呵。

有一個寧靜的早晨不錯,至少還可以胡思亂想XD

---
又是廢話一篇XD

星期四, 10月 11, 2007

小考


傳說中,這是以小考聞名的學校XD

---
我該說什麼XD

星期三, 10月 10, 2007

Desktop

桌上型電腦竟然掛了,經研判是掛在主機板,是我太久沒有用了嗎...Orz

---
只剩MacBook ??

星期二, 10月 09, 2007

The Matrix Game: 16 Matrix Multiplication

最後的程式碼釋出,比賽的文件分享也告一段落啦!!

打包嘍

稍微說明一下

  • document.pdf: 此次比賽最後繳交的文件,李春良老師指導(不然我們應該寫的很難看...Orz)。
  • MatrixMult.c: 主程式,最主要用來執行16個矩陣相乘
  • Matrix.h, Matrix.c: 矩陣的相關基本工具。
  • MCPT.h, MCPT.c: Matrix Chain Product Tree,但是在此比賽中是簡化版,已建比賽資料,彈性非常低。
  • utility.h, utility.c: 一些通用工具,包括產生讀檔檔名。


事實上此次程式不甚完備,不過時間有限,但是我自己目前尚無時間修改,所以就容許我這樣子偷懶釋出吧XD

---
歡迎自由取用,轉載不需告知

Matrix Chain Product Tree with Parallel Modify

事實上整個程式和簡報參照

Heejo Lee, Jong Kim, Sungje Hong, Sunggu Lee, "Processor Allocation and Task Scheduling of Matrix Chain Products on Parallel Systems, " IEEE Transactions on Parallel and Distributed Systems vol.14 no.4, pp. 394-407, April 2003.

相關資料如下


---
歡迎自由取用,轉載不需告知

MPI Programming & MPI_Group

MPI 本身是message passing interface,是一個專門為平行運算所規範的Library interface,目前較有名的實作體有Open Source的MPICH,而幾個cluster的大廠IBM, hp 也有各自的implemenatation,不過稍微查一下,在天瓏並沒有中文書籍說明相關MPI,而英文書籍也不多,在這個比賽中,我並沒有使用任一英文教科書,我使用的書如下

  • MPI 1.1: 這份文件是Standard,所幸並不難讀,我的MPI_Group就是利用Standard和老師的協助完成學習的。MPI 1.1支援C和Fotran
  • C語言平行計算程式設計: 此份文件極具參考價值,一開始看這份會有很大的幫助,雖然在後面二維陣列的平行計算切割時,變數定義不明,但仍暇不掩瑜,此份文章由國網人士所撰寫,極具參考價值,當然,此份文件也有Fotran
沒有列出MPI 2.0是一件極遺憾的事,MPI 2支援C, C++, Fortran,支援超過500個function,也支援一些更好的平行運算特性,不過在此次的比賽中國網主機是不支援的,所以並沒有特別去研究,不過大概看了一下,有很多向下相容的function,在C++中只是多了一層包裝去呼叫C所實作的function。

MPI_Group是一個極為有趣的function series ,雖然MPI支援針對所有的CPU進行集體通訊的動作,但是若將母群體的CPU分割成數個子群體進行類集體通訊的動作,卻得依靠MPI_Group_xxx 等的function來進行子群體的定義。

一些相關function如下
MPI_Group_size()取得目前這個Group共分得幾顆CPU
MPI_Group_rank()取得目前這顆CPU在此Group的編號
MPI_Comm_Group()建立一個Group
MPI_Group_incl()從一個Group中選取一些CPU建立一個sub-group,而被選取的CPU 仍在原來的Group
MPI_Group_excl()從一個Group中選取一些CPU建立一個sub-group,而被選取的CPU不在原來的Group
MPI_Group_free()針對此Group的CPU做釋放動作,但是同時此CPU也不再屬於任何一個Group,只屬於MPI_COMM_WORLD
MPI_Comm_create()針對某一個Group(MPI_Group),建立一個Communcator(MPI_Comm)
當然,這邊只是提起一些function,還有一些很有趣的Group相關動作,例如說可以針對兩個Group做AND, OR, XOR,還有比較,再提起兩個常數
  • MPI_COMM_NULL: 用於Commucator為NULL的狀況
  • MPI_GROUP_NULL: 此CPU不屬於此Group,即會傳回NULL


範例使用方法

MPI_Group universalSet, subset; /* 宣告母群體和子群體Group */
MPI_Comm universalComm, subComm; /* 宣告母群體和子群體Communcator */

/* 設置母群體 */
MPI_Comm_group(MPI_COMM_WORLD, &universalSet);
MPI_Comm_create(MPI_COMM_WORLD, universalSet, &universalComm);

/* 設置子群體 */
int ranks[] = {0, 1, ,2, 3};
MPI_Group_incl(universalSet, 4, ranks, &subset); /* 設置完後,此4顆cpu仍在原來母群體中 */
MPI_Comm_create(universalComm, subset, &subComm);

/* 針對子群體的集體通訊動作範例 */
int a, subID;
MPI_Group_rank(subset, &subID);
if(subID==0) a = 5;
if(subComm!=MPI_COMM_NULL) MPI_Bcast((void*)&a, 1, MPI_INT, subComm); /* boardcast a 資料給subset這個子群體 */

當然,還有很多很有趣的使用方法,不過我比賽中所使用的技巧僅此而已,呵呵,有錯誤歡迎指教嘍。

---
歡迎自由取用,轉載不需告知

星期一, 10月 08, 2007

how to save a life

經過兩天的休養(睡著的時間比醒著的時間多),一餐吃下兩餐的份量(我有偉大的老媽),比賽後的身體調養算是告一段落了XD

下一步,如果聽了Josh Ko的建議,這將會是無敵大的計畫XD