其實作任何事情都一樣吧,看一下ruby的筆記,竟然停在四個月之前~有種驚訝~果然
學如逆水行舟,不進則退
Ruby~我們是不是無緣阿!!!!!!!
2007年11月16日 星期五
PEAR安裝
好久沒摸PHP了,一直停留在過去PHP4的時代,目前PHP版本早已"突飛猛進"跟PHP4差很多了
簡單複習一下http://www.appservnetwork.com/?modules=&applang=tw
直接裝個n合1咖啡,不是~是安裝程式,就簡單的把PHP架設起來,反正只是要練習一下PEAR安裝,就不認真設定環境,快就好
接著到http://pear.php.net/go-pear去抓script,放到要執行的目錄下,設定為script檔案~
直接給連結執行該script就可以(就是當一般網頁的php檔案啦)
P.S.安裝中~不過好像有個檔案一直抓不下來的樣子,不知道哪個環節有問題server?網路?
簡單複習一下http://www.appservnetwork.com/?modules=&applang=tw
直接裝個n合1咖啡,不是~是安裝程式,就簡單的把PHP架設起來,反正只是要練習一下PEAR安裝,就不認真設定環境,快就好
接著到http://pear.php.net/go-pear去抓script,放到要執行的目錄下,設定為script檔案~
直接給連結執行該script就可以(就是當一般網頁的php檔案啦)
P.S.安裝中~不過好像有個檔案一直抓不下來的樣子,不知道哪個環節有問題server?網路?
2007年7月7日 星期六
Ruby的兩個內建資料型態array跟hash
直接來看code
底下是範例輸出:
使用[]表示array,直接給予初始化,我覺得ruby的作法可能是來自於perl。取sub-array的方式有兩種,分別是array_name[start,length]跟array_name[start..end],ruby的array跟一般的C語言一樣從0開始算
直接使用某個元素就是array_name[index],如果index是複數,表示由最後面開始算起-1,-2,...,另外有兩個用來分開跟結合的function,分別是join跟split,前者回傳一個字串,後者回傳一個字串陣列,這兩者在一些簡單的分析上面很有用
除此之外array並沒有一定型態的集合,所以你可以放入任何的type,使用+把兩個array串起來即可,例如把字串陣列加上一個整數元素,這也是可以
在於沒有型態的規範,這部份很有可能跟一般的OO相左,因為你不會把不相同型態的東西放進一個array
hash使用{}來作為建構的方式之一,他是一堆key=>value的配對,可以從上面範例看到
要加入一個新的元素很簡單,只要使用hash_name[new_key]=new_value就可以了,要取得可以藉由hash_name[key]就會回傳所需的value,修改也是hash_name[key]=new_value,其中key跟value並沒有規定一定要是數字或者字串型態,可以隨意融合
要刪除的的話可以使用delete方法,呼叫hash_name.delete key的方式
其實在ruby中拜訪整個hash跟array都可以配合iterator的方式,相當方便
array=[1,2,3,4,5,6,7]
p array[0]
p array[2,2]
p array[2..5]
p array[-1]
array=array.join(":");
p array
array=array.split(":");
p array
array=array+[1]
p array
hash={"david"=>"06/06/06","jacky"=>"07/07/07"}
p hash
hash["john"]="05/05/05"
p hash
hash.delete "david"
p hash
p array[0]
p array[2,2]
p array[2..5]
p array[-1]
array=array.join(":");
p array
array=array.split(":");
p array
array=array+[1]
p array
hash={"david"=>"06/06/06","jacky"=>"07/07/07"}
p hash
hash["john"]="05/05/05"
p hash
hash.delete "david"
p hash
底下是範例輸出:
1
[3, 4]
[3, 4, 5, 6]
7
"1:2:3:4:5:6:7"
["1", "2", "3", "4", "5", "6", "7"]
["1", "2", "3", "4", "5", "6", "7", 1]
{"jacky"=>"07/07/07", "david"=>"06/06/06"}
{"john"=>"05/05/05", "jacky"=>"07/07/07", "david"=>"06/06/06"}
{"john"=>"05/05/05", "jacky"=>"07/07/07"}
[3, 4]
[3, 4, 5, 6]
7
"1:2:3:4:5:6:7"
["1", "2", "3", "4", "5", "6", "7"]
["1", "2", "3", "4", "5", "6", "7", 1]
{"jacky"=>"07/07/07", "david"=>"06/06/06"}
{"john"=>"05/05/05", "jacky"=>"07/07/07", "david"=>"06/06/06"}
{"john"=>"05/05/05", "jacky"=>"07/07/07"}
使用[]表示array,直接給予初始化,我覺得ruby的作法可能是來自於perl。取sub-array的方式有兩種,分別是array_name[start,length]跟array_name[start..end],ruby的array跟一般的C語言一樣從0開始算
直接使用某個元素就是array_name[index],如果index是複數,表示由最後面開始算起-1,-2,...,另外有兩個用來分開跟結合的function,分別是join跟split,前者回傳一個字串,後者回傳一個字串陣列,這兩者在一些簡單的分析上面很有用
除此之外array並沒有一定型態的集合,所以你可以放入任何的type,使用+把兩個array串起來即可,例如把字串陣列加上一個整數元素,這也是可以
在於沒有型態的規範,這部份很有可能跟一般的OO相左,因為你不會把不相同型態的東西放進一個array
hash使用{}來作為建構的方式之一,他是一堆key=>value的配對,可以從上面範例看到
要加入一個新的元素很簡單,只要使用hash_name[new_key]=new_value就可以了,要取得可以藉由hash_name[key]就會回傳所需的value,修改也是hash_name[key]=new_value,其中key跟value並沒有規定一定要是數字或者字串型態,可以隨意融合
要刪除的的話可以使用delete方法,呼叫hash_name.delete key的方式
其實在ruby中拜訪整個hash跟array都可以配合iterator的方式,相當方便
函數使用與基本整數型態
出嚐試ruby之後,回歸一下基本面,從新像是C語言一般的入手,來看一些method,使用def表示要開始定義方法,結尾接上end,然後要有method name,以下面的例子來說就是fact,後面括弧裡面接的是參數名稱,不只一個就用逗點分開
這裡有些要說明,首先在ruby裡面return是可以省略的,因為ruby自動回傳最後一個執行的敘述,當然要加上也是可以,還有就是基本上ruby的數值可以分成Fixnum、Float、Bignum,就是基本的整數、浮點數、大數,在ruby裡面特殊處理時候,如果整數(Fixnum)儲存不了,ruby就自動換轉換成Bignum。
上面的例子執行後輸出就會看到各種型態,雖然type目前這個方法已經不被鼓勵使用,但是暫時拿來觀察一下也是可以啦。
底下是範例輸出:
def fact(n)
if n==1
1
else
n*fact(n-1)
end
end
value=fact(5)
w=5.5
p w.type
p value
p value.type
value=fact(30)
p value
p value.type
這裡有些要說明,首先在ruby裡面return是可以省略的,因為ruby自動回傳最後一個執行的敘述,當然要加上也是可以,還有就是基本上ruby的數值可以分成Fixnum、Float、Bignum,就是基本的整數、浮點數、大數,在ruby裡面特殊處理時候,如果整數(Fixnum)儲存不了,ruby就自動換轉換成Bignum。
上面的例子執行後輸出就會看到各種型態,雖然type目前這個方法已經不被鼓勵使用,但是暫時拿來觀察一下也是可以啦。
底下是範例輸出:
Float
120
Fixnum
265252859812191058636308480000000
Bignum
120
Fixnum
265252859812191058636308480000000
Bignum
2007年7月6日 星期五
ruby的隨加入method
廢話不多說,先看到code,裡面會有兩個class關鍵字,定義同一個class,然後會被程式視為相同的class
結果如下
to_s是本來只有單純的印出object id,我們不想那麼無聊,重新定義一個to_s的方法,這意味著我們可以隨時幫class新增方法,這真的跟過去的編譯語言很不一樣,不過畢竟他是script
接著來看getter跟setter的使用方式,這一點比java聰明一點,只要使用attr_reader就可以定義屬性了,後面要接上:variable
# main.rb
# 2007年7月6日
#
#puts "Hello World"
class Song
def initialize(name,artist,duration)
@name=name
@artist=artist
@duration=duration
end
end
aSong=Song.new("Bicylops","Fleck",260)
p aSong.inspect
p aSong.to_s
class Song
def to_s
"Song: #{@name} #{@artist} #{@duration}"
end
end
p aSong.to_s
結果如下
"#song:0xb7c93404 name="\"Bicylops\"," duration="260," artist="\"Fleck\"""
"#song:0xb7c93404"
"Song: Bicylops Fleck 260"
to_s是本來只有單純的印出object id,我們不想那麼無聊,重新定義一個to_s的方法,這意味著我們可以隨時幫class新增方法,這真的跟過去的編譯語言很不一樣,不過畢竟他是script
接著來看getter跟setter的使用方式,這一點比java聰明一點,只要使用attr_reader就可以定義屬性了,後面要接上:variable
...
class Song
attr_reader :name,:artist,:duration
end
p aSong.name
p aSong.artist
p aSong.duration
修改Blog的CSS
修改了一下CSS,主要是調整排版的左右,跟一些padding之類的,底下是修改的部份
@media all {
div#main {
float:left;
width:76%;
padding:30px 10px 5px 1em;
border-right:dotted 1px $bordercolor;
word-wrap: break-word; /* fix for long text breaking sidebar float in IE */
overflow: hidden; /* fix for long non-text content breaking IE sidebar float */
}
div#sidebar {
margin:20px 0px 0px 0;
padding:0px 0px 0px 5px;
text-align:left;
float: left;
width: 21%;
word-wrap: break-word; /* fix for long text breaking sidebar float in IE */
overflow: hidden; /* fix for long non-text content breaking IE sidebar float */
}
}
然後留下一張照片紀念一下~呵呵
@media all {
div#main {
float:left;
width:76%;
padding:30px 10px 5px 1em;
border-right:dotted 1px $bordercolor;
word-wrap: break-word; /* fix for long text breaking sidebar float in IE */
overflow: hidden; /* fix for long non-text content breaking IE sidebar float */
}
div#sidebar {
margin:20px 0px 0px 0;
padding:0px 0px 0px 5px;
text-align:left;
float: left;
width: 21%;
word-wrap: break-word; /* fix for long text breaking sidebar float in IE */
overflow: hidden; /* fix for long non-text content breaking IE sidebar float */
}
}
然後留下一張照片紀念一下~呵呵

在blog上面呈現code-利用code2html
這是一個好用的工具,在linux底下安裝相當方便,如果是windows也可以透過perl(其實他就是perl script),支援的格式也蠻多的,我使用的式0.91,底下式目前支援的格式
- Ada
- Awk
- C
- C++
- HTML
- Java
- JavaScript
- m4
- Makefile
- Pascal
- Perl
- SQL
- ruby
- povray
- groff (very incomplete)
code2html -l ruby main.rb result.html-l ruby表示是使用何種語言,-n表示顯示行數,如果更多仔細的內容的話就自己看囉
code2html -n -l ruby main.rb result.html
在blog上面呈現code-利用CSS
我在我的blog裡面加上了
只要利用這段CSS稍微可以把程式碼跟內容區隔開來,不過code的縮排跟顏色還有代討論,雖然之前有看過人家怎樣作,可是一般我用不到大,果然是需要的資訊要在找到式很難的
.code{
background-color:#EEEEEE;
border-style: dotted;
border-width: 2px;
padding: 5px;
}
background-color:#EEEEEE;
border-style: dotted;
border-width: 2px;
padding: 5px;
}
只要利用這段CSS稍微可以把程式碼跟內容區隔開來,不過code的縮排跟顏色還有代討論,雖然之前有看過人家怎樣作,可是一般我用不到大,果然是需要的資訊要在找到式很難的
程式隨筆
開使用blogger紀錄一些程式的筆記,本來有點打算,是否能夠把他集結成為一個有次序性的且適合任何人的筆記,不過放棄了,畢竟現在還沒想當人家的指導員~呵呵,再來我不想花這麼大的精神在這上面,這應該是老師的工作,因為每個人都有不同的背景,要維護一份好的筆記是不容易的
看到程式語言蓬勃發展,我就一直認為程式語言不過是另外一種"說話"的方式,其實思考跟核心的概念才是主角,只不過實在程式語言是門檻有點高(但相對於小時候我們學習自己的語言,其實我們搞不好還花了更多的時間哩),一般人並不會進入,所以這種語言對於普通人有一種隔閡。
另外我對程式語言有點小小的抱怨,對於程式語言的一些瑣碎的工作頗有點無力感,像是debugger等等,對於他的修飾,實在是比不上我們一般文章的修飾來的容易。
算了,或許把程式語言當成一般語言是太過於吊詭跟奇怪的想法,把他們拿來比較並不是很恰當,呵~胡言亂語到此為止
看到程式語言蓬勃發展,我就一直認為程式語言不過是另外一種"說話"的方式,其實思考跟核心的概念才是主角,只不過實在程式語言是門檻有點高(但相對於小時候我們學習自己的語言,其實我們搞不好還花了更多的時間哩),一般人並不會進入,所以這種語言對於普通人有一種隔閡。
另外我對程式語言有點小小的抱怨,對於程式語言的一些瑣碎的工作頗有點無力感,像是debugger等等,對於他的修飾,實在是比不上我們一般文章的修飾來的容易。
算了,或許把程式語言當成一般語言是太過於吊詭跟奇怪的想法,把他們拿來比較並不是很恰當,呵~胡言亂語到此為止
第一個ruby程式
依循著左邊連結的文件,我開始我第一個ruby程式
# main.rb
#2007/07/06
#
#puts "Hello World"
class Song
def initialize(name,artist,duration)
@name=name
@artist=artist
@duration=duration
end
end
aSong=Song.new("Bicylops","Fleck",260)
p aSong.inspect
- ruby似乎很喜歡用end來取代}
- def表示要定義method
- 其中ruby使用名為initialize的method來作為constructor(在java中)
- @開頭的變數名稱為instance variable
- inspect這方法會回傳object的id跟他instance variable的value
- p表示print

2007年7月5日 星期四
Ruby緣起
話說為何想要研究ruby呢?因為被網路上一句"比java開發快十倍"所吸引,老實說啦~比java開發快十倍有點誇張,我實在很不相信,不過這麼被推崇備至,我想有他的理由
再來,我實在有點厭倦了過去那種程式語言的開發方式,想說新出爐的語言是否有一些優勢,過去也不討厭script language,一般而言script language有比較鬆散跟難以管理的問題(像是PHP就是),還有他們debug有時候也真的不容易
再來好的java程式設計門檻比較高,必須學習一些類似hibernate、spring、struts等等架構,還得要理解一些J2EE的架構(這不表示這些東西就不好),有時真的還是覺得太龐雜,外加他不是原本程式就支援的,多多少少在媒合上面有些困難
我想要的新的語言是,簡單、容易調整、容易除錯(這是Programmer的大敵),且看看ruby有沒有新的idea~呵呵。
有人可能會推薦perl,可惜實在那種style不大合乎我的胃口,他真的是非常"優雅"的一種程式語言,可惜我的腦袋太僵硬了,python這一條大蟒蛇,我還沒機會領教,等等吧~有機會的~哈。
Java是一個相當成功的典範,在算他十年後(我預估)功成身退,他留下來的典範依舊是存在的。
===================================================================
在看了一陣子ruby之後,他的卻在某些方面相當優異,比方說
由上面後面兩點來看,很糟糕的是有點在破壞OO的概念,因為在OO中很重要的就是interface的概念,隨時可以添加method可能會造成維護上得不容易。還是他比較貼近泛型(generic)的思維呢?
我認為另外他有一個很嚴重的缺點是GUI的缺乏,依賴Tk在發展應用程式上面會受到限制,難道要當一般的script來使用?(雖然我本人是以此為目的);還有覺得ruby在某些程式的可讀性面稍微差了一點,這是他語法的緣故。另外最後一個問題就是ruby本身的library並不夠多,像是java跟perl都是以龐大的library來提供強大的後援的
再來,我實在有點厭倦了過去那種程式語言的開發方式,想說新出爐的語言是否有一些優勢,過去也不討厭script language,一般而言script language有比較鬆散跟難以管理的問題(像是PHP就是),還有他們debug有時候也真的不容易
再來好的java程式設計門檻比較高,必須學習一些類似hibernate、spring、struts等等架構,還得要理解一些J2EE的架構(這不表示這些東西就不好),有時真的還是覺得太龐雜,外加他不是原本程式就支援的,多多少少在媒合上面有些困難
我想要的新的語言是,簡單、容易調整、容易除錯(這是Programmer的大敵),且看看ruby有沒有新的idea~呵呵。
有人可能會推薦perl,可惜實在那種style不大合乎我的胃口,他真的是非常"優雅"的一種程式語言,可惜我的腦袋太僵硬了,python這一條大蟒蛇,我還沒機會領教,等等吧~有機會的~哈。
Java是一個相當成功的典範,在算他十年後(我預估)功成身退,他留下來的典範依舊是存在的。
===================================================================
在看了一陣子ruby之後,他的卻在某些方面相當優異,比方說
- iterator方便許多(相對java5之前,java5之後差異就比較小)
- 在getter跟setter也蠻簡單的(java要借助IDE,不然真是苦差事)
- 所有東西都是物件(基本型態也是物件)
- Ruby on Rails本身已經引入MVC架構
- 可以輕易的處理Thread(但是對於java6在thread上面的加強,好像又不是很足夠:P)
- 對多型的解釋不同,完全binding by name(也就是某種程度他不需要interface)
- 可以隨時為了class添加method
由上面後面兩點來看,很糟糕的是有點在破壞OO的概念,因為在OO中很重要的就是interface的概念,隨時可以添加method可能會造成維護上得不容易。還是他比較貼近泛型(generic)的思維呢?
我認為另外他有一個很嚴重的缺點是GUI的缺乏,依賴Tk在發展應用程式上面會受到限制,難道要當一般的script來使用?(雖然我本人是以此為目的);還有覺得ruby在某些程式的可讀性面稍微差了一點,這是他語法的緣故。另外最後一個問題就是ruby本身的library並不夠多,像是java跟perl都是以龐大的library來提供強大的後援的
Ruby第一步
不用說,首先就要安裝ruby囉,安裝ruby很簡單,跳過不講:P(本人在linux下,安裝ruby)
接下來就是找個好的IDE,那是延長人類壽命的秘訣哩XD 我個人推薦去找下面這個
http://deadlock.netbeans.org/hudson/job/ruby/
是Netbean改過來的,只有rubyide,當然如果你需要java的話,可以找netbeans 6,不過他目前在beta版,再說,我也只想要有單純的rubyide,就選用這個吧
P.S.要安裝好java,因為他本身是依賴java來執行的
當然喜歡使用vim也是不反對,或者其他編輯器也可以,可是本人不喜歡編輯器跟console兩邊跑來跑去
解壓縮完畢,就new一個project,看起來如下圖,然後直接執行看看,簡單容易
成功踏出ruby第一步
接下來就是找個好的IDE,那是延長人類壽命的秘訣哩XD 我個人推薦去找下面這個
http://deadlock.netbeans.org/hudson/job/ruby/
是Netbean改過來的,只有rubyide,當然如果你需要java的話,可以找netbeans 6,不過他目前在beta版,再說,我也只想要有單純的rubyide,就選用這個吧
P.S.要安裝好java,因為他本身是依賴java來執行的
當然喜歡使用vim也是不反對,或者其他編輯器也可以,可是本人不喜歡編輯器跟console兩邊跑來跑去
解壓縮完畢,就new一個project,看起來如下圖,然後直接執行看看,簡單容易

訂閱:
文章 (Atom)