2011年8月1日 星期一

Oracle OCJP證書收到摟!!

距離通過1Z0-851:Java Standard Edition 6 Programmer Certified Professional Exam(OCJP)認證考試還差三天就滿一個月了。今天OnSite在客戶公司忙著處理上線Defect時,老婆來電告知收到來自美國的證書。心想:已經一個月啦......?!

小心翼翼地拆封裝著證書的郵件,裡面包含恭賀信函、OCJP證書、專屬卡片及Oracle會員網站登入說明資料。這是我第八個國際認證證書,收到的內容形式大同小異,我也習以為常。不過當初可是苦讀+犧牲假期+拋家棄子辛苦換來這張認證,我心裡其實是非常高興,也總算對自己、對家人有所交代。

如同其他考上的網友所說,考上到收到證書大約1個月,果不其然。我也來給它小小的開箱文一下。


1. 熱騰騰剛收到的Oracle證書信封。


2.來自Oracle的恭賀信函







3. Oracle OCJP證書




「考取認證是精進的開始」,這是自我的期許,也希望能對工作上有所幫助摟!!

2011年7月4日 星期一

達成今年進修目標--通過OCPJP(原SCJP)認證考試

由於目前所從事的軟體開發專案工作採用的是JAVA技術,與之前所使用的微軟ASP程式語言不同。雖然過去三年來主要負責UI Design,除Mockup的規劃、設計之外,Prototype的實作上也使用了Javascript、jQuery、Ajax等技術,網頁視覺表現及Layout當然都是由CSS控制定義。某種程度的Coding也讓工作不致於太過呆版,也增進與Programmer的互動。

去年轉任SA工作,需要從事更多系統層面的思考。在規劃系統架構與功能的同時,必須同時兼顧開發人員實作技術及專案時程的配合,在UML的繪製上需要具備Class diagram的規劃掌握。因此今年初開始計畫下一步對於JAVA程式的學習規劃。

在考量成本、時間及經濟效益的前提下,很高興有機會參加"產業人才投資方案--JAVA互動網站與雲端運算班"課程,從2011/4/24起至2011/7/10為期兩個多月。自從考取PMP之後,接下來所有的進修最終都以取的認證做為驗收成果的依據。在這次的課程也不例外,以考取SCJP(目前已改為Oracle Certified Professional, Java SE 6 Programmer--OCPJP)作為驗收最終學習成果。

我到天瓏書局翻閱各式各樣的JAVA工具書,找到最容易讀下去、內容涵蓋OCPJP考試範圍的一本"Java初學指引(使用SE6)"--博碩文化出版,陳錦輝著作。在足夠的動機驅使下,每晚努力逐一K書,搭配課堂上的java、jsp、java Bean實作,工作上的空暇時間練習,六月初到淡水圖書館借了"SCJP 6.0猛虎出閘"。就這樣又一次犧牲與老婆及瑄寶週末假日的歡樂時光,閉關苦讀兩個月,評估認證考試通過的可行性後,打鐵趁熱於2011/6/30 Pearson VUE線上完成報名,Booking 美國國慶日(7/4)當天晚上於資策會台北教育訓練中心考試。60題、150分鐘的考試,時間綽綽有餘,猛虎出閘一書裡的模擬考題還真出現不少,大大地穩定軍心,逐一作答,最後按下Finish按鈕後的5~6秒等待後,出現Result:Pass,心理最大感受是--終於可以告一段落放鬆心情了。

這是我的第八張國際認證。其實我覺得取得認證最重要的是督促自己仍要不斷往前精進,更要力求實作貼近現實,努力達到名實具符。

這個晚上,或許還是有點興奮,也讓我在凌晨趕緊將這次的考試心得寫下!!接下來期待證書的到來摟......

2011年5月17日 星期二

[Java] is-a 與 has-a

is-a:在字面上是「是一個」的意思,屬上下的關係,在Java語言中是利用extends關鍵字來實作延伸類別,也就是繼承的關係。
has-a:在字面上是「有一個」的意思,屬聚合的關係,是用來表示類別(class)中的成員變數(member variable)。

p.s:UML的Use Case裡的extend與JAVA的extends完全沒有關係。

2010年10月18日 星期一

jQuery toggle() 用在 ‹tr›上,IE8有名的bug!!

專案新Phase最近上線了!!然而在號稱跨瀏覽器支援的jQuery,卻也有碰上死穴的時候!!

在本次專案UI設計裡,因‹table›資料裡有視情況在click時‹tr›做顯示/隱藏的效果。若以javascript撰寫‹tr›做style.display的block/none時,Firefox在資料呈現上卻無法像IE一樣做到滿區塊(width=100%)呈現,因此採用jQuery toggle()方法來做。

實作上也順利將效果展現。然而此時卻傳出IE8沒反應?!怎麼會這樣?!剛開始檢查了jQuery語法,也沒發現錯誤,之後Google一下才發現為jQuery 1.3.2 的bug(我是用jquery-latest.pack.js版本)---在‹tr›選取器上做toggle()就沒反應。

我的解法是:
維持原jQuery寫法,針對‹tr›顯示/隱藏的效果另以javascript寫一支js,只給IE8使用,語法如下:

‹!--[if IE 8]›‹script type="text/javascript" src="js/minisite-effect1016.js"›‹/script›‹![endif]--›

IE8的問題也就解決摟,並且不會動到目前的HTML及開發程式碼!!

2010年9月13日 星期一

談jQuery thickbox 與 Prototype library相衝突的解決方法

應該要算是很高興才對吧!!因為這次專案的UI實作真正遭遇兩大UI Library(jQuery v.s Prototype)共處在一起時對於$ 這個變數定義的衝突的問題與因應之道的寶貴經驗!!

由於頁面上在User互動性設計的考量下,兩年前PG就自行Plugin Prototype framework。而最近普遍使用到的thickbox效果,在"效果的完整性"、"跨瀏覽器相容"及"User接受度"三大考量之下,首推jQuery的thickbox Library最完整。正如"jQuery in Action"書上所言,這兩大UI Framework遭遇了"$"使用衝突的混淆問題,造成某一效果無法正常work。

正如書上所提,可以透過下列三種方式解決:
1. jQuery.noConflict();-->可將$名稱控制權歸還給Prototype。在此宣告之後,必須使用jQuery名稱來呼叫jQuery的特性。

2.用(function($){
//jQuery 程式碼區塊
})(jQuery);

3.宣告一變數值為jQuery的變數,之後使用該變數取代$的使用。

最佳的方法是第一種方式,在宣告jQuery.noConflict();之後,將thickbox.js裡面的$都取代成jQuery。
特別注意的是要逐一找出、取代,不要"全部取代"。因為thickbox.js裡有javascript的$符號,這種可不能取代,否則無法正常work!!

第二種方法最為快速,但風險相對較大。因為在包覆的jQuery 程式碼區塊裡,若有非jQuery使用的$,也會被取代,造成無法正常work!!

第三種全域變數的宣告,可能也會影響到Prototype,造成無法正常運作!!

補充說明:
1.切記務必將jquery的js檔案放在prototype的js檔案前面(瀏覽器先讀jquery的js檔案再讀prototype的js檔案)。
2.在jquery.js後面緊接著宣告避免掉 $() 衝突的問題。如下面例子:
‹script type="text/javascript" src="http://www.fetnet.net/estore/minisite/js/jquery-latest.pack.js›‹/script›
‹script›jQuery.noConflict();‹/script›

2010年8月11日 星期三

‹table›的隱藏/顯示效果在Firefox上的問題

這段期間製作的Prototype發現,我們習慣透過javascript撰寫網頁內容動態顯示/隱藏(display為none或block)效果。

然而若將此效果設定在‹table›上,在變換效果之後,FireFox會以table欄位裡資料(圖或文)實際多寡來呈現table的大小,也就是說若table裡資料很少,在一次切換效果之後,table會突然變小造成跑版。然而這問題在IE上卻不是問題!!

解決的方式為可在‹table›外包一層‹div›,將動態顯示/隱藏的效果從table身上改到div上,如此一來Firefox的跑版問題就解決摟!!

2010年7月30日 星期五

UI Prototype csshover.htc實作心得

目前網站的頻道選單,除了主選單之外還有第二層子選單動態展現,你可以用Flash來表現,但有維護上的issue,而目前主流的做法,可以使用CSS來表現。

然而,若客戶要求跨瀏覽器支援IE6的話, ‹li›tag在CSS hover的設定上卻不被支援。這個時候可以使用html component檔 -- csshover.htc來補強。(詳細資料google就可了解)。

這次專案的製作需求,客戶要求選單+子選單要動態呈現,因此有機會實作這個效果。然而在webserver的解譯執行上,IIS及TOMCAT都能順利呈現所需效果,然而在WEBLOGICAL上卻無反應,雖然有正確設定htc檔連結路徑卻仍無反應。

這是因為WEBLOGICAL需要在web.xml增加下列宣告:
‹mime-mapping›
‹extension›
htc
‹/extension›
‹mime-type›
text/x-component
‹/mime-type›
‹/mime-mapping›

如此即可順利在IE6上正常顯示!!
參考網頁:
http://www.xs4all.nl/~peterned/csshover.html
http://www.hoeben.net/node/33