2008年12月11日 星期四

2008十一月文章

http://www.dotblogs.com.tw/mis2000lab/


閒談 DataSource 與 DataSourceID以 GridView為例,我們會見到他在資料存取上,有兩個屬性 ---- DataSource 與 DataSourceID 只會用 SqlDataSource這種精靈畫面,很快就會碰壁。 不要小看 DataSource 與 DataBind, ADO.NET都靠他們在跑。 如果您的ASP.NET可以完全脫離他,或許您能力太強了,也或許是您作的東西太小了。


GridView也可以「新增」一筆資料GridView預設的功能,有「選取(Select)」、「編輯、取消」、「更新」、「刪除」 唯獨沒有「新增(Insert)」 的功能。 本文的範例便能破解。


[給初學者的話] 與其想得太多,不如立刻動手作我想這樣的問題,各位至少看過百遍了。 「我數學不好,能學習寫程式嗎?」 「我年紀大了,轉想行寫程式,可以嗎?」 「寫程式的人,邏輯能力跟數學都要很好才行嗎?」 「寫程式會不會被中國、印度的人才取代?」 「該學Java or .NET比較好」


ASP.NET專題實務,書本內容的範例下載(VB / C#)我在十月三日的時候,終於說服出版社為「ASP.NET專題實務」推出C#版。 今天(2008/11/21)終於完成這項工程,我把所有的範例通通改成C#語法。 全書20章,至少有204個範例 其中遇見一些小阻礙,但也學到不少東西。


[習題]簡單的搜尋引擎 + CheckBoxListCheckBoxList用來輸入「搜尋條件」,想作一個簡單的搜尋引擎。 但卻發現了一個問題???? CheckBoxList明明是用來作「複選」,但這個範例中卻只能作單選???WHY??


[轉貼]dumb job-interview / 13種面試蠢樣 讓主考官抓狂美國《財星雜誌》報導,美國人力資源公司Office Team,最近對美國一千家與加拿大一百家大企業的人事主管進行調查,請他們回憶面試時碰到最尷尬或奇怪的狀況,以下是十三種他們認為最糟糕的「面試蠢樣」(dumb job-interview)


[習題]拆解資料表的某一個欄位,分成兩欄 有讀者發問兩個問題, 第一個問題是SQL指令,能否請您也幫幫忙,解答一下? 第二個問題比較簡單,文章內有範例。


安裝Apache 2.2 + PHP5 for Win32今天搞的很不順,很簡單的設定都不能完成。 下班前幾分鐘才弄好。


[習題]泡沫紅茶店 飲料訂購[小]系統--HTML畫面&程式篇這個簡單的飲料訂購系統,HTML畫面的設計,卻有點小複雜。 我只能說:這範例是給本書讀者的售後服務。 這些小技巧,我在書裡面都有提過,也提供章節讓您回頭參考。


[習題]泡沫紅茶店 飲料訂購[小]系統--觀念篇坊間的泡沫紅茶店,要自己搞一個網站訂購系統。 下面的範例不難,但湊在一起,很討厭。 對初學者來說,最難的應該是「自訂資料表」,然後是寫程式。


年輕無價?年老無用?昨天晚上看了一部電影,「洛基:勇者無懼」(超連結裡面,有劇情介紹) 相信對這部電影會覺得感動的人,大概都有點年紀 不免讓我想起我年輕時在作什麼?讀大學實在作些什麼? 說真的,我很慚愧地只有想到四個字,那時的我「虛度光陰」。


[習題]兩個SqlDataSource,共用一個 GridView有讀者來信問到:「兩個SqlDataSource,能否共用一個 GridView呢?」 初學者如果不會作這個習題,大概是您不會透過後置程式碼,來控制 SqlDataSource。 這範例很簡單,剛剛好可以看看~


[習題] "選取" Gridview的某一列 & 那一列對應資料表的P.K.值要擷取「使用者 "點選" 了 GridView的哪一列?」 有很多的寫法,但我測試過後,發現一些特別的狀況。


自己養不到最優秀的人才最近忙著連線測試,遇見一位SOHO族,發現了他的故事與生活態度 最讓我驚訝的是,他是一人公司,不養人。 跟他合作,一起去接案的伙伴(他稱為 "虛擬團隊"),都跟他一樣,是一人公司(SOHO)。 為什麼呢?他說:「因為自己養人,養不到最優秀的人才」 我聽了著實嚇一跳,但瞬間就能意會。


我該怎麼幫助你?我記得2004年時,因為某些案子(關於BizTalk Server)跟微軟合作, 每次開會討論沒有交集時,微軟的顧問都會笑著詢問我們:「OK,那麼您認為這個問題,微軟該怎麼幫助您呢?」 這句話其實很有作用力,當我們無法確認對方的意思時, 說出這句話,其實可以很委婉地請對方再說一次。

http://www.dotblogs.com.tw/mis2000lab/

2008 十月份文章

http://www.dotblogs.com.tw/mis2000lab/


[習題]GridView裡面,樣版(Template)內的控制項,怎麼抓取?使用FindControl就對啦~要在 GridView的樣版裡面,抓住「子控制項」。有兩種作法: 第一,不知道子控制項的ID名稱,要用 .Controls(數字)來撈取 第二,知道子控制項的ID名稱(例如本文的範例),則改用 .FindControl("子控制項的ID名稱") 本範例是給讀者的售後服務,適合放在本書10.4節的後面,最為課後練習。


去你的投資!現在一大堆理專、投資顧問,每天在媒體上「恐嚇」大家 不是說「物價上漲」、不然就是說「把錢放定存,抵不過物價上漲,其實是賠老本」 然後呢? 真的把錢拿去買保險(儲蓄險)、買基金、買股票、買連動債................ 平心而論,誰賺到錢????? 一句話,「虧多賺少」,不是嗎?


[推薦] Blog -- 豈有文章udn部落格 -- 豈有文章 http://blog.udn.com/msn131914131914 作者是司空摘星。 筆觸多樣,不管是政黑文、親情文都寫得很棒。


[範例集]簡體中文書 -- ASP.NET程序開發範例寶典 (人民郵電出版社 )前些天,我找到一本中國大陸(內地)出版的書, 基本上符合了我跟大鈞討論的結果。 不廢話、直接給程式就對了、講解一些關鍵即可 也推薦給大家參考。


[剪報] 微軟的Windows Cloud作業系統?是「剪報」沒錯,不是簡報! Windows Clound作業系統,顧名思義,使用者能藉此撰寫以網頁為基礎的雲端運算應用程式。


MSDN文件---- .NET的 基本檔案 I/O.NET的 基本檔案 I/O 這一份中文的MSDN文件,範例相當實用。僅供各位參考。


[購車]國產SUV休旅車 2.4規格大比較--Outlander / RAV4 / CR-V剛好最近在看車,鎖定這三台,看過但還沒試車,只從規格比較 以2.4升引擎、4WD為基準。 三菱 Outlander 2.4 豐田 RAV4 本田 CR-V


DataBinding?資料繫結?資料綁定? #3--以DropDownList為例跟上一篇文章類似,我們以 DropDownList為例。 繼續討論 DataSet裡面的 DataTable,這次介紹 Column.....


DataBinding?資料繫結?資料綁定? #2--DataSet + 繫結運算式這篇文章,我們要討論 DataSet裡面的 DataTable。 很多初學者也學了ASP.NET一段時間,但說穿了,不就是拉拉 GridView搭配SqlDataSource or AccessDataSource這些精靈畫面而已。 想要動手改造一下,發現不容易,被困住了、不知如何下手? 想要自己設計畫面來作資料輸入、輸出,但底子不好。 不學 ADO.NET這些作法,初學者很快就碰壁了。


[廣告]速成?有可能嗎? ASP.NET+VS 2008是有可能的!有一位網友來信跟我討論,ASP.NET是否可能速成?有沒有方法? 其實,這也是我一直追求的夢想。 如果我能發展出一套方法,讓初學者能「速成」,那也不錯。 我相信:ASP.NET搭配一個好工具(Visual Studio,簡稱VS 2005或VS 2008),還真的有可能!


[C#]FileUpload控制項「批次上傳 / 多檔案同時上傳」的範例 FileUpload控制項「批次上傳 / 多檔案同時上傳」的範例 (VB語法) 上面這個範例已經發表一段時日,還滿多人看的,隨著我把程式改成 C#版, 這些已經公開分享的範例,我也盡量把C#版程式補上。


[C#]把「ASP.NET專題實務」一書的範例,從 VB語法轉成C#這三天的連續假期,我都在做相同的事。 第一,幫忙照顧小孩。 第二,把手邊的範例(VB語法),改成C#。 感想就是:還是VB簡單好用!但用了C#之後,許多觀念與作法會更清晰嚴謹。


[C#]以前在VB語法裡面用慣的 IsNumeric,在C#不見了??使用C#的朋友,您把下面這個函數放在程式碼最後, 就可以使用 IsNumeric()了 微軟出品的,用起來應該有信心


[習題]動態新增 DropDownList或 ListBox底下的新項目(Item)#1我發現本書的第三章 第七節(3-7)最後一個範例,我要讀者自己打開來看,自己練習。 這次改寫時,我拿出來解釋了一次。 已經買書(VB版)的讀者,覺得對不起他們。 不能厚此薄彼,所以寫一篇文章彌補一下。


透過SQL指令,優化ASP的分頁功能透過SQL指令,優化ASP的分頁功能


[ADO.NET] DbProviderFactory類別 與 簡單工廠(Simply Factory)DbProviderFactory類別,我推薦這幾篇文章,寫得很淺。看完程式碼,就學起來了。 找了微軟MSDN,反倒沒啥範例。


[回憶]我是怎麼開始當作者,撰寫電腦書的?上次馬小玲提到寫電腦書一事,勾起我塵封的回憶。 補一篇回憶文吧~


[習題]ADO.NET,兩個TextBox欄位作相互查詢 (附AJAX範例)在Textbox1裡面輸入一些資料,(不按下Button按鈕) 希望TextBox2會自動傳送回資料庫另一個欄位的資料。 這個範例該怎麼作?


[轉貼]微軟對MVP的定義與FAQ--手上揮灑的劍,雖是微軟技術,但我是獨立的遊俠關於MVP,我覺得最核心的FAQ就是下列這幾個,也最容易造成誤解, 微軟官方網站有相關的解釋,我覺得這四點寫得最貼切。


如何避免資料重複送出(Submit)??摘要:如何避免資料重複送出(Submit)??


[轉貼]MSDN -- SqlDataSource連結其他資料庫(Oracle / Access / ODBC)這篇文章是我之前(2008/2/17)在微軟MSDN網站,無意中看見的,也整理起來。 原文出處:微軟MSDN http://technet.microsoft.com/zh-tw/library/703tk8bc(VS.80).aspx 分享給大家,也幫自己做一個記錄。 這些問題,我在 Yahoo知識+,大概也回答過N次。 網友們發問的機率很高,算是FAQ!


[廣告]本書 "可能" 推出 C#版 (ASP.NET專題實務 / 文魁P8187)但我觀察最近的書店銷售(以天瓏書局為例),像是聖殿祭司、章立民老師的作品, C#版的銷售量,已經都高於VB版了。 可見市場有這樣的需求~ 入門的讀者需要兩種語法,各自指引。 如果有機會推出C#版的話,內容還會追加,大放送。


Second Thought,給自己重新審思的機會摘要:Second Thought,給自己重新審思的機會


IT人的生涯規劃 與 學習法則----兩篇好文章,推薦給大家第一篇,是章立民老師的大作。除了提到他在業界一路走來的心得之外,也談了很多軟體學習的感觸。 另外一篇,是點部落sanctuary網友寫的一篇文章。裡面談到他學習、讀書的方法,令人心有戚戚焉。


ASP 與 Cache最近要改善舊的ASP程式,要以找了些文件來看。 想到ASP.NET有 Cache功能,ASP應該也可以如法炮製。 Orz.......舊版的ASP並沒有內建 Cache,要購買third party的產品才行。


FrontPage去哪裡了?Office 2007裡面找不到?FrontPage去哪裡了?Office 2007裡面找不到? 小弟是 FrontPage的愛用者,從FrontPage 98一路玩到2003,說真的,功能大同小異。 只是使用慣了,不想換。

http://www.dotblogs.com.tw/mis2000lab/

2008年9月28日 星期日

ASP.NET的OutputCache,學習Cache一看就懂

ASP.NET的OutputCache #1。直接看執行結果,學習Cache一看就懂。 2008/9/12 下午 04:45:38


ASP.NET的OutputCache #2,學習Cache一看就懂。 2008/9/12 下午 05:10:31

AJAX Control Toolkit 3.5 教學文章

請到我的網站觀賞這兩篇文章:
http://www.dotblogs.com.tw/mis2000lab/
-----------------------------------------------------------------------


AJAX Control Toolkit 3.5安裝到VS 2008的工具箱 2008/9/17 下午 01:47:33


AJAX Control Toolkit 3.5的ToolkitScriptManager 與VS 2008內建的ScriptManager 2008/9/19 下午 05:53:45

ADO.NET 入門系列,五篇文章

請到我的網站觀賞這五篇文章
http://www.dotblogs.com.tw/mis2000lab/




初探ADO.NET #1,程式與資料庫互動的四大步驟

初探ADO.NET #2,DataReader 與 DataSet(資料集)

ADO.NET #3 (GridView + SqlDataSource)完全手寫、後置程式碼!

ADO.NET #4(改),自己設定輸入畫面,讓SqlDataSource幫我們完成「新增」一筆資料

ADO.NET #5,自己設定畫面,讓SqlDataSource幫我們撈(呈現)資料



請到我的網站觀賞這五篇文章
http://www.dotblogs.com.tw/mis2000lab/

PostBack(回傳)與CallBack(回呼)的差別

以下章節,是已出版的新書(ASP.NET專題實務)中的第20章 Client CallBack
新書上市-- ASP.NET專題實務(文魁出版)
===================================================================
以前介紹的AJAX功能(本書第十九章),幾乎不用寫程式就可以靠著 ScriptManager + UpdatePanel來完成。但是ASP.NET也有提供手寫版本的AJAX功能,那就是本章介紹的 CallBack(回呼)。
使用工具來開發AJAX固然快速,但因為初學者不知其所以然,常常誤用而導致奇怪的執行結果(程式會跑,但結果怪怪的,會出現意料之外的狀況)。本章的CallBack雖然動手寫程式比較累,但流程確定反而不容易出錯。非常適合想要進一步提昇自己功力的讀者,進行自我鍛鍊。

好用軟體報你知!Diskeeper與Rramdisk

這兩篇文章發表在我的網站 http://www.dotblogs.com.tw/mis2000lab/
歡迎大家觀賞。

[轉貼] RRamDisk與 Machine.Config檔的設定 2008/9/28 下午 08:08:11

Diskeeper,超好用!磁碟重組軟體 2008/9/26 下午 08:07:13

Microsoft Tech.ED 2008 in Taiwan活動花序&Show Girl

請看我的主要網站,這系列文章全都是圖片(照片):

課程心得 Tech.Ed 2008 in Taiwan(手機版) 2008/9/25 下午 10:57:04
Tech.ED 2008 in Taiwan 現場花絮(會場) 2008/9/25 下午 09:21:01
Tech.ED 2008 in Taiwan 現場花絮-- DotBlogs與IT邦幫忙 2008/9/25 下午 09:25:24
Tech.ED 2008 in Taiwan 現場花絮-- Show Girl #1 2008/9/25 下午 09:34:00
Tech.ED 2008 in Taiwan 現場花絮-- Show Girl #2 2008/9/25 下午 09:33:29
Tech.ED 2008 in Taiwan & 台北101 2008/9/25 下午 09:32:14

Web Service 入門與觀念 / ASP.NET的五篇文章&範例

關於Web Service已經熱很久了。
在ASP.NET上面,透過VS 2005 / VS 2008 來開發更是簡單。

不要把 Web Service想得太難,他其實就是一個 自訂的Function(),只不過他可以在網路(Web)上分享給別人使用,
透過 Web Port 80,分享很容易,不用擔心防火牆或是其他設定問題..........
如果我寫了一個 Web Service,我上網公開,人人都可以連上來使用。那真是一個天下為公的美好願景!

直接看程式啦!直接動手..............

請看下列文章(我寫的):
Web Service入門 #1,透過VS 2005/2008 撰寫一個Web Service 2008/9/27 下午 11:16:21
Web Service入門 #2,呼叫現成的Web Service 給我的程式來用 2008/9/27 上午 10:46:34
Web Service入門 #3,[小改版] 呼叫現成的Web Service 給我的程式來用 2008/9/27 下午 04:23:22
Web Service入門 #4,搭配 ADO.NET DataReader的範例 2008/9/28 上午 12:06:23
Web Service入門 #5,搭配 SqlDataSource (DataSet) or 傳回值是一個DataSet 2008/9/28 下午 08:07:18

2008年9月9日 星期二

[勘誤表] ASP.NET專題實務(文魁出版,書號P8187)

本書有些錯字、漏字、或是排版印刷中出現的不明錯誤。 整理如下,並向讀者致歉(本表格將會持續整理、更新)

2008/八月份 天瓏書局排行榜前十名 (ASP.NET專題實務)

http://www.dotblogs.com.tw/mis2000lab/archive/2008/09/02/5268.aspx


謝謝各位讀者,小弟出版的新書,八月初才開始鋪貨。
新書上市-- ASP.NET專題實務(文魁出版)

重慶南路的天瓏書局,是國內少數的「電腦書」專業書局。 http://tlsj.tenlong.com.tw/WebModule/TopSale/topSaleDispAction.do?chi=1
2008八月份的銷售排行榜,「ASP.NET專題實務」這本書在收銀台的銷售排行榜,紙本公告是第十名。
網站上卻是第九(以2008/9/2為例)。


2008/8/18起數天,均是PChome電腦書的榜首,但很奇怪的是:
賣完後,PChome卻連續兩週不進貨(保持缺貨狀態)?
暢銷的貨,店家應該保持貨源才對啊?不知道PChome在想什麼?

第一批團購,我們採用愛心義賣的方式,扣除相關成本後,最後獲得的利潤捐給創世基金會。請看 謝謝各位支持,創世基金會的收據(來自第一批新書的愛心團購)


最後還是要廣告一下----


說來有趣,雖然書店賣得還好,但直接跟我購買的人似乎不多。小弟手邊還有些庫存,壓了不少現金
...................................................................................................................................................................................................................
新書上市-- ASP.NET專題實務(文魁出版 / P8187)。懇請支持,謝謝。
2008/八月份 天瓏書局排行榜前十名

先行編譯(PreCompilation)-- aspnet_compiler.exe,ASP.NET 2.0以後才適用

先行編譯(PreCompilation)-- aspnet_compiler.exe,ASP.NET 2.0以後才適用

ASP.NET 2.0以後,我們可以下指令(aspnet_compiler.exe)完成「先行編譯(PreCompilation)」。 當然,也可以在VS 2005/2008裡面,畫面右邊的方案總管,按下滑鼠右鍵,選擇「發行網站」

我想寫程式 之三部曲--- 「先確立志向」「兩招(三支程式)就可以出師」「簡單地設計自己的資料表(Table)」

這一系列有三篇文章,請看:

我想寫程式#1 之 「先確立志向」
我想寫程式#2 之 「兩招(三支程式)就可以出師」
我想寫程式#3 之 「簡單地設計自己的資料表(Table)」

DataSet與ObjectDataSource #1,簡單的小範例

DataSet與ObjectDataSource #1,簡單的小範例
自從ASP.NET 2.0開始(VS 2005),作法有些改變。我們必須加入一個資料集(DataSet),然後透過 ObjectDataSource控制項來使用它。 這一部份原本打算在書本裡提及,但書本上限600頁(我最後寫到840幾頁,實在塞不下去了),因為成為遺珠。 先把一些範例公布在我的Blog上面,作為補償。

修改VS 2005/VS 2008「動態通訊埠」這個擾人的問題

VS 2005 or VS 2008在畫面中就能修改「動態通訊埠」這個擾人的問題。
與大家分享一下,順便留個記錄,以免哪天自己也忘了。
http://www.dotblogs.com.tw/mis2000lab/archive/2008/09/08/5318.aspx

2008年8月15日 星期五

[廣告&團購] 新書上市-- ASP.NET專題實務(文魁出版)

我跟出版社談好了優惠條件,希望能夠以便宜的售價,來推廣這些書。


目前有三種優惠方案,請把握機會.....

[入門]VS 2008 + LINQ-to-SQL,不用寫程式,一次搞定。

不用寫程式,VS 2008拉過來、拉過去,就完成一個功能強大的網頁程式。

範例: GridView + LINQ,完成資料呈現、分頁、編輯(更新)、刪除、排序等等功能。

寫程式有這麼難嗎?~真的不會啦

[入門]以初學者來看,ASP.NET的GridView可以學到什麼?

GridView也是目前大多數ASP.NET書籍第一介紹的「大型、全能控制項」,
GridView能玩到的功能很多,由淺入深,有各種玩法。

重點不是在「強調GridView的英名神武」,而是在GridView的學習歷程中,我們學到的東西,都可以延續到其他控制項來使用。

這才是書籍作者偏好 「優先推薦GridView」的理由吧。 以初學者為例,GridView的學習歷程,可以包含......

[給初學者的話] IT世界裡面,沒有一本搞定的「初學者聖經」

的確有許多電腦書,被大家推崇,這些書被認為是「聖經」等級,不看不行。
但是這種「聖經」,是指:書本寫得好、架構嚴謹、理論正確,看了以後茅塞頓開,扭轉不少錯誤的觀念。
絕對!絕對沒有哪一本「聖經」等級的電腦書,敢跟你保證「買了這一本,永遠不用看其他書籍」啦~

2008年7月16日 星期三

該學ASP或是ASP.NET?....從「驚見一本ASP新書上市」說起

該學ASP或是ASP.NET?....從「驚見一本ASP新書上市」說起

我的ASP.NET學習地圖(給初學者、入門參考),如何變成Web程式設計師?

我的ASP.NET學習地圖(給初學者、入門參考),如何變成Web程式設計師?

VMware,讓你的電腦虛擬化。同時安裝多個作業系統。

VMware,讓你的電腦虛擬化。同時安裝多個作業系統。

[轉貼]IT虛擬化(資料來源:ithome)

單一檔案(Inline Code)與後置程式碼(Code Behind)

單一檔案(Inline Code)與後置程式碼(Code Behind)

[微軟文件]保護 ASP.NET 網站

[微軟文件]保護 ASP.NET 網站

宅男行銷學?正妹產品風?

宅男行銷學?正妹產品風?

常用的 HttpSessionState屬性

常用的 HttpSessionState屬性

如何在移除並重新安裝 IIS 之後,修復 .NET Framework對應(Mapping)

如何在移除並重新安裝 IIS 之後,修復 .NET Framework對應(Mapping)

[錯誤訊息]Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool.

[錯誤訊息]Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool.

[轉貼]MS SQL Server的T-SQL指令、Stored Procedure與Trigger

[轉貼]MS SQL Server的T-SQL指令、Stored Procedure與Trigger

不同語系的轉碼、編碼 / HttpUtility.UrlEncode,Server.UrlEncode兩者差異

[自己的經驗談] 油價高漲,省油DIY,省油秘訣

開車想要省油,其實要看自己的開車習慣。

關於省油的問題,我親身經驗不錯,請您參考。

不需要安裝什麼省油設備啦!那些錢省下來加油(當成油錢),還比較實際
想要省油,沒有秘訣啦。參考一下我的方法:


[自己的經驗談] 油價高漲,省油DIY,省油秘訣

2008年6月2日 星期一

ASP.NET的免費資源

ASP.NET的免費資源

[免費下載]Visual Studio 2008(90天試用版)

[免費下載]Visual Studio 2008 and .NET 3.5 Training Kit

[免費下載]ASP.NET MVC

跨網頁張貼(Cross-Page Posting),微軟稱為「跨網頁公布」 #2

跨網頁張貼(Cross-Page Posting),微軟稱為「跨網頁公布」 #2

上一篇文章,介紹過第一種方法(跨網頁張貼(Cross-Page Posting),微軟稱為「跨網頁公布」 #1)。
目前要介紹的是第二種方法:

以下是即將出版的新書內容:
題目跟剛才一模一樣。只是解法不同。
========================================================
假設我們有一個網頁程式,要輸入日期。
另外一個網頁程式,會有日曆控制項。
點選後,日期會自動傳回去。
(抱歉,有幾張圖片來解釋可能比較清楚。But......大家忍耐一下,這東西不難。)
========================================================
以下是即將出版的新書內容:
作法如下:
而本範例(3.aspx)就得透過 Public屬性來完成相同的功能。簡單的說,3.aspx提供了一個「公開的」日曆控制項「屬性」,可以讓別的網頁來讀取。這樣一來,也可以完成跨網頁張貼(Cross-Page Posting)。
3.aspx原始網頁的HTML畫面設定,跟上一節的 1.aspx完全一樣。在此不贅述。但是 3.aspx的後置程式碼,有很大的變化,請注意:

Partial Class test_ADO_NET_3_get
Inherits System.Web.UI.Page

'=====透過 Publlic屬性,來作 Cross-Page Posting。=====
‘ 別的網頁才能讀取這個公開的資訊
Public ReadOnly Property my_Calendar() As Calendar
‘-- 註解:ReadOnly指出:這個公開的屬性,只能被讀取而已。這樣較安全!
Get
Return Calendar1
End Get
End Property


Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
TextBox1.Text = Calendar1.SelectedDate.Date.ToShortDateString
'--把選取的日期,以「短日期格式」來呈現。
End Sub
End Class

這個範例,比較特別的是第二支程式(4.aspx,目的地網頁),請注意!HTML畫面原始檔多了一行設定「<%@ PreviousPageType VirtualPath="3.aspx" %>」,用來讀取 “上一個網頁” 的公開資訊。

設定「<%@ PreviousPageType VirtualPath="3.aspx" %>」這一行,除了鎖定「上一個網頁」的檔名與位置,也限制了接收資訊的網頁(4.aspx,目的地網頁)不能任意使用其他網頁的資訊,全都是為了安全起見。4.aspx的後置程式碼如下:


Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Label1.Text = PreviousPage.my_Calendar.SelectedDate.ToString
End Sub

本節範例的執行結果,跟上一節完全相同,但卻有兩種不同作法




.............................................................................................
微軟官方文件有更詳細的說明(以下是中文的文件),微軟稱「Cross-Page Posting」為「跨網頁公布」
http://msdn.microsoft.com/zh-tw/library/ms178139.aspx

跨網頁張貼(Cross-Page Posting),微軟稱為「跨網頁公布」 #1

跨網頁張貼(Cross-Page Posting),微軟稱為「跨網頁公布」 #1

跨網頁張貼(Cross-Page Posting),簡單的說,就是「網頁A」要把資料傳給「網頁B」。
以前在ASP時代,我們可以用隱藏欄位,例如: ,或是 Session(工作階段)來處理。
而ASP.NET 2.0開始,微軟有新的方法提供給大家。
以下是即將出版的新書內容:
========================================================
假設我們有一個網頁程式,要輸入日期。
另外一個網頁程式,會有日曆控制項。
點選後,日期會自動傳回去。
(抱歉,有幾張圖片來解釋可能比較清楚。But......大家忍耐一下,這東西不難。)
========================================================

作法如下:
程式 1.aspx的按鈕(Button2)控制項,「PostBackURL」屬性要設定第二支程式的檔名(2.aspx)或URL。

Text="Button2_日期出現在下一頁(2.aspx)" />

2.aspx(目的地網頁),畫面上只有一個Label控制項而已。
因為要承接上一個網頁傳來的資料,所以 2.aspx的後置程式碼很重要!寫法如下:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim my_Calendar As Calendar
my_Calendar = CType(PreviousPage.FindControl("calendar1"), Calendar)
‘-- 註解: CType(A, B)是把 A強制轉換成 B的型態。
PreviousPage.FinControls(“控制項的ID”),是指:承接「上一個網頁」傳來的「控制項」。

Label1.Text = my_Calendar.SelectedDate.ToString
End Sub

========================================================
以下是即將出版的新書內容:
上面這種作法,有何好處?我用以前ASP時代的老方法,也能完成相同的功能啊。
恩恩....您說得對。但在安全上,有很大的改進。
當使用者不是經過原始網頁(1.aspx),而直接進入第二支目的地網頁(2.aspx)時,PreviousPage屬性為 Null參照 (即 Visual Basic語法中的 Nothing)。
如此可以避免有人不照流程來使用此功能,直接進入第二支程式的下場,就是Null(空空如也)。


微軟官方文件有更詳細的說明(以下是中文的文件),微軟稱「Cross-Page Posting」為「跨網頁公布」
http://msdn.microsoft.com/zh-tw/library/ms178139.aspx

另外一種作法,我們下次再談.............
請看下一篇文章(介紹第二種方法)http://www.dotblogs.com.tw/mis2000lab/archive/2008/05/26/4123.aspx

2008年5月21日 星期三

AJAX與ListView的怪現象? --樣版內,控制項ID重複的問題

AJAX與ListView的怪現象? --樣版內,控制項ID重複的問題

這個問題也是我在MSDN論壇回答過的。http://forums.microsoft.com/MSDN-CHT/ShowPost.aspx?PostID=3125960&SiteID=14

Q :ListView裡面的各種樣版,以 ItemTemplate 與 AlternatingItemTemplate這兩個樣版最類似。
如果加上AJAX功能,在這兩個樣版內部,各自加上 UpdatePanel。
很奇怪的是----執行時,會出現錯誤訊息。說 [控制項ID重複?]
取消AJAX的UpdatePanel之後,又好了?真的很奇怪!

重新看了 ListView與SqlDataSource,自動幫我產生的樣版內容(HTML碼)。
沒錯。,這兩個樣版的內容一模一樣啊
不光如此,ListView的各種樣版,裡面各種的 TextBox,ID都是一樣的。
為何不會有錯?但加上AJAX的UpdatePanel就會出錯呢?
...................................................................................................................................

A : 這問題很有趣,所以我也自己測試了一下。
手動去修改 ListView裡面,每個樣版內的 [控制項ID],不要重複就好了。我試過,可以正常執行
我個人的認知如下,未必正確。
傳統POSTBACK的作法,一次只會啟動一個樣版,
所以 ListView各種樣版底下的控制項ID,就算重複也無所謂。
但改成AJAX之後,這時候,每一個控制項ID都必須獨一無二,
不然的話,要怎麼知道是哪一個控制項啟動了非同步的POSTBACK?
我覺得這說法,好像說得通


以上問答,是我在MSDN回答過的問題。
http://forums.microsoft.com/MSDN-CHT/ShowPost.aspx?PostID=3125960&SiteID=14
今天又看見它上了最常查詢問題的排行榜。
所以收錄回自己的BLOG裡面

File 與 Log #2----訪客計數器(用.txt檔案來記錄)

File 與 Log #2----訪客計數器(用.txt檔案來記錄)


以下是即將發表的新書內容:
網站的訪客計數器,也可以用檔案的方式來撰寫。這支程式(Counter.aspx)很簡單也很短,就算您看不懂程式碼,直接 Copy過去用也可以執行。而且執行的結果是以圖片的方式來呈現數字


數字圖片,放在本章範例的 image目錄底下。例如:1的圖片,就名為1lcdb0,gif。2的圖片,就名為2lcdb0,gif……以此類推。

01 Imports ...System.IO
02
03
04
05 Partial Class _Book_My_Files_Counter
06
07 Inherits System.Web.UI.Page
08
09
10
11 Protected Sub Page_Load() Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
12
13 '====讀取檔案 (務必修改這個檔案的權限,需要「寫入」的權限)====
14
15 Dim sr As New StreamReader(Server.MapPath("counter.txt"))
16
17
18
19 '--把檔案內, 原本的訪客人數[加一]
20
21 Dim visitors As String = sr.ReadLine()
22
23 visitors = CInt(visitors) + 1
24
25
26
27 '--把訪客人數(數字) 轉換成 [圖片]展示在畫面上
28
29 Dim Length As Integer = Len(visitors) '--計算訪客人數的[字串長度]
30
31 Dim strURL As String = ""
32
33
34
35 While Length >= 1
36
37 '--訪客人數的每一位數字,都用圖片來呈現。
38
39 strURL = "" & strURL
40
41 Length = Length - 1
42
43 End While
44
45 sr.Close()
46 sr.Dispose()
47
48
49
50 '====寫入檔案,紀錄最新的訪客人數==================
51
52 Dim sw As New StreamWriter(Server.MapPath("counter.txt"))
53
54 sw.WriteLine(visitors) '--找不到檔案也不會出現錯誤訊息,而且會自動新增一個檔案。
55
56 sw.Close()
57 sw.Dispose()
58
59
60 Label1.Text = strURL
61
62 End Sub
63
64 End Class



上面的程式中,比較困難的是 While迴圈的部份。假設訪客人數(visitors)為 999998,我們必須先確定這字串的長度為6(Len(visitors))。然後一個一個地把數字,用圖片的HTML碼()來取代。
我們用一個文字檔來進行記錄,把訪客的參觀數字,記錄在這個檔案(counter.txt)裡面。重點是:務必把這個檔案的權限,設定為「可寫入」。這樣才能每次累計加一,記錄訪客人數。

HTML用來展示圖片的標籤,寫法是:
本範例counter.aspx的後置程式碼很簡單,裡面只作了兩件事而已。第一是讀取counter.txt檔案,取出原本的訪客人數。第二,是把人數加一,然後以圖片方式展現在畫面上,再把更新後的數字寫入檔案。

File 與 Log----ASP.NET的檔案與I/O Stream

File 與 Log----ASP.NET的檔案與I/O Stream
舉例來說,尚未上線的系統、或是有些功能繁雜的程式要撰寫。我們就可以利用檔案的功能來做紀錄。一邊測試一邊記錄這些程式在各階段的運作狀況,每個階段成功與否都可以直接寫入文字檔裡面,不需要跟資料庫搶資源、搶連線。畢竟小檔案I/O的速度,一般來說都快過資料庫。
以前我做過B2B的案子,用Rosettanet XML來傳遞資料(關於Rosettanet,請看中文網站的說明,http://www.rosettanettaiwan.org.tw/)。當時用的技術是 VB 6.0 + ASP + MS BizTalk Server + MS SQL Server 2000。
依照實際的狀況,我們會同時用「檔案」與「資料庫」來記錄這些流程。底下的五大步驟,前三項都會用文字檔做紀錄,因為這些小資料是自己Debug(除錯)用的,往往是系統出問題才會去察看,也不太有保留的價值,所以我們採用文字檔來記錄。
1. 程式定時啟動(例如:每五分鐘啟動一次),並開始記錄處理流程。2. 從資料庫搜尋資料。符合條件的紀錄就撈出來,組合成XML檔案。(執行時間與XML檔案都會存成文字檔,存在專有的目錄底下)3. 將XML檔案,轉換成 Rosettanet格式。(執行時間與Rosettanet XML檔案都會存檔,放在專有的目錄底下)4. 交給 Server準備發送。此時,就會用資料表來記錄時間與相關資料了。5. 傳送給對方的Server。對方收到後,我們也會把時間記錄在資料表裡面。註解:後面兩個流程要用資料表來做紀錄,是為了給客戶與主管查驗,日後也能統計與分析我們這套B2B系統的發送成功率等等。
除了大型的系統、複雜的程序需要做Log紀錄檔之外,網站常用的「訪客計數器」,也可以用檔案的方式來控管。可見存取檔案的用法,真的很多樣化。

以下是即將發表的新書內容:


Q:每一天都用一個檔案,用來記錄當天每支程式內部的執行狀況。
以下是相關的規範:

1. 檔案統一放在 C:\MIS2000Lab_ASP.NET_Log目錄底下。
2. 每一天都用一個單獨的子目錄,子目錄名稱就是當天日期。
3. 檔名必須是以當天日期為名,副檔名是.log,例如:20081231.log。
4. 檔案內每一段訊息,都要記錄完整的日期與時間(年/月/日/時/分/秒)。
每段訊息各自獨立一行,格式如下:
[2008/04/01 14:00:33] Message: 錯誤訊息XXXYYY
5. 檔案內的文字,採用 Big5正體中文來編碼。


記錄檔案的後置程式碼如下,其實不難,大部分都學過了。程式碼請看這裡----http://www.dotblogs.com.tw/mis2000lab/archive/2008/05/19/4034.aspx

推薦好書----深入淺出C# (歐萊禮,O'Relly)。很適合初學者與新鮮人~

推薦好書----深入淺出C# (歐萊禮,O'Relly)。很適合初學者與新鮮人~


市面上有些電腦書寫的很不錯。
英文原文書當然沒話講,或許是語言的關係,他們寫技術文件比較單刀直入,一目了然。

後來我發現國內的出版社,也引進一些「日文翻譯書」。日本人也是好樣的!
他們不說廢話,書裡面都是很實用的範例。也讓我印象很深刻。
例如:入門SQL(博碩)、ASP.NET語法範例字典 / SQL語法範例字典(旗標)。這幾本日文翻譯書都超讚!
很務實,學到的東西都很實用!

以前有一陣子,英文書有一系列的 XXX for Dummy (http://www.amazon.com/ASP-NET-Dummies-Bill-Hatfield/dp/0764508660)。
國內也出版過翻譯本,這些書籍都很淺顯,初學者很能接受。
有一家出版社,名為PC User,他們出版的書也是走向這類型,淺顯易懂。

昨天去逛書店,看見「深入淺出C# (歐萊禮,O'Relly)」http://www.oreilly.com.tw/product2_others.php?id=a230
這一系列的書(名為 Head First XXX),也是很淺顯。
最特別的是:這系列的書本,裡面圖片比文字還多!排版方式也很[動感]!
缺點就是「貴!」,中譯本比一般國產電腦書還貴兩百元左右。

但內容很有趣,就如同書裡講的「很適合程式設計的新鮮人、初學者」。
隨手翻翻,就看完一大半。但是.....這種搞笑的語句、大量圖片與插畫.....國內出版社的編輯人員 [似乎] 不太能接受
也可能書市慘澹,目前出版社主打學校教科書市場。教科書嘛!不能太輕鬆啦~要嚴肅一點點。

這一系列的書,(歐萊禮,O'Relly)將他中文化,出版好多本。PMP、SQL等等,內容包羅萬象。
都是鎖定「初學者」市場的。.............我看完之後,發覺--
除非我請漫畫家來合作,推出一本「看漫畫學ASP.NET」,不然的話很難贏過它了
(這不是開玩笑,日本有很多這種書籍,例如:看漫畫學XXX,都是電腦書喔!)

但是,不要小看這一本入門書喔!
該講都講了。包含:物件導向、型別&參考、封裝、繼承、介面與抽象類別、列舉&群集等等。
內容豐富得很~

很多初學者,買書就看「書店的排行榜」、「看人家推薦什麼」、「買最厚的一本」.....
說穿了,是買心安的。就跟初一十五去廟裡拜拜一樣(我當年也是如此)
慢慢的,我才發展出一套方法論,能夠「挑選適合自己程度的書」。
適合自己的書,未必適合別人。未必是暢銷書。
只要對自己有益!就是一本適合自己的好書!(意思雷同於:管他黑貓白貓,會抓老鼠就是好貓!)

.........................................................................................................................
(謎之聲:咦?你玩ASP.NET一段時間了,自己也出書,怎麼還買這樣的入門書來看呢?)
就如同我說過的(請看下面,我以前的PO文)----溫故知新。書本永遠看不完。
一本書,只要有一個範例、一章,讓我有感覺。那麼這五六百元的書錢,就沒有浪費!
~~~~寫程式所需要的參考書,沒有「一本就能搞定」的聖經!~~~~多多益善,開卷有益。

看見了一本有趣的好書,也跟大家分享一下 (^_^)
.........................................................................................................................
相關文章----如何挑一本好書,學習ASP.NET。個人觀點,非戰文。

[Info]Enterprise Library 4.0發佈了

今天一早就看見 LOLOTA前輩的文章----[Info]Enterprise Library 4.0發佈了
這東西是什麼啊?
也就是以前講的DAAB(全名Data Access Application Block ),
現在改名為 Patterns & Practices(或是稱為p&p),一般都稱為 Enterprise Library (EntLib)
以前在MSDN論壇也有討論過,請看這篇文章-- http://forums.microsoft.com/msdn-cht/ShowPost.aspx?PostID=2703042&SiteID=14

微軟MSDN裡面,有一個專區---- http://msdn.microsoft.com/zh-tw/practices/default(en-us).aspx

下載與說明:http://www.codeplex.com/entlib
沒記錯的話,他們是開放原始碼的,有興趣的人可以參考或是改寫。
安裝完成,就會在目錄底下看見一個原始碼(SourceCode)的目錄

如果您接手以前的程式,發現裡面常常有一個 SqlHelper()之類的東西。
沒錯,SqlHelper就是前身,您可以參考這篇中文文件(年代有點久):Microsoft Application Blocks for .NET

我們可以從這些地方,更瞭解 Enterprise Library(p&p)。
Get Started With p&p
What is p&p?
Who We Are and What We Do
Explore the p&p Catalog

小弟在 3.1版的時候,稍稍玩過(試了一下)Enterprise Library ,那時是搭配 .NET 2.0與VS 2005的。那時共有八大分類,「資料存取」僅僅是其中一類。
寫了一些ADO.NET的程式(DataReader與DataSet),跟Enterprise Library提供的比較一下
相同程式跑一萬次,來記錄執行時間。似乎手工自己寫ADO.NET比較快,平均時間都快了一秒。

有兩個範例要跟大家分享,因為這個BLOG張貼程式很醜,請您看這裡----http://www.dotblogs.com.tw/mis2000lab/archive/2008/05/21/4091.aspx

2008年5月19日 星期一

JavaScript + ASP.NET

JavaScript + ASP.NET

1. 以動態方式將用戶端指令碼(JavaScript)加入至 ASP.NET Web 網頁
以下都是 Page.ClientScriptManager 類別
資料來源:微軟 MSDN 官方網站 http://msdn2.microsoft.com/zh-tw/library/ms178207(VS.80).aspx
方 法
說 明
RegisterClientScriptBlock
將指令碼區塊加入頁面頂端。您可以字串形式建立指令碼,然後將它傳遞給加入網頁的方法。您可以使用這個方法將任何指令碼插入網頁。請注意,在完成所有項目之前指令碼可能就會呈現至網頁。因此您可能無法從指令碼參考網頁上所有的項目。
RegisterClientScriptInclude
這個方法類似 RegisterClientScriptBlock 方法,但是會加入參考外部 .js 檔的指令碼區塊。在以動態方式加入任何其他指令碼之前就會加入這個包含檔。因此您可能無法參考網頁上的某些項目。
RegisterStartupScript
將指令碼區塊加入當網頁完成載入(註:把JavaScript放在ASP.NET網頁最下方),但是在引發網頁的 onload( )事件之前,就會執行的網頁。這個指令碼通常不會建立為事件處理常式或函式。其通常只包含想要執行一次的陳述式。
RegisterOnSubmitStatement
加入執行以回應網頁 onsubmit 事件的指令碼。在送出網頁之前就會執行指令碼,並且讓您有機會取消送出動作。

 
2. 將用戶端指令碼事件 加入至 ASP.NET Web 伺服器控制項
以下的範例,是用來區分兩種不同的Click方式。一種是Server端(下面綠色字體),另一種是Client端(下面紅色字體,以JavaScript的方式。)
資料來源:微軟官方MSDN網站 / http://msdn2.microsoft.com/zh-tw/library/7ytf5t7k(VS.80).aspx

<%@ Page Language="VB" %>

<html>


<script
runat="server">

    Sub Button1_Click(ByVal sender As Object,
ByVal e As System.EventArgs)

        Label1.Text = "Server click handler
called."

    End Sub

</script>


<body>

  <form id="form1" runat="server">

    <asp:Button ID="Button1" Runat="server" 
OnClick="Button1_Click"


          OnClientClick="return
confirm('Ready to submit.')
"



          Text="Test Client Click" />

    <br />


    <asp:Label ID="Label1"
Runat="server" text="" />

  </form>

</body>

</html>


FileUpload控制項「批次上傳 / 多檔案同時上傳」的範例

FileUpload控制項「批次上傳 / 多檔案同時上傳」的範例

以下是即將發表的新書內容:
FileUpload控制項真的簡單好用,不使用它來作批次上傳,卻要改用別的方法,實在不聰明。要用就一次用到底,
公開FileUpload控制項「批次上傳」的範例,千萬不能錯過。

首先,進行HTML畫面的設計,根據上圖,在畫面上使用多個 FileUpload控制項,然後搭配一個按鈕控制項即可。
除此以外,範例 8_Multi_Upload.aspx還加入了「避免上傳同名檔案」的功能(本範例共有三種子功能,其中沿用本章之前介紹的兩個範例),可以說是把本章的各種範例作一個大融合。以下是後置程式碼:

以下是即將發表的新書內容:

01
02
03 Protected Sub Button1_Click() Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
04 '--註解:網站上的目錄路徑。所以不寫磁碟名稱(不寫 “實體”路徑)。
05 Dim saveDir As String = "\[Book]FileUpload\Uploads\"
06 Dim appPath As String = Request.PhysicalApplicationPath
07 Dim tempfileName As String = Nothing
08 Dim myLabel As New System.Text.StringBuilder
09
10 For i = 1 To (Request.Files.Count - 1)
11
12 Dim myFL As New FileUpload
13 myFL = CType(Page.FindControl("FileUpload" & i), FileUpload)
14
15 If (myFL.HasFile) Then
16 Dim fileName As String = myFL.FileName
17 Dim pathToCheck As String = appPath & saveDir & fileName
18 '====用來處理上傳檔案的「檔名重複」問題 =================(Start)
19 If (System.IO.File.Exists(pathToCheck)) Then
20 Dim my_counter As Integer = 2
21 While (System.IO.File.Exists(pathToCheck))
22 ' --檔名相同的話,目前上傳的檔名(改成 tempfileName),前面會用數字來代替。
23 tempfileName = my_counter.ToString() & "_" & fileName
24 pathToCheck = appPath & saveDir & tempfileName
25 my_counter = my_counter + 1
26 End While
27 fileName = tempfileName
28 Label1.Text = "抱歉,您上傳的檔名發生衝突,修改如下" & "
" & fileName
29 End If
30
31 Dim savePath As String = appPath & saveDir & fileName
32 myFL.SaveAs(savePath) ' –存檔。完成檔案上傳的動作。
33 '==============================================(End)
34 myLabel.Append("
檔名---- " & fileName)
35 End If
36 Next
37
38 Label1.Text = "上傳成功
" & myLabel.ToString
39 End Sub


補充----
網路上找到的相關文章:让UpdatePanel支持上传文件 http://www.cnblogs.com/JeffreyZhao/archive/2008/05/04/build-component-to-upload-file-in-updatepanel.html

四川大地震,願大家都平安,Peace!

四川大地震,願大家都平安,Peace!

網路上吵得很厲害,要「人道」、要「以直報怨」、要XXXY等等.....都不如下面這位朋友的一句話:

迴響來自: Sampkao [訪問者]今日的種種敵意,都是過去五十、一百年來的積累;
未來的五十、一百年會如何,就要看我們今日怎麼去做。全文連結 2008-05-14 @ 19:53
提供三篇好文章,讓自己反思。

多台Web Server(IIS)作 Load Balance,session怎麼處理?

多台Web Server(IIS)作 Load Balance,session怎麼處理?

原文是 MSDN論壇的一篇文章,大家有興趣可以去看看。http://forums.microsoft.com/MSDN-CHT/ShowPost.aspx?PostID=3346245&SiteID=14&mode=1


以下是我的回答:
這期的MSDN雜誌有提到喔,以下只是那篇文章的摘錄(原文很長。是中文的,放心去看吧)
http://msdn.microsoft.com/zh-tw/magazine/cc500561.aspx
如果您有一部以上的 Web 伺服器,那麼應該要把工作階段(Session)作業資訊儲存在哪裡?
可用的一個方法,是將資訊儲存在 Web 伺服器上,然後使用相似性。基本上,這代表來自某一位使用者的第一個要求會進行負載平衡,之後,所有來自該使用者/工作階段的要求,就都會傳送到與第一個要求相同的伺服器上。這是一項簡單的方法,每一種負載平衡解決方案都支援這樣的做法,而且在某些案例中是很合理的做法。
然而,長期而言,相似性會造成慘痛的問題。保持工作階段資料在同處理序 (In-Process) 或許是較快的方法,但是如果 ASP.NET 背景工作處理序進行回收,則這些工作階段就會中斷。背景工作處理序會進行回收的原因有很多。在高負載的情況下,IIS 可能會回收 ASP.NET 的背景工作處理序,因為它可能會認為該背景工作處理序已經卡住。事實上,根據預設,IIS 6.0 每 23 個小時就會回收一次背景工作處理序。您可以調整這個值,但是無論如何,您的使用者還是可能面臨工作階段資料在處理中遺失的風險。當網站的規模較小時,這並不會造成太大的問題,但隨著網站規模的擴充以及流量的增加,這將會成為嚴重的問題。此外還會有其他的問題。

如果您是透過 IP 位址進行負載平衡,其中有一部伺服器將會因為大量的 Megaproxy (像 AOL) 而無法負荷服務的負載。再則,若要在伺服器上更新您的應用程式版本,將會變得更困難;您必須等候使用者完成網站上的作業,或強制中斷使用者的工作階段 (而惹毛這些使用者)。如此一來,網站的可靠性就會遭受質疑:伺服器服務的中斷,會導致許多工作階段的中斷。

消除相似性是分散化策略的關鍵目標。這需要使工作階段狀態資料跨處理序,亦即要為了提升擴充性而犧牲一些效能。當您使工作階段跨處理序時,工作階段資料(Session)就會記錄在所有 Web 伺服器均可存取的位置,這可以是在 SQL Server® 上(請看「瓶水相逢」網友給的建議:HOW TO:設定 SQL Server 以儲存 ASP.NET 工作階段狀態)或是在 ASP.NET 狀態伺服器上。這可以在 web.config 中設定。

若要支援跨處理序工作階段,還需要撰寫一些程式碼。任何將儲存在 Session 物件中的類別,都需要以 Serializable 屬性標記。這表示類別中的所有資料都必須為可序列化,或標記為 NonSerialized,才能被忽略。如果您沒有如此標記類別,當序列化程式執行而要將您的工作階段資料儲存為跨處理序時,就會發生錯誤。

最後,移動工作階段成為跨處理序的方法,可以讓您知道工作階段物件中是否有太多資料,因為如此一來,您就可以察覺到每一個網頁要求在網路上來回傳送大量資料的負荷 (一次在網頁開端做為擷取,一次在網頁尾端做為傳回)。


或是看看下面這篇文章,孫三才老師講的JSP Web Farm,也有很高的參考價值。
http://www.javaworld.com.tw/jute/post/view?bid=30&id=62079&sty=1&tpg=3&age=0

AJAX與ListView的怪現象? --樣版內,控制項ID重複的問題

AJAX與ListView的怪現象? --樣版內,控制項ID重複的問題

這個問題也是我在MSDN論壇回答過的。http://forums.microsoft.com/MSDN-CHT/ShowPost.aspx?PostID=3125960&SiteID=14

Q :ListView裡面的各種樣版,以 ItemTemplate 與 AlternatingItemTemplate這兩個樣版最類似。
如果加上AJAX功能,在這兩個樣版內部,各自加上 UpdatePanel。
很奇怪的是----執行時,會出現錯誤訊息。說 [控制項ID重複?]
取消AJAX的UpdatePanel之後,又好了?真的很奇怪!

重新看了 ListView與SqlDataSource,自動幫我產生的樣版內容(HTML碼)。
沒錯。,這兩個樣版的內容一模一樣啊
不光如此,ListView的各種樣版,裡面各種的 TextBox,ID都是一樣的。
為何不會有錯?但加上AJAX的UpdatePanel就會出錯呢?
...................................................................................................................................

A : 這問題很有趣,所以我也自己測試了一下。
手動去修改 ListView裡面,每個樣版內的 [控制項ID],不要重複就好了。我試過,可以正常執行
我個人的認知如下,未必正確。
傳統POSTBACK的作法,一次只會啟動一個樣版,
所以 ListView各種樣版底下的控制項ID,就算重複也無所謂。
但改成AJAX之後,這時候,每一個控制項ID都必須獨一無二,
不然的話,要怎麼知道是哪一個控制項啟動了非同步的POSTBACK?
我覺得這說法,好像說得通


以上問答,是我在MSDN回答過的問題。http://forums.microsoft.com/MSDN-CHT/ShowPost.aspx?PostID=3125960&SiteID=14
今天又看見它上了最常查詢問題的排行榜。
所以收錄回自己的BLOG裡面

2008年5月12日 星期一

如何挑一本好書,學習ASP.NET。個人觀點,非戰文。

如何挑一本好書,學習ASP.NET。個人觀點,非戰文。


不瞞您說,小弟也出過幾本書(電腦書),以我的身份來說這些事,其實很不客觀。

大家看看就好,不要開戰吵起來。......反正 Blog就是給大家各自表述的園地

以ASP.NET為例,什麼樣的電腦書適合「初學者」來閱讀呢?

-------------------------------------------------------------------------------------------------------------

1. 使用 Visual Studio來學習ASP.NET,不要用其他怪軟體

時代已經過去了,以前寫程式有很多開發工具能選擇。

現在的 Borland去哪裡了?微軟不光是OS、AP、現在就連 "開發工具"都一家獨大了。http://www.zdnet.com.tw/news/software/0,2000085678,20129203,00.htm

要學習 .NET,還在用 Express版,將來出社會,會有軟體公司用這種「精簡版」來開發程式嗎?

到時候重新學一遍,也是浪費時間。

去面試時,說自己只會用 Express版,哪個老闆敢用你?

更誇張的是:有人竟然用 DreamWeaver來學習 ASP.NET.......我真的只能用 Orz來形容。

DreamWeaver很強,是很棒的HTML網頁編輯器。但它用 User Control來方式推出自己的這種控制項與標籤。

初學者」用他來學習 ASP.NET,你將來怎麼辦?連正統語法都還沒學熟悉,就用第三方軟體的怪標籤,將來怎麼改?

的確,為了幫學校、學生省錢,很多電腦書採用這種免費下載的 Express版軟體,

但我個人認為:千省萬省,不要省工具(工欲善其事,必先利其器)。

微軟的官方下載網站 download.microsoft.com 可以下載試用版。就算每30 or 60天要重新安裝一次,「初學者」也要破釜沈舟搞定。

不然的話,連工具都選錯,將來怎麼辦?

不學第一手的知識,難道要學第二手的嗎?要學被修改、重整過的嗎?......形勢比人強,現在就是微軟包山包海的時代。

除非不學 .NET改走 Java路線。不然的話,還是以「正統資源」為主

2. 書本的範例放在哪裡?

很多書每一個功能都講了,最後幾章放幾個大的範例。

初學者」遇見這種書,下場大概只有一個。

  • COPY範例直接改,發現不會動......因為自己底子差(沒從頭開始讀書),也不知如何下手修改。
  • 然後,就有人開始罵書本寫的爛!!!以後只要是放購物車、聊天室當作書後範例的都是爛書!?

我要反駁一下:

如果我們改一改,把聊天室的範例,放在 Application/Session/Cookie這一章來解說,

根據我實際授課的經驗,學生不但學得好,而且很快就理解 Application/Session的差異與用法。

為什麼會這樣呢?

因為剛學完理論,立刻作一個有用的「習題」。學生記得牢,有感覺。

這範例(有用的「習題」)不是九九乘法表這種無趣的數學題,是真正網路上看的見的功能。....學生當然有興致。

把「大型範例」一股腦的全放在書本後面,「初學者」能力不夠,一遇見困難,根本不知道自己該回到哪一章去補強這些知識。

所以,與其提供一個超完美的聊天室(大型功能、鉅細靡遺),當成書本後面的「大型範例」。

倒不如把功能簡化,只求這個範例能「活用」目前的重點即可。

3. 什麼都講過一遍,但看完書之後,什麼功能都兜不起來

很多老師上課也是一樣,教程式總是要學生去解數學題,例如:找最大公因數、九九乘法表...等等。

每一種基礎語法都講了,結果真正寫程式時,愣住了。不知道要用什麼來寫?

等到我出社會,我才發現:基礎語法學"IF判別式"與"迴圈"兩個就夠用了。

學自己最需要的,學最實用的。與其「貪多嚼不爛」,不如學適合自己的。

那麼,初學者那裡知道自己需要什麼呢?......這問題很大,真的很大了。.....

我的建議是:多買書、多看,跟著書本進度來走。

一旦書本看的多,就會知道哪些「重點」是大家必提的共識!

4. 除了教科書之外,懶得買書,只想不勞而獲。

這兩年的電腦書市場,非常低迷不振。原因是學生不想買書,只想上網隨便看幾篇免費文章,抄抄改改就算了。

但因為「初學者」能力不夠,就算有大師分享範例,能力不夠一樣看不懂。

啥?您不信?......上網找找黃忠成老師的「 GridView 範例集」,我看看有幾個人能看懂八成以上。

(除非基礎很扎實,學得好,不然的話,高階的範例就算人家願意公開,我們都沒能力吸收起來)

也因為學生不想買書,所以書商大量推出「教科書」內容,減少店頭販售的電腦書(偏偏店頭賣的電腦書,走向都專業一點)。

這種「教科書」內容,大致如下:

  • 適合一學期教學(所以內容不可能太多)。
  • 講「淺」不談「深」。有些談、有些不談。(我不清楚出版社為何挑中這幾章的內容來談?)
  • 功能大部分都有講,但前後不易整合。

我看過一本ASP.NET教科書,裡面不談ADO.NET與GridView的,想想看,這種教科書能學到什麼?

但很奇怪喔,裡面卻談了AJAX、Master Page與File。(我也不清楚:初學ASP.NET,書裡面為何要放這幾章?為何某些內容又不提?.....我也不懂。似乎純粹只是為了一學期講完來考量的)

以我為例好了,我當年學ASP,花最多時間在ADO上面。 .NET剛出來,我也是花最多時間看ADO.NET的東西。

當年,市面上每一本中文書,我都買了(不論內容深淺)。原文書能找到電子檔的,我盡量找來看。

書本內容沒有好壞,只有「自己有沒有認真看完」!中文書,再怎麼說都是自己母語,閱讀速度最快,入門最簡單)

所以,聽到出版社的人員跟我反應:現在資訊科系學生不愛去店頭買書的。......我真的嚇一跳,連書都不買了,那「初學者」要怎麼從頭學起?

寫程式這條路,1. 絕對不可能只學一兩學期的,2. 更不可能一本書就能搞定(寫程式的道路上,沒有一本搞定的聖經)。

如果您心裡面有上面這兩個念頭,那死期將近。

初學者」要把程式學好,就是要不斷地看書、找資料、參考別人範例、參與討論.....

業界的工程師因為有案子的壓力,自然而然會做這些事,所以能力累積得很快。

初學者與學生沒有立即的壓力,如果手邊又沒書參考,那麼經驗的累積會非常~非常~慢~

如果自己又不看書,那麼成長幾乎是停滯不動的

=======================================================

越寫越擔心,很怕有人立刻開戰........幹剿起來

=======================================================

提了這些問題,那麼我的解法在那邊?

其實,2001年我就遇見這問題了。那時候我寫了一段時間的Web程式,被調去資策會的教育訓練中心當講師。

我心裡也毛毛的。尤其是前一位老師,聽班主任說:上第一節課就被學生抗議轟下台。

(因為500小時的就業輔導班,學費很貴,要價十幾萬。學生很認真的~)

我那時候,基本程式只談IF判別式與迴圈。SQL指令只談基本語法(因為有其他專任老師教過資料庫與SQL了)

第一、二個範例,就是 Master-Detail。

第三個範例,就是資料新增。

....然後是簡單的搜尋引擎、會員註冊與功能(Session & Cookie)、留言版、關連式資料庫、其他常見的網站功能。

那時的班主任也很怕,我下這種猛藥(前三個範例,前三節課的內容)。學生一旦學不會立刻又抗議了

沒想到情況出奇的好!因為這些範例,每個網站都有,都用的到。所以學生學習興致高。

我又刻意把範例的難度降低。日後慢慢加入新功能,最後補齊。學生學起來都不錯,回家作業都能完成。

最後,要畢業前的專題,竟然通通都選Web專案來作。可見他們對於Web Programming有興趣、也有信心能做好。

=======================================================

後來出書,也想依循這個範例與進度。

但是作不太到。

因為出版社還是希望保留「概論、介紹、基礎語法、基礎SQL」等等,這些章節不能少。如此一來,篇幅又佔去不少

要求一本書不能超過600頁。......加上學校老師又給一堆建議(有趣的是,不同的老師給的建議還相互抵觸).......

最後,一碗湯要上桌前,多少還是走味了

如同黃忠成老師所說的:「書的讀者層 也是一個讓計劃無法如期實行的原因,

教會讀者們如何運用一個技術是一回事,培養他們成為高級設計師又是另一回事,

Step by Step是一個入口,Deep Inside是一個出口,兩個門都得有人帶,

但是!!走進來的人 多過於 走到出口的人,一大半的人都是轉頭而去的

原文出處:http://www.dotblogs.com.tw/code6421/archive/2008/05/07/3855.aspx

實在是心有戚戚焉。

不論如何,初學者多買書、逼自己多學習、多看......是必要的。

這年代,想要前五年薪資比人家高,工作比人家好找。

資訊軟體科系是熱門的,絕對沒問題。No Pain, No Gain!

=======================================================

ASP.NET 2.0與3.5十分雷同。如果我粗淺的分類,ASP.NET 3.5 = ASP.NET 2.0 + AJAX + LINQ + 新的控制項

那麼許多 ASP.NET 2.0的書還是很有購買的價值。

初學者,要學的簡單、學得廣泛。

董大偉老師的書,厲害!(博碩出版,ASP.NET 2.0深度剖析範例集)

能力夠了,聖殿祭司的書可以補強(基峰出版,ASP.NET 2.0專家技術手冊)。

這兩本都很讚。(但順序如果相反,我不保證不會走火入魔,因為聖殿祭司的書,部份章節有難度)

黃忠成老師的書,也是很難得的鉅作。除了可以學到很多底層的細節之外,更可以考驗自己的能力到達什麼位階。

最後打一點廣告,我的書快出來了

=======================================================

覺得市面上的書都不好,怎麼辦?

=======================================================

當您覺得市面上的中文書都不好的時候,有些方向供您參考:

第一,直接看原文書。用英文寫書,很直接,會比中文更能直指核心。這一點,相信在大學看過原文書的人,都有感覺。

第二,直接看微軟MSDN的文件,有中文的(但是,翻譯得很不順,有些細節講得太細。但範例&程式碼都很值得學習)。

第三,上網討論,很多論壇的問與答,都是很難得的經驗。這些討論,很難有書本會講得這麼細節。(小朱在「旗標」有出版一本問題集,很不賴。http://www.microsoft.com/taiwan/msdn/books/asp.net/asp.net4.htm

有本事覺得市面上的中文書,都搔不到自己癢處。 我想您的基本能力應該是沒問題了。


但是,很可惜的,我最常看見的「初學者」,都是不買書,甚至書都沒看就亂問一通了。

沒有基本能力,就想上網找免費資源了。

看過武俠小說的人都知道,底子不好又四處亂練功,下場就是......(科科~~)

並不是我們藏私。而是BLOG、討論區或是網頁,要做到「圖文並茂」真的好難好難。

沒有基礎能力的話,我講到嘴破,甚至直接給程式碼,還是無法解惑

總之,打好自己的底子,培養基本能力,是每一個初學者的基本功。

沒有一種能力,是會憑空得來。是不需努力就會有的。

投資自己,是一輩子最有積效的事。

相關的文章:

http://www.allenkuo.com/EBook5/view.aspx?TreeNodeID=7&id=9

http://blog.blueshop.com.tw/topcat/archive/2007/12/06/53569.aspx

如何使用 .NET,從檔案中讀取 XML

如何使用 .NET,從檔案中讀取 XML


原始的 Books.xml文件如下:

01 xml version="1.0" ?>
02 -
04 - <bookstore>
05 - <book genre="autobiography">
06 <title>The Autobiography of Benjamin Franklintitle>
07 - <author>
08 <first-name>Benjaminfirst-name>
09 <last-name>Franklinlast-name>
10 author>
11 <price>8.99price>
12 book>

13 - <book genre="novel">
14 <title>The Confidence Mantitle>
15 - <author>
16 <first-name>Hermanfirst-name>
17 <last-name>Melvillelast-name>
18 author>
19 <price>11.99price>
20 book>

21 - <book genre="philosophy">
22 <title>The Gorgiastitle>
23 - <author>
24 <name>Platoname>
25 author>
26 <price>9.99price>
27 book>
28 bookstore>

資料來源: http://support.microsoft.com/kb/301225/zh-tw

完整的程式碼清單

Imports System.Xml

Module Module1

Sub Main()
Dim reader As XmlTextReader = New XmlTextReader("books.xml")

Do While (reader.Read())
Select Case reader.NodeType

Case XmlNodeType.Element '註解:Display beginning of element.
Console.Write("<" + reader.Name)
If reader.HasAttributes Then '註解:If attributes exist
While reader.MoveToNextAttribute()
'Display attribute name and value.
Console.Write(" {0}='{1}'", reader.Name, reader.Value)
End While
End If
Console.WriteLine(">")

Case XmlNodeType.Text '註解:Display the text in each element.
Console.WriteLine(reader.Value)

Case XmlNodeType.EndElement '註解:Display end of element.
Console.Write(" Console.WriteLine(">")
End Select
Loop
Console.ReadLine()

End Sub

End Module

另外一個範例,也是透過 XMLReader.Read()方法來作

http://msdn.microsoft.com/zh-tw/library/system.xml.xmltextreader.read(VS.80).aspx

下列範例讀取 XML 檔案 並顯示每一個節點。

Option Strict
Option Explicit

Imports System
Imports System.IO
Imports System.Xml

'Reads an XML document
Public Class Sample
Private Const filename As String = "items.xml"

Public Shared Sub Main()
Dim reader As XmlTextReader = Nothing

Try
' Load the reader with the data file and ignore all white space nodes.
reader = New XmlTextReader(filename)
reader.WhitespaceHandling = WhitespaceHandling.None

' Parse the file and display each of the nodes.
While reader.Read()
Select Case reader.NodeType
Case XmlNodeType.Element
Console.Write("<{0}>", reader.Name)

Case XmlNodeType.Text
Console.Write(reader.Value)

Case XmlNodeType.CDATA
Console.Write("", reader.Value)

Case XmlNodeType.ProcessingInstruction
Console.Write("", reader.Name, reader.Value)

Case XmlNodeType.Comment
Console.Write("", reader.Value)

Case XmlNodeType.XmlDeclaration
Console.Write("'1.0'?>")

Case XmlNodeType.Document

Case XmlNodeType.DocumentType
Console.Write(", reader.Name, reader.Value)

Case XmlNodeType.EntityReference
Console.Write(reader.Name)

Case XmlNodeType.EndElement
Console.Write("", reader.Name)
End Select
End While

Finally
If Not (reader Is Nothing) Then
reader.Close()
End If
End Try
End Sub
End Class

類別說明

XmlTextReader

讀取字元資料流。它是順向讀取器,含有傳回內容和節點型別中之資料的方法。文件類型定義 (DTD) 或結構描述不受支援。若 XML 文件含有 DTD,則 DTD 將會被剖析,但不會用來進行驗證或加入預設屬性。http://msdn.microsoft.com/zh-tw/library/system.xml.xmltextreader.read(VS.80).aspx

XmlNodeReader

透過 XML 文件物件模型 (DOM) API 提供 XmlReader,就像 XmlNode 樹狀結構。在 XmlNode 中取得,並傳回它在 DOM 樹狀結構中發現的任何節點,包括實體參照節點。它不支援 DTD 或結構描述驗證,但是它可以解析定義於 DTD 中的實體。http://msdn.microsoft.com/zh-tw/library/system.xml.xmlnodereader.read(VS.80).aspx


Windows 2008果然是好樣的!

Windows 2008果然是好樣的!


同事去參加微軟研討會,拿到試用版的 Windows 2008 / Vista 兩者的視窗畫面都雷同。

如我所預料,就跟當年的 Windows 2003 / XP一樣

當年的 Windows 2003很精簡、畫面跟XP一樣漂亮,但開關機更快。

不需要的服務,Win2003不會主動裝上去(就不會浪費資源,也不會有安全問題)

今天同事裝好這兩套新的OS,跟大家報告一下:

Windows VISTA安裝完成,一開機 860MB RAM.....挖勒!Orz

Windows 2008好樣的!一開機完成,有裝IIS,只有396MB RAM。果然棒!

測試機器:Intel 2.4G CPU + 2GB RAM。

比較有趣的是,Win2008一安裝好之後,就是SP1的版本了......哈哈!(原因請看這裡-- http://os.yesky.com/windowsvista/360/7811360.shtml

我剛好也在昨天幫我的 Vista(合法購買的版本喔!)裝上SP1,挖勒!光是SP1就五百多MB,天啊!

有傳說中,Vista+SP1以後效能大幅提昇的感覺嗎?........恩!我相信評比數據上會有提升,但使用感覺上就不要有太多期盼

關於相關文章,請參考這篇Windows Vista減少不必要的服務、最佳化(優化) (我猜啦,Win2008閱讀此文也有幫助)

電子時報的報導-- http://app.digitimes.com.tw/ShowNews.aspx?zCatId=821&zNotesDocId=0000051444_A4S2NK32NV5NNMX3TKX9C

天極網的報導-- http://os.yesky.com/win/213/7652713.shtml

2008年5月7日 星期三

VS 2008 Hotfix,解決「屬性視窗」卡住的問題

VS 2008 Hotfix,解決「屬性視窗」卡住的問題


使用VS 2008常常發現運作得很不順利,尤其是點選控制項之後,好像卡住了。
屬性視窗就是跳不過去。老是卡在原本的位置。
上網找了一下,發現已經有前輩提供解答了。目前這個 hotfix已經推出中文版。

資料來源:黑暗執行緒 http://blog.darkthread.net/blogs/darkthreadtw/archive/2008/02/11/vs-2008-hot-fix-roll-up.aspx


VS 2008 Hotfix,解決「屬性視窗」卡住的問題
https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=10826

這個檔案我下載之後,解不開(微軟自己包裝成一個自動解壓縮的檔案)
後來我用 WinRAR(共享軟體)手動解壓縮才成功。

2008年5月6日 星期二

微軟建議的:寫程式的好習慣(命名與編碼規則)

微軟建議的:寫程式的好習慣(命名與編碼規則)
看了這兩篇文章,才發現原來我有些壞習慣。
不改不行。

以下兩篇中文的說明,大家看看,多少有些學習與改進的機會。
Visual Basic 編碼慣例 http://msdn.microsoft.com/zh-tw/library/h63fsef3(VS.80).aspx
Visual Basic 命名慣例 http://msdn.microsoft.com/zh-tw/library/0b283bse(VS.80).aspx

ASP.NET轉成PDF檔輸出

ASP.NET轉成PDF檔輸出
原文出處:http://www.aspnetworld.com/articles/2004011801.aspx

Solution 1: Use an open-source .NET PDF library. Sample list:
ASP.NET FO PDF at SourceForge.net - generates XSL-FO from DataTable to render PDF
iTextSharp at SourceForge.net
Examples and Tutorial: http://itextsharp.sourceforge.net/
Also see this article: Create PDF on the fly with .NET and iTextSharp by Valerio Fornito, DoPostBack.com
PDFCreator at GotDotNet - design PDF document visually using Visual Studio IDE
Report.NET at SourceForge.net

Solution 2: Use a commercial .NET PDF library. Sample list:
ABCpdf .NET by WebSupergoo - free license also available
Apoc XSL-FO by Chive Software - generates PDF using XSL-FO
Aspose.Pdf by Aspose
DynamicPDF by ceTe Software
PDF4NET by O2 Solutions
PDFLib by PDFLib GmbH
TallPDF.NET by TallComponents - able to create PDF documents either programmatically using an object model or from XML.
Tutorial: Create and manipulate PDF documents - 100% .NET by Frank Rem (CodeProject.com)
XMLPDF by Visual Programming - converts XML to PDF


Solution 3: Use activePDF WebGrabber to convert any URL output to PDF on-the-fly.

Solution 4: Use a report generator like Crystal Reports or SQL Server Reporting Services to render to PDF.
How to Create PDF from ASP.NET pages by Edward Tanquay (DeveloperFusion.com) - using Crystal Reports
Crystal Reports: Add Professional Quality Reports to Your Application with Visual Studio .NET by Andrew Brust (MSDN Magazine)
Related Resources
XSL FO Tutorial at RenderX
Definitive XSL-FO by G. Ken Holman
XSL-FO: Making XML Look Good in Print by Dave Pawson

後置程式碼(CodeBehind) 想要寫一個 蹦現視窗Pop-up , 出現警告訊息



ASP.NET 後置程式碼(CodeBehind) 想要寫一個 蹦現視窗Pop-up , 出現警告訊息該怎麼做呢?
 
請看程式範例,Try....Cacth....End Try 最底下的那一段
 
(改寫幾個字,謝謝奚江華老師,聖殿祭司的書。碁峰出版)


2008年4月28日 星期一

Global.asax文件裡面的事件

Global.asax文件裡面的事件
資料來源:http://www.xmlasp.net/n1247c12.aspx

Global.asax檔繼承自HttpApplicatio類別,它維護一個HttpApplication Object Spool,並在需要時將Spool中的物件分配給應用程式。Global.asax 檔包含以下事件:

‧ Application_Init:在應用程式被實例化或第一次被調用時,該事件被觸發。對於所有的HttpApplication物件實例,它都會被調用。
‧ Application_Disposed:在應用程式被銷毀之前觸發。這是清除以前所用資源的理想位置。
‧ Application_Error:當應用程式中遇到一個未處理的異常時,該事件被觸發。
‧ Application_Start:在HttpApplication 類的第一個實例被創建時,該事件被觸發。它允許你創建可以由所有HttpApplication 實例訪問的物件。
‧ Application_End:在HttpApplication 類的最後一個實例被銷毀時,該事件被觸發。在一個應用程式的生命週期內它只被觸發一次。
‧ Application_BeginRequest:在接收到一個應用程式請求時觸發。對於一個請求來說,它是第一個被觸發的事件,請求一般是用戶輸入的一個頁面請求(URL)。
‧ Application_EndRequest:針對應用程式請求的最後一個事件。
‧ Application_PreRequestHandlerExecute:在 ASP.NET 頁面框架開始執行諸如頁面或 Web 服務之類的事件處理程式之前,該事件被觸發。
‧ Application_PostRequestHandlerExecute:在 ASP.NET 頁面框架結束執行一個事件處理程式時,該事件被觸發。
‧ Applcation_PreSendRequestHeaders:在 ASP.NET 頁面框架發送 HTTP 頭給請求客戶(流覽器)時,該事件被觸發。
‧ Application_PreSendContent:在 ASP.NET 頁面框架發送內容給請求客戶(流覽器)時,該事件被觸發。
‧ Application_AcquireRequestState:在 ASP.NET 頁面框架得到與當前請求相關的當前狀態(Session 狀態)時,該事件被觸發。
‧ Application_ReleaseRequestState:在 ASP.NET 頁面框架執行完所有的事件處理程式時,該事件被觸發。這將導致所有的狀態模組保存它們當前的狀態資料。
‧ Application_ResolveRequestCache:在 ASP.NET 頁面框架完成一個授權請求時,該事件被觸發。它允許緩存模組從緩存中為請求提供服務,從而繞過事件處理程式的執行。
‧ Application_UpdateRequestCache:在 ASP.NET 頁面框架完成事件處理程式的執行時,該事件被觸發,從而使緩存模組存儲回應資料,以供回應後續的請求時使用。
‧ Application_AuthenticateRequest:在安全模組建立起當前用戶的有效的身份時,該事件被觸發。在這個時候,用戶的憑據將會被驗證。
‧ Application_AuthorizeRequest:當安全模組確認一個用戶可以訪問資源之後,該事件被觸發。


‧ Session_Start:在一個新用戶訪問應用程式 Web 站點時,該事件被觸發。
‧ Session_End:在一個用戶的會話超時、結束或他們離開應用程式 Web 站點時,該事件被觸發。

更詳細的內容,請參閱下面的文章
資料來源:http://www.xmlasp.net/n1247c12.aspx

[MSDN] VB語法大全,能上網就能用

[MSDN] VB語法大全,能上網就能用
全都是正體中文的說明
VB語法,依照英文列表:http://msdn2.microsoft.com/zh-tw/library/2f43da0y(VS.80).aspx
資料型態:http://msdn2.microsoft.com/zh-tw/library/47zceaw7(VS.80).aspx
常用的VB函式,依照英文列表:http://msdn2.microsoft.com/zh-tw/library/32s6akha(VS.80).aspx

使用 Using...End Using區塊來寫程式,要非常小心!

使用 Using...End Using區塊來寫程式,要非常小心!http://msdn2.microsoft.com/zh-tw/library/htd05whh(VS.80).aspx

不要忽略了裡面可能發生的危機。
http://forums.microsoft.com/MSDN-CHT/ShowPost.aspx?PostID=1417995&SiteID=14
http://forums.microsoft.com/MSDN-CHT/ShowPost.aspx?PostID=3225947&SiteID=14

以下是一個簡單的程式。以資料庫連結來說(變數名稱Conn)。我寫了一小段程式來觀察,如下面的紅字。
Using區塊的確會自動幫我們關閉,完成這兩件事。Conn.Close()與Conn.Dispose()
但其他物件,我就不確定。例如:DataReader的 .Close():


Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim SQLstr As String = "SELECT top 5 * From test"
Dim Conn As New SqlConnection("DB_ConnectionString")
Dim cmd As New SqlCommand(SQLstr, Conn)

Using Conn
Conn.Open() '==第一,連結資料庫
'==第二,設定SQL指令****(巢狀 Using)****==
Using dr As SqlDataReader = cmd.ExecuteReader()
'==第三,自由發揮,將資料呈現在畫面上==
'---- 把DataReader獲得的資料,跟GridView控制項繫結(.DataBind())在一起。
'---- GridView控制項就會自動把資料展現在畫面上了。
GridView1.DataSource = dr GridView1.DataBind()

cmd.Cancel()
dr.Close()
End Using '-- 處置DataReader****(巢狀 Using)****

End Using '==第四,關閉資源&資料庫的連線==
'—註解:資料庫連線(Conn)會「自動關閉」。因為它是由 Using來開啟,End Using會自動關閉之。
Response.Write( Conn.State)
End Sub

跨網頁公佈 Cross-Page Posting

跨網頁公佈 Cross-Page Posting

我在A網頁,要輸入日期。
按下日曆,就會跳出一個新網頁B。
在B網頁典選的日期,會自動填回A網頁裡面。
以前常常會用到這樣的功能,請看這篇文章--ASP.NET父子視窗的應用,利用子視窗的Gridview選取一個值,傳回父視窗

依照微軟的作法,ASP.NET可以使用 Cross-Page Posting (跨網頁公佈)
完全不需要用到 JavaScript就能完成喔。
請參考下面的中文文章 ^_^
http://msdn2.microsoft.com/zh-tw/library/ms178139.aspx

點部落的這篇文章也是不錯。http://www.dotblogs.com.tw/dotjum/archive/2008/04/28/3521.aspx

2008年4月25日 星期五

DSLR,單眼數位相機的選購

小弟在高中就開始玩單眼相機,沒啥技術,只是家裡有一台,隨手拍拍,好玩而已。
一直到了大學,也加入攝影社。但興趣一直維持到現在。


2003年我買了第一台數位相機(DC),是「類單眼相機」,
就是有單獨的鏡頭(比一般DC好),但鏡頭不可替換,跟機身合併在一台。
Panasonic (LUMIX)的FZ-1,恆定光圈 F2.8,光學十二倍萊卡鏡頭。
當年買了一萬八。這規格就算是今日DC,仍舊是非常高階的規格。可惜當年只有兩百萬像素。
類單眼相機,我的確很偏愛Panasonic (LUMIX)的FZ系列。

不要迷信像素喔!DC的像素沒啥用。
光學鏡頭才是重點。你的光學鏡頭不好,像素再高,都是輔助而已。
目前的DC消費型像機,大部分都還沒有我上一台舊DC相機好

但很快就遇見瓶頸了。主要的缺點,所有DC都一樣,對焦慢、快門慢。
對於曾經用過機械式單眼相機的我來說,實在味如嚼蠟。

後來終於下定決心,投資DSLR(真正的單眼數位相機)。
1. 因為鏡頭與機身各自獨立,鏡頭可以用很久,很保值!
2. DSLR耐用性高,因為沒有LV功能,感光鼓可以用比較久。
(所謂LV功能,就是Live View。一般的DC可以從螢幕中,直接取景與拍照,DSLR大部分都沒有這功能。)
3. DC的錄影功能,我從來沒用過。我也不需要(DSLR也沒這功能,所以很多人第一次用會很驚訝!)
4. DSLR不太容易跌價,改朝換代也沒有DC這麼誇張。

.............沒錯!我這樣的人,不買DSLR,那還要買什麼?

研究了很久。

入門級,鏡頭+機身(稱為KIT組)比較划算。
兩萬五能買到 Canon 400D or Nikon D60。千萬像素,很夠用了。
想要LV 功能的,可以選 Sony Alpha(A350) or Canon D450,都是KIT組,附送鏡頭。兩萬六七買的到
這種入門級的機種,附贈的鏡頭大約是 15~55mm

沒想到我研究了半個多月,最後竟然買了三萬出頭的Nikon D80 (KIT組)。
已經是中階產品(不算入門級)的了。

DSLR果然猛!
因為沒有LV功能,螢幕不需一直開啟,很省電。
ISO感光值超過1600,隨便拍都很漂亮。尤其是在車展或是資訊產的昏暗會場。
快門超快,對焦也快。簡單的說,我一拿起向機,就能立刻拍到我看見的景色。
不像以前的DC,按下快門,要等兩三秒。拍到的東西不是我看到的,會有延遲。


爽快度第一,果然厲害。


朋友~~您也常常覺得:
小DC在某些場合拍出的照片,晃動很厲害嗎?
拍到了一個瓶頸,不能繼續進步?
DC拍照時,爽度就是不夠!

沒錯!有了上面的症頭,你也該加入DSLR行列了。