2008年4月18日 星期五

ASP.NET 2.0 + FCKEditor--華麗的輸入介面

我從撰寫ASP的時候,就有用上 FCKEditor了。

下載點 http://www.fckeditor.net/download
畫面 http://www.fckeditor.net/images/demo_screenshot.gif






畫面真的很棒,簡直就是 Web版的 FrontPage or DreamWeaver

不過,到了ASP.NET,我卻沒有用它。
因為工作內容不需要這種華麗的輸入介面了。
為了寫書,又把它拿出來作示範。......沒想到搞了好幾天才成功~~~

上網一看,人家早就貼出經驗談了。
我還真是白做工啊。


可見得做事之前,要先查詢一下網路資源,節省大家時間。善用熱心前輩的經驗談啊~
ASP.NET 2.0使用FCKEditor初體驗
http://blog.blueshop.com.tw/topcat/archive/2006/11/30/45727.aspx

2008年4月17日 星期四

ASP.NET 訪客計數器

下面文章,是我即將推出的新書內容,分享一些給大家參考:

我們用一個文字檔來進行記錄,把訪客的參觀數字,記錄在這個檔案(counter.txt)裡面。重點是:務必把這個檔案的權限,設定為「可寫入」。這樣才能每次累計加一,記錄訪客人數。

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

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


Imports System.IO

Partial Class _Book_My_Files_Counter
Inherits System.Web.UI.Page

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'====讀取檔案 (務必修改這個檔案的權限,需要「寫入」的權限)====
Dim sr As New StreamReader(Server.MapPath("counter.txt"))

'--把檔案內, 原本的訪客人數[加一]
Dim visitors As String = sr.ReadLine()
visitors = CInt(visitors) + 1

'--把訪客人數(數字) 轉換成 [圖片]展示在畫面上
Dim Length As Integer = Len(visitors) '--計算訪客人數的[字串長度]
Dim strURL As String = ""

While Length >= 1
'--訪客人數的每一位數字,都用圖片來呈現。
strURL = "" & strURL
Length = Length - 1
End While
sr.Close()

'====寫入檔案,紀錄最新的訪客人數==================
Dim sw As New StreamWriter(Server.MapPath("counter.txt"))
sw.WriteLine(visitors) '--找不到檔案也不會出現錯誤訊息,而且會自動新增一個檔案。
sw.Close()

Label1.Text = strURL
End Sub
End Class


想要學得更多,就看看我的書吧。....Thanks

網路聊天室,介紹 Application與Session的最佳案例

下面文章,是我即將推出的新書內容,分享一些給大家參考:

網路聊天室,是一個最適合用來解說 Application與 Session的範例了。作法並不難,但卻可以讓讀者立刻瞭解Application與 Session兩者的差異。

  • Application----全網站的人都可以看見,所以發表在聊天室的訊息,將透過 Application給大家瀏覽。
  • Session----鎖定單一使用者的瀏覽器環境,所以適合用存放自己的個人資訊,例如:暱稱、喜歡的文字顏色等等。


這個聊天室的範例,只有少少的兩支程式,外加一個 Global.asax檔案。
1 Case_1_Login.aspx----讓使用者登入、記錄他的暱稱、文字顏色這兩種資訊。
2 Case_2.aspx----聊天室的主程式。
3 Global.asax----事先設定好 Application的狀態。


======================================================
因為聊天室裡面人多嘴雜,大家發言可能很踴躍。所以我們預先設定了 Application(“A1”) ~ Application(“A15”) 共十五個Application來存放這些留言。如果讀者覺得不夠用,可以修改成 20或25都可以。

Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
' 應用程式啟動時執行的程式碼
For i = 1 To 15
Application("A" & i) = ""
Next
End Sub

….以下省略….


======================================================
接下來,設計 Case_1_Login.aspx。這個畫面很簡單,只是給使用者輸入帳號與個人偏好而已。這些個人偏好,因人而異,所以我們必須用Session()來存放這些資料。

為了避免無名氏登入鬧場,我們也使用了驗證控制項,避免有人不填寫名稱,就進入聊天室。而且,每個人可以選自己喜歡的字體顏色,在聊天室裡面發言。

Case_1_Login.aspx的後置程式碼,只有短短三行而已。

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Session("my_color") = DropDownList1.Items(i).Value
Session("my_name") = TextBox1.Text
‘—註解:使用者輸入帳號與文字顏色而已。這些個人偏好,因人而異,所以我們必須用Session()來存放這些資料。

Response.Redirect("Case_2.aspx")
End Sub

======================================================
聊天室的主程式(Case_2.aspx),功能也很簡單。裡面只有一個 Label控制項(用來展現大家的留言),另外還有一個輸入留言的 TextBox控制項而已。

後置程式碼分成幾個部份,我們逐一解說會比較清楚。不過大部分的程式都是雷同的。首先是 Page_Load()事件,在此我們作三件事:
第一,透過Session的判別,來防堵有人直接用URL網址連上這網頁。
第二,第一次登入聊天室的人,會看見目前的所有討論留言。 List_All()這段副程式是我們自己寫的,因為這一段很常用到,為了程式的可讀性,我們就把這一段獨立寫成副程式。
第三,為這個新加入的人,寫一段「歡迎詞」。提醒大家,有一位新人加入聊天室。

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Session("my_name") = "" Then
'====1. 防止有人沒註冊就闖入===========
Response.Write("抱歉,請用正當程序,進行登入!...... )
Response.Write(請您回到--Case_1_Login.aspx登入畫面")
Response.End()
End If

If Not Page.IsPostBack Then
List_All() '====2. 第一次進到聊天室,會立刻出現目前所有人的談話內容====

'====3. 歡迎新夥伴加入====
Application.Lock()
'--註解:如果要更動Application裡面的資料,務必事先進行鎖定!

Dim my_Label As New StringBuilder
For i = 15 To 2 Step -1
Application("A" & i) = Application("A" & (i - 1))
my_Label.Append(Application("A" & i).ToString)
Next

'==== 上面這段FOR迴圈,是聊天室程式裡面的重點! ====
' 每當有人發表一則留言,原本畫面上的留言,就會向上推擠。
' 最新的留言,總會出現在畫面下方的最後一筆。
' 為了良好的效率,這裡我們改用 StringBuilder來處理字串。

Application("A1") = Session("my_name") & " " & FormatDateTime(Now, DateFormat.LongTime) & " 說: ====Hello~Everybody~歡迎新夥伴加入!!====
"
my_Label.Append(Application("A1"))
Label1.Text = my_Label.ToString

Application.UnLock()
End If
End Sub

‘-- 把常用的程式片段,獨立寫成一個副程式。以便常常呼叫,可讓程式”可讀性”提升。
Sub List_All() '====列出「目前」聊天室的所有談話內容====
Dim chatroom As New StringBuilder
For i = 15 To 1 Step -1
chatroom.Append(Application("A" & i).ToString)
Next

Label1.Text = chatroom.ToString
End Sub

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

......................講得夠多了,有需要的話,買我的書吧~

如何購買NB?如何購買Notebook?如何購買筆記本電腦?

看了董大偉老師的一篇文章,http://studyhost.blogspot.com/2007/11/nb.html (關於NB執行速度的瓶頸 )
我也有所感觸。

小弟購買NB(Notebook,筆記本電腦)的日子不算早,大約在2001年初就成為NB一族。
以後就沒再使用桌上型電腦(PC / Desktop)來工作了。
對我來說,桌上型電腦PC,只是用來作備份而已。

---------------------------------------------------------------------------------
我用過的NB規格如下:

2001 Toshiba Satellite 4020,$四萬六。
硬體:Celeron-500MHz-Mobile + 196MB RAM + 6GB HDD+獨立顯卡 Trident 8MB + 12" TFT
軟體:Win2000 Pro + VS.NET 2003 + SQL 2000

2003 ECS精英電腦 G550,$三萬四。
硬體:Pentium 4 Mobile-1.7G + 512MB RAM + 20GB HDD + 內建顯示卡,SIS晶片 + 15" TFT
軟體:Win2003 + VS.NET 2003 + SQL 2000 + VB 6.0 + MS Biztalk Server

2005 Acer宏碁電腦,$三萬六。
硬體:Intel Dothan 1.73G + 1GB RAM + 60GB HDD + ATI X700獨立顯卡 + 15.4"寬螢幕
軟體:Win2003 + VS 2005 + SQL 2005

(理論上來說,依照小弟喜新厭舊的速度,2007年應該買新的NB,但因為孩子出生,所以節省一點 ^_^)

另外,公司還發過兩台NB給我用,都是超薄機種。
1. Acer Travelmate 3xx系列,不錯用。
2. Toshiba R100,當年最輕薄的機種,超貴(七八萬才買得到)!但超難用!
1.8"硬碟(可能轉速很慢吧?3600RPM嗎?)慢得像烏龜在爬,連我太太用起來都會抱怨。
沒辦法,為了短小輕薄,一定要犧牲一些效能。

這兩台NB,我不愛用,因為螢幕不夠大,寫程式很痛苦,都放在家裡養驢子(哈!沒關過機,每台都操足兩年,也沒當過)
後來換工作以後,公司配的是 Lenovo R60。也很好用,但可惜小弟胃口被養大了。
非得用 "寬螢幕" 不可。

---------------------------------------------------------------------------------
NB取代PC的日子,早就來了。不然我們公司也不會這麼賺錢,對吧?
不光是NB,包含大部分的電腦。 採購時,我也有些建議~~

除非您是 專業繪圖人員、電動玩具的熱愛者、專門跑數學計算、大量轉檔(影音檔)。

除了以上四者之外,根本不需要多快的CPU!
一般人,CPU買得越快,浪費越多錢!(CPU跌價很兇,買越新的款式、買越早,損失越多)

現在的CPU,就算是最便宜的款式,都足夠80%的使用了。
如果您不是上述的四大族群,根本不需要買最新款的CPU。

最有效的投資,應該是:

1.硬碟HDD。
7200 RPM(轉速),絕對是第一投資項目。
硬碟轉速跟電腦無關,不可能裝不上。裝上就能用!
轉速越快,電腦的 "整體"效能越好。
小弟肖想一台 7200 RPM/16MB Cache的 2.5"硬碟已經很久,但當初來不及買,台灣就缺貨了。
如果真的買不到7200RPM的硬碟,那第二順位就是買5400RPM 16MB Cache的硬碟(小弟現役機種)
目前SATA規格的2.5"硬碟,7200轉/16MB的機種很多,又便宜。不買實在可惜。
IDE規格的,就算了,別指望啦~

2. RAM
記憶體越多越好。裝了 Windows VISTA,2GB算是基本。
除非跟我一樣,會調整作業系統,會把不必要的服務刪除,不然的話,微軟的作業系統真的很浪費資源。
因此,小弟偏愛 Windows 2003(公司訂閱MSDN,所以可以合法使用)。
比起XP與Vista,Windows 2003 Server太棒了!不需要的東西,都不用裝,相容性很好,幾乎沒有軟體不能用。
開關機速度快,畫面美觀(跟XP一樣,但小弟從來不開,特效與外觀只是浪費電腦資源)
小弟使用 Win2003 + VS 2005 + SQL 2005來開發程式,電腦1GB就很順暢了。
可惜,小弟想不開,裝了 Vista以後,必須花錢消災,2GB才能伺候 Vista這老爺。而且VISTA很多服務無法手動關閉之,只能眼睜睜看她浪費資源,還有一堆軟體都不相容。
.............自此以後,小弟就很喜歡看「追殺比爾」這部電影了。
Windows Vista減少不必要的服務、最佳化(優化) 請參考這篇文章
http://www.cctips.com/show.aspx?id=130&cid=7

3.獨立顯示卡
我覺得可有可無ㄟ。因為我寫程式,用到的機會不多。
但因為現在價格降得很低,所以我還是建議「有獨立顯卡」會比較好。
這順位我擺在第三名。

4. CPU.......夠用就好,不要浪費錢。有雙核心即可!絕對夠用了~

其實這些答案,我在 Yahoo知識+至少回答過一百遍。
但太可惜了,大部分的人都不懂。

今天突然想起,又寫了一次
---------------------------------------------------------------------------------

如果是「品牌」呢?

嗯!小弟嘗過 Toshiba的鮮美滋味後,一輩子都忘不了。
但很可惜,生活經濟壓力大,再也買不起了。

後來用過 Acer(宏碁)以後,覺得他的C/P值最高。俗又大碗。
相同的款式,Acer就是比較便宜。

但很可惜,台灣地區的用戶,卻偏愛ASUS(華碩),我倒是有慘痛經驗。幫人買過兩台,都是一過保固期就死蹺翹,又沒料修。從此敬謝不敏。
但那兩位用戶,果然是愛台灣的死忠支持者,第二台還是買ASUS。(沒辦法,誰叫ASUS曾是台灣股王。就跟 Toyota汽車一樣,死忠者就是多。)

有位朋友在電腦商場販售NB,告訴我一些秘辛,但我不敢講。ASUS在台灣賣得好,果然市場策略是厲害。

---------------------------------------------------------------------------------
以價格來看。

除非您是上述四大族群(有特殊需求,所以必須花大錢),
否則的話,依照2007下半年~2008上半年的市場行情看來
我會建議各位,兩萬五買機身,剩下的兩千元,多買RAM,而且更換7200 RPM硬碟
這樣的NB,"整體"的使用感覺,絕對比三萬的機種要"順暢"。

..........把錢花在刀口上,才是高手,對吧?


下面這篇文章不錯,這位網友買到便宜又大碗的NB,跟我的採購概念差不多。
請參考看看:Mobile01 冷飯熱炒~2.5萬以下的獨顯好選擇HP V3602(含改XP過程)

2008年4月13日 星期日

什麼是MVP? What's MVP?微軟最有價值專家?


我是2008月底,發現微軟網站上的公告,就寫了報名表參加。

包含中英文履歷,但我交出去時已經遲了一天。也不知道對方(台灣微軟)有沒有收到?


我只知道MVP的審查至少有兩關,第一要通過台灣微軟的審核,然後才會到美國微軟作評審。




過了一個多月,我也淡忘了此事。

有一天(2008/4/7)早上突然接到手機,對方說是DHL,要寄一份美國來的包裹給我。

我心想「靠!詐騙集團又有新花招?」 Orz




但因為對方說這份包裹不用付錢,我才想到「可能」是美國的微軟總部寄來的東西

找了一下其他的信箱(我個人有五六個信箱,常用的只有兩個)....

Bingo!! 2008/4/1就有信件通知我獲獎!


我心想「四月一日,不是愚人節嗎?」 Orz (x 2)


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

不論如何,我晚上回家就看見MVP的包裹了,心裡好興奮。

我太太還問我說:「你在網路上又買了什麼?從美國買了什麼啊?」 Orz (x 3)



先來看看包裝內容吧~






有一份得獎證書,一張卡片,還有一盒禮物(畫面中央的銀色包裝)


這個獎品看起來不錯,光是左上方的 PCMCIA滑鼠,定價就要89.99美金(約台幣兩千七!)
還有藍牙立體聲耳機與一個USB的加密設備。這盒禮物,我預計要台幣六千元左右。


還有一個小胸章!


很抱歉,我不想讓真名曝光,所以修改了照片。但證書上的名字是英文姓名。
========================================================


另外,微軟還給每一位MVP,一百五十美元(約台幣4500),可以到美國微軟網站購物,貨運費由他們支出(免費送到府上啦!)

當然,這份榮譽是無價的,不過上述的兩種獎品與獎金,合起來大概也有一萬元台幣了。

另外還送一年份的MSDN,真棒!