Skip to content

嘔吐

  • Quote

物體沒有生命,不應該觸動到人。我們使用它們,之後放回原位。我們生活裡充斥著它們,它們供我們使用,僅僅如此。但是對我,它們觸動我,這難以忍受,我害怕接觸到物體,彷彿它們是活生生的動物。

她因吝於受苦而苦。她應該也吝於享樂吧。我好奇她是否有時也想擺脫這種單調枯燥的痛苦,擺脫她只要一停止哼歌就會再次重起的嘀嘀咕咕,也好奇她難道不想乾脆好好受一下苦,讓自己陷入絕望之中。然而這是不可能的,她太糾結了。

這是我的身影。經常,在這種失落的日子裡,我這樣待著,凝視著它,看著這張臉孔,完全無法理解。其他人的臉孔擁有一個意義,但我的沒有,我甚至不知道它是美是醜,我想應該是醜,因為有人跟我這麼說過,但是我對這無感。其實,我甚至驚訝人們可以對它下這種形容詞,就好像評論一塊土或一塊岩石是美或是醜。

活在社會中的人學會在鏡中看見自己顯示在朋友眼裡的樣子。我沒有朋友,是因為這樣,我的肉體才如此光禿貧瘠嗎?就好像──對,就好像毫無人跡的大自然。

待會兒副歌就會出現,我特別喜歡這副歌,下落黃泉般,像海邊的懸崖。現在是爵士音樂,沒有旋律,只是一些音,一大堆的小震動。它們不知休停,一個不可改變的秩序使它們誕生、滅亡,從不容許它們休養生息、為自己而存在。它們往前奔、互相推擠,在經過時猛然敲我一下,然後滅亡。我很想攔住它們,但我知道就算攔住了其中一個,手上抓住的只是一個庸俗而頹喪的音。我必須接受它們的死亡,甚至應該期望這死亡,我很少有如此苦澀而強烈的感覺。

還有另一種屬於我的幸福,音樂持續的短暫時間就像一條鋼帶,貫穿我們當下的時間,以無情的小尖刺擺脫、撕裂著我們的時間。那是另一種時間。

我從未像今天如此強烈感覺到自己毫無隱藏的維度,受到肉體和它發出像氣泡一樣的淺薄思想所禁錮。我用現在來建構記憶。我被拋擲、遺棄在現在之中。我徒勞地嘗試與過去相連,但無法逃脫。

這某件事開始,是為了結束:奇遇不容許延長,只有結束時才出現它的意義。我被拖著朝向這結束,無法回頭──它也或許是我的死亡。每一時刻的出現只是為了接引下一個時刻,我全心全意珍惜每個時刻。我知道它是獨一無二,無可替代的,但我絕對不會阻礙它的滅亡。我在柏林、倫敦度過得最後一刻,在那個前一晚才相遇的女人懷中,是我熱愛的一刻,也幾乎愛上那個女人──這一刻將會結束,我知道。待會兒我就要啟程去另一個國家,不會再見到這個女人、再找到這一夜。我傾盡每一秒鐘,試著全部體會,我不漏掉任何東西,捕捉所有細節,不論是那美麗眼眸中一閃而逝的柔情,或是街上的嘈雜,或是清晨時分隱約的光亮,我永遠印記在心裡。然而,一分一秒過去,我不會攔阻,我喜歡它流逝。

煤氣燈閃著光。我以為是負責點路燈的人經過了,孩子們張望著他,因為這是該回家的信號,但其實只是最後一縷太陽光反射。天空還亮著,地面卻已壟罩在陰暗中。人潮漸稀,可以清楚聽見海水的喘氣聲。一個年輕女人雙手握著欄杆,抬頭望著天,她的臉呈藍色,橫著一抹黑色唇膏。這瞬間,我想自己或許會愛這些人。但是,總之,這是他們的星期天,不是我的。

我不需要華麗的文句。我書寫是為了弄清楚某些情況,要避免舞文弄墨,應該信手寫下,不要管遣詞用字。

其實,讓我噁心的,是昨天晚上我昇華到一個高點。我二十歲的時候,會喝醉,然後解釋自己其實是笛卡兒式嚴肅莊重的人,我深知自己自我膨脹著英雄色彩,但是我不管,這使我開心。到了第二天,我就像在沾滿嘔吐物的床上醒來一樣覺得噁心。我喝醉不會嘔吐,但比嘔吐還糟糕。而昨天,我甚至沒有喝醉當藉口,只是像個傻瓜一樣心情激昂。現在我需要以如水般透明的抽象思想來洗滌自己。

總之,時光流逝這件大事,人們談論了很多,卻很少看見它。我們看到一個女人,心想她會變老,但是我們看不見她變老。然而在某些時候,我們似乎看見她變老,並且感覺和她一起變老:這就是奇遇的感覺。

我從皮夾抽出她的信。她沒有寫「我親愛的安瑞」,信尾也沒有客套話,只一句:「我必須見你。安妮。」沒有任何東西能讓我確認她的感情。我不能怪她。

我感覺事情成敗掌握在我手中。這個瞬間含有一種隱晦的意義,必須昇華它,使它完美;必須做出某些動作,說出某些話語。但是我被該做、該說的責任壓垮,我睜大眼睛什麼也看不見,在安妮當下編造出的花樣之間掙扎,揮著粗大的手臂把它們像撕毀蜘蛛網一樣撕毀。在那些時刻,她怨恨我。

她微笑。我最先失去的,是對她眼睛的記憶,然後是她修長的身體,記憶維持最久的是她的微笑,再之後,三年前,連微笑也不記得了。剛才,我從女老闆手中接過信時,這記憶突然來了,我似乎看見安妮在微笑。我試著再記起她的微笑,我需要感受到我對安妮所有的柔情,這柔情就在這裡,近在咫尺,等著誕生。但是微笑不再回來,結束了。我依舊枯竭冷硬。

我把安妮的信塞回皮夾裡,它已經給了我它所能給的,我無法追溯到那個把它拿在手裡、折疊、裝進信封的女人。想到過去的某個人難道是可能的嗎?我們當初相愛的時候,不容許我們共度的最親密時刻、最微小的痛苦留在身後。聲音、氣味、天色的細微變化、甚至沒說出口的想法,我們一切都帶走,一切都鮮明,不斷在當下享受它們,或感受它們折磨。沒有任何回憶,而是一份無法逃避的熾烈愛情,沒有陰影,沒有退路,沒有休憩處。

過往,是擁有房子的人的奢侈。

家變

  • Quote

可是現今不一樣。現在他望著下游水面上方的長橋灰形,以及那水面上的灰淡天色,他感覺及一種彷彿的是「哀傷」,然而又說不出牠是為什麼的,而異常怪異的是,斯一種哀愁居然使他獲得一種彷彿欣慰,髣髴慰藉一樣的快感…在天邊的灰雲片中陡然出萃一顆銀量的寒星,他望著牠不覺感到一種吁透出久抑胸中的一口悶氣的感觸。他把他底眼睛投住在那一顆之上,也將他對他將來的一切期望寄掛在這一顆星銀之上。

這就像有一點是那種在日晝想起來可不容易但是倘是移到子夜的時候去想它想不到竟會一時化為行得通了的那樣子的情形那麼個樣,白天與黯夜的角度兩分然各不相同的,像這樣放在白天不會覺得任何歉疚的事,到了晚上就會明亮的覺得。

父之罪

  • Quote

他的五官鑴刻得有稜有角——上鷹嘴鼻,豐潤的嘴,下巴的線條宛如危巖峭壁——但他臉孔引人側目,主要是因為它活似一塊空白石板,只等別人刻下誡令。

我從來不知道該怎麼訂價。我的時間只有對我才有意義,它對別人值多少我怎麼知道?如今我已經刻意調整我的生活方式,希望盡可能不要介入別人的生活。那我又該跟強迫我介入的人收多少才算合理?

他沒問下去。奇怪的是,這比他問了還叫我難堪。

「咖啡跟酒,奇怪的組合。」
「是嗎?」
「酒叫你醉,咖啡叫你清醒。」
我搖搖頭。「咖啡從來沒法叫人清醒,它只能撐著你不睡。拿壺咖啡奉送酒鬼,兩個加到一塊只是個睜眼酒鬼。」

天主教堂從我身上拿到的錢比別人要多。不是我偏心,只是因為他們開門的時間較長。不是週末的話,基督教堂大部分都關了門不做生意。

我知道下一步一定逃不掉。我一直躲躲閃閃。但它老不鬆手,我沒辦法永遠躲著不理。現在不做,更待何時?

我從布魯克林回來時頭痛欲裂、口乾舌燥。我止渴的功夫做得比止痛徹底許多。

有件事我早就學到:不需要知道對方在怕什麼,知道他在怕就夠了。

搜書架時,如果可以任意翻閱,然後往地毯隨手一丟,工作效率自然可以大大提高。如果你得把每本書整整齊齊的擺回原位,二十分鐘的工作準可以拖上兩個鐘頭。

「唔,他們年輕貌美的時候,你不會在意他們花錢太少,他們是我這兒的最佳室內擺飾,你知道。他們可以招徠顧客。」

我暗自納悶,不知道她臀部一扭一扭是為了給我養眼,還是她天性如此。

你得適可而止。你永遠不可能查出所有真相;不過你永遠可以查到比已知的多。

這樣做八成是浪費時間,不過我做的事其實全是浪費時間,看你從什麼角度看。顯然我裡頭有個什麼,命令我非得浪費時間不可。

保重。我覺得大家好像是近幾年來,才在道別時說這兩個字。人人開始有了危機意識,整個國家陡然意識到,我們在一個隨時需要保持警覺的世界。

我深深看進溫蒂的眼睛,我們過去這幾天變得非常親密,她跟我。我現在對她的了解恐怕已經超過她能接受的程度。

我們還滿合的。有那麼一會兒,所有難解的問題都不見了,躲在陰暗角落。

用 Terraform, Google Cloud VPN 架設 Hybird Cloud

  • Ops
tags: gcp, cloud-vpn, shared-vpc, terraform

為了更了解地端、雲端網路如何連接,用了 GCP 來做一整套簡單的實驗。

架構說明

img

雲端

為了模擬比較複雜的組織架構,雲端使用了 Shared VPC 的架構,有以下幾個優點:

  • 減少 VPC 數量,較容易管理
  • 多個子專案(service project)可以共享同一個主專案(host project)定義的網路
  • 子專案可以各自分開 billing
  • 劃分網路權限,子專案只能使用主專案定義的網路

要使用 Shared VPC 架構有幾個前提:

  • 須要有 GCP Organization
  • 主專案須設定為 shared VPC host
  • 子專案須 attach 到主專案

雲端的 VPC Gateway 的實作方式採用 GCP 的 Classic VPN,也稱為 route-based VPN,採用事先定義好的靜態路由規則(static routes) 來做 routing。

GCP 還有另一套 VPN 叫 HA VPN,背後是使用 BGP 來做動態路由設定,由於架構較複雜,沒在此實驗採用。

要使用 GCP 的 Classic VPN 有以下前提:

  • 兩端只能走 IPsec 協議
  • 兩端都必須有 public IPv4 位址

在兩端 peering 上也要避免 IP 位址重疊。另外,若要做到高可用,可以建立多個 VPN gateway 來達成。

地端

為了模擬地端環境,另開一個 GCP 專案,也會設定一個獨立的 VPC。

地端採用一台 VM 實例來扮演 VPC Gateway,使用的工具是 strongSwan

Read More »用 Terraform, Google Cloud VPN 架設 Hybird Cloud

淺談 Moby’s BuildKit

  • Dev, Ops

前陣子因為工作需要,研究了一下所謂 Docker build 的 3.0 版本 —— docker buildx build,希望能找出其與 docker build 背後的差異

docker buildx 指令是使用 Moby’s BuildKit 這套工具來代理 building,所以以下會用 BuildKit 來指稱新的建構模式

直接下結論

  • BuildKit 須要透過一個前端服務去轉換 Dockerfile (或其他語言定義的建構流程),再交給 LLB 處理
  • 即使是同一個 Dockerfile,docker build/buildx 兩者建構出的 layer 完全不同,無法共享
  • 如果你建構很複雜,已經有在使用 multi-stage build(例如須要先編譯成二進制檔案),那會比較有幫助,如果是要 build 類似 python 這種直譯式的應用程式,因為流程較為單純所以幫助不大

Read More »淺談 Moby’s BuildKit

SRE: How Google Runs Production Systems 讀書筆記(四)

  • Ops

on-call

關鍵是「數量」跟「品質」的平衡:

  • 數量:不超過 25% 時間 on-call
  • 品質:須要有充足的時間處理(含分析、debug、事後檢討,一個事件約須花 6 小時完成)

幾分鐘內要回應?

回應時間與服務水準、可靠性有關,例如面向使用者的服務須在 5 分鐘內回應,非敏感業務通常是 30 分鐘

維運負擔過大怎麼辦?

事件 / 警報比例應接近 1:1,避免重複警報導致維運壓力、調派有經驗的 SRE 協助、與研發團隊一起分擔維運

系統太穩定怎麼辦?

維運壓力不夠會導致自信過度或自信不足,每個工程師每季應至少參與一次 on-call,公司可定期舉辦災害演練

故障排除技巧

故障排除是一連串的「假設」+「排除」,這個技能是可以教學相長的,如果能做好事後檢討、紀錄負面結果(negative result),故障排除會是學習一套系統很有效的方法

小心避免以下陷阱:不理解現象(方向錯誤)、假設是對的,但測試假設的方法錯誤、過早下結論、被巧合/偽相關誤導

「緊急情況下,飛行員的首要任務是保持飛機飛行及安全登陸,故障定位和排除只是次要目標。」

Google 用什麼追蹤工具?

每個系統用的工具可能不同,文中提到的 Dapper 是 Google 內部很廣泛應用的工具,特別看了一下文獻整理幾個重點

在分散式系統,跨服務請求很常見,例如發出一個 requestX,在下游會發出額外數個請求 —— 攤開看就是一個 Tree(巢狀的 RPCs)

這個請求/響應歷程的樹狀結構稱為一個 Trace,當中的節點就是單一請求/響應,稱為 Span,裡面會紀錄時間戳、traceID、parentID、host 等詳細資訊。Span 是以本地文檔的方式建立和寫入的,再透過 Dapper daemon 去拉取並儲存到後端 —— BigTable, Trace 存成 row,Span 存到其對應的 sparse column

可以把 Span 視為是一種 Log,除了運行在伺服器上的 Dapper daemon,應用程式也可以透過函式庫發送 Span、加標籤或自訂的額外訊息等,這個重要功能稱為 annotation

Dapper 設計上很重視的理念是「低成本」,包含本地檔案的讀寫、後端儲存、網路頻寬(只佔小部份),因此採用取樣 (sampling) ,經驗上顯示取樣不只可以大幅降低延遲,也能讓資料得以保存更久,Dapper 的預設取樣率是 1/1024——對數據密集型系統而言,不會造成分析上的盲點

Dapper 原本只是一個追蹤工具(黑箱的),但後來演化成一個大型的監控平台,有強大的界面可以幫助分析,甚至到後來,發現可以應用的層面更廣:系統的依賴關係(dependency)分析、網路狀態分析、在共享儲存的基礎上區分服務、長尾延遲的分析、錯誤報告分析等

Read More »SRE: How Google Runs Production Systems 讀書筆記(四)

Bitnami