<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 262,  comments - 221,  trackbacks - 0
    posted @ 2012-02-18 18:57 Paul Lin 閱讀(640) | 評論 (0)編輯 收藏
         摘要: 換句話說,當你找到與天賦、個性完全匹配的工作,它恰好處在上升期的市場,公司又提供了必要的授權與資源,那么你就很容易成功。反之,若這三點中的任何一點不匹配,那么你就是個loser。  閱讀全文
    posted @ 2012-02-18 18:27 Paul Lin 閱讀(667) | 評論 (0)編輯 收藏
    posted @ 2012-02-18 18:09 Paul Lin 閱讀(576) | 評論 (0)編輯 收藏
         摘要: 這是一篇集百家之長的筆記,分別參考了《Rails3 in Action》和 RVM官方文檔,ninjahideout.com 之后的安裝文檔。


    這里使用到的各種軟件包括:



    • Ubuntu

    • Virtual Box

    • Vagrant

    • RVM

    • Capistrano

    • Passenger

    • Nginx

    • MySQL

    • PostgreSQL



    還涉及到Git、GitHub、SSH等技術   閱讀全文
    posted @ 2011-11-21 16:22 Paul Lin 閱讀(1690) | 評論 (0)編輯 收藏
         摘要:   閱讀全文
    posted @ 2011-11-13 23:29 Paul Lin 閱讀(11050) | 評論 (1)編輯 收藏
    終于花了將近4個月的時間,把《Learn Rails3 by example》的E文版看完了,心中那個成就感和滿足感啊~~

    繼續下一輪的針對性學習計劃,計劃包括:

    1. Rails應用的部署和性能監控

    2. Rails的MVC架構和Cache

    3. JS和JS與Rails的結合使用

    4. Ruby的語法和特性

    5. MySQL配置和調優

    6. 搜索引擎和推薦引擎的學習

    7. NoSQL專題
     
    posted @ 2011-11-03 00:17 Paul Lin 閱讀(744) | 評論 (0)編輯 收藏
    關于RVM + REE + Ngix + Passenger + Capistrano的安裝配置,非常詳細!強烈推薦

    http://blog.ninjahideout.com/posts/a-guide-to-a-nginx-passenger-and-rvm-server
    posted @ 2011-11-03 00:14 Paul Lin 閱讀(715) | 評論 (0)編輯 收藏
         摘要:   閱讀全文
    posted @ 2011-10-03 17:36 Paul Lin| 編輯 收藏

    在上一篇《自動化測試狂人的Rails測試優化之路》中,我演示了如何使用Guard-spork, Guard-rspec和Spork, Rspec來進行自動化測試和集成測試。

    今天發現存在一個bug,那就是當model文件被修改后,雖然會重新啟動rspec執行測試。但是測試的代碼不是最新的,而是繼續沿用已經加載到內存的model文件。網上搜索一番后,發現問題的原因是spork的預加載問題。于是在spork的spork.each_run方法中加入如下代碼,重啟sprok,解決問題

    Dir["#{Rails.root}/app/models/**/*.rb"].each do |model| 
      load model
    end

     

    posted @ 2011-09-06 14:21 Paul Lin 閱讀(696) | 評論 (0)編輯 收藏

    假如我們把attr_accessible設置成只有name是可以訪問的,然后在Console中執行如下命令:

    ruby-1.9.2-p180 :001 > user = User.create(:name => "Paul", :email => "pengpenglin@163.com")
     
    => #<User id: 1, name: "Paul", email: nil, created_at: "2011-09-03 04:42:59", updated_at: "2011-09-03 04:42:59"> 
    ruby-1.9.2-p180 :002 > user.email
     
    => nil 
    ruby-1.9.2-p180 :003 > user.email = "bob@163.com"
     
    => "bob@163.com" 
    ruby-1.9.2-p180 :004 > user.email
     
    => "bob@163.com" 
    ruby-1.9.2-p180 :005 > user.save
     
    => true 
    ruby-1.9.2-p180 :006 > user.reload.email
     
    => "bob@163.com" 
    ruby-1.9.2-p180 :007 > User.find(1)
     
    => #<User id: 1, name: "Paul", email: "bob@163.com", created_at: "2011-09-03 04:42:59", updated_at: "2011-09-03 04:43:31"> 

    不是not accessible 嗎?怎么email還是能夠改變?

    posted @ 2011-09-03 12:51 Paul Lin 閱讀(1235) | 評論 (1)編輯 收藏
         摘要: 我們要修改的文件會涉及到4個:
    A. Gemfile
    B. .rspec
    C. Guardfile
    D. rspec_helper.rb  閱讀全文
    posted @ 2011-08-31 00:44 Paul Lin 閱讀(1847) | 評論 (1)編輯 收藏
         摘要: 從RailsCast.com篩選出來的視頻  閱讀全文
    posted @ 2011-08-29 15:58 Paul Lin 閱讀(588) | 評論 (0)編輯 收藏
         摘要: NERDTree.vim:顯示目錄樹和標簽(特別有用)
    Rails.vim:這個不說了,Rails開發必備
    Snipmate.vim:代碼片段自動完成,Rails開發神器之一
    FuzzyFinder.vim:模糊查找,使用頻率最高的插件之一
    TabBar:BufferExpoloer的增強版,用來標識打開的文件的
    Supertab.vim:文本自動完成
    Rubytest.vim:vim下的集成測試工具  閱讀全文
    posted @ 2011-07-26 12:46 Paul Lin 閱讀(3415) | 評論 (0)編輯 收藏
    BDD style unit testing video and slides@RubyKaigi 2011

    How I Test

    watchr 靈活的Continuous Testing測試工具可替代autotest...

    不要盲目的 BDD / TDD,我對寫測試的看法
    posted @ 2011-07-19 20:06 Paul Lin 閱讀(361) | 評論 (0)編輯 收藏
         摘要: 針對這種情況,我們可以使用一個名為Guard的gem,來自動監控spork中預加載的文件發生變化后,自動重啟spork

    1).在Gemfile中增加gem 'guard-spork'
    2).在shell中gem install libnotify / gem install inotify
    3).bundle install
    4).guard init spork
    5).guard start  閱讀全文
    posted @ 2011-07-15 18:12 Paul Lin 閱讀(426) | 評論 (0)編輯 收藏
         摘要: 首先我們來理解Autotest的觸發機制:

    1. 要有一套測試的框架和工具(Console,GUI)

    2. 要有可以感知被測試對象發生變化的機制

    3. 要有自動加載被測試對象和環境數據的機制

    4. 要有將測試結果展示給用戶的機制  閱讀全文
    posted @ 2011-07-15 00:14 Paul Lin 閱讀(648) | 評論 (0)編輯 收藏
         摘要: 網上google了一下,發覺又是一個Rails和其他gem不兼容的問題,只要把rake的版本設置為0.8.7就可以了。  閱讀全文
    posted @ 2011-07-03 21:28 Paul Lin 閱讀(1422) | 評論 (1)編輯 收藏
    posted @ 2011-06-25 13:40 Paul Lin 閱讀(358) | 評論 (0)編輯 收藏
    posted @ 2011-06-18 23:02 Paul Lin 閱讀(323) | 評論 (0)編輯 收藏
         摘要: ....
    甲:嗯....可是這樣看起來,我完全看不到敏捷的任何好處啊
    乙:嗯。實際上,我更喜歡RUP,雖然麻煩但很清楚
    ....  閱讀全文
    posted @ 2011-06-01 23:31 Paul Lin 閱讀(923) | 評論 (1)編輯 收藏
         摘要: 來自JE上的一篇Rails實戰文章,很不錯!  閱讀全文
    posted @ 2011-05-27 16:47 Paul Lin 閱讀(856) | 評論 (0)編輯 收藏
    QCon 2011大會的PPT下載。其中有我最感興趣的架構設計和NoSQL技術:


    企業敏捷轉型之路
    http://www.everbox.com/f/Rgo5syChjzuLeS6wJEAQZwvkje


    深入淺出NoSQL
    http://www.everbox.com/f/TQMXMI6asloYQFJLIxGy2WIIyo


    設計優良的架構
    http://www.everbox.com/f/XCZvXDTbft6ZlK8TsUlMWfVBjO


    Web性能與擴展
    http://t.sina.com.cn/1746173800/wr4mQk5Iwn


    來自一線項目的實戰經驗
    http://www.everbox.com/f/FZHFfXanIGZOasZsqSZpFuSSFk


    HTML5開發平臺
    http://www.everbox.com/f/qeD2qvae9LVRXCA3HsNq2ztiBY
    posted @ 2011-04-21 16:58 Paul Lin 閱讀(563) | 評論 (0)編輯 收藏
         摘要:   閱讀全文
    posted @ 2011-03-23 11:55 Paul Lin 閱讀(491) | 評論 (0)編輯 收藏

    原文:http://www.javaeye.com/news/20399

    大多數管理者都會陷入放權的困境。你很忙,每件事都要親力親為。你很清楚自己需要別人幫忙,但你沒有足夠的時間尋找并培訓別人來幫你。所以,你更加努力地工作,直到自己崩潰。

      下面這個故事講述了我如何放權。

      2001年,CD Baby成立三周年。我已有8名員工,但所有其他事情仍然需要我自己做。每周7天,從上午7點工作到晚上10點,自己仍然要經手每件事情。

      每隔5分鐘,就會有員工向我請示:

    • “Derek,有個家伙想修改網站上已經存在的相冊,我該怎么跟他說呢?”
    • “Derek,我們可以接受電匯作為一種支付方式嗎?”
    • “Derek,有個人今天下了兩個訂單,他想知道我們可不可以給他一起郵寄過去,并且把節省的郵費給他退回去?”


      如果整天不停地回答問題,那么什么事也做不成。我感覺我好像是每天去上班,然后在過道里坐著,全職回答員工的問題。

      我的忍耐已經到了極限,我不再去辦公室,并且關掉了手機。隨即,我意識到自己正在逃避問題,而不是去解決問題。我必須解決這個問題,要不然就壞了。

      經過一夜的反思,我最終在思想上接受放權。

      我必須放權,我不是我公司的必需品,沒有我,我的團隊照樣也可以經營公司。

      第二天,我一進門,有人就請示我,“Derek,我們昨天收到了一個客戶送來的CD,但他今天改變了主意,他想讓我們退回他的CD。我們給他郵寄了回去,但他又問我們能不能退還他的安裝費用,因為他從未登錄過網站。”
    這一次,我并沒有僅僅回答了他的問題,而是把大家都召集起來。

      我給大家解釋了事情的經過,和需要解決的問題。我回答了問題,但更重要的是,我解釋了自己思考的過程和回答背后的理念。

      “是的,我給他全額退款了。這樣,我們會受到一點損失。但是,最重要的是經常做一些能讓顧客高興的事,只要不過分就行。像這樣一個小小的表示對我們大有裨益,他可能會因此告訴他的朋友們,我們是一家不錯的公司。每個人都要記住,幫助音樂愛好者是我們的首要目標,利潤是其次。你們將來可以根據這條準則來自己做決定,我會完全同意。做那些能讓他們高興的事。要確保每個跟我們做生意的人都會滿意而歸。”

      我一一問了每個人,確保他們都理解我的回答。

      我讓一位員工起草一本手冊,把這種情況的處理方式記錄下來,并附上解決這種問題的理念。

      然后,每個人都回去工作了。

      十分鐘之后,新的問題,相同的過程:

    • 1. 召集所有人
    • 2. 回答問題,解釋理念
    • 3. 確保每個人都理解整個過程
    • 4. 讓一名員工把這條記錄在冊
    • 5. 讓他們知道,下次沒有我他們也可以這樣處理問題

      2個月之后,沒有員工請示了。

      然后我想員工們展示了事情的最后一部分,也就是我自己的工作。作為學習的一部分,他們也需要把這個記錄在冊,然后給其他人看(由教而學)。


      現在,公司完全不需要我了。我開始在家里工作,不再去辦公室了。我甚至教過他們我關于雇傭新員工的思考過程和理念。所以,有兩個新員工是完全由他們發現、面試、雇傭以及培訓的。他們用那本手冊來讓每個新員工理解這種理念以及它的歷史,并且知道怎么自己做決定。我每周去視察一次,確保一切正常。確實一切正常,他們甚至都沒有什么事情向我請示。

      因為業務由我的團隊負責運作,我可以心無旁騖地改進業務。我去了加利福尼亞,只是弄清楚事情由他們運作。

      我現在仍然每天工作12個小時,但是,我把所有時間都花在業務改進、優化以及創新上。對我來說,這才是最有趣的事情。這是在玩,不是工作。

      我放權之后,公司市值在四年里從一百萬增長到兩千萬。管理者和企業家之間有很大的不同。作為管理者你會感覺很自由,直到你意識到如果自己不工作,公司就會倒閉。

      要成為一名真正的企業家,你要確保自己能夠離開一年,而當你回來時,你的公司比你離開時運營得更好。

    posted @ 2011-03-20 10:22 Paul Lin 閱讀(340) | 評論 (0)編輯 收藏
    第1篇:NoSQL開篇——為什么要使用NoSQL

    第2篇:關系數據庫還是NoSQL數據庫

    第3篇:NoSQL架構實踐(一)——以NoSQL為輔

    第4篇:NoSQL架構實踐(二)——以NoSQL為主

    下載:NoSQL實戰

    重點推薦第3篇的最后一種架構:


    特別適合SNS的業務架構:把某些關系key存儲在MySQL中,用于后續的業務數據分析和挖掘,而把大量的文本和圖片存儲在類似MongoDB這樣的文檔型NoSQL。可以利用關系型數據庫的強有力的計算能力專注于數據分析和挖掘,而用NoSQL解決數據的讀寫和存儲瓶頸。

    由于NoSQL在線性擴展,分布式部署方面有先天優勢,可以有效地改善由于數據規模擴大時壓力問題,同時關系型數據庫存儲的數據大大減少,也有利于數據的備份和同步。
    posted @ 2011-03-19 22:45 Paul Lin 閱讀(437) | 評論 (0)編輯 收藏
    http://www.slideshare.net/mongodb/mongodb-at-the-silicon-valley-iphone-and-ipad-developers-meetup?from=ss_embed
    posted @ 2011-01-13 00:00 Paul Lin 閱讀(677) | 評論 (0)編輯 收藏
    http://my.safaribooksonline.com/book/web-development/ruby/9780132480345

    很不錯,居然全部都可以免費看。

    posted @ 2010-12-12 23:56 Paul Lin 閱讀(488) | 評論 (0)編輯 收藏
         摘要: 在本節,你將學到如何撰寫合乎邏輯的、緊湊的標記,使得你有能力將帶寬流量降低50%左右,在減少服務器負擔和壓力的同時,減少網站的加載時間。通過去除那些表現元素,并改掉那些沒有任何好處的壞習慣,我們就可以達到上述的目的。

    這些壞習慣折磨著網絡中的許多站點,特別是那些將 CSS 代碼與主要基于表格的布局混合在一起的站點。這種做法笨拙且不經濟,即使是對于那些在其他領域很有經驗的設計師來說。同時,出現這個問題的幾率是均等的,不論是那些手寫代碼的站點,還是利用可見編輯工具,比如 Dreamweaver 和 GoLive,來創建的站點。

    本節會提出這些常見的錯誤,這樣你就可以識別和防范它們,并且學會如何改正錯誤。我們詳細闡述唯一標識符屬性 (id) - ,并展示它如何使你可以編寫極其緊湊的 XHTML 代碼,不論你創建的是混合布局還是純粹的 CSS 布局。  閱讀全文
    posted @ 2010-11-18 15:25 Paul Lin 閱讀(544) | 評論 (1)編輯 收藏
         摘要: 我確實希望本節的內容可以激發你的興趣,并鼓勵你去嘗試。為什么這么說呢?因為一旦你掌握了本章包含的簡單容易的理念,你就會重新思考網頁運作的方式,并開始改變建造它們的方法。然而我并不希望你只是將代碼重新改寫一遍。我希望你可以實實在在地以另一種方式思考和工作。

    另一方面,重構才是 XHTML 真正的意義。  閱讀全文
    posted @ 2010-11-18 14:58 Paul Lin 閱讀(339) | 評論 (0)編輯 收藏
    1. 詳解CSS選擇器、優先級與匹配原理

    2. 5步讓你的CSS樣式表成功減肥

    3. 10個CSS簡寫技巧讓你永遠受用

    4. CSS的聲明中,對于選擇器的描述方式有多種不同的寫法和適用范圍:

        A. 標簽名選擇器聲明方式:p {color: red;} --- 選中某種元素

        B. 分組選擇器聲明方式:h1, h2, h3 {color: red;} --- 選中固定數目的多種元素

        C. 派生選擇器聲明方式:li td {color: red;}   --- 選中某種上下文關系元素

        D. ID選擇器聲明方式: #title {color: red;} --- 選中指定id元素

        E. Class選擇器聲明方式: .title {color: red;}   --- 選中不定數目的多種元素

      F. ID派生選擇器聲明方式: #title table {color: red;} --- 選中指定id下特定上下文關系元素

       G. Class派生選擇器聲明方式: .title table {color: red;}  --- 選中多種類型下特定上下文關系元素

       H. 類型選擇器聲明方式:table.title {color: red;}  --- 選中某種元素的某種類型

       I. 偽類選擇器聲明方式:a:visited {color: red;}  --- 選中某種狀態下元素

       J. 類型偽類選擇器聲明方式:a.news:visited {color: blue;}  --- 選中某種元素的某種狀態下的類型

    posted @ 2010-11-09 10:45 Paul Lin 閱讀(373) | 評論 (0)編輯 收藏
         摘要:   閱讀全文
    posted @ 2010-11-05 16:20 Paul Lin 閱讀(329) | 評論 (0)編輯 收藏

     http://www.theserverside.com/news/1363955/Taking-the-load-off-OSCache-helps-databases-cope

    posted @ 2010-11-03 17:08 Paul Lin 閱讀(380) | 評論 (0)編輯 收藏
         摘要: OSCache是一套用Java編寫的緩存框架(或者說解決方案),它主要用于頁面緩存,Servlet緩存,或者其它任意的對象。OSCache使用基于內存或者磁盤的緩存策略。不同的策略有不同的適用場合:基于內存的緩存非常快,但是不能持久化,而且不能存儲大量數據,適合頻繁訪問的數據。基于磁盤的緩存可以分為使用文件和數據庫緩存,它的速度比內存緩存慢,但可以被持久化,可以在服務器重啟重啟,數據庫奔潰時仍然運作,而且可以存儲較多的數據。適合于大量非頻繁訪問的數據,或者復雜計算結果的緩存。  閱讀全文
    posted @ 2010-10-22 21:39 Paul Lin 閱讀(529) | 評論 (0)編輯 收藏
    最近由于工作學習需要,開始研究緩存技術。從網上找到了不少的資料,按照時間的順序排列,也可以從中看出緩存技術,框架已經工具的演變歷史。

    基本知識:《緩存技術》: http://blog.csdn.net/fanweiwei/archive/2007/01/07/1476131.aspx

    《緩存漫談》: http://www.tkk7.com/BlueDavy/archive/2006/06/02/50076.html

    《網站緩存技術》:http://dcross.javaeye.com/blog/721468

    《緩存技術淺談》:http://robbin.javaeye.com/blog/770553
    posted @ 2010-10-19 16:12 Paul Lin 閱讀(447) | 評論 (0)編輯 收藏
         摘要: 介紹緩存的基本概念和常用的緩存技術,給出了各種技術的實現機制的簡單介紹和適用范圍說明,以及設計緩存方案應該考慮的問題  閱讀全文
    posted @ 2010-10-19 11:09 Paul Lin 閱讀(509) | 評論 (0)編輯 收藏
         摘要: InfoQ上有一篇《深入淺出REST》的文章:http://www.infoq.com/cn/articles/rest-introduction

    看完后有如下疑問:

    A. 觀點1中這個“ID”如何定義?
    B. 要為那些“事物”定義ID?
    C. 使用鏈接指向任何可以標識的事物
    D. “標準方法”是否夠用?
    E. 無狀態通信如何實現  閱讀全文
    posted @ 2010-09-07 11:04 Paul Lin 閱讀(1789) | 評論 (1)編輯 收藏
         摘要: 原文鏈接:http://www.javaeye.com/topic/698774

    這篇文章放到這個版面,因為我認為它屬于管理的范疇:個人管理(時間管理、知識管理)。

    是不是大家也有這種體會:


    網站注冊越來越沒耐心,看到頁面全是文本框、下拉框,就心煩,咔一下關了。
    文章超過兩屏的,就沒勇氣往下看。
    看到文章的相關鏈接,沒完沒了,兩小時后,腦袋一片混亂,真想涼水沖沖。
    Google Reader的未讀項又是1000+了,看吧,壓力太大,不看吧,有種挫敗感,干脆,全部設置為已讀。

    焦慮、挫敗、恐懼,什么感覺都來了,唯獨沒有愉悅感。

    ......  閱讀全文
    posted @ 2010-07-13 17:36 Paul Lin 閱讀(465) | 評論 (0)編輯 收藏
    ①gem install

    install命令用于安裝指定的gem包,常用的方式是:gem install rails。我們也可以指定版本:gem install rails --version=2.3.5

    ②gem uninstall

    uninstall命令用于反安裝gem包,不過要注意的是這個命令并不會刪除你之前安裝的gem包,而只是把它從path中刪除而已。如果我執行以下的命令

     gem install rails --version=2.3.4
     gem uninstall rails --version=2.3.4
     gem install rails --version=2.3.5

    實際上rails 2.3.4版本依然還在,只不過你在命令行下執行rails -v的時候是顯示rails 2.3.5而已。

    ③gem cleanup

    這個命令配合gem uninstall使用的話可以完全刪除舊版本的gem包,所以在上面的例子中如果我需要完全卸載rails 2.3.4的話,只需要再執行
     gem cleanup就可以了

    ④使用指定的rails版本編譯運行

    rails _版本號_ 項目名稱
    posted @ 2010-06-24 17:39 Paul Lin 閱讀(1500) | 評論 (0)編輯 收藏
         摘要: 所以我們一定要記住:options={}是用來傳遞請求參數的,而html_options={}是用來設置請求報頭的,不能搞混!  閱讀全文
    posted @ 2010-05-17 16:41 Paul Lin 閱讀(6502) | 評論 (4)編輯 收藏
         摘要: 下面我們來回憶一下整個過程,我們會發現使用RoR創建Web應用真是如此簡單而充滿樂趣!

    ●命令:
    A.rails 項目名稱
    B.rake db:create RAILS_VERSION='數據庫模式'
    C.ruby script/generate scaffold 表名 字段名:字段類型
    D.rake db:migrate
    E.ruby script/server WEBrick

    ●代碼:
    validates_presence_of :title, :description, :image_url, :price
    validates_length_of :title, :minimum => 10
    validates_numericality_of :price
    validates_uniqueness_of :title

    只需要花你差不多了5分鐘的時間而已~,That's all !  閱讀全文
    posted @ 2010-05-15 12:02 Paul Lin 閱讀(658) | 評論 (0)編輯 收藏
         摘要: 豆瓣已經成為一種文化符號,一種現象,一個被所有有志于Web 2.0創業的人研究的對象。不過也正如文中所說的,豆瓣的軟肋在于:缺乏原創的內容,不過從現在豆瓣的發展來看已經開始布局原創內容了。“豆瓣電臺”就是這樣一個理念的產品  閱讀全文
    posted @ 2010-05-10 17:35 Paul Lin 閱讀(640) | 評論 (0)編輯 收藏
         摘要: 總之,長尾理論的提出是互聯網發展的一項重要里程碑,也是Web2.0時代很多企業的盈利模式的重要理論依據,同時也可以解決傳統經濟學意義上的很多約束。這也就為創業者和企業家提供了更為廣泛的思路,但在運用長尾理論的過程中我們還要避免把長尾理論與二八理論徹底對立、盲目追求“長尾市場”、過度追求產品或者服務的個性化等誤區。本人認為長尾理論的理論體系有多么完善并不是最重要的,重要的是運用長尾是一種理念,是指導企業自身定位以及戰略和戰術行為的思維運營模式,而如何利用這種長尾理念形成一種盈利模式才是最關鍵的。  閱讀全文
    posted @ 2010-05-10 16:10 Paul Lin 閱讀(344) | 評論 (0)編輯 收藏

    【暗夜列車】

          小成本的“道德教育片”,告訴你“出來混,總是要還的”,“不是不報,時候未到”,還有最重要的一點“死人的東西是不能亂碰的”。

     推薦指數:★★★


    【荒野生存】

           一個理想主義者的傳奇,一個藐視世俗者的精神勝利,一個徒步者的孤獨旅程。為了理想中絕對的自由,為了理想中沒有虛偽的世界,為了理想中的真我,只身踏上旅程。

    推薦指數:★★★★


    【末日危途】

           當未來遙不可及,當世界已成廢墟,當文明已經毀滅殆盡 ---- 你是否依然堅信希望在前方,還是選擇麻木地活著?你是否依然堅持著那最后的做人底線,還是為了生存而無所不用其極?你是否堅信這世界依然有人值得信任,還是選擇用槍口對準每一個試圖接近的陌生人?

           絕望~ 絕望~ 還是絕望~,人性 VS 獸性

    推薦指數:★★★★


    【禁閉島】

          如果你看過《穆赫蘭道》,《記憶碎片》,那么你應該習慣了好萊塢導演這種顛倒順序,角色亂入,亦真亦假的手段。

          人的精神力量是無比強大的,必要時甚至可以創造出一個虛擬的世界。只為在潛意識中強化自己的邏輯和逃避罪責

          這是一部精神病者的歷險大片,也可以看作是一部關于如何治療迫害妄想癥的教學片。

    推薦指數:★★★★★

     

    【歲月神偷】
          歲月是最高明的小偷,他偷走了我們的容貌,偷走了我們的青春,偷走了我們的親人,模糊了我們的記憶。借助電影的手段,我們又一次找回了被歲月偷走的那份久違的溫馨和感動。

          成為一部爛片的原因有很多,但是成為一部優秀的電影總是有那么一兩個因素的:它們總是能巧妙地運用聲,光,影,將一切看似平淡的東西像變魔術般進行組合,準確地擊中你內心某一處柔軟的地方。

          不需太多,有感動則足矣!

    推薦指數:★★★★★

    posted @ 2010-04-28 13:40 Paul Lin 閱讀(476) | 評論 (0)編輯 收藏
         摘要: 摘在SUN 的J2EE Tutoria 第33章的第3節《The JMS API Programming Model 》全面地介紹了JMS的編程模型  閱讀全文
    posted @ 2010-04-17 22:39 Paul Lin 閱讀(786) | 評論 (0)編輯 收藏
         摘要: 我要介紹的內容包括以下幾個方面:
    1、memcached的簡介
    2、memcached的應用場景
    3、memcached的安裝
    4、memcached的使用
    5、memcached的部署架構
    6、memcached的局限性
    7、memcached的改進

    轉自:http://wangzebin.blog.51cto.com/653300/128235 原文作者:王澤賓  閱讀全文
    posted @ 2010-04-08 01:08 Paul Lin 閱讀(4302) | 評論 (6)編輯 收藏
         摘要: 目前為止見過的對架構師責職分析最深刻的文章

    轉自:http://wangzebin.blog.51cto.com/653300/135640 原文作者:王澤賓  閱讀全文
    posted @ 2010-04-08 01:03 Paul Lin 閱讀(2278) | 評論 (0)編輯 收藏
         摘要: 如果個人或者小公司去做綜合類網站,這是很不靠譜的事。現如今小網站的存活之道一定是垂直的,而且必須要有一個非常顯著的亮點,只有把這個亮點深挖進去,吃透了,而且還能將它做到極致才行。從一開始就想搞一個大而全的網站,設置那么多的頻道,這不僅對于拉動流量沒有效果,而且還會把你的亮點給淹沒了。如果你要做綜合類網站,那么你需要有實力、不差錢才行,推廣手段就是用錢去砸,小網站絕對不會有這么大的財力去拼。

    轉自:http://wangzebin.blog.51cto.com/653300/142382 原文作者:王澤賓
      閱讀全文
    posted @ 2010-04-08 00:58 Paul Lin 閱讀(1411) | 評論 (0)編輯 收藏
         摘要: 相當好的文章,后面的評論更加精彩!  閱讀全文
    posted @ 2010-04-08 00:55 Paul Lin 閱讀(4258) | 評論 (2)編輯 收藏
         摘要: 這是一個基于C++寫的Java源代碼反編譯工具,界面類似于EClipse,而且反編譯的效果不錯,出錯率比較低。支持整個Jar包的反編譯,支持界面拖放。速度很快,語法高亮顯示!

    而且這是一個綠色軟件,不需要任何的安裝,雙擊exe文件運行即可。卸載時只需要把exe和cfg文件刪除即可。  閱讀全文
    posted @ 2010-04-07 11:10 Paul Lin 閱讀(2422) | 評論 (3)編輯 收藏
         摘要: Apache commons CLI是一個開源的,用于處理命令行的工具包。這個包目前的穩定版本是1.2,他非常簡單只有20個左右的class,但提供了幾乎所以可以用到的命令行功能。它的主頁在這里:Apache commons CLI

    根據CLI的邏輯,每一個命令行的處理都可以分為3個步驟:定義、解析、交互
    ①定義:定義命令行的各種選項屬性(包括縮寫、全寫、是否必須、是否帶參數、參數個數限制)
    ②解析:使用解析器對命令行選項列表進行解析
    ③交互:從解析好的命令行查詢用戶輸入的參數值并進行處理  閱讀全文
    posted @ 2010-04-02 14:20 Paul Lin 閱讀(1073) | 評論 (0)編輯 收藏
         摘要: 1.基本功能過濾器
    =============================================
    ①類型:DirectoryFileFilter、FileFileFilter
    ②大小:EmptyFileFilter、SizeFileFilter
    ③時間:AgeFileFilter
    ④名稱:NameFileFilter、PrefixFileFilter、SuffixFileFilter、RegexFileFilter、WildcardFileFilter
    ⑤讀寫屬性:CanReadFileFilter、CanWriteFileFilter
    ⑥隱藏屬性:HiddenFileFilter

    2.邏輯關系過濾器
    =============================================
    ①邏輯與:AndFileFilter
    ②邏輯或:OrFileFilter
    ③邏輯非:NotFileFilter
    ④永真/假:TrueFileFilter、FalseFil  閱讀全文
    posted @ 2010-04-01 17:52 Paul Lin 閱讀(3169) | 評論 (1)編輯 收藏
         摘要: Apache commons IO包中提供了一個可以遍歷目錄下資源的DirectoryWalker,還有很多的IOFileFilter用于過濾文件目錄。下面的例子分別演示了這個功能。

    這兩個搜索類都是以內部類的方式嵌入客戶端的,客戶端接收客戶的參數,然后通過一個后臺線程來進行搜索,等待子線程完成搜索后(join方法),再打印搜索結果。

    注意這個過程是可以被cancel的。cancel主要有2種情況。外部cancel:外部線程通過調用內部類的cancel()方法。內部cancel:在handleDirectory、handleFile中主動拋出CancelException。

    walk方法在每次執行前、后都會檢查當前是否有cancel指令發出(checkIfCancelled ---> handleIsCancelled),如果有那么默認立刻拋出CancelException,然后調用handleCancelled方法。  閱讀全文
    posted @ 2010-03-31 23:45 Paul Lin 閱讀(2572) | 評論 (1)編輯 收藏

    從 同一個源文件(15M左右)使用不同的方式讀入,一種是讀入后構造成一個String,另外一個是讀入后構造成一個List。然后再調用 writeLines(File, String)和writeLines(File, Collection)寫入。下面是測試比較的結果:

    Read and write by string format
      File sizes(bytes): 15661680
      Content read(bytes): 15661680
      Time costing(ms) on reading: 2047
      Time costing(ms) on writing: 1016


    Read and write by collection format
      File sizes(bytes): 15661680
      File read(lines): 1782615
      Time costing(ms) on reading: 2047
      Time costing(ms) on writing: 533437


    效率相差之多! 我的測試環境如下:

    OS:Win XP SP4
    CPU:Intel Core(TM) 2 Duo CPU
    內存:800M(虛擬機分配)
    JDK:JDK 5.0 (JVM內存分配:-Xms64m -Xmx512m)
    測試文件:15.295M (是一個IP地址文件,總共1782615行)

    在讀方面時間居然相當(這里面應該有操作系統層面的緩沖作用,我單獨地測試時第2個方式總比第一個慢1/3左右)。而在寫方面性能簡直是天壤之別啊:533437/1016 ≈525倍。

    雖然我這個測試還是不嚴謹的,但是從方法實現過程和原理來看,兩者性能差異存在必然的因素:

    ①以Collection方式去構造的,在讀取的過程中生成多個小String,而生成String是一項耗時的工作
    ②以Collection方式去寫的,首先要迭代這個Collection,然后每次調用Collection中的元素的toString()方法,造成多次的堆棧操作



    posted @ 2010-03-30 00:19 Paul Lin 閱讀(6058) | 評論 (0)編輯 收藏
         摘要: 最近在對之前做過的一個項目進行二期修改。鑒于之前典型的貧血結構,以及Controller--->Service--->DAO模式讓代碼壓力都集中在service層的情況。在參考了Banq寫的幾篇對象職責和Domain Event的文章后,我也試著搗鼓了一下新的分層模式。貼出來和大家討論,歡迎拍磚!  閱讀全文
    posted @ 2010-03-23 17:05 Paul Lin 閱讀(1582) | 評論 (0)編輯 收藏
         摘要:   閱讀全文
    posted @ 2010-03-19 23:11 Paul Lin 閱讀(573) | 評論 (0)編輯 收藏
         摘要:   閱讀全文
    posted @ 2010-03-19 22:21 Paul Lin 閱讀(1527) | 評論 (0)編輯 收藏
         摘要: Spring對事務傳播的定義和事務操作性能優化  閱讀全文
    posted @ 2010-03-15 11:09 Paul Lin 閱讀(2611) | 評論 (0)編輯 收藏
         摘要: 樂觀鎖定采用的版本策略實際上和SVN的版本沖突解決方案是同樣的:采用其它人的(先提交的)、采用自己的(后提交的)、合并他人和自己的(合并沖突更新)
    悲觀鎖定(Pessimistic locking)會采用基于數據庫提供的鎖機制來進行鎖定。它會在物理層對行甚至表進行鎖定。使得應用的并發性變差。  閱讀全文
    posted @ 2010-03-15 11:07 Paul Lin 閱讀(1498) | 評論 (0)編輯 收藏
         摘要: READ COMMITITED:不允許讀取未提交的數據,但可以讀取已提交的數據。所以可能出現不可重復讀、和幻像讀(讀的過程依然可以被修改、增加、刪除)


    REPEATABLE READ:通過行鎖定,在讀的數據不允許其它進程修改。確保已讀取的數據不被修改、刪除(不可重復讀)但無法阻止其它進程寫入新數據,所以不能確保讀取到新的數據(幻像讀)

    SERIALIZABLE:通過表鎖定,徹底禁止讀取期間其它進程的修改、刪除(屏蔽不可重復讀)和增加(屏蔽幻像讀)

    但是不管是那種隔離級別,對第一類丟失更新都是不能接收的  閱讀全文
    posted @ 2010-03-15 11:04 Paul Lin 閱讀(1078) | 評論 (0)編輯 收藏
         摘要: 一級、二級緩存使用的key均為po的主鍵ID,value即為po實例對象,查詢緩存使用的則為查詢的條件(hql轉化而成的sql語句)、查詢的參數、查詢的頁數,value有兩種情況,如果采用的是select po.property這樣的方式那么value為整個結果集,如采用的是from這樣的方式那么value為獲取的結果集中各po對象的主鍵ID,這樣的作用很明顯,節省內存。  閱讀全文
    posted @ 2010-03-15 11:00 Paul Lin 閱讀(4090) | 評論 (0)編輯 收藏
         摘要: 關于Memcached入門知識點  閱讀全文
    posted @ 2010-03-15 10:57 Paul Lin 閱讀(2270) | 評論 (0)編輯 收藏
         摘要: ①同步的操作,如果在等待的過程不能做別的事情,它是同步+阻塞的。這個也是最常見的
    ②同步的操作,如果在等待的過程可以做別的事情,它是同步+非阻塞的。
    ③異步的操作,如果在等待的過程不能做別的事情,它是異步+阻塞的。
    ④異步的操作,如果在等待的過程可以做別的事情,它是異步+非阻塞的。這個也是最常見的  閱讀全文
    posted @ 2010-03-10 15:36 Paul Lin 閱讀(2792) | 評論 (2)編輯 收藏
         摘要: 同步/異步:消息通知機制。是自己主動關注消息還是靠別人通知
    阻塞/非阻塞:消息處理機制。等待消息處理完成的過程能否做別的事情  閱讀全文
    posted @ 2010-03-10 14:54 Paul Lin 閱讀(2638) | 評論 (0)編輯 收藏
         摘要: 要使用DirectoryWalker來遍歷一個目錄并進行相應的操作,步驟如下:

    ①創建一個繼續于DirectoryWalker的類,并在構造方法中調用super();
    ②定義一個業務入口方法,例如clean。在這個方法中調用walk方法
    ③覆蓋DirectoryWalker類的handleDirectory方法,提供相應的處理邏輯
    ④覆蓋DirectoryWalker類的handleFile方法,提供相應的處理邏輯  閱讀全文
    posted @ 2010-03-09 00:26 Paul Lin 閱讀(3531) | 評論 (1)編輯 收藏
         摘要: 它們可以分為兩大類:
    ①實質性過濾器:例如針對文件的類型,屬性,名稱,大小進行過濾的過濾器
    ②過濾器連接器:典型的包括AndFileFilter、OrFileFilter。用于邏輯連接多個過濾器  閱讀全文
    posted @ 2010-03-09 00:02 Paul Lin 閱讀(1358) | 評論 (0)編輯 收藏
         摘要: 對IOUtils類的剖析  閱讀全文
    posted @ 2010-03-08 21:24 Paul Lin 閱讀(2391) | 評論 (0)編輯 收藏
         摘要: FileUtils總體上來說,主要功能有:
    ※ 資源的創建、刪除
    ※ 資源的復制、移動
    ※ 資源的讀寫
    ※ 資源的比較
    ※ 資源的過濾
    ※ 資源的轉換  閱讀全文
    posted @ 2010-03-08 15:07 Paul Lin 閱讀(6583) | 評論 (1)編輯 收藏
         摘要: 使用Apache commons IO包規范文件名  閱讀全文
    posted @ 2010-03-08 10:56 Paul Lin 閱讀(855) | 評論 (0)編輯 收藏
         摘要: 本文通過對Apache commons io包的input,output子類的源代碼研究,來揭示為什么使用commons IO包會在性能上由于JDK自帶的IO類。

    特別是輸出流方面  閱讀全文
    posted @ 2010-03-04 10:28 Paul Lin 閱讀(5653) | 評論 (0)編輯 收藏
         摘要: 使用圖例全面展示Java中IO的架構,特別是節點流和過濾流及其之間的轉換  閱讀全文
    posted @ 2010-03-02 09:47 Paul Lin 閱讀(4331) | 評論 (3)編輯 收藏
         摘要: 良好的編程習慣,對編碼和數據傳輸流程的清晰認識,規范的配置是確保JavaEE應用不會出現亂碼的三大法寶  閱讀全文
    posted @ 2010-02-24 10:25 Paul Lin 閱讀(4331) | 評論 (1)編輯 收藏
         摘要: 可以看到該命令對于英文字符,數字不會轉換而是直接輸出,而對于每個中文字符則轉換成以\u開頭的4個16進制數字。

    通常情況下,如果要進行字符的逆轉換,-encoding encoding_name這個參數都會配合-reverse出現。在上面的例子中因為本地系統是中文操作系統,所以即便沒有指定-encoding也可以正確地從unicode ---》GBK。如果是在英文平臺下由于默認字符集是ISO-8859-1,那么這個時候如果不指定則轉換出來的將是?了。  閱讀全文
    posted @ 2010-02-23 18:41 Paul Lin 閱讀(885) | 評論 (0)編輯 收藏
         摘要: 可以看到在Java中,字符的unicode有兩種表示顯示:一種是10進制形式,一種是16進制形式。它們可以分別通過:int i = (int)(string.charAt(i))和Integer.toHexString(i);獲得。而且在java文件和Web頁面,同一個unicode的表示形式是不同。web頁面需要用&#進行轉義,在java文件中則使用\u進行轉義。  閱讀全文
    posted @ 2010-02-23 16:48 Paul Lin 閱讀(2126) | 評論 (2)編輯 收藏
         摘要: 在這個專題的第一篇文章【Java基礎專題】編碼與亂碼(01)---編碼基礎 開頭,我們就已經介紹了這個規則:
    ①得到每個字符的2進制GBK編碼
    ②將該16進制的GBK編碼轉換成2進制的字符串(2個字節)
    ③分別在字符串的首位插入110,在第9位插入10,在第17位插入10三個字符串,得到3個字節
    ④將這3個字節分別轉換成16進制編碼,得到最終的UTF-8編碼。  閱讀全文
    posted @ 2010-02-22 23:00 Paul Lin 閱讀(37031) | 評論 (11)編輯 收藏
         摘要: 謹慎地使用getBytes(NAME_OF_CHARSET)和new String(bytes, NAME_OF_CHARSET),除非你很清楚的知道原始的字符編碼和傳輸協議使用的編碼。

    推薦使用基于服務器的配置、過濾器設置request/response的characterEncoding、content type屬性。還有就是JSP頁面的pageEncoding屬性、HTML meta元素的content type屬性。盡量避免頻繁的在代碼中進行字符串轉碼,即降低了效率又增加了風險  閱讀全文
    posted @ 2010-02-22 17:39 Paul Lin 閱讀(3042) | 評論 (4)編輯 收藏
         摘要: 這個方法再次證明了String的getBytes()方法的危險性,如果我們使用new String(str.getBytes(), encoding)對字符串進行重新編碼解碼時,我們一定要清楚str.getBytes()方法返回的字節數組的長度、內容到底是什么,因為在接下來使用新的encoding進行編碼解碼時,Java并不會自動地對字節數組進行擴展以適應新的encoding。而是按照新的編碼方法直接對該字節數組進行解析。

    于是結果就像上面的例子一樣,同樣是4個原始字節,有些每2個一組進行解析,有些每個一組進行解析,有些每3個一組進行解析。其結果就只能看那種編碼方式合適了。  閱讀全文
    posted @ 2010-02-22 17:18 Paul Lin 閱讀(7102) | 評論 (2)編輯 收藏
         摘要: 不要輕易地使用或濫用String類的getBytes(encoding)方法,更要盡量避免使用getBytes()方法。因為這個方法是平臺依賴的,在平臺不可預知的情況下完全可能得到不同的結果。如果一定要進行字節編碼,則用戶要確保encoding的方法就是當初字符串輸入時的encoding。  閱讀全文
    posted @ 2010-02-22 16:53 Paul Lin 閱讀(4600) | 評論 (1)編輯 收藏
         摘要: Unicode到UTF-8的轉換:Unicode的16進制編碼<-->對應的2進制編碼<-->UTF-8規范的2進制編碼<-->UTF-8規范的16進制編碼

    也就是說,假如我們需要從磁盤文件、數據庫記錄、網絡傳輸一些字符,保存到Java的變量中,要經歷由bytes-->encode字符-->Unicode字符的轉換(例如new String(bytes, encode));而要把Java變量保存到文件、數據庫或者通過網絡傳輸,系統要做一個Unicode字符-->encode字符-->bytes的轉換(例如String.getBytes([encode]))  閱讀全文
    posted @ 2010-02-16 23:23 Paul Lin 閱讀(3681) | 評論 (3)編輯 收藏

    在天涯論壇搞到的,要感謝提供這個攻略的網友“海南小椰妹”,不過話說回來,不知道看完這篇攻略,你還有沒有興趣去海南三亞了。有時候旅游就是沖著未知的前方而去的,如果什么都攻略了那就感覺沒有啥意外和驚喜了。


    再次感謝一下這個海南小椰妹!

    海南三亞旅游攻略

    posted @ 2010-01-27 15:33 Paul Lin 閱讀(341) | 評論 (0)編輯 收藏
         摘要: Informa不僅提供了對不同版本的RSS Feed source的讀入和解析,同樣也提供了將channel object導出為不同協議版本的XML文件的功能。這個功能是通過exporters包下的各個導出類來完成的。目前僅支持對RSS協議的導出,不支持Atom協議、OPML協議的導出。  閱讀全文
    posted @ 2010-01-04 10:15 Paul Lin 閱讀(406) | 評論 (0)編輯 收藏
         摘要: OPML(Outline Processor Markup Language)協議正是用于解決這樣問題的。利用OPML協議,我們可以通過閱讀器把已經訂閱的頻道導出為OPML協議規定的格式,從而作為
    一個文件分享出去。  閱讀全文
    posted @ 2010-01-02 20:56 Paul Lin 閱讀(345) | 評論 (0)編輯 收藏
         摘要: 可以看到,對于這個解析過程,一般的步驟就是:
    A.獲取channnel下的某個子節點元素
    B.如果該子節點元素有子元素或屬性,則繼續遞歸訪問
    C.調用該channnel子元素的createXxx方法加載或創建該子元素
    D.調用Channel的setXxx方法添加該子元素到channel實例中  閱讀全文
    posted @ 2009-12-30 10:45 Paul Lin 閱讀(252) | 評論 (0)編輯 收藏
         摘要: FeedParser是一個facade類,這個類的工作就是根據讀入的RSS Feed的協議系和版本“委托(delegate)”給已經硬編碼的規則(concrete rules)指定的解析器,而且這些解析器是私有的。這意味著:用戶不能直接調用一個RSS_0_91_Parser類的實例來進行解析工作。  閱讀全文
    posted @ 2009-12-29 15:56 Paul Lin 閱讀(1488) | 評論 (0)編輯 收藏
         摘要: ChannelBuilder對channel object的創建原則就是:
    A.如果能夠從持久層中找到對應的記錄,那么從持久層返回
    B.如果找不到,則創建它并持久化它,然后返回該對象(已持久化)

    只要記得的一點就是:從ChannelBuilder返回的對象都是已經持久化的。  閱讀全文
    posted @ 2009-12-28 15:57 Paul Lin 閱讀(1240) | 評論 (0)編輯 收藏
         摘要: 經過和impl.basic包中Channel的比較,發現兩者的實現有如下的不同:

    A.構造方法中多了3個方法,其中兩個是使用title和location來構造的,最后一個是使用Element,title,location來構造的
    B.從Hibernate中檢索出來的是不用設置ID的,而從內存中生成的必須使用IdGenerator產生唯一ID
    C.basic實現中沒有getLocationString方法和setLocationString方法
    D.basic實現中沒有getSiteString方法和setSiteString方法
    E.basic實現中沒有getGroup方法和setGroup方法
    F.basic實現中沒有getFormatString和setFormatString方法
    G.basic中沒有setItems方法,而且getItems方法中的實現不同(basic采用了同步的hashset,而hibernate沒有)
    H.basic中的addItem方法是添加到hashmap,而hib  閱讀全文
    posted @ 2009-12-28 10:51 Paul Lin 閱讀(233) | 評論 (0)編輯 收藏
         摘要: 其中dbscheme是關鍵,它的主要工作包括:
    A.創建用于保存DDL輸出結果的scripts目錄
    B.定義一個名為schemaexport的Ant task,用于把hbm文件導出為ddl文件
    C.執行schemaexport任務,把classes目錄下的hbm文件export成DDL,并輸出到指定的位置
    D.輸出執行結果信息  閱讀全文
    posted @ 2009-12-23 10:45 Paul Lin 閱讀(1343) | 評論 (0)編輯 收藏
         摘要: 這個ID生成類采用了系統當前時間作為隨即數產生的種子,這個并不難理解。但是有一個地方需要我們注意的就是關鍵字transient的使用。這個關鍵的作用是告訴編譯器假設該類的對象被序列化了,這個值不需要被保存。因為它是“瞬時”的。  閱讀全文
    posted @ 2009-12-23 00:03 Paul Lin 閱讀(1338) | 評論 (0)編輯 收藏
         摘要: 在ChannelBuilder下有幾種類型的方法:
    ★構造方法和初始化方法:即創建Channel對象的方法及初始化的方法
    ★元素構建方法:即構建Channel子元素的方法
    ★事務控制方法:即控制構建,析構過程的方法  閱讀全文
    posted @ 2009-12-22 23:52 Paul Lin 閱讀(1271) | 評論 (0)編輯 收藏
         摘要: 總結起來,channel的創建,更新過程如下:
    ①接收經過ChannelParser解析后的XML Element元素,和其他一系列屬性,調用構造方法
    ②構造方法為channel生成一個全局唯一ID
    ③構造方法創建item列表,觀察者列表,設置好分類(Category),首次更新時間
    ④如果有新item到來,則添加到item列表,同時更新item的channel歸屬
    ⑤如果現有channel更新,則設置最新更新時間
    ⑥通知每一個已注冊的觀察者有事件發生  閱讀全文
    posted @ 2009-12-22 23:31 Paul Lin 閱讀(1257) | 評論 (0)編輯 收藏
         摘要: Informa的core包介紹如下:

    “This package contains interfaces for the news channel objects, it builds the core API for all news channel storage implementation. ”

    從上面這句話來看,core包里面定義的都是關于“news channel objects”的接口---實際上就是RSS協議中的channel和item元素。經過一個多小時查看源代碼和閱讀API,發現Informa對core包的設計有如下特點:

    core包中的元素被分為標記接口、實體接口、行為接口  閱讀全文
    posted @ 2009-12-21 22:09 Paul Lin 閱讀(1246) | 評論 (0)編輯 收藏
         摘要: Informa的API結構如下:

    ★core包:
    核心包。訂閱了RSS中channel,item等一系列元素和元數據的接口

    ★impl.basic包:
    基本功能包。使用in-memory模式實現了core包訂閱的接口

    ★impl.hibernate包:
    基于hibernate實現的包,使用關系型數據庫模式實現了core包定義的接口

    ★parsers包:
    定義了永遠解析channel,item的解析器工具

    ★exporters包:
    定義了一組把channel,item導出成各種協議格式的工具

    ★search包:
    定義了用于全文搜索channel,item的工具

    ★utils.manager.memory包:
    定義了一組用于管理“in-memory”模式持久化的工具

    ★utils.manager.hibernate包:   閱讀全文
    posted @ 2009-12-21 15:39 Paul Lin 閱讀(1259) | 評論 (0)編輯 收藏
         摘要: 選擇一個開源框架,我的標準有幾條:

    ★良好的文檔和源代碼管理:這是最基本的一條,想RSSLibJ這種連文檔、官網都沒有的一律pass掉
    ★持續的改進:這是第二個重要的,像上面某些工具從02年后就不再更新了,出了問題你找誰訴苦去
    ★簡單和易上手:在短時間內可以迅速依樣畫葫蘆
    ★活躍的社區:參與的人越多軟件成長得越多。我不是特別在乎軟件目前的使用率,因為好的軟件都是慢慢出名的  閱讀全文
    posted @ 2009-12-21 11:52 Paul Lin 閱讀(1362) | 評論 (0)編輯 收藏
         摘要: ◆軟件必須適應不同的終端,不同的訪問方式,不同版本的協議。對設計通用性要求較高
    ◆軟件必須解析和生成XML,涉及到大量的字符串和格式處理。對XML和性能要求較高
    ◆軟件必須具備實時監控功能,且具備主動推送功能,對多線程和異步通訊要求較高
    ◆軟件必須支持不同的持久化方式,對緩存和持久化要求較高
    ◆軟件必須支持基于全文的搜索,對搜索技術有一定要求
    ◆軟件界面必須是支持拖拽功能的,對GUI和Ajax有一定要求  閱讀全文
    posted @ 2009-12-18 12:14 Paul Lin 閱讀(310) | 評論 (0)編輯 收藏
         摘要: SVN是一個開放的、免費的版本控制管理工具,相比CVS,Perforce等其他工具,SVN在版本模型,鎖定策略方面要更加靈活高效。下面就讓我們開始一步一步地學習如何使用SVN,如何把版本控制融入到日常工作中,更重要的是在學習版本控制的過程中樹立起團隊合作的理念。

    關于SVN的參考資料,最好的莫過于其官方文檔《Version Control with Subversion》,作為新手一定要看的是里面的第一章《Fundamental Concepts》和第二章《Basic Usage》以及第九章《Subversion Complete Reference》。

    為了做到真正的In Action,我采用了Step-by-Step的方式,模擬一個項目從檢出項目開始,到修改本地副本,再到提交變更,解決沖突等一系列的實際工作中會遇到的場景,期望通過這些場景和任務來對SVN和版本控制、團隊合作有一個基本的認識  閱讀全文
    posted @ 2009-12-13 12:29 Paul Lin 閱讀(3470) | 評論 (5)編輯 收藏
         摘要: SVN日常操作基本命令總結
    1. 導入/導出資源:svn import、svn checkout
    2. 更新工作副本: svn update
    3. 添加變化:svn add、svn delete、svn copy、svn move
    4. 檢查變化:svn status、svn diff
    5. 撤銷變化:svn revert
    6. 解決沖突:svn resolved
    7. 提交變更:svn commit  閱讀全文
    posted @ 2009-12-11 18:23 Paul Lin 閱讀(444) | 評論 (0)編輯 收藏
         摘要: 這時就需要用到SVN提供的清理功能了。清理功能是通過svn cleanup 命令來完成的。當執行這個命令時,SVN會首先完成log文件中沒有完成的剩余工作,釋放鎖定,最后刪除log文件。通常我們都是在項目的根目錄來執行這個命令  閱讀全文
    posted @ 2009-12-11 18:19 Paul Lin 閱讀(354) | 評論 (0)編輯 收藏
         摘要: 什么時候是Branch?什么時候是Tag?原則如下:

    如果你還需要繼續向目錄提交變更,它就是個分支。如果一旦拷貝后不再提交任何改變哪就是標記。實際上SVN不會強制你不能對名為***tag的目錄進行commit操作,這只是通常上約定。即便因為誤操作我們也可以輕易的使用update操作回滾到當初創建Tag時的快照版本  閱讀全文
    posted @ 2009-12-11 17:39 Paul Lin 閱讀(365) | 評論 (0)編輯 收藏
         摘要: svn merge的命令用法有三種:
    A.svn merge sourceURL1[@N] sourceURL2[@M] [WCPATH]
    B.svn merge sourceWCPATH1@N sourceWCPATH2@M [WCPATH]
    C.svn merge[[-c M]...|[-r N:M]...] [SOURCE[@REV][WCPATH]]

    Step 1:確定要從哪個版本開始~那個版本結束
    Step 2: 執行集成
    Step 3: 提交集成結果

      閱讀全文
    posted @ 2009-12-11 12:02 Paul Lin 閱讀(456) | 評論 (2)編輯 收藏
         摘要: svn switch [--relocate] URL。該命令有兩種用法:一種是不使用參數relocate的,一種是使用relocate參數的。它們的使用原則如下:

    A.如果切換后的版本庫路徑還是在同一個版本庫,只是在不同的路徑下。那么使用svn switch URL
    B.如果切換后的版本庫位置已經改變(主機遷移,版本庫遷移),但是目錄結構不變。就需要加relocate參數  閱讀全文
    posted @ 2009-12-10 19:02 Paul Lin 閱讀(396) | 評論 (0)編輯 收藏
         摘要: 我們看到“創建分支”居然和普通的拷貝動作一摸一樣!是的對SVN來說,主干、分支、標記都是普通的目錄而已,這些都是人為加上的意義。  閱讀全文
    posted @ 2009-12-10 17:04 Paul Lin 閱讀(399) | 評論 (0)編輯 收藏
         摘要: SVN提供了幾種解決沖突的建議:

    A.(p) postone 延遲解決
    B.(df) diff-full 顯示所有沖突的內容
    C.(e) edit 啟動編輯器解決沖突
    D.(r) resolve 標識沖突已經解決
    E.(mf) mine-full 用我的版本覆蓋他人的修改
    F.(tf) theirs-full 用他人的版本覆蓋我的修改
    G.(l) lanuch 啟動其他工具來解決沖突
    H.(h) help 啟動幫助信息

    雖然SVN提供了比較差異和解決沖突的方法,但避免沖突的最好方法永遠只有一個:明確的分工和良好的溝通,盡量避免多個人同時修改同一份文件。如果不能避免,那么最好指定一個人在提交前負責合并各人的更新,然后一次性提交。  閱讀全文
    posted @ 2009-12-09 23:25 Paul Lin 閱讀(593) | 評論 (0)編輯 收藏
         摘要: ●使用svn update -r 命令
    ●使用svn copy命令
    ●使用svn cat命令配合重定向  閱讀全文
    posted @ 2009-12-09 17:19 Paul Lin 閱讀(426) | 評論 (0)編輯 收藏
         摘要: 默認情況下如果svn log不加任何參數,會顯示當前目錄下所有資源的變更歷史,我們可以通過PATH,URL來限定顯示范圍,還可以通過URL PATH來顯示某個URL下的某個(些)文件的變更歷史,甚至還可以指定版本號,版本范圍。

    各種svn log的用法看似復雜,實際上離不開兩樣東西:

    A.資源路徑:本地路徑(PATH)或遠程路徑(URL/URL PATH)
    B.版本號或版本范圍:-r 18:HEAD或者@19
      閱讀全文
    posted @ 2009-12-09 16:01 Paul Lin 閱讀(307) | 評論 (0)編輯 收藏
         摘要: A.因為SVN為了保護用戶不小心update操作而覆蓋自己本地的修改,不會對已經被修改但尚未提交的資源進行update操作。像這種情況下只能用svn revert而不能用svn update。

    B.和svn update不會對已修改而尚未提交的資源進行update之外,svn del同樣不會刪除已修改但尚未提交的資源---除非你強制加上--force參數。

    C.不要把所有變更都放在最后一次性提交,提交要及時、多次。否則一旦回滾所有其他修改都會跟著撤銷。  閱讀全文
    posted @ 2009-12-09 11:19 Paul Lin 閱讀(555) | 評論 (0)編輯 收藏
         摘要: 回滾屬性和回滾操作  閱讀全文
    posted @ 2009-12-09 11:00 Paul Lin 閱讀(297) | 評論 (0)編輯 收藏
         摘要: 實際上svn revert命令是一把“雙刃劍”。它有幾個需要特別小心的地方:

    A.回滾是不可恢復的。由于svn revert回滾的是任何未提交的操作,內容,屬性。所以意味著SVN不會為你保存任何回滾前的歷史版本
    B.回滾是不止于一點而是一段時間的。只要你沒有提交版本,那么不論你多久之前所做的修改都會被回滾,而不僅僅是最近一次的修改  閱讀全文
    posted @ 2009-12-09 09:47 Paul Lin 閱讀(747) | 評論 (0)編輯 收藏
         摘要: show-updates參數會令客戶端顯示本地工作副本那些文件是out-of-date的。它并不會立即更新本地副本,而是告訴你那些文件會在下次的svn update中被更新  閱讀全文
    posted @ 2009-12-08 21:50 Paul Lin 閱讀(340) | 評論 (0)編輯 收藏
         摘要: A. svn cat 命令是客戶端命令,在客戶端運行。而svnlook cat 命令是服務器端命令,只能在版本庫所在的機器上運行
    B. svn cat 命令可以查看本地工作副本(PATH)或版本庫(URL)資源的內容,而svnlook cat 命令只能使用REPOS_PATH PATH_IN_REPOS形式  閱讀全文
    posted @ 2009-12-08 17:04 Paul Lin 閱讀(472) | 評論 (0)編輯 收藏
         摘要: 整個目錄的忽略

    Step 1: 把目錄export到其它目錄下
    Step 2: 把版本庫上的對于目錄刪除并同步到本地
    Step 3: 把原有目錄添加回原來的位置下,并加入SVN ignore列表
    Step 4: 檢查忽略是否生效

      閱讀全文
    posted @ 2009-12-08 16:29 Paul Lin 閱讀(501) | 評論 (0)編輯 收藏
         摘要: 一次性忽略多個文件:

    Step 1: 在本地任意目錄下創建一個文件,名字假設為ignore.txt
    Step 2: 編輯該文件,添加想要忽略的文件名列表
    Step 3: 通過文件一次忽略多個條目
    Step 4: 提交變更
    Step 5: 檢查忽略是否生效
      閱讀全文
    posted @ 2009-12-08 16:15 Paul Lin 閱讀(544) | 評論 (0)編輯 收藏
         摘要: 單個文件的忽略:

    Step 1: 把文件備份到其他位置
    Step 2: 把版本庫對應的文件刪除
    Step 3: 從版本庫更新到本地工作副本
    Step 4: 把文件拷貝回原有位置
    Step 5: 把文件添加到SVN的全局屬性svn:ignore
    Step 6: 提交屬性變更  閱讀全文
    posted @ 2009-12-08 14:51 Paul Lin 閱讀(366) | 評論 (0)編輯 收藏
         摘要: 關于svn add命令我們有2個需要注意的地方:
    A.和svn status命令一樣,svn add命令只能使用PATH,而不能使用URL作為參數
    B.當svn add命令執行完畢后,相關資源并不會馬上立即被加入版本控制中,需要再執行一次commit

    我們需要在每次commit后立即update,已保證我們最新代碼被上傳到版本庫的同時,他人的最新代碼能夠被及時更新到本地  閱讀全文
    posted @ 2009-12-08 11:09 Paul Lin 閱讀(359) | 評論 (0)編輯 收藏
         摘要: 使用svn info命令可以查看項目版本控制的靜態信息
    使用svn status命令可以查看項目版本控制的實時變更信息  閱讀全文
    posted @ 2009-12-08 10:09 Paul Lin 閱讀(448) | 評論 (0)編輯 收藏
         摘要: 把項目import到版本庫之后,項目并不會立即就被加入到版本控制中,還需要再從版本庫中check out到本地原有位置才是真正地吧項目加入到版本控制。這一點和TCP/IP協議的三次握手過程類似。必須確保雙方都知道對方的存在和聯系。  閱讀全文
    posted @ 2009-12-07 16:37 Paul Lin 閱讀(415) | 評論 (0)編輯 收藏
         摘要: 下面我們把svn list和svnlook tree命令的用法總結一下:

    A.svn list PATH:列出PATH對應的版本庫路徑下的目錄內容
    B.svn list URL: 列出URL對應的路徑下的目錄內容
    C.svnlook tree REPOS_PATH:遞歸地列出REPOS_PATH對應的版本庫路徑下的目錄樹內容
    D.svnlook tree REPOS_PATH PATH_IN_REPOS: 遞歸地列出REPOS_PATH下子目錄PATH_IN_REPOS路徑下的目錄樹內容  閱讀全文
    posted @ 2009-12-07 16:12 Paul Lin 閱讀(694) | 評論 (0)編輯 收藏
         摘要: 既然暫時還沒有人扮演我生命中不速之客的角色,那就讓我自己扮演自己生命中的不速之客吧  閱讀全文
    posted @ 2009-11-16 22:35 Paul Lin 閱讀(327) | 評論 (2)編輯 收藏
         摘要: 有些人,有些事總是讓我們無奈  閱讀全文
    posted @ 2009-10-26 09:23 Paul Lin 閱讀(546) | 評論 (2)編輯 收藏

    習慣了在最后關頭,看著希望變成失望


    習慣了在失落后,用滿不在乎和自嘲來告訴他人我還很好

    習慣了深夜時分一個人舔舐傷口,咀嚼苦澀。然后再次上路

    習慣了在文字中,尋找那些失去的東西

    習慣了用音樂和電影來麻醉傷痛

    習慣了在旅途中體驗生活,追求內心的平靜

    習慣了冷眼看人生,用遺忘拒絕傷害,用笑的方式去哭

    ... ...

    是的,太多的太多,我早就已經習慣

    只是

    我依然不習慣向命運低頭
    posted @ 2009-10-09 21:18 Paul Lin 閱讀(371) | 評論 (0)編輯 收藏
         摘要:
    A. 相同ORACLE_HOME下,INSTANCE_NAME可以相同,但ORACLE_SID必須唯一

    B. 不同ORACLE_HOME下,ORACLE_SID可以相同

    C.不同INSTANCE_NAME可以對應不同的DB_NAME,也可以對應相同的DB_NAME  閱讀全文
    posted @ 2009-07-30 14:03 Paul Lin 閱讀(1685) | 評論 (0)編輯 收藏
    不想說什么了,看看豆瓣網的一個評論


    MV拍的很靜,是我無意間下載的,James Blunt坐在白色的平臺上背靠著一望無際的大海, 天上下著雨,音樂跟進,干凈的畫面,James Blunt一件一件的脫著外衣背心 ,赤膊盤腿坐在雨中,脫鞋然后擺放整齊,從口袋中掏出幾樣物品,然后一一擺放整齊,我仔細看清楚最后那樣物品是一個吉他撥片。鏡頭上搖 天空中飛鳥盤旋,鏡頭回落,James Blunt起身跑向無邊的大海 縱深而躍。 
       
    后來我要在節目里播放這首歌去查背景資料才得知這是一個從科索沃維和部隊坦克上回來的英國人。 
       
    歌曲中的那種美我想每個聽過后的人都能感覺到,正如mv里的畫外語,就算你赤膊上陣把自己扒光也無法得到你想要的人這種痛苦只有轉身而躍才能解脫,真正的解脫是自我內心掙扎后需要面對的事實。

    http://v.youku.com/v_show/id_XNDc3MDA4MA==.html
    posted @ 2009-07-24 00:01 Paul Lin 閱讀(371) | 評論 (0)編輯 收藏
    <2009年7月>
    2829301234
    567891011
    12131415161718
    19202122232425
    2627282930311
    2345678

    常用鏈接

    留言簿(21)

    隨筆分類

    隨筆檔案

    BlogJava熱點博客

    好友博客

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产免费拔擦拔擦8X高清在线人| 亚洲AV成人无码网天堂| 亚洲色欲www综合网| 亚洲宅男天堂a在线| 亚洲人AV在线无码影院观看| 国产亚洲精品成人久久网站| 国产va免费精品| 最近高清中文字幕免费| 最近的中文字幕大全免费版| 全部免费国产潢色一级| 国产精品久久久亚洲| 亚洲欧洲久久精品| 色天使亚洲综合一区二区| 中文字幕在线免费看线人| 国产成人福利免费视频| 永久免费看bbb| 亚洲色WWW成人永久网址| 亚洲国产高清美女在线观看| 国产精品亚洲一区二区三区在线观看| 国产综合免费精品久久久| 黄页网站免费观看| 亚洲区不卡顿区在线观看| 亚洲综合免费视频| 黄色a三级三级三级免费看| 无码精品人妻一区二区三区免费看| 精品熟女少妇AV免费观看| 久久久久亚洲av成人无码电影| 亚洲欧洲日本天天堂在线观看| 理论亚洲区美一区二区三区| 久久永久免费人妻精品| 国外成人免费高清激情视频| 亚洲精品成人无限看| 亚洲熟妇av午夜无码不卡| a级毛片免费完整视频| 四虎成人免费观看在线网址| 亚洲国产成人高清在线观看| 亚洲av日韩av永久无码电影| 免费国产叼嘿视频大全网站| 成人免费视频国产| 亚洲欧洲高清有无| 中文在线免费观看|