2012年7月30日 星期一

System.IO.StreamReader/StreamWriter 和 System.IO.File.ReadAllText/WriteAllText

我在「利用StreamWriter 資料流I/O 寫成檔案」這篇文章寫了一個自已學習的歷程
主題雖然是使用System.IO類別下的方法,但是具體而微,System.IO命名空間下,除了有提供讀寫檔案和資料流的類別外,就是基本檔案、目錄管理的類別。方法都是大同小異…

這次的程式碼範例,我就特別針對「將內容寫進新建的文字檔」「開啟檔案並讀取內容」「將內容附加到既有的文字檔」這三個功能,分別寫了System.IO.Stream 和System.IO.File 二種版本,用這二種類別都可以完成,邏輯上是一樣的,只不過要使用自已類別下的Method方法來達成目的而已。

頁面上的佈置很簡單,一個TextBox、三顆功能按鈕

以下提供File和Stream二種類別的寫法

創意和創新…對我來說就好比「發現和發明…」

創意和創新…
對我來說就好比「發現和發明…」

創意,就是腦力激盪後的idea
都是把idea變的具體可行

週日看到一個電視節目
裡頭的表演者和投影畫面互動
(如果你有興趣看完全部,請點選此處)
image

恰巧的,這個橋段我很久以前在youtube上看過人家分享
恰巧的,我還把這個橋段放在我的「創意」播放清單裡



好的,很明顯的,日本節目中的這個表演者把投影互動搞的更淋漓盡致
我想台灣節目的這個表演者應該也看過類似的「創意」表演吧

所以我們要說這個台灣表演者所演出的內容是抄襲嗎?
(如果表演內容精采度超過日本表演者的話,也許你會說他不是抄襲吧?)

2012年7月26日 星期四

我看不懂MSDN上的火星文???

寫程式的時候,我實在很難把Framework上所有的方法記得一清二楚,所以「現在」常常仰賴MSDN,以前為什麼不讀?
以前實在很難看得懂的原因,在於當時的文章是用「機器翻譯」的,所以明明寫的就是漢字,但就是牛頭不對馬嘴,不該翻的一直翻,該翻的又不翻好來,一整個就是火星文。那時的MSDN對我來說不過是「工具書」,既然MSDN工具書來自於火星,那麼參考坊間的工具書籍就好了,那個時候的坊間工具書比較實務點,看了直接就用得上了。
現在的MSDN好多了,我看了蠻多文章,都不再是機器翻譯,而是人工翻譯,不過才疏學淺,好多的程式基礎詞彙還是看不太懂,同一篇文章往往要看個四五回才能抓到一點重點…對我來說有時還是「火星文」。現在的MSDN對我而言是「學習書」,除了學習程式方法怎麼用,最重要的是看看說明來學習程式的基礎,看看範例來學習人家的邏輯。相較於MSDN,現在坊間的工具書倒是一窩蜂的抄MSDN的資料,感覺就是沒有誠意,不過世態炎涼,現代人閱讀習慣不同加上資訊分享媒介轉換,電腦書的銷售也難倖免,現在能拿來當學習書的真的比較少了。
所以讀MSDN是一件很重要的事情,它不只是工具,是一個學習 .NET 程式的必經之路,雖然我一開始閱讀MSDN的陣痛期很長 ( 我這一個月算是鎮日埋首在MSDN裡,每天的頭都很痛 ) 不過自已有感覺,慢慢的,不知道是自已離火星的距離比較近了還是怎樣,逐漸能熟悉這些火星文了。
閱讀MSDN這件事情,如果我能克服的話,我想誰會比DNOWBA我還豬腦,只要有毅力,一定能克服閱讀火星文的障礙。今個兒就分享一下我在MSDN的取經之路。
image

2012年7月25日 星期三

利用StreamWriter 資料流I/O 寫成檔案

資料庫是web程式設計上的重點之一,但有時候一些小資料,或是不需統計、不需長期存放的資料,也許就不需要用到資料庫,底下這個範例,是一個把報表寫成文字檔的範例,和我之前寫的將GridView裡資料匯出成Excel檔可以相互比較,這篇是把文字寫成txt檔案。

image

程式的demo頁(AspNet49.aspx)我就不放上了,畢竟streamwriter都是會動用到server的資源的
dnowba 的免費空間可能經不起大家的考驗
僅提供程式碼

因為比較基礎,所以也就乾脆把從無到有的歷程寫下來,我想這也是一般程式設計的歷程,整個精神就是「先求有再求好」,最後達到使用者挑不出骨頭的最高境界…

廢話不多說,我設計分別用四個Button來做歷程分界…每一歷程就多講一些。

Me.Button1.Text = "將文字寫入txt檔案"
Me.Button2.Text = "將文字寫入doc檔案,寫入前檢查檔名是否存在"
Me.Button3.Text = "依日期將文字寫入個別的檔案"
Me.Button4.Text = "依日期將文字寫入個別的檔案,並跳出下載視窗"

就請大家慢慢看吧…

2012年7月24日 星期二

LINQ TO Object 關於字串查詢的幾個範例

LINQ TO Objcect ,字串string 這個類別是實作了泛型的 IEnumerable<(Of <(T>)>)介面,所以也可以用LINQ來做逐個「字符」的查詢…

◎以上程式範例LINQ3.aspx,如在頁框下不能操作,請開新視窗操作

LINQ 的隱含型別、延後執行

這篇只是從實作使用LINQ查詢陣列(Array)中的偶數有哪些 (LINQ TO Object),過程中體驗一下LINQ的二個特點:「隱匿型別」和「延後執行」

◎以上程式範例LINQ2.aspx,如在頁框下不能操作,請開新視窗操作

2012年7月19日 星期四

LINQ三部曲…用基本查詢三步驟查詢三大資料來源

LINQ「三」部曲:
基本的查詢只有「三」步驟
查詢的物件卻有「三」大塊
這次的實作測試讓我深深的迷上了LINQ
以下是DEMO結果

◎以上程式範例LINQ1.aspx,如在頁框下不能操作,請開新視窗操作

2012年7月18日 星期三

第一次認識 LINQ

沒錯,幾天前,是我第一次認識LINQ,第一次看到這個詞是幾年前的事情,那時以為是有人想仿效 Maggie Q 取的名字,LinQ…請原諒我的無知。

這半個月每天都為了ASP.NET苦讀MSDN文件,期間一直很想碰碰 LINQ,但知道一碰又是萬丈深淵,就沉住氣,前幾天ASP.NET總算到了自已滿意的進度,可以暫時換個口味,讀讀和資料庫有關的技術文章了。

我想是多年前的技術,這邊只是簡單的描述一下我這幾天所認識的LINQ,也是重點筆記了。

好了,底下這張圖就是我所知道的全部了,完全沒有技術面,是一個一個的框框…(強調,這是個人知道的全部,不是說LINQ沒有技術面)
image

當然,該讀的MSDN文章,什麼技術什麼優勢的,我想去官網看一下就知道了…但是我看完的第一個問題就是:

SQL SERVER很好用了,前端的開發平台也有了 ADO.NET ,ADO.NET 和 ASP.NET 中間又有個 DataSource 控制項讓我完美銜接,我還要一個新的資料庫語言幹什麼?

後來實作了一些範例後…我只能說我漸漸喜歡他了…雖然我不大了解她,至於實作了什麼內容可以讓我有想學的衝動,啊不就是那官網的範例,雖然「看」起來亂了一點,但「作」的時候會了解他編排的目的是什麼。以下就是我得的結論:


安裝 SQL Server 2008 的範例資料庫-AdventureWorks

請注意:是 SQL Server 2008 不是 SQL Server 2008 R2
因為要移轉一些資料,所以範例資料庫要重裝
沒想到事過境遷,人事全非啊

SQL Server 2000 用的範例還是NorthWind北風資料庫,還裝便便等你用
SQL Server 2005 用的範例就改AdventureWorks,要自已裝了
(哇哩,我都還沒看懂人家設計北風資料庫的精湛之處…)

SQL Server 2008 用的範例還是AdventureWorks,好險…
SQL Server 2008R2…出了AdventureWorks R2 版本的範例
(哇哩,我還沒看懂人家設計AdventureWorks的精湛之處…)

今個兒就打算到SQL Sever範例資料庫的提供網站下載重裝

不知道什麼時候的事…裡頭AdventureWorks  (SQL Server 2008版本) 的頁面,我找不到了,只有SQL Server 2012和SQL Server 2008R2)
image

SQL Server 2012…
(現在是怎樣…有人的SQL Sever是一直換一直換的嗎?換了SQL要不要Windows Server也要換啊?裁判…可以這樣嗎?)

現在趕緊做紀錄,然後把資料庫範例(version:Samples Refresh 4)給另外存在別的地方才是上上之策
含資料範例檔:AdventureWorks2008_SR4.exe  (備用連結)
只有資料表:SQL2008.AdventureWorksLT2008_Only_Database.zip (備用連結)
安裝完除了資料庫以外,還有附一個sample,預設位置在
C:\Program Files\Microsoft SQL Server\100\Tools\Samples
可以拿來參考使用
image

2012年7月16日 星期一

GridView和排序(sorting)有關的事件

在啟用GridView的編輯功能,如果也同時使用排序功能,當進入編輯模式底下,同時又換頁的話,那麼編輯的資料欄位就會跟著改變,之前對某列的修改資料就會消失,透過手動撰寫GridView的sorting事件可以不讓使用者在編輯模式下使用排序功能。另外也使用sorting的二個重要參數(SortExpression 和 SortDirection)提供排序資訊。

◎以上程式範例AspNet47.aspx,如在頁框下不能操作,請開新視窗操作

2012年7月15日 星期日

GridView和分頁(paging)有關的事件

分頁paging是大型控制項自帶的功能,但如果和編輯功能一起用的話,使用者若是在編輯模式底下切換頁面,正在編輯的資料也不會存回資料庫,所以設置PageIndexChanging 事件,如果在編輯模式下換頁會出現警告訊息並停止換頁,另外設計供使用者自訂的「分頁」模式、快速切換頁面的下拉式選單等。

◎以上程式範例AspNet46.aspx,如在頁框下不能操作,請開新視窗操作

自訂文字的資料格式(DataFormatSring)

這次的demo修改自GridView 批次刪除功能(複選多個資料列)_1所以畫面設定的部分在這邊不多敘述,這篇主要針對畫面上樣式做修改,做個紀錄

◎以上程式範例AspNet42_1.aspx,如在頁框下不能操作,請開新視窗操作
◎如果有問題歡迎您提出,dnowba很需要有人和我一起討論

2012年7月14日 星期六

自行撰寫GridView的RowCommand處理常式

目前沒想到什麼應用範例,所以學習一下MSDN現有的範本改寫一下,範本實作的是,把GridView的資料列「加入到ListBox」或「從ListBox移除」

◎以上程式範例AspNet45.aspx,如在頁框下不能操作,請開新視窗操作
◎如果有問題歡迎您提出,dnowba很需要有人和我一起討論

2012年7月13日 星期五

GridView中和「刪除」事件有關的事件常式

和刪除的事件常式有GridView.RowDeleting 事件和GridView.RowDeleted事件。關聯著不同的事件常式,我們可以利用事件順序中提供的事件常式來加載一些自已設計的程序。

先了解事件發生的順序,從字面上翻譯的話不難理解。

-ing 現在進行式,正在發生的事件(但還沒發生)
-ed 過去式,已經發生的事件

所以GridView刪除資料的事件順序應該是:
按一下GridView的刪除按鈕→(GridView的RowDeleting 事件)→刪除資料列→(GridView的RowDeleted事件)。

上面的順序中,括號( )內是可有可無,所以我們可以用既有的事件常式,自已在一連串的事件過程,撰寫自已的程式碼,以下是測試網頁,當按下刪除會出現」你沒有權限刪除資料」的文字,刪除完資料會顯示「刪除成功」文字。

◎以上程式範例AspNet43_1.aspx,如在頁框下不能操作,請開新視窗操作
◎如果有問題歡迎您提出,dnowba很需要有人和我一起討論

2012年7月12日 星期四

ASP.NET上使用JavaScript的方法 (二)

繼上一篇文章ASP.NET上使用JavaScript的方法 (一)
談到了在HTML原始碼上面寫進JavaScript的三種方式
是比較傳統的作法

這篇文章才算是真正的進入ASP.NET的範疇
主要是談怎麼在Server端寫Code 程式碼的時候也一併寫JavaScript

寫在前面:這邊我還是延用上一專題ASP.NET上使用JavaScript的方法 (一)的案例「限制級網頁」來探討如何使用JavaScript,Script的內容是一樣的,如下:

    <script type="text/javascript">
            if (confirm('以下內容為限制級,如果你已年滿18歲請按確定繼續觀看,否則請按取消 '))
        { document.write('你按了確定, 這些畫面很暴力、很情色吧…') }
        else {document.getElementById('Panel1').style.visibility = 'hidden'}
    </script>

和上篇文章不同的地方,是我修改了一下畫面的設計,在圖片的部分,我這次不用HTML來維護圖片的長度和寬度,改用CSS設計的方式…把程式碼區塊弄得更複雜一些。HTML原始碼如下:

<head runat="server">
    <title></title>
    <style type="text/css">
        .style1
        {
            width: 100px;
            height: 80px;
        }
        .style2
        {
            width: 100px;
            height: 80px;
        }
        .style3
        {
            width: 100px;
            height: 80px;
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <div>    
        <img alt="溫馨圖片,普通級" class="style1" src="Images/test0.jpg" /><br />
        <asp:Panel ID="Panel1" runat="server" style="margin-bottom: 0px">
            <img alt="暴力圖片,限制級" class="style2" src="Images/test1.jpg" />
            <img alt="情色圖片,限制級" class="style3" src="Images/test2.jpg" />
        </asp:Panel>    
    </div>
    </form>
</body>
</html>

用CSS的結果和直接用HTML的Image設定是一樣的,這麼是多此一舉,只是想把HTML弄得複雜一點,JavaScript會看得比較清楚,所以就先用上去吧。
image

後面就來介紹其他的幾種使用方法。

2012年7月11日 星期三

ASP.NET上使用JavaScript的方法 (一)

記得以前在參考書上常常看到JavaScript應用在ASP.NET上
不過寫的方式和位置總是讓人摸不著頭緒
這本書寫在這邊、那本書寫在那邊的…
可能因為那些書也不是專門講JavaScript
所以對於為什麼要這樣寫著墨也不是很多
常常是在出錯中學習

在ASP.NET使用JavaScript的方法不一而足
可是使用的時機不大一樣
想想現在很多的大型的網路應用  (像Google MAP) 都有提供支援JavaScript的API
今個兒想來做個整理
說不定哪一天派得上用場

寫在前面


為了避免混淆,我整理的方式比較特別一點,我想統一使用一種Script,來試著表現出「使用時機」的重要性。所以這邊我設計了一個案例,說明如下:
這個網頁的部分內容是限制級的,所以進入前需要有一個確認的功能,跳出一個詢問視窗詢問Brower是否滿18歲,如果按下確定,就可以看到這個部分的內容,如果按下取消,就把這個限制級的內容給關閉。image

好啦,我承認這個案例有點白痴,是有「目的」設計的案例
用ASP.NET來寫就可以完成的範例,有點殺雞用牛刀的感覺。

這邊就「故意」用JavaScript,Confirm視窗的方式來表現,完整的Script如下:

    <script type="text/javascript">
        if (confirm("以下內容為限制級,如果你已年滿18歲請按確定繼續觀看,否則請按取消 "))
        { document.write("你按了確定, 這些畫面很暴力、很情色吧…") }
        else { document.getElementById('Panel1').style.style.visibility = 'hidden' }
    </script>


說明一下上面的程式碼

行2~行3 如果按下確定,就直接呈現畫面,並輸出文字「你按了確定,這些畫面很暴力、很情色吧」到畫面上

行4 如果按下取消 (或直接按 「x」關閉視窗 ) 那就把 HTML 裡 的 <panel> 給遮蔽掉,這<panel>區塊就是我放暴力情色內容的地方。

這個案例裡,一般的內容我會簡單的用一張圖 test0.jpg 來表示
而panel 這個區塊我會放一張暴力的圖 test1.jpg、一張情色的圖 test2.jpg 來表示

以下就看看下面提到的方式哪些可以完成這個案例。

2012年7月10日 星期二

我還停在ASP.NET 2 的時代…我不甘心

偶有所得

我還停在ASP.NET 2 的時代…我不甘心

寫程式這回事真的是停下腳步就前功盡棄了
第一次學寫程式是2005年的事
第一次學的程式是用vb來寫asp.net動態網頁
當時其實asp和asp.net都分不清楚
常常買錯書,唯一分辨的方式
就是看看書裡面介紹的是不是用Visual Studio這個軟體來寫
也只知道看看一些工具的使用
殊不知道自已在物件導向的領域裡頭了
以為程式就這麼寫
就知道跟著書拉拉控制項
IntelliSense 真的很有sense,因為只要打了關鍵字就會自動跳出相關的參數
CodeBehind 讓我分得出來哪裡是在寫外觀、哪裡是在寫程序…雖然都是程式

2005那年,剛好又是和ASP.NET 2.0新舊交替的年代,在一場研習活動中,我週遭的學員好多上了第一場課就跑了,跑的時候還不忘數落ASP.NET,說「這哪裡叫做寫程式?只是拉拉控制項而已」… 我倒是留在教室內,上完了5日的研習課程。

因為這是我唯一會的程式…

ASP.NET 2.0 帶來了ADO.NET和更多的控制項,我也開始懷疑自已到底會不會寫程式了…漸漸的,我了解了物件導向模式。我也知道自已正在中毒中…

恐怕我唯一會的不是asp.net程式,我唯一會的是利用物件來做網頁
唯一能安慰的是我的資料庫(MS SQL)學習的時間變長了,學的也還不錯,資料表的設計還算可以(不正則,但資料間不會衝突太多)
那時我已經能利用MasterPage控制項做了一個大型的(充滿控制項)的動態網站
該有的都有,但就是人家有的我可能會有,人家沒有的我一定沒有

後來因為到外島工作+結婚+生子 ,ASP.NET 因為工作屬性關係沒有太多需求了
在外島的前幾年就此中斷了ASP.NET學習之路
轉戰硬體技術、軟體操作、網路管理、office…這些領域…因為也有很多沒有接觸過,所以花很多時間去學習。

一直到2011年1月,我的生日,回顧這幾年的日子,看著書架的那琳瑯滿目的書籍,我驚覺到我的書籍中最多的就是ASP.NET (還夾雜著許多買錯的ASP),再拿來翻他一翻…發現了一件事情,就是我比以前看得更明白了一些。再去google 一下ASP.NET,已經一大堆東西我看不懂了…

ASP.NET 3.5
ASP.NET AJAX
ASP.NET MVC
Dynamic Web Site
ASP.NET 4

在2005-2010年這五年期間多出來的東西也太多了吧,雖然我很少碰ASP.NET了,但隨著 google、facebook的發展,我想稱Web Application 是顯學應該是不為過。我好不容易有點基礎的、唯一學習有成的動態網站,怎麼可以說放棄說放棄,所以我在和家人商量後,決定重新回到ASP.NET的懷抱。

這會兒回來了,關發用的軟體雖然是Visual Studio 2010,Framework是4.0,但我很清楚的是,我自已還是在寫ASP.NET 2.0時代的東西。

有時候真的很不甘心…是變化太快,還是因為我不是業界沒有太多的接觸面,我真的沒辦法跟上別人的腳步嗎?2011年開始,我決心要在blogger上寫一些學習心得類的文章,寫這些文章的目的是鞭策自已,文章的內容或是從書上來,或是網路資訊,因為要放在自已的部落格上,所以都得自已辨證過…逐字逐句都是用自已的方式了解並慢慢建構出來的,不直接抄別人的,一切都要自已消化過才敢寫。

這7月雖然炎熱常讓人靜不下心,對我來說卻是需要好好把握的黃金時期。截至今天7月11日為止,7月內我發表的和ASP.NET相關的文章是9篇,每篇都是心血,都是不斷學習的結晶…

不知道是年紀到了還是怎麼,這一陣子對自已的鞕策下來我明白的了,物件導向是一個增加網站開發者產能的一種手段,在層層包裝的物件下,我們不用再自已寫一下「必要」的核心程序。除了程式邏輯外,我開始關注了比較深一層的東西,因為沒必要寫核心程式,不代表不需要關心核心,這種核心文件當然是要從MSDN上取經,很辛苦,因為上面有些是翻譯文,簡直就像火星文那樣,解讀非常吃力,有時候其實原文搞不好更容易懂。不過隨著閱讀時間增多了理解力也愈好了…對於物件導向的程式設計也不覺得害怕。

不過像現在 Cloud Computing 的火熱程度不亞於當初的 Internet Application ,JavaScript 再度成為 Web Application 的用戶端開發的顯學之一,雖然MSDN雜誌上曾經有發表過什麼「VB6老兵不死」的文章,但是我還是蠻怕Visual Basic 的式微 (從google中,我覺得大陸人都在用C#,比爾蓋茲先生,你可要守護好你自已最愛的語言VB啊)

不過雖然語言不同,殊途同歸的就是,「事件驅動」的開發精神是沒有變的,開發者建構物件核心,使用者只要利用物件可引發的事件來處理事情就好了。

不知道這樣算是好還是不好,好吧,既然決定了目標,我想不是心裡不甘心就好了,學習的文件能讀多少就算多少,物件核心能挖多深就挖多深…
image

有朝一日,我要用ASP.NET4.0來寫程式。

GridView 批次刪除功能(複選多個資料列)_1

這個範例主要是在介紹「批次刪除功能」,用GridView快速建置資料列並加以手動修改樣版,使用者按下「全選」按鈕來選擇GridView下所有的資料列,或是透過每列資料列前的CheckBox來「複選」多個資料列,按下「刪除」按鈕把所選取的資料列刪除。

◎以上程式範例AspNet42.aspx,如在頁框下不能操作,請開新視窗操作
◎如果有問題歡迎您提出,dnowba很需要有人和我一起討論

2012年7月7日 星期六

一點都不想重來之照片補遺

最近剛好也要規劃孩子房間的同事看到我的部落格
用mail問了一些問題
把我回覆的信件給貼上來吧
也順便補上一些搬新家時拍的照片做為自已的回憶錄

一點都不想重來系列的文章
是dnowba看了蠻多書籍的後的實戰紀錄
有很多自已覺得還不錯的研究的內容很多都沒有時間補上
自已也覺得可惜

尤其是美化、收納的部份
家裡裝潢diy最終回-美化的部分目前是停擺了
預計是八月份再動工

七月份的功課是研究網站…
時間真的是不夠用…我已經爆肝好幾天了…

2012年7月6日 星期五

將GridView裡資料匯出成Excel檔

在網頁上展示報表資料,用GridView是很好的方式
有時候報表要做成不同的圖表顯示,利用Chart控制項來製作也不錯

另一種方式,就是把資料匯出成Excel
要做其他的分析、華麗的圖表也是一種方式

這篇文章就來說說
怎麼將GridView裡的欄位資料輸出到Excel檔案
供使用者來做其他使用

我以前從書上看過這樣類似的範例
是vb.net的書籍
用的方法是調用 Microsoft.Office.Tools.Excel 的命名空間(Namespace)
很專業的方式,可以參考MSDN文章
http://msdn.microsoft.com/zh-tw/library/microsoft.office.tools.excel(v=vs.100).aspx

不過從這個命名空間的層級看來
大概也可以知道是不適合用在WEB FORM的一個物件模型
(ASP.NET網頁一開始就直接調用了 System.Web 並使用階層下的物件)
所以要使用這種方法還有一個條件
就是在Server端也要裝相應版本的Excel
在Browser端也要裝相應版本的Excel
因為在Brower端執行時,還是透過Server的 Automation (ActiveX EXE) 操控 Office ,只是Framework幫你包裝好一些 Namespace 讓你比較好運用而已。(講到要操控Server端的Office,應該會因為browser的權限不足所以根本無法使用吧…光create object 就會出問題了,browser 能在伺服器端產生物件…那權力也大的危險了)

這邊說的方式是比較偷龍轉鳳的方式
利用的是Excel本身支持豐富的文件格式(所以本身還帶自動解析識別)

把網頁資料匯出成Excel的方式
dnowba 有鑽研過(k了不少書+爬了不少文)
方法至少有六種

這篇文章是以一個「需求」的角度來寫的
控制excel的方式並不是最好的

對於B/S (Browser/Server ,即WEB應用) 結構來說
我們也許只是想小小的應用一下excel來產生報表
並不需要擁有太多的控制能力

在此打住,直接提供主範例DEMO

◎以上程式範例AspNet40.aspx,如在頁框下不能操作,請開新視窗操作
◎如果有問題歡迎您提出,dnowba很需要有人和我一起討論

2012年7月5日 星期四

ANSI和Unicode、UTF-8和UTF-16、BOM

這一篇是個學習紀錄,對於字元編碼其實從前是有點知其然不知其所以然,今個兒決定要徹夜苦讀,爬了些文章並自已做了測試,寫下一些學習心得。可能觀念上還是有些問題,如果有高手路過,一定要給小弟指教指教。

先實作看看

二個是字元編碼的規範,先不談理論,我們實作一下,開啟Windows 裡頭的NotePad.exe 然後輸入「DNOWBA的部落格」

接著「另存新檔」,分別存二種編碼檔案:

一個名稱就叫ANSI,編碼選擇ANSIimage

再另存一次,名為Unicode,編碼選Unicode
image

再次打開這二個檔案,比較一下,沒有差別對吧。

CheckBox和CheckBoxList的使用範例

這邊利用CheckBox來製作調整控制項配置方式的選項按鈕,也順便介紹了HTML時代沒有的控制項CheckBoxList有哪些現成的配置屬性供修改。

再來是CheckBoxList 的使用,並從選取過程中抓出使用者勾選了哪些資料。

◎以上程式範例AspNet14.aspx,如在頁框下不能操作,請開新視窗操作
◎如果有問題歡迎您提出,dnowba很需要有人和我一起討論

以下為程式碼及解說

2012年7月4日 星期三

密碼再次驗證的範例

在建立會員機制,讓使用者建立密碼的時候,最好二次驗證,double check,因為密碼在輸入時是遮罩掉避免有心人士從旁觀看,所以有可能使用者建立密碼時按錯鍵自已也不清楚。

◎以上程式範例AspNet13.aspx,如在頁框下不能操作,請開新視窗操作
◎如果有問題歡迎您提出,dnowba很需要有人和我一起討論

底下是程式碼:

iGoogle 要停用囉…對你有影響嗎?

iGoogle 將於 2013 年 11 月 1 日停用,行動版 iGoogle 則是即將在 2012 年 7 月 31 日停用。 不知道是什麼時候的訊息了…提醒一下有使用igoogle的人吧image

資料來源:http://support.google.com/websearch/bin/answer.py?hl=zh-Hant&answer=2664197

沒什麼大驚小怪的,本來時勢所趨,改朝換代是一定要的,一直勉強撐著沒進步也不行。就像BUZZ整合成Google+、AppStore 變成 Google Play 、Google Docs 文件整合到 Google Drive 雲端硬碟一樣。igoogle的影響力和前面這些比起來,算是小巫見大巫了 。

不過和 Windows 比較起來,Google 的改朝換代的方式,似乎比較溫和一些。

惡意程式攻擊 台灣3千筆IP中毒 中毒者可能無法上網

 

美國聯邦調查局去年查緝「ROVE DIGITAL」公司涉嫌以網路惡意軟體攻擊伺服器賺取利益的不法行為,發現台灣也有3千多筆IP疑似中毒。刑事局提醒民眾自行檢測使用電腦是否中毒,否則本月9日後電腦可能無法上網。

刑事局研發設計DNS Changer檢測軟體,提供自動分析電腦是否遭感染及重新設定方式,民眾可上刑事局官網查詢相關資訊。

刑事局國際科今年4月接獲美國聯邦調查局通報,指美方去年查獲「ROVE DIGITAL」公司以「域名系統綁架」(DNS Changer)病毒綁架全球上百萬台電腦、四百多萬筆IP,只要上網就會強制跳出廣告;該公司並藉此獲取1千4百萬美元的不法廣告收益。

美國聯邦調查局去年掃蕩「ROVE DIGITAL」公司,直到今年2月美國前五百大企業還有一半企業的電腦遭感染。

該犯罪集團是將正常電腦上網時的伺服器,連結到該集團設立的伺服器,從中塞廣告賺取利潤。美方破案後提以正常伺服器取代犯罪集團伺服器,讓感染的電腦正常運作。不過美方提供的伺服器定於9月9日關閉,屆時感染的電腦若未先排除病毒可能就無法上網。

根據美方提供的資料顯示,被感染的IP中逾3千多筆是屬於我國內註冊的網路IP,潛在被害者疑似包括我國電信業者及眾多學術網路使用者。

新聞來源:奇摩

你中獎了嗎?

刑事局呼籲民眾檢查個人電腦是否感染DNSChanger

檢測方式:美國FBI提供了一個網頁供檢測http://www.dns-ok.us/
如果是DNS Resolution = GREEN 綠色的就表示沒事,如果是紅色的…那就有事啦
image

紅色的話就是中毒了,可以使用一些免費的掃毒軟體

Hitman Pro (32bit and 64bit versions)  http://www.surfright.nl/en/products/
Kaspersky Labs TDSSKiller  http://support.kaspersky.com/faq/?qid=208283363
McAfee Stinger  http://www.mcafee.com/us/downloads/free-tools/stinger.aspx
Microsoft Windows Defender Offline   http://windows.microsoft.com/en-US/windows/what-is-windows-defender-offline
Microsoft Safety Scanner  http://www.microsoft.com/security/scanner/en-us/default.aspx
Norton Power Eraser  http://security.symantec.com/nbrt/npe.aspx
Trend Micro Housecall  http://housecall.trendmicro.com
MacScan  http://macscan.securemac.com/
Avira  http://www.avira.com/en/support-for-home-knowledgebase-detail/kbid/1199

Button 每按一下就累加1的探討

不知道要如何命名比較好
這篇是一個ASP.NET技術:「ViewState」的討論
覺得很是重要,因為常常在抓取控制項的數值時出了錯,報錯常見和ViewState相關
所以特別拿出來研究研究
當然也不是自已的成果啦
只是把高手們的資料看看自已測試一下

先把結果寫出來,有興趣的再往下看吧

結果:

◎以上程式範例AspNet12.aspx,如在頁框下不能操作,請開新視窗操作
◎如果有問題歡迎您提出,dnowba很需要有人和我一起討論

Partial Class AspNet12
    Inherits System.Web.UI.Page
    Dim i As Integer

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        ' ===== 關於Viewstate:按鈕之後,數值累加1 =====
        ' 以下二個結論:
        ' 1、在使用時可以發現
        ' http 是一個 stateless(無狀態) 的協定
        ' 用最原始的response來做是不能累加的,因為
        ' 當傳遞完值後就關閉和server的連接
        ' 而ASP.NET不同處在於在值傳遞過程,都會紀錄每個「控制項」的狀態(viewstate)

        ' 2、如果把button1_click()裡的事件改放到Page_Load()裡
        ' 不管按下什麼控制項,都會發現Page_Load都會被觸發
        ' 這是Page_Load的特性
        ' 是以往傳統程式一個項一個事件,不按就沒有事件被執行的觀念不同
        ' 所以我們常在每個Page_Load裡面寫一段判別式,如下:

        'If Not Page.IsPostBack = True Then
        ' 這邊就是指第一次開啟web應用程序
        ' else
        ' 這邊的敘述句就是指第二、三、四、五…次讀取頁面
        'End If

        If Not Page.IsPostBack = True Then
            ' 也因為控制項的狀態被紀錄過一次了,所以可以用Page.IsPostBack來判定
            ' 就算重新載入了,該控制項的「屬性」還是會被保留住
            Me.Label1.ForeColor = Drawing.Color.Red
            Me.Label1.Text = 0
        End If
        ' 不給初始值=0的話,後面累加1的時候會報錯,即便vb這麼青菜,還是不給加字串的,所以
        ' 我們給他「方便」辯識用,初始值給他設定為 0,讓VB自動把這個「值」當成是「數字」。
        ' c# 就不可以這樣做了,c#較嚴謹,需要設定好每個變數的型別
    End Sub

    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        ' 用最原始的response來做是不能累加的
        ' i = i + 1
        ' Response.Write(i)
        ' 而用控制項的話,因為viewstate的關係,就能累加
        ' 底下用的Cint來將值轉化成int整數,是比較正式的寫法,不寫也行
        Me.Label1.Text = CInt(Me.Label1.Text) + 1
    End Sub
End Class

ASP.NET網頁生命週期

之前在 MSDN 有看過介紹一般網頁生命週期的文章
覺得還蠻專業的

不知道什麼時候又多了這麼一張圖
也太清楚了吧
這下子很多問題都可以解決啦
容dnowba把圖截下來貼起來做個筆記
image

圖片來源:http://msdn.microsoft.com/zh-tw/library/ms178472.aspx

2012年7月3日 星期二

For 迴圈在ASP.NET的應用

◎以上程式範例AspNet11.aspx,如在頁框下不能操作,請開新視窗操作
◎如果有問題歡迎您提出,dnowba很需要有人和我一起討論

2012年7月2日 星期一

用ListView做一個搜尋引擎webform

本來下的標題是「用ASP.NET寫一個搜尋引擎網頁」
後來想想…好像沒有自已手動「寫」
都是靠Visual Studio軟體中的控制項自動生成的…
命名上還是老實點好了,題外話。

既然Visual Studio幫我們把繁雜的程式碼給生出來了
不好好地看一看這些程式碼怎麼對得起它呢?

◎以上程式範例AspNet39.aspx,如在頁框下不能操作,請開新視窗操作
◎如果有問題歡迎您提出,dnowba很需要有人和我一起討論

以下就大致上講一下利用ListView控制項製作搜尋引擎網頁的方式

Related Posts Plugin for WordPress, Blogger...
// Dnow Function