軟件絕對領(lǐng)域

          2007年4月28日

          http://thekaiway.com
          posted @ 2007-11-12 16:53 _Kai_ 閱讀(274) | 評論 (0)編輯 收藏
          原文地址
          下午無聊翻譯一下,看看ruby官方怎么和java對比

          相同點:

          類似于java,在ruby中:

            內(nèi)存管理都是由GC(garbage collector)負(fù)責(zé)。
            都是強類型語言。
            都有public,private,protected的方法可見性之分。
            都有嵌入式文檔工具(ruby的叫做RDoc)。rdoc生成的文檔看起來非常像由javadoc生成的。


          不同:

          于java不同的是,在ruby中:

          你不必編譯代碼,你只需要直接運行代碼。
          Gui開發(fā)包不同。比如,ruby的用戶會嘗試WxRuby,F(xiàn)XRuby,Ruby-GNOME2,或者基于Ruby Tk庫。
          你要在定義任何事物(像class)后面加上關(guān)鍵字end,而不是用花括號({})來包圍代碼塊。
          使用了require代替了import。
          所有的成員變量(屬性)都是private級的。在類外訪問任何事物要通過方法調(diào)用。
          什么都是對象,包括2和3.14159。
          沒有靜態(tài)類型檢查。
          變量名都只是標(biāo)簽,它們沒有與類型相關(guān)。
          不用聲明變量類型,你只需要賦值給新的變量名就可以了(例子,a = [1,2,3] 相當(dāng)于 int[] a = {1,2,3};)。
          沒有類型強制轉(zhuǎn)換這個概念,只管調(diào)用方法就好了。
          用 foo = Foo.new( "hi") 取代這樣新建對象的方法 Foo foo = new Foo( "hi" )。
          構(gòu)造方法一直都叫“initialize”,不是和class同名的方法。
          使用“混入” 代替 “接口”。
          YAML 比 XML 更受歡迎。
          這里用nil代替null。
          ==和equals()方法處理方法不同。當(dāng)你想要測試相等性時就使用 == 操作符(就像Java的equals()方法)。當(dāng)要想要知道兩個對象是否是同一個時就使用equal?()方法(就像Java中的==)。
          posted @ 2007-10-07 19:55 _Kai_ 閱讀(616) | 評論 (0)編輯 收藏
               摘要: 早上看了Ruby論壇中有人(blackanger)寫的TDD by Ex這本書里的資金例子,自己也想寫一寫。和他不同,我是全過程詳細(xì)寫出來。第一次用Ruby寫代碼,第一次用Ruby的Unit框架,而且下午睡醒后迷迷糊糊寫的,可能有很多錯誤,請多多指正。  閱讀全文
          posted @ 2007-10-03 21:02 _Kai_ 閱讀(841) | 評論 (0)編輯 收藏
          在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一點關(guān)系都沒有。正確的應(yīng)該是rubygems包。不知道為什么到處有人都是寫sudo?apt-get?install gem的,很多都是轉(zhuǎn)載,有的連轉(zhuǎn)載都不聲明,直接試都不試把錯的東西直接貼出來。

          另有人說源里的gem很過時,其實也不會。
          posted @ 2007-08-31 12:28 _Kai_ 閱讀(1987) | 評論 (0)編輯 收藏


          轉(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] 應(yīng)為flash.now[:notice]

          四、310頁
          ?? ??? ??? ??? ??? ??? ?
          列表中第二個“使用save方法時”應(yīng)為“使用save!方法時“
          ?? ??? ??? ??? ??? ??? ?
          五、407頁
          ?? ??? ??? ??? ??? ??? ?
          英文:Instead, they provide a regular (and simple) interface to a set of resources.
          原文:它們只要為一組資源提供一個普通(并且簡單)的接口就行了
          改為:它們只要為一組資源提供一個規(guī)則(并且簡單)的接口就行了
          ?? ??? ??? ??? ?
          六、408頁

          兩處的 /article/1 應(yīng)為/articles/1
          ?? ??? ??? ??? ??? ??? ??? ??? ?
          七、456頁
          ?? ??? ??? ??? ??? ??? ?
          原文:默認(rèn)配置下,cache 只有在產(chǎn)品環(huán)境下才生效
          改為:默認(rèn)配置下,cache 只有在生產(chǎn)環(huán)境下才生效
          ?? ??? ??? ??? ?
          八、535頁
          ?? ??? ??? ??? ??? ??? ?
          原文:這個輔助方法就是把 remote_function 一個remote_function
          改為:這個輔助方法就是把一個remote_function

          九、554頁
          ?? ??? ??? ??? ??? ??? ?
          原文:表單可以這些方法交互以提交用戶輸入的內(nèi)容
          改為:表單可以與這些方法交互以提交用戶輸入的內(nèi)容
          ?? ??? ??? ??? ?
          十、106頁 代碼
          ?? ??? ??? ??? ?
          @product = Product.find(params[:id])
          應(yīng)為?? ??? ?
          product = Product.find(params[:id])
          110、117相應(yīng)的代碼也需要改正。


          我自己還發(fā)現(xiàn)了:
          P119
          代碼

          ??? <%= form_remote_tag :url => { :action => :add_to_cart, :id => product } %> ?
          ???? <%= submit_tag "Add to Cart" %> ?
          ??? <% end %> ?
          應(yīng)為:
          代碼
          ?? <%= form_remote_tag :url => { :action => :add_to_cart, :id => product } %> ?
          ????? <%= submit_tag "Add to Cart" %> ?
          ?? <%= end_form_tag %> ?


          106頁
          代碼
          @product = Product.find(params[:id])
          應(yīng)該是
          product = Product.find(params[:id])
          ?? ??? ??? ??? ??? ??? ?
          ?? ??? ??? ??? ??? ??? ?

          ?? ??? ??? ??? ?

          posted @ 2007-08-28 16:07 _Kai_ 閱讀(457) | 評論 (2)編輯 收藏
          前天用我的X1650GT和同學(xué)換了一塊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)在上圖看看:









          ?




          posted @ 2007-08-28 16:03 _Kai_ 閱讀(644) | 評論 (0)編輯 收藏
          用了Ubuntu7.04一個多星期了覺得挺很不錯,很多方面比在windows下好很多。方便的硬盤安裝。一開始是在家里的電腦安裝的,之后把硬盤拿到學(xué)校的電腦一插上去就可以用了,只需在命令行界面配置顯卡和校園網(wǎng)就OK了。Ubuntu的硬件的兼容性真是沒得說,還有人還制作了一個可以放在U盤的精簡版本。Linux的整個系統(tǒng)加上所有的常用軟件比windows加上所有常用軟件的磁盤占用小很多。

          記得剛剛接觸電腦的時候就用了一段時間的RH9,覺得很神秘很帥。后來來到學(xué)校后發(fā)現(xiàn)校園網(wǎng)上不到網(wǎng),用xrgsu要么掉線要么上不到,試了sesu和fc都是這樣。因為萬惡的銳捷又不能用虛擬機上網(wǎng)。這次是因為有個師兄用ubuntu7.04成功的上到了所以我又用回了Linux,用回了久違的VI。我不知為什么學(xué)了vi和emacs兩個編輯器,但是一直都用不慣emacs,vi就用得很順手。Linux下的編輯器就好在可以雙手不離開鍵盤,不用去用到鼠標(biāo),不過太久沒有用了,時不時手還是會想去摸鼠標(biāo),然后想一想手又縮回來按快捷鍵。

          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下。

          不過有時一些軟件還是自己手動安裝好。第一有個權(quán)限問題,我的電腦還是主要用來做開發(fā)和學(xué)習(xí)的,而且又是我自己一個人用,對于Linux系統(tǒng)一向來的用戶安全機制對我來說有點多余。自動安裝的一些軟件,有時要設(shè)置權(quán)限,比較麻煩。第二就是版本問題,軟件源里的軟件雖說都是穩(wěn)定版本,但是我有時想要新一點的版本,比如Eclilpse3.3,NetBeans6。

          在開發(fā)時最大的好處就是編碼問題在Linux下對utf-8的支持很好。還有好像一些ide在Linux下好像速度快一點,還有ruby也是,反應(yīng)快了很多。正在試著Gvim+rails.vim的感覺。不過還是習(xí)慣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好好玩。

          posted @ 2007-08-22 17:22 _Kai_ 閱讀(603) | 評論 (0)編輯 收藏
          這個暑假過了一大半了,過得比較郁悶。

          今天是暑假第一次在家上網(wǎng),因為家里電腦壞了,主板拿去保修,修了20天后拿回來發(fā)現(xiàn)壞得更嚴(yán)重,又要不知道修到什么時候。(體驗了華碩的售后實在不敢恭維)只好上個星期叫同學(xué)在網(wǎng)上幫我買了塊二手主板,現(xiàn)在終于有電腦用一下。

          暑假前已經(jīng)計劃好了要做什么,就是要把這個學(xué)期還沒有做好的幾個應(yīng)用做好它,把picocontainer的1.0版的代碼分析和文檔漢化做完(在期末考試前因為無聊所以就做了這個事),還有再寫一些有趣的代碼,比如一個簡單的XML倉庫。

          讀書的計劃提前完成了,看完了《領(lǐng)域模型驅(qū)動》,《web開發(fā)敏捷之道》(新鮮熱辣),《Ruby for rails》。看了一半《對象設(shè)計》,還有把《重構(gòu)》又看了一遍。

          還好帶了一些英語資料,手機里也存了一些英語的對話,每天背一篇短文,沒事練習(xí)聽著英語大聲念幾句。感覺還好。

          今天看了一下敏捷大會的消息,又看了一下Thoughtworks里的強人的博客,覺得畢業(yè)后去那里的希望很渺茫。英語又差,技術(shù)和那些強人差了幾個數(shù)量級,看來要更加更加努力。
          posted @ 2007-08-14 00:05 _Kai_ 閱讀(319) | 評論 (0)編輯 收藏
          今晚想update一下rails,結(jié)果在升級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下。

          運行g(shù)em update --system升級

          轉(zhuǎn)載自:http://www.cnzxh.net/blog/Index.php?do=readArticle&articleId=145
          posted @ 2007-08-13 23:42 _Kai_ 閱讀(477) | 評論 (0)編輯 收藏
               摘要: JCreator是個輕量級的JAVA開發(fā)工具,對JAVA文件,JSP文件和XML文件編輯有比較好的支持。因為真的是很輕量級,所以功能也很弱,沒有 JUnit集成,也沒有代碼格式化。我自己也是用管了eclipse,其中的JUnit當(dāng)然是最常用的功能,其余常用功能還有重構(gòu)和代碼整理和格式化。有時要改一點代碼或者實驗一些代碼又不可能打開一個eclipse那么笨重的工具,但是用比如JCreator,又太弱。所以我就想著把JUnit和代碼格式化功能集成到JCreator中。

          ......  閱讀全文
          posted @ 2007-05-10 00:06 _Kai_ 閱讀(2721) | 評論 (11)編輯 收藏

          大名頂頂?shù)腏Unit是Kent Beck和Erich Gamma編寫的用java語言實現(xiàn)的單元測試框架。

          JUnit3


          JUnit3的用法比較簡單,就是實現(xiàn)繼承框架中TestCase的測試用例(一般實踐中命名為XxxTest),然后在其中加入以testXxx命名的測試方法。然后就可以用JUnit框架中的Runner運行測試。

          而且在JUnit的測試中如果要加入初始化方法就把方法命名為setup(),如果要加入清理方法就把方法命名為downDown()。
          如果要將幾個測試用例作為一個集合一次運行就實現(xiàn)一個有public static Test suite()方法簽名的方法,在其中創(chuàng)建一個TestSuite實例,然后調(diào)用方法addTest把一個個測試用例加入到集合中。


          JUnit4

          JUnit4在3的基礎(chǔ)上融入了JDK1.5的注釋特性,大大得改進(jìn)和強化了JUnit框架。將測試方法由之前的通過繼承TestCase確定測試類和通過命名方法確定測試方法的測試編寫方式轉(zhuǎn)變?yōu)橛勺⑨尨_定這些方面。

          常用的注釋:
          @Before:初始化方法
          @After:清理資源
          @Test:測試方法
          @BeforeClass:針對所有測試,只執(zhí)行一次,且必須為static void
          @AfterClass:針對所有測試,只執(zhí)行一次,且必須為static void

          只要有在類中要測試的方法前加入@Test,這個類就是一個測試用例。而加了對應(yīng)注釋的方法就是各個功能方法,比如初始化和清理。

          JUnit4相對以前的增強體現(xiàn)在以下的注釋中:

          @Test(expected=Exception.class):異常測試,斷言異常必定產(chǎn)生

          @Test(timeout=n):要求測試在允許超時時間(n秒)中完成

          @Ignore:忽略某個測試方法

          @Parameters:提供參數(shù)測試,也就是用一組參數(shù)測試代碼


          而且JUint4對ant1.7以下的版本有兼容性問題。


          以上講的JUnit用法就是最最常用用法。







          posted @ 2007-04-28 23:40 _Kai_ 閱讀(1762) | 評論 (0)編輯 收藏
          有機會可以接到一個小型商務(wù)平臺的項目,最近就開始做一個平臺的一些基礎(chǔ)組件,比如新聞發(fā)布模塊和用戶管理模塊。開發(fā)團隊只有我和另一個同學(xué),一共兩個人。而我們對XP開發(fā)過程比較有興趣,剛剛好可以進(jìn)行結(jié)對編程和TDD。

          開發(fā)已經(jīng)進(jìn)行了一個星期左右,已完成新聞發(fā)表模塊中的新聞管理模塊。因為完全沒有經(jīng)驗,而且開發(fā)時間不夠(只能在沒有課的上午或者下午開發(fā)),開發(fā)進(jìn)度很慢。但是自我感覺不錯,因為體驗了以前沒有體驗過的開發(fā)過程,從中學(xué)到了很多東西。

          在整個開發(fā)過程中,我們始終堅持“測試先行”原則。首先列出要完成的任務(wù)清單,用JUnit寫出相應(yīng)測試代碼,然后運行測試,出錯,偽實現(xiàn),重構(gòu)。一般都是兩個人,一個人持有鍵盤,寫一個鐘左右的代碼,然后一邊討論一邊寫代碼。在完成了一段代碼之后有種神奇的感覺,好像不知不覺中代碼就被寫出來了,這可能是TDD神奇的地方。先寫出符合需求的測試,接著按照測試來寫代碼,就是這么簡單。

          不過完成了新聞發(fā)布模塊之后,經(jīng)過討論,決定下一步完成前臺的UI。對于UI的開發(fā),平時例子學(xué)習(xí)了不少,自己寫的toycode也寫了一些,但是在實際應(yīng)用開發(fā)中對我們還是比較陌生。一開始準(zhǔn)備用簡單的JSP和Servlet來做前端,但是在前端控制器中代碼實現(xiàn)有點混亂,現(xiàn)在就卡在UI這里了,最后經(jīng)過討論決定用WebWork作前端控制器。

          以前在看K.Back的《解析極限編程》時,看到他把結(jié)對編程描述的很神奇:
          結(jié)對程序員:
          • 使彼此都專注于任務(wù)
          • 一起頭腦風(fēng)暴,討論系統(tǒng)的精化
          • 理清思路
          • 在搭檔陷入困境時要主動,這樣才能減少挫折
          • 使彼此都對團隊的實踐負(fù)責(zé)
          經(jīng)過實踐之后,就很清楚地體會到k.Back講到的結(jié)對的好處。

          五一應(yīng)該還會繼續(xù)完成這個項目,而且是一邊做一邊學(xué)。


          posted @ 2007-04-28 20:40 _Kai_ 閱讀(491) | 評論 (0)編輯 收藏

          公告

          碼農(nóng)一枚

          歡迎大家發(fā)E-mail到 與我討論關(guān)于軟件開發(fā)的各種看法。

          最新Blog地址:http://thekayway.com/

          導(dǎo)航

          <2007年4月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          統(tǒng)計

          常用鏈接

          留言簿(2)

          隨筆分類(21)

          隨筆檔案(18)

          常去的地方

          技術(shù)站點

          朋友的Blog

          搜索

          最新評論

          閱讀排行榜

          主站蜘蛛池模板: 昌图县| 花垣县| 噶尔县| 安多县| 禹城市| 松潘县| 句容市| 博罗县| 惠州市| 岐山县| 合水县| 桃园县| 大洼县| 新河县| 巴彦淖尔市| 同心县| 大埔区| 南川市| 德安县| 静乐县| 遵义市| 临朐县| 化隆| 日土县| 锡林郭勒盟| 疏附县| 广昌县| 余庆县| 策勒县| 榆社县| 资中县| 凉山| 布尔津县| 资溪县| 咸宁市| 保山市| 合川市| 城口县| 湘潭县| 兴化市| 和林格尔县|