2018年12月22日 星期六

Domino與Node.js


那天去上了IBMNode.js進行Domino新開發實戰的課程後,

回來本來是想分享一下想法,讓沒去的人也可以有點收穫,但一忙就忘了,今天補了起來,大家就加減看一下。

https://m.box.com/shared_item/https%3A%2F%2Fibm.box.com%2Fv%2Fdomino10nodejs

選擇node.js做為整合的對象,對notes來說是有很大意義,

node.js的語法就是JavaScript,如果有寫Web前端的程式,應該都很熟悉,也很容易上手。

一直以來Notes被詬病為封閉的系統,主要是因為不像其他程式,以RDB資料庫儲存data,任何程式都可以對資料加以新增修改刪除,而Notes卻只能寫好現成的程式讓人呼叫,總是不那麼自由。現在提供了一個module,一個API,在系統整合上算是跨出了一大步。

可惜的是目前只提供了在Linux環境下可使用。我對Linux的認識就停留在只會拼字,其他完全沒概念,所以只好等windows版本出來才能測試了。

回到JavaScript語法,JavaScript可以直接在瀏覽器端操控使用者的頁面,比起後端程式將request傳到Server執行計算結果再傳至瀏覽器,JavaScript的效率根本是個神。

可惜的是,之前認知的JavaScript都只是前端的程式,沒辦法跑在Server端,如果要取得資料,即使是ajaxweb service也還是要去呼叫後端的程式來執行。

xPages上的SSJS雖然名字中有JavaScript,是多了很多web觸發的event或部份更新套件,畢竟還是Server端的程式,而不是JavaScript

node.js實實在在就是在server端的JavaScript的語法。以那天上課的hello world為例,

console.log('hello world');

在命令字元上直接執行就可看到hello world的結果了。

開記事本寫入JavaScript程式後,存成xxxx.js的檔案,就變成一個可執行的module

在程式中若要使用其他模組中的function,只要require("xxxx.js")呼叫即可將其他modulefunction傳過來,可以想成是在lotus script中用include library後呼叫function

若是安裝了npm,可以從網路上直接引用別人寫好的module,取之不盡的現成module,是node.js之所以強大的其中一個原因,

而這次dominonode.js能夠整合,也是domino提供了現成的modulenode.js引用,只是目前這模組在網路上應該是找不到的,要自己下載到local端。

那天上課用的express module就是常用的module之一,要架一個web server,不再需要繁複的步驟,只要簡單幾行,全世界最簡便的web server就完成了。

var express = require('express');
var app = express();

app.listen(3000, function(){
        console.log('Example app listening on port 3000!');
});

(這是修改上課的例子,還是要註明一下以免被告)

把以上的程式存成index.js檔,然後在命令提示字元中下指令,
node index.js

就會執行這段程式,把web server架起來了,有沒有超強?

接下來要講的是第二個是我覺得node.js很重要的概念,當你程式執行後就常駐在server,其實並沒有看到任何的呈現,怎麼知道程式有在執行?

我們先回頭來說明一下listen那行的程式,這行的意思就是程式會持續不斷地監聽server port 3000

listen那行裡的function,是指當有人透過url連到port 3000時,就會觸發function的執行,

所以你就用browser連到server   http://xxxxx:3000

然後在server console上出現   Example app listening on port 3000!

很酷的是,這支function被當作listenmethod的一個參數,也就是當監聽到了就立馬去執行,

甚至也不用給它function name,這就叫做匿名程式,當然給了也可以,或是直接呼叫現成的function

總之,就是當有人連到serverport 3000時,在server console上就出現 Example app listening on port 3000! 這段字,表示程式執行了。

從一開始在server上以node index.js啟動這支index.js程式後,到最後console出現文字,

我們發現程式的執行是不對等、不同步的。

也就是,程式啟動後先跑了一部份,剩下的等有機會再傳回,這方法就叫做Callback

和我們以往的概念不同,試想,不管是.NET, PHPNotesweb程式執行的概念都是以url傳送requestserver

然後Web Server接收到請求後會建立一個procedure,再呼叫對應的程式執行,最後再產出後output,並結束procedure

這方法最大的問題在於,假設執行的後端程式非常輕量化時,inout這兩個動作就佔用了超過一半以上的資源和時間。

而每一次的執行,就會再開啟另一個新的procedure

比起早就等在路上的node.js的程序,這速度根本沒得比。

再借用一下IBM的圖,不要告我!


這支index.js常駐程式就一直監聽著port 3000,反覆地把request後送並傳回,有沒有很聰明?我不明白為什麼翻成事件驅動,但大致上就是這個概念。

我必須要強調的是,「假設執行的後端程式非常輕量化時」,也就是node.js的程式若是要處理的是大數據或要跑上數分鐘以上的大程式,

in/out所耗用的時間不成比例,用這方法就失去意義了。

node.js是單一執行緒,那天上課也有提到blockingnon-blocking,在說明之前要先強調,也就是說如果你寫的是blocking的程式一次就只能做一件事,當這支程式被呼叫時,下個呼叫者就必須等到前一次執行結束時才能繼續執行。

因此我們在操作時當然該多使用non-blocking的操作,在node.jsnon-blocking的程式碼運行順序和我們之前認知的有所不同,當你以如上例的callbackfunction的計算分散進行時,你可以想像成就像我們使用javascript呼叫ajax程式時,現有的程式也是同步併行,而不是以順序執行。

在程式規劃時就可以將更耗費資源的程式丟給另一支function去執行,只要二人約好,等等把執行完的結果丟在前面路口就可以了。

呃。。。不好意思,公司要發湯圓了,剩下的有興趣的人再上網去查資料吧。

2017年11月22日 星期三

程式產生Excel時可能發生的錯誤訊息

今天要談的是程式產生Excel檔時可能發生的錯誤訊息。

先把所有可能出現的問題及訊息整理如下:
1. 程式原本都沒有問題,但在升級至Windows Server 2008後,排程代理程式便出現了錯誤(據說Windows Server 2012也有相同的問題)。
2. 錯誤程式是停在 Set exlSht = exlWbk.Worksheets("Sheet1")
3. 在本端執行沒有問題,但若排程或Run on Server或在Web執行時便出現Automation object error錯誤訊息。
4. 錯誤程式是停在Set exlApp = Createobject("Excel.Application") 錯誤代碼201。
5. 有時候是Microsoft Excel: Class Workbook的SaveAs方法失敗 錯誤代碼213。
6. 最奇怪的是,如果Server是在log out時才會有Automation Ojbect error的訊息,只要有人登入或用遠端連入時便一切正常。

完全解決攻略

1. 首先是程式部份,也是最容易解決的問題,若錯誤訊息為Automation object error且錯誤行數停留在 Set exlSht = exlWbk.Worksheets("Sheet1")
最有可能的原因就是安裝Excel時中英文版本的差異,若Server安裝的Office版本為中文則把此行改為Set exlSht = exlWbk.Worksheets("工作表1") 就行了!



2. R5升級R6之後的版本,代理程式新增了安全性的屬性,若程式中有CreateOjbect則執行時期安全層次設定需為2.允許受限作業 或 3.允許以完整管理權執行受限作業,如下圖:


3. 順帶一提,雖然機會不大,但如果是要以程式將代理程式塞入系統設定值,則修改代理程式的系統欄位$Restricted,值為數字型態,如下圖。但要特別一提的是,三個選項的value依序是,非常詭異,所以value需為02

4. 若在調整了代理程式的安全性仍無法解決,則應由OS找尋問題,首先先至系統管理工具>元件服務>電腦>我的電腦(按右鍵)>COM安全性>編輯預設值


然後確認系統使用者允許本機啟用,在這先得確認代理程式執行時是以何身份,然後在此清單中的本機啟用是允許的。


5. 如果以上設定後仍有相同錯誤,請試著若Server為Log in狀態時是否就可執行,若Server為Log out時則有錯誤。對,這種情況非常詭異,若是如此,則請調整,元件服務>電腦>我的電腦>DCOM設定>Microsoft Excel應用程式>內容>識別身分,若設定為「互動式使用者」,則更改為「執行啟動的使用者」,確定即可。設定在「互動式使用者」時,是指權限比照登入時的帳號,若沒登入則自然沒有權限。

6. 若以上設定後仍有相同問題,則步入最後放大絕,保證藥到病除。首先確認本Server為Server 2008 x64(64位元)或Server 2008 x86(32位元)。



系統類型若為64位元,則在C:\Windows\SysWOW64\config\systemprofile路徑下新增Desktop的資料夾。
系統類型若為32位元,則在C:\Windows\System32\config\systemprofile路徑下新增Desktop的資料夾。或乾脆二邊都加也可以。


在以上設定完成後,相信問題一定可以排除(至少不會再是這個錯誤訊息),原因不是很確定,而我也很好奇錯誤的原因,為什麼在新增資料夾後就不再有錯誤。我找到這篇文章,https://blogs.msdn.microsoft.com/dataaccesstechnologies/2012/12/19/error-microsoft-office-excel-cannot-access-the-file-while-accessing-microsoft-office-11-0-object-library-from-ssis/

以Service執行的確有此問題,而Application沒有試過,不能確定。似乎是在CreateObject時會在Desktop的folder下新增暫存檔案,卻因找不到路徑而錯誤。奇怪的是,這問題似乎被列為Server 2008的issue,只是我不能理解如果在網路上已找出這樣的解決方法,為什麼還會在R2之後還會被列為issue?!

2017年8月27日 星期日

遞迴製作組織圖

之前曾寫過一篇關於遞迴的文章,最近因為組織圖的需求,又燃起了內心的小宇宙。


先放結果,圖面大約就是如此,原圖太長了,超難放,當個示意圖就好,且似乎是因內含程式碼,整篇字體七零八落,花了一小時寫內容,卻花了三小時調字體或改貼圖。

組織圖當然也可以在點入時再加上一些Detail或頁面的變化,過程比想像中還更容易些,步驟說明如下。

要在網頁呈現樹狀圖,第一個聯想到的一定就是ul、li的tag,網頁呈現組織圖的第一個步驟也是如此。

以上基本的概念應該不難理解,網頁開啟時算出程式碼後的工作,
1.將以上的HTML Code塞入HtmlData的RTF欄位中,因一般欄位有長度限制,建議使用RTF

2.將第一個ul隱藏,因為原始碼只是提供了來源,還是透過CSS在上圖的chart division中呈現。

基本上只要再加上以下的CSS和jQuery toolkit就大功告成了。這是實際測試,去蕪存菁後的最精簡版本,這些全是open source,可以自行Google取得原始碼。如果要修改顏色大小字體方框粗細等屬性,就在jquery.jOrgChart.css中自行設定即可。

有些資源甚至不用下載,來源直接連至google,安全又方便,如

以上很快速地分享完了,但其實今天的主題是遞迴,也就是在網頁開啟時該如何計算組織的HTML Code。

在公司架構的上下層關係連結中,部門文件中大都會有一個”上層單位”的欄位,也就是記錄著此部門的上層單位。

基本邏輯是,先取得一個最高組織A後,畫出第一個框框,再去比對有沒有以此部門為上層單位的部門集合(也就是此部門A的下層單位),有的話就找第一個部門B1畫框框後,同樣去找有沒有以此部門B1為上層單位的部門(也就是此部門B1有沒有下層單位),如果有就再繼續找其下層的第一個部門C1畫框框後,再往下找,如果沒有,就回到這層的第二個單位C2畫框框並往下找,等這層都結束了再回上一層畫第二個框框B2並往下找。。。直到第一層的下層單位Bn都跑完為止。

聽起來超繞口的,將執行順序畫成圖就一眼明白!

我們舉個例子,今天有一個大箱子,箱子打開後,裡面還會有幾個箱子,而每個箱子再打開後,每個箱子裡又可能有幾個箱子,也可能打開是空箱,就這樣一直下去,沒有規定數量,也沒有規定層數。而其中有一個不確定大小的盒子裡面放著一顆寶石。

如果要用一支程式表達,把這紙箱打開後找出寶石,該怎麼做?打開第一個大紙箱後,再打開第一個中紙箱,若還有小紙箱就繼續打開第一個小紙箱,小紙箱打開如果沒有紙箱了,就開啟第二個小紙箱,等小紙箱都開完了,再回上層去開第二個中紙箱。。。。。。直到找到寶石為止。

這個過程你會發現,與平行執行的迴圈不同,遞迴是以縱軸在執行,且不像迴圈有著特定的層次或數量,用迴圈不是做不到,只是很痛苦。

以流程圖來表示更為明顯,你只需要一個步驟。
再舉個例子,要如何從一加總到十,不管是什麼程式語言,第一個浮現腦裡的程式一定就是:

以遞迴的觀念,提供另一個思考的方向,當你要得到1到10的總合,其實就是將10再加上1到9總合,而1到9的總合,就是9再加上1到8的總合。如此一來,就是由大到小,將自己加上前面數字的總和,在程式裡必須不斷去呼叫自己,直到為0才離開,再一層層地返回加總回去。

在程式中,X + getSum ( X - 1 )為一反覆執行的過程,直至X=0出口才返回。

從這二個例子中,可以發現很有趣的,是它後進先出的概念,一再重複呼叫自己直到出口點,完全沒有用到迴圈便能夠處理所有迴圈的問題。這類程式的優點,是將複雜的問題切割為細小可處理的小程式,增加可讀性,並重覆使用。

以生活化的說法,「遞迴」就像是拿著一面鏡子站在鏡子前,可以看到鏡子裡的自己拿著一面鏡子,裡面又看到自己拿一面鏡子...相同的影像不斷反射,而每次的影像都縮小些,而每個影像都是另一個影像的完全縮影。

而每次呼叫自己時會將資訊不斷堆疊在記憶體中,耗用的記憶體相較於迴圈是較大的,直至出口捲回時才將記憶體一一釋放,所以一個正確的出口相當重要,一但出錯便會踏入無盡迴圈直至耗盡記憶體而當機身亡。

回到剛才說的取得所有部門的程式,就這麼簡單,而且,效能超好。

其實以現有的網頁混搭技術,幾乎沒什麼想法是無法落實的,只是每種技術要耗費多少時間金錢,也取決於公司願不願意讓你研究、為你投資及維持更長久永續的產品生命。

一個每天見證著各式系統興起與落幕,且在程式文字上過著科技刀尖舔血日子的工程師,願意掏心掏肺地寫出這麼一段誠實到近乎荒誕的文章,真可謂佛心來著了。

探究和創新才是程式設計的本質,但這在不在乎程式設計師生命週期和生涯規劃的公司,是永遠無法被理解的。一個每天處理大量重複性事務的工程師,才是短視主管急於量化爭功的最佳工具,用著不明就裡的程式模組,也不被鼓勵提升,創新永遠只是簡報和口號,在日復一日的歲月消耗下,結局不是拉拔至管理階層的共犯,就是冷酷地放逐重練,順便再靠北一下停留在二十年前的程式工具和品質。台灣最不缺的就是這樣的公司。

2016年10月22日 星期六

同性婚姻

最近在金鐘獎一戰成名,炙手可熱的佼佼者,就是提出「同性戀導致人類滅亡」說法的李先知天柱,比他手上的獎杯有著十倍以上的知名度,接受訪問當下,惡評即如野火燎原,一發不可收拾,甚至延燒到大法官出面表態,這結果並不意外,雖然柱哥趕緊出來滅火,說是大家誤解他的意思,但究竟是什麼意思,他當然也說不上來,只好躲起來等火消退。

他心裡應該覺得很鬱卒,打落水狗的很多,但相同立場的卻沒有一個站出來和他搭肩搖,這種言論也不是第一次出現,之前的郭采潔、梁文音、劉畊宏、王建煊、小馬。。。哪個不是被罵得噤聲失蹤一陣子不敢現身鏡頭。

反對理由中,不外乎二種聲音,一是宗教,一是同性戀無法傳宗接代,違背了人類存在的使命,是一種錯誤,請注意,會說是錯誤,或要救贖要治療要改變的,全都是認定同性戀是一種後天的行為,可以經過努力而改變。果真如此,這是不是也說明,異性戀也不是理所當然的預設值,而是經過學習而來?那為什麼卻只有異性戀可攏斷婚姻的專屬定義?

反同者將婚姻的使命定義為傳宗接代的說法相當愚蠢,也是犯了眾怒的最大敗因。如果傳宗接代為婚姻的必要條件,我倒覺得,衛道份子應該一視同仁,主張取消現有的婚姻登記,直到順利生子後才可登記結婚。所以啦,不管是不孕、停經、跨性別、夭折等原因,一律不承認婚姻效力,若是女方未孕男方卻外遇生子,也可理所當然扶為正宮。

那個誰誰誰,要不要出來解釋一下啊?知道自己理弱,邏輯也想不明白,又怎麼會一個口徑地堅持自己都不懂的事?巧合的是,這些人剛好都是天主教基督教的忠實信徒來著,基督教和天主教就是全世界反同角色裡的最核心組織,耳濡目染下就沾染了一知半解的反對立場。

所以,每個站出來假裝很有智慧卻被打槍的,幾乎都是揮舞著宗教大旗,說自己的立場出自聖經,希望有神明和教友為自己背書,但台灣經過幾次社會運動的撻伐及網路一面倒的鯨吞,已經沒人願意再跳出來當分散砲火的標靶。在民意及輿論的壓力下還會公開打壓同性戀的愚勇者,也是值得專文歌頌的奇葩了。

但我還是覺得很可惜,因為反對方除了宗教外,其實該要有更完整的論述來說明。這些蠢蛋氣弱,在批判之餘,還妄想藉此顯示自己的氣度,一定會搬出,我沒有歧視同性戀,事實上我有很多同性戀的好朋友,只是這是錯誤的,至於為什麼錯,就只好又搬出聖經和法條,婚姻就是由一男一女因相愛。。。

婚姻的目的,到底是為了給予相愛的一男一女對外交往的羈絆,亦或是讓所有相愛的人都能有更多分享幸福人生的機會?

當然不是每個基督教天主教徒都對同性戀持反對意見,除了宗教外,還有一個重要因素的交集,就是單純看同性戀不順眼,覺得噁心、骯髒,缺乏道德的基礎,甚至認為是一種後天的身體和心理疾病,需要拯救及治療。

在這裡提到道德的字眼,是因為他們真正思考的就是這二個字,卻無法說出口,很難解釋明明覺得同性戀是種道德瑕疵,卻又覺得說出口又是自己的另一面瑕疵的矛盾心理。當我們在思考同性婚姻的正確性時,是否只能將正義簡化定義為爭取大多數人的幸福?是否也能一併維持面臨此一問題者的人生幸福?在烏蘇拉的小說中,有個幸福洋溢、無憂無慮的小城,但所有的人都知道,他們的快樂健康、風調雨順,全都有賴於一間地窖裡長年關著的一個營養不良的小孩,如果讓他離開那悲慘的環境,重見天日、舒適溫飽,一切美好景象都將化為烏有。這是談好的條件。 我們是否該視小孩的不幸是為了世人幸福的不得已犠牲?

我也不至於只是批判反同性戀的立場,相反地,我想整理一下是否有更深入且值得思考的立足點。在這之前,我們必需了解一些現狀,過往西方國家長年在政教合一的背景下,反對同性戀合法化的比例,比起台灣高出一截,且他們不用像東方人這麼含蓄保留,接受訪問時輕鬆表達反對立場。這是因為宗教在西方生活佔了很大的比重,有這麼大又有力的靠山自然更是有恃無恐。民事法條也是人所訂定的,下筆時考量到多數人幸福的基準,以神學立場來解釋法條或對婚姻加以定義,以當年的時空背景是可以理解及預期的。

但是在自由平等正義的新觀點下,整個世界已有翻天覆地的改變,若只想著如何鞏固既有的舊思想,終將被時代所淘汰。

從民眾的立場來看,這世界的信仰和性向該是完全自由的,你想愛男愛女愛老愛少愛屎愛鞭打愛多P愛自己,這全是你的自由,而所謂自由,當然是在不妨礙他人自由之前提,雙方或多方都同意的狀態下,一切都該被允許。如果要持反對立場,那也是你的事,說得出一番道理讓人跟隨你,那是你的本事。

接下來是宗教的立場,我認為也該比照個人自由的定義,宗教自成一格,有他們自身的教義,宗教和信徒一個願打一個願挨,只要他們不插手宗教外的人事物,他們要怎麼宣導,要怎麼要求,要怎麼聖潔自愛,那都是他家的事,外人也管不著,真要管,就加入宗教,否則我們也沒什麼立場對對他們指手劃腳。

但在這就有個難題,西方人的婚姻和宗教密常常不可分,如果宗教不承認同性婚姻,又怎麼能強求宗教為你證婚?牧師、教堂、祝福、誓言,幾乎都是基督教的獨佔事業,如果真的主張同性婚姻,怎能要求神父咬著牙為你祝福、為你而改變?我倒是很能體諒這點,同性戀者要結婚也不是不行,只是離教堂遠點就是了,互不勉強,互不干涉。

最後以國家的立場來談就是表現在法條上,目前大多數國家對婚姻的定義,就只針對二個相愛的一男一女,這代表著大多數國家是只認同異性婚姻,同時也是反對同性婚姻的。不管有多少人贊同同性婚姻,即使是總統,但只要法條沒有修改,國家就不算贊同。

所以,簡單的做法,就是把一男一女的限制移除,將婚姻的定義擴張到同性伴侶,大家都可以結婚,聽來就是皆大歡喜了,但反同者一定不同意,在他們沒什麼作用的腦中,很難接受「在法律裡即使允許了同性婚姻,也不會有異性戀者因此就和同性結婚」的常識。

但是,真正的問題應該在,為什麼國家要贊同?表現出自由意志的是個人,但國家的組成國民裡,有人贊成,也有人反對,國家為什麼要特定為了贊成者而立法?這是個平等法嗎?這種特定立場的齊頭式平等是真平等嗎?如果把一男一女改成不分性別的二人,那是不是仍有人不滿意,為什麼不能三人?為什麼不能和自己結婚?

這就是為什麼反同者提出,若是擴張了婚姻的定義至同性戀者,那在平行立足點下,將會有多P,人獸交也被合法化的危機。這點就邏輯來說,我完全能理解,只是被社會簡化批判下變得太過無厘頭,但只單就婚姻這事來解釋,人獸無法彼此同意,不在討論範圍,但單一人或多男多女,如果都是完全自願的婚姻,那又有何不可?

這時就會發現另一個疑點,為什麼國家只為異性戀背書?在未影響他人自由的前提下,我們的作為何需國家修改對婚姻的定義來解釋合法性?如果法條訂定的是只有處男處女才是有效婚姻,你會順從嗎?國家當然不該禁止異性或同性婚姻,但是否有必要立法鼓勵?而一開始立法贊同異性婚姻合法性時,又為什麼從來沒有人反對?

我們是不是可以換個角度來思考,不論是異性婚姻或是同性婚姻,是否要結合或聲名自己情感狀態的前提,根本就不需要經過國家的允許。也就是不論是榮耀、是加持、是羈跘、是認可、是背書,國家根本就不該介入認可任何形式的婚姻或性行為模式。甚至,你希望的形式為二男或二女或一夫多妻或一妻多夫或和自己結婚,全都可以在自由自主的前提下自行決定,或交由公正的第三方,這第三方可以是宗教,也可以是任何團體,若是基督教反對,找別種形式或團體就是了。

因此,這不再只是決定同性婚姻是否該被認可,更是在婚姻的目的或是道德邏輯上加以深耕,拒絕和特定的宗教掛勾,更拒絕在國家或法律層次來解決現有的困境。國家不該只認可某種特定組合,更應該廢除婚姻相關約束法條,維持立場中立,不再介入宗教對立或正反民眾的意見之中。

現在舉雙手贊成同性婚姻者,似乎也必須開始思考,贊成的最終立場,是必須完全捨棄現有制度下的「既得利益」,對本已熟悉的法條加以省思,一視同仁地廢除或改變現有婚姻制度,你是不是還能有著堅毅的腳步選擇這條路?

最後,誠摯地祝福所有的情感與靈魂,都能各有其最自由的歸屬。

2016年10月8日 星期六

2016美國總統大選辯論第一場

在辯論的第一段主題,主持人針對兩位候選人提問,要如何振興經濟,並增加就業機會。

希拉蕊把基本經濟學的提高工酬,利潤分享,員工保障,嚴查富人稅賦,照顧窮人等把戲都順了一遍,這種回應很安全,很得體,很流暢,很從容,卻也很一般,很不值一提。這代表了希拉蕊是針對性地做足了功課,雖然可看出未來的方向,是以美國境內的改革及公平正義來拉攏,但卻也空洞而無落實的承諾可供複查驗證。

川普的回應恰好和希拉蕊各走極端,將美國的困境矛頭指向國與國間的貿易行為及海外遷廠,直言中國和墨西哥把美國當成了提款機,以致大廠紛紛離開,失業率因而攀升,罪魁禍首就是這些國家偷走了工作和美金。所以必須重談貿易協定,且解決方法為將企業稅制由35%降到15%。

川普這部分能做文章的地方很多,一來是很明顯看出川普對自己的自信,並沒有事前對辯論做好前置準備,直接臨場發揮,以致後續的言論重合,廢話綴言不斷輪迴,且提出的俄亥俄州和密西根州的例子經查,數據引用失當。另外就是降稅的爭議很大,川普一直以來被視為企業界的代表人物,先富上層富人,再將上層社會滿足後溢出的錢流至下層,這種白痴到極點的論述還敢在電視上侃侃而談的,大概也只有美國的川普和台灣的國民黨了。

關於川普這點,希拉蕊反應很快,直接點破美國自由貿易的重要性和圖利富人的危機,順便又虧了川普自己是屬於被政策圖利的上流集團,而她也把自己歸類於中產家庭和川普做出明顯的區隔,這點很聰明,畢竟不論富貴貧賤,每個人也就只有一張選票而已,投資在大團體的效益當然是更高的,雖然我也不認為她會和中產階級牽上邊就是了。

接下來當主持人問川普,如何將這些他所謂被偷走外流的工作拿回美國時,川普的回應卻是最讓人失望的,重新把剛才的論調再說一次,卻無任何具體方法,主持人再度追問,他只好回應,要把工作拿回來最重要的就是不再流失,既要保住員工工作,又要激勵企業擴張,就是沒提到具體手段。到了這段希拉蕊心裡應該開始偷笑了。

接下來希拉蕊又發動攻勢,指在金融海嘯時,就是對富人過於放任,以致千萬人流離失所,數兆美元蒸發,而川普竟公開表態對房市危機樂觀以對,因為可在崩盤時進場搶到便宜,這種心態固然要不得,但最讓人翻白眼到後腦杓的,他竟得意地插嘴,「That's called business, by the way!」夠白目吧,夠白目吧!這一仗至此不過十分鐘左右,川普可謂註定全盤皆輸!

中間這穿插一點小插曲,在二人的稱謂上我發現也有點小手腳,希拉蕊稱川普為Donald,用來顯示其親和和自信,而川普一開始在第一段發言時也是稱Hillary,但在主持人稱其國務卿柯林頓後,川普發言時故意頓了一下,說我想叫妳Secretary Clinton,這樣可以嗎?我希望妳很爽。明明主持人說就沒問題,但他刻意詢問的嘴臉就讓人全身不舒服。

我自己以小人之心來批判川普的心態,明明希拉蕊已經不是現任國務卿,這樣的title一方面要為稍後質疑鋪梗,其所有想法建言為何不在有決定權時加以落實,一方面也是對其加強語氣嘲諷她不過是柯林頓的附屬品。但希拉蕊並不以為意,認為柯林頓在位時表現可圈可點,而那也是她將要走的一條路,事實上美國人似乎也普遍這麼認爲,除了太多的誹聞以外。我很訝異,以川普的惡質商人性格,竟然沒把李文思基請來現場加油造勢,後來傳出是因為川普看到希拉蕊的女兒坐在最前面而不忍提起,我高度存疑就是了,怎麼不說熊熊花現原來李文小姐是他親生女兒更能取信於我?

接著希拉蕊又提出了她任職國務卿時讓美國出口至中國成長了百分之五十,來顯示其對第一主題的佐證,但川普在這時提出一個重要的論述,指出在柯林頓時期簽署的北美貿易協定是個垃圾協定,而希拉蕊現在竟然又支持差不多等級的太平洋關係協議TPP,還稱其為黃金標準,希拉蕊連忙否認,這協議對美國到底有多糟我是不知道,但看希拉蕊連搖了幾次頭,這應該算是嚴重指控了,她回應川普活在自己的世界裡。結果不幸的是,現在你只要在孤狗打上「希拉蕊黃金標準」,就可以發現希拉蕊也在睜眼說瞎話,兩人一來一往,毫不遜色!

TPP協定是歐巴馬大力推薦,川質問希,如果她也不認同TPP,那會讓它通過嗎?支持協議的歐巴馬有錯嗎?這二巴掌打得響亮,希拉蕊不敢回應,畢竟現任總統公開批川挺希已是路人皆知,這又讓我們想起,希拉蕊的政治包袱比起政治素人的川普多上不止百倍,對於柯林頓的包袱,歐巴馬的包袱,和國務卿任內的包袱,除了默默扛下,哪還能多說什麼?

這二人多少都有些誠信的問題,只是大小仍有差別。在經濟的議題上,希拉蕊對川普的攻擊點,大多也能逐一接招,而川普解讀為自己主張減稅,而希拉蕊增稅,也不太能說服我們,且他標榜的不是自己擁有既定完備的策略條款,而是個人的企業領袖魅力,想將企業營利方針帶進政治運作,見招拆招,見風轉舵,這是我一直不能信任他的主要原因。

接下來在二人一來一往的垃圾話中,仍是圍繞著增加或減少富人稅,可為美國帶來一絲蓬勃,但幾乎都是政治口水,川普隨口帶出海外資金有2.5兆,又說也許有5兆美元,信口開河。而希拉蕊自健康事件和私人郵件涉及洩密後,誠信百分比只比川普多不到五個百分點,可謂狗咬狗一嘴毛。

但接下來的議題是大家都有興趣的八卦,主持人直接對川普提問,川普是四十年來唯一沒有公佈稅單的提名人,無法讓人得知可能的總統當選人是否會有企業利益衝突。這問題根本是廢話,川普身家怎麼可能沒有企業掛勾,他自己就是金字塔頂端的代表人,手下直接間接企業不計其數,說白一點就是要問他,是否如外傳的根本沒有繳出一毛錢的稅金。

川普理由是目前在查帳期間,等查完就可公佈了。公佈個頭,只剩一個月就投票,擺明就是不能說的祕密,這理由不斷被打臉,即使查帳期間也不影響公佈稅單,但他仍是避重就輕。由主持人和希拉蕊的質疑,我覺得可能的情況有幾種,一是他是個虛有其表的空殻子,等著上任後來圖利自己頹危的企業版圖。或是擔心被找出和他言論相矛盾的衝突點,又可能遊走法律邊緣避稅,真如猜測沒有繳出一塊錢。不管是哪種指控,都可能對川普砍出致命的重傷害。

事實糾竟如何,我相信我們永遠不能得知了,但愚蠢的(又可能是愛面子的)川普,當希拉蕊指出也許川普沒有繳稅時,他竟插入一句全場最經典的肖話,「這表示我很聰明」。在後續攻防中,川哥還冷不防的賤嘴來一句,「就算繳了也是被浪費了」,這句話應該就是我們要的答案了。

小時候老師教我們,大人在講話不能隨便插嘴是有道理的。在插了這二句痴言後,後面的對話已漸漸弱聲遠去,勝負已分,沒必要再談下去,只是為了文章完整性還是得咬牙寫完。

川普在面對質疑時,將自己的危機和希拉蕊綁在一起,說如果要他公佈稅單,就要希拉蕊先公佈數萬件洩密案中郵件的內容。這當然是莫名其妙的聯想,畢竟希拉蕊做錯的是公器私用的行為,對其私人郵件內容不比繳納稅款金額吸引人,但希拉蕊當然不可能公佈郵件內容啊。希拉蕊在此議題上做出了最聰明的抉擇,他藉此機會公開道歉,並表示將記取教訓,永不再犯。這讓川哥也失去把柄再接打下去。

希拉蕊又開始了對川普的攻擊,幾乎都是個人行為,由此可看出川普人品無以復加的劣劣劣劣劣,我把所有後續攻訐放在一起,包括完工不付錢,惡意批評女人外表,工作歧視女性,嚴重的種族歧視,反對合法移民,不斷辱罵穆斯林,宣布破產六次,以槓桿操作財務,企圖以商業模式解決美國財務危機。。。

接下來主持人轉到下個主題,對美國警方履次對有色人種行使過當的警察權,甚至直接槍殺,該如何消弭種族間的隔閡。希拉蕊的答案相當標準,一方面消弭衝突,一方面槍枝管制,並對警察的個人背景做整體的檢核與約束。

而川普覺得應該更強調法律與秩序,還要更加重警察權,及更多的攔查,明顯站在警察一方,以暴易暴,維持秩序。但事實上他根本沒資格回答這個他不懂的議題,我懷疑到底有幾個美國人的種族敵意、白人至上的優越感,能拿出來和川哥一決勝負?攔查根本是完全違憲,更別提警方總是完全針對有色人種進行攔查並無故行使暴力,問題肯定在警察身上啊!

這裡得插個個人觀感,警察攔查是不該被放任的,沒有任何犯罪跡象的人沒有必要忍受不該遭遇的對待,即使我沒做壞事,即使只是一分鐘,都不該被警察濫權。另外,美國「目前」的槍枝雖然管制,但也同時是開放的,對溫良恭儉讓的良民來說是相當公平的策略,也就是說,良民比起刁民要更容易擁有槍枝,這使得當良民面對暴民襲擊時,至少能擁有平等的地位來自保。反觀大多數國家,以保護人民為由,嚴禁人民擁有槍枝,卻無法禁錮黑道重金自黑市取得槍枝,擁槍自重後的不平等優越讓黑道輕易回收成本,人民權益反而更被剝奪。由此來看,我給希拉蕊和川普各打87分和0分的合理成績。

下個議題我個人是覺得挺無聊,川普質疑歐巴馬不是美國出生,以一個種族歧視的川哥來看,講這話是很得體的,根本是不需設立一個平台來攻防,這段對話我個人覺得,包括對歐霸吹吸拉捧的希拉蕊,二人都無聊透頂,直接跳過。

在國安議題上,主要是對美國被網攻事件評論,主持人要求二位陳述是誰所為,以及如何防範。這問題問得也是摸不著頭緒,誰攻擊的不去問國安局卻來問候選人,是想探聽小道消息嗎?但神通廣大的希拉蕊直接就給了答案,原來是俄羅斯幹的(但事實上並沒有官方宣佈),喔,但又加了一句,川哥可是對普丁讚譽有加啊,這招實在夠陰,好比說阿九偷賣黨產,下句又說,咦,你上次不是說阿九身材很好?。。。

反而川普對這問題的回應是清醒的,妳一直說是俄羅斯,誰知道是不是,可能是俄羅斯,也可能是中國,或是躺在床上的400磅肥宅啊。題外話,在此次的辯論中,我算了算,中國意外出現在二人口中次數至少11次,且大多是負面訊息,尤其是川普口中。我們必須承認中國在國際地位已是舉足輕重,也因此清楚了川普既定的反中思維,但這也是部分台灣人覺得川哥是自己人的荒謬起因。

話鋒一轉談起了ISIS,希拉蕊提出結合友邦在一年內把ISIS趕出伊拉克,集中在敘利亞。而川普指責歐巴馬和希拉蕊根本不該出兵伊拉克,且在離開後呈現真空狀態才讓ISIS有機可趁而壯大。希拉蕊這時又指決定的是小布希而非自己的力挺者歐霸,又和主持人一搭一唱指川哥當初是贊成出兵伊拉克,還呼籲幹掉格達費,這段經查應該不算事實,只是當初川哥算是不置可否罷了,卻被加油添醋了一番。

但接下來又是川哥不可思議的狂言,當初應該奪走伊拉克的石油,才不會留給ISIS足夠的資金來源。。。這句我根本懶得罵了,他不當流氓真是浪費了!

在軍備資金上,川普認為美國花費了大把鈔票在保護友邦上,包括南韓、日本、沙烏地阿拉伯,但他們都沒付錢,他們應該要付的。這句話也沒有錯,維持正義也得有飯吃,事實上他們的範圍還包括了菲律賓和台灣,尤其是台灣。美國政府沒錢基礎建設,卻花了六兆美金在中東戰事。

果真如此嗎?川普的資料或腦袋有誤,美軍在世界各地駐軍的軍費幾乎是由駐所國買單,但人力武器耗費在異鄉卻也是事實,所以我認為也許川普指的不只是能回本,更應當成一股傭兵部隊的生意來經營,以一個無良生意人來看,這種肺腑之言就不多罵了。

最後,主持人很無聊,問川普為什麼批評希拉蕊沒有總統相,他硬轉到希拉蕊體力不好,反正也是沒營養的垃圾話。講結論,希拉蕊完勝川哥,但沒什麼好驕傲,川哥沒腦子,沒準備,沒羞恥就隨便站上候選人的位置。主持人也明顯偏袒希拉蕊,不管是時間的控制,問題的尖銳度,亦或是補充後續,幾乎就是二打一。希拉蕊將延續美國一貫正義大國的作風維持國際秩序,川普則主張大美國主義,一切以美國自身利益為考量,不再追求世界和平。這讓我想起了當年越戰時,美國內部的反戰壓力,這也是如今時空下一定比例死忠人士仍無怨無悔地支持無腦川哥的原因。但要知道,一個諧星候選人可以增加茶餘飯後的話題和情趣,但白目諧星進了白宮就不好笑了,看看菲律賓,把這效應放大一千倍就是了,川哥真該和杜特蒂歃血為盟的,沒人在搞笑,我是真心的!

2016年5月29日 星期日

是謂大同

上週去了山西大同,主要是衝著雲岡石窟和懸空寺的盛名而去,沒什麼意外,伴遊的還是胡椒,飛機時程安排還是一樣爛,但比預期多了些驚喜。出發前做了功課,加上博物館和導覽的資料,很值得讓我好好地整理記錄下來。

先從地理位置說起,我的地理一向不好,所以很驚訝原來大同離內蒙古最近距離不到五十公里,離內蒙首府呼和浩特也只有二百多公里,二至三個小時的路程。山西省簡稱「晉」,大同為山西第二大城,人口330萬,最大城為山西省會太原,在大同南方約三百公里,而著名的雁門關就在二城中間。

一般所指的關外便是雁門關以外,大同因地處大漠邊陲,自古以來一直為兵家必爭的天險之地,明朝為抵禦遊牧民族而在長城沿線設了九邊重鎮,大同為其一,而雁門關至今戰役高達二千多次,大同也有一千多次,在歷史上幾乎從無平靜之年。

這二千多次戰役不知是否包含了當年帶頭大哥殘殺蕭峰家人的那一仗,憑著一股義氣熱血,我們差點便殺往雁門關去了,但想到帶頭大哥已水落石出,和出家人沒什麼好爭論的,因而收刀作罷。

大同天氣是典型的大陸型氣候,有句形容晉北的諺語,「雁門關外野人家,朝穿皮襖午穿紗」,早晚溫差在夏天仍高達二十度,冬天極凍溫更達零下十幾二十度。因氣候乾燥,鼻粘膜總是呈現出血狀態,加上空污及黃土,以及這季節佈滿空中飄散的楊毛樹種子(類似浦公英種子的棉絮),幾乎每天就是在缺氧的環境中掙扎,然而這症狀卻在下飛機踏進香港赤鱲角的瞬間不藥而癒。

大同之所以被認定為古城,除了雲岡石窟的盛名加持外,主要還是因為北魏時期曾定都於此,北魏是由鮮卑人所立,鮮卑來自大興安嶺,在拓跋氏領導下於南北朝時期統一了北方,雖和南方對立而不被視為中國正統王朝,但在北魏孝文帝一統北方後,竟在文化上對漢文化投降,改為漢姓,並全面推行漢化政策,而由皇家所主持的佛教文化更是由此而大放異彩,並深刻影響了之後的大唐文化。

雲岡園區立有一石,刻著余秋雨所題的「從何處走向大唐」,指出大唐文化能立足於世界,是受來自北魏佛教的影響,而佛教的普及,除了北魏立為國教外,雲岡及龍門等大型佛像的推廣也有很直接的關係。

在經濟上,全世界最大的煤礦生產和消費國都是中國,而大同更為中國數一數二的煤礦產地,已為中國貢獻了超過25億噸的煤產量,但能源和經濟密不可分,這幾年中國發展趨緩,大同的產煤百分之百內銷,已過巔峰時期的煤礦產業更是疲相已露,不但煤價由06年每噸七八百元一路狂跌至谷底的二百多元,礦工薪資更是大砍超過二成,落差相當驚人。

但據我們出遊時實地觀察,在大同市區到雲岡,一路綿延了四十多公里的煤礦區,以及出發至懸空寺時清早五點多,對線車道一台接著一台的大型運煤車,車龍超過了百來台,這和前前大同市長耿彥波所想的轉型目標,應該還有很長一段路要走。

談到耿彥波,就得再說明一下,由於在出發至大同之前便看了一些關於他的專訪紀錄片,再實地和當地人詢問後,發現此人在大同受到極高的評價和支持,在他於2008年任職大同市長前,大同市可說是百廢待興,一片荒蕪。他上任後體認天然資源總有時盡,因此大刀闊斧推動改革,一方面暫緩文化區周遭的煤礦開採,一方面積極保存現有文物,並將古城區內住戶鐵腕且無償拆遷,耗廢巨資,企圖恢復古城時期的舊觀。

他的作為引起了很大的爭議,雖然底層市民支持度高達七八成以上,但因拆遷所引發的爭議實在不少,最後更在成果未彰時被調往太原,二任接位者皆無能力且無資金延續他的作為,民房拆後廢墟便棄置至今,到處可見斷垣殘壁,古城區仍是滿目瘡痍。

所謂的古城區,指的是大同的古貌,就是古時四周城牆和其中人民生活的空間,城牆為一長方形,長約1.5公里,寬約1.75公里,實際面積大約為2.8平方公里,幾乎所有市內的遺跡全在其中。當年中國文革破四舊時,對古文物多所破壞,很多住民拆了古城牆磚石,在古城區蓋了住家,一住幾十載,數十萬戶居民生活品質極差,許多更為違章建築。

依耿彥波的想法,現今大同市區面積遼闊達120多平方公里,何苦擠於小小古城區,為整頓市容,決定強制拆毀民房,並在郊區蓋了如香港蜂窩式的密集住宅,讓人民無償遷移。山西人大多不富裕,說無償對小市民而言自是大恩,但對土地大亨而言卻是千百個不願意,只是在高壓統治的中國,抗議的成本實在太高,聲音也被壓了下來。不久前在大同竟還有二十萬人集結遊行,要求耿彥波回任大同市長,離開這麼多年,在這地方都還有人會為他集結抗爭實在太不可思議,若無意外,這人看來可為中國明日之星了。

除此之外,耿彥波對古城的維護更是讓我有興趣,他堅持嚴格考證及遺產本位,所有修復必須以原朝代為綱,沒有歷史依據的考證不能設計,沒有設計就不能動工,且回復及保存必定要有四個原則,原來的建築形制,原來的建築結構,原來的建築材料,及原來的建築工藝。聽來頭頭是道,總之就是要用傳統古法把一路受傷的古城,慢慢修回、建回,以回復到當年的榮景。

但這讓我很懷疑,這樣還算是古跡嗎?

看他拆掉有著真正古城磚石所蓋的民房,並從無到有一棟棟地建起所謂的古寺廟、古城牆、古樓房、古壁畫,但和其他城市的古街並無太大差異,這也和台灣的老街文化有著異曲同工。這是建設還是保存或是破壞?只有材料和工法,缺少了歷史溫度的加持,我個人是抱著很大的存疑態度的。

一個受損的古物,是不是從破損中透露著對我們歷史的控訴與指責?是不是從缺憾中留存著對人類的期望與教訓?是不是寫下了對大自然替汰的尊重與進化?切去了破損,填補了折舊,是不是就代表故事被一併抹去?我們該學著接受任何事物的不完美,就像人會老去,每一道傷痕、每一筆皺折都代表著一個大時代的蒼老美學。好吧,我一直都知道,這種想法很不切實際,根本就是鄉民的廢話,我都知道,千萬別讓我當官就是了。

(這水泥打造的「古典與現代融合」到底是什麼鬼?)

談了這麼多的政經文化背景,是因為我體現到這些都和城市的面相習習相關,對文化的深刻理解,才更能深層體會到這趟旅程的精神意涵。

回到旅行的話題,照胡椒的惡習,我們當然還是買了促銷機票,總價省了將近一半,且回程還升等商務艙,但時間上當然還是不如人意,第一晚在北京機場枯坐了一晚。加上胡椒辦事不力,竟在買內陸航線機票時將我的名字拼錯,以致二次搭國內機都險象環生。

第一天早上到達大同,直奔飯店睡覺,因前一晚沒睡,好在這酒店設備不錯,吃得好睡得好,且讓我們提早入住,從九點一路睡到十一點多才起床。肚子餓了,第一餐一定得吃得好,我們查了大同最豪華也是最精緻的飯店,就是「鳳臨閣」了。

小時候和我阿嬤去戲院看了黃梅調的電影,就是明朝正德皇帝如何微服出巡,看上了店家的鳳姐,死命豬哥糾纏,還差點被鳳姐的阿哥打廢,但在秀出皇帝令牌後,鳳姐馬上表明一見傾心,這是真愛。在搬去北京路上卻因過勞而病逝,後世為紀念這位美麗且深明大義的鳳姐的愛情故事(這句是他們的簡介寫的,實在看不出哪裡深明大義,中國人的中文很差,皇帝調戲叫大義,魯蛇調戲叫公安),便將鳳姐和她哥開的酒樓更名為鳳臨閣,而這忝不知恥的「遊龍戲鳳」的下流故事也就傳了開來。

此店據稱花費三億人民幣裝修(我覺得這數字肯定浮誇不少),古色古香自是無庸置疑,但這裡最有名的便是「百花燒賣」,果如其名,如百花爭豔,同時滿足了視覺與味覺的多重享受,因當年慈禧太后的加持而成此店招牌。


另外一種特殊的食物也是我第一次嚐到,叫窩窩,將蒸過的孔洞狀麵皮,沾著重口味的湯醬來吃。超Q的麵皮搭配羊肉的重鹹湯頭,實是令人難忘的絕配。

自此後在大同幾天,腦中揮之不去的背景音樂,就是黃梅調裡的戲鳳,我也是剛從北京一下飛機就直奔鳳臨閣啊,怎麼還在酒樓內摔個大冬瓜掉進水塘裡。。。

好了,沒事!接著是我覺得大同市區內最值得一遊的景點,華嚴寺。這是一間遼金時代的建築,年代算算千年左右,保存得相當完好。

大同本來就在關外,當年先後曾被遼國和金國統治,並皆設為西都,因此市內有不少遼金時代的遺跡,包含之後去的善化寺也是,但以規模來說,華嚴寺還是最讓人覺得不虛此行的代表作。另外,寺內的華嚴寶塔,是中國僅次於應县木塔的全木榫鉚結構塔,不用一根鐵釘螺絲,其實應县木塔也在距大同半天行程範圍內,只是我們已累到沒有興致再多走一趟了。

第二天是我們期待已久的行程,懸空寺,由於懸空寺位處偏遠,距大同南方約五六十公里,且無公交車可到達,唯一的方法就是駕車或包車,由於此日剛好遇上中國的旅遊節,為避開人擠人的逃難景象,我們早上五點半便啟程,果然搶了個頭香,雖然購票時仍遇上一堆插隊的沒品中國人,但仍是幸運地在第一時間自在地觀賞了這神奇建築。

回想起懸空寺仍有些餘悸,整座寺廟是以力學原理篏合在峭壁之中,且嵌合深度僅有五十公分,五十公分。。。走到第三層時不覺腳軟,幸好我們去的早,這時趕緊逆向退回二樓,那些中國人每個都對我投以異樣眼光,要笑就笑吧,我才不在乎哩(摀住耳朵搖頭)。


由於在上面有強烈的不安全感,實在很難去注意一些細緻的建築特色,尤其是一根根的木柱,其實根本只是為了安撫遊客人心才加上去的,有的木柱甚至根本沒有著地,靠,只是拿來增加重量而已。但即使如此,懸空寺據說歷經了八次大地震而未有受損,光這點就該請當年蓋廟高人來開堂授課了。

和懸空寺通常會綁在一起的行程就是恒山,恒山為中國五嶽中的北嶽,但高度還排不進台灣的百岳,只有二千公尺左右。恒山入口在懸空寺旁約三公里,我們的行程更取巧些,但事後證明這應該是最精準的旅遊路線。由山下先搭乘單程索道(纜車)上山,再步行約二小時可逛遍大小寺廟並下山至山腰停車場,請包車問獎先到停車場等候,以省下五公里的路程。

恒山風景自是不錯,但比較有趣的點在於山上寺廟遍設,所有現存的佛儒道三教的神佛聖人幾乎全拜到了,這種文化融合的景象比起風景還要更有看頭些。可惜當日為中國旅遊節,遊客實在太多,人山人海,其實恒山既然貴為五嶽之一,我倒認為應該對旅遊做些技術上的限制。例如,為了節省旅遊時間而先後開發了二條纜車路線,對環境及生態破壞自不在話下,若是沒有纜車,或連所有停車場也一併廢除,限制自用車前往而改以接駁車,減少了自然的負擔,才是永續經營且與自然共存的唯一途徑。

第三天行程是最大亮點,我們搭車來到了雲岡石窟,在大同市區西方16公里,交通還算方便,坐車約半小時便可到達,我們很幸運是第三天才來到雲岡石窟,若在前一天旅遊節來,當天擁進了17萬人,所有石窟都不開放,只能在外面照照相就失去意義了。

對石窟我們更是做足了功課,除了前往前便看遍了各網站介紹及影音說明,原本還想再請一位導覽,但怕導覽快速帶過,便失了我們自助慢遊的意義,所以便買了本各洞窟說明,按圖索驥,加上偶然偷聽到別人導遊的講解說明,一公里長的石窟區,我們不吃不休地走了七小時,細細品味,有歷史就有故事,有故事就有溫度,在每一窟內的感動,都可以在我每次翻閱照片時,再回味一輩子。

雲岡位於離市區西方的武周山,這裡的地質易於雕刻,但相對的也容易風化,現在留下的佛像大都是在嚴重風化後再強行補救保存,而色彩鮮艷的佛像或壁畫很大部份是在清朝時所整修上色的。雲岡整個園區耗資18億人民幣,占地2.2平方公里,已經接近古城的大小了,我覺得是脫褲子放屁,其他事後加上的建築大多是畫蛇添足,但看著將整片小山鏤空雕成一尊尊的雕像,心中滿是敬佩,要知道,這可不是在雕刻完成後再搬入,而是直接就地將山挖空,一體成型,一但失手可能就難以補救,且許多佛像在石窟中高達十多公尺,還有些有二層或三層的設計,實在嘆為觀止。
(第三四窟為橫向雙窟,開鑿空間最大,佛塔竟高達三層樓)

話得從北魏孝文帝說起,有一次孝文帝在平城(現大同舊稱)遇上了高僧曇曜,結果孝文帝的座馬竟咬住了曇曜的衣服不放,相談之後孝文帝將曇曜奉為國師,後世稱為「馬識善人」。由他於西元460年開始主持雲岡石窟的開鑿,自此持續七十年雲岡的雕鑿期,可以想見在當時是如何的滿山金光,香火鼎盛。

雲岡大大小小洞窟254窟,佛像高達51000尊,有編號可查的為45窟,但因20窟後洞窟較小且風化嚴重,真正成名的為前二十窟,尤其是曇曜主持時期開鑿的第16-20窟,全為大佛像,最為著名。且第20窟因洞窟立壁倒塌而使佛像外露,更為雲岡第一代表作。照片也許很難表現其高大深遠,但光其耳朵便有兩個我的高度,站在佛前,更能虔誠地審視自我的渺小。
(第二十窟洞壁坍塌因此佛像外露,成為最具代表性的雕像)
(編號第16-19窟的大佛)

其實在雲岡各洞窟中,主像當然是最引人注目,但除此之外,洞內的整體雕刻,甚至拱門處的小細節,搭配當地的導覽說明,常常都有令人印象深刻的佳作。扣除了有四窟整修中的洞窟,我自己覺得雕刻最精彩細緻的,應該就是第六窟了。但每一窟都有說不完的故事,就留給有興趣的朋友自己去細細體會了。


第四天的行程較為輕鬆,我們逛了古城內二座頗負盛名的寺廟,善化寺和法化寺。善化寺亦為遼金時期的建築,部份年代甚至比華嚴寺更為久遠,但規模小些。而法華寺除了一個元明時期的寶塔外,其他全是仿古重建,不值一逛。
(善化寺精緻幽靜)
(法華寺寶塔造型特殊)

大同古城牆是我堅持一定要上去的景點,這是明朝時重建,現已整修完成。雖然在中國各地都有著大大小小的城牆,但這是我第一次實際踏上城牆,想像著遭遇過上千次戰爭洗禮的古城,傷痕雖被修復,但仍然非常有臨場感。除了最外層的護城河外,一層又一層的堅固外牆重重相疊,在歷史上除了被斷糧或內亂,竟從未被外來民族攻破過,是防禦工事的一大藝術成就。

按照以往的慣例,接下來應該又要談談對這國家的看法,但上次去四川時基本上已經罵過一輪,吐痰、喧鬧、沒公德、不遵守規則,這一切在這次旅行中也同樣適用,且也許水平程度比起重慶成都又低了兩階,惡行變本加厲,在台灣連小學生都知道的公民道德,在山西完全抹煞,走在路上需非常專心,誰知哪裡飛來一口痰,逆向衝出一台車,連人行道上都有汽車急駛,還好意思拼命按喇叭,到底有什麼地方是安全的?但說到底,這個城市的人民是純樸的,他們只是沒有感受到為什麼不能這麼做的理由,出事機率也許比台灣事故率還低,到底是怎樣的協調性讓他們能在這樣無厘頭的文化中取得完美的平衡?

另外,我一定得提點一下中國人的審美觀,到今天似乎仍不能走出破四舊的窠臼,也不能理解老東西的美好。上天留給他們的天然資源總有耗盡的一天,今天你有煤礦所以叫煤城,明天沒了煤礦你什麼也不是了,但老祖先留給你們的財產卻是更經得起時間考驗啊。他們卻不能安份於只有古老的價值,硬要套用一些俗不可耐的裝飾,在遼金矮房前放上小小兵娃娃,城牆上掛了一堆廣告布條、活動通知,每隔幾公尺就來個什麼熊貓羅漢,在塔前還來一堆連名稱都省略類似保險套的燈飾,你他媽的摸著良心說,是鬼遮眼還是拿了什麼好處?


既然要罵就一口氣,這是夜晚的古城牆,很美吧?是啦,燈光效果是真的不錯,我們還抓緊了最後一晚走出去照相,燈光在護城河下搖晃,的確有種異國情調的浪漫。但是,這明明就是古城啊,為什麼不能給他原來的面貌?或是立些搖曳矇矓的火把也是不錯的選擇,弄得燈火通明,看那白天寂聊沈靜的文峰雁塔,到晚上搖身一變成為七彩保險套,於心何忍啊!

這次出遊的時機點抓得準,目前時節正是出遊旺季之始,卻又未至人潮尖峰期,晚間約至七點半,月已升起,天仍未暗。我閉眼遙想,當年大明王朝為防元朝捲土重來,派重兵駐鎮大同,二十萬大軍於古城牆前,徐達立於上,登高一呼,其勢震天,荒漠孤軍,年復一年,如老殘遊記中所言,若非於北方嚐過那寒風勁雪,又怎能體會謝靈運詩中所言:「明月照積雪,北風勁且哀」中的哀字下得好?大同,它所蘊含的肅殺悲愁,只要以指尖觸摸,便如魯米諾般顯現其真實的大地悲歌,跨越了國籍,穿越了時空,即使我們不在那朝代,即使我們不在那人命如敗絮的亂世。。。