Skip to Content

★★

第三世多杰羌佛義雲高背離佛法之處

 
最近又看到義雲高的信眾在網路上宣傳他們的上師,對於自稱是第三世多杰羌佛的義雲高,在此我引用一些基本教義來指出他們的問題。
 
*** ***
 
1 佛法教導中最重要的核心就是「涅槃」,在三法印中被描述為「涅槃寂靜」,意思也就是不再輪迴轉世、不再出生、不受後有。
 
在佛教中,有三類聖者皆是如此,即佛陀、辟支佛、阿羅漢,這三類聖者皆不可能再輪迴轉世。
 
也許有一種情況,就是佛陀可能會以本尊或分身至他方世界隨緣教化,或現出家身、或現居士身,但不可能是重新出生轉世,因為這已違反佛教根本教理。
 
所以號稱第三世多杰羌佛的義雲高應該算是附佛外道了,因為他的存在方式就違背佛教三法印了。
 

Swift 使用 ZipArchive 解/壓縮檔案

工作中有需要使用到壓縮與解壓縮 zip 檔案,原本 Mac 以為內建的壓縮功能就可以做到,如下:

https://developer.apple.com/documentation/compression

結果試了半天,也查了一堆資料,好像都無法做到。在查詢資料的過程中,也看到很多人推薦 ZipArchive,我也就用它來測試了。

https://github.com/ZipArchive/ZipArchive

ZipArchive 是 Objective-C 寫的專案,我是要用 Swift 去執行,底下記錄了詳細過程。如果對於 Swift 連結 Objective-C 想多了解一點,可參考這篇:Swift 連結 Swift、Objective-C、C++

ZipArchive 的 Github 專案上有教導如何安裝使用,因為我沒有使用其他安裝工具,所以我採取手動安裝,它主要方法有四:

  1. Add the SSZipArchive and minizip folders to your project.

  2. Add the libz and libiconv libraries to your target.

  3. Add the Security framework to your target.

  4. Add the following GCC_PREPROCESSOR_DEFINITIONS: HAVE_INTTYPES_H HAVE_PKCRYPT HAVE_STDINT_H HAVE_WZAES HAVE_ZLIB $(inherited).

 

底下逐一記錄過程。

Swift 連結 Swift、Objective-C、C++

本篇在說明 Swift 連結其他專案的 Swift、Objective-C、C++ 的方法與注意事項。

 

Swift 連結其他 Swift

 

假設有一個目錄 testClass,底下有三個程式 

 

main.swift

person.swift

year.swift

 

其中 person.swift 會使用 year.swift 的內容,現在新的專案需要用到 person.swift 與 year.swift。

 

要加入檔案或目錄時,要選擇 Xcode 功能表的

 

File -> Add Files to "myProject"...

 

此時有這些選擇,通常我都不選 Copy ites if needed,以免被引用的專案後來有更新時,引用的專案還是用已經複製進來的舊版資料。當然,這功能我也不清楚,也許未來真的有需要使用的機會。

 

將 CheckBox 嵌入 TableView 中使用

在看此篇之前,一些基本的重點要先參考「Mac Cocoa NSTableView 程式與綁定
 
這一段是記錄把 CheckBox 放在 TableView 中使用所遇到的一些狀況。

這是一個標準的 Column 設計。

首先把紅色的部份移除,換成 CheckBox,如下圖。

註:其實還有一種方法,就是不移除 Table Cell View,只移除 Table View Cell,然後用 CheckBox 取代 Table View Cell。底下程式也會需要修改。

然後設定 CheckBox 的 Identifier,本例為 tableCheck。

我支持蔡英文和民進黨的二大理由

我要說明為什麼要投票給蔡英文和民進黨,若你的看法不同,請花點時間看看我的二大理由。
 
可以說的理由其實太多了,但最重要的一點,就是我反對共產黨,我不想看到台灣有一天淪落到共產黨手中,所以我一定要支持蔡英文和民進黨。
 
有人會說這是在操弄亡國感,我認為說這種話的人若不是沒看到事實,就是被洗腦被滲透而不自知。
 
看看新疆、西藏、香港,都是活生生又血淋淋的例子,共產黨的手段是何其殘忍且毫不留情的。我過去是支持藍營的人,以前的藍營是反共的,但看看現在的國民黨和泛藍政黨,幾乎都是中共的同路人,由此可知中共早就把手伸入了,而且成功的滲透了泛藍的團體。看到這些,你還會相信中共真的沒有要對台灣動手嗎?中共若真動手,對台灣會比對付新疆、西藏、香港溫和嗎?
 
真的到了那一天,你是要選擇勇敢站上街頭抗爭,同時擔心會不會變成明日的無名浮屍?或是選擇乖乖進再教育營每天被洗腦呢?
 
如果你無法選擇,那我勸你這一票選對人,未來就沒有這種選擇的困擾了。
 

Xcode 單元測試 (Unit Test 和 UI Test)

單元測試也是寫程式重要的一環,雖然我之前寫程式也沒有完全做到,但基本上的測試總是要有的,所以還是了解了一下 Xcode 上的單元測試。

我的環境是 macOS Catalina 10.15 + Xcode 11.1

建置專案

首先,在建立專案是要記得勾選「Include Unit Tests」和「Include UI Tests」。

如果一開始沒有加,也可以在主選單用 File -> New -> File... 加上去。

建好的專案就會像下圖一般,有 Unit Tests 和 UI Tests 二個區塊。

Swift 使用 XMLDocument 處理 XML

Swift 有二種處理 XML 的方法,一種是 SAX,一種是 DOM。SAX 是使用 XMLParser,功能比較單純,早期就是用這個方法處理 XML 經文,這種方法不易處理複雜的資料。DOM 則是用 XMLDocument,比較能依前後文的不同來處理資料,本文是介紹後者的功能。

基本功能介紹

 

載入整個 XML 檔案

let doc = try? XMLDocument(contentsOf: file)

取出 root

let root = doc?.rootElement()

取出指定元素

let node = root?.elements(forName: "body")[0]

取出元素名稱

let name = node.name

取出元素全部屬性

let attribs = node.attributes
if attribs != nil {
    for att in attribs!  {
        ......
    }
}

Mac Cocoa NSTableView 程式與綁定

經過這兩篇「NSOutlineView 使用程式呈現樹狀資料」、「Mac Cocoa NSOutlineView 資料綁定」的練習,這次直接處理 NSTableView,果然駕輕就熟,稍為查一些資料,很快就做出成果了,畢竟它比 NSOutlineView 簡單,基本架構都差不多。

這篇就不談太多細節,只把重點記錄下來。

資料綁定

先由資料綁定做起。

準備資料

TableView 是表格狀的資料,所以就用藏經目錄的結構來處理,底下只有三個欄位,ID、經名與作譯者。

宣告 catalog 變數,它是 Catalog 物件的陣列,底下建立了三筆資料。

Mac Cocoa NSOutlineView 資料綁定

此篇實作是接續「NSOutlineView 使用程式呈現樹狀資料」,那次是用程式來處理,本篇要使用 Cocoa Binding 的方式來綁定資料。

關於 Cocoa Binding,可先參考這篇「Mac Cocoa 資料綁定 (Binding) 實作測試」的基本概念。

簡單來說,就是利用資料綁定的方法來呈現樹狀目錄,而不是寫一堆程式來處理。

準備資料

為了配合綁定的需求,把上一個例子的資料稍為修改如下,主要是加上 class 要加上 @objcMembers,變數要加上 @objc 和 dynamic。

底下就是全部的程式了。

NSOutlineView 使用程式呈現樹狀資料

前言

在 Mac AppKit 中,樹狀圖元件是使用 NSOutlineView,這個又被翻譯成「大綱視圖」。

官方文件在此:

https://developer.apple.com/documentation/appkit/NSOutlineView

簡單來說,這個文件大概只比天書簡單一點,真不知誰能看的懂?沒有範例大概是最大的問題,整個 Mac 的說明檔似乎都沒有範例(有啦,上次看 WebView 有一個),而一些有範例的文件,不是時效有點久,就是用 Object-C 寫的,實在很難參考。

翻了許多文件,剛好看到這一篇有人提出 NSOutlineView 的問題,其中一位解答的內容很豐富,有圖有程式,我就試著把程式複製起來,竟然順利執行成功,於是我逐一研究追蹤它的程式,再對照天書一般的說明文件,搭配 Google 翻譯服用,終於又有了初步的成果了。

一些心得

這陣子的研究,對 Mac 程式中的代理 (delegate) 有一點點感覺了。以前用 C++ Builder 處理樹狀目錄時,想法其實很直覺,就是先用程式把每一個項目產生並設定,然後把它們依順序串好,最後把這串交給樹狀目錄主元件,然後再呈現,就完成了。

NSOutlineView 處理的方法不同,它有四個主要的資料處理和代理程式,我們要依它的規則去實作,最後才會產生結果。

我想這大概是以前看過某篇提到的感想,Windows 的作法是把程式、資料、元件等混在一起,不是良好的 MVC 模式,而 Mac 的分離就比較清楚。資料歸資料、處理程式歸程式,畫面由代理程式處理。

底下一一實作並說明。

訂閱文章


about seo