http://thekaiway.com
原文地址
下午無聊翻譯一下,看看ruby官方怎么和java對比
相同點:
類似于java,在ruby中:
不同:
于java不同的是,在ruby中:
你不必編譯代碼,你只需要直接運行代碼。
Gui開發包不同。比如,ruby的用戶會嘗試WxRuby,FXRuby,Ruby-GNOME2,或者基于Ruby Tk庫。
你要在定義任何事物(像class)后面加上關鍵字end,而不是用花括號({})來包圍代碼塊。
使用了require代替了import。
所有的成員變量(屬性)都是private級的。在類外訪問任何事物要通過方法調用。
什么都是對象,包括2和3.14159。
沒有靜態類型檢查。
變量名都只是標簽,它們沒有與類型相關。
不用聲明變量類型,你只需要賦值給新的變量名就可以了(例子,a = [1,2,3] 相當于 int[] a = {1,2,3};)。
沒有類型強制轉換這個概念,只管調用方法就好了。
用 foo = Foo.new( "hi") 取代這樣新建對象的方法 Foo foo = new Foo( "hi" )。
構造方法一直都叫“initialize”,不是和class同名的方法。
使用“混入” 代替 “接口”。
YAML 比 XML 更受歡迎。
這里用nil代替null。
==和equals()方法處理方法不同。當你想要測試相等性時就使用 == 操作符(就像Java的equals()方法)。當要想要知道兩個對象是否是同一個時就使用equal?()方法(就像Java中的==)。
下午無聊翻譯一下,看看ruby官方怎么和java對比
相同點:
類似于java,在ruby中:
內存管理都是由GC(garbage collector)負責。
都是強類型語言。
都有public,private,protected的方法可見性之分。
都有嵌入式文檔工具(ruby的叫做RDoc)。rdoc生成的文檔看起來非常像由javadoc生成的。
不同:
于java不同的是,在ruby中:
你不必編譯代碼,你只需要直接運行代碼。
Gui開發包不同。比如,ruby的用戶會嘗試WxRuby,FXRuby,Ruby-GNOME2,或者基于Ruby Tk庫。
你要在定義任何事物(像class)后面加上關鍵字end,而不是用花括號({})來包圍代碼塊。
使用了require代替了import。
所有的成員變量(屬性)都是private級的。在類外訪問任何事物要通過方法調用。
什么都是對象,包括2和3.14159。
沒有靜態類型檢查。
變量名都只是標簽,它們沒有與類型相關。
不用聲明變量類型,你只需要賦值給新的變量名就可以了(例子,a = [1,2,3] 相當于 int[] a = {1,2,3};)。
沒有類型強制轉換這個概念,只管調用方法就好了。
用 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環境是很方便的。我自己寫了一個腳本:
直接把上面的一串保存在一個文本文件中,然后用sh命令執行就可以一步安裝完成了。
我發現網上很多在安裝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的,很多都是轉載,有的連轉載都不聲明,直接試都不試把錯的東西直接貼出來。
另有人說源里的gem很過時,其實也不會。
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
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命令執行就可以一步安裝完成了。
我發現網上很多在安裝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的,很多都是轉載,有的連轉載都不聲明,直接試都不試把錯的東西直接貼出來。
另有人說源里的gem很過時,其實也不會。
轉載自: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.
原文:它們只要為一組資源提供一個普通(并且簡單)的接口就行了
改為:它們只要為一組資源提供一個規則(并且簡單)的接口就行了
?? ??? ??? ??? ?
六、408頁
兩處的 /article/1 應為/articles/1
?? ??? ??? ??? ??? ??? ??? ??? ?
七、456頁
?? ??? ??? ??? ??? ??? ?
原文:默認配置下,cache 只有在產品環境下才生效
改為:默認配置下,cache 只有在生產環境下才生效
?? ??? ??? ??? ?
八、535頁
?? ??? ??? ??? ??? ??? ?
原文:這個輔助方法就是把 remote_function 一個remote_function
改為:這個輔助方法就是把一個remote_function
九、554頁
?? ??? ??? ??? ??? ??? ?
原文:表單可以這些方法交互以提交用戶輸入的內容
改為:表單可以與這些方法交互以提交用戶輸入的內容
?? ??? ??? ??? ?
十、106頁 代碼
?? ??? ??? ??? ?
@product = Product.find(params[:id])
應為?? ??? ?
product = Product.find(params[:id])
110、117相應的代碼也需要改正。
我自己還發現了:
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折騰了一下,終于如愿以償地開啟了Compiz Fusion的效果,并且用gDesklets在桌面加了一些實用工具挺好玩的。
過程也挺折騰的,先是安裝了ati的顯卡驅動后要裝nv的驅動碰到問題,然后再是開啟特效后窗口沒有了邊框。在安裝ati驅動后裝nv的驅動先要刪除幾個庫文件(libGL.so),看他提示哪個就刪除哪個,然后nv驅動才可以正常安裝。nv顯卡開特效的邊框的問題 只要運行一下sudo nvidia-xconfig --add-argb-glx-visuals就OK了。
現在上圖看看:



?

過程也挺折騰的,先是安裝了ati的顯卡驅動后要裝nv的驅動碰到問題,然后再是開啟特效后窗口沒有了邊框。在安裝ati驅動后裝nv的驅動先要刪除幾個庫文件(libGL.so),看他提示哪個就刪除哪個,然后nv驅動才可以正常安裝。nv顯卡開特效的邊框的問題 只要運行一下sudo nvidia-xconfig --add-argb-glx-visuals就OK了。
現在上圖看看:





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

最后有兩件事讓我不爽,一個是特效開不到,我的顯卡是Ati 的X1650,萬惡的ati官方驅動不支持XGL,開源驅動又不支持X1650。另一件事是我用eva和QQ2006上了幾天之后登錄的時候竟然說我“您的IP不能用低版本的QQ”,真是萬惡的騰訊。我最后找了飄云版的QQ2007(因為不帶鍵盤鎖)才能用wine跑QQ2007。用wine+qq的時候發現打字那個提示框很快會不見,我用的是fcitx,還有我不能發起語音請求,發起時qq會崩潰,別人發起我接受就正常。
Ubuntu好好玩。

這個暑假過了一大半了,過得比較郁悶。
今天是暑假第一次在家上網,因為家里電腦壞了,主板拿去保修,修了20天后拿回來發現壞得更嚴重,又要不知道修到什么時候。(體驗了華碩的售后實在不敢恭維)只好上個星期叫同學在網上幫我買了塊二手主板,現在終于有電腦用一下。
暑假前已經計劃好了要做什么,就是要把這個學期還沒有做好的幾個應用做好它,把picocontainer的1.0版的代碼分析和文檔漢化做完(在期末考試前因為無聊所以就做了這個事),還有再寫一些有趣的代碼,比如一個簡單的XML倉庫。
讀書的計劃提前完成了,看完了《領域模型驅動》,《web開發敏捷之道》(新鮮熱辣),《Ruby for rails》??戳艘话搿秾ο笤O計》,還有把《重構》又看了一遍。
還好帶了一些英語資料,手機里也存了一些英語的對話,每天背一篇短文,沒事練習聽著英語大聲念幾句。感覺還好。
今天看了一下敏捷大會的消息,又看了一下Thoughtworks里的強人的博客,覺得畢業后去那里的希望很渺茫。英語又差,技術和那些強人差了幾個數量級,看來要更加更加努力。
今天是暑假第一次在家上網,因為家里電腦壞了,主板拿去保修,修了20天后拿回來發現壞得更嚴重,又要不知道修到什么時候。(體驗了華碩的售后實在不敢恭維)只好上個星期叫同學在網上幫我買了塊二手主板,現在終于有電腦用一下。
暑假前已經計劃好了要做什么,就是要把這個學期還沒有做好的幾個應用做好它,把picocontainer的1.0版的代碼分析和文檔漢化做完(在期末考試前因為無聊所以就做了這個事),還有再寫一些有趣的代碼,比如一個簡單的XML倉庫。
讀書的計劃提前完成了,看完了《領域模型驅動》,《web開發敏捷之道》(新鮮熱辣),《Ruby for rails》??戳艘话搿秾ο笤O計》,還有把《重構》又看了一遍。
還好帶了一些英語資料,手機里也存了一些英語的對話,每天背一篇短文,沒事練習聽著英語大聲念幾句。感覺還好。
今天看了一下敏捷大會的消息,又看了一下Thoughtworks里的強人的博客,覺得畢業后去那里的希望很渺茫。英語又差,技術和那些強人差了幾個數量級,看來要更加更加努力。
今晚想update一下rails,結果在升級gem時出現錯誤。搜索了一下找到答案
升級Rubygems到0.9.2時,會產生一個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升級
轉載自:http://www.cnzxh.net/blog/Index.php?do=readArticle&articleId=145
升級Rubygems到0.9.2時,會產生一個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升級
轉載自:http://www.cnzxh.net/blog/Index.php?do=readArticle&articleId=145
摘要: JCreator是個輕量級的JAVA開發工具,對JAVA文件,JSP文件和XML文件編輯有比較好的支持。因為真的是很輕量級,所以功能也很弱,沒有 JUnit集成,也沒有代碼格式化。我自己也是用管了eclipse,其中的JUnit當然是最常用的功能,其余常用功能還有重構和代碼整理和格式化。有時要改一點代碼或者實驗一些代碼又不可能打開一個eclipse那么笨重的工具,但是用比如JCreator,又太弱。所以我就想著把JUnit和代碼格式化功能集成到JCreator中。
...... 閱讀全文
...... 閱讀全文
大名頂頂的JUnit是Kent Beck和Erich Gamma編寫的用java語言實現的單元測試框架。
JUnit3
JUnit3的用法比較簡單,就是實現繼承框架中TestCase的測試用例(一般實踐中命名為XxxTest),然后在其中加入以testXxx命名的測試方法。然后就可以用JUnit框架中的Runner運行測試。
而且在JUnit的測試中如果要加入初始化方法就把方法命名為setup(),如果要加入清理方法就把方法命名為downDown()。
如果要將幾個測試用例作為一個集合一次運行就實現一個有public static Test suite()方法簽名的方法,在其中創建一個TestSuite實例,然后調用方法addTest把一個個測試用例加入到集合中。
JUnit4
JUnit4在3的基礎上融入了JDK1.5的注釋特性,大大得改進和強化了JUnit框架。將測試方法由之前的通過繼承TestCase確定測試類和通過命名方法確定測試方法的測試編寫方式轉變為由注釋確定這些方面。常用的注釋:
@Before:初始化方法
@After:清理資源
@Test:測試方法
@BeforeClass:針對所有測試,只執行一次,且必須為static void
@AfterClass:針對所有測試,只執行一次,且必須為static void
只要有在類中要測試的方法前加入@Test,這個類就是一個測試用例。而加了對應注釋的方法就是各個功能方法,比如初始化和清理。
JUnit4相對以前的增強體現在以下的注釋中:
@Test(expected=Exception.class):異常測試,斷言異常必定產生
@Test(timeout=n):要求測試在允許超時時間(n秒)中完成
@Ignore:忽略某個測試方法
@Parameters:提供參數測試,也就是用一組參數測試代碼
而且JUint4對ant1.7以下的版本有兼容性問題。
以上講的JUnit用法就是最最常用用法。
有機會可以接到一個小型商務平臺的項目,最近就開始做一個平臺的一些基礎組件,比如新聞發布模塊和用戶管理模塊。開發團隊只有我和另一個同學,一共兩個人。而我們對XP開發過程比較有興趣,剛剛好可以進行結對編程和TDD。
開發已經進行了一個星期左右,已完成新聞發表模塊中的新聞管理模塊。因為完全沒有經驗,而且開發時間不夠(只能在沒有課的上午或者下午開發),開發進度很慢。但是自我感覺不錯,因為體驗了以前沒有體驗過的開發過程,從中學到了很多東西。
在整個開發過程中,我們始終堅持“測試先行”原則。首先列出要完成的任務清單,用JUnit寫出相應測試代碼,然后運行測試,出錯,偽實現,重構。一般都是兩個人,一個人持有鍵盤,寫一個鐘左右的代碼,然后一邊討論一邊寫代碼。在完成了一段代碼之后有種神奇的感覺,好像不知不覺中代碼就被寫出來了,這可能是TDD神奇的地方。先寫出符合需求的測試,接著按照測試來寫代碼,就是這么簡單。
不過完成了新聞發布模塊之后,經過討論,決定下一步完成前臺的UI。對于UI的開發,平時例子學習了不少,自己寫的toycode也寫了一些,但是在實際應用開發中對我們還是比較陌生。一開始準備用簡單的JSP和Servlet來做前端,但是在前端控制器中代碼實現有點混亂,現在就卡在UI這里了,最后經過討論決定用WebWork作前端控制器。
以前在看K.Back的《解析極限編程》時,看到他把結對編程描述的很神奇:
結對程序員:
五一應該還會繼續完成這個項目,而且是一邊做一邊學。
開發已經進行了一個星期左右,已完成新聞發表模塊中的新聞管理模塊。因為完全沒有經驗,而且開發時間不夠(只能在沒有課的上午或者下午開發),開發進度很慢。但是自我感覺不錯,因為體驗了以前沒有體驗過的開發過程,從中學到了很多東西。
在整個開發過程中,我們始終堅持“測試先行”原則。首先列出要完成的任務清單,用JUnit寫出相應測試代碼,然后運行測試,出錯,偽實現,重構。一般都是兩個人,一個人持有鍵盤,寫一個鐘左右的代碼,然后一邊討論一邊寫代碼。在完成了一段代碼之后有種神奇的感覺,好像不知不覺中代碼就被寫出來了,這可能是TDD神奇的地方。先寫出符合需求的測試,接著按照測試來寫代碼,就是這么簡單。
不過完成了新聞發布模塊之后,經過討論,決定下一步完成前臺的UI。對于UI的開發,平時例子學習了不少,自己寫的toycode也寫了一些,但是在實際應用開發中對我們還是比較陌生。一開始準備用簡單的JSP和Servlet來做前端,但是在前端控制器中代碼實現有點混亂,現在就卡在UI這里了,最后經過討論決定用WebWork作前端控制器。
以前在看K.Back的《解析極限編程》時,看到他把結對編程描述的很神奇:
結對程序員:
- 使彼此都專注于任務
- 一起頭腦風暴,討論系統的精化
- 理清思路
- 在搭檔陷入困境時要主動,這樣才能減少挫折
- 使彼此都對團隊的實踐負責
五一應該還會繼續完成這個項目,而且是一邊做一邊學。
摘要: 假期學完了Servlet和JSP,現在來復習一下。
Servlet和JSP,作為JavaEE的重要技術之一,表現層的核心技術之一。其中包括了什么,如何使用。
第一部分 技術背景:
...............................................
(待續未完) 閱讀全文
Servlet和JSP,作為JavaEE的重要技術之一,表現層的核心技術之一。其中包括了什么,如何使用。
第一部分 技術背景:
...............................................
(待續未完) 閱讀全文
這個學期的學習要好好規劃。盡量提高時間的利用率,讓自己學習生活得更加有效率。
學習內容:
- TDD測試驅動開發方法
- 6種類別重構手法
- 設計模式的完整學習(主要是除了12個核心模式之前的11個)
- UML和OOA,OOD
- WebWork
- Spring
- Ioc容器,AOP
- JUnit技巧(結合TDD的核心概念)
- 敏捷和XP的內容
- J2EE核心模式
- Hibernate學習
- 用Java重寫以前用C++寫過的一個圖書館管理系統(LMS)
- 用Java的XML,JDBC包寫一些toy code
每個星期把計劃寫在一張紙上,然后每天完成計劃后作一個標記。
一天一小步,一星期一中步,一個月就可以踏出一大步。
OOD應該遵循的十一個基本原則,摘取自Robert C. Martin的The Principles of OOD一文 http://www.butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod
類設計原則:
- SRP,單一職責原則,一個類應該有且只有一個改變的理由。
- OCP,開放封閉原則,你應該能夠不用修改原有類就能擴展一個類的行為。
- LSP,Liskov替換原則,派生類要與其基類自相容。
- DIP,依賴倒置原則,依賴于抽象而不是實現。
- ISP,接口隔離原則,客戶只要關注它們所需的接口。
包內聚性原則:
- REP,重用發布等價原則,重用的粒度就是發布的粒度。
- CCP,共同封閉原則,包中的所有類對于同一類性質的變化應該是共同封閉的。?
- CRP,共同重用原則,一個包中的所有類應該是共同重用的。
包耦合性原則:
- ADP,無環依賴原則,在包的依賴關系圖中不允許存在環。
- SDP,穩定依賴原則,朝著穩定的方向進行依賴。
- SAP,穩定抽象原則,包的抽象程度應該和其穩定程度一致
我的JAVA之路就是從考SCJP開始。
起源:
一切都是源于CSDN上的SCJP的廣告,那是在國慶長假前幾天看到的。在2006年下半年,學生考SCJP是優惠價450。那時就想著趁著這個時機考個證來傍身,優惠800哦。順便可以開始學習JAVA。
開始學習JAVA:
然后就在網上買了幾本書,都是很多人都推薦的《Thinking in JAVA 3e》,《Core Java 7e》1,2卷,《Effective Java》。那時還完全不懂,不買Effective JAVA早知道買Java Puzzlers,因為其實Puzzlers是Effective的第二版,兩位作者都是就職于Google的JAVA達人。而另外兩本書用來入門還不錯,兩本書都有大量的代碼例子,看代碼來學習也許是最好的學習編程的方法了。TIJ這本書講了很多編程技巧和JAVA的一些原理,而CJ這本書講了很多在應用方面的技巧,兩本書都很生動很有趣。
以前C++上我花了很大的精力在學習,一開始接觸電腦就在學C++,有兩年的C++學習時間。所以對JAVA的語法和面向對象概念能比較好的適應。對C++和JAVA比較直觀的比較就是,JAVA的庫比起C++的標準強大太多太多了,C++只提供了一些常見的數據結構和算法,而Java幾乎提供了所有的基礎功能。還有JAVA的API文檔相當齊全,對方方面面都講得很詳細,而且有中文化,這相對于學習速度有很大提高。
小插曲:
一開始我就計劃好,用一個半月的時間學習JAVA基本的知識,然后用一個月的時間復習考試。如果計劃延誤了就算了,不考了。計劃其實不是很順利,10月份因為學生會很多事要做,而且剛好學校要進行本科評估,抓的比較嚴不可以太常逃課,又剛剛好有朋友拉我去作一些商業活動。這時忽然因為和女朋友吵架了,所以心情很不好,有些自暴自棄,一下子把身邊的事全部推了,把學生會的職務也辭了(在他們的挽留下雖然最后沒有辭成功只是暫時離開學生會),什么都不理,專心地學習。結果進度又拉了上來,大概在十一月底就完成了基本的學習。
復習:
在十一月份買了那本Sun Certified Programmer for Java 5(Exam 310-055),這是對考試有極大幫助的一本書。這本書的作者就是大名鼎鼎倍受好評的《Head First》系列的作者,也是SCJP的出題人。這本書對055考試中每個考點,哪些必考哪些不考,而且對知識做了很細致的整理。里面的題目也出的很好,基本每個考點都有十幾道題目,我基本可以維持在六十多的正確率。隨書還附送一個模擬器,模擬真正的考試環境。之后因為對Lang包中的一些類還有一些疑惑就買了一本《The Java Programming Language 4e》。買來這本書初看上去好像講得很泛很蜻蜓點水式,但是看下去之后發現這正是這本書的最大優點,幾乎對JAVA語言的每個方面都有一個明確的概念,這對理解各個細節有很大作用。
QQ群:
在一次偶然的機會,在一個論壇上看到了有一些準備考SCJP的人組織的QQ群,在里面認識了一些人。有些考過的,有些和我一樣準備考的。在這個群里經常有人提問題,之后就是一大群人在這里熱烈地在討論,氣氛好不熱烈。這可能也是我考試成功的一個因素,不過我倒是在群里經常為人回答問題的那個
。
報名:
在十二月份,就去問了一些通過考試的人,具體怎樣報名,考試時怎樣。最后決定去廣州天河那里考試,因為我爸爸在那里工作。而時間定在十二月份倒數第二個星期五。選在倒數第二個星期是因為為了給自己多點時間準備,而不選最后一個星期是要以防萬一。結果最后一個星期真的發生了很大件事--地震,這次地震使得溝通中國大陸和美洲的光纖斷了,考試中心也因為這樣無法正常考試。
因為這次考試優惠活動sun要求提前一個星期去報名。于是我在女朋友的陪伴下一起去廣州報名。報名時,我就選了055的中文考試。報完名回來之后開始后悔了,聽到有些人說中文是用機器翻譯的有些地方根本看不懂在說什么,還有后悔報了055因為發現知道考scjp的人幾乎都是報035,而有幾個報055的好像都沒有通過。在考試前就這么一直在想來想去,弄到自己很緊張。
最后沖刺:
在最后一個星期里,我一直都很緊張。我把那本scjp考試指南每一章最后的總結都看了一遍,把以前做錯的題又在看了一下研究一下自己為什么錯,哪個方面的知識點不清楚然后再鞏固一下。然后做一下模擬器,感受一下考試時的感覺。做了一次模擬器之后很失望,因為第一次做了之后成績只有百分之四十多而已,離考試通過的分數還有十個百分點。這件事使我自己更加緊張。但最后兩天,女朋友特地跑過來和我聊天開導我,使我自己放松了很多。在倒數第二天因為該看的也看完了,所以沒事看了一下035的TestKing。
決戰考試:
我是提前一天去廣州的,準備第二天早上就去考試。去到廣州之后本來想著在我爸宿舍那里再看一下書,但是下午睡了一覺然后吃了飯后就自己去了購書中心那里逛了幾個鐘。結果腦子里都裝了很多spring,stucts的東西,整個晚上都在思考這些技術。晚上回爸爸宿舍那里,爸爸和一些同事就打邊爐和喝酒,弄到很晚快一點鐘才去睡覺,好像躺了一個鐘左右才睡著。
第二天早上起來之后就發現頭痛,開始有點慌了,怕頭痛等一下考試發揮不好。我就吃了很多薄荷糖,這是一直的習慣,一緊張就要吃薄荷糖。在八點半時就打了輛的去考場那里。到了那里之后,那個招待的人還說:“哇,正好九點,那么準時。”她說完后就去考試那間房間里開電腦下載試卷??荚嚽斑€要簽一張考試協議書,保證不能作弊,然后發一張做了標記的草稿紙。有一個人是和我同時考的,他比我晚來了十分鐘左右。和他聊了一下,原來他是從事JAVA開發的。他聽說我只是個大二的學生,就帶有一點嘲諷的口氣對我“SCJP是需要實際開發經驗的?!币宦犓@么說,我就懷疑這個人沒什么技術的,之后他就去和招待小姐聊天。而且他還問有沒有api文檔可以看,這時我可以肯定他只是一個白癡??荚囀窃谝婚g有幾部電腦的房間里進行的,房間里有監視器,考試時只有考生沒有監考人員。
開始考試了,一開始要回答一些關于你對JAVA技術的了解情況,比如你對某個方面的掌握情況如何。有人說這會影響你考試試題的難度,我覺得這不大可能,因為試題一早就下載到考試系統中了。再仔細研究一下,發現windows的一些功能鍵都被攔截了,比如任務管理器和win鍵?;卮鹜昴切┱{查問題就開始答題了,73道題目之外還有幾個調查問題,比如你是在哪里知道sun的scjp考試之類的問題。
我的答題策略是按照SCJP學習指南里講的策略。第一遍先把簡單得可以一下子得出答案的題作完,第二遍把第一遍沒有做的題寫完,第三遍把做了標記的題目再作一次,第四遍檢查??荚囍邪l現中文漢化的還可以,有幾道題翻譯的有點怪,還有一道拖放題,題目竟然因為空間不夠寫了一半,那道題我記得是考線程(Thread)的。還有拖放題有些問題,就是只要打開了之后不管你有沒有回答完系統都認為你已經回答了,而且在回答完之后再次打開,之前填的答案會丟失,所以每道我都做了記號并把答案記下來。完成之后考試時間還剩一個鐘多一點,我狠心地按下了完成按鈕結束考試。從決定按下到走出考試的房間知道結果之前,心一直猛跳,很緊張很緊張。走去考試的房間后,就向那個負責安排考試的那個人說我考完了,她叫我稍等一下,她去拿打印報告??荚嚧鸢甘前l送到一個考試總的中心,然后分析答案,再傳真考試報告到你考試的那個考試中心的,這個過程總的時間只有幾秒。過了一分鐘左右,我看到她拿來了成績報告,她先在上面蓋一些章。我很緊張地問她過了沒有,她輕描淡寫說過了。等到我拿到考試報告時,有點失望,因為只考了67%,只比通過百分率高了9個百分點,我懷疑是我在最后檢查時把很多題目改錯了。走出考試中心后我馬上打電話給我女朋友和媽媽,告訴他們結果。那時真的很興奮。而走出考試那個房間時,另外一個考試那個人才回答到五十幾題,他在考試時在很多題目都是一直拿鼠標在答案選項那里一直猛點。我有點幸災樂禍,估計他是通不過。
收獲體會:
通過這次考試我比較好得掌握了JAVA語言的一些基礎(只是一些而已),其實在一邊學習復習時,寫了很多toy code(比如一些文件操作工具等),充分地理解了一些用法和機制。打下了比較好的JAVA基礎。
不過通過考試之后會更累。因為還有很多很多JAVA知識要學習,就像讀的書越多,學的東西越多,越會發現自己的無知,然后又去讀更加多的書學習更多的知識。之后馬上就指定新的學習計劃和學習任務,如,JDBC,XML編程,JDNI,JSP和Servlet,EJB,各種框架,等等。
考到這個證之后好像沒什么成功感,因為發現很多人都考了這個證,所以可能之后會考SCEA(SUN認證架構師)。有些人為了SCJP,報了035,然后把時間都用在背題上,之后通過考試之后就到處炫耀。因為035的題庫網上有,而且才只有二百多道題左右,所以很多人都可以通過這個方法輕松的通過這些考試,以致于把SCJP這個認證的可信度真實度都拉低了。055現在還沒有題庫,而且考試范圍比035多了4個考試內容,所以比較少人考。
感謝:
能夠通過這次的考試,除了我自己的努力,也離不開女朋友和爸爸媽媽的支持,謝謝他們。特別是女朋友在我緊張迷茫時開導了我,鼓勵了我,讓我能夠用比較好的心態面對考試。婷婷我愛你。
起源:
一切都是源于CSDN上的SCJP的廣告,那是在國慶長假前幾天看到的。在2006年下半年,學生考SCJP是優惠價450。那時就想著趁著這個時機考個證來傍身,優惠800哦。順便可以開始學習JAVA。
開始學習JAVA:
然后就在網上買了幾本書,都是很多人都推薦的《Thinking in JAVA 3e》,《Core Java 7e》1,2卷,《Effective Java》。那時還完全不懂,不買Effective JAVA早知道買Java Puzzlers,因為其實Puzzlers是Effective的第二版,兩位作者都是就職于Google的JAVA達人。而另外兩本書用來入門還不錯,兩本書都有大量的代碼例子,看代碼來學習也許是最好的學習編程的方法了。TIJ這本書講了很多編程技巧和JAVA的一些原理,而CJ這本書講了很多在應用方面的技巧,兩本書都很生動很有趣。
以前C++上我花了很大的精力在學習,一開始接觸電腦就在學C++,有兩年的C++學習時間。所以對JAVA的語法和面向對象概念能比較好的適應。對C++和JAVA比較直觀的比較就是,JAVA的庫比起C++的標準強大太多太多了,C++只提供了一些常見的數據結構和算法,而Java幾乎提供了所有的基礎功能。還有JAVA的API文檔相當齊全,對方方面面都講得很詳細,而且有中文化,這相對于學習速度有很大提高。
小插曲:
一開始我就計劃好,用一個半月的時間學習JAVA基本的知識,然后用一個月的時間復習考試。如果計劃延誤了就算了,不考了。計劃其實不是很順利,10月份因為學生會很多事要做,而且剛好學校要進行本科評估,抓的比較嚴不可以太常逃課,又剛剛好有朋友拉我去作一些商業活動。這時忽然因為和女朋友吵架了,所以心情很不好,有些自暴自棄,一下子把身邊的事全部推了,把學生會的職務也辭了(在他們的挽留下雖然最后沒有辭成功只是暫時離開學生會),什么都不理,專心地學習。結果進度又拉了上來,大概在十一月底就完成了基本的學習。
復習:
在十一月份買了那本Sun Certified Programmer for Java 5(Exam 310-055),這是對考試有極大幫助的一本書。這本書的作者就是大名鼎鼎倍受好評的《Head First》系列的作者,也是SCJP的出題人。這本書對055考試中每個考點,哪些必考哪些不考,而且對知識做了很細致的整理。里面的題目也出的很好,基本每個考點都有十幾道題目,我基本可以維持在六十多的正確率。隨書還附送一個模擬器,模擬真正的考試環境。之后因為對Lang包中的一些類還有一些疑惑就買了一本《The Java Programming Language 4e》。買來這本書初看上去好像講得很泛很蜻蜓點水式,但是看下去之后發現這正是這本書的最大優點,幾乎對JAVA語言的每個方面都有一個明確的概念,這對理解各個細節有很大作用。
QQ群:
在一次偶然的機會,在一個論壇上看到了有一些準備考SCJP的人組織的QQ群,在里面認識了一些人。有些考過的,有些和我一樣準備考的。在這個群里經常有人提問題,之后就是一大群人在這里熱烈地在討論,氣氛好不熱烈。這可能也是我考試成功的一個因素,不過我倒是在群里經常為人回答問題的那個

報名:
在十二月份,就去問了一些通過考試的人,具體怎樣報名,考試時怎樣。最后決定去廣州天河那里考試,因為我爸爸在那里工作。而時間定在十二月份倒數第二個星期五。選在倒數第二個星期是因為為了給自己多點時間準備,而不選最后一個星期是要以防萬一。結果最后一個星期真的發生了很大件事--地震,這次地震使得溝通中國大陸和美洲的光纖斷了,考試中心也因為這樣無法正常考試。
因為這次考試優惠活動sun要求提前一個星期去報名。于是我在女朋友的陪伴下一起去廣州報名。報名時,我就選了055的中文考試。報完名回來之后開始后悔了,聽到有些人說中文是用機器翻譯的有些地方根本看不懂在說什么,還有后悔報了055因為發現知道考scjp的人幾乎都是報035,而有幾個報055的好像都沒有通過。在考試前就這么一直在想來想去,弄到自己很緊張。
最后沖刺:
在最后一個星期里,我一直都很緊張。我把那本scjp考試指南每一章最后的總結都看了一遍,把以前做錯的題又在看了一下研究一下自己為什么錯,哪個方面的知識點不清楚然后再鞏固一下。然后做一下模擬器,感受一下考試時的感覺。做了一次模擬器之后很失望,因為第一次做了之后成績只有百分之四十多而已,離考試通過的分數還有十個百分點。這件事使我自己更加緊張。但最后兩天,女朋友特地跑過來和我聊天開導我,使我自己放松了很多。在倒數第二天因為該看的也看完了,所以沒事看了一下035的TestKing。
決戰考試:
我是提前一天去廣州的,準備第二天早上就去考試。去到廣州之后本來想著在我爸宿舍那里再看一下書,但是下午睡了一覺然后吃了飯后就自己去了購書中心那里逛了幾個鐘。結果腦子里都裝了很多spring,stucts的東西,整個晚上都在思考這些技術。晚上回爸爸宿舍那里,爸爸和一些同事就打邊爐和喝酒,弄到很晚快一點鐘才去睡覺,好像躺了一個鐘左右才睡著。
第二天早上起來之后就發現頭痛,開始有點慌了,怕頭痛等一下考試發揮不好。我就吃了很多薄荷糖,這是一直的習慣,一緊張就要吃薄荷糖。在八點半時就打了輛的去考場那里。到了那里之后,那個招待的人還說:“哇,正好九點,那么準時。”她說完后就去考試那間房間里開電腦下載試卷??荚嚽斑€要簽一張考試協議書,保證不能作弊,然后發一張做了標記的草稿紙。有一個人是和我同時考的,他比我晚來了十分鐘左右。和他聊了一下,原來他是從事JAVA開發的。他聽說我只是個大二的學生,就帶有一點嘲諷的口氣對我“SCJP是需要實際開發經驗的?!币宦犓@么說,我就懷疑這個人沒什么技術的,之后他就去和招待小姐聊天。而且他還問有沒有api文檔可以看,這時我可以肯定他只是一個白癡??荚囀窃谝婚g有幾部電腦的房間里進行的,房間里有監視器,考試時只有考生沒有監考人員。
開始考試了,一開始要回答一些關于你對JAVA技術的了解情況,比如你對某個方面的掌握情況如何。有人說這會影響你考試試題的難度,我覺得這不大可能,因為試題一早就下載到考試系統中了。再仔細研究一下,發現windows的一些功能鍵都被攔截了,比如任務管理器和win鍵?;卮鹜昴切┱{查問題就開始答題了,73道題目之外還有幾個調查問題,比如你是在哪里知道sun的scjp考試之類的問題。
我的答題策略是按照SCJP學習指南里講的策略。第一遍先把簡單得可以一下子得出答案的題作完,第二遍把第一遍沒有做的題寫完,第三遍把做了標記的題目再作一次,第四遍檢查??荚囍邪l現中文漢化的還可以,有幾道題翻譯的有點怪,還有一道拖放題,題目竟然因為空間不夠寫了一半,那道題我記得是考線程(Thread)的。還有拖放題有些問題,就是只要打開了之后不管你有沒有回答完系統都認為你已經回答了,而且在回答完之后再次打開,之前填的答案會丟失,所以每道我都做了記號并把答案記下來。完成之后考試時間還剩一個鐘多一點,我狠心地按下了完成按鈕結束考試。從決定按下到走出考試的房間知道結果之前,心一直猛跳,很緊張很緊張。走去考試的房間后,就向那個負責安排考試的那個人說我考完了,她叫我稍等一下,她去拿打印報告??荚嚧鸢甘前l送到一個考試總的中心,然后分析答案,再傳真考試報告到你考試的那個考試中心的,這個過程總的時間只有幾秒。過了一分鐘左右,我看到她拿來了成績報告,她先在上面蓋一些章。我很緊張地問她過了沒有,她輕描淡寫說過了。等到我拿到考試報告時,有點失望,因為只考了67%,只比通過百分率高了9個百分點,我懷疑是我在最后檢查時把很多題目改錯了。走出考試中心后我馬上打電話給我女朋友和媽媽,告訴他們結果。那時真的很興奮。而走出考試那個房間時,另外一個考試那個人才回答到五十幾題,他在考試時在很多題目都是一直拿鼠標在答案選項那里一直猛點。我有點幸災樂禍,估計他是通不過。
收獲體會:
通過這次考試我比較好得掌握了JAVA語言的一些基礎(只是一些而已),其實在一邊學習復習時,寫了很多toy code(比如一些文件操作工具等),充分地理解了一些用法和機制。打下了比較好的JAVA基礎。
不過通過考試之后會更累。因為還有很多很多JAVA知識要學習,就像讀的書越多,學的東西越多,越會發現自己的無知,然后又去讀更加多的書學習更多的知識。之后馬上就指定新的學習計劃和學習任務,如,JDBC,XML編程,JDNI,JSP和Servlet,EJB,各種框架,等等。
考到這個證之后好像沒什么成功感,因為發現很多人都考了這個證,所以可能之后會考SCEA(SUN認證架構師)。有些人為了SCJP,報了035,然后把時間都用在背題上,之后通過考試之后就到處炫耀。因為035的題庫網上有,而且才只有二百多道題左右,所以很多人都可以通過這個方法輕松的通過這些考試,以致于把SCJP這個認證的可信度真實度都拉低了。055現在還沒有題庫,而且考試范圍比035多了4個考試內容,所以比較少人考。
感謝:
能夠通過這次的考試,除了我自己的努力,也離不開女朋友和爸爸媽媽的支持,謝謝他們。特別是女朋友在我緊張迷茫時開導了我,鼓勵了我,讓我能夠用比較好的心態面對考試。婷婷我愛你。
摘要: 摘要
Cactus是Jakarta的子項目之一,是對JUnit的一個擴展。Catus是Java EE容器內測試的事實標準。
Cactus是針對集成單元測試的開源框架。可以在容器內對JAVA EE服務器端組件(如JSP,Servlet,EJB,數據庫等)進行細粒度的單元測試。
Cactus工作原理。。。
閱讀全文
Cactus是Jakarta的子項目之一,是對JUnit的一個擴展。Catus是Java EE容器內測試的事實標準。
Cactus是針對集成單元測試的開源框架。可以在容器內對JAVA EE服務器端組件(如JSP,Servlet,EJB,數據庫等)進行細粒度的單元測試。
Cactus工作原理。。。
閱讀全文
?
?
按農歷算,今天是今年的第一天,今天我的Blog也開通啦。
Blog是記錄自己成長過程的地方,是發表自己對各種技術的看法的地方,是推廣自己想法的地方。
記得有人說過有技術還不行,還要能把自己對技術的想法和感悟寫出來。侯捷有句很經典的話:“我手寫我心!”
新年的愿望:
我要更加努力,變得更強!