專題結束
等有照片的時候再寫吧~
---
謝謝大家!!!
Let's see how far we can go.
好友發生了一件好事,非常恭喜,在此公開徵求,有沒有人知道不錯的賣巧克力的? 我在Google打巧克力專賣店,結果發現 "割豬肉"(你要嗎,yen3吃不起...Orz)
學會了忍耐是一件很重要的事,總覺得現在的自己還是過於任性,自我要求還是不足。除此之外,能力上的不足,或許我應該朝向多面向發展,說自己對於某件事沒有天份就拒絕學習是不對的事,應該還是得要學習至一個水平的。
昨天與人聊天,他的blog有不少人訂閱,所以寫起來有點擔心,我昨天看了一下自己的Google Reader,人數只有兩個耶XD 代表我可以繼續在這個小天地胡言亂語,而不用被人發現。
不管怎麼樣,隨手書寫生活。
寫作blog的人得負擔一定的社會責任,但是寫出讓自己開心的東西非常重要,有人回應當然會高興啊,沒有人回應就繼續寫吧XD。
---
亂寫 XD
written by
yen3
in
8:57 上午
10
comments
tag: life
小女孩哭泣著。面對所有的未知,她感到害怕了。
從認識爸爸媽媽開始,她必需獨立一人面對未知的世界,不對,她還有一個尚未出生的弟弟,但,這世界已經扭曲不堪。
尤想起第一天上幼稚園時,在媽媽的懷中大哭訴著,在她的面前卻是一棟彩色的可愛城堡,她感到恐懼了,對她而言,可愛城堡就有如糖果屋一般的存在,而院長就是那可怕的巫婆。在陌生的孩子群裡,小女孩放不開,面對其他男孩的捉弄,她只能無助的後退,安靜著。
然而,誰都沒有想到,十年後的小女孩會怎麼樣...
---
即興創作,寫作果然很難,花了二十分鐘只能寫出這段文字。
written by
yen3
in
8:55 上午
4
comments
近日雜事如下
written by
yen3
in
8:55 上午
0
comments
tag: life
高中時,小說創作完稿告一個段落,在和國文老師聊天。
老師: 大家都說文如其人,可是我看你的文章和你的人不像啊。
yen3: 囧rz
---
還真的蠻不像的XD
written by
yen3
in
12:06 上午
7
comments
tag: life
自己成績不是很好,但是最近剛好有機會看到三個人的自傳,前面兩個都沒有太大問題,看到第三個的時候,我的小宇宙就爆發了...文章裡面不要有大量重覆的詞,記得排個版,都是小事,但是
請寫出自己會相信的內容。
寫出有點浮誇的內容是在所難免,不然以我天天晚上都在聊天沒有寫程式的人,我還真不知道要寫什麼,但是如果寫我很認真,認真到自己都不相信的境界...呃,我想我也不會相信。
請試著自己校稿,試著念出來,你就知道問題在那了。
---
突然暴走XD
written by
yen3
in
6:41 下午
0
comments
tag: life
最近的生活總覺得自己處於一個失控的狀態,不過似乎也好,如果人生一直在預料內,似乎這個生活就不是這麼有趣了。
去台北大部分的理由不是買東西就是拜訪朋友,不知何時,四處與高中同學聚餐是我去台北一個很重要的選項,昨日前往拜訪朋友,雖然知道一些可惜之事,但是人與人之間的關係若失去平衡時,誰都無法決定下一步為何。
但是也只能自己嘲笑自己,當嘗試把生活變的更為單純,把複雜因子去除時,因為想要去掉複雜,而讓自己陷入一個泥沼中,可見我還是不擅長處理這種事,就這樣子過生活吧。
念書漸漸上了軌道,幾曾何時不想面對這一切,因為我對於這個真實社會懷抱著恐懼,或許我應該多多嘗試,但是必然會面對,唯有面對,才能說服自己完成事。
就這樣子吧
---
盧廣仲 - 好想要揮霍
written by
yen3
in
8:19 上午
0
comments
tag: life
試論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,都是只有一層的呼叫,相當的方便。
---
真糟,寫的真少。
written by
yen3
in
9:33 下午
3
comments
我本來想要參考和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。std::find_if(u.begin(), u.end(), std::bind2nd(std::less<int>(), 0)); //尋找某個區間第一個小於0的數字。
我不能不說,我當初看到這樣子的寫法,我以為找到了救星,funciton可以玩組合技耶,而且這樣子的確解決了call back function的問題。
written by
yen3
in
8:14 下午
0
comments
我不喜歡去猜測人的想法,雖然大部分人的行為都有跡可循,但是僅止於明顯的行為部分。
常常會有說者無心,聽者有意的狀況發生,我最近常常下意識的去猜測其他我所不認識人的想法,感到非常漸愧,這不是我該做的事。或許有90%的事是可預測的,但是我們遇到的事常常是落在10%的範圍,程式可以預測行為,但是人的預測,往往有太多足以造成蝴蝶效應的因素而難以預測,我的做法相當直接,傾向直接詢問,當然,詢問的方法往往也得適當。
最近的自己,或許會縮自內省自己世界的狀況,被親人責斥,其實不管問題的源始為何,如果發生這樣子的問題,只能說,如果自己沒有做錯什麼或表達錯什麼,不會發生這樣子的事,所以最該做的是反省自己。
雖然發生很多事,很多想寫的,仍得靜下心來看待每件事
---
無欲則剛
written by
yen3
in
12:36 上午
0
comments
tag: life
在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
written by
yen3
in
10:35 下午
2
comments
在我下筆的此時,其實只僅僅是複賽交件。
去年的此時此刻,我同時在比賽,在cllee的指導下,我比了去年國網高速運算和今年中華電信電信應用加值大賽。第一次比完,收工的時候其實真的很高興(接近一個月沒睡好),這一次比完只有簡單的鬆了一口氣的感覺。或許再多比幾次就會很習慣了XD。不過對我而言
比賽的結束代表大學生活的告一段落。
我的大學生活極其簡單,念書、研究、思考概括了全部的生活,在前三年的大學生活,我得學會太多太多事,撇開技術不談,對於人生價值的觀察,已經起了根本性的改變。人其實在每一個時段都很難準備好當下該做的事,因為都得同時看著未來,我在大學生活學會的其中一件事。
活在當下看著未來。
如果每個當下都是為了未來努力,那麼現在的當下一定顯得可憐,我的人生很簡單,只是單純的想要把事情做好,做好的同時,常常會帶來異想不到的驚喜。
大學生該學的技能或者是該有的心態,已經有太多文章在討論了,而我選擇的,是一個最簡單的方式。若要說大學和高中有什麼最大的差別,我想,高中的學科其實並不困難,為了因應所謂的大考而必需把熟練度拉到極高,大學的課程並不簡單,雖然老師僅僅考課堂上的東西,考不好或許會調分,但是如果不是對這個學門有所興趣進而下功夫苦讀,或許什麼都學不到,僅僅只是拿到一張文憑,而且這張文憑也不能說明什麼事。我在我的前三年生活中,大部分的科目是用混的混過去的XD 但是有極少數的科目,或許學校沒教,或許學校教很少,但是我肯花時間學習我想要學的東西,其實這就夠了。很多科目其實只要肯花時間,沒有學不會的道理,但是我只能說我念書的時間仍然太少。
當班上同學都立志考取好學校時,我祝福,但是我同時也想跟自己的學弟妹說,好好的想想,大學和研究所文憑對自己而言是什麼? 如果真的虛渡了六年的時光,或許真的是一件非常可惜的事。
有看到朋友的網誌,怕自己沒有準備好,我真的覺得朋友是一個很認真的人,我的想法是,人永遠沒有準備好的時候,但是人可以靠著自己的熱情與時間(或許是肝XD?)去克服很多很多問題,大學之所以學不好,因為還沒有找到領域想要定下來,多聽聽多看看,有一定的學習廣度,大學生活其實就不虛此行了,找到目標就會等於找到不停止的動力,在這之前,確定自己所要的是什麼。沒有所謂的強與弱,我所認識的強者或者一般人稱為的神人,都是在該領域專注極長時間下的結果,有足夠的專注及熱情,其實每個人都一樣的。
或許我下一個該思考的問題是,讓自己變好和所謂的反社會傾向有什麼關係?
---
有一種還沒寫完的感覺。
written by
yen3
in
7:48 上午
0
comments
pigtail 的興趣是balabala(族繁不及備載),看到很多人都有明確的興趣,我的興趣為何?
寫作,閱讀,思考,寫程式。
---
結果花的時間剛好是反向序列XD
written by
yen3
in
12:56 上午
0
comments
去年的中秋節我沒有回家,因為比賽進入倒數最後一個禮拜,今年的中秋節依舊沒有回家,今年的比賽依舊剩最後一個禮拜。
去年和今年都有颱風,也是一種很奇妙的記憶。
---
風雨變大了,明天大概是燕麥片+泡麵 XD
written by
yen3
in
7:33 下午
0
comments
今天看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);
written by
yen3
in
11:08 上午
0
comments
tag: life, programming
09/20就要交出複賽文件了,在昨天cllee就停止要求增加新功能,我倒是蠻高興的,並不是說不樂於接受挑戰和工作,實則是想要把已經寫的程式,好好的修補一番,最近的這幾個禮拜都陷入在修改已知的bug和增加未知的功能上。
Clara: yen3,程式有bug喔~
yen3: 我記下來了(寫在紙上~)
yen3: Clara,database有功能要加。
Clara: 嗯嗯,馬上加好。
yen3: eating可以拜託你嗎? 有GUI要修改。
eating: 沒問題。
cllee: 程式那裡可以再加個功能。
yen3: 我這幾天會寫(寫在紙上~)
當然,今天也要開始對說明文件進行排版,發現,這個暑假過的很快,時間勒過就親象是鳥仔勒飛~是時候把最後一段該做的事完成了。
我想,該是跟Clara借個相機,我想把一些事照下來。自己的相機,也不是說不愛惜,電池六年,再怎麼充都會沒電,還是得尋求一個解決方案就是了。
---
還有好長一段路要走。
written by
yen3
in
7:35 上午
0
comments
國境之南
詞:嚴云農
如果海會說話 如果風愛上砂
如果 有些想念遺忘在漫長的長假
我會聆聽浪花 讓風吹過頭髮
任記憶裡的愛情在時間潮汐裡喧嘩
非得等春天遠了夏天才近了
我是在回首時終於懂得(也許天氣永遠會那麼熱)
當陽光再次回到那 飄著雨的國境之南
我會試著把那一年的故事 再接下去說完
當陽光再次離開那 太晴朗的國境之南
妳會不會把妳曾帶走的愛 在告別前用微笑全歸還
海很藍 星光燦爛 我仍空著我的臂彎
天很寬 在我獨自唱歌的夜晚
請原諒我的愛 訴說的太緩慢
written by
yen3
in
2:29 下午
2
comments
人是一種以形而上的思考和形而下的慾望結合。
若說要懂了什麼,恐怕只能說什麼都不懂,但是學會面對自我想法時,往往帶著一種嘲笑,拆開成赤裸裸的慾望時,其實人與人之間沒什麼不同。
堂而皇之的華麗遮掩了原始慾望的單純,拆開包裝之後剩下的又是什麼呢?但不幸的是,人長越大,自已為自己覆蓋的一層包裝,張愛玲所說的荒涼於心中徘徊不散。
一個故事就此開始。
---
序
written by
yen3
in
9:03 上午
0
comments
tag: life
最近,其實,生活很平靜,今天才去看了海角七號,有很多想法,等過一陣子再寫。
禮拜六日,為了不要讓自己太無聊,繼續寫程式,把cllee交待的新工作做的差不多了,明天要meeting,希望能順利一點,明天早上再把最後一個bug修掉即可。閒暇時利用一些時間在看boost,覺得有趣的東西都是functional programming的東西,所以我還是回來看FP好了。
還有三個禮拜複賽截止,還有二個禮拜就開學,不用打卡,不用寫工作日誌的第一天,其實很棒,但生理時鐘早就被調成打卡的作息了,早上八點醒來,下午五點吃飯,或許就這樣子發現我很容易被某件事制約?
也一直想寫一些黑暗的東西,但是心情太平靜,反而寫不出來? 也好,寫些平淡的東西也不錯。
---
閒聊文
written by
yen3
in
11:12 下午
0
comments
第一次裝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
written by
yen3
in
2:55 上午
5
comments
tag: life, programming
Fink Project 是一個可以讓你以套件管理形式來管理OpenSource的安裝套件,整個安裝說明在此在dkg解壓縮之後,安裝完,記得把"FinkComander" 移入應用程式中,會有一個非常像ubuntu的套件管理程式(其實安裝指令也有部分雷同,估計兩者有血緣關係XD),可以試試,比起MacPorts而言,有更多選擇。
---
學習。
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
今天下午花了時間去看了 失樂園 這部電影,不過我沒有看完我就關掉了,因為我的心底很沉重。
我不懂性,因為我不知道。
看這部電影時,導演用冷色調的藍色表示夜景,不斷的切斷內心與真實的場景,其實,當人深陷其中時,是愛情造就了性還是性造就了愛情,已經分不清楚了,一再的沉倫,當男主角說我們一起下地獄時,何謂救贖呢? 在這部的電影,冷色調的夜景,似乎對我而言是一個失恆的世界
閱讀的小說,多多少少都會有少則數行,多則成頁的有關性的描述,有的表達,只是為了一種情感的抒發,有的想要藉由性表達某一些觀點,更有者只是為了讓書更有看頭,等到人漸漸了解是怎麼一回事之後,突然有個感想
人長越大不是祕密越少,而是越無法承認自己真實的內心,或許真實的內心參雜慾望時,越發難以了解真實想法。人之所以複雜,是無法面對真實的自我,就有如日劇白夜行的最後警官所說,她已經無法說出實話了。
看著很多發生的事,其實我還蠻喜好閱讀D51的小說,但總是有一個心中的疑問,為什麼每篇小說都脫離不了夜店?
當人陷入一個巨大而被吞噬的寂寞時,性與真實,謊言與否已不重要,唯一的是抓住當下的快樂,而何謂解放,其實已經失焦。
這個社會存在著多種角度的社會,只是剛好我選擇了一個最簡單又幸福生活,但是豈又能知道進入這個旋渦時,又能剩下多少真實的自我,不哭泣面對明天的太陽。
唯一能做的,快樂的過生活。
---
有感
written by
yen3
in
12:03 上午
0
comments
目前想法如下。
mult_line x = map (x*) [1..9]
mult_table x = map mult_line [1..x]*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]]
written by
yen3
in
10:09 下午
0
comments
tag: Functional Programming, haskell, life
yen3媽: 兒子,今天喝雞湯好嗎?
yen3: 嗯嗯
yen3媽: 有一塊雞肉如何?
yen3: 嗯
yen3媽: 二塊雞肉?
yen3: 嗯
yen3媽: 三塊雞肉?
yen3: 我沒辦法吃這麼多...
yen3媽: 那三塊半?
yen3: ...
---
母親總是富有哲理XD
written by
yen3
in
9:17 下午
2
comments
tag: life
已經不記得上次是什麼時候返家,這次回來透露著陌生的熟悉感,家人聚在一起的感覺非常美好,從美國回來的姊姊送與我和efang衣服各一件,也拿到了Introduction to Funcitonal Programming 2/e,雖然上面沒有簽名XD,還是開心的想要大叫XD
---
我回家了。
written by
yen3
in
12:22 上午
0
comments
tag: life
我並不是一個無神論者,我是一個普通人,我相信很多事。本來還想寫很多很多事,先從這篇寫起吧。
昨日看"旅美小簡",陳之藩先生在1955年29歲時完成了這本書,,其實人的核心概念並沒有改變多少,但是我們卻了花了更多時間來證明真理的價值。看著他的大學時代與胡適的信,邊看邊感覺汗顏,在大學時代,能對這個世界抱有遠見及書寫社會,讓身為大學生的我,愧對大學生的名稱。
現在不是自我檢討的時候,看旅美小簡可以理解一些事。科學家的信仰是所追求的真理,及其這個存在理性的社會。不是不相信宗教,而是超越宗教之上,還有更值得我們做的事。我不是一個科學家,但是我的信仰是科學。
說一點輕鬆的,不知道美國那個有名的研究機構,對於一群大學生做了問卷調查,其中有一群人立志成為有錢人,有一群人立志把事做好。過了很久之後再做一次問卷調查,發現立志把事做好變為錢人的比例比立志成為有人錢的人比例更高。不過我可以預估到我以後會很窮...XD
從事學習或研究工作最有趣,也是我最喜歡的一點,透過自己的力量,用一個自己所能理解的角度,多接近世界一些。
---
或許有一天我會需要別人救濟XD?
written by
yen3
in
11:44 上午
0
comments
Thinking in Java 4/e 中文版現身了,但是The Java Programming Language 4/e 中文版卻不知在何處...
---
Orz...
written by
yen3
in
10:44 上午
0
comments
tag: life
老實說我也不知道我要下什麼標題比較好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版上瞧瞧高手討論。也是不錯
---
果真是胡言亂語
written by
yen3
in
12:47 下午
0
comments
tag: life, programming
不知道要下什麼標題才好
Clara's blog article about birthday
朋友提及才發現,升大四的時候,好像很少有人有過生日的習慣了,蠻感謝同組組員的,應該是說,我不是一個擅長表達的人,一直不知道怎麼說自己的感謝之情。還是很感謝eating, Clara, fire7617。
想想我們這組感情也不錯,始終都是自己白目了些。謝謝大家。
---
謝天
written by
yen3
in
11:20 下午
0
comments
其實,每一年都會思考,我是否有足夠的資格過生日...
不知道從什麼時候開始,我覺得我少不更事的年紀太長,認為自己不甚好,從理所當然,到覺得自己應貢獻社會。在更多時候,覺得自己應該要會某些事,卻總是一事無成。雖有Josh鼎力相助,發現自己興趣為何,從imperative programming 跳到 functional programming 學習(我曾自嘲,這跟我打了九年的注音不打從嘸蝦米的基本學起其實差不多(笑))。不知為何想起國文課本所提及的一句話。
真實偉大的樸實無華
少不更事看書時,只是為了炫耀自己會了什麼,並不是一個可取的想法,現在看書的時候,只是單純想要了解一件事,到現在我不認為我理解了這句話,但是我所想,持續的努力,或許可以了解這件事。雖然一事無成,但努力前進,總有一天會找到答案,笨笨的前進,總可以讓一群人了解你笨笨的前進為何。
我曾跟Josh聊過一連串的事,才覺得自己總是浪費了一堆時間,不過我總是不後悔,因為因此我才會更珍惜當下與未來。就某個程度而言,有著一群我很感謝的朋友,我可以安靜的過生活,雖然實力不足,但更應該努力幫忙身邊的人。今年並不想和往年一樣列了一堆人名,大家不一定認識,且少列誰我都會覺得抱歉。我想說的是
希望,身邊的大家都活的平安快樂。
---
謝謝大家,今年是一個相當愉快的回憶。
written by
yen3
in
7:54 下午
0
comments
第一次買碳粉,才知道原來很貴,2650...Orz
人生因有夢想而為大,所以我正在K我印下來的兩份文件 "Introduction to lambda Calculus" 和 "Yet Another Haskell Tutorial"。
我的夢想很簡單,我想知道如何寫好程式,然後帶領一個團隊把程式寫好。我的兒時夢想很簡單,我想要寫出一個可以讓很多很多人用的好程式,我一直都因為這個原因前進。我不是一個有能力的人,我更不是聰明的人,但是我相信Randy Pausch說的兩句話
如果你認真過生活,那麼你的人生自然會帶給你答案
阻擋你的夢想必有其原因,而這道牆是讓你展示你有多麼想達成夢想。
其實在一兩個月前就知道有關Randy Pausch教授的事,但是腦中一直在思考非常多事,我想我有非常多的事想說,而這篇,只是一個開始
---
認真過生活,人生自然會帶給你答案。
written by
yen3
in
1:00 上午
0
comments
欠稿很大,預估要寫到folder後才能停一下。
環境
建議是用ghc(The Glasgow Haskell Compiler),大部分的環境都有提供binary,直接安裝即可,而ghci是一個互動介面,較為常用指令如下。
簡單的開始
如果撰寫了一個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
written by
yen3
in
6:51 下午
1 comments
tag: Functional Programming, haskell, life
原本想說要用什麼 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的參考資料中文的不是很多,入門的更少,看英文是一個比較好的方法,網站參考資料如下
written by
yen3
in
11:43 上午
3
comments
tag: Functional Programming, haskell, life
剛剛透過在美國的姊姊訂了一本 Introduction to Functional Programming using Haskell只能說,便宜一點點,不過還是覺得天瓏的代訂價3227有點誇張。
---
耶~期待~XD
written by
yen3
in
11:13 上午
0
comments
tag: Functional Programming, life
這是一篇有關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
written by
yen3
in
9:05 上午
0
comments
繼主機掛點之後,螢幕(Benq FP71Q+)又壞了,跟上一次死在同一個錯誤,螢幕的開關壞了,距離上一次送修一年多。
我的桌上型電腦大概整組壞完了...有一種懶的修的衝動...
---
有一種很衰的感覺...Orz
written by
yen3
in
9:05 上午
0
comments
tag: life
原本想要回彰中講Generic Programming的,不小心講成這個XD
只能說自己在認識的人面前都會爆走,顯然是一個不太好的現象,講解的主軸還是GP,不過中間穿插了許多小故事,也講解了許多自己的想法,我想在這個blog再講一次。
我遇到許多人都跟我說要努力達成某件事,但是只有少數人能達到,沒到的人不是沒有這樣子想。
如果想要對自己構成某件改變,不改變自己的生活形態是不可能的,如果只有想一想之後,生活仍然一模一樣,我想不會有什麼改變。
要認真是一件好事,我想以後如果有類似問題,我會這樣子回答的。
---
所以我連NFS都戒掉了XD
written by
yen3
in
5:59 下午
2
comments
tag: life
以前可以暢所欲言的我,似乎漸漸的消失。或許因為知道世界之大而安靜,保持更好的觀察與學習能力,在前進。
明天準備回去講我忘的差不多泛型程式設計,今天因為颱風只有中部停止上班上課。想一想還是頗要有趣的,一般都是其他地方停課的。還是說我可以就此偷懶,讓他們今天的上明天的課XD 不過人得認清現實,有這麼好嗎XD
時間充足的狀況下,我蠻願意準備這堂課給大家的。
---
似乎不會有時間充足的狀況
written by
yen3
in
9:05 上午
0
comments
tag: life
我的桌上型電腦掛的差不多了。
現在想想,這台當初升大一買的時候,可是一個不錯的配備,Athlon64 3500 + 1 GB DDR + Geforce 6200,在這台寫程式,著實十分快樂(不過那時候寫的程式老實說也不吃重),但是大一心情不好的時候,每天拿它來跑Need For Speed: Most Wanted跑到顯卡熱當為止,到大二之後,就不會這麼操了(和efang在一起了,沒時間玩XD),現在想想,大一操這麼兇的電腦,不掛也困難。
這個學期當機頻傳,不是顯示卡出錯,就是記憶體掛掉,昨天徹底掛點,開機時連逼聲都沒有,初步推測,主機板掛了,記憶體掛了一條(學弟幫忙測試得到的結果),顯卡應該也差不多了。想想,以前電腦掛掉,就會很有活力的自己下海測試,換零件,直到好為止,漸漸的,我只是想安心的寫程式,這學期用MB的時間非常長,所以連這台什麼時候掛的,我都不甚清楚,想想也甚為慚愧,疏於照顧自己的電腦,電腦也不太可能會乖乖幫你忙。
或許暫時還是以MB為主工作,等比賽比完,再來好好的修理它,總是要盡心盡力照顧好每一台電腦的。
---
感觸良多。
written by
yen3
in
9:48 上午
3
comments
tag: life
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
written by
yen3
in
8:57 上午
0
comments
tag: programming, software
其實很多事很難以解決,明明每天都忙到很晚,感覺上總是沒什麼進度。或許只能說自己太久沒有上緊發條了。
Qt其實是一個很有趣的東西,我建議自己的學弟去學習,我自己還是在Google Static Map API上打轉,pre-fetch map其實有很多事可以考慮,可以試試。
開始閱讀和運動習慣,算了,想到再寫,超多事可以寫的,下筆此刻竟一個思緒也無。
---
無狀態
written by
yen3
in
10:34 上午
0
comments
tag: life
人跟人之間的問題果然非常難,還是生程式架構比較簡單...Orz
---
雖然這次要生的架構也超難就是了
written by
yen3
in
1:26 下午
0
comments
tag: game, life, programming
雖然還有一個project要完成,對我而言,大三下已經正式邁入一個尾聲。雖然這學期寫的程式都不大,但是也不少,雖不能輕鬆應付,但是也沒有遇到多大的問題,我想,cllee帶我們去比賽,在這個學期是有產生決定性的效用的。
思考了很多事,以學業上而言,有時候人不能思考太多事情,笨笨的去做,反而會有更多的效果,對於寫程式這條路而言,我才剛開始,我並不是跟Josh一樣很努力又有很好的結果,我是一個不怎麼努力的人,且很笨(笑)。早期大一大二閱讀的書到現在漸漸用的上了,不過卻有一股心虛的感覺,越用才越發現,原來以前的自己所學是不怎麼踏實的,但是也得說,如果以前不堅持看某些書的話,現在可能更無法把事情做好了。
對我而言,我希望盡量把我的現實面對生活拖到最後一刻,一直到現在,我還是可以很熱情的學習每一項東西,雖然這每一項東西考試不會考到,對於實質的生活不一定會有幫助,但是我喜歡。ycfu跟我說,你書看太多了,應該直接下去接個project來實作才對。這句話是對的,我理論不好,我寫程式也不行,有時候寫程式,下去寫就對了,並不用思考太多能與不能的問題。
最該感謝的還是cllee老師,在我覺得心情不好啊,人生徬徨的時候,找他聊聊,總是會給我一股最直接的力量,也感謝老師一直容忍我們進度落後,暑假我會一次補回來。
smallpig老師,對我而言,他是一個講話有點毒的老師(雖然blog一點都看不出來XD),不過從他的身上學到不少的現實生活的程式設計的想法與技巧,非常感謝老師,我這學期有一半的時間在寫他要求的程式,也可見我的功力不足,但也無妨。
ycma老師,有人說他悶騷,我覺得他是對某些技術存在著狂熱的老師,unix programming上的非常精采,雖然我們一直拖課,不然會聽到更多東西,但是這些事物帶給我是全新而不同的想法,也從老師身上學到很多編程技巧,雖然老師常常被我們嚇到XD。
efang,我很感謝,心情不好的時候,總是會陪著我,我會努力寫程式的。
eating,雖然你可能覺得你做不了什麼,但是一個安心寫程式的環境非常難求,沒有你,我也辦不到。
clara,雖然你常手殘XD,不過常常從你身上學到很多很有趣的程式想法,讓我的腦子開通了不少。
fire7617,雖然你常看我不爽,但是感謝你容忍我一直犯錯,我們要一起向前衝。
gb014388,全方位的心靈導師,以後還是靠你了XD。
其實,在這學期才完全想通一件事,我一直很想認真做專題,但是專題會卡到研究所考試,我的想法很簡單,我想把專題做好的原因是,我想做好一件事,做好一件事的態度會影響我一輩子,然而,今天考研究所是一個選項,當然,沒有考上是一件可惜的事,重點是我考研究所是為了什麼。在人生的目標前面,路不只有一條,但是我要選擇我做起來不會後悔的路,如果今天沒有做好該做的事,考上研究所也是沒有用的,做好該做的事,接下來才能談下一步,能影響人生的,往往是想法,而非現實生活的事物。我會試著努力準備研究所,但是,在把這一件事做好之後。
這個學期生活非常的簡單,連愛看的日劇都很少看了(這跟桌上型一直當沒辦法抓日劇看也有很大的關係XD),事情比以前多的狀況下,如果保持同樣的生活,能做的事只會比以前更少,得要有所交換,才有辦完成自己想要做的事。
---
好零碎,不過想法只有這些。
written by
yen3
in
7:44 上午
0
comments
很高興認識Zerolex這位朋友,他在PHP和C上的功力非常好,不像我一個四不像的人XD 私下聊天才發現,他是一個很有趣的人,但有身為資訊人應有的堅持,假以時日,會閃閃發亮的。
---
已加入blog sidebar
written by
yen3
in
1:04 下午
6
comments
tag: life
Clara是我少數認識會寫程式的女生(沒辦法,資工系女生本來就少XD),在認識她的大部分,她的寫程式其實架構良好,問題都不大。
不過當她的程式有問題,就是大家該撞牆的時候了XD 這是因為絕大部分時候,她錯的並不是程式問題,也不是邏輯問題,也不是架構問題,而是
打錯字問題...Orz
打錯字倒也不是一個很大的問題,她的手殘從來不會拖超過第二天就可以找到,只是想做個紀念,因為這個學期好像四次還是五次她的程式有大問題都是打錯字XD 這某個層面而言也不錯,至少沒有很大的問題存在。不過當辛苦幾個小時之發現是打錯字的問題,我想這心情也頗難描述XD。
不過總和而言,她還是一個很寶的人,尤其在寫程式上XD
---
做個紀念XD
written by
yen3
in
11:09 上午
4
comments
tag: life
發現這個blog的程式文似乎沒啥人在看,所以想做一點嘗試,因為自己的英文很爛,寫程式文時,又很容易中英夾雜,所以以後應該會試著用英文寫作。但是鑑於自己的英文實在是很爛,所以請大家多多指正了~
---
拜託大家了~XD
written by
yen3
in
11:53 上午
9
comments
tag: life, programming
這大概是我第一次參加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
written by
yen3
in
10:29 上午
2
comments
tag: life
我的想法跟大部分人沒什麼不同,如果對這個議題沒有興趣可以跳過(笑)。
前幾天,Smallpig老師丟出一個問題,我們憑什麼覺得Microsoft不好,你有付過一毛錢給他嗎? 而Google又真正好嗎? 免費的通常最貴 我只能說,我付了不少,不過我也承認,遠小於我使用的數目。
有關MS的討論,我在很久很久以前轉錄過一篇文章,我永遠都認為以前少不更事,當然,現在也沒多好(笑)。對我而言。
其實Google和Microsoft都在做一樣的事,只是Google做的比較成功。
MS其實是一個商業公司,通常在產品輸人時,會傾向把該公司買下來,不然就降價因應,最後不行才會真正想找人寫出一個不錯的軟體,今日的我不喜歡MS的原因,大概是不喜歡他的商業手法吧。雖然有時候我真的覺得MS有事沒事就要自己造一堆只有他的軟體能用的標準出來,讓software portable非常的低,這點也是讓我不喜歡用他的工具開發的原因。
我不喜歡被綁死的感覺,尤其是很貴的綁死。
Google其實是一個廣告公司,當然不可否認的,他們做的事真的非常棒,只是Google也是嘗試包下所有的Web Service,但是今天Google不會被人垢病的原因是,他所提供的服務通常是免費的,而且沒有很恐怖的廣告佔據你的眼睛。但是簡單的來說,Google就是想要包下所有的Web Service,然後放上廣告吸引人去點選,從中獲利。雖然表面上看起來沒有什麼很殘酷的商業手法,但是每推出新服務,無法避免的會對現有的廠商造成衝擊。其實會有一種猜測性的想法,如果今天新出來的一個idea,縱使想出來的人有辦法實作,那麼依今日Google的實力,是否有辦法找一群非常好的人把該創意複製下來呢? 不可否認的,Google可能有著全世界最頂尖的人才。
大者恆大,免費的最貴。
---
想法到此。
written by
yen3
in
11:14 下午
0
comments
今日參加Google Developer Day,中午的便當是我吃過最高級的,竟然會有我吃不完的便當XD
---
國網的便當...唉...Orz
written by
yen3
in
1:14 下午
5
comments
tag: life
雖然我對functional programming具有高度興趣,但一直沒有時間XD,如果我不太可能做相關理論,那麼學會寫functional program也是一個不錯的事情,今天看到了Erlang 程式設計 (Programming Erlang: Software for a Concurrent World)的出版,好誘人啊,有空應該會去看看。
此外,jjhou與陳裕成合譯的書也出來了"重構-向範式前進 (Refactoring to Patterns)"應該也會列入閱讀清單裡。
---
說不定就這樣子買了XD
written by
yen3
in
8:53 上午
0
comments
tag: life, programming
比預計來的順利,簡單的文字介面也完工了。
---
介面比較難寫XD
written by
yen3
in
11:17 下午
0
comments
tag: life, programming
好久沒有紀錄一下了。
首先,還是恭喜好友的決定啊,畢竟是一件好事。
自己生病了兩個禮拜之後回來寫了三天的btree,預計明天或後天就接近尾聲了,生病的時候想了很多事,大部分都是蠻荒誕可笑,病好了之後也花了比較多時間在與朋友閒聊,讓自己不要那麼像機器。
人不是機器,如果像機器總有一天會倒。
養病時也看了一點書,母親也嘗試告訴我,人啊,一天的時間就是那麼多,每個人都很忙,與其還要想有多少事情要忙在擔心,不如想想完成多少事而開心吧,真是一個非常棒的想法,怪不得我的生活步調越來越慢,但是效率並不以前差。這個學期著實寫了不少的程式,雖然都是小程式居多,不過寫久了,對於寫程式的速度有相當的提升,人果然是要操的,雖然在這個學期休息時間是變的很少,不過依舊開心的過生活。縱使生活對於一般人乏善可陳,但是我越來越喜歡這樣子單純的生活了。
---
單純即是幸福。
written by
yen3
in
1:33 上午
2
comments
tag: life
Btree實作的差不多了,只剩下delete要檢驗,而有關delete的部分寫超過200行。
---
大部分都重覆,所以還蠻煩的XD
written by
yen3
in
1:20 上午
2
comments
tag: life, programming
前幾天和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.
written by
yen3
in
1:51 下午
0
comments
tag: life, programming
睡了好多天,該是上工的時候了,所有進度已經延後三四天了。
---
雖然中間還是偷偷解決了幾個簡單的作業XD
written by
yen3
in
12:09 下午
0
comments
tag: life
大前天燒到37.6,前天燒到38.2,昨天燒到38.5,今天起床和一般沒生病感覺無異,只是體力差了一些,希望是好了。
---
一直發燒的感覺很討厭...Orz
written by
yen3
in
11:55 上午
4
comments
tag: life
幾乎從大二以來每個學期都有一次過操勞發生偏頭痛,睡一整天就可以康復的差不多,這一次比較不一樣,剛開始是偏頭痛,後面直接發燒,在efang的陪同下看了醫生吃了退燒藥才沒事。
不過在此很感謝fire7617, gb014388, ColdFunciton, Edson,沒有大家,我不太可能好的這麼快。
---
聽說有人對我沒去上課很不爽XD。
written by
yen3
in
8:56 上午
3
comments
tag: life
在什麼程式都很想寫的狀況下,寫程式得更具有耐心才行。
---
不過程式也有可能多到寫不完XD
written by
yen3
in
12:12 下午
0
comments
tag: feeling, life, programming
其實我一直是OpenOffice的愛好者,大概是因為他的跨平台性比起MS Office好了很多很多倍XD,3.0 beta脫離了x11,其實我也不知道是好是壞,但是執行起來還蠻穩定的,大部分不要太複雜的簡報都可以正常的觀看(隨機客的簡報看起來會變的非常慢XD),速度只能說差強人意,期待正式版嘍。
---
真是的一個很不錯的軟體。
written by
yen3
in
3:09 下午
0
comments
最近不斷有人跟我反應說我和efang的blog太閃了,節錄某人對話如下
我一直很想看內文,不過旁邊那一塊太亮了,我都看不到
---
拍謝拍謝,我會改進XD
written by
yen3
in
10:01 上午
6
comments
tag: life
由於完全沒有相關的開發經驗,所以其實去了是受益良多,一時之間也記不下來,我學新東西一向只著於兩點,一點是目的,一點是可用資源有那些。
Windows Mobile 6 Professional SDK應該安裝的有
在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
遠端工具操作介紹
如果有問題,可以至官方討論區討論: 微軟技術社群討論區 行動與嵌入式裝置開發或者去中國CSDN
C:\Program Files\Microsoft.NET\SDK\CompactFramework\v2.0\WindowsCE\Diagnostics\
底下可以找尋相關的CHT的cab檔裝在裝置上,可以獲得較多的Exception資訊
---
好亂...Orz
written by
yen3
in
12:52 上午
0
comments
tag: game, life, programming
在MacBook上分割Windows磁區失敗,可能整台Mac又要重灌了...Orz
---
很久沒有寫blog,這個竟然是第一篇...Orz
written by
yen3
in
11:43 下午
0
comments
tag: life
我有關學Computer Science的遺憾有很多,現在遇到 SmallPig老師,有時候還真的蠻想把一堆有關網路相關呈現技術搞懂的,這也是我所不會的一塊,有空應該是要專心花時間搞懂,所謂的文件,應該不只有排版的pdf,在網路上的呈現也是相當重要的一環,不過我卻在網路這一塊知之甚少,該是花時間的時候到了。
昨天看到Erlang的介紹,應該會抽點時間去了解這是什麼,不過看到另外一篇介紹,想不到竟然是functional programming language,這更讓我覺得有趣了XD
---
雜記文一篇
written by
yen3
in
8:56 上午
0
comments
tag: life, programming
今天中華電信桃園分公司經理(聽說是很大的職位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
written by
yen3
in
12:23 下午
0
comments
tag: life
我一直以為我得到別人很正向的reponse是一件很幸福的事,現在漸漸在理解,如果自己給需別人的想法越大,所得到的reponse也是成正比的,也就是說,在正常的狀況下,可以帶動人與人之間的氣氛。
---
不過這個問題需要再思考
written by
yen3
in
12:48 下午
0
comments
睡過頭導致全部的事都超出預料,還沒有午餐可以吃....Orz
---
再過一個小時就可以吃飯了...
written by
yen3
in
12:04 下午
0
comments
tag: life
Josh Ko 升成4分,我升成2分,神奇的是,efang 升成1分XDXD
---
PageRank的家族關係嗎XD
written by
yen3
in
1:12 上午
3
comments
剛剛突然想到,為什麼要有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
written by
yen3
in
11:22 上午
2
comments
tag: life, programming
在Josh Ko的幫忙下,終於寫成可接受的heap.hpp了,現在可以試試了
---
終於要進入正題了嗎...XD
written by
yen3
in
11:13 上午
0
comments
tag: programming
事實上是為了回覆問題這一篇,在經過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就可以解決了。
written by
yen3
in
2:02 上午
2
comments
tag: programming
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)
這會讓我想到小世界原理,我就不點了。
---
我習慣把事情快速解決
written by
yen3
in
1:49 上午
0
comments
tag: life