這是備份網站。主網站位於http://www.dotblogs.com.tw/mis2000lab/
MIS2000 Lab's ASP.NET & Linux (Trad. Chinese 正體中文;Big5)。這個網站,是我們(MIS2000 Lab.資訊工作室)多年教學的實際心得與上課範例,有ASP.NET程式設計,也有Linux的相關文件。
編輯。
您也可以直接參觀主網站
MIS2000 Lab. is MVP 2008-2017/7/1 for ASP/ASP.NET.
2008年12月11日 星期四
2008十一月文章
閒談 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 十月份文章
[習題]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,說真的,功能大同小異。 只是使用慣了,不想換。
2008年9月28日 星期日
ASP.NET的OutputCache,學習Cache一看就懂
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專題實務(文魁出版)
===================================================================
以前介紹的AJAX功能(本書第十九章),幾乎不用寫程式就可以靠著 ScriptManager + UpdatePanel來完成。但是ASP.NET也有提供手寫版本的AJAX功能,那就是本章介紹的 CallBack(回呼)。
使用工具來開發AJAX固然快速,但因為初學者不知其所以然,常常誤用而導致奇怪的執行結果(程式會跑,但結果怪怪的,會出現意料之外的狀況)。本章的CallBack雖然動手寫程式比較累,但流程確定反而不容易出錯。非常適合想要進一步提昇自己功力的讀者,進行自我鍛鍊。
好用軟體報你知!Diskeeper與Rramdisk
歡迎大家觀賞。
[轉貼] 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的五篇文章&範例
在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日 星期二
2008/八月份 天瓏書局排行榜前十名 (ASP.NET專題實務)
謝謝各位讀者,小弟出版的新書,八月初才開始鋪貨。
新書上市-- 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專題實務(文魁出版)
如果要參加團購,我個人有便宜的價格(內含郵資)。請看 [團購!] ASP.NET專題實務(文魁出版/P8187)
說來有趣,雖然書店賣得還好,但直接跟我購買的人似乎不多。小弟手邊還有些庫存,壓了不少現金
...................................................................................................................................................................................................................
新書上市-- ASP.NET專題實務(文魁出版 / P8187)。懇請支持,謝謝。
2008/八月份 天瓏書局排行榜前十名
先行編譯(PreCompilation)-- aspnet_compiler.exe,ASP.NET 2.0以後才適用
ASP.NET 2.0以後,我們可以下指令(aspnet_compiler.exe)完成「先行編譯(PreCompilation)」。 當然,也可以在VS 2005/2008裡面,畫面右邊的方案總管,按下滑鼠右鍵,選擇「發行網站」
DataSet與ObjectDataSource #1,簡單的小範例
自從ASP.NET 2.0開始(VS 2005),作法有些改變。我們必須加入一個資料集(DataSet),然後透過 ObjectDataSource控制項來使用它。 這一部份原本打算在書本裡提及,但書本上限600頁(我最後寫到840幾頁,實在塞不下去了),因為成為遺珠。 先把一些範例公布在我的Blog上面,作為補償。
修改VS 2005/VS 2008「動態通訊埠」這個擾人的問題
與大家分享一下,順便留個記錄,以免哪天自己也忘了。
http://www.dotblogs.com.tw/mis2000lab/archive/2008/09/08/5318.aspx
2008年8月15日 星期五
[入門]VS 2008 + LINQ-to-SQL,不用寫程式,一次搞定。
不用寫程式,VS 2008拉過來、拉過去,就完成一個功能強大的網頁程式。
範例: GridView + LINQ,完成資料呈現、分頁、編輯(更新)、刪除、排序等等功能。
寫程式有這麼難嗎?~真的不會啦
[入門]以初學者來看,ASP.NET的GridView可以學到什麼?
GridView能玩到的功能很多,由淺入深,有各種玩法。
重點不是在「強調GridView的英名神武」,而是在GridView的學習歷程中,我們學到的東西,都可以延續到其他控制項來使用。
這才是書籍作者偏好 「優先推薦GridView」的理由吧。 以初學者為例,GridView的學習歷程,可以包含......
[給初學者的話] IT世界裡面,沒有一本搞定的「初學者聖經」
但是這種「聖經」,是指:書本寫得好、架構嚴謹、理論正確,看了以後茅塞頓開,扭轉不少錯誤的觀念。
絕對!絕對沒有哪一本「聖經」等級的電腦書,敢跟你保證「買了這一本,永遠不用看其他書籍」啦~
2008年7月16日 星期三
[自己的經驗談] 油價高漲,省油DIY,省油秘訣
開車想要省油,其實要看自己的開車習慣。
關於省油的問題,我親身經驗不錯,請您參考。
不需要安裝什麼省油設備啦!那些錢省下來加油(當成油錢),還比較實際
想要省油,沒有秘訣啦。參考一下我的方法:
[自己的經驗談] 油價高漲,省油DIY,省油秘訣
2008年6月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),簡單的說,就是「網頁A」要把資料傳給「網頁B」。
以前在ASP時代,我們可以用隱藏欄位,例如: ,或是 Session(工作階段)來處理。
而ASP.NET 2.0開始,微軟有新的方法提供給大家。
以下是即將出版的新書內容:
========================================================
假設我們有一個網頁程式,要輸入日期。
另外一個網頁程式,會有日曆控制項。
點選後,日期會自動傳回去。
(抱歉,有幾張圖片來解釋可能比較清楚。But......大家忍耐一下,這東西不難。)
========================================================
作法如下:
程式 1.aspx的按鈕(Button2)控制項,「PostBackURL」屬性要設定第二支程式的檔名(2.aspx)或URL。
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重複的問題
這個問題也是我在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回答過的問題。
今天又看見它上了最常查詢問題的排行榜。
所以收錄回自己的BLOG裡面
File 與 Log #2----訪客計數器(用.txt檔案來記錄)
以下是即將發表的新書內容:
網站的訪客計數器,也可以用檔案的方式來撰寫。這支程式(Counter.aspx)很簡單也很短,就算您看不懂程式碼,直接 Copy過去用也可以執行。而且執行的結果是以圖片的方式來呈現數字
數字圖片,放在本章範例的 image目錄底下。例如:1的圖片,就名為1lcdb0,gif。2的圖片,就名為2lcdb0,gif……以此類推。
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
舉例來說,尚未上線的系統、或是有些功能繁雜的程式要撰寫。我們就可以利用檔案的功能來做紀錄。一邊測試一邊記錄這些程式在各階段的運作狀況,每個階段成功與否都可以直接寫入文字檔裡面,不需要跟資料庫搶資源、搶連線。畢竟小檔案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)。很適合初學者與新鮮人~
市面上有些電腦書寫的很不錯。
英文原文書當然沒話講,或許是語言的關係,他們寫技術文件比較單刀直入,一目了然。
後來我發現國內的出版社,也引進一些「日文翻譯書」。日本人也是好樣的!
他們不說廢話,書裡面都是很實用的範例。也讓我印象很深刻。
例如:入門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
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控制項「批次上傳」的範例,千萬不能錯過。
首先,進行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!
網路上吵得很厲害,要「人道」、要「以直報怨」、要XXXY等等.....都不如下面這位朋友的一句話:
迴響來自: Sampkao [訪問者]今日的種種敵意,都是過去五十、一百年來的積累;
未來的五十、一百年會如何,就要看我們今日怎麼去做。全文連結 2008-05-14 @ 19:53
提供三篇好文章,讓自己反思。
多台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重複的問題
這個問題也是我在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文件如下:
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("" + reader.Name)
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 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("{0}>", reader.Name)
End Select
End While
Finally
If Not (reader Is Nothing) Then
reader.Close()
End If
End Try
End Sub
End Class
類別 | 說明 |
---|---|
| 讀取字元資料流。它是順向讀取器,含有傳回內容和節點型別中之資料的方法。文件類型定義 (DTD) 或結構描述不受支援。若 XML 文件含有 DTD,則 DTD 將會被剖析,但不會用來進行驗證或加入預設屬性。http://msdn.microsoft.com/zh-tw/library/system.xml.xmltextreader.read(VS.80).aspx
|
透過 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
2008年5月7日 星期三
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檔輸出
原文出處: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 , 出現警告訊息
2008年4月28日 星期一
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
使用 Using...End Using區塊來寫程式,要非常小心!
不要忽略了裡面可能發生的危機。
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
Using Conn
Conn.Open() '==第一,連結資料庫
cmd.Cancel()
End Using '==第四,關閉資源&資料庫的連線==
跨網頁公佈 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行列了。