軟件絕對領域

          2007年2月22日

          http://thekaiway.com
          posted @ 2007-11-12 16:53 _Kai_ 閱讀(274) | 評論 (0)編輯 收藏
          原文地址
          下午無聊翻譯一下,看看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中的==)。
          posted @ 2007-10-07 19:55 _Kai_ 閱讀(616) | 評論 (0)編輯 收藏
               摘要: 早上看了Ruby論壇中有人(blackanger)寫的TDD by Ex這本書里的資金例子,自己也想寫一寫。和他不同,我是全過程詳細寫出來。第一次用Ruby寫代碼,第一次用Ruby的Unit框架,而且下午睡醒后迷迷糊糊寫的,可能有很多錯誤,請多多指正。  閱讀全文
          posted @ 2007-10-03 21:02 _Kai_ 閱讀(841) | 評論 (0)編輯 收藏
          在Ubuntu下通過apt包管理器安裝ror環境是很方便的。我自己寫了一個腳本:

          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命令執行就可以一步安裝完成了。

          我發現網上很多在安裝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很過時,其實也不會。
          posted @ 2007-08-31 12:28 _Kai_ 閱讀(1987) | 評論 (0)編輯 收藏


          轉載自: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])
          ?? ??? ??? ??? ??? ??? ?
          ?? ??? ??? ??? ??? ??? ?

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

          posted @ 2007-08-28 16:07 _Kai_ 閱讀(457) | 評論 (2)編輯 收藏
          前天用我的X1650GT和同學換了一塊7300GT,在Ubuntu折騰了一下,終于如愿以償地開啟了Compiz Fusion的效果,并且用gDesklets在桌面加了一些實用工具挺好玩的。

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

          現在上圖看看:









          ?




          posted @ 2007-08-28 16:03 _Kai_ 閱讀(644) | 評論 (0)編輯 收藏
          用了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好好玩。

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

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

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

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

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

          今天看了一下敏捷大會的消息,又看了一下Thoughtworks里的強人的博客,覺得畢業后去那里的希望很渺茫。英語又差,技術和那些強人差了幾個數量級,看來要更加更加努力。
          posted @ 2007-08-14 00:05 _Kai_ 閱讀(319) | 評論 (0)編輯 收藏
          今晚想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
          posted @ 2007-08-13 23:42 _Kai_ 閱讀(477) | 評論 (0)編輯 收藏
               摘要: JCreator是個輕量級的JAVA開發工具,對JAVA文件,JSP文件和XML文件編輯有比較好的支持。因為真的是很輕量級,所以功能也很弱,沒有 JUnit集成,也沒有代碼格式化。我自己也是用管了eclipse,其中的JUnit當然是最常用的功能,其余常用功能還有重構和代碼整理和格式化。有時要改一點代碼或者實驗一些代碼又不可能打開一個eclipse那么笨重的工具,但是用比如JCreator,又太弱。所以我就想著把JUnit和代碼格式化功能集成到JCreator中。

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

          大名頂頂的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用法就是最最常用用法。







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

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

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

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

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

          五一應該還會繼續完成這個項目,而且是一邊做一邊學。


          posted @ 2007-04-28 20:40 _Kai_ 閱讀(491) | 評論 (0)編輯 收藏
               摘要: 假期學完了Servlet和JSP,現在來復習一下。

          Servlet和JSP,作為JavaEE的重要技術之一,表現層的核心技術之一。其中包括了什么,如何使用。

          第一部分 技術背景:
          ...............................................

          (待續未完)  閱讀全文
          posted @ 2007-03-27 23:18 _Kai_ 閱讀(155) | 評論 (0)編輯 收藏

          這個學期的學習要好好規劃。盡量提高時間的利用率,讓自己學習生活得更加有效率。

          學習內容:
          • TDD測試驅動開發方法
          • 6種類別重構手法
          • 設計模式的完整學習(主要是除了12個核心模式之前的11個)
          • UML和OOA,OOD

          • WebWork
          • Spring
          • Ioc容器,AOP
          • JUnit技巧(結合TDD的核心概念)

          • 敏捷和XP的內容
          • J2EE核心模式
          • Hibernate學習
          實踐部分:
          • 用Java重寫以前用C++寫過的一個圖書館管理系統(LMS)
          • 用Java的XML,JDBC包寫一些toy code
          學習的內容,有優先級,越上越高。而實踐部分盡量在學期末完成,而在實踐中先用OO的方法做簡單的初步分析和設計,然后用TDD,在構建過程中使用Ant,Eclipse,CVS,JUnit等工具。因為這個學期還要考四級,所以時間會比較緊。

          每個星期把計劃寫在一張紙上,然后每天完成計劃后作一個標記。

          一天一小步,一星期一中步,一個月就可以踏出一大步。
          posted @ 2007-03-27 22:23 _Kai_ 閱讀(1070) | 評論 (1)編輯 收藏

          OOD應該遵循的十一個基本原則,摘取自Robert C. MartinThe Principles of OOD一文 http://www.butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod

          類設計原則:

          1. SRP,單一職責原則,一個類應該有且只有一個改變的理由。
          2. OCP,開放封閉原則,你應該能夠不用修改原有類就能擴展一個類的行為。
          3. LSP,Liskov替換原則,派生類要與其基類自相容。
          4. DIP,依賴倒置原則,依賴于抽象而不是實現。
          5. ISP,接口隔離原則,客戶只要關注它們所需的接口。

          包內聚性原則:

          1. REP,重用發布等價原則,重用的粒度就是發布的粒度。
          2. CCP,共同封閉原則,包中的所有類對于同一類性質的變化應該是共同封閉的。?
          3. CRP,共同重用原則,一個包中的所有類應該是共同重用的。

          包耦合性原則:

          1. ADP,無環依賴原則,在包的依賴關系圖中不允許存在環。
          2. SDP,穩定依賴原則,朝著穩定的方向進行依賴。
          3. SAP,穩定抽象原則,包的抽象程度應該和其穩定程度一致
          posted @ 2007-02-22 23:32 _Kai_ 閱讀(644) | 評論 (0)編輯 收藏

          公告

          碼農一枚

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

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

          導航

          <2007年2月>
          28293031123
          45678910
          11121314151617
          18192021222324
          25262728123
          45678910

          統計

          常用鏈接

          留言簿(2)

          隨筆分類(21)

          隨筆檔案(18)

          常去的地方

          技術站點

          朋友的Blog

          搜索

          最新評論

          閱讀排行榜

          主站蜘蛛池模板: 蓬安县| 顺平县| 宣武区| 左贡县| 襄城县| 郁南县| 渝中区| 外汇| 琼中| 盐津县| 大英县| 启东市| 海林市| 乌审旗| 天台县| 乐东| 武陟县| 曲阜市| 隆林| 香格里拉县| 清流县| 和静县| 安福县| 古浪县| 巫山县| 平安县| 巴林左旗| 敦煌市| 广河县| 临沂市| 昌黎县| 杭锦后旗| 上虞市| 抚州市| 信丰县| 横峰县| 莱芜市| 绍兴县| 抚松县| 建平县| 澄江县|