發表文章

POC-實作Web與Window應用程式互動

圖片
  今天同事提到Spotify,有個很酷的登入功能,在桌面應用程式登入後,再到網頁作登入的動作,會自動登入。登出,再登入,也都不用輸入帳號密碼。但若桌面程式關閉後,Web要登入就要輸入帳密。   雖不知它實作的機制是如何,但停不住好奇心的我們,花了些時間朝著Web與Window互動的方法去尋找類似的作法。找了幾篇後,在CodeProject剛好有篇文章,介紹到使用 HttpListener 讓Desktop與Browser溝通 ,在瞭解相關作法後,實作了一個類似的Spotify的登入機制。   如下示意圖,使用者電腦的Desktop應用程式,使用HttpListener在本機Host一個port為60999。瀏覽器透過對localhost:60999Request,會取到目前的登入者作登入。

[AngularJs] 解決UI Bootstrap bindHtmlUnsafe is now deprecated.

圖片
將專案的AngularJS UI Bootstrap 從0.13.0 升上到0.13.3後,在使用typeahead的時候,瀏覽器的console會出現警告訊息 如下圖,提示bindHtmlUnsave已不推薦使用。 此問題是我的typeahead有使用自訂的template,而template的內容使用到bind-html-unsafe作html的繫結 此行程式我是參考ui-bootstrap 在Github的原始碼,來作比對的highlight用。本想說它既然警告了此用法,那它應該也有修改成正確的寫法才對。但....答案是沒有.. 解決方法 1.將bind-htmjl-unsave 改成 ng-bind-html。 改完後,引用模組"ngSanitize"。 2.加入angular-sanitize.js 3.引用ngSanitize 參考來源 https://docs.angularjs.org/api/ngSanitize

[Window 10] 關閉Windows Defender的即時防護

圖片
最近剛裝完Window 10,想將Windows Defender停用,來增進筆電的效能。最簡單的動作,就是直接將介面打開,將即時防護關掉。但關掉後三不五時會提醒你安全性警告,且重開機後又會自動打開。本想到服務去停用它,但停用功能是鎖住的….WTF。 針對此,找到國外有一篇文章介紹到,如何停用"即時防護",相關步驟如下

透過ChangeMonitor實作多個網站同步快取

圖片
   目前公司有一個網站執行在Azure上,並將經常讀取的共用資料快取在記憶內。初期網站的負戴量還沒那麼大時,在快取資料上不會有什麼問題,但之後若成長到一定的程度時,網站勢必要作擴展,此時會造成快取的資料在多個Instance是不同步的。針對此找了幾個解決方案 Azure Redis Cache:最多人使用,也是官方推薦使用,效能快,可以輕易作到多網站之間的快取共享。關於Redis更多 請參考 ps這適合較大的WebFarm使用,若你的擴展不會很多台的話,可以考慮使用第3個方法。 Database Cache 在Nuget有一套件 Ovicus.Caching 實作了ObjectCache(.Net4.0新的快取類別 請參考 ),將資料快取在資料庫內。這樣也可以達到多個網站的共享快取,但在效能會比軙慢了點,尤其在大量的快取存取下更明顯。 透過ChangeMonitor監控快取 :此方案有別於上述兩個,不作共享快取,只作單機快取。透過監控的機制,在資料變更時,通知所有網站清除本身的In-Memory快取,再作資料的重新取得。

[AngularJs] Protractor-Page Object 實作

圖片
  一開始在撰寫測試腳本並不會去考慮reuse這件事,但隨著測試腳本開始變多、變複雜時,就會看到要測同一支程式,但相同的語法散落在不同的腳本。例:a-spec.js與b-spec.js有一大段是輸入表單值的部份。幸好根據此問題,在網路有蠻多篇介紹使用Page Object Pattern的撰寫方式來解決。本文會介紹如何在Visual Studio 2013 如何實作此Pattern。 開發工具設定 Visual Studio的TypeScript Module System需要設定為CommonJs,此為NodeJs載入模組設定

[Power Shell] 透過排程執行 Protractor測試

圖片
  這兩天寫完了Protractor測試後,在本機執行沒問題後,將執行語法作成一個.bat檔後,放到測試主機Window Server 2012的排程工作執行。但一直無法出現測試畫面 (但手動執行.bat ok),本還以為是Window 2012後不支援.bat的排程執行=.=,後來查到是要設為"登入時才執行"。

[AngularJs] Protractor實用套件整理

圖片
這陣子在Survery前端e2e測試的一些撰寫方式及輔助套件,將一些實用的記錄下來,以便日後查詢。 開發及測試環境 使用NodeJS作測試 Visual Studio 2013+TypeScript撰寫測試Script   Visual Studio 套件 新增一個Web 空專案 安裝protractor的TypeScript套件 angular-protractor: browser、element、by.model、by.binding 等語法支援 jasmine : BDD測試Script,例: descript( """) it(“’….”) NodeJS套件 執行NodeJs Commad,並切換到專案目錄,執行npm init 初始化package.json,過程會要你輸入相關資訊,按照預設值可以一路按enter,此檔案會建立專案資訊及記錄相依套件 。 npm init 安裝測試套件protractor npm install -g protractor 更新webdriver webdriver-manager update 安裝jasmine-reporters,此套件可以幫助你將測試結果輸出到目錄 npm install jasmine-reporters --save-dev 建立Protractor 組態設定 protractor 參考 , jasmine-reporters 參考 撰寫測試程式 1.直接引用官方範例,在spec目錄下新增caculator-spec.ts的TypeScript檔案 2.執行測試 protractor protractor-conf.js 執行後會啟用chrome瀏覽到測試網頁,並輸入1跟2後送出,再驗證結果是否相符 3.測試結果 輸出到目錄的xml檔案 範例下載: Github 相關參考 http://ramonvictor.github.io/protractor/slides/#/ https://angular.github.io/protractor/#/tutorial https://github.com/lar...

[Entity Framework ] EDMX更新預存程式回傳欄位

圖片
目前使用EntityFramwork 是透過EF Designer幫我們從資料庫產生预存程序的Mode 問題      若已產生的預存程式Model,若有增加欄位,想要自動將Model更新的話,在目前的作法都會將Model手動刪除在加入一次,會這樣作是因為在EF Designer 的功能[從資料庫更新] 都無法成功,如下圖,有更新視窗,但按更新後,Model還是舊的。雖然手動的方式刪除的方式不會太麻煩,但每次刪除,再加入時在版本控管的簽出簽入會有無法繫結的時候。

[Report] 設計報表的備忘錄

圖片
很久一段時間沒有開發報表了,再度接觸Report 2008有種很生疏的感覺,一時之間要找想要的功能,還找不到.............。記錄一下,避免再度迷路。 1.報表資料視窗

[AngularJs] 清除html快取

圖片
  預設Angular會在使用者瀏覽網頁時,在Route的導頁機制下,會將第一次取到的html下來暫存在Client端,這樣使用者在第二次在瀏覽相同的網址時,就不會向後端的Serve再r取一次html。除非使用者自行重整,或從Route最原始Url進入 例:Index #/ 將#/移除,從Index進入,則快取就會清空。 問題   目前程式中有一功能,會根據挑選的條件而Render不同的html到Client,而該功能作完後要立即導到另一網頁呈現內容。此時該網頁會因前一次的瀏覽而無法向Server取最新的html。根據此問題若Render html的方式是在Client作,是不會有此問題,但基於某些必要的原因,所以需在Server Render Html。