Harry Chang's Blog

Harry會在這分享各種技術心得, 同時也會分享一些敏捷相關的想法與引導方法!

[NHibernate] Session 與 Lazy Loading

前言 NHibernate 最有特色的一個機制就是「Session」,一般來說我們透過NHibernate 做CRUD 都是對Session進行操作, 這邊不深入探討「Session」底層是如何運作的,有興趣可以參考這篇文章! 這篇文章是要探討Session 與 LazyLoading 共同運作下所發生什麼問題。 前情提要 產品的 Service Layer 做完應做的商業邏輯...

[jQuery] $.isEmptyObject 小提醒 !

專案上很多前端驗證都會使用jQuery「$.isEmptyObject」來檢核參數是否為空, 但在驗證布林值確都回傳true 的結果,意思是「他是一個空物件」??? 查了一下API 發現原來這個Function 在使用上是有限制的, 他只能查詢「單純的JavaScript 物件」,且不同的瀏覽器對「單純的JavaScript 物件」的定義可能不太一樣, 我們在Chrome試一下得...

[Asp.Net MVC] An item with the same key has already been added!

「An item with the same key has already been added」系統執行到一半,突然跳出這個訊息, 仔細看一下錯誤訊息有一段寫道「System.Web.Mvc.DefaultModelBinder.BindProperty…」, 於是朝Model Binding 異常的方向前進。 首先看一下我們的Model: 1 2 3 4 5 ...

[jQuery] 為何不能透過 ajax 直接下載檔案?

前言 在實作檔案下載時,我們通常會透過location.href() 、window.open()、iframe 等方式來下載檔案, 詳細實作方式可以參考黑暗執行緒的「透過Javascript觸發檔案下載」, 那為何不行透過 ajax 來下載檔案呢 ? 我們可以從以下兩個面向來探討「為何不能使用 ajax 來下載檔案」: ajax ajax 其中一項最重要的作用是「非同步處理」...

[Asp.Net MVC] MVC 網站部署失敗

今天部署網站到客戶端的時候,發現一直無法讓網站順利啟動,一直出現以下錯誤, HTTP Error 403.14 - Forbidden The Web server is configured to not list the contents of this directory. 查了一些資料,都是在Config 加入「runAllManagedModulesForAllReque...

[Asp.Net] 檔案上傳長度限制

今天在測試檔案上傳時,發現上傳特定幾個檔案時會失敗, Log 顯示「System.Web.HttpException (0x80004005): 超出最大的要求長度」, 查了一些相關文件,原來是Asp.Net 預設限制每一次的HttpRequest 為 4096 kb(4MB), 所以只要超過此限制,就會出現Internal Server Error, 這個限制主要是避免有人惡意...

[jQuery] event.preventDefault() 與 event.stopPropagation() 的差異

我們在撰寫前端畫面時,常常會使用 return false 來終止函數運行,其實return false 會包含以下三種行為: event.preventDefault() event.stopPropagation() 停止函數並回傳 第三點應該大家都知道,畢竟寫 return false 就是為了這件事情呀,但是大家不知道其實JavaScript 默默幫我做了1跟2,...

[VS] 建置後的事件!

最近產品剛好有一個特殊的需求,就是專案建置好後,要把專案建置出來的東西搬到特定目錄下, 讓另一支程式去該目錄底下,呼叫我們建置好的dll, 先前我自己寫了一個cmd檔,每次建置完成後再手動去執行該cmd, 該cmd就會幫我把dll搬到我要的路徑底下,但是這樣好麻煩啊,每次都還要手動執行, 有時候換人建置時對方還會忘記這個動作,導致系統異常, 前輩就跟我說VS本身很像有提供建置前後的...

[SMTP] 郵件主旨亂碼!

今天發現一個 bug 為郵件主旨(附件)在某些情形下變成亂碼,查了一下資料,發現是.Net Framework 4的 bug 而且是個陳年 bug 呀,發生的原因為字串含有非 ASCII 編碼的字元,且長度又超過 41 個 UTF-8 Encode Bytes 時,就會被重複Encode兩次,導致顯示成亂碼。 解決方案有安裝微軟的Hotfix或升級,當然今天不是要介紹這個方法,而是在無法升...

[LINQ] 增加可讀性的好寫法!

今天幫同仁 Code Review 發現他寫了一段雙層迴圈,但是其實可以用一段 LINQ 就解決掉,如下: 前情提要: 系統有數種的辦理方式,這裡簡稱A、B、C 與 D,同一時間點同一個單號可以做複數個辦理方式,並且把做過的辦理方式以字串方式儲存, 例如做過「A 與 C」那DB會存 “A, B”,到前端來在用Split的方式來看剛單號做哪哪些辦理。 因此同事先宣告了一個 List...

icon_wechat.png