發表文章

目前顯示的是 八月, 2015的文章

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.js3.引用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載入模組設定