2009/9/22

[入門] [Array] .NET 陣列詳論

在 .Net Framework 中,Array 可以說是每個程式設計師最常使用的 Type 之一。不過即便你每天都在使用 Array, 你或許還沒有仔細的把它研究過。其實如果好好使用 Array 物件, 在許多情況之下可以增加我們的生產力。

Array 的宣告


陣列總共可以分為四類:

一維陣列 (Single Dimension Arrays) -

這是我們最常使用的陣列, 其宣告方式如:

[入門] 給 ASP.NET 新手的建議 - 關於網頁生命週期

我當過電腦講師、寫過不少文章、也在國內外各個 ASP.NET 討論區轉戰了好幾年, 接觸過無以數計想學網站設計的新手或學生。在這麼多人裡面, 我大致上可以歸納出一種或少數幾種性質蠻接近的族群, 這些人有共同的特色、遇到相同的問題、也有相同的盲點。我現在要在這裡給這些人提供幾點小小的建議。

這些人有個共同的特色, 那就是不完全清楚網站運作的基本邏輯。我時常喜歡打個比方: 以電視 (尤其是陰極射線管的電視) 為例, 我們在看電視時, 總以為電視上的圖像總是永遠是連續的, 但其實電視的畫面是從上到下、從左到右一點一點畫出來的, 每秒畫三十幀 (略估), 然後靠畫面上螢光物質的暫時殘留現象, 讓人眼 (其實人眼也有視覺殘留效應) 看不出來它其實是每秒三十次一直重畫的。

設計一個從物件導向為出發點的網站

在這裡我先假設你已經知道所謂物件導向程式設計的原理, 所以我不會浪費篇幅重複的解釋 OOP 是什麼。但是如果你來到這裡的目的是希望看到最基礎的 OOP 原理, 那麼我建議你去書局買一本適合的書回去慢慢研究, 或者上網從 WIKI 開始看起。

我在這裡想要介紹給 ASP.NET 新手的, 主要在於 OOP 的實踐方式, 以及應用時機。

[入門] ASP.NET 事件與委派詳論

在 .Net Framework 的基礎領域中, 事件處理模型一直是令人頭痛的一環。倒不是因為它真的有什麼難度, 而是因為 .Net Framework 稍嫌麻煩的處理方式, 以及它的一些難懂的特殊用語, 有時候還真的會讓人搞得眼花潦亂, 甚至退避三舍。

在這裡, 我要試圖使用最簡單、最白話的方式把 .Net Framework 對於事件與委派的設計原理重新描述一遍。我相信如果你很仔細的看過一遍, 就再也不會對這個主題心存疑惑了。

[入門][Enum] Enum 詳論

Enum 通稱為「列舉型別」, 在 .Net 中應該可以算是一門顯學, 意思就是說絕大部份 .Net 開發者都知道有這個東西, 也一定會用。不過對於許多初學者來說, 他們知道列舉型別, 也會用, 卻不一定知道列舉型別用在什麼地方、有什麼好用之處。所以在這篇文章裡, 我除了向各位介紹 Enum 如何使用之外, 也會告訴你它的好用之處

[XML] XML入門系列 (3) : 巡覽 XML 文件

在本節中我將介紹對於 XML 資料最重要也最常用的技巧, 也就是所謂的巡覽 (navigation)。我所說的巡覽至少包括兩個部份, 一是定位/搜尋想要找的節點和資料, 二是在樹狀結構資料中以一個節點一個節點的方式向前或向後巡迴停駐。

在本文中, 我仍將採用在上文中所建立的簡單 XML 資料以做為範例:

[XML] XML入門系列 (2) : 以動態方式建立或產生 XML 文件

在本文中我將示範以不同的方式從無到有的建立一份 XML 文件。

使用 XmlDocument 物件

首先, 我們可以使用 XmlDocument 物件來一個節點一個節點的建立起 XML, 如下例:

[Regex] Regular Expression 詳論

ASP.NET 的初學者, 一旦學到了 Validator 控制項, 就會踫到 Regular Expression 這個主題。Regular Expression 指的是一種檢驗文數字的表示式, 早在 ASP.NET 出現之前就已存在, 而且也不是 ASP.NET 所專有。大多數主流程式語言 (包括 Java、JavaScript、Ruby、PHP 等) 都可以透過 Regular Expression 來驗證輸入。

不過, 除非你早就了解 Regular Expression 是什麼, 否則當你一開始遇上它時, 可能會被搞得一頭霧水

[DataTable] .NET DataTable 詳論 (含相關主題)

DataTable 是 ADO.NET 的核心物件。如果你想學好 ADO.NET, 你絕對避免不了接觸到 DataTable。如果你過去曾經透過網路上的片段知識學到了你以為足夠的 ADO.NET 知識, 卻對以 DataTable 為始的基礎概念沒有深刻的認識, 那麼我建議你下一些苦工, 就從這一篇文章開始, 重新把底子建好。

在這裡, 我必須假設你對資料庫的基本知識已經有了清楚的認識, 否則你應該回頭先去讀讀這方面的書籍。相反的, 如果你已經對資料庫原理瞭若指掌, 那麼你一定對以下的內容感覺到異常的容易。因為 DataTable 本身幾乎就是資料庫裡面 Data Table 在記憶體中的翻版, 如果你懂資料庫, 你對 DataTable 絕對沒有任何難以理解之處。

離線式資料操作 (Disconnected Data Operation)

[VB][C#] AndAlso 與 OrElse

我想這是許多初學者會遇上的問題;請先看以下的例子:

Dim lbTest As Label = GridView1.FindControl("lbTest")
If (lbTest IsNot Nothing) And lbTest.Text = "(Empty)" Then
   ...

[Regex] 超讚!免費的 Regular Expression 輔助編輯與測試工具

對於想要開發 Regular Expression 的人, Expresso 是一個很好用的工具,不但可以即時製作 Regular Expression 字串,而且可以立即驗證、測試。你可以在 Ultrapico 網站 下載最新版本(如該頁所顯示的, 你必須先在 註冊頁中註冊,才能取得一個免費的註冊碼, 否則只能試用 60 天)。

VS2008 新功能彙總

VS2008 與 VS2005 比起來,功能上的改變絕對比不上 VS2005 對 VS2003 的改變那樣的具有革命性。從另一個角度想,大家或許可以稍為鬆一口氣,因為沒有太多新的或意料之外的東西需要從頭學起。

以下我把 Orcas 的新功能歸納整理了一下,供大家參考:

1. 新的網頁設計介面

VS 終於可以支援巢狀 Master Page 的 WYSIWYG 設計了!我不知道有多少人曾經為了這個原因而減少或避免巢狀 Master Page 的使用(我是其中之一)。Orcas 終於支援這個本來就應該有的功能,相信能在某一程度上改變大家的設計習慣。

其次,Orcas 提供了 CSS 的即時編輯和套用的功能。用過 DreamWeaver 的人或許了解那是什麼意思。不過實際上我覺得 Orcas 對 CSS 的支援感覺起來比 DreamWeaver 強大一點。

讓 VS 的工具箱發揮更大的作用

只要你用過 Visual Studio,你一定知道工具箱 (Toolbox) 是用來放置控制項 (Controls) 的地方;無論是寫網頁程式或視窗應用程式,你都可以從工具箱裡面把控制項以拖曳的方式拉到頁面上來使用。

可是當你在編寫文字檔案或程式(包括 .txt、.config、.vb、.cs 等等),你知道你也可以使用工具箱來提高你的產能和效率嗎?

一般來講,你應該知道從 VS2005 開始,我們可以使用程式碼片段 (Code Snippets) 來加入一些時常用到的程式碼,可是我現在要告訴你,你只需要在編寫程式或文字檔案時,把一段文字標示起來並拖曳到工具箱裡面,它就會自動記錄在工具箱箱,以後你可以再以拖曳的方法把這段文字複製到其它地方。

甚至,你也可以加入不同的索引標簽以將不同的程式碼片段或文字進行分類。以這種方式,其方便性應該可以取代 Code Snippets 了吧!

Technorati 的標籤:

資訊交換碼初論

Unicode 是為了因應多語系互通與共存而產生的。好玩的是,我看過很多人把它誤寫成 Unitcode,這是對於這個通用碼的不了解。它其實是 Universal Code 的縮寫,所以我們說它叫做「萬國碼」。

在純西歐語系的環境下,最常用的電腦編碼標準有三種:

  • ASCII - American Standard Code for Information Interchange (美國資訊交換標準碼) 是最早出現在電腦上的編碼方式之一,它使用七位元編碼方式,定義了標準英文字元、數字、符號和特殊字元 (例如 Bell、Tab、CR、LF、Esc) 等等。
  • ANSI - 由 ANSI (American National Standard Institute, 美國國際標準協會) 所制定的編碼標準,使用了八位元編碼方式,將 0~127 字元分配 ASCII 碼,將 128~255 字元分配給其它的西歐字元。
  • ISO-8859 - 由 ISO (International Stander Organization 國際標準局) 所製定的編碼標準,將特定的語系納入,例如:

為網站加入代表圖像

在大部份較有規模的網站中,如果你瀏覽其中的網頁,會發現該網站都會有一個代表圖像(Icon),出現在瀏覽器的網址列和頁籤上面。這個圖像是怎麼加上去的呢?

2009/9/21

ASP.NET 細說從頭

如果不使用 ASP.NET,你可以用來寫網頁的程式語言其實並不算太多。在 ASP.NET 出現以前,大家最常見的莫過於 ASP/VB、Java 和 PHP,至於幾乎沒人使用的 CGI、Perl 等就先略過。不過從 ASP.NET 之後,又多出了 Visual Basic.NET、C# 和 J# 等等。你或許會覺得奇怪,什麼叫做「從 ASP.NET 之後,又多出了 Visual Basic.NET、C# 和 J# 等等」?難道 ASP.NET 本身並不是一種程式語言嗎?

對,可以這麼說。ASP.NET 本身並不是程式語言,而是一個執行環境,算是 Microsoft .NET Framework 的一部份。那 .NET Framework 又是什麼呢?它是一組附加於作業系統的底層程式庫(Library)。所以基本上,你只要安裝了 .NET Framework 1.X 或 2.0/3.0/3.5/4.0,再加上 IIS 網站伺服器,你就能執行 ASP.NET,就能啟動作業系統中的網站功能。

使用 Debug.WriteLine 在程式執行時顯示除錯訊息

我時常看到初學的程式設計師,一天到晚在使用最古老的方法來進行程式的除錯。當然,我們知道最常見的方法,就是不斷的輸出字串,把變數內容輸出到畫面之上。其實這個方法不但是老掉牙的方法,而且是非常沒有效率的方法。

在這裡,我要介紹一個非常、非常簡單的指令,那就是 Debug.Write 或 Debug.WriteLine 指令。它會把訊息留在 VS 的 Output 視窗中,一點都不會影響到網頁。換句話說,你即使在程式交付之後,也可以不用修改你的程式。因為這些除錯訊息根本不會出現在網頁上,所以你根本可以把這些指令留在程式裡面。

善用 Debug.Assert 進行程式的除錯

除了 Debug.Log 之外,我要介紹另一個簡單的指令,那就是 Debug.Assert,其語法是 Debug.Assert(True/False, Message [, DetailMessage])。它的用法很簡單,如下例:

少有人知的 VS.NET 編輯技巧 -方塊狀選取區域文字

今天剛好有人問到這個問題,我才知道這個看似簡單的小技巧,竟然有那麼多人連聽都沒聽過。記得遠古時代的 PE2 文字編輯器嗎?在那時候寫程式的人都知道以方塊(box)方式選取文字有多麼好用,尤其是在某些特殊情況下的時候(例如用來消去行號)。

2009/9/1

[入門][XML] XML入門系列 (1) : XML 初論

XML 在 .Net 中大概算是最重要而基本的技術之一。我將花一點時間從頭將 XML 以白話解釋一遍, 再把讀寫 XML 資料的相關技巧整理成一系列文章。

首先, 我們先來看一個完整且合法的 XML 文件:

<?xml version="1.0" encoding="utf-8"?>
<rss version="1.0"> 
    <channel>
        <title>Johnny Worker's Blog</title>
        <link>http://feeds.feedburner.com/jworker</link>
        <description>
            Johnny is a Microsoft MVP who's familiar with ASP.NET / VB.NET and C#.
        </description>
        <language>en</language>
        <image>
            <link>http://feeds.feedburner.com/jworker</link>
            <url>http://s.blog.xuite.net/_image/logo_blog.gif</url>
            <title>HiNet Blog</title>
        </image>
        <item> 
            <title>[AJAX] 使用 PageMethods 從 JavaScript 中直接呼叫 Server 端函數</title>             
            <link>http://feeds.feedburner.com/~r/Jworker/~3/375404303/19043851</link>
            <pubDate>Tue, 26 Aug 2008 10:57:52 -0500</pubDate>
            <guid isPermaLink="false">http://blog.xuite.net/johnnyle/worker/19043851</guid>
            <description>
                如果我們在 ScriptManager 中設定 EnablePageMethods 屬性, 
                而且在 Server 端某個方法上...
            </description>
        </item>
        <item> 
            <title>MSDN 的 Transfer Manager 哪裡找?</title>
            <link>http://feeds.feedburner.com/~r/Jworker/~3/369845030/18764090</link>
            <pubDate>Wed, 20 Aug 2008 04:43:22 -0500</pubDate>
            <guid isPermaLink="false">http://blog.xuite.net/johnnyle/worker/19043851</guid>
            <description>
                如果你是 MSDN 的訂閱者, 你一定知道 MSDN 的下載一律是透過  
                Microsoft File Transfer Manager 進行的...
            </description>
        </item>
        <item>
                ..... (省略)
    </channel>
</rss>