聚會時間公告: Kalug 8月份休會一次

[HOT!] 2008 COSCUP 開源人年會2008 8月23日(六)-8月24日(日)熱鬧舉行

三月 26, 2008
» 【Java】[94上]網路程式設計作業

這是凍仁在讀大二時的Java作業,那時幾乎是每個星期三、四的晚上都在熬夜寫Java.. 雖然功力不高,可凍仁還是很喜歡自己寫 porgram(程式) :P 可惜這位良師被假日班同學趕走了,不然凍仁在大三大四應該會繼續寫下去,很感謝這位熱心的老師,因為他凍仁至少有把一種程式語言重頭學到尾一遍..

凍仁的 Java 作業 @ Google 文件

授課教師:羅孟彥
課本:JAVA2 JDK 5.0 教學手冊(第三版)
作者:洪維恩
出版:博碩文化

十一月 23, 2007
» Linux 大量看字型的程式 - Opcion

相信常用 gimp 或者 Inkscape 等繪圖軟體的朋友,應該會有一次看大量字型的需求吧?我也是這樣,不過 gimp 或 Inkscape 內建看字型的方法通常都不太夠力。不是字太小,不然就是沒辦法套用自己想要看的文字。

這個時候 Opcion 就派得上用場了,有圖有真象:

Screenshot - Opcion Font Viewer (1)

不僅可以調整大小、要套用的文字,中文也是沒問題的。(不過英文字型沒中文的時候,會出現 Java 常見的方框)。

Screenshot - Opcion Font Viewer (2)

常常需要看大量字型的朋友可以試試看,還蠻好用的。

九月 17, 2007
» Better, Faster, Lighter Java(心得一)

有時候其實最簡單的架構, 卻是最棒的答案~

從最簡單的答案變成最棒的答案, 總是在你堅守這原則後驚異發現...

這本書雖然以Java來看,
但實際上卻很適合各領域的程式語言開發案的成員們閱讀
每種語言的背後都應該以這精神來構建會是個良方...

Better, Faster, Lighter Java

http://www.oreilly.com/catalog/bfljava/

http://www.oreilly.com.tw/product_java.php?id=a168

Java的複雜度已經超越我們的能力...
我們漸漸發現控制不了也學不完的新 Java架構...

我們的經驗與能力的極限的結果,
我們花在撰寫利用新架構的Code竟比解決真正問題的部分還多
新的枷鎖不斷增加, 卻離直接的幫助漸行漸遠...

面對不對受商業影響的 Java 我們不需要

  • 超過三到五層的 Logic Layer, 應當簡化為二層簡化無法控制的複雜度
  • 不需要 EJB, 大多數的結果只是 the bloat "澎風" 的虛表與走向失控
  • 使用 Tomcat 不是龐大的 Web Logic or JBoss ..

J2EE 的學習成本超乎我們個人的學習極限, 且受廠商們不斷為了收益,
廠商必需持績加諸新疊床 Design pattern, 來確保企業對其產品的買單...

Hibernate, Spring J2EE 改採以走最少量簡化的 API 來達到同樣的目的,
但這卻是每位Java開發者最想要的!

不可避免的膨風
  • 超大型的企業架構才叫時尚? 卻苦了近90%Java開發者
  • 用大砲打小鳥的架構?
  • Design pattern 拾簡單化換威力, 就是膨風
  • 超多的膨脹程式碼並不是來自對於寫code知道太多的人, 反是來自那些知道太少的人

對抗膨脹的五個基本法則

1.保持簡單
優秀程式員的價值在於簡化, 更易除錯, 更易進行測試, 更易進行加強與維護, 更易其它團員接手

2.每次做好一件事
單體化的 MVC (Model-View-Controller)是優雅與專注的表現
也利於Refactor重構, 更利於測試.

3.力求通透transparency
Hibernate or JDO
是很棒的替代方案

4.開放擴充
善用OO設計原則中的部份 Abstraction
善用 ORMDBS 的設計
善用 RMI (Remote method invocation)

5.吃什麼像什麼
過度的相信Java廠商建議, 特定J2EE的信仰與廣告只會引領你走向毀滅與專案失控...

八月 30, 2007
» 技術對談-看Google怎麼用Java

原文 iThome online

這篇文章雖然有點舊了, 但卻可以從中體會Google的想法
到是可以給其他企業一些參考性的建議:

如何在不斷擴增的Java中保持"輕快",
老僧人前陣子閱讀的這二本書,
Better, Faster, Lighter Java (輕快的好 Java)
Prefactoring (軟體預先架構之美學)

或許加上以下的Google訪談中的重點,
會給您一點"約束"力, 來減低架構上的設計...

小僧人就把文中的重點給整理出來供大家思索一翻...

  • 我們喜歡使用現成的PC,來建構我們的系統,而不是大型而且可靠度佳的昂貴主機。
    單一PC隨時可能發生錯誤,我們試著用軟體的方式建立容錯的機制。

  • 我們沒使用J2EE,這其中有許多原因,包括Google在J2EE之前就已經有了自己的分散式架構,甚至還是使用 Java 語言建構出來的。
    • 小僧人個人見: J2EE確實學習與教育成本太高了, 大約要3-5年的經驗者人力

  • 失敗不是少見的情況,而是很常見的。當你要建立一個像Google這樣規模的搜尋服務,你可以想像會有多少問題,但是我們就是要持續的讓服務運作下去,盡量讓系統可以自動修復,不要造成延遲。

  • 在中介層的開發,Java是很好的選擇

  • 採用 Java 有一個很重要的理由是想要降低開發的心力和時間。另一個理由,學生在學校裡學的都是Java,而且喜歡Java,他們甚至不懂C++,所以比找C++人才容易。而且Java除錯容易多了。
    • 小僧人個人見: 找一班C++的人力資源, 確實比Java來的難...

  • 在Google使用C++的應該多一點,可能是 6:4 左右。不過,使用Java的人正在成長中...

  • 有許多在Java社群有所貢獻的人,現在都在Google

  • Google盡可能的維持小型團隊,而且讓小型團隊在同地點工作,理想的團隊規模可能是5個人,4個或5個,也許多到8個。大過這個數字,溝通就複雜多了。
    • 小僧人個人見: 這是很棒的軟體開發專案的建議

  • 現在有多少員工...一萬人

  • Google不會把5、6個新員工放在一起,由他們自己做事,新員工都會安插在一些原有的團隊裡面。

  • 我們已經完成JDK 1.6的測試,只要等JDK 1.6公佈後,我們也可以很快地轉換過去。

  • 每個語言都有生命週期,有些語言持續增加新功能,導致該語言後來很難寫、很醜、難以使用,很多語言後來變成這樣,而我會盡力讓Java不變成這樣。 我相信現在的Java已經是一個相當完整的語言,雖然還是有很多好的功能可以加入,但將這些東西一股腦全部加進來絕對是錯的。

七月 30, 2007
» 當 Java 碰上大型線上3D遊戲開發專案

孫子說:“凡戰者,以正合,以奇勝。...以利誘之

時間過的好快~
轉眼間本寺又進了一批新生小沙瀰近20人
再次走進了老納管理的達摩院
接受本寺高資訊化教育的另一個團隊能力的訓練 SCJP
雖然老僧人不排斥任何程序語言,
但礙於保障本寺未來小沙瀰們能在全球體制下接軌
老僧再次學習地藏菩薩的精神(地獄不空誓不成佛)
再次踏回這 Java 的世界...

為了能訓練優於外界的 Java 初等教育 SCJP 人才
老僧決定改變傳統的學界教育方式
在這提供給其它人參考...

Java首重團隊開發, 因為大多用在大型協同開發案上
必須訓練出懂得互助與上下互動的好程序員
(好的程序員不是獨善其身, 而是懂得拉提同隊的成員)
老僧人決定拿 開放源碼 Java 的著名線上 3D大型遊戲伺服器的原碼與SVN
來當這班的畢業考範圍與教材, 更可讓小沙瀰擁有實際參與大型開發案的訓練成果

再者老僧人將導入企業軟體開發案的流程來帶領小沙瀰
學習企業界的作風, 讓少林寺邁向企業化經營
老僧人擔任接管這由 Java 撰寫的大型線上3D遊戲伺服器的專案經理人(PM)
在本班次的初期階段亦擔任系統分(SA)角色, 協助小沙瀰預先了解本案架構
與如何參與大型開發案的勤前教育內容教學.

中期:從本案中推選3位學習成效佳者, 教授本案系統設計(SD)分佈,
來分別帶領20人分成三組的伺服器子專案(Server, DataPack, SQL)

未期:SA, SD, Coding 三者如何在現有的線上遊戲開發案中, 進行 patch
與使用 java 追加與改良功能原有功能.