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

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

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

    Tin's Blog

    You are coming a long way, baby~Thinking, feeling, memory...

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      128 隨筆 :: 0 文章 :: 221 評論 :: 0 Trackbacks

    2006年2月16日 #

         摘要: 自己申請域名把blog遷移了一下。因為內(nèi)容也很少和Java相關,感興趣的朋友輕修改一下訂閱地址。
    Rss: http://feed.feedsky.com/iamtin
    Blog: http://tin.zztin.com  閱讀全文
    posted @ 2008-06-04 10:00 Tin 閱讀(1725) | 評論 (0)編輯 收藏

         摘要: 在中文網(wǎng)織年會上和啄木鳥老大HD討論了一下好看簿的架構問題,而后老黃寫了一個blog entry:
    架構考量-選擇的難度
    里面談到了架構一個高支撐能力的Web 2.0應用需要考慮的架構選型問題,對我很有幫助。我也回復一下他的建議:  閱讀全文
    posted @ 2007-11-28 22:39 Tin 閱讀(2867) | 評論 (1)編輯 收藏

    posted @ 2007-10-24 13:52 Tin 閱讀(4712) | 評論 (0)編輯 收藏

         摘要: Twitter的水平擴展的一些關鍵點,雖然它是個RoR應用,但是這些建議絕對是放之四海而皆準的,非常好的總結。
    因為年初Twitter曾經(jīng)遇到了性能瓶頸,而且?guī)缀跏譄o策。當初很多人開始懷疑Ruby的性能問題,而后Twitter站起來了 ^__^
    有時間的朋友看看這個slide:http://www.slideshare.net/Blaine/scaling-twitter,沒有時間的看看我的摘要。  閱讀全文
    posted @ 2007-10-16 08:42 Tin 閱讀(3190) | 評論 (3)編輯 收藏

         摘要: 一位ID是jackson1225的網(wǎng)友在javaeye詢問了一個大型Web系統(tǒng)的架構和部署選型問題,希望能提高現(xiàn)有的基于Java的Web應用的服務能力。由于架構模式和部署調(diào)優(yōu)一直是Java社區(qū)的熱門話題,這個問題引發(fā)了很多熱心網(wǎng)友的討論,其中一些意見對其它大型Web項目也有很好的指導意義。  閱讀全文
    posted @ 2007-09-17 22:48 Tin 閱讀(7116) | 評論 (5)編輯 收藏

         摘要: 架構師這個概念比較虛。在國內(nèi),架構師其實就是有強烈基礎傾向的開發(fā)者,他們有很大的熱情來實驗一個自己熟悉或者感興趣的東西,從概念上這不是架構師。
    我很關注國外的一些架構師描述如何成為架構師。架構師其實最重要的是見識!要無傾向性的研究技術和需求。我很喜歡的印度的一位精神導師克里希姆納提說過自由的前提是要學會聆聽,而聆聽就是在聽的時候心理不要有任何反抗或者評論的去聽,所有的思考都要留在聽到以后。電影《教父》里面有一句臺詞我非常喜歡,不要仇恨你的敵人,因為那會影響你的判斷力。我想這都是一個意思。如果想要成為架構師就要多聆聽,然后思考,又清楚的判斷力,這樣選擇才會是正確的!  閱讀全文
    posted @ 2007-09-15 14:57 Tin 閱讀(2560) | 評論 (3)編輯 收藏

         摘要: 我覺得fins同學的一些說法會造成沒有深入使用這幾個框架的朋友的誤解。因為這幾個框架的思想是不一樣的,所以它們的語法也是不同的。fins同學的評價似乎更像從Java的OO想法來評價幾個js框架。
    其實,moo一開始的想法就是light weight,所以它的很多語法其實就是沒有語法。fins說的json語法,其實就是js里面的散列對象嘛,javascript語法本來就是這個樣子呀,不包裝就是這樣。而這種方式如果寫的好讀起來很像DSL,很舒服,moo充分發(fā)揮了這個好處。
    prototype和JQuery都沒有強調(diào)繼承這樣的概念。javascript的強大很大就來自它的原形繼承,如果要用好它就要利用好原形繼承。prototype在這方面很像Ruby,比如 Enumerable,這是一種按照行為的抽象,很符合Ruby/Python里面Module的想法,并非所有行為都要抽象到一個對象再繼承,行為本身也可以抽象再混入。  閱讀全文
    posted @ 2007-09-13 08:40 Tin 閱讀(8245) | 評論 (9)編輯 收藏

         摘要: javaeye的hax最近在他的blog上進行了一場關于如何寫css的討論,其中反思和討論了一些關于基于標準或trick進行設計的選擇問題,這個問題也是David Heinemeier Hansson對于XHTML/CSS/Javascript標準進行RIA開發(fā)話題的一個延展。我們可以從中思考如何在不完美的技術中選擇一條相對完美的技術路線?  閱讀全文
    posted @ 2007-09-10 08:02 Tin 閱讀(2526) | 評論 (1)編輯 收藏

    posted @ 2007-08-03 16:42 Tin 閱讀(2139) | 評論 (1)編輯 收藏

         摘要: 非常好的職業(yè)建議,來自Scott Adams
    從一個非常喜歡的人的blog看到的,這個人是Tomcat的作者,現(xiàn)在是Apple的Object C開發(fā)者,兼重要的RoR作者,兼資深攝影師,兼Mac大fans,他叫James Duncan Davidson(http://duncandavidson.com/)。
    在一篇Blog講到,Scott Adams說:
    每個人都可以找到通過一些努力就可以躋身前25%的行業(yè)。例如我,我可以比大多數(shù)人畫的好,但是我還夠不上藝術家的水平。我也沒有達到喜劇演員那種好笑的水平,但是我比大多數(shù)人好笑。魔法在于沒什么人即畫得好又會寫笑話。所以混合一下我就很稀有了。加上我的商業(yè)知識背景,我突然發(fā)現(xiàn)我比其它的動畫人更能理解它(商務)。  閱讀全文
    posted @ 2007-08-03 16:06 Tin 閱讀(2914) | 評論 (4)編輯 收藏

         摘要: 本文已經(jīng)發(fā)表于InfoQ中文站點(http://www.infoq.com/cn/news/2007/07/light-web-servers)

    IBM developerWorks網(wǎng)站上最近發(fā)布了一則Cameron Laird的關于輕量級Web服務器的文章,里面列舉了很多的輕型的Web服務器實現(xiàn)和它們的特點,Cameron還從自己的經(jīng)驗出發(fā)總結了評價Web服務器的一些指標。這篇文章目的在于擴展我們在 Web應用部署時的思路,讓我們重新思考Web應用的架構和部署方案。眾多的輕量級Web服務器其實見證了動態(tài)腳本語言實現(xiàn)Web應用的火爆,給實現(xiàn) Web應用提供了更多解決方案。

    輕量Web服務器這個概念關注“輕巧性”,這意味著簡單、易于安裝、流線化、要求低和健壯。這種“輕巧”主要是相對于目前市場占有率占優(yōu)的 Apache和IIS而言的,輕量Web服務器應該更小更簡單,并且它們至少要有一些性能/特性超過這兩個產(chǎn)品(這樣它們才可能分得市場份額)。 Cameron這樣對比了“輕量”相比“重量”的一些優(yōu)勢:  閱讀全文
    posted @ 2007-08-02 10:10 Tin 閱讀(2110) | 評論 (0)編輯 收藏

         摘要: 有幸在InfoQ的飯局里面認識了王翔,他對.Net和MS技術的確有非常深的造詣。今天看到他的一篇評論:“C#正變得越來越臃腫”
    發(fā)表了一些感想:

    先進與成熟的確是矛盾,但是現(xiàn)在的新技術成熟的都比較快,可能是人接受新事物的速度提高了吧。
    Haskell 這樣的語言是函數(shù)式編程的代表,更多的需要從頭開始。所以國外學計算機理論首選Haskell,很多老外抱怨過上學的時候這個東西學的頭疼,但是后來他們也都表示獲益匪淺。我們的計算機教育是本末倒置,所以我們這些程序員覺得他們晦澀難懂。但是看到Erlang這樣的語言,在未來多核環(huán)境下的前途,我們還是會動搖的。  閱讀全文
    posted @ 2007-07-31 15:41 Tin 閱讀(894) | 評論 (0)編輯 收藏

         摘要: 本文已經(jīng)發(fā)布于InfoQ中文站(http://www.infoq.com/cn/news/2007/07/java-securejsh-publish),感謝Complystill為我們貢獻了SJSH這個項目。

    JavaEye上活躍的開發(fā)者Complystill(歆淵)最近發(fā)布了自己的開源SecureJSH項目,提供了一個通過SSH交互進行Java應用開發(fā)或者管理的工具。

    在項目的介紹中可以得知,SecureJSH與Ptyhon里面的ipython或者Ruby里面的irb非常相似。它們都允許交互式運行語言的代碼,以方便跟蹤或者調(diào)試應用。但是,Java與Ruby、Python不同,后者是動態(tài)腳本語言,它們天生具有解釋執(zhí)行的特點(注意:當然Python支持預編譯,Ruby也將在YARV中開始支持,這里指它們的解釋執(zhí)行狀態(tài))。我們常見的Python和Ruby發(fā)行版本基本上都包括自己的解釋器(這也是它們的核心組件),但是Java是一種需要中間編譯過程的語言,默認情況下它無法直接解釋運行,也沒有相應的解釋器。  閱讀全文
    posted @ 2007-07-27 09:56 Tin 閱讀(1535) | 評論 (1)編輯 收藏

         摘要: http://developer.yahoo.com/yslow/

    這是一個配合Firebug工作的firefox插件。能夠對你訪問的頁面進行分析。
    它可以:
    * 性能報告
    * HTTP/HTML信息匯總
    * 列出頁面中的組件
    * 包含了JSLint  閱讀全文
    posted @ 2007-07-27 09:33 Tin 閱讀(687) | 評論 (0)編輯 收藏

         摘要: 在這里發(fā)現(xiàn)了一個技巧:http://rubyisawesome.com/2007/7/10/mysql-secrets-g-instead-of
    在Mysql的命令行工具里面給查詢加入一個\G參數(shù)。橫向的表結構會轉為使用縱向表結構輸出,利于閱讀。  閱讀全文
    posted @ 2007-07-20 14:41 Tin 閱讀(5302) | 評論 (0)編輯 收藏

         摘要: 這是敏捷中國的一個討論,我問了一下架構設計是否在敏捷迭代過程中有一席之地?大家產(chǎn)生了如下討論。如果我的引用冒犯了當事人,請email我,我會及時修改的。我希望大家能夠一起討論這個topic。  閱讀全文
    posted @ 2007-07-20 09:03 Tin 閱讀(877) | 評論 (0)編輯 收藏

         摘要: 13日,Joyent宣布基于GPL v2將Slingshot和Connector開源。Joyent Slingshot允許開發(fā)者將Rails應用程序部署為與桌面應用行為一致,可以在線或者離線(保持同步),可以拖拽,與所有其它桌面應用程序交互等。另外,Joyent還提供了Connector產(chǎn)品和一組可以與Joyent Slingshot協(xié)同工作的第三方應用程序。  閱讀全文
    posted @ 2007-07-18 14:34 Tin 閱讀(1408) | 評論 (0)編輯 收藏

         摘要: JavaEye的站長Robbin Fan在他的博客中對SAAS(軟件即服務)進行了一番討論,他總結了目前常見的一些SAAS應用,并且總結了這些應用的特點,展望了SAAS的發(fā)展方向。
    2005年,David Heinemeier Hansson將自己在項目中使用的基于Ruby的開發(fā)框架剝離并開源,從此世界上有了RoR(Ruby on Rails)的響亮名號。很快,Rails在其它語言中也架設了自己的高速軌道,從此Rails思想處處開花,受到了廣大開發(fā)者的擁護,這是Rails的敏捷本質(zhì)決定的。隨著RoR閃現(xiàn)在開發(fā)者眼前的還有Rails背后的公司37signals,這是一家位于芝加哥的創(chuàng)業(yè)型小公司,雖然他們的員工目前還是個位數(shù),但是開發(fā)出的產(chǎn)品卻有超過100萬人在使用……  閱讀全文
    posted @ 2007-07-18 14:32 Tin 閱讀(1522) | 評論 (3)編輯 收藏

         摘要: David Heinemeier Hansson(以下簡稱DHH,Ruby on Rails作者)在最近的一篇Blog“如果我真的喜歡HTML、CSS和Javascript,那又怎么了?”(What if I actually like HTML, CSS, and JavaScript?)中闡述了他對RIA未來的一種看法。他認為目前在三大Web標準規(guī)范下的HTML、CSS和Javascript是一套足夠強大的工具箱,這些技術提供給開發(fā)人員的功能并沒有影響到Web應用的發(fā)展,并且隨著像Firebug和其他優(yōu)秀Javascript庫的支持下,Web程序員的日常開發(fā)工作已經(jīng)非常愜意了。  閱讀全文
    posted @ 2007-07-18 14:28 Tin 閱讀(1206) | 評論 (0)編輯 收藏

    posted @ 2007-06-06 11:12 Tin 閱讀(713) | 評論 (0)編輯 收藏

    posted @ 2007-05-23 11:44 Tin 閱讀(1081) | 評論 (4)編輯 收藏

    posted @ 2007-01-26 14:37 Tin 閱讀(1918) | 評論 (2)編輯 收藏

         摘要: TSS上面Ganesh同志的文章內(nèi)容是非常有益的,討論了session的這兩個api的區(qū)別。get是每次都會從數(shù)據(jù)庫取數(shù)據(jù)以保證數(shù)據(jù)的可靠。而load則會返回一個proxy,相當于一個存根,訪問的時候從當前session或者hibernate二級緩存中查找,如果找不到則從數(shù)據(jù)庫中Lazy Load一下。從Hibernate的復雜性上來說,這個概念應該算比較容易理解的,而且這種存在也是非常合理的。順便里面還補充了一下JPA里面也有類似的getReference方法,行為類似load。看完文章你會開始注意這個細節(jié)。
    可是,這個細節(jié)的下面卻引起了n多人的討論,討論的核心就是Hibernate是不是有太多細節(jié)了?
    很多人說這樣不是OO的,很多人說Hibernate的細節(jié)造成它復雜,有人說Hibernate影響了他們的工作效率,等等,反正反對者站出來很多。我想這是可喜的。
    說明在Java的Killer-APP組合Spring+Hibernate后面還是有很多持懷疑態(tài)度的人的,我們隨時都需要提問題的大腦!
    所以,我們也思考一下吧:  閱讀全文
    posted @ 2007-01-26 14:27 Tin 閱讀(5154) | 評論 (2)編輯 收藏

         摘要: 本文翻譯自IBM DeveloperWorks上的一篇文章,該文講述了測試分類(test categorization)的概念,本身這個概念很簡單,但是卻實際的解決我們常見的問題,在我們的測試龐大到一定地步的時候,測試的運行時間過長,維護成本很高,我們?nèi)绾文軌虮WC持續(xù)集成(CI)的正常運行?那就是通過測試分類。所以我翻譯了這片文章,希望對大家有所幫助。  閱讀全文
    posted @ 2006-12-01 00:30 Tin 閱讀(1949) | 評論 (0)編輯 收藏

         摘要: 這個問題出現(xiàn)在這種情況,你的每個testCase都需要使用某一種初始化比較耗時的對象(資源),舉例如數(shù)據(jù)庫連接、Spring Context。我們遇到的問題是Selenium測試中開啟和關閉瀏覽器,如果一個test啟動關閉(我們的程序還需要登錄和注銷),這樣測試的時間會拖的很長,給持續(xù)集成帶來了困難。
    所以……  閱讀全文
    posted @ 2006-11-17 17:29 Tin 閱讀(13550) | 評論 (1)編輯 收藏

         摘要: Selenium Remote Control項目組很高興的宣布Selenium Remote Control 0.9.0發(fā)布。
    你可以在這里察看:
    http://www.openqa.org/selenium-rc/
    也可以在這里下載:
    http://www.openqa.org/selenium-rc/download.action
    0.9.0包括很多酷玩意,包括frame支持,多窗口支持(用來測試那些不能夠在子frame中運行的應用),一個Konqueror瀏覽器launcher,新的cookie管理功能,和Firefox 2.0與IE7的支持。還包括一個試驗性的在Selenium代理中直接的SSL支持,一個新的實驗性的“代理注入(proxy injection)”模式允許我們通過修改HTTP代理來更好的控制我們測試的應用程序。
    Have Fun!  閱讀全文
    posted @ 2006-11-15 15:57 Tin 閱讀(1570) | 評論 (3)編輯 收藏

         摘要: 歡迎所有對Selenium感興趣的(翻譯的過程就是很好的學習)或者已經(jīng)使用Selenium的同學積極參加,參加的方式可以是:直接參與翻譯,編寫原創(chuàng)學習文章并添加到相關資源列表,交流心得并將心得添加到相關資源列表,提供使用的視頻片斷,推薦好的Selenium文章進入翻譯計劃,提出你自己的意見。以上方式都非常歡迎,可以發(fā)信給我進行溝通(iamtin AT gmail.com)。
    目前我們使用JavaScud的Wiki進行翻譯工作,網(wǎng)址如下:
    http://wiki.javascud.org/display/SEL/Home  閱讀全文
    posted @ 2006-11-13 15:31 Tin 閱讀(2705) | 評論 (42)編輯 收藏

         摘要: 濃縮一下:
    1、何時、何目的來用Selenium選擇不同。RC、Fit適合從需求階段就開始寫。而IDE錄制則適合后補。
    2、重構支持。RC重構友好一些。Fit重構不友好。
    3、IDE目前限定于FF,做跨瀏覽器RC比較好。但是IDE錄制后的代碼很方便轉為RC方式。
    4、跨域兼容性問題,IDE解決的比較好。  閱讀全文
    posted @ 2006-10-30 21:33 Tin 閱讀(3267) | 評論 (3)編輯 收藏

         摘要: 我用的是Eclipse 3.2,操作系統(tǒng)是WinXP SP2。
    需要把eclipse\plugins\org.eclipse.swt.win32.win32.x86_3.2.0.v3232m.jar里面的swt-win32-3232.dll解壓縮出來拷貝到WINDOWS\SYSTEM32里面。
    然后就OK了。
    是在Eclipse里面運行Springside的ANT Task的時候,如果需要通過console輸入交互信息,則會報這個錯。應該是因為Eclipse的console依賴于那個本地庫,而平常我們安裝Eclipse不會拷貝那個庫。大概如此了。  閱讀全文
    posted @ 2006-09-11 15:10 Tin 閱讀(8896) | 評論 (12)編輯 收藏

         摘要: 說說遺憾:
    1、OSGi在B/S架構中還不好應用。雖然例子是B/S的,可是居然是Servlet模型,里面解釋了目前Equinox項目也在擴展應用服務器支持和JSP支持等,可是起碼目前還不成熟。
    2、模塊的粒度很成問題。目前OSGi的契約機制與java interface機制對比一下。OSGi不可能完全取代本地的interface式的解藕,當然人家也沒這么說。只使我擔心過渡設計后,過細的Bundle肯定會得不償失,所以需要有人設計/計劃這個粒度。這個可能與基于Web services的SOA架構面臨類似的問題,需要好的架構師。
    3、文檔不友好么?說實話,很感謝BlueDavy和OSGi觀察者那些大牛的貢獻。但是感覺production的樣例工程還是很難搞到(其實Eclipse plugins的例子滿多哈,可惜沒啥文檔,需要硬著頭皮看),對應的指導文檔還沒出現(xiàn)。BlueDavy提供的servlet實現(xiàn)我們不可能跟上,畢竟簡單也是一種需求。(那誰說過度設計比設計不足更可怕,那個我不是唱反調(diào),我希望我們都能找到那個sweet point,有個好的參照那最好不過了)。 <  閱讀全文
    posted @ 2006-09-06 11:27 Tin 閱讀(4254) | 評論 (2)編輯 收藏

         摘要: 先分析一下在輕量化的Java EE下面他們存在的意義:
    1、有的人說過在Web項目中Manager和DAO是同意的,尤其是在透明ORM存在下,DAO由于往往是CRUD的實現(xiàn)場所,而Manager卻往往是薄薄的一層門面,很多人就在質(zhì)疑兩者的合并問題。可是robbin曾經(jīng)進行過一個精辟的分析,雖然兩者做的看起來差不多,可是兩者的事務屬性卻不一樣,Manager應該有清晰的事務界限,而DAO不應關心于此。也就是說Manager可能會將幾個DAO方法組合調(diào)用,然后封裝在一個事物中。這樣說明確了兩者的一個重要區(qū)別,我們也能體會在使用聲明事務的時候有一個分明的事務界限是很有意義的,否則就有可能把Manager中的一個事物拆分,這樣實際上就錯誤了。
    2、有些人質(zhì)疑透明ORM存在的情況下DAO存在的意義,因為透明ORM基本已經(jīng)隔離了不同數(shù)據(jù)庫的方言區(qū)別。這個也很簡單,Rod大叔分析過。透明ORM存在的情況下DAO起到了隔離透明ORM與EJB或者JDBC實現(xiàn)的作用,這幾種實現(xiàn)實際上是應該考慮到的。
    3、還有一個問題,就是DAO是否應該隱藏透明ORM的API。因為前面說到了DAO起  閱讀全文
    posted @ 2006-09-05 21:52 Tin 閱讀(3646) | 評論 (3)編輯 收藏

         摘要: 今天TSS和InfoQ都轉了一篇Spring與EJB3的讀后感,我就看了下,標題和介紹滿吸引人的。內(nèi)容嘛其實有點不過癮,但是先記錄下來吧。
    http://www.devx.com/Java/Article/32314/0/page/1
    總的來看Spring+Hibernate與JPA很相似,它們都是基于pojo的持久化。
    Hibernate Session和JPA Entity Manager基本上等價,但是要記住他們的兩個重要區(qū)別。Hibernate session是一個實體緩存也是一個ORM引擎的接口。而JPA中這兩個概念是分開的。Persistence context作為緩存而entity manager則作為ORM引擎的接口。…………  閱讀全文
    posted @ 2006-09-04 20:45 Tin 閱讀(4260) | 評論 (1)編輯 收藏

         摘要: 在Eclipse里面運行functional-test這個target的時候發(fā)現(xiàn)報錯(test target葉出錯的):
    Could not create task or type of type: junit.
    我就想當然的把junit-3.8.1.jar拷貝到我的%ANT_HOME%/lib下面了,結果問題依舊。
    ......
    解決方法目前看最好的就是在Eclipse的Window->Preferences->Ant->Runtime->Classpath里面Ant_Home你指定一下就可以了,可以是你自己的Ant或者Eclipse/plugins里面的ant,這沒關系,然后它就會自動掃描相應/lib目錄了(之前你應該已經(jīng)把junit-3.8.1.jar拷貝過去了)。
    然后就搞定了。注意,只有在Eclipse運行Ant才有可能遇上這個問題:D
      閱讀全文
    posted @ 2006-08-31 13:02 Tin 閱讀(1489) | 評論 (0)編輯 收藏

         摘要: 由于失業(yè)后家中又有人病了,還有很多亂七八糟的事忙,反正沒怎么寫也沒怎么看程序,很慚愧!有朋友說不厚道,賴我,我不厚。這兩天看《應用Rails進行敏捷Web開發(fā)》,RoR和去年剛看的時候感覺一樣,很舒服,現(xiàn)在可能對Java和Ruby的了解都比以前深一些了,看這本書會有些想法。不過沒時間紀錄,頭腦里也亂七八糟的,我只能說是胡言亂語。這本不是什么文章,這是我的一個工作習慣,只要開電腦就開個Notepad記錄工作情況,是個流水賬,由于Blog過于冷清,把它貼出來,別拍磚了,我已經(jīng)蔫了:Q  閱讀全文
    posted @ 2006-08-30 12:39 Tin 閱讀(1092) | 評論 (0)編輯 收藏

         摘要: 今天先看看Springside的bookstore的domain設計,這不是springside的重點,先看看。
    從hbm看起,在springside-bookstore/src/org.springside.bookstore.commons.domain.hbm下面放著這些hbm。
    在Order.hbm.xml里面可以看到一個list映射。list映射可以按照順序持久化one-to-many關系。使用了映射后OrderItem就沒有單獨的class聲明了,完全以一種組件的形式被映射到Order里面。  閱讀全文
    posted @ 2006-08-30 12:30 Tin 閱讀(2450) | 評論 (3)編輯 收藏

         摘要: 1、Java從語言轉向平臺。如同.Net,JVM本身提供了平臺的抽象。將會擴展動態(tài)語言與腳本語言的支持。
    2、企業(yè)應用的開發(fā)過程將簡化,如MDD一類,但目的是集中精力開發(fā)商業(yè)邏輯,而不是純簡化代碼或者什么什么。小型應用可能會轉向動態(tài)語言或腳本語言所營造的舒適開發(fā)框架,如RoR,或其它Rails。
    3、富領域模型替代貧血模型,基于JPA。
    4、目前的AOP、IoC工具依然會流行,而不一定會限定于EJB3模型中。事實說了算,Spring這種事實性標準影響力還是很大的。
    5、分布式的考慮,可伸縮型問題凸顯。如何透明實現(xiàn)分布式是個關鍵性問題,AOP是技術契機。
    6、Web2.0會產(chǎn)生巨大影響力,但Java絕不是唯一選擇。Java要找好自己的位置,同時在平臺上最好能夠更多的融合,如讓JVM支持PHP/Ruby/Python。
    7、Web部分競爭激烈,并會持續(xù)。EJB3的JSF命運難測。看Web2.0的浪潮了。  閱讀全文
    posted @ 2006-07-10 14:09 Tin 閱讀(1907) | 評論 (2)編輯 收藏

    posted @ 2006-06-06 11:28 Tin 閱讀(4615) | 評論 (3)編輯 收藏

         摘要: WebWork的result實現(xiàn)非常實用,它很好的解決了View渲染的靈活性問題。這才是MVC模式的優(yōu)勢所在,而像JSF那樣幫定JSP的MVC就吃不到這個甜頭了。說WebWork2是Model 2 MVC的巔峰就在這些靈活的地方。
    閑扯這個不是主要目的。現(xiàn)在Rome是Java下最常用的RSS包,最近消息似乎要轉入Apache的Abdera合并變成更強大的聚合引擎。用Rome生成和解析RSS都很方便。今天討論一下使用ROME給網(wǎng)站生成RSS,并通過WebWork2的Result機制渲染。
    最初是從WebWork的Cookbook上看到的RomeResult的文章,一看就會,我這里其實不過是舉個詳細點的例子,注意我使用的是WebWork 2.2.2和Rome 0.8:  閱讀全文
    posted @ 2006-06-05 22:25 Tin 閱讀(3386) | 評論 (7)編輯 收藏

    posted @ 2006-05-24 09:54 Tin 閱讀(789) | 評論 (0)編輯 收藏

         摘要: 在Hibernate中獲取有關聯(lián)關系的pojo。我是指例如一個User(用戶)擁有一個many-to-one的屬性Unit(單位),但是有時有些用戶的Unit屬性為空,如果按單位查詢用戶的時候那些單位為null的用戶就會被遺漏,如何調(diào)取呢?這本來是很簡單的,但是我想當然的使用了Restriction.eq,但是不行,后來看了手冊才發(fā)現(xiàn)應該使用Restrictions.isNul。下面是Test代碼...  閱讀全文
    posted @ 2006-05-11 13:09 Tin 閱讀(2384) | 評論 (0)編輯 收藏

         摘要: 這是擦拭法的本意。
    實際上BadClass()實例化以后Class里面就不包括T的信息了,對于Class而言T已經(jīng)被擦拭為Object。而真正的T參數(shù)被轉到使用T的方法(或者變量聲明或者其它使用T的地方)里面(如果沒有那就沒有存根,這里指ParameterizedTyp),所以無法反射到T的具體類別,也就無法得到T.class。
    而getGenericSuperclass()是Generic繼承的特例,對于這種情況子類會保存父類的Generic參數(shù)類型,返回一個ParameterizedType,這時可以獲取到父類的T.class了,這也正是子類確定應該繼承什么T的方法。
    我們應該利用這種特性,這對實現(xiàn)模版方法非常有用。  閱讀全文
    posted @ 2006-05-08 21:37 Tin 閱讀(2574) | 評論 (3)編輯 收藏

         摘要: 這兩天太忙了,沒時間寫B(tài)log,業(yè)余時間又扒了一次google的拖拽,對比了netvibes的,差不多,讓后就寫了個注釋,順便學習。
    google用了混淆,js里面的命名比較暈。我花了些時間把他們翻譯成容易看懂的命名,并且作了注釋,希望對大家有幫助。
    可以這里下載我的例子:
    http://www.tkk7.com/Files/iamtin/google_drag.rar
    //可拖拽Element的原形,用來將event綁定到各個鉤子,這部分市比較通用的,netvibes也是基本完全相同的實現(xiàn)
    //這部分推薦看dindin的這個,也會幫助理解,http://www.jroller.com/page/dindin/?anchor=pro_javascript_12
    var Drag = {
    //對這個element的引用,一次只能拖拽一個Element
    obj:null,
    //element是被拖拽的對象的引用,elementHeader就是鼠標可以拖拽  閱讀全文
    posted @ 2006-04-27 22:40 Tin 閱讀(15260) | 評論 (34)編輯 收藏

         摘要: 為我們的項目寫的一個輕量的分頁API。目的在于將分頁與數(shù)據(jù)查詢的邏輯完全剝離。我以前看過robbin發(fā)的通過detachedCriteria實現(xiàn)的分頁那片貼子,里面把分頁和數(shù)據(jù)查詢結合在一起了。而我覺得分開更輕量,而且替換也比較容易。但是這個實現(xiàn)中有一個反模式,在邏輯中生成了代碼,無奈之選,為了簡便。其中字符生成可以自己擴展i18n實現(xiàn),應該非常容易。
    分頁實現(xiàn)的接口:  閱讀全文
    posted @ 2006-03-31 12:30 Tin 閱讀(3487) | 評論 (6)編輯 收藏

         摘要: 使用jakarta commons-upload。
    升級到2.2.2后發(fā)現(xiàn)上傳中文會亂碼。
    經(jīng)過跟蹤發(fā)現(xiàn)在com.opensymphony.webwork.dispatcher.DispatcherUtils的prepare(HttpServletRequest request, HttpServletResponse response)方法。
    2.2.1->2.2.2時這個方法發(fā)生了非常的的變化。
    2.2.1時:
    public void prepare(HttpServletRequest request, HttpServletResponse response) {
    if (encoding != null) {
    try {
    request.setCharacterEncoding(encoding);
    } catch (Exception e) {
    LO  閱讀全文
    posted @ 2006-03-30 21:40 Tin 閱讀(3969) | 評論 (11)編輯 收藏

         摘要: 這是一篇很有趣的文檔,所以摘要一下,其實類似閱讀筆記,好像是3/25發(fā)布的:
    這時基于對以下人的采訪:
    JSF Jacob Hookom
    RIFE Geert Bevin
    Seam Gavin King
    Spring MVC Rob Harrop
    Spring Web Flow Rob Harrop and Keith Donald
    Stripes Tim Fennell
    Struts Action 1 Don Brown
    Tapestry Howard Lewis Ship
    Trails Chris Nelson
    WebWork Patrick Lightbody
    Wicket Eelco Hillenius
    里面問了每個框架的人6個相同的問題,很好的體現(xiàn)了各個Web框架的不同之處。如果配合Rod Johnson的J2EE Development Without EJB等書中對Web MVC的闡述會更加深刻的理解各種框架的思想和使用場合。我閱讀后很有收獲,所以將全文摘  閱讀全文
    posted @ 2006-03-30 16:28 Tin 閱讀(3200) | 評論 (0)編輯 收藏

         摘要: 今天瀏覽WW的Wiki,結果無意發(fā)現(xiàn)ww:date標簽的用法,撓頭一想以前沒有見過呀,仔細一看原來是2006/3/21才加上的。
    會頭看看項目發(fā)現(xiàn)用的ww 2.2.1中沒有這個標簽,心想是不是發(fā)布新版本了?
    果不出所料!發(fā)現(xiàn)OPENSYMPHONY已經(jīng)發(fā)布2.2.2了。
    不過2.2.2是在Opensymphony下的最后一個版本了,以后的版本就會以Struts Action 2.0的形式發(fā)布了,而后者今年8月才發(fā)布,中間的日子估計只能靠nightly build了。
    說說變化,發(fā)現(xiàn)增加了RichTextEditor,經(jīng)考察就是我們熟悉的FCK Editor。發(fā)現(xiàn)還增加了nifty corners,這是一個不用images的圓角容器(css+js),估計用在了某個theme里面。還有J2SE5的支持也更加完善,現(xiàn)在已經(jīng)可以支持泛型Collection的反射(無需-conversion文件了),還支持annotation風格的validation聲名(如此像Stripes那樣的Web框架就沒什么可吹噓的了)。其它的變化請參考他們的ReleaseNotes。   閱讀全文
    posted @ 2006-03-28 20:00 Tin 閱讀(2567) | 評論 (3)編輯 收藏

         摘要: BJUG的Cleverpig說起Stripes,正好前兩天在TSS上看到Simon Brown的Blog,對它有點感性認識,所以今天就看了一下,說些粗陋的感受:
    皮毛上的觀感:
    1、使用Annotation配置。將Action影射、返回View、默認Command注冊、是否驗證這些東西都通過Annotations搞,挺有意思。
    2、它也包裝了自己的Tag,Tag從感官上感覺很像WebWork的風格(估計Stripes也是過這個來實現(xiàn)bind,和Spring MVC相同吧,不過沒仔細看Stripes的bind方式)。但是它好像很方便與JSTL共用,所以我覺得它可能和Spring MVC類似,把變量拷貝到request里面,而不是WebWork那樣的VlueStack。
    3、它的Validation很Cool,用Annotation設定Validation相當舒適。
    4、它里面的event似乎挺有意思,也就是說一個Action可以對應多個method,它管它叫Event。現(xiàn)在WebWokr和Spring MVC對這都有支持,但是Annotation帶  閱讀全文
    posted @ 2006-03-22 21:36 Tin 閱讀(1452) | 評論 (0)編輯 收藏

         摘要: 遇到了一個奇怪的“瀏覽器兼容問題”……
    是這樣的,登陸頁面工作不正常,在firefox下總是沒有登陸,根本就沒有觸發(fā)webwork的filter dispatcher。
    打開我的三劍客:IE、Firefox、Opera測試,發(fā)現(xiàn)只有Firefox不行(Mozzila內(nèi)核的都不行)。
    然后花了3個多小時找原因,翻遍網(wǎng)絡:weblogic、webwork、fireforx所有關鍵詞都搜索了,沒有收獲。
    然后開始sniffer,看報文。
    經(jīng)過多次分析,發(fā)現(xiàn)firefox根本就沒有post那個form!
    然后又是繼續(xù)的分析還是無果,一籌莫展……  閱讀全文
    posted @ 2006-03-14 21:12 Tin 閱讀(541) | 評論 (2)編輯 收藏

         摘要: Webwork是標準的請求風格Web MVC,類似的有Struts、Spring MVC。這這種風格的MVC中都使用了前端控制器模式(企業(yè)架構模式),也就是說一個URL會被解析然后派發(fā)到對應的Action解析,而View調(diào)用的是Action處理后的Form對象或者Command對象(Rod的Without EJB)。
    上面引用了一些經(jīng)典的言論,而它們和“頁面控制器風格Action復用”有什么關系呢?
    嘿嘿,頁面控制器在這里指到了View的Page里面依然可以調(diào)用控制器(在Webwork中就是Action)。如果是以前肯定有人會說,如果用JSP我隨時可以在Page里面寫scriptlet,什么東西都能調(diào)用……
    可是,現(xiàn)在不一樣了。我們希望讓View單純一點,不要有雜亂無章的邏輯參與其中。
    可是,如果要是如上面所說那么Action在它的一個請求生命周期就要做所有的事……這樣一是使Action邏輯變得復雜,二是會變得難以復用。
    所以,說到這里就引出了這個主題:
    1、在頁面調(diào)用控制器
    2、復用控制器邏輯  閱讀全文
    posted @ 2006-03-10 14:45 Tin 閱讀(2590) | 評論 (4)編輯 收藏

         摘要: 根據(jù)生日計算年齡可以通過Calendar實現(xiàn)。最簡單可以考慮get(Calendar.DAY_OF_YEAR)來簡單修正年齡,但是遇到生日在閏年的2月29之后,或者今年是閏年的2月29之后可能出現(xiàn)計算不準,誤差一天。所以還是老實判斷年月日好了。
    public static int getAge(Date birthDay) throws Exception {
    Calendar cal = Calendar.getInstance();

    if (cal.before(birthDay)) {
    throw new IllegalArgumentException(
    "The birthDay is before Now.It's unbelievable!");
    }

    int yearNow = cal.get(Calendar.YEAR);
    int monthNow =   閱讀全文
    posted @ 2006-03-10 10:00 Tin 閱讀(2613) | 評論 (0)編輯 收藏

         摘要: Hibernate的透明持久化用起來非常舒服,有時甚至忘記了數(shù)據(jù)庫的存在。我身邊的朋友經(jīng)常會分不清save、saveOrUpdate、update的區(qū)別,lock、merge、replicate、refresh、evict甚至不知道是干什么用的。而且關于實體對象的生命周期也有很多概念不清,分不清transient、persistent、detached的區(qū)別,只是知道PO、VO這樣的通俗叫法。其實這些概念都很簡單,Hibernate的javadoc寫的都很清楚,只需看看就能明白。所以我花了些時間將Hibernate 3.1.2中session的javadoc部分翻譯了一下,旨在讓那些因為Hibernate的“透明”而忘記了它基本概念的人們停下來再看看這些概念  閱讀全文
    posted @ 2006-03-06 20:09 Tin 閱讀(10741) | 評論 (7)編輯 收藏

    posted @ 2006-02-28 11:26 Tin 閱讀(620) | 評論 (1)編輯 收藏

    posted @ 2006-02-24 13:56 Tin 閱讀(6202) | 評論 (17)編輯 收藏

    posted @ 2006-02-16 21:19 Tin 閱讀(3101) | 評論 (9)編輯 收藏

    posted @ 2006-02-16 21:15 Tin 閱讀(568) | 評論 (0)編輯 收藏

    posted @ 2006-02-16 21:10 Tin 閱讀(2965) | 評論 (3)編輯 收藏

    主站蜘蛛池模板: 在线观看无码的免费网站| 免费国产成人午夜电影| 四虎亚洲精品高清在线观看| 国外成人免费高清激情视频| 污网站免费在线观看| 亚洲av无码乱码国产精品fc2| 国产又粗又长又硬免费视频| 亚洲毛片基地日韩毛片基地| 四虎在线视频免费观看| 国产精品免费大片一区二区| 亚洲电影在线播放| 免费中文字幕不卡视频| 久久青草免费91线频观看不卡| 亚洲综合亚洲国产尤物| www国产亚洲精品久久久日本| 亚洲一区二区三区播放在线| 亚洲国产精品无码久久久久久曰| 亚洲中文字幕久久精品蜜桃| 亚洲情侣偷拍精品| 免费在线看v网址| 亚洲免费无码在线| 亚洲 欧洲 日韩 综合在线| 亚洲中久无码永久在线观看同| 亚洲av乱码中文一区二区三区| 亚洲乱码中文字幕手机在线| 在线精品一卡乱码免费| 国产精品成人啪精品视频免费| 亚洲欧洲日本国产| 亚洲中文字幕无码一区二区三区| 亚洲免费观看网站| 中文字幕免费在线视频| 亚洲人av高清无码| 久久久久久久亚洲Av无码| 亚洲日本中文字幕天堂网| 最近中文字幕无吗免费高清| 亚洲国产欧美一区二区三区 | 日韩精品视频免费观看| 亚洲国产精品99久久久久久| 久久亚洲春色中文字幕久久久| 免费一级毛片在级播放| 两个人的视频高清在线观看免费|