星期日, 11月 25, 2007

RSACryptoServiceProvider 類別

使用由密碼編譯服務供應者 (CSP) 提供之 RSA 演算法的實作,執行非對稱加密和解密。這個類別無法被繼承。

Dim instance As RSACryptoServiceProvider

下列程式碼範例會使用 RSACryptoServiceProvider 類別,將字串加密成位元組陣列,然後再將位元組解密回字串。


Imports System
Imports System.Security.Cryptography
Imports System.Text

_

Class RSACSPSample


Shared Sub Main()
Try
'Create a UnicodeEncoder to convert between byte array and string.
Dim ByteConverter As New UnicodeEncoding()

'Create byte arrays to hold original, encrypted, and decrypted data.
Dim dataToEncrypt As Byte() = ByteConverter.GetBytes("Data to Encrypt")
Dim encryptedData() As Byte
Dim decryptedData() As Byte

'Create a new instance of RSACryptoServiceProvider to generate
'public and private key data.
Dim RSA As New RSACryptoServiceProvider()

'Pass the data to ENCRYPT, the public key information
'(using RSACryptoServiceProvider.ExportParameters(false),
'and a boolean flag specifying no OAEP padding.
encryptedData = RSAEncrypt(dataToEncrypt, RSA.ExportParameters(False), False)

'Pass the data to DECRYPT, the private key information
'(using RSACryptoServiceProvider.ExportParameters(true),
'and a boolean flag specifying no OAEP padding.
decryptedData = RSADecrypt(encryptedData, RSA.ExportParameters(True), False)

'Display the decrypted plaintext to the console.
Console.WriteLine("Decrypted plaintext: {0}", ByteConverter.GetString(decryptedData))
Catch e As ArgumentNullException
'Catch this exception in case the encryption did
'not succeed.
Console.WriteLine("Encryption failed.")
End Try
End Sub


Public Shared Function RSAEncrypt(ByVal DataToEncrypt() As Byte, ByVal RSAKeyInfo As RSAParameters, ByVal DoOAEPPadding As Boolean) As Byte()
Try
'Create a new instance of RSACryptoServiceProvider.
Dim RSA As New RSACryptoServiceProvider()

'Import the RSA Key information. This only needs
'toinclude the public key information.
RSA.ImportParameters(RSAKeyInfo)

'Encrypt the passed byte array and specify OAEP padding.
'OAEP padding is only available on Microsoft Windows XP or
'later.
Return RSA.Encrypt(DataToEncrypt, DoOAEPPadding)
'Catch and display a CryptographicException
'to the console.
Catch e As CryptographicException
Console.WriteLine(e.Message)

Return Nothing
End Try
End Function


Public Shared Function RSADecrypt(ByVal DataToDecrypt() As Byte, ByVal RSAKeyInfo As RSAParameters, ByVal DoOAEPPadding As Boolean) As Byte()
Try
'Create a new instance of RSACryptoServiceProvider.
Dim RSA As New RSACryptoServiceProvider()

'Import the RSA Key information. This needs
'to include the private key information.
RSA.ImportParameters(RSAKeyInfo)

'Decrypt the passed byte array and specify OAEP padding.
'OAEP padding is only available on Microsoft Windows XP or
'later.
Return RSA.Decrypt(DataToDecrypt, DoOAEPPadding)
'Catch and display a CryptographicException
'to the console.
Catch e As CryptographicException
Console.WriteLine(e.ToString())

下列程式碼範例會使用 RSACryptoServiceProvider,將建立的金鑰資訊匯出到 RSAParameters 物件。


Try

'Create a new RSACryptoServiceProvider object.
Dim RSA As New RSACryptoServiceProvider()

'Export the key information to an RSAParameters object.
'Pass false to export the public key information or pass
'true to export public and private key information.
Dim RSAParams As RSAParameters = RSA.ExportParameters(False)


Catch e As CryptographicException
'Catch this exception in case the encryption did
'not succeed.
Console.WriteLine(e.Message)
End Try
Return Nothing
End Try
End Function
End Class

內容來源:微軟的MSDN

星期六, 11月 24, 2007

RegularExpressionValidato屬性:ValidationExpression

[ ]:
定義可接受的字元,例:
[a-z]表示可接受a~z等26個英文小寫字母、
[0-5]表示可接受0~5個數字、
[^ b-e]表示除了b~e之外,所有字元圴接受
(^符號為不接受的意思)、[abc]表可接受a,b,c三個小寫字母。)

{ }:
定義須輸入的字元數,例:
{3}表示須輸入3個字元、
{1,3}須輸入1~3個字元、
{n,}表接受n~無限多個字元。
所以
[A-C]{3}表必須輸入3個大寫字母、
[a-zA-z0-9]{1,9}表可輸入1~9個大小寫字母或數字。

.:
表任意的字元,例:
.{8}表可接受8個任意字元。

|:
表「或」的意思,例:
[a-c]{1}|[0-9]{2}表必須輸入a~c之間的一個小寫字母或2個數字。

( ):
此符號可有可無,目的是為了方便閱讀,例:
([A-B]) | ([a-z])加了括號是不是比 [A-B] | [a-z]更清楚看出 | 符號。
\:
若可接受的字元中包含上述符號,
則必須在特殊符號前加上\符號,例:可接受的字元包括[],則寫成 \[\]

星期四, 11月 15, 2007

遮罩

定義輸入遮罩

輸入遮罩定義可以包含分號分開的三個區段﹔例如,(999) 000-0000!;0;" "

區段

意義

第一個

輸入遮罩本身。

第二個

決定是否儲存文字顯示字元。

0 = 以輸入的值儲存文字字元

1 = 留空白 = 儲存只有輸入空白的字元

第三個

在輸入遮罩顯示為空白的字元。您可以使用任何字元﹔輸入 " " (雙引號、空格、雙引號) 來顯示一個空格。如果您在此區段留下空白,底線 (_) 就會被使用。

有效的輸入遮罩字元

Microsoft Access 解釋在輸入遮罩屬性定義的第一個部分字元如下列表格顯示。若要定義文字字元,請輸入沒有顯示在此表格的其他任何字元,包含空格和符號。若要定義下列字元的其中之一為文字字元,請在字元前面加上 \

字元

敘述

0

數字 (0 9,必須輸入﹔不允許加號〔+〕和減號〔-)

9

數字或空格 (不需輸入﹔不允許加號和減號)

#

數字或空格 (不需輸入﹔空白位置轉換成空格,允許加號和減號)

L

字母 (A Z,必須輸入)

?

字母 (A Z,選擇性輸入)

A

字母或數字 (必須輸入)

a

字母或數字 (選擇性輸入)

&

任何字元或空格 (必須輸入)

C

任何字元或空格 (選擇性輸入)

. , : ; - /

小數點位置與千、日期、和時間的分隔符號。 (實際使用的字元根據由按兩下 Windows [控制台] [國別設定] 所指定的國別設定。

<

使之後的所有字元轉換成小寫。

>

使之後的所有字元轉換成大寫。

!

使輸入遮罩由右至左的顯示,而不是由左至右。鍵入的字元通常由左至右填入遮罩內。您可在輸入遮罩的任何地方包含驚嘆號。

\

使之後的字元顯示成文字字元。用來使列在此資料表的任何字元顯示成文字字元 (例如, \A 就顯示成 A )

Password

設定輸入遮罩屬性為密碼這個字會建立密碼項目文字方塊。在文字方塊鍵入的任何字元會儲存為此字元,但會顯示為星號 (*)

星期三, 11月 14, 2007

javascript內的Date物件

function check(arg_intYear,arg_intMonth,arg_intDay)
{
//月數從0開始,所以要將參數減一
var objDate = new Date(arg_intYear,arg_intMonth-1,arg_intDay);
//檢查月份是否小於12大於1
if((parseInt(arg_intMonth) > 12) || (parseInt(arg_intMonth) < 1))
{
alert(arg_intYear+'/'+arg_intMonth+'/'+arg_intDay+' 月份不正確');
}
else
{
//如果objDate日數進位不等於傳入的arg_intDay,
//代表天數格式錯誤,另外月份進位也代表日期格式錯誤
if((parseInt(arg_intDay) != parseInt(objDate.getDate()))||(parseInt(arg_intMonth)!= parseInt((objDate.getMonth()+1))))
{
alert(arg_intYear+'/'+arg_intMonth+'/'+arg_intDay+ ' 天數不正確');
}
else
{
alert(arg_intYear+'/'+arg_intMonth+'/'+arg_intDay+ ' 日期格式正確');
}
}
}
所以下面可以嘗試看看會有怎樣的回應?

check(2007,2,29); //alert 天數不正確
checkDate(2008,2,29); //alert 日期格式正確
checkDate(2007,7,31); //alert 日期格式正確

CSS與Java Script

網頁其實是由很多的標籤,也就是<>這樣的符號組合而成。
每一個標籤都有他的定義與用途,比如說<img>代表的是圖形,
而<hr>代表的是水平線。
如果我想要自己定義標籤,那該怎麼作呢?
例如<a href>指的是超連結,這個標籤預設會有底線,
如果我希望他不要出現底線,那就得重新定義這個標籤,
而這個重新定義標籤,就是CSS樣式表。
所以您若於網頁原始碼內看到

<style type="text/css">
a {text-decoration:none}
</style>
這就是CSS的運用。

HTML語法只能靜態呈現圖文資料,而CSS則是重新定義標籤的功能,
而script是什麼呢?script指可讓網頁上的標籤與
使用者產生互動。
例如當我進入網頁,他就會秀出訊息,這就是script的功能。

<html>
<head>
<script type="text/javascript">
function message() {
alert(”歡迎光臨!”)
}
</script>
</head>
<body onload=”message()”>
</body>
</html>

CSS可以重新定義HTML的標籤,所以您也可以設計網頁文字呈現
在圖片檔案上面,您也可以引用、匯入已經設計好的CSS。
而script可以增加網頁與使用者之間的互動,也可搭配CSS,
搭配修改過的網頁標籤與使用者互動。

CSS與Script,是網頁裡蠻重要的兩個基本的元素,
細節部分,可參考巨匠電腦的以下課程:

1.如果您習慣使用FrontPage,可詢問以下兩個課程:
WH1活用網頁設計基礎FrontPage
WH2活用網頁設計應用FrontPage

2.如果您習慣使用Dreamwaver,可詢問以下兩個課程:
ID5Dreamweaver網頁設計
ID6Dreamweaver網頁應用
ID7Dreamweaver動態資料庫網站設計
ID8Dreamweaver動態網站進階應用篇

如果您沒有網頁基礎,建議您可到各分校旁聽,
由FrontPage或Dreamwaver擇一學習。

由turbo c移植出來的程式可能的問題:clrscr等五個函數

error C2065: 'clrscr' : undeclared identifier
error C2065: 'delay' : undeclared identifier
error C2065: 'randomize' : undeclared identifier
error C2065: 'random' : undeclared identifier
error C2065: 'gotoxy' : undeclared identifier

那五個函數正是turbo c內的函數,但不是ansi c 標準的函數

randomize() 可用 srand((unsigned)time(0)) 代替
(但須引用 ).

random(N) 可以用 (rand() % N) 來取代.

最接近 delay() 的是sleep(). (不過若是C++,則是Sleep())

gotoxy() 跟 clrscr() 在視窗系統上要用 console API (需要 ) 來做,
我建議用同名的函式把 API 包起來

void gotoxy(short int x, short int y)
{
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
COORD coord = {x, y};
SetConsoleCursorPosition(hStdOut, coord);
}

void clrscr()
{
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_SCREEN_BUFFER_INFO csbi;
GetConsoleScreenBufferInfo(hStdOut, &csbi);

COORD coord = {0, 0};
DWORD dwSize = csbi.dwSize.X * csbi.dwSize.Y;
DWORD dwWritten;
FillConsoleOutputCharacter(hStdOut, ' ', dwSize, coord, &dwWritten);
FillConsoleOutputAttribute(hStdOut, csbi.wAttributes, dwSize, coord, &dwWritten);
gotoxy(0, 0);
SetConsoleCursorPosition(hStdOut, coord);
}

星期二, 11月 13, 2007

HTML VS PHP

HTML VS PHP

葉建榮
民國九十六年十一月十三日

1980年,Tim Berners-Lee為了解決不同電腦間不同格式文件閱讀交流上的困難,在歐洲核子物理實驗室工作時建議建立一個以HTML為基礎的系統讓科學家之間能夠分享和更新他們的研究結果。HTML以純文字格式為基礎,可讓任何一個文字編輯器處理,最初僅有少量標記(TAG)而易於掌握運用。隨著 HTML 使用率的增加,單純的資料交換已經不符合所需。1984年,Tim Berners-Lee寫了世界上第一個網頁瀏覽器(WorldWideWeb),全球第一個網站也由此誕生。












【圖1、全球第一個網頁:單純的文字資料顯示】

可是,html網頁文件格式並無法滿足大家的需求,因為html網頁是靜態的網頁,可將伺服器上的網頁傳送到每一台使用者的瀏覽器上,但如果想要搜尋資訊,例如設立討論區,或者想知道這個網頁有多少人瀏覽過,那該怎麼辦呢?這時我們就需要資料庫網頁。資料庫網頁與靜態網頁有何不同呢?我們先來瞧瞧這兩種網頁讀取的方式。

首先,我們來看一下靜態的網頁是如何讀取:

1.當我們在瀏覽器中輸入一個網址(URL)或按下一個超鏈結(Hyperlink)時,瀏覽器會送出一個要求到網路上,要網址中所指定的文件。這個要求會在網際網路(Internet)上傳送,根據網址所指定的位置,找到存有這份文件的 WWW伺服器(Server)。

2. 當這台伺服器(WWW Server程式)接收到要求,它便會檢查自己的電腦中是否有這份文件,如果有的話,伺服器就會將文件送出,這個文件就是HTML檔案。 HTML檔案會被送上網際網路,最後傳回到我們自己的電腦中。

3. 瀏覽器接收到HTML文件,便會開始解讀HTML,將最後的結果呈現在螢幕上讓我們看到。

HTML文件只是一種純文字的檔案,並沒有包含影像、動畫或其他任何東西。當瀏覽器在解讀HTML時,發現裡面有需要顯示影像、動畫的地方,就會重覆第一個步驟再送出要求,去把要顯示的影像、動畫給下載回來。如此一直重覆著,直到所有需要的東西都下載完畢為止。這樣就完成了一個瀏覽網頁的動作。













【圖2HTML網頁讀取流程】

資料庫網頁有好幾種,我們來看PHP網頁會以何種方式來處理資料。

1.當我們在瀏覽器中輸入一個網址(URL)或按下一個超鏈結(Hyperlink)時,瀏覽器會送出一個要求到網路上,要網址中所指定的文件。這個要求會在網際網路(Internet)上傳送,根據網址所指定的位置,找到存有這份文件的 WWW伺服器(Server)。

2. 當這台伺服器(WWW Server程式)接收到要求,它便會檢查自己的電腦中是否有這份文件,如果這一份文件裡面有PHP標籤,則會呼叫PHP引擎作解析。

3. PHP引擎解析時發現資料庫讀寫相關指令時,會連線到資料庫內進行資料庫的讀寫。

4. PHP引擎將文件解析成HTML格式後,伺服器就會將文件送出,這個文件就是HTML檔案。 HTML檔案會被送上網際網路,最後傳回到我們自己的電腦中。

5. 瀏覽器接收到HTML文件,便會開始解讀HTML,將最後的結果呈現在螢幕上讓我們看到。










【圖3PHP資料庫網頁讀取流程】

所以透過這種方式,我們就可以將資料儲存在網頁資料庫,也可以在網頁上讀取遠端資料庫內的內容,網頁內容不再是固定的,可由使用者選取想看的資料。

星期日, 11月 11, 2007

就像人類有壞朋友,狗有時也會交到壞朋友

如果說,人類是狗的朋友。那麼,就像人類有壞朋友,狗有時也會
交到壞朋友。
週六回母校參觀校慶活動,跑到花房看一下,發現到我十六年前種
植的樹,長大、茁壯。只是學長這麼一句「這一屆學弟妹就是那個
時候出生」,讓我感到感傷,我已經畢業那麼久了啊~
後來帶我老婆與平平到花房走,聽到狗狗的聲音,平平怕狗狗,躲
在我的身後,可是那狗的聲音,其實不太像是示威,反而像是哀嚎
、害怕。果然,當我們看到狗時,學妹說,狗狗在室內尿尿,而且
是第一次在室內尿尿。
這一隻狗是流浪狗,是學妹領回的,我想這一隻狗之前可能受盡人
類欺侮吧,所以發現那麼多陌生人來,怕到尿出來。
這一隻狗比我們家平平還要高,老實說,應該是平平嚇到,但是,
眼前看到的,卻是一隻嚇到發抖的狗,所以,將心比心,如果有不
想養的狗,請勿隨意棄養,不要傷害他們了。

星期四, 11月 08, 2007

隨身版Firefox的使用之基本操作6:網頁上的連結與圖片

隨身版Firefox的使用:基本操作

葉建榮整理

中華民國96年11月9日整理


資料運用:網頁上的連結與圖片

當我們開啟網頁後,我們想要得知該網頁內的連結結構或圖片資訊,那該怎麼辦呢?過去我們會開一個Word檔案,一邊按下右鍵紀錄連結或圖片資訊,另外一邊在Word內輸入相關資訊。現在您使用Firefox,就可以喝咖啡聊是非,不必做這些事情了。
您可以在狀態列上看到一個圖示,顯示這個網頁的連結數量。當您按下滑鼠右鍵時,可察看這個網頁在網內與網外的連結有哪些,您也可以將這些資訊儲存為網頁、文字檔,或者在分頁開啟。














【圖32LinkCounter可幫您整理網頁內有哪些網站內外的連結】


如果想看到網頁上的圖片清單呢?您可在網頁上按下右鍵,選擇「List All Images」,Firefox就會另開分頁,將該網頁上所有圖形條列出來。












【圖33List All Images可將網頁上的圖形條列在新網頁上】

隨身版Firefox的使用之基本操作5:書籤管理

隨身版Firefox的使用:基本操作

葉建榮整理

中華民國96年11月9日整理


書籤管理:隨時隨地加入書籤
Firefox的書籤,與IE的「我的最愛」功能相同,都是儲存網址,以供日後的點選觀看,只是Firefox內可以有更多的套件協助管理與使用。您可以隨心所欲的將網頁加入指定的書籤資料夾內,而不需再到「書籤」功能表內作業。






【圖26、可點選書籤資料夾就可儲存書籤】


書籤管理:檢查書籤狀況
當我們把大量的網頁加入到書籤後,時間一久,可能有些書籤會失效或者轉移網頁,那我們該怎麼檢查呢?
當您開啟書籤管理員時,您可選取您要檢查的書籤資料夾或書籤,按下 ,就可進行檢查。








【圖27、書籤管理員內新增一個「Check」按鈕】


書籤管理:IE我的最愛
Firefox有很棒的書籤與相關搭配的套件,我所提供的隨身版Firefox,也是可以讀取IE的「我的最愛」,不論您在哪一台Windows電腦上,您都可以在Firefox內點選IE的最愛!










【圖28、Fireefox內也可以使用「我的最愛」】

隨身版Firefox的使用之基本操作4:網頁翻譯

隨身版Firefox的使用:基本操作

葉建榮整理

中華民國96年11月9日整理


網路無國界,當我們在網路上搜尋資料時,很容易搜尋到簡體中文的網頁。您可以直接閱讀,但總有碰到不認識的文字,那該怎麼辦呢?
這裡提供了兩種網頁翻譯的方式,一個是「新同文堂」,第二個是「FoxLingo」。

新同文堂
新同文堂的目的,就是讓您可以做簡繁體中文的互換。當您在網頁上按下右鍵,您就可以選擇網頁轉繁體或轉簡體,甚至您也可以設定自動轉換,不論您看了哪些網頁,都會以繁體或簡體顯示。













【圖24、新同文堂的功能】




FoxLingo

您可點選上方的FoxLingo工具列進行各種語言的翻譯,FoxLingo提供多少語言呢?總共提供了超過百種以上的各種不同語言的比對進行網頁翻譯與選取的文字翻譯,而且更棒的是,當您要翻譯網頁或文字時,您可挑選不同的語言翻譯主機替您翻譯文字。
















【圖25、FoxLingo提供的翻譯功能】



請勿放生:城市裡的自然教育--牛蛙的威脅

學校的自然科學教育裡,有「觀察蝌蚪變成青蛙」這樣的課程,這是一個好課程,可讓學生觀察兩棲類動物的變化,但是城市裡哪裡有蝌蚪可撈呢?即便城市裡有蝌蚪可撈,但家長忙於工作,也沒有時間帶小朋友撈蝌蚪,於是有一個新興的工作出現:賣蝌蚪,但是,這些蝌蚪是外來種牛蛙的蝌蚪。

牛蛙因叫聲如牛而得名,體型甚大,有很強的領域性,牛蛙和蝌蚪都會捕食其它種類的青蛙。對臺灣的青蛙是很大的威脅,台北植物園內已經可以看見牛蛙,晚上可聽到如牛叫的聲音。

 所以,學校老師基於尊重生命的觀念,會把牛蛙野放,但是這樣做會造成臺灣青蛙的死亡。那該怎麼辦呢?請不要放生!

也許您認為,放生並不會影響到您。但您是否想過,未來臺灣的天空,看不到寶藍色的臺灣藍鵲,臺灣清澈的小溪裡,只看的到吳郭魚與琵琶鼠魚,臺灣的田間,晚上聽不到各種蛙叫聲音,只聽到如牛般的叫聲,這是您想要的未來環境嗎?

也許您會認為,我家無法養這個動物,那不放生,不然該怎麼辦?網路上有不少論壇,例如塔內植物園(http://192.192.42.4/~tbgweb/cgi-bin/leobbs.cgi )內有多個動植物相關的版面,您都可以在裡面發表文章,尋求網路上的新飼養者。請不要再放生了,我希望在未來,溪流裡可以看到溪哥、紅貓,而不是錦鯉、巴西烏龜,我希望田野裡能傳來各種不同的青蛙叫聲,而不是單調宏亮的牛蛙叫聲。

讓我們的孩子,能夠像我們一樣,看到這些,不要讓這些屬於我們記憶中的動物,成為永恆的回憶。

請勿放生:放生造成的生態浩劫

放生,可能是基於宗教的因素,也可能基於愛護某種臺灣原生生物的因素而放,也可能是無心之過或者無法照料下的棄養。隨意放生的結果,造成臺灣生態的浩劫。

最明顯的例子就是吳郭魚。民國35年由吳振輝與郭啟彰兩位先生由南洋引進非洲鯽後大量養殖,因肉質鮮美且價格便宜,在二次大戰後成為臺灣重要的動物蛋白質來源,故被稱之為吳郭魚。對環境的適應力極強,即使到了今天,臺灣很多河川嚴重污染,但吳郭魚仍能生存繁衍。吳郭魚具有領域性,成熟雄魚在繁殖期會用嘴啣河川底部泥沙做窩,形成一個圓形凹穴,再將中意的雌魚引入窩內。雌魚會將受精卵含入口中,孵化後10天內,稚魚遇到驚嚇仍會游入母魚口中,稚魚可受到母魚非常安全的保護,而吳郭魚終年均可繁殖,母魚每隔3~4週可再產卵,孵化後的稚魚,經過100~150天又可再繁殖,加上吳郭魚又是雜食性,什麼都吃,所以大量侵佔臺灣河川,很多臺灣原生魚種自此消失,也讓很多年輕朋友誤以為河川裡只有吳郭魚這種刻板印象。

另外一個年輕朋友會常見到的:福壽螺,這也是放生造成的後果。民國六十幾年時螺肉大受歡迎,於是有人從南美洲帶進了福壽螺卵(Pomacea canaliculata),希望繁殖後能藉此賺錢,很多養殖場都加入養殖計畫。但因臺灣人不喜歡福壽螺螺肉,於是在虧本的情況下養殖場就任意放生,沒想到這樣的動作,造成臺灣生態的浩劫。福壽螺的繁殖能力很強,一個月能產1000-1200粒卵,而且他們產卵的地方是在水面之上,沿著植物的莖葉放置卵,因此可以逃避魚類的覓食,且鳥類也不喜歡覓食,於是就可確保大量的卵可以孵化,於是福壽螺就此大量繁殖。前台大生物資源暨農學院長楊平世與台大農業經濟學研究所的研究團隊用經濟學公式推算「二十五年來福壽螺已吃掉台灣一百億」,民國七十五年統計,福壽螺入侵對稻米生產造成的有形損失即高達每年新台幣十二億元,之後每年對水稻等農作物的損害約一億元以上;累計對生態實際造成五十一億元的經濟損失,若再加上政府與農民所曾投入的防治費用,損失金額直逼一百億元之譜,幾乎吃掉了四分之一條的高速公路,而且,這場戰爭還沒有結束,現在臺灣鄉間溪流田野仍可見福壽螺與紅色的卵。

上面所列的是經濟上的損失,為了防制福壽螺,農夫大量噴灑農藥,造成田野間很多動物都被毒死,所以有很多原生生態因為福壽螺而死,這樣的損失實在難以估計。

狗,是人類的好朋友,也許您會認為,狗與人類相處這麼久,任意放生,應該不會造成問題。但是,您若將狗放生於市區,狗會因為害怕(試問您若被相處多年的親人所騙,拋棄至一個人生地不熟的地方,您會不會害怕?),或者自衛,或者飢餓,而攻擊他人,造成社會問題,假如棄養於山區呢?狗會在山區向遊客乞食,或因食物而攻擊遊客,也會因食物不足而捕捉山中的野生動物,破壞原有的自然生態。

陽明山大屯自然公園因民眾與宗教團體的任意放生,原公園內的茂密的水生植物,早就被錦鯉、巴西烏龜等破壞殆盡,而網友更拍攝到原屬於觀賞魚類的「金波羅」也已經出現在大屯自然公園(網址: http://x4.net.vnu.edu.tw/~tbgweb/cgi-bin/topic.cgi?forum=13&topic=1724&show=0 )。

而因民眾任意在日月潭放生觀賞用的玻璃魚和紅魔鬼魚,造成日月潭俗稱總統魚的曲腰魚數量銳減,瀕臨滅絕厄運,而俗稱垃圾魚的琵琶鼠魚也造成臺灣各大河流的嚴重威脅。農委會特生中心及雲林縣環保局九十一、九十二年調查北港、濁水溪生物生態都發現,原為觀賞及清潔魚缸用的琵琶鼠魚,在野外數量持續增加。且琵琶鼠魚在汙染嚴重的溪流中,依然能存活繁殖。以雲林縣境流溪為例,除濁水溪外,多數溪流均嚴重汙染,水質惡化底層烏黑,有如惡臭排水溝,但從河口到海拔三百公尺流域,都可發現大量琵琶鼠魚。琵琶鼠魚也危害冬山河水域,宜蘭縣風管所三年前調查,估算每十平方公尺水域中就有三尾,冬山河長十多公里、寬一百三十公尺,換算有數十萬條。

中國畫眉與中國藍鵲的入侵,開始影響臺灣畫眉與被譽為國鳥的臺灣特有種臺灣藍鵲,雙雙面臨生存空間被壓縮與面臨絕種的威脅。

因您的一念之間,放了這麼一個生物,卻造成萬物的痛苦,您造了一德,救了一命,卻造成眾多生命的死亡,造孽數千,那麼您有得到福報嗎?

請勿放生:放生不會因原生種而得到掌聲

也許您會認為,如果我們放生的是臺灣原生種,那這樣就不會造成臺灣的生態威脅,其實只要不是原生地的放生,都會對當地的生物造成生存上的壓力,我們可以這樣想:「一個地方食物有限、空間有限,突然間,湧入了許多相似或者更強悍的競爭者進來,搶食物,搶空間,甚至搶老婆,請問原生地的動物該如何生存下去?」

臺灣有白頭翁與烏頭翁兩種鳥類,而烏頭翁是一種台灣特有種鳥類,長像與生態習性都跟白頭翁極為類似,分辨特徵在他們的頭頂,烏頭翁整個頭頂是黑色的,白頭翁則有白色斑塊。我在花蓮看到烏頭翁時,其實蠻興奮的,因為這是臺灣眾多特有生物之一,全世界只有臺灣東部才看的到。因中央山脈的阻隔,白頭翁分布在台灣西半部平原與宜蘭,而烏頭翁則廣泛分布在花蓮、台東與恆春半島。只有在兩個領域交疊的區域可以同時看到白頭翁與烏頭翁,還紀錄到一些雜交的「雜頭翁」出現。但因為放生團體的任意放生,將白頭翁帶到東部放生,已經造成烏頭翁的族群面臨威脅。未來我們的孩子,不知是否可在花東地區看到屬於臺灣的烏頭翁嗎?這些放生的人是否想過他們不僅摧毀一個鳥類族群,也摧毀屬於我們共有的珍寶。

今年(2007年)4月26日有一則新聞:「棄養蓋斑鬥魚吃光蝌蚪 大甲溪生態被破壞」,報導部分民眾將棄養的鬥魚任意放流,卻造成生態環境的破壞。台中縣大甲溪生態協會24日肯定石岡鄉積極推動「蓋斑鬥魚」復育的保育觀念,但建議任何物種的復育前,必須進行棲地完整的調查,並呼籲民眾勿任意放流蓋斑鬥魚。

石岡鄉石雕大師郭可遇,為重溫孩童時期田園蟲鳴蛙叫的大自然景觀,自闢生態池復育多種青蛙,日前發現生態池中竟然出現上百尾的「蓋斑鬥魚」。不但將池中的青蛙卵、蝌蚪以及蜻蜓的幼蟲吃掉,最後連青蛙都不敢靠近池中,造成池中生態嚴重的破壞。所以,您若是好心的想要復育臺灣原生動物,例如蓋班鬥魚,請量力而為,先做好功課,確定自己可以養殖再進行,而不要一時興起而養殖,最後隨意放生,造成其他生物滅絕的浩劫。

臺灣這幾年在不少有心人士團體的推動下,保育的觀念漸漸的讓大家所接受,大家也關心注意到我們這一片土地上,屬於我們的特有生物目前生存的困境。但是,放生並不是幫助這些特有生物生存的方法,保護原有生存的環境才是最重要的。在楊老師的青蛙小站討論區(http://photo.froghome.tw/phpbb/viewtopic.php?t=176 )裡看到這樣的消息,原分佈於嘉義、雲林、台南等地的諸羅樹蛙,在民國95年時有人在宜蘭與台北翡翠水庫發現。諸羅樹蛙不會自己到北部,所以這也是人為放生的結果。也許您會說諸羅樹蛙的數量少又很漂亮,應該要將他們放生,讓他們多多繁衍。但是,您是否想過,原來世居於宜蘭與台北翡翠水庫的青蛙,數量就會很多嗎?而且在環境沒有改變之前,食物有限、空間有限的情況下,如此放生,犧牲的會是誰?所以對於臺灣本土生物,我們要作的,應該是環境的維護,讓他們可以在原來的環境生存,而不是將他們帶到另外一個環境內,與其他臺灣本土生物一起競爭。就當地生物來說,不管您放的是臺灣原生種或是非臺灣原生種,對他們來說都是外來種,都是競爭者。

請勿放生:放生與捕捉

有些宗教團體認為「有放生的善報,捕殺有捕殺的惡果,我們放生的人作自己的功德,人家捕殺的造自己的罪過。總不能因為有惡人捕殺之罪行,我們便放棄了放生之善行吧!」,但實際上,很多捕捉放生動物的商家,就是為了要提供放生的動物才捕捉。於是乎,有人放,有人抓,這些動物不但沒有得到安樂,反而陷入捉放的痛苦深淵內。

而且這樣的放生活動,不會降低動物被宰殺的數量,相反地,因需從野外捕捉,所以對野地造成生態失去平衡與破壞,因需提供放生,而增加飼養繁殖的數量,生命沒有得到安康,也因放生,所以需將動物搬運到山區或河邊、海口,動物在搬運過程中的痛苦與死亡倍增,這些苦痛,是誰造成的?有必要造成這些動物的苦痛,來成就放生者的功德嗎?

所以印順導師就曾在他的著作中要求「善心的佛弟子,少為自己的功德打算,多為無辜的放生物想想」,並且強調「佛法不只是信仰,不要專為自己著想,迷迷糊糊的造罪業」,呼籲:「以放生為事業的法師、居士們!慈悲慈悲別放生!」

請勿放生:佛教裡的放生

有些人說,「放生」是佛教的文化。其實華人放生的習慣,在佛教傳入之前就有了。《列子﹒說符篇》內有這麼一段文字:「邯鄲之民以正月之旦獻鳩於簡子,簡子大悅,厚賞之。客問其故。簡子曰:「正旦放生,示有恩也。」客曰:「民知君之欲放之,故競而捕之,死者衆矣。君如欲生之,不若禁民勿捕。捕而放之,恩過不相補矣。」簡子曰:「然。」」,由此可知東周時代就有逢節目放生的習俗,而且還有專門捕捉動物以提供放生的行為。

而佛教裡如何談到放生呢?《梵網菩薩戒經》卷三提到「若佛子以慈心故行放生業,一切男子是我父,一切女人是我母,我生生無不從之受生。是故六道眾生皆我父母,而殺而食者即殺我父母亦殺我故身。一切地水,是我先身,一切火風,是我本體,故常行放生,生生受生。若世人見殺畜牲時,應方便救護解其苦難,常教化講說菩薩戒,救度眾生。」,這可說是佛教放生的理論依據,再由《大正新脩大藏經.第四冊.雜寶藏經》內的這一段文字,可以表現出佛教的放生的精神:「沙彌救蟻子水災得長命報緣:昔者。有一羅漢道人。畜一沙彌。知此沙彌卻後七日必當命終。與假歸家。至七日頭。敕使還來。沙彌辭師。即便歸去。於其道中。見眾蟻子。隨水漂流。命將欲絕。生慈悲心。自脫袈裟。盛土堰水。而取蟻子。置高燥處。遂悉得活。至七日頭。還歸師所。師甚怪之。尋即入定。以天眼觀。知其更無餘福得爾。以救蟻子因緣之故。七日不死。得延命長。

由上述兩篇文章可知,佛教界的放生,是由戒殺而衍生的,換言之,戒殺僅是止惡,是消極的善行,放生才是積極的善行;但是放生是不限時間、地點,而是以慈悲憐憫之心,助萬物脫離苦痛,這是功德一件,然而現在的放生,是有目的的,這是「私德」,這是「貪念」,為了要做到「果思邀福,務廣其善,善何以廣,莫如放生。」(戒殺延生錄),更因為「諸餘罪中,殺業最重。 諸功德中,放生第一。」(大智度論),於是什麼都放。這是很糟糕的一點,西方人放生,大抵上是原地放生,例如野外釣魚,釣到小條魚兒就把他們放走,或者如同電影「馬達加斯加」,將動物運回原生地放生,但是我們卻是什麼都放,也不管這個動物是不是原生地,也不管這個動物是否可以適應環境,以為我們給他們自由,我們就做了善事,但卻不知您在河口放生朱文錦(這是淡水魚類),導致魚群死亡,或者您會看到一條溪流在很短的時間內,因突然湧進大量的吳郭魚而造成缺氧或空間不足而大量死亡。

所以,這樣的放生,是拯救生物的生命,是積功德,還是因您的「貪念」,而造成動物的大量死亡,造成孽緣呢?當生命有遭受危險之時,我們發揮菩薩心,救助生命,讓其生存,這才是佛教裡的放生精神。若以佛教的因果論斷,多少生物因您的放生行為而死,您是種了善因?還是惡因呢?

請勿放生:序

國小時,曾與叔叔於小溪流內抓過山蝦、毛蟹、溪哥,當我說起這段往事,很多人都會睜大眼睛,說我在騙人。現在台北的小溪流,不是惡臭,要不然都是吳郭魚加上福壽螺,能有什麼蝦蟹可瞧的,連大肚魚都只能在水族館內才能看到。其實二十年前的台北,很多人跟我一樣,有相同的記憶,而大肚魚更曾是諸多長輩年輕時的食物之一。

為什麼這些童年往事,變成了回憶?為什麼這些兒時回憶,成了過往雲煙,年輕一輩再也體會不到?經濟的快速開發,人口的增加,這些是影響的因素之一,但我認為影響最大的,是放生文化造成的。
以下一系列的文章將表達我的觀點。