2006/08/31

SCWCD 考試心得

今天是個特殊的日子,8/31,八月的最後一天,明天就是九月,有薪水可以領,但重點不是這個。

話說我在前天book了今天下午兩點的考試時間。那時我就覺得奇怪,怎麼Ti8今天晚上的時間都沒得登記!起初我還以為是恆●他們上課的學員卯起來要今天考試,腦子頓了一會兒才驚覺真正的原因,為什麼一堆人擠著今天來考試。

這故事說來話長,我長話短說,就從一年前的JavaTwo2005說起吧!我想大家應該都知道這個年度盛會,除了最重要的課程研討會與國外專家的精彩演講之外,一樓擺攤要資料的廠商們,到處穿梭的Java美眉們,甚至那些每年擺著不一樣POSE的Duke娃娃都是JAVA大會不可缺少的要素。

是的!故事的起源就是在攤位。

所有攤位都有個目的,那就是收集個人資料。但是有一區比較特殊,他們不是要資料,而是要錢!簡單來說,這個攤位就是賣便宜的準考證。而我,去年一口氣買了兩張…(我其實頗討厭我這種貪小便宜的歐巴桑心態!)

【迷之音】:討厭你還買! <( ‵︿′)╭C<─___-)|||

偏偏參加完活動之後,我就開始忙計畫的事(有一半時間在花在跟PM爭執架構可行度,唉~),所以參加考試這回事就被我擱到腦後去了。當我再有時間準備考試,已經是六月了,於是趁著計劃空檔,我考了SCJP,緊接著又開始忙著實驗室搬遷,以及計畫受測者的問題。但我手裡還有一張准考證要消化啊!〒△〒

眼看著準考證期限將屆…

很好,岔題岔回來了,准考證的期限就是8/31號。在趕著學AJAX並應用到新網頁的時間壓力之下,原本以為到期時間是8/16號而來不及的我,頓時鬆了一口氣,於是當下決定在准考證到期最後一天才去拼拼看。

所以,大家可以知道,台灣資訊界是多麼地忙碌,一堆人忙到已經花了錢報名,卻沒有時間去考試,還真是頗慘的。所以今天考試中心就像是大拜拜一樣,考試人潮絡繹不絕;我關在那個考試小房間裡頭,總不時會聽到外頭小姐講解考試規則的聲音。大家想的都一樣,畢竟一張准考證要價4000大洋,無論能否Pass,至少要考一下才不浪費。

不過,還好,我幸運地Pass了!所以現在才有膽寫這篇心得! ╮(﹀_﹀")╭

好! 以上是廢話,接下來才是考試心得。

先說一下我平常網頁設計的習慣,我是MVC的愛用者,雖然想進化到Front Controller,Struts的書我也買了兩本做參考,在實作做了幾個簡單的頁面後,就沒時間再深入了。眼看著那個Spring似乎開始熱了起來,真擔心這兩本書我可能會看不完。

學歷上面,大學背景是電機轉資工(其實跟考試沒啥關係,純給各位做參考);正式拿Java來賺錢是從去年年初開始。至於其他技術,什麼都碰一些,但什麼都不強,我恨死了JavaScript,恨死了CSS,恨死了調web版面,恨死了用Photoshop設計圖片!!為什麼這麼恨?因為要用到啊!

由於我MVC弄得頗「徹底」,JSP的各種技巧都只有碰了一些些,每個JSP頁面多是單純的VIEW,所以考試單元成績出來,一開始的項目都拿到8X%,但到了tag那些部分就開始慘不忍睹。能過真的是老天爺眷顧我!考試內容整體來看,參考書中幾乎都提到了考試重點,如果自己曾經實作過裡面的技術,考起來是算是頗得心應手的。

說到參考書,我其實只有一本圖畫書。就是「Head First Servlet & JSP」,第一次翻它是為了學習Servlet & JSP的技術(頗好用,我也要要求實驗室小朋友買了一本當課本),好不容易在昨天看完了第二遍。記得第一次看這本書,可說是霧裡看花,但如今自己有了足夠的設計經驗之後,第二次再看,閱讀的感覺可說是完全不同。(雖然有些還是很模糊)

直到今天早上,我才把每章後面的模擬試題以及附錄的「終極模擬試題」第一次看了一遍。(嗯..嗯..對,是看過,因為時間不夠,所以直接看解答與註解。)別看輕了模擬試題,它的好處,可不是讓你填鴨式的死記,而是利用簡單的例題,讓你快速釐清觀念可能模糊的所在,並依此加強自己較弱部份。所以在當你準備好要出發考試前,快速瀏覽一下模擬試題會是不錯的暖身操。

最後,就是生活準備啦!我考試態度是屬於大考大玩,小考小玩那種,昨天不好好看書,還很無腦的弄了一大篇「好人&壞人」的Java灌水文。考前保持心情的愉快是很重要的。而飲食上,考試當天盡量吃清淡些,要進入考場前,請讓自己保持要餓不餓的狀態,只要你沒有血糖不耐症,那麼考試的兩個多小時內,你的頭腦將會保持在最清醒的狀態。(如果你有感冒或慢性疾病須服藥,也請估個時間暫時停一下,考完再服用。)

總之,只要腳踏實地動手做,遇到問題第一個先懷疑自己是否缺乏什麼必須的能力,然後去克服它,基於玩Java的都是好人的理由!相信什麼認證都難不倒各位的!!

PS1. 你,就是你!別再問我人是不是只分好人或壞人了!<(‵︿′)@m
PS2. 基本上,每個人學習曲線各有不同,不過我大學副修教育學程,還當過補習班教師,真心希望這裡提供的準備考試技巧,能給各位一些幫助。

2006/08/30

人的特色只有好人與坏人嗎?

有位仁兄在Java版的回應中問了我這樣一個問題,這問題是多麼富有哲學性,但既然在Java板出現了,就一定要認真地用Java的方式來回答。

話說,人類是萬物之靈,所以人類也是物件的一種。然而要具體形容一個人,除了外觀,當然還有道德、職業、學經歷、聲望這些因素等等…這些要素,在還沒有能夠具體形容這
些要素前,我們能做的,就是暫時將人類塑造為一個簡陋的抽象類別。

package universe.earth;

public abstract class Human {
protected boolean isNormal;
protected boolean isGoodGuy;
protected String sex;
protected double weight;
protected double height;
protected double BMI;
public Human(){}
public abstract boolean IsNormal(boolean eyebrow);
public abstract boolean IsGoodGuy(String skill);
public abstract void setBMI(double weight, double height); }

基本上,人類又可分為帶把與沒帶把的!所以我們接下來就要實做男人類別(帶把的),這個類別繼承自Human這個抽象類別。

package universe.earth;

public class Male extends Human{

// Of course, this a male class
public Male(){
sex = "male";
this.isNormal = true;
this.isGoodGuy = false; // 人心險惡,先認為不是好人吧!
}

// Is his look normal?
public boolean IsNormal(boolean eyebrow){
if(eyebrow){
this.isNormal = true;
}else{
this.isNormal = false;
}
return isNormal;
}

// Is he a good guy?
public boolean IsGoodGuy(String skill){
if(skill == null || skill.equalsIgnoreCase("java")){
this.isGoodGuy = true;
}else{
this.isGoodGuy = false; // Are you a C# user?;
}
return isGoodGuy;
}

// Check his body is strong, weak, or normal.
public void setBMI(double weight, double height){
this.weight = weight;
this.height = height;
BMI = 10000*weight/Math.pow(height, 2);
}

// overridden toString()
public String toString(){
String description = "He is a " + sex +".\n";
if(isNormal && isGoodGuy && BMI >0){
description += "Good! You should make friend with him.";
}else if(!isNormal && isGoodGuy && BMI >0){
description += "He might be a good friend, but don't laught at his eyebow.";
}else if(!isNormal && !isGoodGuy && BMI >0){
description += "Please, he's just with no eyebrow!";
}else if(BMI <> 0){
description += "You might win at this fight!";
}else if(BMI > 24.9){
description += "Run! Frost! Run!";
}else {
description += "It's a even fight!";
}
return description+"\n";
}
}

好!我們做到這,我們已經可以基於一個人有沒有眉毛、專長、以及BMI決定這個人好不好相處。為了簡單測試,所以我們開始將這個male類別實例化。

package universe.earth;

public class JudgeHuman {
public final static void main(String[] args){
Male thisGuy = new Male();
// 路上兩人相見,不熟悉!
System.out.println("You haven't analyze who he is...");
System.out.println(thisGuy.toString());
// 然後你推測他的身高體重,算出他的BMI...
thisGuy.setBMI(100,183);
System.out.println("After you know his BMI...");
System.out.println(thisGuy.toString());
// 然後你又看了一下他的臉,發現他沒有眉毛!
thisGuy.IsNormal(false);
System.out.println("After you analyze his face...");
System.out.println(thisGuy.toString());
// 最後他告訴你,他原來是個java程式設計師!
thisGuy.IsGoodGuy("java");
System.out.println("After you know his skills...");
System.out.println(thisGuy.toString());
}
}

將這個Java application執行後的結果如下:

You haven't analyze who he is...
He is a male.
It's a even fight!

After you know his BMI...
He is a male.
Run! Frost! Run!

After you analyze his face...
He is a male.
Please, he's just with no eyebrow!

After you know his skills...
He is a male.
He might be a good friend, but don't laught at his eyebow.


所以,最後要回答的結論就是…「人的特色當然不是只有好人或壞人囉!」

2006/08/13

[遊記] 戀戀山城 – 九份

這是個艷陽高照的好天氣,我帶著休息了一陣子的KONICA MINOLTA 最後一款A系列 -「大媽幾 A200」, 掛上Marumi偏光鏡,將相機調至RAW檔模式,牛仔褲袋塞著iPod,就這樣一路輕鬆寫意地出發。

印象中,上回到九份時,是騎著車過去的,頗累。所以這次我改採聰明的辦法,坐車!台北往九份的交通實在很方便,原本以為是條漫長的路途,結果是我錯估了台鐵自強號的速度;火車由台北出發,開往瑞芳,而就在瑞芳火車站前,有著基隆客運的巴士等著我,準備將我直接載往至九份。就因為交通是如此便利,所以從台北到九份,坐車時間只要一個小時多就可以到達了。

一下車,就見到了一座小涼亭,稱為「觀海亭」。這裡算是九份這邊少數沒有被高壓線遮蔽視線的取景點,遠眺著大海、藍天、龜山島,我頓時覺得工作壓力減輕了不少,在發呆了幾分鐘後,我緊接著步進了九份的喧雜的街巷。正午的九份街頭,有一半的遊客躲在飲食店內吹著冷氣吃中餐,而我則打算先慢慢逛完山城,最後再來享用這裡的美食。

這兒的街道與幾年前來時沒什麼差異,若要說出有什麼不同,大概就是裝潢變美、燈光變亮以及遊客變多了吧!我一路這樣拍進去,九份的店家似乎老早就習慣了遊客的攝影,當發現有相機對著他們時,隱約感覺到他們也配合著鏡頭表現著自然而專業的動作,沒有一絲因被拍攝所帶來的緊張。而我也順利地取得了好多張看起來頗有特色的店家照片。

就在快走出餐飲街之前,我經過了「翁山英故居」。這裡的外觀在經過整修後,大致還是保留著的,但裡頭已經是完完全全的茶坊,一踏入門內,茶香撲面而來,整個人頓時穿越時空回到了當年九份金瓜石的黃金時期。但不一會兒,店內的遊客的喧嘩馬上就將我帶回了現實,看著茶坊內雅緻的擺設,讓我著實遺憾沒有與朋友一起來這,享受一起品茗的樂趣。

就在翁山英故居之前的小岔路,岔路右方有著一條往下的石階,這是我幾年前不曾注意到的小徑。延著石階往下走,我看到了一隻狗守在一棟屋子的天台前,見著牠兩足相疊、在石階中央看著人來人往的遊客,那安詳的表情,讓我禁不住心中的衝動,硬是幫牠拍了一張特寫。接著我爬上了天台,俯瞰著街景,才發現延著石階這兒的山壁上,是一路都是旅社與茶館。我相信在入夜之後,這兒將會是全九份燈火最亮麗的景點。

繼續延著石階往下走,來到了「昇平戲院」。如今這裏只剩下一個大大的看板,走近看看裡頭的樣貌,只見滿地的積水與污泥,應是完全廢棄了的結果。而延著戲院前廣場所建的茶館,外觀古色古香,讓人聯想到過去這家全台灣第一家戲院興盛的歲月,如今戲院隨著九份的淘金夢而消失,看著眼前的廢墟,心中充滿無限感慨。

繼續往後頭走去,就是居民休憩的地點,其中也參雜了幾幢民宿。原本打算在九份這兒等待夜景的來到的我,看著離黃昏還有好幾刻鐘,索性打消了念頭,等待下次與好友一齊同遊的日子。而下次,我不會再忘了金瓜石與黃金瀑布這兩個景點。

2006/08/07

MRTG (Windows) 部署安裝指南

本文參考 MRTG 官方網站說明製作。

軟體需求:
a. ActivePerl
b. MRTG
c. Microsoft Tools SRVANY.exe (Applications as Services Utility) and INSTSRV.exe (Service Installer)
d. Windows Management and Monitoring Tools (請於控制台 → 新增/移除程式?→ 新增或移除windows元件中選取。並於安裝後,於SNMP安全性新增 public 群體名稱)

安裝步驟:
Step 1: (安裝ActivePerl)
可從ActivePerl官方網站下載windows版本安裝程式。個人是下載了AS package版本。
將此版本解壓縮之後,執行批次檔 Installer.bat,依照預設值安裝即可。
預設安裝位置為 C:\perl,請於windows環境設定確認 C:\perl\bin 是否正確自動添加於 path 中。
(Now, 請重新啟動)

Step?2: (安裝MRTG)
於 MRTG 官方網站下載 windows 版本程式。個人下載了 mrtg-2.13.2.zip?版本。
將此壓縮檔解壓縮後放於你所偏好的位置,建議 C:\
解壓縮完成後,產生 C:\mrtg-2.13.2 位置。

Step 3: (建立mrtg.cfg)
於命令列模式中,進入 C:\mrtg-2.13.2\bin 資料夾。
首先確認 perl 路徑是否正常,執行 perl mrtg
將會產生如下說明:

Usage: mrtg <config-file></config-file>

mrtg-2.13.2 is the Multi Router Traffic Grapher.

If you want to know more about this tool, you might want
to read the docs. They came together with mrtg!

Home: http://people.ee.ethz.ch/~oetiker/webtools/mrtg/
這代表你的 ActivePerl 目前應該是正常動作中,先恭喜你。
接著,在同個位置執行?perl cfgmaker public@localhost --global "WorkDir: c:\Inetpub\wwwroot\mrtg" --output mrtg.cfg
如果沒有任何錯誤訊息,那將會在 C:\mrtg-2.13.2\bin 中產生 mrtg.cfg 的檔案。
(請檢查 mrtg.cfg,確認是否存在 WorkDir: C:\Inetpub\wwwroot\mrtg 這行,沒有則請自行加入。)

Step 4: (產生資料報表)
這是最簡單的步驟。在 C:\mrtg-2.13.2\bin 中,執行 perl mrtg mrtg.cfg 即可。
這時你一定會有疑問,為什麼會有 log 找不到的錯誤訊息產生哩?
這是因為資料是第一次執行,所以並沒有歷史資料,當然會有問題囉!
所以,同樣執行 perl mrtg mrtg.cfg 三次吧!有資料產生後,這錯誤訊息就會消失了。

Step 5: (檢視報表)
若您是依照方才的安裝目錄作設定,這時你會發現,C:\Inetpub\wwwroot\mrtg 底下多了一些檔案。
找到名為 localhost_X.html 的檔案(X可能為數字),開啟它即可。

Step 6: (自動產生報表)
觀察 mrtg 的運作流程,我們會發現每次運作 perl mrtg mrtg.cfg 之後,報表才會更新,這並非我們所樂見的。
因此我們需要做一些修改。

請在 mrtg.cfg 檔案中加入
RunAsDaemon: yes
這行指令,使 mrtg 不會執行一次便結束。
接著執行 start /Dc:\mrtg-2.13.2\bin wperl mrtg --logging=eventlog mrtg.cfg 來啟動新的設定檔。

這邊之所以採用 wperl 而不用 perl ,是為了讓程式能在背景執行。
若你想結束程式,則請進入工作管理員結束wperl即可。

Step 7: (建立windows service)
將 SRVANY.exe 以及 INSTSRV.exe 兩個檔案複製到 C:\mrtg-2.13.2\bin 中。
再建立一個名為 mrtg.reg 的登錄檔,利用文字編輯器,將以下內容貼上。

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MRTG\Parameters]

"Application"="c:\\perl\\bin\\wperl.exe"

"AppParameters"="c:\\mrtg-2.13.2\\bin\\mrtg --logging=eventlog c:\\mrtg-2.13.2\\bin\\mrtg.cfg"

"AppDirectory"="c:\\mrtg-2.13.2\\bin\\"

接著執行instsrv MRTG c:\mrtg-2.13.2\bin\srvany.exe
之後你會發現windows?service中有個名為 MRTG 的服務,啟動它,則每次開機之後便會自動在背景執行服務了。

Step 8:
Enjoy it!

[遊記] 香港三天兩夜

在五月初起意找時間離開台灣去流浪,連續三年無視了公司的員工旅遊補助,今年終於給了自己動力離開台灣三天兩夜出去走走,即使目的地只是航程不到兩小時的香港。 決定了日期,向公司請好了休假,接下來就是要決定交通住宿,由於想要自己決定出發以及回來時間,方便起見捨棄了可能有特定優惠的機...