2023年7月20日 星期四

去他的飛機!我「腳踏實地」環遊世界

出國旅遊是有錢又有閒的人們低調奢華的小確幸,但要像「去他的飛機」作者史蒂芬生一樣,不依靠飛機跑地球一圈,我想沒幾個人能辨得到。身為知名的旅遊作家,走過千山萬水算是稀疏平常的例行公事。基於對環遊世界的嚮往和對航空旅行的厭惡感,某天他和伴侶蘿貝卡突發奇想,要來趟「腳踏實地」的旅程,只依靠路運和海運工具達成二萬五千哩的長征。內容可不是十八世紀的法國古典冒險小說,史蒂史生和蘿貝卡用自身的經歷與風趣幽默的口吻,為讀者們呈現二十一世紀真人版的「環遊世界八十天」,如有雷同,純屬事實。

這不是趟坐著豪華遊艇喝著免費自助餐繞地球一圈兒戲般的挑戰,出發前他倆把居所退租、家具清空,抱著破斧沉舟的決心,帶著幾件輕便的衣服和小背包,就從美國東岸費城坐著載客貨輪,一路跨越大西洋到歐洲比利時的安特衛普。做為全球貿易核心元件的海運貨櫃船,由於自動化技術的進步,航運時必要的船員數量逐步減少。船公司腦筋動得快,多出的艙房用來載客,多多少少增加點業外收入。在貨輪旅行社的協助下,作者用九天的時間在貨船上體驗一望無際的汪洋、沒有的網路訊號的「類船員」作息,直到上岸的前兩天還經歷足以令人心智失常的三天濃霧!

安特衛普是舉世聞名的鑽石交易中心,當貨輪扺達比利時後他們就順道到處遊歷。不像搭飛機般瞬移到目的地,「路遊」能讓旅客玩遍路途中的大城小鎮,這是史蒂文生再三強調的旅遊醍醐味。接著坐有著法國高速列車(TGV)車頭的塔利斯線特快列車,一路奔向德國臨近波羅的海的城市羅斯托克。採用路運和船運旅行與直接坐飛機最大的差別是班次密集度,在銜接火車和貨船(渡輪)時,總會留有大量的緩衝時間,短則數小時多則幾天,讓你走走逛逛。他倆就在等出發去芬蘭的渡輪中間,花費十五個小時在這個前東德城市觀光和隨之的漫長等待。

搭上由前東歐集團國家愛沙尼亞渡輸公司的船前往芬蘭,既便是花了一人一百二十五美金,也只換得一個比飛機經濟艙還小的位子,座椅還是放在甲板底下沒開窗的小空間。四十個位子中摻雜著哭鬧的小孩與臭氣沖天的老人,要待足足二十四小時才能達到目的地,藉由鎮定劑和酒精的幫助,史蒂文生才能在這個被他們稱作「絕望房間」裡小憩。同時間在船上的旅遊雜誌看到十年前在波羅的海發生過愛沙尼亞號渡輸船難,造成八百多人喪命,絕對是讓史帝文生在船上酒吧多點幾杯調酒的原因。

踏上芬蘭的赫爾辛基後,又馬不停蹄地乘座雙體快速渡輪扺達愛沙尼亞的塔林市,一切都為了搭上舉世聞名的西伯利亞大鐵路,它橫跨歐洲與亞洲全長六千哩,一路從西方的莫斯科開到太平洋邊的海崴。莫斯科雖然是俄羅斯的首都,但有著不淨公廁與滿地垃圾的市容,舊時俄式官僚作風依然陰魂不散地盤據在此。事不關己與俄國人獨有的冷漠聳肩和皺眉,無時無刻出現在任何俄籍服務生身上。俄國火車票分三種艙等,有私人廂房的頭等艙、有四個鋪位廂房的二等艙,以及五十四個鋪位的三等艙!如果中途完全不下車,車程總共要花六天,史蒂文生倆則是選擇中途停靠幾站,能走走看看不同的城市和小鎮。

從海參威坐俄國渡輪到日本伏山港,搭乘地鐵到東京後,先去國技館觀看日本相撲比賽,隔天利用新幹線子彈列車抵達神戶港,邁向中國天津。現代化、整潔有秩序的日本,是他們一路上待過對旅客最舒適的國家,一切是那麼的,嗯…你知道的,「日本」。史帝史生他們當然可以直接從日本橫濱港出發,搭著前往美西的豪華渡輪,就此結束一趟半調子的環球旅程。但這可不符合官方承認的世界旅行,在定義上要貨真價實的完成這個任務必須達成三件事:
1.出發和歸返點在同一地點。2.以同一個方向跨越每條經線。3.經過兩個穿過直徑的對應點。
由於地球上大部份的面積是海洋,能達成第三項的地點實在有限,因此史帝史生將標準改成至少要走兩萬五千哩(地球圓周長)。所以他們決定先向南走,以陸路走到最接近赤道的地點後再走水路向西行。

高強度建設中的北京城,讓史帝文生大開眼界,但來的不是時候,在「黃金週」時前來中國,而他們居然運氣滿點地在連假期間買到前往越南邊境南寧的夜班火車票!中國式的大通鋪臥鋪車廂,塞滿著攜家帶眷的返鄉旅客,呈現出和日本地鐵截然不同的旅途風情。從越南北起河內南到西貢這段路,他們倆令人嘆為觀止地是報名自行車團,一路騎乘整個越南國境(騎不動有保姆車),再藉助巴士與租車經過柬埔寨到達泰國曼谷。在曼谷火車停駛的情況下,歷經波折才抵達新加坡,馬不停蹄訂到前往澳洲的船票,在最後一分鐘跳上即將出港的遊輪。

從澳洲東北岸的達爾文市一路自駕橫跨整個大陸,朝向西南岸的雪梨前進,光是這段經歷就是令人嘆為觀止的挑戰。而租車公司居然只收取一天一美金的費用!原來租車公司原本得把這台蘴田奇美轎車送到雪梨,如果有遊客自願幫忙把車開到目地的,何樂而不為?別以為這趟路有多麼詩情畫意,一望無際只能看到地平線的空曂道路,沿途不見任何人煙足跡,卻充斥著性好自殺會一頭撞向保險桿的厭世袋鼠,四天旅程下來,真的是恍如隔世。最後從澳洲墨爾本回到美國東岸洛杉機的行程,相形之下就有點乏善可陳。和一群富有高齡退休的白人們,吃著千篇一律的西式自助餐配著喝不盡的各式酒精飲品,初看有如天堂的環境,待久後越來越像陪著他們慢性自殺的臨終旅程,令史帝文生夫婦不寒而慄。

「去他的飛機」全書充滿機智風趣、自然不作用的口吻,分享一段勇氣十足能誇耀一輩子的壯遊。不依賴快速便捷的航空器,一步一腳印地投入體驗各地人文風情,是真正的「旅人」之心,也讓讀者們為之嚮往。就算人生中不見得可以有機會仿照同樣的旅程,只要翻閱這本「去他的飛機」,神遊史帝文生倆過程中的點滴,也別有一番滋味。

 

2023年7月18日 星期二

Spring實戰, 6/e

 

自看過Manning出版社的Spring Start Here後,一方面開始將Spring Boot和Spring MVC技術運用在手上的專案,另方面也對Spring框架除了Web開發以外的功能留下懸念,想找個閒暇時間,好好地研讀一下Spring Start Here的姐妹作Spring in Action。恰好工作上有需要研究反應式/響應式Web框架(Reactive Web Framework),簡單搜尋相關資料後,賓果!Spring生態系中有個Spring Webflux正符合要求,成為研讀Spring實戰, 6/e(簡體版)的契機。

在今日,Spring是Java語言中最重要的軟體框架,沒有之一。也因此Spring in Action成為Java開發者自學的祕笈。隨著Spring框架的不斷演進,特別在Spring 4後推出的Spring Boot,讓框架的設定與開發展現出跨次元般的進步。Spring in Action同步也出到了第六版,而簡體版的Spring實戰, 6/e是譯自第六版的Spring in Action,能確保學到最新、不過時的框架版本。此書也不囉嗦,不贅述像IOC、AOP這類Spring初級觀念,第一部份「Spring基礎」就切入應用範圍最廣的Web網站開發。歷經Spring Start Here的磨練,運用Spring Boot開發以Spring MVC為核心的專案已是小事一件。後續的Spring Data JDBC和JPA、Cassandra、MongoDB數據持久化,也只算是回顧Spring Data的總複習。

第二部份「Spring集成」中出現全書第一個亂流,第八章的Spring Security。書中採用的OAuth 2.0實作套件,是尚在測試的不穩定版本,即便直接從GitHub取回範例程式碼執行,依舊會出現令人氣餒的驗證失敗結果。最後求助Baeldung網站裡的教學文章,才在升級OAuth 2.0套件後,跨越第一個難關。其它像是發送異步訊息Spring集成兩個章節,對於已經採用Apache Camel實作EAI應用的我來說,真的不禁莞爾一笑。這兩種Spring應用,簡直就是對Camel致敬(仿冒)的精簡版。因此雖然看到Spring有Spring集成的功能,未來面對企業資料整合的需求時,還是會採用已熟練且更完整的Camel框架來實作。

重點戲的第三部份「反應式Spring」是全書的精華所在,在Node.js橫空出世的向世界展現反應式Web框架的威力後,Spring也不落人後地推出Java世界裡的反應式Web框架Spring WebFlux。建基於反應式編程專案Project Reactor之上的WebFlux,由於其獨特的開發思維與撰寫風格,難以融入即有的指令式風格框架Spring MVC中。結果就是採用Spring開發Web應用時,有兩種完全平行又異曲同工的解決方案。Spring實戰, 6/e雖然用了兩個章節來介紹WebFlux如何實作出一個具體可用的Web,但反應式編程這個主題實在太新,更別說想要好好講述開發Web的方方面面,Spring Start Here可是用一整本書才講完Spring MVC。想要作者用短短兩個章節講述完整的反應式Web框架和反應式版本的JDBC(R2DBC),實在是強人所難。因此反應式Spring正是我第二個遇到的亂流,只好再度從網路上查閱其它先進分享的技術文章,學習如何使用WebFlux開發出一個完整的反應式Web REST API。只能說在WebFlux這個主題上Spring實戰, 6/e幫我開啟一個好的起頭,但要走的下去,得從其它輔助材料著手才更順利。

最後的「部署Spring」部份,則是介紹一些實務上選用的功能,像是監控與管理用的Spring Boot Actuator,是一個等同MBean的機制。當然Spring也少不了支援傳統的MBean,讓已經採用該工具的開發者不用浪費時間再實作Actuator。Spring專案程式碼的佈署與和Docker/Kubernetes的整合,更展現出Spring實戰, 6/e在主題規劃的全面性,畢竟未來的程式運行環境,有誰能逃得過被容器化哩?附錄介紹了如何使用各項工具建立一個新的Spring Boot專案,是對初學者非常貼心的作法,很多技術書籍都忘了環境建置這一步,往往是讓學習者最挫折進而選擇放棄的起因。對於Java開發者來說Spring實戰, 6/e是不可錯過的著作,不過最好是在讀過Spring Start Here再詳閱,免得略過一些基礎但重要的Spring觀念。

2023年7月4日 星期二

破梯效應

 

「人比人氣死人」,世間很多不快樂都是源自於互相攀比後的心魔。而「破梯效應」一書用科學與統計數字,破解「不平等」對心理、團體與社會層面造成的衝擊。總歸一句,如論語所言「不患寡而患不均」。全球化興起的經濟地位不公平趨勢,終究會埋下社會動亂不安的地雷(看看目前的法國暴動)。導言中作者講述一個有趣的統計結果,數字顯示在設有頭等艙的航班上,乘客行為失控的機率為正常值的四倍!即便是坐得起飛機旅遊稱得上中產階級的知識份子,只要些微感受到處於「被輕視」的情境,就會產生相對地位差異感。讓這群不窮的人,展現出和貧民一般的舉止和態度。像是短視近利、偏好冒險行為。

人們衡量自我地位的認知過程並非基於客觀的數字,許多財務上堪稱富裕的人(年收百萬),在自我評估時總把自己放在較低的位階。相反地有許多客觀上落入貧窮階級的人,卻認為自己過得並不差。原因在於人們用來判斷自己社會地位的標準,是透過不間斷地與他人比較來定義。包括身邊的親朋好友、工作夥伴、送往迎來等等客體的經濟能力,會間接影響你自我地位的評估尺度。「寧為牛後」不失為積極追尋成就的處事策略,然而長期認知自己處於團體中地位低下的階層,容易罹患心理疾病。攀附權貴也許是魚躍龍門最快的捷徑,卻存在著心理健康上的高風險,「富貴險中求」真是至理名言。

如果認為只有擁有高智力的人類才愛比較,那可錯了。針對靈長類的實驗觀察發現,如果同樣的勞力付出會獲得與同伴不同的報酬,也就是刻意營造出來的「不公平」情況,受試動物會產生顯而易見的不開心與反常態度。而針對大鼠所做的研究則發現,大腦在進行「地位比較」時,處於地位優勢者其大腦裡的報償迴路會有放電刺激,效果等同於性愛、金錢或迷幻藥。大腦對「相對地位」的滿足感,竟然可以和獲得真正的金錢一樣強烈(所以只升官不加薪,員工也會從中滿足!),「權力是最好的春藥」獲得科學上的背書。

這些理論也間接解釋為何在今天的台灣,GDP不斷成長,各項建設與福利制度越來越完善,但民眾普遍心存不滿,更有很多長者懷念與嚮往過去過苦日子的「美好時光」(原因是那時是大家一起窮,不易有自己不如人的挫敗感)。經濟層面的幸福感是建立在「相對地位」的比較上,滿意程度不是端看實際所得有多少,而是根據他在群體中的「相對位置」決定(只要比周圍多就會感到開心)。經濟發展漸近高峰的同時,財富逐漸集中在少數人身上,彼此在經濟層面的差距越拉越大,即便原屬於中上收入的小康國民,也會出現財富的「相對剝奪感」,進而開始怨天尤人。社會不平等不僅影響國民的靈性(笑),統計顯示,所得分配越不平等的國家,國民的犯罪與健康問題更惡化,其中最明顯地例子就是美國。財富分配的不公平不只是影響著窮人,而是影響該地居住的所有人口,在同土地上的富人所生活的環境條件(如治安、衛生)會一起被拖累而同步劣化。

「自覺貧窮」對人們造成的傷害是微妙而真實,貧窮感會趨使人從事高風險行為(例如開槓桿投資、冒然創業),以短視近利而非長期經營的思維規劃人生。傷害是如此大,但要讓人產生相對地位不如人的「自覺」卻很簡單,只要透過意在言外的些許暗示就行(例如航班有頭等艙,但你坐經濟艙)。而報章媒體裡的高調炫富、親朋好友的言談比較、街頭路邊的名車重機,卻在已經走火入魔的環境壓力上火上加油,也難怪在台灣,鼓吹「快速至富」的理財老師總能找到冤大頭來割韭菜。

點出問題當然要給予解答,如何善用你我的社會比較天性,讓生活過的更好、更開心,書中也做出總結。在追求自我成長與成就時,要充份運用「向上比較」,說白話就是一句「見賢思齊」,向更優秀的人比較,不要輕於滿足於現狀。而對物質享受與財富地位的態度,則要轉念進行「向下比較」,想想那些三餐不繼貧苦人,時時對平順的日子感恩與滿足。還有兩種比較超然,克服地位比較的思維,一是老生常談的「和自己比」,把比較的目標設定成過去、未來的自己。二是回頭檢視自己最重視的人生價值,並以此為實踐目標,別把心力放在追求身份地位上。「破梯效應」以科學的角度點破市場經濟背後造成的社會壓力與制度隱憂,同時也為尋求人生真正價值的讀者帶來撥雲見日的一道曙光。