[AutoMapper] AutoMapper 5.0.2 的新寫法

在 4.2 的時候,CreateMap 方法只是被標記過時

到了 5.0.2 的時候,這些過時的方法,已經被拔掉,改由 MapperConfiguration 取代,一旦升級到 5.0.2 就勢必要面臨改寫程式,也獲得到超高效能
https://lostechies.com/jimmybogard/2016/06/24/automapper-5-0-speed-increases/

[Elmah] 保護 Elmah 的連線字串

從大神 Kevin 那邊知道 Arebis.Web.Mvc.ElmahDashboard 這個 Dash Board套件,它比 Elmah.axd 更加的友善,使用後讓 Log Viewer、Search 的友善度提升,二話不說立馬納入專案內;有在使用 Elmah + Sql Server 的夥伴,可以試著使用看看
http://getglimpse.com/
http://kevintsengtw.blogspot.tw/2016/05/aspnet-mvc-elmah-dashboard-elmah-sql.html

這裡將分享保護 Elmah Connect String 的使用經驗,不會提到安裝套件步驟

[Glimpse] 使用 Glimpse 診斷網站應用程式

開發網站應用程式的時候,可以搭配一些診斷工具,方便開發人員除錯。

Glimpse (http://getglimpse.com/) 是一款內嵌至應用程式的診斷套件,不需要修改程式碼就能擁有診斷功能,強化瀏覽器 (F12,開發者模式) 辦不到的事情,比如:Sql Query。

安全性的部分,Glimpse 預設不允許遠端存取,只能用在開發環境,資訊洩漏的問題也幫我們想好了,若要開啟,請做好安全性設定

[Entity Framework 6] Code First - PK Column set Non-Clustered

預設,SQL Server 會幫我們把 PK 設為 Clustered,當 PK 是 GUID type(uniqueIdentifier) 時,有一些注意事項

  1. 使用具有順序性的 GUID,避免索引破碎;我習慣自己產生,不使用 SQL 提供的Store Procedure 的 NEWSEQUENCEID 和 NEWID
  2. 設為 Non-Cluster

原本以為用 Code First 要把 PK 設為 Non-Cluster 很簡單,沒想到還是卡關

如果你跟我一樣,使用 Code First,PK 是 GUID,請看我的解法...

[Unit Test] 測試程式中的比對物件

結果與期望比對,是測試程式碼中最重要的一個步驟,就是用它來取代人眼比對,有關物件比對 91哥的文章有非常詳細的介紹:

https://dotblogs.com.tw/hatelove/2014/06/06/how-to-assert-two-collection-equal

https://dotblogs.com.tw/hatelove/2016/03/28/compare-object-equality-with-expected-objects

當測試程式碼用的是複雜型別,會比對型別中的屬性狀態(值),用它來決定是否通過驗證,最直接的方式就是跑迴圈一個一個比,這樣做不是很聰明,也不夠快,太費力

我會使用以下物件來完成我的工作

  1. FluentAssertions
  2. SpecFlow

在這裡我分享我常用的比對方式...

[C#.NET] 動態產生 AS400 對應的 POCO/DTO Part2

續上篇:https://dotblogs.com.tw/yc421206/2015/12/30/linqpad_generate_poco_for_as400

原本的功能稍有不足,我將它能稍作些強化,添加了類別和欄位的說明註解(XML),讓類別看起來更好一些,最後的結果如下圖

[AS400] 在 SSMS 使用 OpenQuery 查詢 AS400 資料表

撰寫 SpecFlow 的時候需要用到 AS400 上的資料欄位,為了快速產生 Spec Table 於是又把腦筋動到 SSMS 的 Results to Text,詳見前文

https://dotblogs.com.tw/yc421206/2016/01/11/232015

所以要用 SSMS 連接 AS400,對 AS400 不熟,於是詢問同事,該如何處理,經過整理後得到了以下答案...

隨手記錄下來,以免忘記

[TFS 2015] 實作 Build vNext + Release + MsDeploy 自動部署內部網站

續上篇,https://dotblogs.com.tw/yc421206/2016/04/20/tfs2015_build_vnext_webdeploy

上篇的作法是用 Build 將網站應用程式打包到一個位置(Folder),然後再用 CopyFile 複製到遠端電腦的站台實體目錄。

這篇會用 Build 把網站打包成一個 zip 檔,再用 MsDeploy 發行到遠端電腦。

[TFS 2015] 實作 Build vNext + Release + SqlPackage 自動部署測試資料庫

續上篇,[TFS 2015] 實作 Build vNext + Release 自動部署至內部網站

我使用了 Build vNext + Release 將網站部署到了測試環境,缺少了網站所需要的資料庫,這裡我整理了一些手自動部署的方法

自動部署資料庫,要看團隊內的開發流程不適合使用,使用時要注意一下

[TFS 2015] 實作 Build vNext 自動部署 dotCover 測試涵蓋率網頁

dotCover 在 Jetbrains 旗下,是用來產生測試涵蓋率報表的工具,授權方式已經和 ReSharper Ultimate 綑綁在一塊,它有免費試用;若你需要使用網頁來呈現報表, 或許你可以考慮 dotCover,官方連結:https://www.jetbrains.com/dotcover/?fromMenu

dotCover 提供 Command Line 的支援,整合自動化建置這一關是沒問題的,不過我在實作的時候仍然有碰到一些問題,不用怕 dotCover 也有技術支援,回應速度算蠻快,問題很快就解掉了。

[TFS 2015] 實作 Build vNext 自動部署 SpecFlow 和 Pickles 測試報表

前面幾篇介紹使用 SpecFlow 和 Pickles 指令碼產生 cucumber/gherkin  的測試報表,請參考:
https://dotblogs.com.tw/yc421206/2016/04/25/specflow_pickles_live_document
https://dotblogs.com.tw/yc421206/2016/04/26/specflow_pickles_live_document_command_line

今天,我要搭配 TFS 2015 Build vNext 自動產生測試報表,以下是我的演練。

PS.雖然說,手動產生測試報表已經完成了,但還是花了很多的時間調整指令碼路徑的處理。

[SpecFlow] SpecFlow Report and Pickles via Command Line

續上篇,https://dotblogs.com.tw/yc421206/2016/04/25/specflow_pickles_live_document,上篇使用了 Pickles 產生出 Feature 報表,這篇要介紹 SpecFlow 報表,SpecFlow 本身就內建報表,這個報表比較適合開發人員,請參考:

https://github.com/techtalk/SpecFlow/wiki/Reporting

這篇提供了我寫的 Batch 檔,若對指令還不熟的,可以從參考一下。

[TFS 2015] 實作 Build vNext + Release 自動部署元件到內部 Nuget Server

以往,我都是使用用 NuGet Package Explorer 手動部署到公司內部的 Nuget Server,也用過 Nuget Packager,這兩種方法都不錯,只是無法自動地跟我的測試整合在一塊

TFS 2015 Build vNext 裡面有打包 Nuget Package 的步驟,Release 有部署 Nuget Package 的 Task,新版的 TFS 2015 讓我的自動化部署 Nuget 變得很簡單,有在使用 Nuget 的夥伴,可以參考我的設定。

[TFS 2015] 實作 Build vNext + Release + CopyFile 自動部署至內部網站

前半段, CI (Continuous integration) Server 處理:程式碼版控→自動化測試
後半段, CD (Continuous Delivery) Server 處理:自動化部署→自動部署到測試機→簽核(QA), 用來完成自動化部署的動作 ,TFS 2015 Update 2 才把 Release 整合到網頁。

Release 就是 CD
接下來的演練, 我仍然要發行網站應用程式到內部環境,除了上篇的做法之外,我們也可以用 TFS 2015 Update 2 才加入的 Release 新功能。