Google Prettify

2007-09-23

如何轉Serializable物件轉成byte[]

你是否有嘗試過在java環境中,明明已經有一個Serializable物件,卻不知道要如何將它放到串流裡(供JSP串流使用)?JAVA本身就提供ByteArrayOutputStream可以將Stream物件轉成byte[]。
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos= new ObjectOutputStream(baos);
oos.writeObject(obj);
byte[] bytes =baos.toByteArray();
事實上這些方法jakarta-common-lang已經有提供現成的method可以使用了。有興趣的朋友可以參考jakarta-common-lang的SerializationUtils Class。

2007-09-04

軟體導入的過程


Perforce是一個適合大型專案開發用的版本控管軟體。我們這個團隊一直以來使用perforce來做我們的版本控管。不過最近聽說subversion還不錯用,而且還不用錢,因此我們也嘗試著想要引進subversion來做我們的版本控管。

Subversion導入負責人:現在我們要引進subversion。環境跟帳號都已經開好了。請大家每次改檔或是每天早上來公司時就先update一下code。改完後再commit code…

團員A:負責人,我要怎麼知道這個檔案現在有人在改? 不然我要上code時都會被reject。還是有沒有什麼其他的功能,可以讓別人知道我現在在改這個檔案?

團員B:負責人,subversion有沒有像perforceforce sync的功能?

Subversion導入負責人:ㄟ你們講的這些功能,subversion都沒有耶~。可是它的介面比較簡單好用

團員A:什麼好用,難用死了,沒有force sync、又沒有辦法可以知道現在這個檔有人在更改,每次都會conflict,每次都要手動merge。以前都不用merge,就算要merge,用auto-merge就可以了,perforce就會自動幫我們merge好,都不用再去手動merge。還有啊,以前看到有人在改相同的一個檔案時,就先放著等一下就好了,先改其他的code。現在用subversion都要問一下:「現在沒有人在改這個檔案啊? 沒人改的話我要改囉」。難用死了,以前用perforce都不需要這麼問,現在換一個軟體反倒要這麼問,這說不過去啊

於是在團員們的抗議下只好終止引入subversion這套系統。

這讓我想起在讀BPR時,一個最主要失敗的因素就是使用者習慣的抗議。連我們身為最前線的開發人員都會有這樣的心態,再加上領導者又不夠力,也難怪BPR起不來。拿舊有的習慣去使用新的軟體,要求新軟體要可以有舊系統所有的功能跟操作習慣;除非新軟體的設計目標是要完全取代舊有軟體,否則當然會覺得新系統處處彆手彆腳。於是這就牽扯到了新軟體如何去打入舊有軟體的市場。

2007-06-03

建立信任,不容易,卻很重要!

很奇怪的,台灣的教育講究要信任、但是沒有教導要如何信任,反而教的大多是如何防人。中國講防人之心不可無、卻很少在講要心存信任他人。這也許與文化有關。天主耶穌基督講究的是只要你肯悔改,它就會原諒你。中國五千年文化就沒有這麼寬宏大量了,不過幸好佛教文化至少還是有講究"不可害人"。

這篇是引用文,卻也突顯出台灣的教育。以前就有聽過一種說法:只有台灣人寫的程式在防東防西、怕使用者亂搞手腳;老外寫的程式都著重在功能上、相信使用者會依正常流程來操作。也因此在撰寫程式時就會花費很多心力在防東防西、防使用者透過不正常的連結連入網站。

像這樣唯利是圖的社會文化會被保留下來,我相信一定有它的適應之處。(文化沒有對不對,只有適不適應)。在這種唯利是圖的社會文化生存,沒什麼不好、沒什麼不正確、也沒什麼不可以。不過考慮防小人所花的成本,這種信任的社會的好處就應該蠻吸引人了。

當然,想要讓信任在社會文化下運作、配套措施是不可少的。最直接的就是教育素養。然而教育又是百年大計,也就是說要想要有一個像義大利或日本這樣一個信任的環境至少要百年的時間...。如果將這個時程表拿給政府官員或教育部長,我相信馬上會被打回票,因為費時太久。然而我希望今年就會是第一年。

2007-05-23

Subversion on windows安裝

Subversion on windows

下載
  1. 請從http://subversion.tigris.org/下載subversion的安裝檔。他有zip檔,也有exe 檔。我使用的是exe檔,但看起來好像也只是將zip檔解開放在特定目錄,以及增加了一些文件的捷徑在 功能表裡,並沒有增加什麼dll、exe或有的沒的檔在document and setting或windows裡。
安裝
  1. 沒什麼好講的。.exe檔的話,就點2下執行,.zip檔就解開放在你喜歡的目錄。以下的操作是以.exe為主。
建立repository。

可以執行下命令列新增,也可以使用client工具新增。使用client工具比較簡單,執行create-repository here就好了。

  1. 設定path (選擇性)。讓不管在那一個目錄下,都可以直接執行subversion\bin\下的各個指令。
  2. 建立一個目錄。這裡用"D:\svn\proj1"。請留意,目錄架構會顯響存取的設定。有一個地方(好像)是可以故alias 的 設定,但因為沒有try過,所以就先跳過。
  3. 執 行 svnadmin create D:\svn\proj1。或是用client直接建立也可以。建立完後,proj1目錄裡裡面會產生很多檔案。
    1. 修改D:\svn\proj1\conf\svnserve.conf。下面設定前面的#拿掉。
      [general]
      anon-access = read
      auth-access = write
      password-db = passwd
    2. 修 改D:\svn\proj1\conf\passwd
      [users]
      user1 = pass1
      user2 = pass2
起動svn
  1. 在命令列視窗裡執行svnserve -d就可以了。這個執行檔是位於subversion安裝目錄下\bin裡。請注意這個視窗不能關閉,否則subversion就會停掉。

安裝service。

執行以下指令。

sc create svn binpath= "\"C:\program files\svn\bin\svnserve.exe\" --service " displayname= "Subversion Server" depend= Tcpip start= auto
net stop svn
net start svn

這表示登錄的service叫"svn"而顯示的名稱叫""Subversion Server"。
有一些要注意的。
  1. 參數binpath、displayname、depend、start的等號後面要有空白。
  2. 如果你的目錄裡有空白字元 ,前後要用引號(")括起來。binpath則要有跳脫字元。如範例。
  3. 在windows 2000下可能沒有這個執行檔,可以去找windows 2000 resource kit tools安裝。

Client安裝

從http://tortoisesvn.tigris.org/下載tortoise。這是subversion的 client工具。 subversion是跨平台的版本控管工具,大部份是指令操作,因此在win32上就有人提供了不錯的clent工具。在windows下直接把下載下 來的檔案點2下執行就可以了。安裝完後會要求重新開機...就重新開機吧。

2007-05-21

法國工作時數之謎

前陣子看到新聞談到了台灣勞工的工作時數居世界排行。忽然覺得很奇怪:聽說法國人的休閒時間之長跟工作節奏之慢也是世界排行,怎麼生產毛額也是世界排行?想了很久還是想不出來。

2007-05-08

專家只是訓練有素的狗?

在廁所如廁時,看到身上穿的西裝,一副專業的樣子,令我不禁想起什麼是專家。
這個問題要從"專家只不過是訓練有素的狗"開始講起。這句話是陳之藩引自於愛因思坦的話....,如果你也這麼想,那就是陳之藩口中的專家了....。(我沒有說在看這篇文章的讀者是狗...,不要對號入坐)。這句話確實是引用之愛因基坦,但原文並不是這樣。國家圖書館這裡有原文。愛因斯坦原本的意思是:『學生應該可以理解和感受各種價值,不然的話他的專業知識只會讓他像"訓練有素的狗"』。愛因斯坦沒有鄙視專家、認為專家不懂思考。不過從陳之藩的斷章取意…或是國立編譯館的寫法…,會讓人覺得愛因斯坦的觀念中會鄙示專家。愛因斯坦是我蠻崇拜的一個偶像,這樣一個被大家公認為20世紀最聰明天才,會有這樣的觀念、偏見,我實在是很難相信。
在這個例子裡,如果沒有去求證的話,還真會以為愛因斯坦會這麼想。
回到一開始的問題:什麼是專家?專家,當然最起碼要有擁有專業訓技能。然而這是不夠的。
我再引用另一個觀念:大前研一的"專業-你唯一的生存之道"。大前兄(講得我好像跟他很熟...)很明確的指出專家專業的差別。如果是專業,那比專家多了什麼? 至少要有驗證的態度。而且會去思考愛因基坦為什麼會這麼認為?他說的是否正確?如果專家是狗,為什麼大家覺得狗(專家)是值得尊敬(專家是值得尊敬的,而專家是狗,所以狗是值得尊敬的)?專業人士會知道要去思考、不拘泥於故有觀念或現有情境,求新求變時時刻刻自我挑戰。
身為一個工程師,該想想一個專業的工程師應該具備那些條件。程式寫得快、寫得有彈性、程式寫得讓人家容易看得懂?還有呢?這問題的答案留給大家去思考。

您或許對這些有興趣

最後

謝謝您的閱讀,希望您可以有豐富的收獲。