The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

使用 DotNetZip 解壓縮為 Stream 時讀不到檔案內容的陷阱

我們有個案子,因為會需要製作檔案上傳功能,但商品的圖片很多,除了單張圖片上傳外,也允許讓客戶批次上傳圖片,只要客戶先把大量圖片壓縮成 *.zip 檔案,上傳到我們製作的後台後,就會利用 DotNetZip 套件,將客戶上傳的壓縮檔 ( *.zip ) 解壓縮,並將檔案一一上傳到 Windows Azure 雲端的 儲存體 (Storage) 上。基本上,這功能很簡單,隨便 Google 一下都有得抄 code,同事也很自然的抄了一段 code,測試無誤就放上,誰知道,同一段看似沒問題的 code,在不同的使用情境下,還是會出現 Bug,魔鬼總在細節裡,讓我們繼續斬妖除魔去。

... 繼續閱讀 ...

介紹好用 Visual Studio 2010 擴充套件:All-In-One Code Framework Sample Browser

Microsoft All-In-One Code Framework 又稱 1code,集結微軟開發平台中各個技術領域的範例程式碼,目前已經累積了超過六百多個含有完整且可執行的專案原始碼在上面,主要的目的就是用來幫助學習微軟技術的開發人員解決各種工作上常見的問題,而這些範例程式碼的產生都源自於 MSDN 論壇上、社交媒體或其他開發社群等提出的種種開發問題,並由微軟員工撰寫範例程式碼提供給所有開發人員下載參考、觀摩之用,這一切不但都是免費的,更重要的是:如果你覺得他們沒有你要的範例程式,你還可以提出需求,請微軟的工程師幫你撰寫範例程式,Oh~ My GOD~~

... 繼續閱讀 ...

TFS 版本控管時會將檔案設為唯讀,需注意 File.Open 的使用

這是上週遇到的問題,我們有個專案參與開發的人比較多,一直以來都用 TFS 進行版本控管與專案管理,一直以來專案在本機開發環境執行的時候都沒遇到過任何問題,但突然有一天所有團隊成員都發生無法讀取特定檔案的問題 ( Access to the path 'C:\Inetpub\wwwroot\App_Data\TEST.txt' is denied ),查到了程式碼發現是在呼叫 File.Open 時發生的錯誤,但檔案權限明明就沒有問題啊!問題要如何解決,請繼續看下去…

... 繼續閱讀 ...

利用 .NET 支援的數值格式來解析各種複雜的數字表示式

前陣子處理了一個特殊的案子,該客戶提供一批與「會計」有關的數據,在客戶手中的資料來源裡,我拿到一個這樣的數值字串:(95,403.8075)e-02,在會計的領域中刮號代表「負數」的意思,但這樣的數字在 .NET 應該怎樣 Parse 比較好呢?其實在 .NET 裡已經內建了許多好物等著你去挖掘了!

... 繼續閱讀 ...

如何利用 Thread 類別限定某段程式碼的執行時間

上週我們有個案子發生程式 Hang 住的情況 (就是程式執行到某一行停止不動的情況),程式執行到某個資料庫寫入動作的時間過長導致系統無法正常運作,由於資料庫那端我這邊無法快速修復,且此狀況又是偶發的,因此我就改以多執行緒的運作方式限制程式執行的時間,以免造成系統其他部分的正常運作,算是一個小小的開發技巧。

... 繼續閱讀 ...

如何利用 .NET 的 Regex 過濾所有特殊字元 (其他語言適用)

今天有個同事寫了一個小程式要將欄位中所有特殊字元過濾掉,他雖然用的是 規則運算式 (Regular Expression) 但寫法卻有瑕疵,我在 Code Review 的時候立即聞到這個程式碼的壞味道,很快的也用另一段更短的規則運算式 來解決這個小需求,而且也更加符合客戶的需要。

... 繼續閱讀 ...

如何避免相同的 ConsoleApp 或 WinForm 同時間重複執行

前幾天在寫主控台程式 (Console Application) 時突然想到一個避免程式在同時間重複執行的機制,在噗浪發問與自行研究過後發現最彈性的實做方式是利用 .NET 內建的 Mutex 類別進行實做,幾乎任何情況下都能輕易實做程式不重複執行的目的,包括單機環境與多人使用的伺服器環境。

... 繼續閱讀 ...