2007年11月8日 星期四

『人月神話』讀後心得〈二〉

再回頭談『寫程式的樂趣』:

作者說--『有創造的樂趣』

這點我蠻同意的,寫程式可以憑空創造一些東西,或是改變一些東西,讓自己「自我滿足一下」。(這可能是『宅男』的最大樂趣所在)

作者說--『創造出來的東西,居然有人用』

這就又比上面說的樂趣更上一層樓了,至少不是「孤芳自賞」,可是有人會欣賞我的程式,最好是花大錢來買,可就是樂翻啦!

作者說--『寫程式時類似推理、解迷的過程令人著迷』

年輕時候的我野蠻沈迷於此的,喜歡幫別人DEBUG,或是看一些很艱深的程式書,可以很專注、很持久、並且得到很大的樂趣。但是年紀漸長,腦力退化,專注力便由細節轉化為『架構』、『概念』、『結構』這些說說就好,不必實作的東西了。

作者說--『在如此容易操作的介質上工作的快樂』

對應到第一項的樂趣,容易操控便有利於創造,宅男就更多啦!

不過話說回來,台灣的六、七年級生能夠體會這些樂趣的人就少多了,反而是對岸的同胞投入寫程式的人排山倒海般蜂擁而至,實在驚人!有幾個例子:

1. 之前有介紹到一家軟體公司 ASPOSE (http://www.aspose.com),這是一家澳洲公司,公司6個TEAM中有3個TEAM是在大陸(長沙、廣州、南京)。

2. 我之前的公司外包程式給長沙的軟體公司,一台PC分成3班給3組人作CODING用,因為CODING很趕也很好賺。

3. 寫程式的技術文章居然在大陸可以賣錢(例如、如何寫像GOOGLE查詢介面的AJAX程式),雖然不多(大約十幾元台幣左右),但積少成多、不無小補。

台灣不僅是傳統產業要關門了,連軟體業都快要被對岸吃掉了(或許早就陣亡了)!

2007年11月6日 星期二

『人月神話』讀後心得〈一〉

第一章談到寫程式的樂趣與苦難,先從苦難談起:

首先,電腦其實蠻笨的,至少目前來看大概只有人類1-6歲的水準,很多時候不知道變通,因此需要很精準的指令才可以指揮電腦,這就是寫程式的用途所在。也因為如此,就造就了許許多多的龜毛程式設計師,許多地方要求完美,這也不是他的本意,實在是電腦要求的。

此外,test/debug也是讓人氣到吐血的事情。雖然依照常理bug應該是越改越少,但是,寫過程式的人都知道,修改完一個bug通常會引發另外兩個bug,實在是越改越多,永無止境。怪不得現在WEB 2.0有人提倡永遠的beta版,看似非常有責任感,其實背後的辛酸是無人知道的。

作者還說,總體來看是『樂多於苦』,但是我想這可能是作者的那個年代(1974),會寫程式就像民航機飛行員一樣稀少,寫程式可以賺大錢的年代,如果寫程式可以月入NTD$30萬(或許15萬我就滿足啦!),我也會覺得樂多於苦。

軟體工程師--總結一句話:生不逢時啊!

人月神話

現正開始讀『人月神話』,對於我這個老骨頭,期望能有一番不同的省思!

讀完之後會有一些心得報告。

人月神話

原文:The Mythical Man-Month--Essays on Software Engineering
作者:Frederick P. Brooks, Jr.(IBM OS/360的專案經理)
初版:1974年10月(超過30年了,對於軟體工程而言有點嚇人)

博客來的連結: http://www.books.com.tw/exep/prod/booksfile.php?item=0010254508
Amazon的連結: http://www.amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959/ref=pd_bbs_sr_1/103-8672678-0383055?ie=UTF8&s=books&qid=1194335570&sr=8-1

2007年6月15日 星期五

[軟體]Subversion Client--SmartSVN

介紹一個Subversion Client軟體--SmartSVN 2.1
http://www.syntevo.com/smartsvn/index.jsp

特點:
  1. UI很簡潔
  2. 以專案為單位瀏覽
  3. 整合WORKING COPY與REPOSITORY資訊
  4. 功能齊全,就算是免費的版本就有很多好用的功能
  5. 內建DIFF功能,可以比對差異並座雙向MERGE變更

缺點:

  1. 需安裝JAVA VM
  2. 有時候執行反應很慢

整體來說,這套軟體比小烏龜好用,尤其是在COMMIT/UPDATE/RESOLVE CONFLICT(衝突解決)方面是方便多了



V4 Release了,效能好多了

2007年6月5日 星期二

Subversion + TortoiseSVN 使用上的一些問題

版本控制利用Subversion + TortoiseSVN 使用上會遇到的一些問題:

在開發階段,遇到的問題較少,但是RELEASE/DEPLOYMENT時就有較多的問題。

若是系統的特性不是PACKAGE,也就是說不是一大包,而是單一檔案為單位,在部署時就會遇到困難。

如果將正式SITE視為一個WORKING COPY來管理,由其便利性,但是有一些缺點:
  • 會產生.svn目錄
  • UPDATE無法批次檢查、逐一更新(只能批次檢查、批次更新),為了安全起見,只能選擇逐一檢查、逐一更新

解決之道--找其他CLIENT TOOL

目前找到一個還不錯的,正在測試中,至少解決了上面第二個問題。以下請參考:

SYNCRO SVN CLIENT V2.3 http://www.syncrosvnclient.com USD$59

2007年5月30日 星期三

[小玩意] Proxy Switcher

目前許多公司都裝設PROXY SERVER提供員工上網之用,一方面是因為資訊安全的理由,一方面是有效管理頻寬不為少數人佔用。但是如果是使用NOTEBOOK到處跑,就會遇到常要設定PROXY SERVER,雖然不是很難,但也挺麻煩的。

介紹一個好用又免費的工具:Proxy Switcher
http://www.proxyswitcher.com/


主要功能:
再桌面狀態列就可以換PROXY SERVER設定
自動更換anonymous surfing,定時更換PROXY設定,主要是為了保密(付費版才有的功能)
支援 Internet Explorer, Firefox, Opera and others
Proxy list管理測試 Proxy server是否存活
(付費版才有的功能)

2007年5月28日 星期一

程式版本管理的輔助工具--WinMerge

介紹一個版本管理常用到的工具--WinMerge

當版本管理遇到衝突時(conflict只兩個人以上修改同一個CODE),這時候就需要人為的方式來解決衝突,這時候WinMerge就派上用場。

WinMerge可以:


  1. 有比對功能,比較檔案的不同處可以(Diff功能

  2. 將兩個不同版本的檔案並列,並逐一『調整』不同之處,此處調整可以作雙向任一方的更新(Merge功能

  3. 支援整個DIRECTORY的比對




其他特色:


  1. 支援UNICODE

  2. 中文OK

  3. 壓縮檔也可以比對

  4. Freeware

  5. 介面蠻人性化

  6. 有中文UI PATCH可下載

其實不僅小組可以使用,個人開發專案時,只要有關版本管理的方面都可使用。可以有效避免以前使用檔案覆蓋時造成的悲劇,改用逐行檢閱更新的方式,確實風險降低不少。



網站: http://winmerge.org/


UML Modeling Tool

介紹一些UML相關工具。

挑選時請注意以下幾點:
1. 支援的UML版本:UML目前公布的正式版本是V2.0,但是V2.1也在討論中即將公布,V2.0與V1.X在圖形/符號上差異很大,要注意。
2. Forward/Reverse Engineering(正/反向工程)的支援,也就是由UML產生程式碼&由程式碼反向產生UML,這牽涉到各位使用的程式語言及相關軟體開發平台。
3. XMI支援
4. 小組支援(Teamwork)。

介紹如下:
1. JUDE(Java and UML Developers' Environment):
http://jude.change-vision.com/jude-web/index.html

2. Enterprise Architech:from SPARX System
http://www.sparxsystems.com.au/

3. Visual Paradigm for UML
http://www.visual-paradigm.com/product/vpuml/

4. Rational Software Architect 7.0
http://www.rational.com

5. 其他參考資料: http://www.umlchina.com/Tools/Newindex1.htm 蒐集蠻多的資料

2007年5月25日 星期五

ASP Upload

ASPUpload
支援ASP網頁的UPLOAD元件
http://www.aspupload.com

雖然ASP已經是發展很久了,但是因為簡單,所以還是很多人使用。
這個元件是可以幫助你在ASP程式中達成UPLOAD的功能,而且只要經由80PORT即可,不需要開放其他PORT,十分方便。

網站中還有其他元件,也還不錯,可以下載來試一試。
XUPLOAD: 還不錯用
JUPLOAD
ASPJpeg
ASPPDF
ASPUser: 還不錯用
ASPGrid
ASPEmail
ASPEncrypt


網站上有使用說明及SAMPLE。

行動裝置控制器

SOTI Pocket Controller & MobiControl
http://www.soti.net

Pocket Controller
主要功能是當你的行動裝置經由ActiveSync與PC連線後,啟動這個程式,就可以在PC上建立一個與行動裝置畫面相同的視窗,兩邊可以如同『Remote Control』程式一樣同步,主要是如果你的行動裝置的輸入介面不方便,用這個程式就可以簡單許多。

使用上安裝也很簡單,連線後啟動此程式,會自動偵測行動裝置並安裝軟體至行動裝置,然後就可以看到同步的畫面了。

MobiControl
Mobile device 的集中式遠端管理系統,透過網路,集中管理行動裝置。
需要一個控管中心,幫忙解決所有的疑難雜症。

看VIDEO DEMO -- http://www.soti.net/video/soti_corp_content.html

軟體工程相關軟體

第一類: 原始碼控制(Source Control)
1. Subversion + TortoiseSVN: 目前使用中
http://subversion.tigris.org/ & http://tortoisesvn.net/
2. Visual SourceSafe: studio與MS VS 有整合
http://msdn2.microsoft.com/en-us/vstudio/aa718670.aspx
3. IBM Rational Clear Case

第二類: Defect 控制(Defect Control)
1. OnTime: http://www.axosoft.com
2. Perforce P4: http://www.perforce.com/
3. IBM Rational Clear Quest

通常第一類與第二類的工具有整合,整合的方式有相互支援或是具有兩種功能(如Perforce P4)

第三類: 塑模工具(Modeling Tool)
一般以支援UML 2.0以上為主流
1. Enterprise Architech(EA):
http://www.sparxsystems.com.au/
2. IBM Rational Unified Process (RUP)

原則上各類工具是依照各人喜好度來排列的,當然有許多外在因素會影響我的判斷,詳細的使用心得會在以後陸續推出。

2007年2月16日 星期五

文件產生器--ASPOSE (2)

再來繼續介紹文件產生器--ASPOSE有關MS OFFICE的系列產品。

當初我會找這個產品是有一段故事的,大概很多公司都有許多制式的文件需要產生,如報價單、各式報表、月報等等,每個都大同小異,但是就是某些地方不同,我的公司也是如此。每次手工製作及修改這些文件就傷透腦筋,因此,就有了文件產生器的構想。

第一代的文件產生器就是使用文件套版+VBA的方式,這種方式並不理想,只適合變動部分比較小的,例如抬頭、住址等。

第二代的文件產生器就是使用Office Web ComponentOWC),這個方法就是在WEB SERVER上由OWC啟動一個OFFCE執行緒,協助產生OFFICE文件。乍看之下還OK,測試時也可以(只是常會讓WEV SERVER卡死),但是,正式上線之後便徹底毀了。因為,每個USER執行的時候,都產生一個OFFCE執行緒,有時程式錯誤OFFCE執行緒也不會自動結束,沒多久SERVER就掛了。

這個OWC的方案主要有幾個缺點:
1. 由client啟動server端程式,有安全的顧慮
2. 效能不佳,每次執行就會產生OFFCE執行緒,會拖垮server
3. 死掉的執行緒沒人收屍(沒有garbage collector機制)
4. OWC的指令(methods & properties)有版本的問題,SERVER裝啥版本的OFFICE,就只能用啥版本,而且各版本之間不甚相容,例如OFFICE 2000與XP的指令就不同。

第三代就是ASPOSE的解決方案:
主要優點有:
1. SERVER只需裝ASPOSE元件,不必裝OFFICE,可以省下一些錢
2. 產出的文件可以不限版本,OFFICE 2000、XP、2003均可(2007還未支援)
3. 執行時使用資源很少,執行效能比OWC好很多

主要缺點有:
1. 只支援.NET及JAVA(部分產品),不『太』支援ASP
2. 並未完整支援OFFCE全部的功能,或是作法和OWC不太相同
3. 使用需要對元件有基本的認識,當然,這點和使用OWC是一樣的

以下是相關產品列表:
1. Aspose.Cells: 可以產生EXCEL文件,目前正在使用,可以達到EXCEL XP幾乎全部功能
2. Aspose.Words: 可以產生WORD文件,還在測試中
3. Aspose.Slides: 可以產生PowerPoint文件,目前沒有使用的計畫
4. Aspose.Tasks: 可以產生Project文件,目前沒有使用的計畫

如果有相關問題,可以留言討論,或是參考該公司的網站 http://www.aspose.com

文件產生器--ASPOSE (1)

首先介紹一個好用的元件(應該是很多個才對),ASPSOE的一系列產品:

網址: http://www.aspose.com

主要產品:
可供.NET與JAVA使用的元件,主要分為以下幾類

1. MS OFFICE類的文件產生器:不必買OFFICE就可以產生OFFICE文件了。

2. PDF 文件產生器:可以由程式產生PDF文件。

3. FLASH產生器:可以由程式產生FLASH檔。

這些產品都有提供下載測試,幾乎都是全功能的,只是會在產出的文件上加上浮水印/版權頁等已標示你是使用無版權的版本。如果各位有相關需要,可以立刻抓下來測試一下。