The Will Will Web

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

網站建置不是件簡單的事 @ 打造網站的步驟

在筆者這十多年的工作歲月中,大部分的時間都與網站建置這件事糾纏不清,最早期剛接觸網頁時還是用HE5 (漢書) 或 Notepad 開始撰寫 HTML 開發網站,偶爾回想起來感覺當時寫網頁好辛苦,都沒有設計工具或開發工具可用,不過若換個角度想,其實當時才是最幸福的,你想想今日的網頁設計即便有那麼多好用的工具支援,但設計網頁的過程中有變簡單嗎?有太多網頁設計相關的問題需要被克服,像是跨瀏覽器相容性的問題、互動網頁的挑戰、伺服器端的程式開發、針對海量網頁要求的架構、AJAX、JSON、HTML5、CSS3、…,有太多東西要學了。

... 繼續閱讀 ...

透過 Entity Framework 如何有效率的取回特定資料表的筆數

在許多開發情境下經常會試圖取回整個資料表的筆數,像我們就有個統計網站累積使用人次功能,開發人員寫的時候就是用 SELECT COUN(*) FROM TableName 的方式來取得目前總共有多少人次進入網站,但用這種方式執行效率並不高,每次執行都會產生一次 Index Scan,也就是在 SQL Server 資料庫裡所有主索引鍵的資料都會被掃瞄過一次才能統計出資料總筆數,當資料越多的時候,效能就會越差,在這裡我提供另一種 hack 的方法可以更有效率的取得整個表格的總筆數,但此法僅適用於 SQL Server 喔!

... 繼續閱讀 ...

如何在「建置部署套件」或「單鍵發行」時一起發佈空目錄

上週公司有個同事遇到一個問題,就是他透過 Visual Studio 2010 的「單鍵發行」功能發佈網站,程式在執行時就會出錯,經我檢查之後發現原來他在網站的 App_Data 目錄下有建立一個必要的資料夾,此資料夾會存放執行時期寫入的資料,所以目錄不存在就會掛掉,但是 Visual Studio 2010 其實並不會發佈任何沒有檔案的目錄,因此要解決這個問題就必須特別處理一下。

... 繼續閱讀 ...

Windows 如何設定「特定服務」由「特定使用者」進行管理

我們有個客戶的生產環境的資安要求極其嚴格,我們廠商進去維護都必須申請才能提高權限,否則就要委由系統維護人員進行操作,所以非常不方便。然而他們向我提出了個例外條件,就是他們可以接受特定服務可以由廠商的特定帳號來管理,不過好像 Windows 沒有這種授權方式,請我找看看有沒有這種方法。最後我也研究出設定的方法,還真的 100% 符合客戶的要求,今後我們維護作業就更輕鬆了,以下是設定的方法筆記。

... 繼續閱讀 ...

解決 SQL Server Profiler 找不到「使用範本」的問題

我的個人電腦由於先安裝了 SQL Server 2005,然後再安裝了 SQL Server 2008,之後又安裝了 SQL Server 2008 R2,在這樣不斷升級的過程我發現我目前的最新版 SQL Server 2008 R2 的 Profiler 工具找不到「使用範本」可選,以致於無法讓我在本機收錄 SQL Server 執行時期的資料,這問題曾經困擾著我,不過還好問題已經修復了,以下是修復此問題的筆記。

... 繼續閱讀 ...

如何在Windows作業系統安裝 Node.js 執行環境 (WebMatrix)

昨天本來很想去參加HTML5與Node.js在台灣聯合技術小聚,礙於有要事在身無法參加實在可惜,最近剛好看到 Tomasz Janczuk 開發出 iisnode 專案,一整個超強的,可以用非常直覺的方式在 Windows 平台與 IIS 來管理 node.js 應用程式,還能用 WebMatrix 進一步整合開發環境,所以特別撰文告知 node.js 迷這個好消息。 :-)

... 繼續閱讀 ...

建立 NTFS Reparse Points 的方法 ( Soft Link 與 Hard Link )

最近在安裝壹台測試機,由於要架設好幾個站台,每個站台的程式部分大概有 20MB 左右而已,但是搭配著網站進行測試的相關檔案卻有將近 3GB 之多,為了可以順利測試網站這些檔案都必須存在,如果真的複製好幾份的話主機就會頓時浪費許多磁碟空間,這時就可以多加利用建立 檔案連結目錄連結目錄連接 (Junction) 的方式有效減少硬碟空間。

... 繼續閱讀 ...

NuGet 套件: .NET Framework Extensions Packages (netfx)

以往我們要使用一些現成的工具函式庫時,都會去網路上找一些好用的原始碼回來用,但是當作者改版或修掉一些 Bugs 之後我們並不會主動收到通知,就算是公司內部的函式庫一樣會有版本控管的問題,但是若能透過 NuGet 來幫忙做控管,未來所有專案都能夠享受到自動更新這些工具函式原始碼的服務,而最近就興起一個 netfx 專案整理了許多小片段的原始碼,讓你可以輕易的將這些原始碼透過 NuGet 套件管理員下載到專案中,並可在未來自動更新,方便管理這些下載的原始碼。

... 繼續閱讀 ...

ASP.NET MVC 建置部署套件後無法 MvcBuildViews 的解法

我去年寫過一篇【Visual Studio 2010 建置部署套件與 ASP.NET MVC 的衝突】文章,雖然當時已經知道怎麼解決,但是每次在 發行網站 (Publish) 或 建置部署套件 (Build Deployment Package) 後都要手動刪除 obj 目錄實在覺得很麻煩,今天狠下心研究出一個方法可以在 MvcBuildViews 之前「自動」刪除 obj 目錄裡那些會阻礙建置步驟的相關檔案。

... 繼續閱讀 ...

ASP.NET MVC 開發心得分享 (22):關於 executionTimeout

當我們想要限制或加長 ASP.NET 可執行的時間長度時,通常都會到 web.config 的 <system.web> 區段新增一個 httpRuntime 元素並且指派 executionTimeout 屬性一個秒數,像是我們在設定檔案上傳的程式時,由於上傳檔案的執行時間可能會超過系統的預設值( 110 秒 ),所以這時我們就必須把這個數值調大。當然你也可以將這個數值縮小,以免過多、過長的執行要求把伺服器拖垮。不過,在 ASP.NET MVC 裡有一個鮮為人知的秘密,那就是 ASP.NET MVC 根本不吃這套,預設執行時間是沒有上限的,所以你的 ASP.NET MVC 程式要是出問題,那可是會執行到天荒地老海枯石爛的,最慘的狀況就是 IIS 的 Request Queue 被塞爆。

... 繼續閱讀 ...

如何讓 App_GlobalResources 裡的全域資源檔變成公開類別

在中大型的專案裡,通常會將一整個 Visual Studio 方案 (Solution) 切分為好幾個專案 (Project),在製作多國語系網站時有時也會想把資源檔移到另一個獨立了專案中,如此一來才能方便在日後更新這些多國語系資源設定,不過在 Visual Studio 裡面的 ASP.NET 專案新增資源檔時,其類別的存取等級預設為 internal class,如果直接拖曳到另一個專案就會導致在原本的專案無法存取到這個資源檔的情況,必須進一步設定才行。

... 繼續閱讀 ...