.NET Framework概觀簡單地講.NET Framework就是建置、部署及執行.NET應用程式及XML Web服務的環境。只要安裝VS 2008開發工具之後,所有相關的.NET開發環境自然具備,此時才能做.NET應用程式的開發與執行,下圖是.NET Framework基本的組成元件架構。
.NET Framework與ASP.NET有何不同?
- .NET Framework主要包含兩大部分,第一部分是CLR(Common Language Runtime),它是.NET程式執行環境及引擎;第二部分是Class Library類別庫。
- ASP.NET是眾多.NET應用程式類型的一種,它的用途是專注於網頁程式設計。ASP.NET會使用.NET Framework所提供的類別庫,因為.NET Framework類別庫是所有類型應用程式所共用的基礎設施。
所以.NET Framework是所有程式的基礎設施,而ASP.NET則是一種網頁開發的技術,只不過ASP.NET會使用.NET Framework所提供的類別庫,呼叫使用一堆現成的程式功能。
VS 2008偵錯工具
- 設定程式偵錯之中斷點
- 加入監看式視窗
- 以DataTip檢視
物件導向程式
類別(class)與物件(Object)二者實為一體兩面的東西,類別是程式的設計藍圖,而物件則是將此藍圖具體化,轉變成真正能夠執行的程式單位實體,這個實體就叫做物件。
此外,類別是物件導向程式中的最小單位。
方法(Method)就是由一些C#程式碼所組成的區塊(Block),並賦予這個程式區塊一個名稱,這樣日後用名稱便可呼叫這個程式區塊,且可重複呼叫使用此方法。而事實上方法並不是什麼新鮮的概念,在許多程式語言中早就存在了相似的概念,如函式(function)、副程式(subroutine)、程序(procedure)、子程式(subprogram)等等,它們扮演的角色及功能其實是差不多的,只不過稱呼的方式有所差異罷了。
參數傳遞的三種類型
- 傳值參數(By Value)
傳值參數是將參數值傳入方法之中,而沒有傳出的動作。傳值參數有時也稱為輸入(in)參數,這是C#語言預設的參數傳遞機制。傳值參數的宣告語法如下:
修飾詞 方法名稱(參數型別 參數名詞1,參數型別 參數名詞2…)
{
…
}
使用傳值參數的語法:
方法(參數);
- 傳址參數(By Reference)
傳址參數是將參數的記憶體位址傳入方法之中,讓方法來做運算處理,傳址參數的宣告語法如下:
方法(ref 參數型別 參數名稱1,ref 參數型別 參數名稱2…)
{
…
}
使用傳址參數的語法如下:
方法(ref 參數);
- 傳出參數(By Output)
傳出參數指的是從方法傳出參數,並讓外部的變數來做接收這參數。宣告傳出參數的語法如下:
方法(out參數型別 參數名稱1,out參數型別 參數名稱2…)
{
…
}
使用傳出參數的語法如下:
方法(out 參數);
微軟T-SQL三大類的陳述式(Statement)功能
- 資料定義語言(Data Definition Language,DDL)
可用來建立或刪除資料庫中的物件,主要是指Create、Drop與Alter三大類的指令。 - 資料控制語言(Data Control Language,DCL)
可用來改變user或role對資料庫的存取權限(Permission),主要的指令有Grant、Deny與Revoke三類。 - 資料操作語言(Data Manipulation Language,DML)
可用來進行資料的查詢與修改,其實就是指Select、Insert、Update與Delete四大類的指令。
多個資料表的SQL查詢語法
- Inner Join(內部聯結)
- Outer Join(外部聯結)。還可進一步細分為Left Outer Join、Right Outer Join、Full Outer Join三種。
- Cross Join(交叉聯結)。
- Self Join(自我聯結)。
Pages頁面之間的切換移轉技巧
- Client端的頁面切換類型
完全是在Client端進行,不必提交回伺服器處理,直接在前端就能進行網頁的切換移轉,常見的程式指令有:Location.href、Window.navigate()、Window.open()與四種。 - Server端的頁面切換類型
是依賴後端伺服器的指令來處理,通常由ASP.NET控制項所引發,進而將Request提交回伺服端,再由伺服端產生網頁切換移轉的指令,常見的程式指令有:Response.Redirect()、Server.Transfer()與跨網頁公佈(Cross-Page Posting)三種。
Web的狀態管理
因為以HTTP技術為基礎的Web Form網頁本身是無狀態(Stateless)的,意思是Web伺服器不會刻意去保留任何的連線或使用者資訊,所以必須隨時視需要,採用不同的狀態管理技術保存網頁資料,以便下次可以將資料再行取出運用,以下介紹四種較為常用的狀態管理技術:
- Application應用程式狀態管理(Server端),其最大特色是儲存的狀態資料屬於全域的(Global)。因此可以在專案中加入一個Global.asax全域應用程式類別(Global Application Class),在Global之中可以設定整個Web專案層級的事件程式,故可在其中設定Application狀態值,供整個專案程式讀取使用Application狀態資料。
- Session工作階段狀態管理(Server端),也是屬於可全域存取的,但與Application應用程式狀態最大不同處,在於Application是所有人共享同一份狀態資料,但Session則是每個使用者獨立使用一份Session狀態設定,不同使用者之Session狀態彼此不會互相干擾,並且還會進一步依附在單一的瀏覽器視窗畫面。因此Session狀態是以「單一使用者+單一瀏覽器視窗」為管理單位。
- View State檢視狀態管理(Client端),以隱藏欄位(Hidden Field)形式,伴隨著網頁HTML碼一併傳送到使用者瀏覽器之中,故使用的是Client端的電腦資源。
- 常用於Page或控制項保存狀態值資料,當然它也可以保存一般值,且是每個使用者皆有獨立的View State檢視狀態,不同使用者間彼此不共用View State檢視狀態資料。但必須注意只能在同一個Page頁面中儲存與讀取狀態資料,一旦有任何的網頁導向切換,或者是按下瀏覽器的上一頁/下一頁按鈕時,View State檢視狀態資料便會消失,在新的Page頁面亦不認得原本的View State檢視狀態設定值。
- Cookie狀態管理(Client端),是用來儲存使用者瀏覽網站的一些資訊,其格式為純文字檔。而Cookie的作用在於可儲存使用者喜好等資訊,待下次使用者再次造訪時,就可以直接讀取其電腦中的Cookie檔設定值。不過,絕對不要在Cookie中儲存重要的敏感資料,例如使用者帳號、密碼、信用卡號碼等。
交易(Transaction)
若能於ADO.NET程式中加入資料庫交易的機制,補強數行交易程式碼,則可確保資料交易安全性可達100%保障,即便中間發生任何錯誤,都可以回復至交易前的資料狀態。
所謂的交易是指將一連串的工作視為個邏輯單元(Login Unit),而交易本身必定具備ACID的特性,所謂的ACID是指:
- 不可部份完成性(Atomicity)
交易必須將交易程式中所有的工作項目全部完成才算是一個完整交易。 - 一致性(Consistency)
交易完成時,全部的資料必須維持一致性的狀態。在關聯式資料庫(Relation Database)中,必須將所有的規則(Rule)套用於交易的修改,以維護所有的資料整合性(Integrity)。所有的內部資料結構,例如B型樹狀結構索引(B-tree Index)或是雙向連結串列(Doubly-Linked List),在交易終止時必須是正確的。 - 隔離性(Isolation)
並行的交易所作的修改,必須與其他任何並行的交易所做的修改隔離。交易所辨識的資料不是處於另一筆並行的交易修改資料之前的狀態,就是處於第二筆交易完成後的狀態,但是卻無法辨識中繼狀態,這稱為序列化能力(Serializability),因為這樣可以產生重新載入起始資料並重新執行一系列的交易,以便讓資料最終能夠與原始交易執行後的狀態相同的能力。 - 耐久性(Durability)
交易完成之後,其作用便永遠存在於系統之中。即使系統發生失敗的事件,但修改仍會保存。
<節錄 ASP.NET 3.5完美入門(使用C#) >
閱讀全文...
Q:
Cookie與中文亂碼的問題?
A:
中文字的編碼與Cookie預設的編碼方式不同,因此必須先行在URL傳輸過程中經過一道編碼、解碼的程序,才不會發生中文字在Cookie中讀取出來為亂碼的情況。
編碼
HttpCookie cookie_name = new HttpCookie("name");
cookie_name.Value = HttpUtility.UrlEncode(txtUsername.Text);
Response.AppendCookie(cookie_name);
解碼
String Username = HttpUtility.UrlDecode(Request.Cookies["name"].Value.ToString());
Q:
讓firefox支援text-overflow: ellipsis
A:
萬萬沒想到ie有一個css的屬性text-overflow,設定後可以讓文字產下截字效果,超出的文字用省略符號(…)來代替;而更萬萬沒想到firefox居然完全不支援此一屬性…
https://bugzilla.mozilla.org/show_bug.cgi?id=312156
網路上有人分享了很多解決方案,不過以這篇
溢出文本顯示省略號,關於text-overflow:ellipsis的那些事 - Leeiio Chaos Made.
http://leeiio.me/text-overflow-ellipsis/
的第二種方法利用jQuery完美地解決這個問題,不過奇怪的是,請注意必須將有應用到解決方案的網頁跟這個.js和.css(包括jquery-1.4.2.js)等檔案都放在同一個資料夾才會有作用!!
http://plugins.jquery.com/project/textOverflow
Q:
在GridView控制項中以DropDownList分頁
A:
參考http://www.dotblogs.com.tw/poto/archive/2009/01/14/6798.aspx
然後在後製程式碼中加入…
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
GridView1.DataBind(); //為了自訂分頁數字按鈕的繫結
}
}
Q:
ASP.NET如何用Button打開新視窗?
A:
可以參考這個網址的程式寫法:http://yukisan.pixnet.net/blog/post/26796800
或者也可以使用ASP.NET AJAX Control Toolkit ModalPopup,這就像是以前JavaScript用的showModalDialog。
不過如果有參數要傳值到後置程式碼(Code Behide)的話,這個方法就不行了,必須還是使用傳統的方法!!
參考範例:
.aspx
.cs
閱讀全文...
根據WIKI,Android是基於Linux核心的軟體平台,是Google在2007年11月5日公佈的行動電話系統平台,早期由Google開發,後由開放手機聯盟(Open Handset Alliance)開發,這個組織是Google和其他幾十個手機公司為了推廣此技術所成立的。它採用了軟體堆疊(software stack)的架構,主要分為三部分:
- 低層以Linux核心為基礎,只提供基本功能。
- 其他的應用軟體則由各公司自行開發。
- 以Java作為編寫程式的一部分。
Android應用程式是用JAVA程式語言來編寫,並且運作在一個虛擬機器(VM)中,其中VM不等於JVM,而是Dalvik Virtual Machine。除此之外,還包括Android SDK、APT(Android Development Tools)、Eclipse IDE和JDK。因此要開發Android應用程式,最好是在Linux環境之下,尤其是Ubuntu,當然如果要在Windows環境下開發也可以。
如果要移植Android至Embedded System的產品開發,就必須理解Android系統內部的函式庫、Android執行環境與Linux核心的細節。而就最重要的是開發者不用花費到一毛錢,便可以建構一個很完整且便利的Android應用程式開發環境,並 發展屬於自己的應用程式
Android內建的網頁瀏覽器(Web Browser)的名稱叫做Google Chrome Lite,與iOS當中內建的Safari網頁瀏覽器一樣是採用Webkit網頁引擎(Web browser engine)。Webkit是目前最多知名智慧型手機作業系統採用的網頁引擎。這些作業系統包括了Symbian OS、iOS、Palm webOD與Android等。
Webkit可以讓正常網頁(非手機版本)自動調整成頁寬(auto fit page)的方式完整縮小呈現在手機的小螢幕中,如此可以方便使用者立即在手機上看到正常網頁的全觀,如果要近看某區塊之內容時,只要將該區塊放大即可。
另外Android內建了SQLite的關聯式資料庫引擎(Relational database engine)式的設定資料或者上一次遊戲關卡的資料等。在應用程式當中,如果使用了SQLite,則手機用戶可將相關資料儲存在手機儲存設備中,無需再以網路連線方式存取遠端的資料庫。
Android在未公開之前大多傳聞認為Google開發的是自己的手機電話產品,而不是一套軟體平台。到了2010年1月,Google開始發表自家品牌手機電話的Nexus One。
對於使用者而言,只要先申請一個免費的Google帳戶,當想換一台手機時,就可以在不同廠牌,同樣使用Android作業系統平台的手機之間選擇,簡單地將如聯絡簿等個人資料轉換到新手機上。
Android Market是一個由Google為Android所創建的線上應用程式服務,允許用戶瀏覽和下載一些由第三方開發商為Android開發的應用程式。用戶可以購買或免費試用,讓該應用程式直接下載到Android的手機中。上傳應用程式到Android Market需要20元美金的帳號註冊費,而下載付費軟體需1元美金。
目前應用程式的數量已經突破10萬組以上,不過整體僅為蘋果App Store約1/3的比例,而且Google線上評審似乎顯得「寬鬆」許多,也因此不少應用程式的品質參差不齊,甚至還有人刻意透過撰寫 Android應用程式竊取使用者個人資訊。不過隨著目前Android平台市占率逐漸提昇,數量和品質是後勢看漲!
閱讀全文...
剛接觸嵌入式系統時,直覺聯想到20年前接觸的「單晶片微電腦」(Single-Chip Microcomputer)。同樣是把中央處理器、記憶體、定時/計數器(Timer/Counter)、各種輸出入介面等都整合在一塊積體電路晶片上的微型電腦。當時所用的開發工具是Z84C01微電腦電路模擬板,開發的語言是Z80組合語言。
當時的Z80與Intel 8080、Motorola 6800等都屬於8位元微處理器,而之所以會選擇Z80是因為I/O中斷控制和抗雜訊的能力很強,因此適用於工廠、電梯等工控系統。
Z80是由Zilog公司於1976年製造,後來由Intel公司於1981年製造的8051也是8位元單晶片微電腦,屬於MCS-51單晶片的一種。近年來由於功能不斷加強,價格愈加便宜,傳統的8051已經成為學校的教材。開發的語言除了8051組合語言之外,也可以搭配C語言來縮短開發的時程。
另外美國Microchip公司於1989年開發的PIC(Peripheral Interface Controller),也是8位元微處理器。PIC由於採用RISC架構,快速的運算、簡單易用、價格便宜、低耗電,高速,高輸出驅動電流、豐富多樣化的週邊界面提供選擇等優點,目前廣為業界採用,尤其是大量應用在消耗性電子裝置、家電、玩具等產品上。
其實4位元微處理器多用於冰箱、洗衣機、微波爐等家電控制中;8位元、16位元微處理器主要用於一般的控制領域,一般不使用作業系統;32位元則用於網路操作、多媒體處理等複雜處理的場合,一般要使用嵌入式作業系統。
所謂的嵌入式系統簡而言之是一種『執行部份特定功能』的系統實作上並不限定技術範疇,只要能將特定的功能(function)『嵌入』 到目標裝置(target device)裡,包含這些功能的整體系統(或平臺)即是『嵌入式系統』。
常見的嵌入式系統有:DOS、Windows CE、Palm、EPOC、Linux等,而Embedded Linux其實並不是一個作業系統,而是代表應用Linux系統於embedded system 的名詞。Embedded Linux是Linux for devices 的意思。
根據「Building Embedded Linux Systems」ㄧ書指出,近來以8051微控制器開發新設計的經濟效益似乎已經不高了,其中所隱含的小筆額外費用,已經能擁有整個Linux系統的所有能力。…當然,微波爐中並不需要使用32位元的微處理器,但如果使用它沒有比較貴,而且可以有一個內建的Web伺服器,使其能夠到遠端更新自己的功能,何樂不為呢?
用 Linux 來發展嵌入式系統有以下的優點:
• 開放原始碼、模組化設計
• 穩定性夠
• 網路功能強大
• 跨平台
• 應用軟體眾多
• 選擇多樣
一般用來開發嵌入式系統的 CPU 有:X86、ARM、MIPS、PowerPC等,例如Samsung S3C6410 BOARD。
閱讀全文...
客戶的這台Aspire 8930G有2顆320G的硬碟,所以將原來的系統碟拆下來保留不動,利用另一顆硬碟來做Vista和XP的多重開機。
- 利用SPFDISK分割為2個磁區。
- 將Vista還原光碟(有3片DVD)安裝到第一個磁區(C:)。
- 再利用SPFDISK將第2個磁區設定為開機磁區。
- 安裝Windows XP到第2個磁區。
- 安裝XP的驅動程式。
- 最後利用SPFDISK製作多重開機。
說明:
- 利用SPFDISK分割磁區,可以分割2個磁區分別給不同的作業系統,或者也可以再多分割1個以上的邏輯磁區做為資料碟。
- Acer的還原光碟會進行磁區分割並還原至C磁碟,但不會產生隱藏磁區,所以還原後開機時無法以Alt+F10呼叫還原程式,更不用說想備份還原光碟。
- 因此可以將整個C磁碟以Ghost將整個磁碟備份下來存成image檔,如此就可以將原來的系統碟重新磁區分割製作多重開機了,而當想回復到出廠預設的環境就不用花800元送回維修中心重灌。
- 接下來安裝XP時,因為Aspire 8930G是Intel(R) ICH9M-E/M SATA AHCI Controller,所以一開始要先按F6去進行SATA驅動程式的安裝,而此時就必須要有一台軟式磁碟機(USB介面)將剛才的SATA驅動程式安裝進來,否則XP會找不到硬碟而出現藍底白字的畫面。
要不然就要到BIOS將AHCI模式改成IDE模式囉,不過如此一來,以後進入XP之前都要先設定IDE模式了!! - 如果沒有軟式磁碟機的話,可以利用nLite(http://www.nliteos.com/download.html)將下載的SATA驅動程式整合到XP安裝程式並製作新的安裝光碟,當安裝XP時不用按F6就會自動安裝此SATA驅動程式了。
- 再來就是安裝XP的驅動程式,以下連接可找到大部分的驅動程式:http://komku.blogspot.com/2008/11/acer-aspire-8930-windows-xp-drivers.html
其中如果讀卡機有問題,可以試試下載下列連接點來安裝看看:http://www.downv.com/Windows/install-Z01-cardreader-XP-Vista-v351whql-rar-10180701.htm
閱讀全文...