2011/12/7

我看 Windows 8

在 C|NET 的 "Will Windows 8 be irrelevant to regular PC users?" 一文中,作者 Lance Whitney 對於 Windows 8 的未來展望打了一個蠻大的問號;同時,在該文中夾帶的 Windows watch 投票活動中,差不多只有兩成左右的讀者表達了他們一定會更新到 Windows 8 的意願,有高達三成六的讀者表示他們不會進行更新,另外有三成四的讀者表示觀望。

2011/11/26

.NET Framework 新風貌

就目前所知, 下一版的 .NET Frameworks (根據目前消息,版號應該是 4.5) 應該沒有什麼驚天動地的變革, 預計上市日期也還沒有確定。不過隨著今年 (2011) 在 BUILD 大會上公布的 VS2011 Developer Preview Version (簡稱 "vNext") 讓大家可以廣泛試用, 我們逐漸了解這個新版本的大致狀況。

2011/11/23

[HTML5] 文章裡的文章-使用 article 標簽

如果你在網頁設計上面已經著墨很久的話,或許你會發現 HTML 實在是一種非常不嚴格的語言 (它確實是一種語言;它的名稱也是這樣來的)。我這裡要很簡單的介紹一個在 HTML5 標準中新加入的元素 article,以及非常類似的 section,並且會探討它們的差異。而你將會見識到 HTML 在語法與使用上的寬鬆。

基本上,article 之所以存在,自有它的目的;並不只是個不具實用性的精神指標而已。但是如果你不從它的原始目的來使用它,那麼它就和過去常見的、到處站立在街頭的領導人雕像一樣,實在很難想像它們到底有什麼實質的作用。

2011/11/10

在 ASP.NET 專案中安裝 ELMAH 擴充套件 STEP BY STEP

在這個全世界有數百萬起跳的人口都在從事軟體開發工作的今天,程式設計絕對不是一個適合單打獨鬥的行業。雖然我個人也是個偏好親手下去寫所有程式的開發人員,但是若想應付改來改去的需求、節省時間、準時交件的話,有時候不借助他人之力是不行的。很幸運的,確實有很多已經寫好、包好、測試好 (而且好用 - 這是重點) 的套件就在網路上,為什麼還需要凡事都自已動手?

問題是,通常這些套件的安裝非常繁複、要面對的情況也很多樣。有時候光是安裝這些套件就會難倒一堆人,甚至讓人興起不如自已寫還比較快的想法。

但是現在有了 NuGet,所有事情都簡化了。套件的搜尋、瀏覽、下載、安裝和設定都可以讓 NuGet 幫你做好,在大部份情況下你甚至什麼都不需要做。

2011/10/31

從 C#/VB 開發者的角度解析 C++ 中的指標

最近在維護一個 C++ 專案,在迫不得已的情況下重新溫習了已經二十幾年沒踫的指標 (Pointer)。而且,很不幸的,跟二十幾年前一樣被搞得暈頭轉向 (在 C# 跟 VB 中根本不會有這種問題),所以只好花點時間把 C++ 指標相關重點摘錄起來供自已及有興趣的朋友們參考。
首先,我把 C++ 跟 C#/VB 在這方面的根本差異處先條列在前面。沒有學過 C++ 跟沒有學過 C#/VB 的人同樣可以把下列重點當作本文的前題說明。

2011/8/12

使用 Decorator 樣式實現輸入裝置的 IoC 概念

對傳統程式設計師而言, XNA 可以算是一個面臨多種適用狀況的開發環境。為什麼呢? 因為你所開發的程式, 只要經過小小的修改, 就可以移轉到 PC、XBOX 與 WP7 裝置上面。而它的輸入裝置也很多樣, 包括鍵盤、滑鼠、XBOX 搖桿、觸控輸入, 甚至其它

2011/6/9

.Net Interoperation 入門

就字面上來看, Interoperation 是一個英文複合字; 如果你在電腦上打入這個字, 一些 editor 的 spell checker 會告訴你拼字錯誤, 並建議你更改成 Inter-operation 甚至其它拼法。其實 Interoperation 是工程界普遍使用的字眼, 專指在不同系統中搭起的簡易或臨時的元件, 藉由製訂某些共通的協定, 以便這些系統可以共同作業。由於這個溝通界面可能並非非常嚴謹, 所以當其運作時, 必須特別有人從旁監督、隨時調整和修改。

在.Net 中, Interoperation (簡稱 Interop) 專指從.Net 應用程式中存取 unmanaged 程式元件的行為。我們知道, 當我們撰寫 .Net 應用程式或元件時, 這些元件都是 managed (受 .Net 執行環境所管理的)。但是如果是使用VB6/C/C++ 所撰寫的非 .Net 程式的 COM 元件, 對 .Net 而言, 都算是 unmanaged。如果我們企圖在 .Net 程式中存取那些 unmanaged 程式或資源, 就必須透過 Interoperation 技巧與COM 介接。

此外, 許多 Windows API 並沒有 .Net 的對應函式。換句話說, 如果我們要撰寫 Windows 應用程式, 而且我們必須使用到 Windows API 的話, 我們沒辦法從 .Net Framework 執行環境中找到對應的方法, 而必須透過 Interoperation 去呼叫 Windows API。

2011/4/29

[ASP.NET] 擷取 Master Page 觸發的事件

很多事情都是必須遇到了才會重視。使用 Master Page 是每個 ASP.NET 程式設計師都必須了解、甚至精通的; 我也一直覺得我對這部份的技術非常精通, 直到我在最近設計的網站遇到某個比較少用到的功能, 才發現有很多事情並沒有原先想像的那麼直覺。什麼事情呢? 就是我原本放置在 Master Page 部份的控制項, 如果我必須在 Content Page 處理它的事件, 應該怎麼做?

一開始, 我覺得這不應該是個問題, 但是真正下手之後, 才發現解法並沒有那麼直覺。經過明查暗訪, 終於找到了解決的方法, 如果你剛好也遇到這個問題, 不妨參考一下我的解法。

其實解法講穿了就沒什麼學問了! 因為它根本就和我在「[入門文章] ASP.NET 事件與委派詳論」一文所描述的做法幾乎是一模一樣的, 但是在這個問題中另外有個關鍵點, 請稍為留意。

首先, 建立一個名為 mp.master 的 Master Page 檔案, 並在裡面放置一個按鈕物件 (Button1), 設定它的 Click 事件處理函式 (Button1_Click). 然後再建立一個 Web Form (例如稱為 Default2.aspx), 並指定它的 Master Page 檔案為 mp.master。

在 mp.master.cs 中加入以下程式碼:

2011/4/21

[入門][ASP.NET] 在 VS2010 中建立 New Web Site 與 New Web Application 的差異

差不多每隔一段時間, 就會看到有人又重覆的詢問這個問題, 或者雖然沒有問到這個問題, 卻不停的懷疑為什麼在某些網站可以做的事情, 在另一個網站上面卻不行。其實這些問題通通必須回歸到一個最基本的問題, 那就是請你恢復一下記憶, 你在一開始是用什麼方式建立你的網站的?

2011/3/15

[ASP.NET] 離開表單時向使用者確認

當我們在網頁上設計了表單, 讓使用者填寫資料, 使用者通常有很大的機率會因為各式各樣的原因而意外地跳出頁面。如果表單很簡單, 或者使用者根本還沒有填寫什麼資料, 那麼使用者就算不小心離開頁面, 也不會有什麼損失。但是如果使用者已經填寫了很多資料 (例如姓名、地址、電話等等), 但是在他按下確認按鈕之前, 卻不小心按到上一頁、下一頁、關閉分頁、關閉視窗等按鈕, 那麼不管他使用何種方式回到這一頁, 他曾經填寫的資料可能都無法救回來。

2011/2/8

.Net 集合型別的效率探討

我要在這裡說明的所謂「集合型別」指的並不是泛指 System.Collections 命名空間下的各種型別, 而是特別指自從 .Net 3.5 之後才出現的 Sets (集合) 型別, 特別是 System.Collections.Generic.HashSet 與 System.Collections.Generic.SortedSet 這兩個實作 ISet 介面的類別。ISet 介面是專門針對集合作業而設計的, 它提供了幾個特別的方法: