發表文章

目前顯示的是 十月, 2014的文章

[SignalR] 實作聊天室功能

圖片
今天搜尋文章時,看到MSDN有針對SngalR作一系列的悠閒Coding介紹,一時手癢跟著作一遍,來看看到底有多悠閒(誤),由於文章內的SignalR版本是1.1,到2.x後有點小變更,將內容順便整理如下:

安裝Nuget 1.先建立一個空白Web專案。
2.Nuget—>Microsoft ASP.NET SignalR,此套件會順便裝好其他必要套件

[AngularJs] 使用Protractor作前端測試-入門

圖片
前陣子去Techday時聽這堂課時"DEV 204 使用 AngularJS 在 ASP.NET 專案上開發企業水準的應用,講師有提到使用Protractor來作前端的單元測試,但他沒介紹如何使用….=.=,為了一解心中疑惑,Survey相關教學後,將相關使用環境、方式整理如下:
什麼是Protractor它是AngularJs專門用來作前端測試的工具,透過nodejs上的selectium,執行chrome、fiirefox、IE等瀏覽器,來模擬使用者操作行為並驗證你撰寫好的AngularJs程式是否正確。

執行環境AngularJs:測試的網頁一定要內含AngularJs,否則會出現沒有Angular的錯誤 ,修正:可以使用browser.driver來撰寫 Java Runtime:selectium的執行環境

http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.htmlNodeJs:Protractor的執行環境 撰寫測試程式 index.html此檔案會用來測試回應的title

index.spec.js單元測試程式,如下為使用browser物件執行index.html並取回title作比對是否為預期值

ps:最外頭的describe為描述測試方法的內容
protractor.conf.js單元測試程式的定義檔,1.baseUrl:指定測試的Url,2.specs指定要測試哪些檔案,如下圖指定spec目錄下所有副檔名為.spec.js的檔案

套件安裝執行nodejs command prompt
1.protractor安裝npm install -g protractor 2.webdriver更新 selectium webdriver-manager updateps:for chrome v54的driver 更新webdriver-manager update --standalone true --versions.chrome 2.24 執行測試

1.執行web server本例是透過nodejs來執行index.js(若你使用其他Web環境,可以忽略此項)


index.js


2.透過protractor指令執行測試pro…

[Expression Tree] LINQ動態欄位查詢-動態代理類別

圖片
在前一篇文章"LINQ動態欄位查詢"介紹到使用Expression來作欄位的動態查詢,但此方法有一缺點是因EntityFramework在查詢時,不能回傳與來源型別一樣的結果,所以使用上會變成查ProductEntity但回傳另一型別ProductInfo。若只是基本的單資料表查詢,那倒還好,但在實務上通常會Join到其他資料表後,再回傳一個多個資料表欄位的類別,如下程式查詢ProductEntityCategoryEntity,回傳ProductInfo。



此時若要再透過前文的動態查詢欄位方法,則必須建立另一個類別才能達到,例 ProductXXXInfo.........,雖然只要新增一個類別再繼承ProductInfo即可以,但之後隨著系統發展越來越大的話,這種為了動態查詢建立的代理類別會越來越多..........。心想手動建立代理類別的方式可以是動態的嗎....?

  印象中EntityFramework預設就有使用代理類別來作LazyLoading機制,心想可以參考相關的作法來實作代理類別,在Google搜尋一下後,找到一篇使用ILGenerator來達到此功能。

   什麼是ILGenerator? 根據MSDN的介紹,可以透過它在執行時期產生 Microsoft Intermediate Language (MSIL) 指令,建立動態組件、方法和建構函式...等等 (詳原文)。

[Sql Server] 資料庫備份筆記

圖片
今天與同事討論資料庫備份的一些特性後,與前兩天參考保哥的文章作一些整理。
完整備份會備份資料檔.mdf 及交易記錄檔 .ldf作差異備份及交易記錄備份前,完整備份要先作 差異備份只會備份資料檔.mdf,並與最近的一次完整備份作比對來備份有異動過的資料不會備份交易記錄檔 .ldf 交易記錄檔備份只會備份交易記錄檔 .ldf每次的完整或差異備份後,會重新開始交易記錄的起點每次的備份會與上次的交易記錄作差異的交易記錄備份。備份後的副檔名為.trn不是.bak