善用 HttpContext.Items 儲存短暫出現的資料

我們知道在 ASP.NET 的頁面中可以儲存資料的物件有好多個,有 Session 物件、Cache 物件、還可以在頁面中自己定義 Page 類別的欄位(Field)變數,但有個好用的物件鮮少有人知道,就是 HttpContext.Items,如果你希望在 HttpModule 與 HttpHandler 或 Page 的程式之間傳遞資料時,使用 HttpContext.Items 就太完美啦!

這個 HttpContext.Items 物件的生命週期很短,只會出現在這一個 HTTP Request 裡面而已,當頁面送給 User 之後,物件就會自動回收,所以如果僅僅是需要將在 HttpModule 中整理好的資料傳遞到頁面的話,就可以透過這個物件來做。

相關連結

 

  

此文章由 will 發表於 2008/2/29 上午 12:03:00

永久連結 | 評論 (0) | 此文章的RSSRSS comment feed |

分類: ASP.NET

標籤: , , ,

收藏:

保哥的軟體哲學

我本身帶領軟體開發團隊一段時間了,且近幾個月也在微軟技術社群討論區參與社群討論,偶爾會看到有人詢問一些軟體開發的觀念與學習的方法,我個人大致整理了一下這幾年來的心得,大略列出幾點跟大家分享:

保哥的軟體哲學(1)

在團隊中不一定要做老大,但有機會的話不要做老二,培養領導能力,學習如何建立團隊,這經驗不是每個人都有機會能得到的。 

保哥的軟體哲學(2)

培養負責任的態度,如果真的不適合寫軟體,也可以做一段時間再轉行,因為寫軟體可以培養你的邏輯思考能力。

保哥的軟體哲學(3)

有時間就多想:軟體只要規劃的好,可以節省10倍以上的開發時間。

沒時間就多做:連想的時間都沒有的話,就從寫 Code 的手感中尋找下一個靈感。

保哥的軟體哲學(4)

沒觀念就多看書,但有觀念者還是要多寫Code累積自信,寫軟體的自信是一行一行的 Code 累積起來的!

保哥的軟體哲學(5)

沒經驗就多做事、少抱怨,但有經驗者要少寫 Code 多思考 (但還是不能常抱怨)

// 做事 = 寫 Code

保哥的軟體哲學(6)

寫程式是很「個人」的事,寫程式的品質直接影響你的個人品牌,別讓負面情緒(抱怨,失望,討厭,灰心,逃避,拖延,...)影響你程式的品質。

保哥的軟體哲學(7)

寫程式是很「團隊」的事,團隊的紀律與規範非常重要,團隊成員有一致的流程與共通的習慣可以讓你避免陷入泥沼,也可以提升效率。

 

  

此文章由 will 發表於 2008/2/28 上午 12:01:00

永久連結 | 評論 (0) | 此文章的RSSRSS comment feed |

分類: 心得分享 | 團隊合作

標籤: , , ,

收藏:

善用 SQL Server 中的 CONVERT 函數處理日期字串

我之前一直認為 SQL Server 針對日期處理的函數不夠多(如果跟 MySQL 比較),尤其是處理日期欄位轉字串的時候,常常因為要輸出特定的格式而懊惱不已,常常一不小心就寫了一長串,很不易閱讀。

例如說初學者可能為了輸入一個 "2008-2-27" 的格式會這樣寫:

[code:tsql]

select convert(varchar(4),Year(getdate())) + '-' + convert(varchar(2), month(getdate()))+ '-' + convert(varchar(2), day(getdate()))

[/code]

但如過客戶要求 "2008-02-27" 這種格式呢?!我看會寫瘋掉了,你可能會這樣寫:

[code:tsql]

select
 convert(varchar(4),Year(getdate())) + '-' +
 CASE month(getdate())
 WHEN  1 THEN '0' + convert(varchar(2), month(getdate()))
 WHEN  2 THEN '0' + convert(varchar(2), month(getdate()))
 WHEN  3 THEN '0' + convert(varchar(2), month(getdate()))
 WHEN  4 THEN '0' + convert(varchar(2), month(getdate()))
 WHEN  5 THEN '0' + convert(varchar(2), month(getdate()))
 WHEN  6 THEN '0' + convert(varchar(2), month(getdate()))
 WHEN  7 THEN '0' + convert(varchar(2), month(getdate()))
 WHEN  8 THEN '0' + convert(varchar(2), month(getdate()))
 WHEN  9 THEN '0' + convert(varchar(2), month(getdate()))
 ELSE convert(varchar(2), month(getdate())) END +
  '-' +
 CASE day(getdate())
 WHEN  1 THEN '0' + convert(varchar(2), day(getdate()))
 WHEN  2 THEN '0' + convert(varchar(2), day(getdate()))
 WHEN  3 THEN '0' + convert(varchar(2), day(getdate()))
 WHEN  4 THEN '0' + convert(varchar(2), day(getdate()))
 WHEN  5 THEN '0' + convert(varchar(2), day(getdate()))
 WHEN  6 THEN '0' + convert(varchar(2), day(getdate()))
 WHEN  7 THEN '0' + convert(varchar(2), day(getdate()))
 WHEN  8 THEN '0' + convert(varchar(2), day(getdate()))
 WHEN  9 THEN '0' + convert(varchar(2), day(getdate()))
 ELSE convert(varchar(2), day(getdate())) END

[/code]

別笑!我真的看過有人這樣寫!呵呵~

其實 SQL Server 早就有個 CONVERT 函數可以幫我們做這件事!如果你要輸出 2008-02-27 這種日期格式的字串,可以這樣寫: 

[code:tsql]

SELECT CONVERT(char(10), getdate(), 120)

[/code]

是不是短很多呢? ^__^

底下列出一些我常用的語法:

  • 輸出格式:2008-02-27 00:25:13

    SELECT CONVERT(char(19), getdate(), 120)

  • 輸出格式:2008-02-27

    SELECT CONVERT(char(10), getdate(), 20)

     
  • 輸出格式:2008.02.27

    SELECT CONVERT(char(10), getdate(), 102)

  • 輸出格式:08.02.27

    SELECT CONVERT(char(8), getdate(), 2)

  • 輸出格式:2008/02/27

    SELECT CONVERT(char(10), getdate(), 111)

  • 輸出格式:08/02/27

    SELECT CONVERT(char(8), getdate(), 11)

  • 輸出格式:20080227

    SELECT CONVERT(char(8), getdate(), 112)

  • 輸出格式:080227

    SELECT CONVERT(char(6), getdate(), 12)

想查詢完整的列表與說明可以到 MSDN 的 Transact-SQL Reference 去查詢 CAST and CONVERT 的詳細說明。

相關連結

 

  

此文章由 will 發表於 2008/2/27 上午 12:25:00

永久連結 | 評論 (1) | 此文章的RSSRSS comment feed |

分類: SQL Server

標籤: , , ,

收藏:

介紹幾套好用的檔案上傳元件

檔案上傳幾乎每個專案都用的到,但 ASP.NET 2.0 的 FileUpload 控制項有點太陽春了,目前我從網路上找到的 File Upload 元件大多是透過 JavaScript + IFRAME 上傳,或用 JavaScript + Flash 上傳比較好用,今天介紹幾款不錯的。

  1. SWFUpload

    採用 JavaScript + Flash 進行上傳動作,功能強大、一應俱全,雖然每有 ASP.NET 現成的控制項可用,但是有提供使用 ASP.NET 的範例可以參考,是個值得推薦使用的套件!

    其功能有:

    - 可一次上傳多個檔案。
    - 支援 JavaScript 的 Callback 事件。
    - 可在檔案開始上傳前取得部分檔案資訊。
    - 可以透過 XHTML 與 CSS 客製化上傳的元件。
    - 可得知檔案上傳進度。
    - 上傳檔案不需要 PostBack,可以等上傳檔案完成後再 PostBack 出去。
    - 只要是 Flash 支援的 Browser 都可以用。
    - 就算 Flash 或 JavaScript 都無效的時候,也可以正常上傳。
    - 可以在「檔案上傳之前」就先判斷檔案大小,超過限制可以不進行上傳。
    - 可以在瀏覽檔案時篩選特定的檔案類型
    - 支援上傳檔案佇列功能,可以在還沒上傳檔案之前將新增要上傳的檔案或移除要上傳的檔案。

  2. FancyUpload

    這個套件就像他的名字一樣很花俏(Fancy),看過他的 Demo 就是到他的威力了。

    其功能有:

    - 可一次上傳多個檔案。
    - 可以在瀏覽檔案時篩選特定的檔案類型
    - 支援 JavaScript 的 Callback 事件。
    - 可在檔案開始上傳前取得部分檔案資訊。
    - 可以在「檔案上傳之前」就先判斷檔案大小,超過限制可以不進行上傳,也可限制上傳檔案數的上限。
    - 只要是支援 Flash 8 的 Browser 都可以用。
    - 支援上傳檔案佇列功能,可以在還沒上傳檔案之前將新增要上傳的檔案或移除要上傳的檔案。
    - 所有功能都可以設定,文件
    - 可得知檔案上傳進度。
    - 上傳檔案不需要 PostBack,可以等上傳檔案完成後再 PostBack 出去。
    - 就算 Flash 或 JavaScript 都無效的時候,也可以正常上傳。

  3. AjaxFileUpload

    這是一個 jQuery Plugin,也算是不錯用,只是功能沒像上面兩個那麼多功能,因為這套是用 JavaScript + IFRAME 的技巧實做的。

    如果你想找其他 jQuery Plugins 可以來這裡:http://plugins.jquery.com/

相關網址

 

  

此文章由 will 發表於 2008/2/26 上午 12:01:00

永久連結 | 評論 (9) | 此文章的RSSRSS comment feed |

分類: ASP.NET | JavaScript | Web

標籤: , , , , ,

收藏:

介紹幾套好用的線上 HTML 編輯器

線上 HTML 編輯器真的蠻重要的,尤其是在開發內容管理系統的時候,許多不熟悉 HTML 語法的客戶都可以用線上 HTML 編輯器來管理網站內容,以下我將介紹我比較常用且免費的幾套線上 HTML 編輯器。

  1. FCKeditor - The text editor for Internet

    這算是我的最愛了,瀏覽器相容性高、功能強大又支援寫好的 ASP.NET 2.0 伺服器控制項,且也支援檔案瀏覽器(File Browser)可以在線上管理網頁中用到的圖片或附件。最重要的:所有功能都免費。

    FCKeditor - The text editor for Internet

  2. FreeTextBox

    FreeTextBox 是 ASP.NET 界中最多人用的 HTML 編輯器(他網站說的),跟 FCKeditor 一樣也同時支援 IE, Firefox 且也跨平台。有分免費版、專業版(US$ 49.99)、散佈授權版(US$ 199,99)但即便是專業版好像也不支援檔案瀏覽器(File Browser),不容易管理頁面中的圖片。

    FreeTextBox 圖示

  3. TinyMCE Javascript Content Editor by Moxiecode Systems AB

    這套功能算是很強大,但是強大的功能都要錢。

    TinyMCE Javascript Content Editor by Moxiecode Systems AB 圖示

 

  

此文章由 will 發表於 2008/2/25 上午 12:05:00

永久連結 | 評論 (8) | 此文章的RSSRSS comment feed |

分類: ASP.NET | JavaScript | 介紹好用工具

標籤: , , , ,

收藏: