Skip to Content
撰文於銘 飄散隨風 心行無語 仰首蒼穹

佛法幼幼班教材

這是一份基礎佛法心得,也是我試著用最簡單的說明,為佛法的次第做一個簡明的介紹。希望給對佛法沒有太多概念的人,有一個可以快速入手的地方。

Heaven

2017/07/01 ~ 2017/08/30

道諦與止觀法門

道諦又稱為苦滅道聖諦,意思就是滅苦的方法。前三個聖諦讓我們知道了什麼是苦,知道了苦的原因,也了解苦是可以被徹底止息的,最後一個聖諦就是實際執行的方法。

佛陀很明白的告訴我們,滅苦的方法就是「八正道」,本文除了簡單的介紹之外,我也試著說明我對道次第的理解。因為內容有些純屬個人的想法,所以請小心參考。

首先回到集諦的教導,在集諦中,我們知道苦的最主要原因是「渴愛」,而依十二緣起,也知道苦的最根本原因是「無明」,因此對治二者就成了二條極重要的主軸線。

雖然說是二條主軸,但這並不是完全互斥的二套原理或方法,比較適當的說詞應該是:這是由不同的方向來描述解脫的方法,或許偏重的角度不同,但原理大同小異,結果也是殊途同歸。

在佛陀提到解脫時,經常同時用這二個方向來描述,就是「心解脫」與「慧解脫」。例如:

《雜阿含119經》
「我諸弟子於此法中,得盡諸漏,得心解脫,得慧解脫,於現法中自知作證:『我生已盡,梵行已立,所作已作,自知不受後有。』」
(CBETA, T02, no. 99, p. 37, a6-9)

「心解脫」與「慧解脫」並不是二種可以分別取證的目標,二者都是解脫的特色,缺一不可。

《雜阿含710經》
「貪欲染心者,不得不樂;無明染心者,慧不清淨。是故,比丘!離貪欲者心解脫,離無明者慧解脫。」
(CBETA, T02, no. 99, p. 190, b15-18)

貪欲也就是貪愛、渴愛,離貪欲就是「心解脫」,離無明就是「慧解脫」,也就是斷除了集諦所指出苦的二大原因,結果就是解脫的二種屬性--心解脫與慧解脫。

滅諦與業力法則

苦既然是有因有緣而生起的,那麼只要不再造作苦因,自然就不會再有苦果生起,徹底滅苦也就成為可能。

因為最主要的苦因就是渴愛,所以滅諦最簡單的教導,就是「渴愛滅則苦滅」。

不過要徹底滅苦,有二個主要因素要考慮。第一個就是不再造作新的苦因,這就是前面提到說明。第二個就是,過去造的苦因要如何止息?

佛陀教導我們,過去無始劫來,我們已經造下了多到無法想像的各種業力,如果要等這些業力都成熟,真的不知道要等到什麼時候?如此一來,苦的止息難道是寄託在遙遠而不可知的未來嗎?

所幸佛陀也教導我們,並非要等到全部的業都成熟之後才能徹底滅苦。業的成熟是要有因緣的,只要我們不提供適當的因緣,業就沒有成熟的機會。

集諦與十二緣起

什麼是苦的生起之因?

佛陀以他的大智觀察苦的因緣,他了解「老病死」的因緣是「生」,只要有出生,就有老病死等純大苦聚。

進一步溯源,生的因緣是「有」,有的因緣是「取」,取的因緣是「愛」。

也就是說,當眾生產生了貪愛,進一步執取,便造下了未來有的因緣,就會在未來世繼續不斷生老病死苦的輪迴不止。

再往上探尋,愛的因緣是「受」,受來自「觸」,觸來自「六入」,六入來自「名色」,名色則來自「識」,再往上則發現識又來自「名色」,造成一個無始的循環。

苦諦與四法印

「云何苦如實知?謂生苦、老苦、病苦、死苦、恩愛別苦、怨憎會苦、所欲不得苦,如是略說五受陰苦,是名為苦。」《雜阿含.344 經》

「苦」最常聽到的解釋就是上述經文中的八苦。不過看起來好像只有七苦,最後用五受陰苦做為總結。有的經文則不止八苦,有時也會看到憂悲惱苦。這些是列舉式的說明,不一定每次內容都相同,最常聽到的就是八苦。

前七苦是比較容易理解的苦,也就是一般苦難的苦。第八苦是五受陰苦,也有譯為五取蘊苦,這就包括了一切的苦,而前七苦也都是透過五蘊感知而來的。

五蘊就是「色、受、想、行、識」,一切有為法皆包含在這五種法之中。簡單來說「色」就是地水火風四大、物質,「受」就是心的感受,「想」就是心對事物的標記、想像,「行」就是除了受與想之外,其他心的作用,皆屬於行。「識」則是了別識知的功能。

更簡單的分類就是「名」與「色」二法。色就是色蘊,其他四蘊都是名法,也就是非物質的心法。

《雜阿含282經》與《中部152根修習經》的三種修根

關於《雜阿含282經》與《中部152根修習經》二經提到三種修根的方法與次第略有不同,我的看法如下。

其實這種問題我也沒能力考證什麼,通常都只有自己的 "選擇" 而已,也就是沒什麼太多的理由,就是自己的想法。

經中提到的三種修根,印象中好像有看到論中談到 "凡夫" 修諸根,我是覺得這三種並沒有針對凡夫來談,我先列我覺得由易而難的次第。

1. 「眼、色緣,生眼識,生可意,生不可意,生可意、不可意,彼聖弟子慚、恥、厭惡。

這是有學行者的修根,雜阿含經與中部尼柯耶看法一致。

2.「眼、色緣,生眼識,生可意,生不可意,生可意、不可意,彼聖弟子如是如實知:『我眼、色緣,生眼識,生可意,生不可意,生可意、不可意,此則寂滅,此則勝妙,所謂俱捨。』得彼捨已,離厭、不厭。

3.「緣眼、色生眼識,見可意色,欲修如來厭離,正念、正智。
眼、色緣,生眼識,不可意,{故}[欲]修如來不厭離,正念、正智。
眼、色緣,生眼識,可意、不可意,欲修如來厭離、不厭離,正念、正智。
眼、色緣,生眼識,不可意、可意,欲修如來不厭離、厭離,正念、正智。
眼、色緣,生眼識,可意、不可意、可不可意,欲修如來厭、不厭俱離,捨心住、正念、正智。

以上經文引用至莊春江工作站 http://agama.buddhason.org/SA/SA0282.htm

自己寫一個 GUI 版 C++ Builder 單元測試

最近在寫一個較大的專案,而且要能在 Windows 和 Mac 上執行(Android 和 iOS 以後再考慮),加上第一次用新版 C++ Builder 跨平台的版本寫大專案,所以凡事起頭難,這也是第一次想加上單元測試,以利後續檢查與驗證。

C++ Builder 上面宣稱已有跨平台版本的 DUnitX,詳見如下:

http://docwiki.embarcadero.com/RADStudio/Tokyo/en/DUnitX

主要方法是在 __published 的宣告範圍內寫下要測試的程式,然後自行把每一個測試程式寫進去,執行時就會逐一執行測試程式,最後把結果列出來,如下圖。

用 #ifdef 判斷作業系統

在程式中若是要因應不同的作業系統而有不同的內容,則可以用底下的方法來處理。

#ifdef _Windows

….. (windows 下的程式)....

#endif

底下是目前在 C++ Builder 實際試出來的。

Win32 下有

_WINDOWS_
_Windows
WIN32
_WIN32
__WIN32__
(注意 : 這個在 Win64 沒有)

Win64 下有

_WINDOWS_
_Windows
WIN32
_WIN32
_WIN64

後來在這裡有查到一些,但沒有我測試的完整

http://docwiki.embarcadero.com/RADStudio/Tokyo/en/WIN32#win32

看來判斷 Windows 可用 _Windows

Win32 則用 __WIN32__

Win64 則用 _WIN64

Android 則用 __ANDROID__

Mac 和 iOS 則用 __APPLE__

iOS 則用 TARGET_OS_IPHONE

32位元手機則用 __arm__

64位元手機則用 __arm64__

利用以上去組合,應該就可以判斷了。

補充: 後來看到這篇 

http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Creating_an_iOS_App

提到 iOS 可以使用  TARGET_OS_IPHONE 來判斷。

還有如下例子:

#if (TARGET_OS_IPHONE)
// Code for iOS devices only.
#endif
 
#if (TARGET_OS_IPHONE) && (__arm__)
// Code for 32-bit iOS devices only.
#endif
 
#if (TARGET_OS_IPHONE) && (__arm64__)
// Code for 64-bit iOS devices only.
#endif

 

將 TWebBrowser 設定成 IE 11

C++ Builder 不管是 VCL 或 FireMonkey,都有 TWbeBrowser 元件。在 Windows 系統下,該元件就是一個內嵌的 IE。

其實我很想不要用 IE,希望找到內嵌的 chrome 元件,但目前找到的好像不是很好處理,也擔心日後升級問題,所以在 Windows 下還是暫時先以 IE 為主。

查了說明文件,指出內建的 TWebBrowser 預設的版本是 IE 7。所以我寫了一個很簡單的程式,用 FireMonkey 版的 TWebBrowser,直接連到一個 HMLT5 的網頁

https://www.w3schools.com/html/tryit.asp?filename=tryhtml5_video

這個網頁我在 IE 上測試,要 IE 11 才能順利執行。

底下是我的測試程式執行結果,可以看到就是沒有什麼結果。

C++ Builder 處理 3D 物件及動畫

3D 物件程式

參考:http://docwiki.embarcadero.com/RADStudio/Tokyo/en/FireMonkey_3D

C++ Builder 可以處理 3D 程式,主要方法簡述如下。

1. 若要能直接放 3D 物件,一開始就要選 3D Application。

2. 若不是在  3D Application 的程式中想加入 3D 的物件,要先加入 TViewport3D 元件,才能在裡面放 3D 物件。

3. 反之,如果要在 3D Application 放 2D 元件,就要先放 TLayer3D 元件,才可以在裡面放 2D 元件。

訂閱文章


by Dr. Radut