2009年4月8日 星期三

Inno Setup 使用ISPP 來取得主程式版本

我每次在release程式時,因為主程式的版本變動了,相對的我必需跟著修改Inno Setup script的程式版本
[Setup]
AppVersion = 1.2.3.4

這樣的做法容易會有疏失,Inno Setup script裡面常常會有4、5個地方寫著版本訊息,每次release就全部都要修改,漏改一項麻煩就大了,後來上網找了一下資料,原來這個問題可以透過ISPP(Inno Setup Preprocessor)來處理。

#define AppName "YourApp"
#define AppVersion() ParseVersion(AddBackslash(SourcePath) + "../../bin/release/YourApp.exe", Local[0], Local[1], Local[2], Local[3]), \
str(Local[0]) + "." + str(Local[1]) + "." + str(Local[2]) + "." + str(Local[3])

[Setup]
AppName={#AppName}
AppVerName={#AppName} {#AppVersion}
AppVersion={#AppVersion}

使用以上的語法可以自動取得執行檔的版本,不需要每次都手動修改,以後當我們在release程式也更方便。


Note:
  1. ISPP是Inno Setup的額外套件,包含在Inno Setup QuickStart Pack裡,必需要先安裝完Inno Setup主程式再安裝Inno Setup QuickStart Pack.

unit testing的簡單心得

上星期去台北微軟上課,有講到Unit Testing,之前看書或是網路上也常常看到Unit Testing,也大概知道是做什麼的,和如何去做之類的東西,但是一直沒有時間去做,最近幾天終於花了一點的時間稍微的試用了一下Unit Testing,因為我手邊剛好在用boost library,就直接拿boost 的Unit Testing來玩囉。

底下是我稍微玩一下Unit Testing的心得:
  1. Unit Testing的確是不錯的玩意,特別是在我要重構(Refactoring)的時候,重構完成馬上透過Unit Testing進行驗證,方便又快速。 :)
  2. boost unit testing framework感覺上蠻強的,使用上可以使用boost 的unit testing framework提供的main(),他會全自動的執行test case,如果使用自己的main()則要手動啟動測試程式。
  3. Unit Testing建立的成本,我感覺是很值得的。
  4. UI或是部分無法Unit Testing的程式碼,該如何測呢?花時間去建立simulation??

上課的時候,台上的講師有demo他使用Visual Studio 的Unit Testing,感覺功能還蠻足夠的,而且還可以算目前Unit Testing做到的Code Coverage(1),可惜的是只支援C#, VB.Net, C++/CLI,不提供我目前工作上最常用的Native C++,要不然在Unit Testing使用相同IDE,直接產生GUI的testing report,應該是挺不錯的事吧(2)。

補一下上課的筆記:
  1. Code Coverage至少有60%~80%
  2. Unit Testing的Pass Rate%至少要大於98% (為什麼不是100%呢,因為當有時候程式不release你就沒飯吃的時候,或是剩下的2%是不重要或是留待下次修正的bug)
  3. 先寫Unit Testing再寫code (Test Driven Development)
  4. good unit testing應該要automated, quickly, repeatable
  5. Unit Testing無法測試scenarios
  6. 如何說服你的同事或是上司開始使用Unit Testing呢


Note:
  1. Visual Studio 的Code Coverage是算block coverage,沒有branch coverage, boundary test
  2. Visual Studio我似乎只是拿來compiler而已,version control我們是用SVN。 XD

TeamViewer 一個方便好用的遠端遙控軟體

現在我們的電腦常常都會掛在ip分享器後面,得到的ip都不是真實的ip,如果你用像VNC等p2p的遠端遙控軟體,是沒有辦法連線的,不過這個TeamViewer可以辦的到喔,主要他是透過server端,每一個client都會建立一個unique ID和password,當你要連線到另一個電腦的時候,改成輸入ID及password就可以了。

而且TeamViewer也可以建立帳號,方便你管理常連線的電腦。(partner)


Download: http://www.teamviewer.com/download/index.aspx

LinkWithin

Related Posts with Thumbnails