星期二, 5月 25, 2004

Builder Pattern...

From Design Pattern Java workbook, it mentions that a builder can be written as:

Builder b = new Builder() ;
new Parser(b).parse();
result = b.build();

I have spent whole day to design these two classes. It looks like very simple to implement, but test-case is a little bit hard to code. parse() itself is a very coarse-grained method. there are too many assertXxxx() for this method. Another approach is that following JUnit in Action's practice, using package-private instead of full-private for each fine-grained method. By this, one may test every single step if making test-case place in the same package.

Which one is best ? still no idea....

星期日, 5月 23, 2004

English English

Hey, as my eyes and head are still not work properly, this may be a good chancne to enhance my English hearing (is this word right ?) Today I have bought Ez-talk magazine and it has homeworks for whole month. I hear the homework of June, 1. but.... I can't realize what the mp3s are talking about ! Sigh, how poor I am.
Again, it's time to forbid myself to programming at home. Maybe playing some other interesting (?) stuff like enjoying music or speaking more English every day.... maybe

I hope I can do it.

A guy said that he want Ctrl-z, Ctrl-s, Del key in real life...
whoa ! That's my dream, too ! If life has ctrl-z and undo up to 100 level.... Hehe guess how the life can be.

星期四, 5月 20, 2004

cliffs of Dover

cliffs of Dover - 多佛的峭壁
雖然搞不清楚這個地方有什麼特別的,不過這一首 guitar solo 已經變成我的最愛囉!傳說中在 1986? Eric Johnson 以這一首震攝在場所有聽眾。我不大會描述啦,不過真的真的很好聽~~ 想聽的人... 用 edonkey/emule 吧~

Hibernate 至今尚在摸索中,到目前為此感覺上自己學的不是很徹底.... 直到讀了第三章,還有兩次的顧問的分享,現在才對 Hibernate 的 Transparent Persistence 有一點 sense 。 這個精神真的是 Hibernate 很重要的一環,follow 這個精神,還可以讓 Domain model 更健全。做夢也沒想到會有這種情形,如果一個 domain model 很難跟 persistence 分開的話,那麼這個 model 本身可能在設計上有所缺陷。前幾遍提到 Hibernate 需要一個 service layer 來輔助 PO as BO 的不足,而這個 service layer 便是要處理所有 session/transaction management 的地方。而 PO 在運作時,則需要在 mapping document 裡設定 persistence 的行為,尤其是 cascade 最為重要。現在比較煩惱的是 service 和那些 access class (find, findByDate... etc) test 很難寫,而且因為涉及 database 所以速度很慢.

星期三, 5月 19, 2004

Hibernate in Action Chapter 3

Wow !

I have read chapter.3 tonight, and it is quite awesone ! I strongly recommend all of Hibernate users to read chapter.3 in depth.
  • 啊呀!原來 component 是這樣用的!
  • 靠!搞了半天 bidirection 要這樣設定!inverse="true" 讓 Hibernate 知道你的 association 是 bidiretional 的。而且兩邊都設定只會有一次 update,而不雙向設定還不會 update !
  • 嘿嘿!果然 Table per class hierarchy 才是正解,我果然有先見之明。
  • 啊~~~~ persistence concern 要完全放在 PO 之外!完了,我以前寫的 PO 還會 throw HibernateException 咧... 這下慘了....
  • 啊咧? accessor 可以動耶,只有 collection 的 accessor 不可以去改。accesor 只會去比 value,所以改了不會亂下 update。不過呢,根據以往經驗,動了 accessor 每次query 的時候好像會多 query 一次。所以還是少用好了.

星期日, 5月 16, 2004

The design of sites

今天去逛天瓏,沒找到那本 Hibernate: The developer's notebook,反而找到一本 Web design 的書藉: The design of sites 這本書算得上是奇書了,雖然是寫給 web designer 看的,整本書的感覺跟 software 的 design pattern/engineering 沒兩樣。書中建議 designer 使用 iterative 的方式開發,而且整個設計都要注重 customer 的需求/習慣...etc (customer-cetered-design)。這簡直是 XP 了嘛!書的後半部都是 web design pattern ,羅列各種設計的問題所需的解答,現還沒開始看,想必很實用~
現在翻了兩三章,也吸收到不少的菁華的觀念,像是 low-fidelity prototype、Customers who don't return... etc,真的是買對了!

星期五, 5月 14, 2004

Simple Business Layer archetect with Hibernate

Blogger 換新裝了,新UI好看許多。可惜的是文章區太窄了,這樣寫 CODE 不方便呀。

Anyway... 不知是染上了什麼病症,已經一個禮拜都處於頭暈的狀態。只能用 50% 的CPU usage 寫程式。哇咧,寫到後來都不知自己在寫什麼~~~

Anyway (again...) 本週排了一次 code review,consultant 提了一些建議讓我為之一亮。前幾個禮拜研究 Hiberante PO as BO 時略有心得。不過漸漸的發現 PO 是能夠做到 BO 的功能,但是卻沒有辦法進一步 coporate 其他的 BO。也就是說 BO 和 BO 間需要由一個 service facade 做為橋樑。而這個 facade 便是 presentation 端該看到的。所以我想簡單的 business archetect 可分為三層:
  • Service Layer -- 這個是最上層,只接受 user 的 input,回傳則是 PO 的object graph。內部負責溝通各個 BO/utility/或甚至是 Service 本身,而 security 由這裡控管。

  • Access Layer -- 這個負責 PO 的 loading,也就是從 database 裡還原持久的物件,典型的 method 像是 find(id), findAll, findByDate.... etc. 都是屬於此類。

  • Domain Layer -- 這裡就是最底層了,大多數是 PO,跟 database 的 schema 綁在一起。PO 的 setter 應該設計成最少是 default,最好都是 private權限。要修改這些 PO 得通過另外撰寫的 business method處理。當然這些 business interface 只處理該 PO 本身。

Service Layer 回傳給 presentation 就不轉成 bean 了,直接丟 PO 的 object graph 出去,在 JSP 端直接 navigation (例如: <bean:write name="user" property="parent.address.street"/> ) 不用再寫一堆 只用一次的 java bean 了。

星期六, 5月 01, 2004

周りがどんなに騒いでいても、彼が声を出すと皆が静まりかえる

Pageable query 真是寫的太痛苦了,一旦對 hibernate 的 query 動手腳後,就變得很難延伸.... 同一種 query ,有時要回傳 full list,有時則是回傳 pageable list... 情況有點類似需要動用到 Bridge pattern。有夠難寫....... 先放棄,等有空再回來想。來談談今天的正題:

今天又跑去看 BECK 一次了。真是奇怪,這個漫畫非常吸引我,看了一次又一次。內容是講一個中學生的 搖滾樂團 的成長故事,這可不是一般灑狗血的熱血漫畫。反而是反諷日本主流音樂(流行音樂)的糜糜之音,而真正的好音樂是不需要大量的行銷包裝的,漫畫中最棒的場景就是主角 "小雄" 唱歌!只要主角一出聲,整個場景全部凍結,所有人都像被電到一樣震憾!不管週圍有多吵、別人對主角有什麼偏見,全部都被動人的歌聲所震攝。漫畫是沒有聲音的,作者卻有辦法將主角的聲音 "畫" 了出來,另一方面也表達真正的好音樂可以昇華人心。也許過沒幾天又會跑去看一次也說不定~~ 哈!

至於書名 BECK,其實在漫畫中是這一隻狗的名字

Anyway... 搖滾樂我一點都不喜歡.... 我不喜歡聽用吼的方式來唱歌... heavy metal 也太吵了,吵得令人受不了..... 話說回來,我最喜歡的樂器卻是電吉他,比起歌聲,純電吉他的聲音更能讓我感動!真想買一把回來玩~~