Saturday, July 31, 2010

怕了吧,我用命令列玩Google | T客邦 - 我只推薦好東西

Cl001_custom_ GoogleCL就是指Google Command Line,這是一個可以讓你直接用命令列和Google服務溝通的工具。不論是Google文件、日曆、Picasa相簿或是YouTube影片,只要一行命令就可以直接上傳,而且還能執行一些額外的工作,例如編輯、刪除和條列等。

GoogleCL官方網站:http://code.google.com/p/googlecl

系統需求

  • Python 2.5或2.6

  • gdata 1.2.4以上

安裝方式

由於GoogleCL可以跨平台使用,每種平台安裝方式都不太相同,分別說明如下(以下教學以Unix-based系統為主):

Mac OS X

要在Mac OS X上安裝GoogleCL,請執行以下步驟:

  1. 安裝 MacPorts(下載位置:http://www.macports.org/install.php);

  2. 打開終端機,輸入 sudo port -v selfupdate,讓MacPorts更新程式列表;

  3. 安裝GoogleCL,請在終端機中輸入 sudo port install googlecl

GoogleCL需要Python和Gdata,不過如果你的電腦上沒有安裝這兩個程式的話,MacPorts會自動幫你安裝。

Linux(以Ubuntu為例)

想在Ubuntu上安裝GoogleCL,請執行以下步驟:

  1. 打開終端機,然後輸入 sudo apt-get install python-gdata

  2. 下載GoogleCL deb版本(下載網址:http://tinyurl.com/3x9xk57);

  3. 在終端機中移動到deb檔案所在的資料夾;

  4. 輸入 sudo dpkg -i googlecl*.deb

Windows

如果你要在Windows上安裝GoogleCL,請執行以下步驟:

  1. 下載並安裝Python(下載網址:http://python.org/download/);

  2. 下載 GData-python-client並解壓縮(下載網址:http://code.google.com/p/gdata-python-client/);

  3. 選擇「開始功能表」->「執行」,然後輸入 cmd

  4. 在純文字介面中,切換到GData的資料夾;

  5. 接著輸入 [python安裝位置]\python setup.py install,Gdata就會自動安裝;

  6. 下載GoogleCL(下載位置:http://tinyurl.com/236826h);

  7. 再一次切換到GoogleCL的資料夾;

  8. 請輸入 [python安裝位置]\python setup.py install,GoogleCL就會自動安裝。

Note:一般來說,在Windows底下Python 2.6的預設安裝目錄是:C:\python26\

用法

安裝好GoogleCL後,我們就可以開始用Google Command Line的強大功能了,在Unix-based中基本的命令結構如下:

google [服務] [工作] --[參數] [檔案]

其中服務是指你要使用的Google服務,而工作則是這個服務可執行的基本功能,例如上傳、刪除等。參數則是用來指定檔案名稱、標籤或是要使用的編輯器等參考資料,而檔案就是指你要處理的檔案了。這部分我們會在各個服務的介紹中再次說明。

Tips:如果你是用Windows系統,請使用 C:\Python26\python C:\Python26\Scripts\google 取代Unix-based系統中的 google 指令。另外現在GoogleCL仍然不能處理正體中文的檔名,因此檔名請用英文。

GoogleCL服務之一:Google Docs

GoogleCL中的Google Docs服務大概是最強大的功能了,你可以透過GoogleCL上傳、下載、刪除甚至編輯Google Docs,不過即使我們下了 --format 參數,下載文件時也只能以txt檔下載。而透過GoogleCL的部分也因為目前僅支援終端機中的純文字編輯器,如:vim或emacs等,所以也只有純文字的編輯能力。

不過還是有變通的方法,例如我就是利用reStructuredText(或簡稱ReST)這個輕量標籤語言來撰寫純文字檔,並使用Google Docs當作雲端儲存,ReST在需要的時候可以方便的轉換成html、pdf或odt檔,如果有需要也可以轉成Word檔來用,非常方便。

基本指令:Google docs [工作] --[參數] [檔案]

▲GoogleCL裡最好用的就是可以直接以純文字編輯器來編輯Google Docs上的檔案,打開終端機後,輸入 google docs edit --"文件名稱" --editor "vim" 就可以使用vim編輯該份文件,如果你的Google Docs上沒有相同檔案,則會開啟一份新文件。第一次使用GoogleCL時會請你建立使用者設定檔,請輸入Google帳號即可。

Tips:除了終端機內的純文字編輯器如vim和emacs之外,目前GoogleCL不支援任何GUI文字編輯器,如Notepad 等會無法存檔。不過現在版本的GoogleCL使用vim編輯時會有一點小問題,第一次開新檔時,請不要用 :w 存檔,而是用 :wq 存檔並退出,否則GoogleCL會無法儲存,第二次開啟相同的檔時,就可以使用 :w 來存檔了。至於emacs則是完全沒有問題。

▲接著GoogleCL就會自動連到Google Accounts的存取允許頁面,如果你有多個Google或Google App帳號的話,請選擇要使用的帳號。

▲然後請選擇「Grant access」按鈕允許GoogleCL存取你的Google帳號。

▲接著再次輸入GoogleCL指令。

▲因為我的Google Docs裡面沒有相同名稱的檔案,因此GoogleCL會自行建立一個新檔。

▲接著你就可以開始使用vim或是emacs等文字編輯器來編輯內容了。

▲編輯完成後,存檔並關閉文字編輯器,GoogleCL就會上傳你所做的更動,接著登入Google Docs你就可以看到剛剛建立的檔案了。

▲開啟檔案你就可以看到剛剛編輯的內容已經上傳了。

Google Docs 可執行的工作

delete

刪除檔案。範例:google docs delete --title "test123"刪除名為「test123」的檔案。

list

文件列表。範例:google docs list title,url-direct --delimiter ": "列出所有文件檔名及文件的直接連結,並且中間用冒號分隔。

upload

上傳文件。範例:google docs upload ~/Desktop/test123.doc上傳一個名為「test.doc」的檔案。

edit

編輯文件。範例:google docs edit --title "test123" --editor "vim"使用vim編輯一個名為「test123」的檔案,如果Google Docs裡面沒有相同名稱的檔案,則會建立一個新檔。

get

下載文件。範例:google docs get --title "test123"下載一個名為「test123」的檔案。

Google Docs 可使用的參數

title

文件名稱。

editor

使用的文字編輯器。

format

指定檔案格式,可使用「document」(文件)、「spreadsheet」(試算表)、「Presentation」(簡報)等。

delimiter

指定分隔符號。

folder

指定資料夾。

GoogleCL服務之二:Google Calendar

GoogleCL用在Google Calendar的時候可以執行新增、刪除、列表和顯示今天的行事曆等工作。

基本指令:Google calendar [工作] --[參數] [記事]

▲要直接從終端機新增記事,請輸入 google calendar add "記事",然後在第一次使用時也請輸入Google帳號並允許GoogleCL存取你的帳號。

▲接著打開Google Calendar,你就可以看到剛剛輸入的記事顯示在你的行事曆了。

Tips:由於是使用文字介面輸入行事曆,因此請使用Google Calendar的Quick add方式輸入記事,使用方式請參閱:http://tinyurl.com/25jvm8l

Google Calendar 可執行的工作

add

增加記事。範例:google calendar add "於 16:00 開會",這會在今天的行事曆上下午四點新增一筆「開會」的記事。

delete

刪除記事。範例:google calendar delete --cal "work" --title "開會",這個指令會刪除「work」行事曆裡名為「開會」的記事。

list

列出行事曆。範例:google calendar list --date 2010-05-01,2010-05-31這個指令會列出2010年5月1日到31日間所有的記事。

today

列出從現在起24小時內的行事曆。範例:google calendar today

Google Calendar 可使用的參數

title

記事的名稱。

cal

行事曆的名稱。

date

時間。在GoogleCL裡,時間表示的方式為「YYYY-MM-DD」(當天的行事曆)、「YYYY-MM-DD,」(當天以後的行事曆)、「YYYY-MM-DD,YYYY-MM-DD」(這兩天之間的行事曆)和「,YYYY-MM-DD」(當天以前的行事曆)。

query

搜尋所有的文字,包含記事標題、標籤和內文。

GoogleCL服務之三:Google Contacts

GoogleCL裡的Contacts服務可以直接從終端器輸入或刪除一筆聯絡資訊,並能新增或刪除聯絡人群組。

基本指令:google contacts [工作] [連絡人資訊]

▲要輸入單筆聯絡人資訊,請輸入 google contacts add "聯絡人名稱, 聯絡人電子郵件",目前仍無法輸入其他的聯絡資訊,另外如果想一次輸入多筆聯絡人的話,請用以上格式將所有聯絡人的資訊輸入到一個純文字檔中,並將副檔名改成 .csv 後,輸入 google contacts add xxx.csv

▲接著你就可以在Gmail裡的聯絡人裡找到剛剛輸入的聯絡人資訊了。

Google Contacts 可執行的工作

add

新增聯絡人。範例:google contacts add "PCHome編輯部, pchome@hmg.com.tw",這會在你的Gmail聯絡人裡新增一筆名為「PCHome編輯部」的聯絡人。

add-groups

新增聯絡人群組。範例:google contacts add-groups Friends,這會新增一個名為「Friends」的群組。

list

列出聯絡人。範例:google contacts list name,email,這會以「姓名,電子郵件」的格式列出所有聯絡人,中間逗號後不可有空格,目前測試電話仍無法顯示。

list-groups

列出所有的聯絡人群組。範例:google contacts list-groups

delete

刪除聯絡人。範例:google contacts delete "PCHome編輯部",這會刪除名為「PCHome編輯部」的聯絡人。

delete-groups

刪除聯絡人群組。範例:google contacts delete-groups "Friends",這會刪除名為「Friends」的聯絡人群組。

Google Contacts 可使用的參數

GoogleCL服務之四:Blogger

雖然現在大多數的使用者都偷懶去玩微網誌了,不過還是有努力的人會去寫部落格的。因此GoogleCL當然也就支援Blogger發布,讓這些勤勞的人使用。通常一篇部落格文章都很長,雖然你也可以直接輸入在指令中,不過還是建議將內文另外儲存到一份純文字檔裡,再用GoogleCL發布上去。

基本指令:google blogger [工作] --[參數] xxx.txt

▲要用GoogleCL來發布部落格文章,建議還是先寫在一份純文字檔中。

▲然後請輸入 google blogger post --tag "標籤" --title "文章標題" [內文純文字檔位置]

▲接著你就可以在你的部落格上面看到剛剛發布的文章了。

Google Blogger 可執行的工作

post

發布文章。範例:google blogger post --tag "test" --title "test" --draft "test",這會在你的Blogger主要部落格中建立一篇標籤、標題和內文都是「test」的文章,並存成草稿。

tag

為文章上標籤。範例:google blogger tag --title "test drive googlecl" --tag "test_drive",這會為「test drive googlecl」這篇文章加上「test_drive」的標籤。

list

列出部落格中所有文章和該文章的連結。範例:google blogger list --delimiter ": " --blog "PCHome Test",這會列出「PCHome Test」這個部落格(假設你有很多Blogger部落格在同一帳號下)中的所有文章,並以「:」分隔標題和網址。

delete

刪除一篇文章。範例:google blogger delete --title "test drive googlecl",這會刪除你的主要部落格中「test drive googlecl」這篇文章。

Google Blogger 可使用的參數

title

指定文章標題。

blog

指定部落格名稱。

delimiter

指定分隔符號。

draft

將文章儲存為草稿。

tag

指定標籤名稱。

GoogleCL服務之五:Picasa

GoogleCL的Picasa服務可以讓你直接上傳照片、建立相簿或著刪除照片和相簿等。

基本指令:google picasa create --title "[相簿名稱]" [要上傳的圖片位置]

▲如果要上傳照片到新相簿,請輸入 google picasa --title "[相簿名稱]" --tags "[相片標籤]" [要上傳的照片位置],這樣就會將你指定的照片上傳到Picasa中你指名的新相簿中,並加上標籤。

▲等指令跑完後,你就可以在指令的相簿裡找到剛剛上傳好的照片了。

Google Picasa 可執行的工作

create

建立新相簿。範例:google picasa create --title "test" ~/Desktop/xxx.jpg,這會將桌面上xxx.jpg這張照片上傳到Picasa中新建立的「test」相簿。

post

將照片傳到已有的相簿。範例:google picasa post --title "Tours" ~/Desktop/xxx.jpg,這會將桌面上xxx.jpg這張照片上傳到Picasa中的「Tours」相簿。

get

下載相簿裡的照片。範例:google picasa get --title "Tours" --query "SF" ~/Desktop/SFPhotos/,這會將「Tours] 相簿裡,標籤裡有「SF」字樣的照片全部下載到桌面上「SFPhotos」資料夾中。

delete

刪除相簿或照片。範例:google picasa delete --query "nude",將標籤裡有「nude」字樣的照片全都毀屍滅跡。

list

列出照片。範例:google picasa list --title "Tours" --delimiter ": ",這會將「Tours」相簿裡的所有照片和其直接連結都列出來,並以「: 」分隔。

list-albums

列出相簿。範例:google picasa list-albums --delimiter ": ",這會列出你所有的相簿和其直接連結,並以「: 」分隔。

tag

為照片加上標籤。範例:google picasa tag --query "SF" --tags "San Francisco",這會為標籤裡有「SF」字樣的照片加上「San Francisco」這個標籤。

Google Picasa 可使用的參數

title

相簿名稱。

query

搜尋字串。

delimiter

指定分隔符號。

tags

指定標籤名稱。

GoogleCL服務之六:YouTube

使用GoogleCL也可以讓你上傳、刪除和標籤YouTube影片。

基本指令:google youtube post xxx.avi

▲如果要上傳影片請用「post」指令,不過要注意的是,GoogleCL不支援中文檔名上傳。請輸入 google youtube post --category [類別名稱] [影片檔位置]就可以上傳影片。

▲然後進入你自己的YouTube頁面,就可以看到剛剛上傳的影片檔了。

Google YouTube 可執行的工作

post

發布影片。範例:google youtube post --category "Travel, Education" ~/Desktop/xxx.avi,這會將桌面上xxx.avi這個影片上傳到YouTube上,並加入「Travel」和「Education」兩個分類。

delete

刪除影片。範例:google youtube delete --title "xxx",這會刪除你的YouTube帳號裡名為「xxx」的影片。

list

列出影片。範例:google youtube list --tags "travel",這會列出所有標籤為「travel」的影片。

tag

為影片加上標籤。範例:google youtube tag --title "xxx" --tags "porn",為標題為「xxx」的影片加上「porn」標籤。

Google YouTube 可使用的參數

category

指定影片類別。

title

指定影片標題。

tags

指定影片標籤。

delimiter

指定分隔符號。

Posted via email from Hector 隨手記

Wednesday, July 28, 2010

把.CHM電子書轉成HTML網頁檔(NorthBright CHM Tool v1.0)

把.CHM電子書轉成HTML網頁檔(NorthBright CHM Tool v1.0)

 

 

 

在Windows系統中提供了各式各樣的說明文件,大部分說明文件都是使用副檔名為「.CHM」的檔案格式,很多軟體、應用程式的說明檔或幫助文件也都使用使用.CHM這種格式。在一般情況下這種.CHM說明檔其實還滿方便的,可以瀏覽、搜尋或依照標題或索引來查找想要的相關資訊。不過如果你想把.chm文件中的內容一篇一篇挖出來另外作處理的話則比較麻煩。

下面介紹的這個NorthBright CHM Tool免費小工具主要就是用來幫「.CHM」文件轉檔用的,它可以幫我們將原本彙整在單一.CHM文件檔中的一篇一篇的內容轉成一般瀏覽器都可以開啟、閱讀的HTML網頁格式,讓我們另外作其他的處理或應用。

 

 


Posted via email from Hector 隨手記

[Mac] 如何將虛擬機的硬碟變大(for VMware Fusion)

Sunday, October 12, 2008

姑獲鳥之夏 -- 心是妖怪的遊樂園

姑獲鳥,鬼神類也,衣毛為飛鳥,脫毛為女人。...喜取人子養為己子。 --- 本草綱目/明.李時珍

盛夏,酷熱難當,揮之不去的汗水粘膩,間或大雨傾盆,暴起暴落的氣候變化,象徵書中複雜難明的重重事件,看似無關,卻又緊扣相連,俗稱鬼鳥的姑獲鳥,更為它披上陰森詭異的氣氛,單看書名,怪奇小說愛好者很難不被吸引,若抱持欣賞怪奇小說的心態,翻開書頁,恐怕馬上要失望了,作者透過主角之一京極堂主人中禪寺秋彥與好友關口巽的對話,闡述對心理分析的獨特觀點,解釋妖怪的由來,旁及宗教與科學的辯證,冗長對話佔了全書前八分之一的篇幅,十分枯燥,但細加思量,卻令人拍案叫絕,十分精彩,若將它當成教科書,這篇等於是理論基礎,而故事主體則成為驗證理論正確性的例子,假如京極夏彥本人從事教職,應該是很優秀的老師吧!

「世上沒有不可思議的事」,是京極堂主人的口頭禪,也是全書的宗旨,任何事件都有解答,端看是否站在正確的角度來觀測,女子懷胎二十個月,密室消失事件,醫院連續失嬰,附身家族的詛咒,人體實驗的傳聞,彷彿集合數宗推理案件於一書,龐雜的主線支線,卻在這句簡單的大前提下,輕易解開了,過程是那麼的雲淡風輕,甚至帶著悲天憫人的溫柔,因為沒有人是加害者,加害者同時也是被害者,當無力抗拒外在環境,而讓自己成了加害者,我們還能苛求什麼?

作者以這本書推翻傳統推理偵探小說的框架,開出新局,西方推理小說講究理性求證,科學辦案,在蛛絲馬跡當中抽絲剝繭,以還原事件因由,找出破案線索,對正常案件,這是正確的辦案方法,但牽涉到妖怪等「不可思議」事件時,便力有未逮了,科學辦案的眼見為憑,讓證據說話,在此全破了功,打從一開始,作者明示腦與心的關係,兩者互相倚賴,也互相欺瞞,任性的心遮蔽真實之眼,可悲的是身陷假想現實的人卻無力自拔,只能如瞎子摸象,無法得窺全豹,線索不再是線索,推理失去立足之點。

京極堂主人並不採推理辦案這一套,而是以更宏觀的角度,用「心」來觀察,直指人心的幽微隱蔽處,因為妖怪正寓居於此,要破妖除怪,只有解開心結,一群人交纏扭曲的心結;置身日本終戰後第七年,破敗中逐漸復興的國家,在朝氣蓬勃背後,有著光怪陸離的另一面,抹不去的戰敗陰霾,聯軍控管下的物資短缺,媚俗的糟粕雜誌、小道消息橫行,有識之士對此惡風流俗只能冷漠以對,京極堂亦是其中之一。然看似不近人情的京極堂,也有著溫情熱血的一面,得知傳聞,便要關口深入調查,隱隱猜出與關口過去的一段往事有關,解開事件之謎當下,亦開啟關口封存的記憶,那段不願回顧,卻實實在在發生過的往事,只有完整面對自己,才能心無罣礙,重獲新生。與其說是為了驅妖除魔,不如說是為了好友才置身事件之內。

盛夏,暴雨過後,又是晴空萬里,或許天邊還亮起一道彩虹,到底這世上有沒有妖怪、幽靈,「確實有,看得見,摸得著,也聽得到聲音,但不存在,所以科學才無法研究。但是只因為科學無法研究就說他們是天馬行空,是不存的話便大錯特錯了。因為實際上就是有。」京極堂主人如是說。人心是妖怪孳生之源,是我們對自己、對萬物下了咒,才產生這些千奇百怪的妖物來,在假想現實裡,他們都是存在的,真實的就像吃飯喝水一樣自然,「這世上沒有什麼不可思議的事呢,關口」, 有什麼好怕的。

Friday, February 15, 2008

我的年節回憶--記童年的一段旅行

這篇是為小孩的寒假作業所寫的,要成為一個現代化的父母真不容易啊!
30年前的臺灣,和現在相比宛如另一個世界,尤其對生長在鄉下的我而言,更是如此。

我們假日常回嘉義縣朴子市看爺爺奶奶,打從出生起,我在那裡渡過十餘個寒暑,純樸的生活,緩慢的步調,時間似乎遺落在這個濱海小鎮,日昇日落,唯一帶來些許變化的,就是幾個重要的節日了,其中最令人期待的正是春節。

因臨近東石沿海,受嘉南平原輻射冷卻的影響,朴子的冬天極為寒冷,每逢入冬,裹上厚重的衣服,真有天寒地凍的味道。當時老家前院尚未舖水泥,夯實的泥土地上長著些許青苔,冬日某個寒冷的清晨,青苔上的露珠結成白色的霜,意味要過年了。

過年對鄉下小孩來說意義重大,或許一成不變的卡其服上多了件嶄新的外套,或許是雙新球鞋,街上的行人變多了,原來都是返鄉遊子,冷清的街道有了不同的面貌,街坊鄰居互相拜訪道恭喜,吃顆糖果討吉利,門前貼著紅紅的春聯,辛勤工作的人們終於獲得假期,市場、商店一律停止營業,到處是歡笑的人群,到處充滿喜氣。這些年來,過年的氣氛愈來愈淡,因為生活形態逐漸轉變,往昔大家所珍視、不容易獲得的,現在卻是輕而易舉,而親友鄰居雞犬相聞的人情味卻逐漸消失。除了年節的歡樂,我最期待的是表兄弟回來,說也奇怪,平時見面機會並不多,聚在一起卻總像多年玩在一起的夥伴,這是血濃於水的羈絆吧!

有一年除夕,表弟妹們沒有回來吃年夜飯,懷著失望的心情上床,隔天莫名其妙被叫醒,明明不用上學啊!原來小阿姨、姨丈帶著表弟們回來了,而且,準備和我家人一起去關子嶺走春。在那個沒有自用轎車、機車的年代,出遊是件大事,大人平時工作極為繁忙,旅行絕對是奢侈的夢想,平時能和爸媽坐車到嘉義市逛街已是心滿意足,從沒想過可以遊覽觀光名勝,當下幾個大人,和一大群小孩,浩浩蕩蕩往嘉義客運站前進。

客運站裡擠滿了人,出遊的、返鄉的,或是其他原因,從沒見過這麼多人擠在如此小的空間裡。半小時一班,擠滿人後開車,剩下的等下一班,我不知等候多久,也許數小時吧,上了車,更是痛苦的開始,柴油味難聞至極,很少搭車的我一下子就暈到吐,車廂內夾雜各式氣味,我相信吐的不止我一人,忍到嘉義市,再到另一個乘車處排隊等待,搭車前往關子嶺,這一路更加顛簸,我覺得幾乎要死在車內,有個好心的大嬸將他攜帶的臉盆翻過來給我當椅子坐,就這樣一路擠到仙草埔,這也是公車站的終點,轉乘更小的巴士上山,折騰到關子嶺已是黃昏,足足花了一整天。

下榻在一家很舊的日式旅館中,睡的是通舖,對我倒不覺得稀奇,平時在家也是這樣睡,當時年紀小,並不知道有泥漿温泉,我們看了浴池裡滾滾冒出髒兮兮的泥巴水,幾個小孩立下決心不洗澡,小孩的決心不重要,一個個還是被抓進去,聽說現在關子嶺的温泉在921地震後已是斷了水源,幸好那時有進去沖一沖。

隔天開始爬山,走過水火同源、碧雲寺到大仙寺再回到仙草埔,這段路著實不短,而且是山路,沖著玩興,邊走邊玩,竟也忘了疲憊。山裡的古剎極為清幽,一路上仍有許多遊客,對比今日關子嶺的冷清,今非昔比的蒼涼由然而生,可能是這段經歷,讓我喜歡遊山玩水吧!

童年時唯一一次出遊,現在回想起來,這趟旅行玩得十分辛苦,更辛苦的是爸媽,也就是你的爺爺奶奶,他們不但要忍受車程,還要忍受抱怨,照顧暈車的小孩,過年時的年味與歡樂,都是他們省吃儉用費心張羅營造出來的,不管時局如何變遷,不變的是父母對子女的付出與關懷,爺爺奶奶之於我,一如我對你們兄弟,再苦再累都願意承受,只求下一代會更好。

Friday, September 29, 2006

最愛阿里山

"十年如一日"實在不容易,難怪能做到的都成了偉人。

今年八月,暗自慶幸部落格維持滿一年,九月就破了功,突如其來的事件塞爆原已不夠用的腦容量,天昏地暗的生活哪有部落格存在的空間。忙碌總有結束的時刻,放掉的堅持卻可能再也尋不回來,尤其對一個射手座男人,更是如此。不想承認敗給星相家認定的"天性",教師節剛過,就以這篇文章重新出發吧。

這篇文章,想寫我很熟悉的阿里山森林遊樂區,但不是遊記,這幾年,每年總要上山朝聖好幾回,如此頻繁的觀光次數,有幾次連相片都懶得拍了,反正人沒變多少,景物也差不多。在國內著名觀光景點中,阿里山算是過氣明星,觀光客當然有,和清境等地完全不能相比,也因此阿里山公路雖長,倒沒有塞車的風險,山路塞車,不管對誰都不是愉快的體驗,這是我喜歡阿里山的第一個原因,位於中央山脈海拔2000公尺以上的山中之山,沁涼的空氣令人心曠神怡,參天古木與溫帶林相,幾乎忘了身處熱帶南國,兩個多小時的車程就能獲得遠離塵囂、遺世獨立的"放逐快感",應該很值得。園區規劃完整,步道多緩坡,老少咸宜,走在雲霧繚繞的森林裡,呼吸著高山乾淨清涼的空氣,這是屬於大家的森林遊樂區,而非登山客的秘密花園。阿里山公路沿線,有達娜伊谷、奮起湖,往上有塔塔加、新中橫等景點,以及石卓、籠頭等茶鄉,達邦等純原住民部落,只要時間充裕,這地方可以玩上好幾天。

阿里山最有名的是日出和櫻花,櫻花季在三、四月間,很美,也是觀光品質最差的時刻,連上廁所都成問題,建議不用年年上山湊熱鬧,而日出呢,我看過好幾回,坦白說,除了冷得半死外,不覺得有什麼特別,不過,看著一群人像南極企鵝般抬頭看著同一方向蠻有趣的,以及,對都市人而言,總算有一次比太陽早起,可視為人生一大成就。假如不打算看日出,而且住家離嘉義不遠,又想省錢,不妨當天來回,從二高中埔交流道下18號省道,一路直上阿里山,只要不遇上"路隊長",上山時間並不長,上午開車,中午抵達,用餐,酒足飯飽到園區走一圈,看看青山、綠樹姐妹潭清徹冰涼的潭水,若時間配合得好,搭乘小火車到神木站,現在的神木小火車車廂完全用檜木打造,相當特別,車上一股木香味,聞起來很舒服。走完一圈的時間並不長,頂多兩、三個小時,休息一下再開車下山。

既然阿里山的日出這麼有名,建議有機會還是撐住眼皮去看一下,這時"住"的問題浮現了,阿里山園區有阿里山賓館及阿里山閣飯店,入口停車場附近有旅館區,旅館區品質良莠不齊,網路上有不少受害經驗可查,在商言商,一切為了賺錢,有些手段也不能說他們不對,各有各的難處,阿里山賓館及阿里山閣飯店似乎都是公營,地點較好,尤其阿里山閣飯店距離姐妹潭很近,遊阿里山最省力的方法就是搭阿里山閣飯店的接駁車,再沿步道往下走,一路幾乎全是下坡,連幼稚園小朋友也能邁開大步,開開心心,缺點是房間較老舊,反之,阿里山賓館走高消費路線,從以前就不便宜,很多年前曾住過,因山裡空氣潮溼,一股揮之不去的霉味和它的房價成顯著的對比,阿里山賓館有小木屋,就在阿里山閣飯店的對面,房門一開,若非掛有價目表,會誤以為走進工寮,我曾上過一次當,從此敬謝不敏。假如對價格敏感,必須要有心理準備,阿里山遊樂區裡的住宿都不便宜。

假如非住宿不可,最好的地點應該是阿里山公路接近遊樂區的前一站--二萬坪,從阿里山公路的小路鑽進去,這段路很窄,是平穩的阿里山之旅最危險的一段,小路穿出,來到斷崖邊的平台,二萬坪是原阿里山木材的集散地,舊阿里山火車的終點,現在則由救國團青年活動中心取而代之,默默面對晨昏冷月,是的,我認為最好的住宿地點就是青年活動中心,青年活動中心重新整修過,乾乾淨淨的和室木板房間,價格不貴,每間房裡均有除溼機,沒有遊樂區旅館那種難聞的溼霉氣息,二萬坪本身就是個景點,活動中心面對火車軌道,斷崖與遠山之間常有雲海,或者,該說是雲湖,少了海濤洶湧,這兒的雲海呈現出靜謐的美,錯綜複雜的軌道述說著過往的繁華,祝山觀日出,面西的二萬坪適合觀夕,二萬坪在阿里山遊樂區外,這不打緊,在青年活動中心櫃台購買的遊樂區門票不但當天可進出,隔天亦可持票入園,除了多一段車程,與住在遊樂區內無異。

假如有過夜或體力尚可,應該多開一段路往新中橫,阿里山連接新中橫那一段,山景最為壯麗,不看可惜,沿途有些觀測所、停車處,彌猴天橋,塔塔加的迎客松蒼勁挺拔,這兒是攀登玉山的起點,再過去則是夫妻樹,直達好望角,好望角據說比祝山更適合觀日出,我想也是,那地方與對面山壁距離最近,看到太陽從山壁上方蹦出一定很震撼,可惜想欣賞美景得起個透早。

至於因7-11而成名的奮起湖,是阿里山公路在石卓段轉入的小山城,阿里山公路開通後,它曾經被遺忘了很長一段時間,所以還保有多年前的古風,不管是人文或是建築,近年觀光客大批擁入,遊覽車一部接一部,把小小的山城擠得水洩不通,奮起湖不是湖,是群山環抱的小盆地,日照少,十分涼爽,腹地不大,假日最好別來,真的很擠,它的賣點是車站、老街、便當、四方竹,為了豐沛觀光資源,也規劃幾條步道與古道,不像阿里山,奮起湖的步道比較原始,走起來挺累人的。這地方不是不值得一遊,而是要挑對時間,假如為了吃便當而去,還是省省吧,7-11賣的奮起湖便當還比"原產地"好吃呢!說到住,奮起湖走紅後,出現幾家農舍式的民宿,別期望太高,曾住過奮起湖大飯店,品質和價格不成比例,若要在奮起湖過夜,白天一定要到附近的古道走一走,把自己弄得很累,不然夜裡睡不著可慘了,在奮起湖過夜的那一次,夜裡無聊至極,單單老街就來回三四趟,很巧地當天有位同事也在奮起湖過夜,第一次在老街碰面還蠻開心的,連續碰面幾次,臉上多了三條線;我曾思考過這兒走紅的因素,除了7-11的廣告功力,不用門票應是最大助力,阿里山森林遊樂區的門票可不便宜。

去年中秋,二萬坪那亮如銀盤的明月記憶猶新,今年想舊地重遊卻不可得,阿里山青年活動中心房間不多,早被訂光了,只好改道墾丁,海上生明月,雖無高山的清冷,浪濤拍岸聲下波光瀲灩,亦是一番浪漫美景。

Tuesday, August 29, 2006

崔斯坦與伊索德 -- 華格納也為之動容的愛情故事

崔斯坦與伊索德
如果對古典愛情小說情有獨鍾,又嫌"羅蜜歐與茱麗葉"太過夢幻與清純幼稚,那麼"崔斯坦與伊索德"必能滿足你追求浪漫的情懷。

"崔斯坦與伊索德"的故事背景發生在羅馬帝國傾頹,鞏固帝國的軍權勢力開始鬆動,不列顛群島等邊陲國家脫離帝國掌控,陷入無秩序的黑暗時代,小國林立,侵佔、殺伐,孤懸海外的愛爾蘭幸而未受羅馬帝國統治,反而獨立發展成強大的國家,野心勃勃的愛爾蘭國王刻意製造不列顛各部族的矛盾,阻止其統一,並以強大的兵力攻打不服從的國家,儼然成為即將君臨大不列顛群島的共主,當然,總有明眼人看穿其司馬昭之心,這人就是崔斯坦的父親,崔斯坦的父親明白唯有統一的不列顛才有強大的力量以對抗愛爾蘭王,於是召開會議,邀請各國君王前來簽定和平協議,這些動作全看在愛爾蘭王眼裡,命令屬下第一勇士莫霍率兵破壞會議,他的成功讓崔斯坦成為孤兒,被捨命救他而斷了一臂的馬克王領養。

伊索德是愛爾蘭王的女兒,雖貴為公主,對父親的價值卻只是政治與戰略的工具,不想像母親因沒有愛與自由抑鬱以終,同樣的命運仍面向她走來,對愛情懷抱美麗夢想的伊索德在漂流到海岸邊的小船裡發現重傷昏迷的崔斯坦,打從救崔斯坦上岸開始,就註定這是一場悲劇,小屋裡私訂終身的甜蜜,終究要面對現實的打擊,謊言、背叛、激情、嫉妒,瞬間降臨在這兩個少年男女身上,他們的純真更加突顯成人世界的殘酷,當這一切如不祥的魔咒籠罩兩人與馬克王之間時,馬克王對崔斯坦的父愛與對伊索德的情愛撥開命運的烏雲,崔斯坦的犧牲則成了破解魔咒的鎖鑰,在此之後,伊索德不知所蹤。

這是一部中規中矩的電影,愛情悲劇該有的元素幾乎全具備了,俊男加美女的組合,別擔心劇情老套,只要身處文明的世界,愛與死永遠都能打動人心,導演對於黑暗時代那股劍拔弩張的氣氛處理得相當不錯,分鏡不拖泥帶水,事實上,可以說好得出乎意料,原以為這是舊瓶新裝、了無新意的電影,仔細一看,原來是赫赫有名的雷利史考特監製,難怪拍得似模似樣。

"崔斯坦與伊索德"的故事傳誦已久,華格納亦將它改編成歌劇上演,歌劇和電影屬性不同,不能互相比較,我是因為華格納的歌劇才知道有這個故事,但華格納的歌劇又臭又長,無緣欣賞,只聽過前奏曲,低沈壓抑的音樂蠻能搭配故事的陰暗風格,假如只想沈醉在浪漫的愛情悲劇裡,電影其實也很不賴,該有的味道都拍出來了。

Monday, August 28, 2006

追風箏的孩子 -- 血淚堆砌的歷史

追風箏的孩子
在很短的時間內看完"追風箏的孩子",終於體會到一本能夠打動人心的好書,並不需要詞藻華美的文字與曲折複雜的情節。

阿富汗,就地理位置而言,遠比歐美近得多,然而對它的認識卻和火星一樣少,但是,相信我,只要看過"追風箏的孩子"這本書,"阿富汗"三個字對你將不再是空洞的名詞,好書的價值就在於此,文學作品用謊言呈現真實,故事或許是假的,書中涉及的異國文化、時空背景卻必須經得起驗證,絲毫假不得。作者胡賽尼巧妙地利用王權時代阿富汗富豪人家小孩的眼睛,告訴我們幾十年來阿富汗的變化,從近乎與世隔絕的保守封建,窮困但自給自足,野心家的政治鬥爭,劃破寂靜黑夜的第一記槍響,俄國坦克轟隆隆開上街道,宣告和平時代的終結,逃難的驚惶恐懼,老一輩身在異國,心懷故土的難民心態,重回故鄉在斷垣殘壁找尋舊日的影子,高壓恐怖的神學士政權,幾十年間,阿富汗的歷史是用血和淚堆砌而成。

故事一開始,兩個年紀相仿、天真無邪的孩童玩在一塊,他們是最好的夥伴,兩人之間卻有道無法踰越的鴻溝,一為主,一為僕,只因他們分屬不同種族,聽來真是不可思議,竟然有生來就被烙上"下賤"的種族,僕人哈山的母親一生下他就跟別的男人跑了,他和小主人阿米爾由同一個奶媽養大,兩人情同手足,阿米爾出於主人的自尊,不時流露驕傲任性,他雖喜歡哈山,仍經常半戲弄性地測試哈山的忠誠,哈山打從心底敬愛阿米爾,對這一切總是逆來順受。

當兩人逐漸成長,阿米爾犯下畢生第一個大錯,為了獨佔父親的愛,設計趕走哈山父子,哈山明知被小主人陷害,依然勇敢地承擔謊言,對哈山來說,這樣的行為僅為了保護阿米爾,豈知卻成了阿米爾畢生無法擺脫的枷鎖,一輩子的良心苛責。這副枷鎖的沈重,讓數十年後在美國文壇小有名氣的阿米爾甘願冒生命危險前進戰區阿富汗營救哈山的兒子,神學士一拳拳打在自己身上,他感受的不是痛苦,而是解脫,他終於有機會為哈山做點事,用肉身的疼痛回報哈山對自己的忠誠,以及,為自己的父親贖罪,儘管父親和哈山均已做古,也許在那個沒有主僕之分的世界裡,父親終於對哈山說出埋藏多年的祕密。

這是近代一個國家的歷史,也是關於贖罪的故事,主角阿米爾和他的父親、哈山的母親,不同的三個人,三段不同的人生,圍繞著一個孩子--兔唇的哈山,他們都對哈山有所虧欠,也試著努力補償,假如哈山知道他們的心態,大概會要求別這麼做,贖罪只是讓自己內心好過些,並不能抹銷過去的錯誤,錯誤已經造成,如覆水難收,那就算了吧,我想善良的哈山會這麼回答。