發表文章

C#單元測試--使用Pex

今天看到一篇MSDN上的新文章,在 介紹有關單元測試的資訊 。 微軟團隊最近發表了一套可以配合Visual Studio來使用的單元測試軟體-- Pex 。這套軟體可以針對您所開發完成的程式碼,實際分析其中的程式碼語意,自動地產生所需的單元測試範本及相關的程式。 在Pex的網站中,有許多詳細的說明,而且還有 介紹的影片可線上觀看 。 在程式開發過程中,需求不斷地在變更的事實,算是不可否認的現象之一了。就算再如何地做好需求訪談、分析,也無法避免未來開發過程中,或進入維護階段時,所需面對的功能修正的問題。 為了能確保每次進行的軟體功能修正都能正確無誤,而且就算在加入新功能時,也能同時確保原有功能的正常的話,使用測試導向的開發模式是勢在必行的了。 當然,要程式開發人員再多費心思去撰寫測試程式或準備測試範本的話,可能會多佔用他們的寶貴時間,造成一般開發人員在開發過程中,都不太會去花時間在測試的方面。 有了Pex的輔助,可以將測試流程大量地自動化的話,一定可以改善開發流程及品質的。 Pex使用了參數化單元測試(Parameterized Unit Test -- PUT)的技術。以下節錄自Pex的說明文件: A unit test is a method without parameters represents a test case which typically executes a method of a class-under-test with fixed arguments and verifies that it returns the expected result. A parameterized unit test (PUT) is the straightforward generalization of a unit test by allowing parameters. PUTs make statements about the code’s behavior for an entire set of possible input values, instead of just a single exemplary input value. A unit test is a method without parameters represent...

Subversion版本控制

Subversion算是一個成熟的OpenSource程式碼版本控制軟體。 本來公司都是使用VSS。在家裏,本來也是想用VSS的。不過因為版權的問題,加上想要試用一下其它的版本控制軟體,就找到了Subversion。 Subversion同樣是要安裝一個伺服器。您可以使用 VisualSVN 的免費版本,喜歡的話,再昇級到企業版。或是您也可以到 SilkSVN 這個網站中去註冊並申請一個免費的空間,它可以提供Subversion的版本控制。讓您在只要能上網的地方,就可以存取到程式碼。 有了Subversion的伺服器之後,就要有用戶端軟體來存取它。您可以使用SilkSVN所提供的免費用戶端軟體。或是您是使用vistual studio的開發環境的話,就可以安裝 AnkhSVN 這套跟Visual Studio整合在一起的Subversion版本控制套件。

C# Dictionary.ContainsKey()釋懝

今天在使用C#中的泛型集合Dictionary<TKey,TValue>時,發現它的ContainsKey()竟然不能使用我自訂的Key類別所覆寫的Equals()函式。這點著實令我感到不可思議。 ContainsKey()這個函式我已經使用很久了,可這還是第一次發現ContainsKey()傳回來的結果,令我訝異。 我想要的很簡單,就是我有一個資料型別,而我另外定義一個跟這個資料型別相互配合的Key類別。我想要將相同Key值的資料群組起來。於是我宣告了以下這樣的Dictionary<>: Dictionary<TKey,TValue> dic = new Dictionary<Tkey, TValue>(); 接著我就依續為每筆資料產生它對應的Key物件,將它放到這個Dictionary中。當然我的Key類別有覆寫了Equals()函式,而且我用ContainsKey()函式來判斷是否有相同Key的資料存在這個Dictionary中。可是當程式執行完後,發現沒有一筆資料的Key是相同的。我確認過資料,應該是會有Key是相同的才對。此時的我開始感覺不妙。難道Dictionary不再是我所認識的那個Dictionary了嗎!! 於是我開始查詢網路上相關的資料,有人提到在 MSDN中有相關的說明 。看了之後才恍然大悟,原來是這麼一回事啊。 IEqualityComparer 首先來看一段程式碼,這是我一開始以為可以正確地讓Dictionary<>.ContainsKey()為我找到相同Key值的寫法: class MyKey { public int ID; } static void Test1() { Dictionary dicTest = new Dictionary(); MyKey key1 = new MyKey(); key1.ID = 10; dicTest.Add(key1, "Test"); MyKey key2 = new MyKey(...

Windows 7 @ ASUS F8sg

圖片
這次買了Windows7家用進階版(昇級版),安裝在ASUS F8sg上。 指紋辦識登入 這個部份,看了ASUS官網上的討論區後,安裝了一堆程式及驅動程式,結果還是無法使用指紋辦識登入。結果在安裝印表機驅動程式時,突然就設定好了。 1. 首先要下載 指紋辦識驅動程式 ,安裝完後,基本上還是無法使用。在查詢驅動程式時,請選作業系統Windows 7。目前F8sg是用 AuthenTec指紋辨識驅動程式 Win7 32 位元版 這個版本。 2. 再到Windows 7的裝置及印表機中,應該會看到有一個指紋辦識器。 對它按下右鍵,會看到一個Biometrics的選項。 點選它後會看到如下圖的畫面: 按下右邊的管理你的指紋,就可以開始註冊指紋。註冊完後,再重新登入,就可以選要輸入密碼或指紋登入了。 HP M1120印表機 這台印表機在Win7上安裝也是有點小麻煩。一開始我用的是Vista版本的全版本驅動程式光碟安裝,安裝到一半時就要偵測印表機。可是就一直偵測不到。後來就到HP官網中下載支援Windows7的全版本驅動程式,結果還是一樣。 原本想放棄的,後來又看官網上看到有分 全版本及單純驅動程式版本 。想說不然就下找純驅動程式版本安裝看看好了。沒想到就安裝成功了。 Fn + F9 TouchPad開關 一開始Fn + F9的功能無法使用,也就是無法開啟或關閉TouchPad。後來到網路上查了一下,原來是要安裝ASUS的TouchPad驅動程式。安裝完後,就可以正常使用Fn+F9了。

用ActiveSync可以跟Google行事曆同步了耶

這幾天開始發現原本在使用的GoogleSync程式無法再用來同步我PDA跟Google上的行事曆了。 為了解決這個問題,就到網路上Google了一下。沒想到在Google本身的網站中就找到了如何 利用ActiveSync來跟Google行事曆進行同步的設定方式 。雖然這裏的設定方式跟我的PDA上的畫面上有點不一樣,不過算是大同小異,在經過設定後,就可以直接同步了。而且原本使用GoogleSync只能同步行事曆而已,現在連聯絡人、工作項目、郵件都能同步了。真是太強了。 不過,要注意的是,目前還不支援同步「工作」項目的功能。所以請不要勾選它。不然會造成無法同步的問題。這點我也是查了一陣子,才發現的

大話設計模式--簡單書評

自從女兒出生後,就很少再去跑圖書館了。直到不久前,想說由網路上去查一下看有沒有什麼書可借來看看的,正好就看到 「大話設計模式」 這本書。先前逛書店時就有看到這本書了,只是一直沒拿起來翻閱。這次正好圖書館可以外借,就借回家來看看囉。 說真的,每次看書時都只是大略地瞄過書中的序言。但這本書,可能是一開始作者的文筆就吸引了我吧,沒想到就將這本書的序言給看完了。 在序言中,作者主要是在教學過程中,體會到要用更貼近生活化的方式來傳授物件導向的概念。就如同作者說的,當我們在閱讀一本小說時,都能逐字地將它讀完。可是當我們在閱讀技術書籍時,可能都是前面幾張會仔細閱讀,可到了後面就虎頭蛇尾地草草結束了。個中原由,作者體會到原來要能像小說一樣地,用文字將讀者的注意力吸引住,讓他們能將整本小說讀完。 像物件導向中的設計模式的概念,其實坊間已有不少的書藉出版。像最有名的GoF出的設計模式書籍,幾乎是大家都一定要讀過的。可是真正讀完的有多少人呢。像我本身也是前面幾個模式看過後,後面就等要用時再查了。無法全部讀完主要也是因為書中的寫作方式太過制式,難以引人入勝。所以作者這本書就以小說的方式,透過小菜及大鳥(合起來就是菜鳥吧,哈)兩人的對話,來說明物件導向的概念及設計模式。 設計模式的確是物件導向中一項重要的概念,所以坊間的書出版的還不少。直接讀GoF的書,是直接看到前人所討論出來後的最後結果,如果你能吸收當然是最好。如果不行的話,可能就是要用一步步的方式推導出來,這時可以看 「重構--向範式前進」 這本書。如果你想知道如何應用的話,那「大話設計模式」這本倒是不錯的選擇。 本書中,個人覺得不錯的地方還有一個就是作者 在p.17這頁中利用一張UML的圖型,將所有UML中會使用到的物件導向分析圖案都應用上了 。沒學過的人可以利用這張圖有個全盤的概知,而學過的人,可以再驗証一下自己的觀念。 不過,書中作者提到物件導向有三大精神:封裝、繼承、多型。可個人在以前學習時,還多了一項 虛擬 。我覺得「多型」可能還不包含有「虛擬」的概念,所以應該要再加入這一項才行。

免費瀏覽器書籤轉換器

一直以來比較喜歡使用的瀏覽器是Firefox。除了它是開放源碼的軟體外,另一方面就是它有許多好用的擴充套件可用。 每次在備份及還原書籤時,總是覺得很麻煩。後來發現在Firefox中有一個免費的書籤管理及同步程式,可讓它在不同電腦中的Firefox同步使用相同的書籤。當然,如果你重灌電腦時,也可以利用它來取回先前所記錄過的書籤。真的是非常好用的功能之一。 後來Google推出新的免瀏覽器,訴求的就是顯示網頁的速度快速。的確Chrome真的在瀏覽網頁時非常的快速。可惜,它只能一開始時同步一次Firefox的書籤。不過,後來發現它也有匯入書籤的功能,可使用Firefox備份下來的檔案來匯入成為它的書籤。算是要同步的話,也是OK。不過,要將Chrome的書籤匯入到Firefox就沒辦法了。 沒想到今天在 網路上 看到有免費的各家瀏覽器書籤同步程式 Transmute 。當下就 下載 回來使用。這樣就可以解決Chrome書籤無法匯入Firefox的問題了。