跳到主要內容

發表文章

Class與Instance的本質

前幾天看到王克明寫的 物件 (Object) 的媽媽是 類別 (Class)? ,本來以為大家都很瞭解。沒想到昨天就有人問我一個問題,他說:child instance如何存取parent instance的屬性。 我回答說:要存取parent class的屬性必須是static,否則就把parent做成singleton物件。 他又說:parent instance可能有多個,不能做成singleton。 這下我真的傻眼,因為這實在是本質上的錯誤。Class是沒有實體的東西,所謂的class variable事實上需要實體來儲存於記憶體之中。換一個角度想,Parent Class產生出多個instance,child那可能知道要存取那一個?就算用shared memory也辦不到。而 物件導向分析的一個根本精神就在於子類別能夠完全取代父類別,如果有子類別需要存取父類別的情況,就是設計上的錯誤。 簡而言之,要看穿 Instance的本質也不過就是一堆machine code , Class不過是一堆定義 。 所有的變數或屬性,都必須依附於實體之上,包括static變數 ,只是static變數由系統處理掉。

看 Google 怎麼用 Java

葉秉哲博士的 技術對談:看 Google 怎麼用 Java 和王建興博士的 JavaTwo 2006的另一收穫:看Google怎麼用Java 都提到 iThome的 技術對談-看Google怎麼用Java 。 在下小弟我在2000年時有幸與Google的sales engineer談過,他們當時"只有"200名博士,技術就只有C++,同樣是利用PC架Linux做load balance;但沒有Java。對了,Google的開發人員博士比碩士多,幾乎沒有學士 >_ BEA 才出自己的 JRocket VM,王建興才會問Google是否有自己的VM。根據我自己的經驗,Sun JVM到1.3之後效率已經大幅增加,我用JVM 1.5跑Tomcat確實有感到速度明顯的增加,計算速度實測也比.Net 1.1快。 現在會C++的人才愈來愈難找,因此Java應該還有發展的空間。Yahoo和Google的方向不同,Yahoo走向PHP,Google則選擇Java,我很期待後續如何發展。 P.S. 這篇對談裏比較難懂的應該就是closure,它比較像是anonymous delegate,類似C的function pointer。但看到Ruby配合collection的closure寫法,真是超級精簡呀。以下貼一些我找到的資料: http://www.javaworld.com.tw/jute/post/view?bid=29&id=56457&sty=1&tpg=5&age=-1 http://ihower.idv.tw/blog/archives/1456 http://mindprod.com/jgloss/closure.html http://blogs.sun.com/roller/resources/ahe/closures.pdf The power of closures in C# 2.0 http://en.wikipedia.org/wiki/Closure_(computer_science)

Hacked

昨天回家發現電話線斷路, 打0800-080-123客服報修,客服先說接單後要隔天(今天)才會來檢查線路,再告訴我在17:30已經有人報修。我覺得很怪,追問是何人報修,但他答稱不知。 後來吃完晚飯再去樓下追查線路,由於天色已暗又沒有高的梯子,所以不知道是否有偷接,但初步看起來外線是好的。再到配線箱去看,發現兩個小塑膠保護盒已有一個被拿下來,可見確實有人動過;可惜我看不懂配線,也沒有夾線電話可以測,就只能先回家。再打報修電話,這次的人員直接告訴我17:30是警察局報修的,有人偷接!他再告訴我盜打的費用不會算到我頭上,事情發展至此雖然無奈但也只有等待。 沒有網路的日子還真不好過,21:00看數字搜查線,內容是phishing和hacker,偷銀行帳號密碼的俄國黑幫;心中真是百感交集呀~ 先講古好了,在1980年代,所謂的hacker是一群盜用電話的人,他們利用各種方式打免費電話,然後用modem連線到各公司找尋漏洞;據說還有人能用口哨聲模擬handshake。到1990年代,hacker大部份被FBI抓走後轉型為正義的一方,就有人稱呼入侵者為cracker,而把電腦高手稱為hacker。不過一般民眾的心中,hacker=高手=駭客。 雖然我不是hacker,但是至少我的電腦(和我管的電腦)還沒有被人hack成功的記錄,沒想到居然有實體線路被盜,真是一大挫敗。

微軟又做了什麼

好一個 Microsoft BugFix (200608) ,前幾天就聽說這個問題,沒想到這麼嚴重呀!那 WSUS 到底該不該發佈呢 Hotfix 923762 ? Frankly speaking, I don't want to use Windows any more.

推薦:Ai92

印象中似乎是在javaworld.com.tw看到這位對岸網友的post,今天看到 JSF吧:那就開始吧…… ,雖然還只是簡單介紹 JSF ,但他說要陸續介紹,就先相信他囉~(至少他是最近在學,也提到 Shale 這種新東東) P.S. 1. 若在公家機關,是看不到對岸的網站,請利用 Tor 或其他的Proxy。 2. 若沒接觸過 JSF ,可以看javaworld.com.tw的 JSF入門 。

MDA

最近 李維 大師的兩篇: 我以前的痛苦,你也擁有一樣的痛苦嗎? 與 您也是打痛苦混戰的高手嗎? 都在講 Borland 的 ECO 架構。 MDA 我只有聽過2003年JavaTwo的一場Seminar,還有那年 葉秉哲講的AspectJ 。而 ECO 是基於 MDA 所開發出來的技術,對我來說實在是太遙遠。Google後中文文件除了李維的文章外,只找到葉秉哲的 MDA 與軟體開發工具:從 Delphi 2005 談起 、 MDA 與軟體開發工具:從 IBM/Rational 觀點談起 ,及 Borland ECO 企業核心物件俱樂部 。 3年前未成熟的技術,現在似乎變得火熱,但連Aspect都不算成熟,我想 MDA 雖然大家都在喊,不會太快流行。以另一種觀點來看,愈是抽象的技術,速度就愈慢;最近看到同事用MFC寫的交通運輸模擬程式,速度只能以飛快形容。在追求軟體技術的同時,不要忘記執行效率。 現在我已經沒有太多時間能花在學習新技術,對這種未普及的新技術,只能繼續觀望,也希望 MDA 能為軟體開發帶來新氣象。 BTW, 我今天才發現blogger目前沒有支援trackback,實在是無言以對。

不挑工作,可能嗎?

早在3年前就想寫這個主題,今天看到 獨孤木 老大的 能者多勞(下) ,腦中又浮現這個想法。 話說當年在下敝人小弟我的公司有位老兄跟隨老婆移民米國,於是工作就得交接給其他人,而這種公司可不像獨孤木老大寫的那麼民主,而是隨便開個不太有意義的會議,就把工作指派下去。過程中,某豬頭一直強調工作一定要有人做,他也沒有在挑工作。我要說的是,一般上班族那有沒在挑工作?叫你去做工願不願意?給月薪10萬去掃廁所願不願意?碩士去應徵清潔大隊才能叫做不挑工作,一般人去做水電工35年到退休時(假設18~55,兩年當兵)賺得比一般白領階級還多(我不是指阿賢 XD),看你願不願意去做而已。所以這篇是寫給不會來看的那位豬頭看,哈哈! 所謂的能者多勞只是老板壓榨員工的一種修飾詞,最後的底線在於薪水和工作量的比例;不過萬一工作大過負荷量時,再能幹的人也會受不了辭職吧!就像在 獨孤木 老大 能者多勞(下) 不具名留言者一的情況,當老板也該有點自覺,如果不願意再找人,只有減少工作,否則把金雞母逼走後就開始痛苦了。