2007年8月13日
原文地址
下午無聊翻譯一下,看看ruby官方怎么和java對比
相同點:
類似于java,在ruby中:
內(nèi)存管理都是由GC(garbage collector)負責。
都是強類型語言。
都有public,private,protected的方法可見性之分。
都有嵌入式文檔工具(ruby的叫做RDoc)。rdoc生成的文檔看起來非常像由javadoc生成的。
不同:
于java不同的是,在ruby中:
你不必編譯代碼,你只需要直接運行代碼。
Gui開發(fā)包不同。比如,ruby的用戶會嘗試WxRuby,F(xiàn)XRuby,Ruby-GNOME2,或者基于Ruby Tk庫。
你要在定義任何事物(像class)后面加上關鍵字end,而不是用花括號({})來包圍代碼塊。
使用了require代替了import。
所有的成員變量(屬性)都是private級的。在類外訪問任何事物要通過方法調(diào)用。
什么都是對象,包括2和3.14159。
沒有靜態(tài)類型檢查。
變量名都只是標簽,它們沒有與類型相關。
不用聲明變量類型,你只需要賦值給新的變量名就可以了(例子,a = [1,2,3] 相當于 int[] a = {1,2,3};)。
沒有類型強制轉(zhuǎn)換這個概念,只管調(diào)用方法就好了。
用 foo = Foo.new( "hi") 取代這樣新建對象的方法 Foo foo = new Foo( "hi" )。
構造方法一直都叫“initialize”,不是和class同名的方法。
使用“混入” 代替 “接口”。
YAML 比 XML 更受歡迎。
這里用nil代替null。
==和equals()方法處理方法不同。當你想要測試相等性時就使用 == 操作符(就像Java的equals()方法)。當要想要知道兩個對象是否是同一個時就使用equal?()方法(就像Java中的==)。
摘要: 早上看了Ruby論壇中有人(blackanger)寫的TDD by Ex這本書里的資金例子,自己也想寫一寫。和他不同,我是全過程詳細寫出來。第一次用Ruby寫代碼,第一次用Ruby的Unit框架,而且下午睡醒后迷迷糊糊寫的,可能有很多錯誤,請多多指正。
閱讀全文
在Ubuntu下通過apt包管理器安裝ror環(huán)境是很方便的。我自己寫了一個腳本:
sudo apt-get install build-essential gcc g++ libssl0.9.8 libssl0.9.8-dbg libssl-dev build-essential
sudo apt-get install ruby
sudo apt-get install libzlib-ruby rdoc ri irb ruby1.8-dev
sudo apt-get install libzlib-ruby
sudo apt-get install rubygems
sudo gem update --system
sudo gem install rails -y
sudo gem install rails --include-dependencies
sudo gem install mongrel -y
sudo gem install mongrel_cluster --include-dependencies
sudo apt-get install libopenssl-ruby
sudo apt-get install libgd-ruby1.8 libyaml-ruby libzlib-ruby
sudo apt-get install imagemagick
sudo apt-get install libmagick9-dev ruby1.8-dev
sudo gem install RMagick? -y
直接把上面的一串保存在一個文本文件中,然后用sh命令執(zhí)行就可以一步安裝完成了。
我發(fā)現(xiàn)網(wǎng)上很多在安裝gem的命令都是錯的,在Ubuntu里gem包不是ruby的gem,ubuntu下gem包的解釋如下:
Graphics Environment for Multimedia - PureData library
Gem is a loadable library for puredata, which adds OpenGL graphics rendering
and animation to Pd.? Pd is a graphical programming language and computer
music system.
這個包和ruby一點關系都沒有。正確的應該是rubygems包。不知道為什么到處有人都是寫
sudo?apt-get?install gem的,很多都是轉(zhuǎn)載,有的連轉(zhuǎn)載都不聲明,直接試都不試把錯的東西直接貼出來。
另有人說源里的gem很過時,其實也不會。
轉(zhuǎn)載自:http://blog.csdn.net/bvbook/archive/2007/08/20/1751786.aspx
一、148 頁
英文: We check that the name is present and unique
原文:我們首先檢查用戶名與密碼都不為空 ?
二、148頁
?? ??? ??? ??? ??? ??? ?
英文:We check that the name is present and unique
原文:我們首先檢查用戶名與密碼都不為空
改為:我們首先檢查用戶名不為空
?? ??? ??? ??? ?
三、153頁
代碼中 flash[:notice] 應為flash.now[:notice]
四、310頁
?? ??? ??? ??? ??? ??? ?
列表中第二個“使用save方法時”應為“使用save!方法時“
?? ??? ??? ??? ??? ??? ?
五、407頁
?? ??? ??? ??? ??? ??? ?
英文:Instead, they provide a regular (and simple) interface to a set of resources.
原文:它們只要為一組資源提供一個普通(并且簡單)的接口就行了
改為:它們只要為一組資源提供一個規(guī)則(并且簡單)的接口就行了
?? ??? ??? ??? ?
六、408頁
兩處的 /article/1 應為/articles/1
?? ??? ??? ??? ??? ??? ??? ??? ?
七、456頁
?? ??? ??? ??? ??? ??? ?
原文:默認配置下,cache 只有在產(chǎn)品環(huán)境下才生效
改為:默認配置下,cache 只有在生產(chǎn)環(huán)境下才生效
?? ??? ??? ??? ?
八、535頁
?? ??? ??? ??? ??? ??? ?
原文:這個輔助方法就是把 remote_function 一個remote_function
改為:這個輔助方法就是把一個remote_function
九、554頁
?? ??? ??? ??? ??? ??? ?
原文:表單可以這些方法交互以提交用戶輸入的內(nèi)容
改為:表單可以與這些方法交互以提交用戶輸入的內(nèi)容
?? ??? ??? ??? ?
十、106頁 代碼
?? ??? ??? ??? ?
@product = Product.find(params[:id])
應為?? ??? ?
product = Product.find(params[:id])
110、117相應的代碼也需要改正。
我自己還發(fā)現(xiàn)了:
P119
代碼
??? <%= form_remote_tag :url => { :action => :add_to_cart, :id => product } %> ?
???? <%= submit_tag "Add to Cart" %> ?
??? <% end %> ?
應為:
代碼
?? <%= form_remote_tag :url => { :action => :add_to_cart, :id => product } %> ?
????? <%= submit_tag "Add to Cart" %> ?
?? <%= end_form_tag %> ?
106頁
代碼
@product = Product.find(params[:id])
應該是
product = Product.find(params[:id])
?? ??? ??? ??? ??? ??? ?
?? ??? ??? ??? ??? ??? ?
?? ??? ??? ??? ?
前天用我的X1650GT和同學換了一塊7300GT,在Ubuntu折騰了一下,終于如愿以償?shù)亻_啟了Compiz Fusion的效果,并且用gDesklets在桌面加了一些實用工具挺好玩的。
過程也挺折騰的,先是安裝了ati的顯卡驅(qū)動后要裝nv的驅(qū)動碰到問題,然后再是開啟特效后窗口沒有了邊框。在安裝ati驅(qū)動后裝nv的驅(qū)動先要刪除幾個庫文件(libGL.so),看他提示哪個就刪除哪個,然后nv驅(qū)動才可以正常安裝。nv顯卡開特效的邊框的問題 只要運行一下sudo nvidia-xconfig --add-argb-glx-visuals就OK了。
現(xiàn)在上圖看看:




?
用了Ubuntu7.04一個多星期了覺得挺很不錯,很多方面比在windows下好很多。方便的硬盤安裝。一開始是在家里的電腦安裝的,之后把硬盤拿到學校的電腦一插上去就可以用了,只需在命令行界面配置顯卡和校園網(wǎng)就OK了。Ubuntu的硬件的兼容性真是沒得說,還有人還制作了一個可以放在U盤的精簡版本。Linux的整個系統(tǒng)加上所有的常用軟件比windows加上所有常用軟件的磁盤占用小很多。
記得剛剛接觸電腦的時候就用了一段時間的RH9,覺得很神秘很帥。后來來到學校后發(fā)現(xiàn)校園網(wǎng)上不到網(wǎng),用xrgsu要么掉線要么上不到,試了sesu和fc都是這樣。因為萬惡的銳捷又不能用虛擬機上網(wǎng)。這次是因為有個師兄用ubuntu7.04成功的上到了所以我又用回了Linux,用回了久違的VI。我不知為什么學了vi和emacs兩個編輯器,但是一直都用不慣emacs,vi就用得很順手。Linux下的編輯器就好在可以雙手不離開鍵盤,不用去用到鼠標,不過太久沒有用了,時不時手還是會想去摸鼠標,然后想一想手又縮回來按快捷鍵。
Ubuntu的中文社區(qū)很活躍,中文的資料又多得不得了,一般有什么問題搜索一下就可以查找到。
Ubuntu下用得最爽的是FireFox,好像沒有windows下的內(nèi)存泄漏現(xiàn)象。Linux下的BT軟件就不怎樣,還是用wine+比特精靈比較好。相對于bt,linux下的電驢軟件就很厲害了,MLDonkey很快,最高能過1M/s。
下載安裝軟件,Ubuntu繼承了Debian系的apt-get系列的方便,很大得方便了我這類懶人。只要一個命令就可以簡單地在非圖形界面安裝軟件,而且自動安裝軟件源中最新的版本,一并安裝配置。只是把軟件安裝到哪里要自己去查找,有時是挺麻煩的,比如在安裝后要修改配置文件的時候,特別是安裝時文件分得很散,在配置radrails時要求輸入rails和rake的路徑。不過用了一段時間后熟悉了目錄的配置之后就要找程序文件就簡單多了,程序文件一般放在/usr/bin下。
不過有時一些軟件還是自己手動安裝好。第一有個權限問題,我的電腦還是主要用來做開發(fā)和學習的,而且又是我自己一個人用,對于Linux系統(tǒng)一向來的用戶安全機制對我來說有點多余。自動安裝的一些軟件,有時要設置權限,比較麻煩。第二就是版本問題,軟件源里的軟件雖說都是穩(wěn)定版本,但是我有時想要新一點的版本,比如Eclilpse3.3,NetBeans6。
在開發(fā)時最大的好處就是編碼問題在Linux下對utf-8的支持很好。還有好像一些ide在Linux下好像速度快一點,還有ruby也是,反應快了很多。正在試著Gvim+rails.vim的感覺。不過還是習慣eclipse。Linux下的軟件,要么是gtk的,要么是Qt,要么java的,感覺上至少比win32程序用起來覺得舒服一點,完全是心理作用。

最后有兩件事讓我不爽,一個是特效開不到,我的顯卡是Ati 的X1650,萬惡的ati官方驅(qū)動不支持XGL,開源驅(qū)動又不支持X1650。另一件事是我用eva和QQ2006上了幾天之后登錄的時候竟然說我“您的IP不能用低版本的QQ”,真是萬惡的騰訊。我最后找了飄云版的QQ2007(因為不帶鍵盤鎖)才能用wine跑QQ2007。用wine+qq的時候發(fā)現(xiàn)打字那個提示框很快會不見,我用的是fcitx,還有我不能發(fā)起語音請求,發(fā)起時qq會崩潰,別人發(fā)起我接受就正常。
Ubuntu好好玩。
這個暑假過了一大半了,過得比較郁悶。
今天是暑假第一次在家上網(wǎng),因為家里電腦壞了,主板拿去保修,修了20天后拿回來發(fā)現(xiàn)壞得更嚴重,又要不知道修到什么時候。(體驗了華碩的售后實在不敢恭維)只好上個星期叫同學在網(wǎng)上幫我買了塊二手主板,現(xiàn)在終于有電腦用一下。
暑假前已經(jīng)計劃好了要做什么,就是要把這個學期還沒有做好的幾個應用做好它,把picocontainer的1.0版的代碼分析和文檔漢化做完(在期末考試前因為無聊所以就做了這個事),還有再寫一些有趣的代碼,比如一個簡單的XML倉庫。
讀書的計劃提前完成了,看完了《領域模型驅(qū)動》,《web開發(fā)敏捷之道》(新鮮熱辣),《Ruby for rails》。看了一半《對象設計》,還有把《重構》又看了一遍。
還好帶了一些英語資料,手機里也存了一些英語的對話,每天背一篇短文,沒事練習聽著英語大聲念幾句。感覺還好。
今天看了一下敏捷大會的消息,又看了一下Thoughtworks里的強人的博客,覺得畢業(yè)后去那里的希望很渺茫。英語又差,技術和那些強人差了幾個數(shù)量級,看來要更加更加努力。
今晚想update一下rails,結果在升級gem時出現(xiàn)錯誤。搜索了一下找到答案
升級Rubygems到0.9.2時,會產(chǎn)生一個Error:
ERROR: While executing gem ... (NoMethodError)
undefined method `refresh' for #<......>
解決方法:
刪除掉source_cache文件,win是在$ruby安裝目錄\lib\ruby\gems\1.8,linux是在/usr/local/lib/ruby/gems/1.8/source_cache下。
運行gem update --system升級
轉(zhuǎn)載自:http://www.cnzxh.net/blog/Index.php?do=readArticle&articleId=145