2011年8月31日 星期三

同學們看過來哦,徵 ASP.NET 駐點程式設計師一名

同學們,目前學校有一個外部專案要徵求一名駐點的程式設計師,詳細內容如下說明,有興趣的同學再跟我聯絡囉。

工作地點:致理技術學院
上班時間:依學校日間部坐息時間
工作福利:月薪兩萬三,享勞健保、年終獎金、激勵獎金
專業需求:
     1. 懂 ASP.NET (C# 尤佳)
     2. 懂 MS-SQL
     3. 會使用 Visual Studio

沒了,就這樣,條件算是很寬鬆,所以如果你對於程式設計工作有興趣,歡迎來應徵這個職缺。

我的聯絡方式是 johnnyfang.tw @ gmail.com

2011年6月15日 星期三

jQuery API Cheat Sheet

上星期五在課堂上, 我有秀一個 jQuery 的語法查詢網站給幾個同學看, 它的網址是

http://www.futurecolors.ru/jquery/

這是一個還蠻實用的網站, 整理的比 jQuery 的官網要容易閱讀, 而且網站作者會跟著 jQuery 的版本隨時做更新, 大家用 jQuery 的撰寫 Javascript 的時候可以拿來當工具,

不過曾經遇過幾次這個網站上不去的狀況, 所以如果你經常需要上來查資料, 我建議你可以像我一樣, 直接將這個頁面另存到自己的電腦上, 或是下載它的 PNG 或是 PDF 格式的文件, 另存頁面的好處是可以直接點它上頭的連結就連到官網了, 所以各位自己看看哪種方式對你比較方便囉,

以前我常用的查詢工具還有 Visual jQuery, 不過後來這個網站實好實壞, 而且只更新到 jQuery 1.3 版就沒有再更新了, 但是如果你現在是要入門, 它還是一個很不錯的分類查詢工具

Visual jQuery

官網 (已損壞) : http://www.visualjquery.com/
jQuery 官網備份版 (僅更新到 1.3) : http://api.jquery.com/visual/

2011年6月13日 星期一

ASP.NET :: 範例程式(八)

諸位鄉民們

一星期一次的範例程式又來啦, 難得我星期一一早就上傳到部落格, 大家要乖乖下載回去練習唷,

另外啊, 因為上星期有同學問到要怎麼做選單的開合效果, 所以在課堂上我們寫了一支小小的 jQuery 選單開合範例, 檔案跟這次的範例程式打包在一起, 路徑是 /MenuSample/Default2.aspx,

鄉民小華 call in 進來問到, 有沒有辨法一開始就展開選單的某一個子選單, 當然是可以, 在同一支範例程式也有 demo, 這時候測試的網址再帶上參數 option 就可以啦, 例如 http://localhost/menusample/default2.aspx?option=1, option=1 表示一進到網頁就先展開第一個項目的子選單, 如果是 option=2 就表示展開第二個項目的子選單, 以此類推囉,

如果有什麼問題都歡迎大家私信一起討論啦, 資料庫的部份, 因為結構沒有異動, 所以大家繼續使用上個星期的版本就可以囉,

這學期很高興能夠把一些技術分享給大家, 希望對你們不管在專題或是將來工作上都有一些幫助, 部落格這邊有時間的話, 我也會持續更新一些技術的資訊, 大家要記得常常回來看看啊。

範例程式 (下載)

2011年6月7日 星期二

ASP.NET :: 範例程式(七)

因為最近忙著在協辦一個微軟的專案管理活動,所以更新速度上比較慢一些,再請大家從下列網址下載新的範例程式啦,有問題再請大家 mail 讓我知道,

什麼!不知道我的 email!!都沒做練習厚,科科,

範例程式 (下載)

2011年5月20日 星期五

ASP.NET :: 範例程式(六)

同學們,新的範例程式來囉,這一次增加了會員登入登出的功能的範例,可以點這裡 下載

這次範例程式主要的重點是以下幾個部份

    • 實作會員登入、登出的方式 (以Session為例)
    • 如何使用 Master Page,來簡化需要不斷重覆執行的程式碼
    • 如何使用 User Control,讓程式碼可以容易被切割、易於維護
    • 如何將程式碼模組化

不過範例裡頭我還沒有加上註解 (金歹勢),我再儘快找時間將程式的說明補進去。

2011/05/23 補充說明
有同學反應範例程式下載之後,執行會發生錯誤,這是因為資料庫連線預設是本機的 MyWork 資料庫,想當然在各位本機上都沒有這個資料庫,目前解決的方式有兩個:

1. 下載學長版資料庫 (點這裡下載),下載之後將 MyWork.mdf 附加到你的本機資料庫中。
    (記得要修改 web.config 裡頭 connectionString 的連線帳號及密碼哦)
2. 改為你自己設計的會員資料庫,採用這個方式的話,要改的地方有兩個,
    a. 修改 web.config 裡的 connectionString,將它改為連線到你的資料庫
    b. 修改 /app_code/user.vb 裡的函數,修正為你所建立的欄位名稱

如果各位在操作有問題的話,再隨時發信提問哦,我的 Email 在範例裡頭有寫到,加油啦。

2011年5月16日 星期一

說好的「狀態管理變數」比較表

狀態

儲存位置

生命週期

可視範圍

Session

伺服器

只要符合下列任一個條件,Session的生命週期就會結束
1. 使用者在最後一次操作後,超過網站預設的逾期時間到期。
2. 使用者關閉所有瀏覽器視窗
同一個使用者的連線下的所以網頁

Cookie

用戶端

1. 時效逾期
2. 程式或使用者刪除Cookie
同一個網域下的所有網頁

Application

伺服器

網站最後一個瀏覽的使用者離開後,在預定的時間後到期  

ViewState

用戶端

頁面未跳轉到其它頁面之前 同一網頁下的所有程式碼

一、Session
Session 是一種網站使用者之間彼此不共享的空間,所以它很適合用來保存使用者個人的狀態,例如是否已經登入網站、購物車清單 ... 等等,

但是因為 Session 是保存在伺服器的記憶體中,所以除了 Session 逾期的時候,Session 內容會消失之外,像是伺服器重置、網站重置,都會讓 Session 的內容被清除掉。

適合的時機 : 登入狀態、購物車清單

二、Cookie
Cookie 跟 Session 在空間的操作上相同,一樣是網站使用者之間彼此不共享的空間,不同的則是,Session 的資料是保存在網站伺服器,而 Cookie 則是存放在使用者端的瀏覽器中 (不同的瀏覽器之間,Cookie 內容也是不共用),

雖然 Cookie 看起來也是私密的資料空間,但是因為內容是保存在使用者端,相對地就很有可能被使用者電腦上的惡意程式盜用。

適合的時機 : 登入狀態、購物車清單

三、Application
Application 是一塊配置在伺服器上公開的記憶體空間,因為它是公開的空間,所以非常適合用來存放一些使用者共享的資料,例如目前線上人數的計數器,公開的文章內容、公開的商品內容等等,

適合的時機 : 保留文章內容、商品內容

四、ViewState
有別於前面三種狀態管理技術,ViewState 是 ASP.NET 特有的狀態機制,它的內容被保存在獨立的頁面中,當使用者瀏覽帶有 ViewState 變數的頁面時,ViewState 的資料會被夾帶在頁面裡頭,一起被下載到瀏覽器,

ViewState 因為不會佔用伺服器的記憶體,而且只有當下這個頁面能夠存取,所以很適合用來存放一些臨時性、只有這個頁面會用到的資料,

但是要注意的是,雖然 ViewState 不會佔用記憶體,但是因為它每次都會跟著頁面被下載到瀏覽器,所以它反而會佔用網站的頻寬,而且由於它的內容會經過 Base64 編碼 (編碼與加密是不同的作業),所以內容會比原本的資料量還大,

另外,初學者很容易誤解 ViewState 的內容是經過加密處理的,其實不是,就像上一段寫的,它只是經過 Base64 編碼而已,Base64 編碼後的內容是任何人都可以反解回來的。

適合的時機 : 單一頁面的臨時性資料

2011年4月1日 星期五

閒聊 : MySQL 官網被入侵了

前幾天資安界最熱門的新聞,莫過於 PHP 開發人員愛用的資料庫系統 'MySQL’ 的官網被入侵了,而且駭客入侵的手法還是炒十幾年前的老梗,只用了 SQL Injection (隱碼攻擊) 就輕鬆帶走 MySQL 相關主管的個人帳號、密碼,

當然啦,MySQL 官網被入侵並不等於 MySQL 產品不安全,因為那完全是兩碼子事,這次入侵事件會造成什麼影嚮,主要還是要看看官網提供了哪些功能給這些主管,以及官網存放資料的資料庫是不是也有存放他們內部系統的其它資料,

其實了解 SQL Injection 的人都知道,這完全是屬於人為造成的漏洞,不是請 MIS 安裝什麼伺服器修正檔就可以解決的問題,如果開發人員就是偷懶、不長進,那這個梗絕對可以繼續讓駭客玩得很開心,

這學期在後期我們也有安排「安全性網站程式設計」的課程內容,除了會談到這次肇事的 SQL Injection 之外,還會跟同學們談到什麼是 Cross-site scription (XSS, 跨網站指令碼) 攻擊,所以如果你(妳)未來想從事網站系統的開發工作,這肯定是一堂不容各位錯過的課程,這堂課的時間會是什麼時候呢?這得讓我想想 ((((=_=

不過無論如何,前面的基礎課程各位一定還是要來上的啦,否則了解概念之後,你(妳)還是無法實作抵禦的機制。

(NEW/HOT) SQL Injection 近期災情新聞匯整 :
Mass SQL Injection來襲,百萬網址受駭 (閱讀)
Barracuda遭SQL Injection攻擊 員工客戶資料都失竊 (閱讀)
MySQL官網遭SQL Injection攻擊 管理員帳密被破解 (閱讀)
驚見 SQL Injection 攻擊大海嘯 – LizaMoon (閱讀)

2011年3月25日 星期五

ASP.NET :: 範例程式(三)

哈囉,各位鄉民同學們,看完表演上完課之後回去有沒有稍微自己練習一下啊,還有不理解的地方也沒關係,最新出爐的範例程式來啦,請大家下載回去玩玩看,

就像我們在課堂上跟各位介紹的一樣,內容其實都很簡單,但是都是目前網站上很常使用的觀念跟功能,如果可以上手的話,相信對各位將來在網站開發的幫助一定很大,

如果你/妳對於到這星期為止的課程覺得還不能掌握,其實不用太緊張,網頁程式設計原本要懂的東西就不少,現在前半段只是有點讓大家先初步認識 "哦~~原來ASP.NET可以做到這些功能啊" 的意味,後半段才會開始帶大家逐漸進入實戰開發,

 

範例下載 : 點 這裡

2011年3月17日 星期四

ASP.NET :: 範例程式(二)

將將將,新的範例程式出來囉,因為上回 demo 給各位看的那個網站啊,這個星期五要上第二階段的版本,所以有小小的忙到一下,拖到現在真是非常的歹勢,

新的範例放在 /Class_3 這個目錄裡頭,主要是 MessageBoard_Network.aspx 及 MessageBoard_Network.aspx.vb 這 MessageBoard_Network.aspx.vb 這兩支,裡頭也按例儘量寫了很多的說明來協助各位理解程式碼,

另外,最後我們有出了一個小小的挑戰,各位回去有沒有人實作出來呢?不管有沒有做出來,都可以去參考 MessageBoard_Network_Pro.aspx 這支範例哦,希望對程式有興趣的同學們,技巧都能愈來愈精進啦,

範例程式請點 這裡 下載,這一版也包含了範例程式(一),所以上回沒有下載的同學,這次也只有下載這個版本就可以囉。

2011.3.18
可能因為 MSN 系統異動的關係,原本的下載連結發生問題,現在問題已經修正囉,之前不能下載的同學再麻煩試試看,有任何問題再私信跟我講一聲囉。

2011年3月8日 星期二

ASP.NET :: 範例程式

親愛的鄉民們 ...

這個星期的單機留言版範例程式已經上架啦,請點 這裡 下載,解壓縮之後參考 /Class2/MessageBoard_Client.aspx 及 /Class2/MessageBoard_Client.aspx.vb,

程式非常簡單,執行後的結果如圖,大家先自己試著實作看看,有什麼問題可以隨時私信給我囉
2011-03-08_122253

2011年2月24日 星期四

ASP.NET :: 開發相關資源

同學們,

我將一些開發時會使用到的資源整理在這篇文章,節省大家四處去找的時間,

ASP.NET 開發工具
Visual Studio 2008 Express
http://www.microsoft.com/express/Downloads/
進入網頁的時候,預設是下載 Visual Studio 2010 Express,因為 2008 跟 2010 在介面上差異性不會很多 (但是 2010 的配色變得很醜 ... XD),所以不在意的話可以下載 2010 的版本,但是如果你想使用跟學校一樣的環境,那麼請改選 Visual Studio 2008 Express (如圖一),

確定好要下載 2008 或 2010 之後,再選擇 Visual Web Developer Express 項目做下載及安裝,如果你對其它工具也有興趣的話,也可以直接選 All – Offline Install ISO image file 這個項目,裡頭就包含了所有的 Express 工具,當然,都是免費的。

image 
   圖一. Visual Studio Express 官方下載頁面

 

SQL Server Express
http://www.microsoft.com/express/Downloads/
資料庫的下載頁面其實跟前面是一樣的,只是改選中間的 SQL Server 2008 R2 Epress,但是請同學們注意一下,它有分為 32/64 位元兩個版本,請依據你的作業系統選擇正確的版本。

SQL Server 2008 Management Studio Express
http://www.microsoft.com/downloads/details.aspx?familyid=08E52AC2-1D62-45F6-9A4A-4B76A8564A2B&displaylang=zh-tw
這是 SQL Server Express 的管理工具,因為 SQL Server Express 並不會同時安裝管理工具,所以請同學再單獨下載安裝。

原始碼管理
CollabNet Subversion
http://cid-e61a78088d5b3420.office.live.com/self.aspx/ASP.NET/CollabNetSubversion-client-1.6.15-1.win32.exe

TortoiseSVN
http://tortoisesvn.net/downloads.html

AnkhSVN
http://ankhsvn.open.collab.net/

ASP.NET 課程的同學看這邊

嗨嗨,同學們,

這學期的教課書用的是旗標出版的「新觀念 ASP.NET 3.5 網頁程式設計」(施威銘研究室 著),選這本書的原因,是因為它比較不會像一般坊間的入門書一樣,光是講基本的控制項就佔了大半的篇幅,它從第七章到第十九章,都是比較實務上可以應用到的觀念或技術,算是很實在的一本入門書,所以推薦這本書給各位同學,

但是上課不是一定非得要用這本書,如果你手邊已經有內容是講 ASP.NET 2.0 以上的書籍(最好是 ASP.NET 3.5),就不一定要再買,

另外,有一些內容在課堂上不會講,例如

  • 基本語法 : 變數宣告、迴圈控制、條件判斷 ...
  • 繫結類的控制項 : GridView、DetailView ...

基本語法應該就不用再說明為什麼不講了吧,不過我們會在課程中讓同學自然而然複習這些語法,所以現在對語法還不熟的同學真的免驚啦,但是請務必跟上課堂中的小練習,

至於 GridView 這些控制項其實是最受初學者好評的 ASP.NET 功能,因為它只要從工具箱拖拖拉拉、設定一下資料集,連一行程式碼都不需要寫,就可以完成一支對初算者來說不算簡單的清單程式,甚至還可以提供線上資料編輯功能,不禁讓人大讚微軟真是佛心來著,

咦?那這麼好用的東西為什麼不講捏?原因有四點;

第一是時間問題,GridView 是相對封閉的物件,要做到符合客戶要求的功能經常得花更多精神去了解 GridView 提供了哪些功能,網頁程式設計還有好多有趣的技術可以講,我們不要浪費時間在少數控制項上;

第二點,GridView 其實是很肥的,不管是佔用的記憶體或是傳輸的流量,它可能會造成你日後程式的效能瓶頸;

第三點,沒辨法跟網頁設計師協同作業,這是我覺得很嚴重的問題,因為對網頁設計師而言,類似像 GridView 這種不是標準的 HTML 的複雜控制項物件,他們在 Dreamwaver 中根本看不到樣式,所以除非日後諸位只打算開發不怎麼重視視覺的系統(例如公司的內部系統),或是打定主意不跟網頁設計師合作,否則最好能免則免;

最後一點,這些我稱為懶人控制項的物件用多了只會降低你的技術力,如果只會用懶人控制項來開發網站,當客戶需求超出這些控制項的能力時,你的開發成本就會大幅提高(時間或是付出的人力),而且我相信會拖拉 GridView 的程式設計師太多了,你將會變成取代性很高的人力;

以上,待續

醬醬醬 ~~ 部落格正式開張啦

這裡將做為跟同學互動的空間,上課的相關資料有時間我都會儘量整理上來,讓同學們可以課前預習、課後複習,有事不能來聽課的人可以在家自己練習,

講課的內容會偏向實務實用為主,也會儘量讓課程豐富好用一點,同學們如果對某方面的內容想再多了解一些,也可以在這裡反映告訴我。