The Will Will Web

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

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

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

... 繼續閱讀 ...

撰寫合約書金額時建議使用 Word 插入國字大寫數字功能

Word 不知道在哪個版本開始,就有內建插入數字功能,可以方便你快速輸入複雜難寫的國字大寫,尤其是在撰寫合約書的時候更是便利,但卻很多人不知道 Office 有這個功能。之前雖然錄製過影片示範整個操作過程,但時間一久後,自己都忘記分享在哪裡,印象中自己有分享過,但卻在自己部落格怎樣都搜尋不到,呵。本文末有當初錄製的影片,詳細介紹如何透過「插入數字」功能完成輸入,並且也將傳授如何克服 Word 無法新增超過「一百萬」以上國字大寫數字的難題。

... 繼續閱讀 ...

Git 學習筆記 (1):安裝、選項設定、在本地使用 Git 工具

之前常想,Git 這麼複雜的東西,怎麼國外這麼多人在用啊?今天徹底研究了一番之後發現,Git 真的比 SVN 強大太多,只是分散式版控機制確實跟自己以往熟悉的 SVN 或 TFS 差好多,用舊有的思維模式 (Mindset) 學習新技術還真的有點辛苦,今天算是重新打造全新的思維模式,收穫還不少。這篇文章是我 Git 學習筆記的第一篇,寫了十幾個小時,洋洋灑灑的印出來應該也有幾十頁,還覺得很多東西沒講清楚,歡迎各位留言大家一起學習囉! (^_^)

... 繼續閱讀 ...

如何在 Windows 平台安裝與使用 Yeoman 1.0 相關工具

前陣子翻譯了一篇各式 Web 前端開發工具整理的文章,裡面介紹了許多好用的前端工具,其中 Yeoman 就是一個前端工具的組合,幫你統整前端網頁的開發流程 (Workflow),這是一種工作流程的改善,讓你減少重複的手工作業,也讓你更專注在網站的架構與設計上。不過,這些好用的工具大多透過指令的方式運作 (例如: 透過命令提示字元操作),雖然大多工具是跨平台的,但網路上找到的相關教學文章,都是以 Mac 電腦上的操作為主,因為 Mac 為 Unix-like 的作業系統,可以輕易開啟 Shell 環境,使用上相對順利許多,但到了 Windows 總是卡卡的,有時候甚至於還要 Visual Studio 才能安裝 (因為要編譯特定原始碼),今天我就特別寫一篇在 Windows 安裝與使用 Yeoman 的參考指南,幫助大家快速上手這些好用工具。

... 繼續閱讀 ...

如何從 GitHub, Gist, JSBin, CODEPEN 載入 JavaScript 檔案

前幾天一個負責前端的同事遇到一個問題,在實驗一些 JavaScript 函式庫時,發現無法直接從 GitHub 載入 JavaScript 檔案,Google Chrome 的 Console 視窗 (在開發者工具裡) 會出現一段 Refused to execute script from 'https://raw.github.com/moment/moment/develop/min/moment.min.js' because its MIME type ('text/plain') is not executable, and strict MIME type checking is enabled. 的紅字 (紅字代表嚴重錯誤),而導致網頁無法正確執行,這篇文章將分享幾個注意事項,還有從 GitHub, Gist, JSBin, CODEPEN 載入 JavaScript 範例程式或函式庫的使用技巧。

... 繼續閱讀 ...

關於 AngularJS 控制器 (ngController) 的多種宣告方法

初學 AngularJS 的人,寫到 ngController 之後一定會覺得 AngularJS 的 controller 怎麼這麼簡單,只要宣告一個 function 就馬上可以用了,而且 function 裡面的參數還會經由 AngularJS 自動注入物件。例如 $scope$http$window$log、…等等。不過,這種註冊 controller 的方式雖然簡單,卻還是有些缺點,例如這些 function 宣告不能被 最小化 (Minification),否則 function 內的區域變數被改成 a, b, c 之類的,AngularJS 就無法自動注入物件了,因此必須進一步學習更多的宣告方式,藉此解決 相依注入 (Dependency Injection) 的問題!

... 繼續閱讀 ...

The path ‘XXX’ is already mapped in workspace 的解決方法

昨天我的 Visual Studio 2012 突然發生一件離奇的事件,也就是當連接到 TFS Service 的時候,發生了 The path ‘XXX’ is already mapped in workspace 的錯誤訊息,這問題以前曾經發生過,不過只要重新登入登出 Live ID 就能夠解決,但這次卻怎樣都回復不了,而且是所有的專案都連不上了,上網尋找了一下解決方案,最後才知道是 TFS 的 Mapping 狀態亂掉了,必須清空 TFS Mapping 的狀態快取,才能正常使用。

... 繼續閱讀 ...

前端工程研究:HTML/CSS/JavaScript 相容性檢查資源整理

我們公司自從開出前端的職缺並成功找到人才後,就開始積極的切割 前端 / 後端 的工作,期望前後端的分工架構能夠形成,將網站建置的品質持續向上提升。然而,前端的工作並不輕鬆,其中一個很沒效率的工作就是「跨瀏覽器相容性測試」,經常擊倒不少人,因此打算整理一些不錯的相關資源,如果各位有任何推薦的相關資源,歡迎隨時留言給我,我隨時加上,感恩。

... 繼續閱讀 ...

前端工程研究:關於 JavaScript 中物件的 valueOf 方法

在 JavaScript 程式語言裡,這個 valueOf() 函式算是非常少用的一個內建函式,甚至於很多人連聽都沒聽過。然而,這個 valueOf() 函式十分重要,我在研究之後發現,理解了 valueOf() 的用途後,不但更能理解 JavaScript 如何針對物件進行數值布林字串運算,更能夠利用 valueOf() 解決 使用者定義物件 無法比對大小的問題。

... 繼續閱讀 ...