2026年4月10日 星期五

我沒留言,怕劃破了寂靜的星空。眼神流露出讓人意外的自信,嘴角的微揚卻是顯得勉強。

我想是演算法作祟,雖然是個美麗的錯誤,還是該認真的註解一番。

搜尋了一下,應該不算是熱門的作品,問了Gemini,這篇就放Gemini整理的東西,報告放在另一篇。

《PS,我愛你》 (P.S. I Love You) 的情節圍繞著女主角 荷莉 (Holly Kennedy) 如何在失去摯愛後重新找回自我的治癒旅程:
  • 1. 痛失所愛
  • 荷莉與丈夫 傑瑞 (Gerry) 是青梅竹馬的靈魂伴侶,兩人默契十足。然而,傑瑞卻因腦瘤在 30 歲時不幸去世,留下荷莉獨自在都柏林的家中陷入極度的悲傷與茫然,甚至無法獨自面對日常生活。
  • 2. 傑瑞的最後遺物
  • 在荷莉 30 歲生日前夕,她從母親那裡收到了一個神祕包裹,裡面是傑瑞臨終前準備的 10 封信件。
    • 約定: 傑瑞要求荷莉每個月只能開啟一封信。
    • 結尾: 每一封信的結尾都附註著同一句話:「PS, 我愛妳」(P.S. I Love You)。
  • 3. 一年的治癒任務
  • 這些信件並非只是回憶,而是傑瑞為荷莉量身打造的「生活指南」,引導她分階段走出傷痛並嘗試新事物:
    • 整理生活: 要求她處理掉他的遺物(除了他最愛的皮衣),讓家裡不再只有悲傷的氣息。
    • 克服恐懼: 鼓勵她克服恐懼,例如上台參加卡拉 OK 比賽。
    • 重拾自我: 引導她找回少女時期的熱情,像是重新開始設計鞋子,並找回工作的自信。
    • 勇敢遠行: 安排荷莉與好友們一起去渡假,讓她重新建立社交生活,並意識到即使傑瑞不在了,她依然擁有家人與朋友的支持。
  • 4. 重新開始
  • 隨著最後一封信在隔年被開啟,荷莉終於學會了如何帶著對傑瑞的愛,勇敢地獨自走下去。她明白雖然傑瑞無法再陪她走完一生,但他留下的愛與勇氣將永遠支持她去探索新的生活與可能性。 這部小說強調的是「學習說再見」的藝術,以及如何在巨大的喪親之痛中,重新定義自己的身分與未來。


在《PS,我愛你》中,「學習說再見」不只是與死者告別,更是一個關於倖存者如何重新定義自我的漫長過程。以下為您整理小說與電影版的主要差異,以及它們如何以不同方式詮釋這個主題:
  • 1. 故事背景與氛圍
    • 小說版(愛爾蘭風情): 故事完全設定在愛爾蘭都柏林。作者西西莉亞·艾亨描寫了非常濃厚的愛爾蘭大家庭情感,透過荷莉與父母、兄弟姊妹之間的糾葛與支持,展現出療傷過程中「親情」的力量。
    • 電影版(美式都會): 將背景搬到了美國紐約曼哈頓,僅在渡假情節中造訪愛爾蘭。電影節奏較快,更像是一部具有美式浪漫風格的都會療傷片,著重於視覺美感與男女主角間的火花。
  • 2. 關於「說再見」的關鍵情節差異
  • 小說與電影在荷莉如何走出陰霾、執行傑瑞遺願的細節上有所不同:
    比較項目 小說原著 (Book) 電影版本 (Movie)
    度假的地點 傑瑞安排荷莉與好友去西班牙度假。 傑瑞安排她們回到兩人的故鄉愛爾蘭。
    與公婆的關係 荷莉與傑瑞的父母關係疏離,甚至曾被粗魯對待。 公婆對荷莉非常慈祥,甚至協助遞交傑瑞最後的信件。
    自我價值的尋找 描寫更多荷莉重拾專業技能(如設計鞋子)的內心轉變。 強調她找到新的生活熱情,以及與新對象(威廉)的曖昧互動。
    信件的傳遞方式 荷莉每月從母親家中或郵寄收到信件。 透過多種驚喜方式出現,如錄音帶、鮮花外送或朋友代轉。
  • 3. 「說再見」的深層意義
    • 面對孤獨的真實感: 小說更細膩地刻畫了荷莉在沒有傑瑞後的「功能失調」,例如她對朋友結婚、懷孕的嫉妒與落寞,這展現了現實中喪親者難以啟齒的陰暗面。
    • 最後一封信的啟示: 電影與小說都強調了同一個核心——傑瑞的信並不是要荷莉永遠記住他,而是要她**「允許自己再次快樂」**。當最後一封信拆開時,真正的再見不是遺忘,而是將對方的愛轉化為前行的動力。
  • 4. 續集消息:真正的告別
  • 值得一提的是,作者在 15 年後推出了續集小說 《附註》(Postscript)。
    • 情節: 故事發生在傑瑞過世 7 年後,荷莉被一群受她故事啟發的「PS 我愛你俱樂部」成員聯繫,希望她能幫助他們為摯愛留下最後的遺言。
    • 意義: 這部續集更深刻地探討了「遺產」的意義——我們留給世界的不只是回憶,還有如何幫助他人面對死亡的勇氣。

從小到大,家裡養過的貓少說也有個七八隻,每隻的個性都不太一樣,天性當然基本上是一樣的,磨爪子、伸懶腰什麼的。故事從貓說起只是方便代入,人對於貓來說其實是種家人的概念,貓也是有社會概念的,但比較偏重於地盤。如果不是同時有很多隻貓的話,對貓來說牠是把飼主當做是家人的。如果是狗狗的話,則是傾向領導的社會概念,也可以說是主人吧。前年送走了老貓,就是頭像這隻,看著閒置的貓砂盆子,怎麼能不難過呢?當然也可以再養一隻,但不想錯置或是替代那樣的情感,寧願留著空白。

《P.S. I Love You》中Gerry留給Holly十封信,應該說是種體貼吧,不該為了記憶中的美好,忽略甚至是拒絕當下眼前的美好。當然這中間的轉換是需要時間沉澱的,因為記憶裡有太多的點點滴滴,很容易就會錯置,那是相當不公平的一件事,不論是對於任何一方來說。兩顆心從相識、相知、相惜一直到只剩下思念,像是春夏秋冬一般無從拒絕。當然也可以用心的體會四季的變換,隱約透露出的是不能陪你到老的遺憾。老貓走的那天,牠拖著無力的身軀,想來到我的腳邊磨蹭,於是跌跌撞撞的撞了我的腳,那是牠僅剩的一絲力氣了。

貓不會說話,但貓是會表達感情的。信末的附註想是怕漏了什麼重要的事吧,這中間的核心指向著家人的概念。家人提醒著冬去春來,只不過是必然的過程,莫教早春逝匆匆。成長的過程中,自知是個愛玩的小孩,但從來不是個壞小孩,也許是對於世間的好奇,總是用心的體會著。常常會有自己對事情的看法,並不是很在乎他人的觀感,不知道這是不是好事,但沒什麼煩惱是真的。雖然不是真的看過《P.S. I Love You》,但我想我不會再問原因,因為我也被啓發了。

2026年4月5日 星期日

酒莊會種一些玫瑰,因為玫瑰對環境的要求較高。如果玫瑰長得好就是環境良好,酒莊的一大片葡萄園仰賴玫瑰作為環境指標。

曾經有個女孩,彼此互相有好感,休息時都黏在一塊,如果沒有其它朋友在倆人相對無語。那時還是懵懂的年紀,開學了,那段還沒開始的戀情也就結束了。女孩同學說她家裏管教很嚴,所知道的也就如此而已。那種感覺就像是啜著一杯咖啡,不覺得有什麼不妥,很溫暖平靜很滿足。多年後看這事才發現,幸福原來是這麼的簡單,長大後反而都忘了這些單純美好的感覺。

放慢腳步,生活中的點點滴滴才見其精彩。即便只是柴米油鹽的瑣事,也是感情。尋尋覓覓只是因為不知道邊界在何處,已經在手中的卻忘了珍惜。細細的品嚐浸潤出的滋味,像是早晨的陽光溫暖著心房。

2026年4月1日 星期三

《清平福來》齊白石



先從求字或是求畫說起,這是出於對文人的高度景仰,尤指一些大家、名流。通常會問明緣由或是對象(有時會有代求字的情形),不光是丹青水墨之間的事,還會附帶些有所意涵的文案或是構思。

以這幅《清平福來》來說,左下的落印透露了些訊息,猜想應該是藏家。筆者以為,是從文案開始然後構圖的,老者拿著個青瓶,暗示著飛蝠將至。老者耆壽本就已是一福,何用再求蝠臨?頗有身在福中不知福的意味。當然這是大師的贈言,文人間的交流往往都是這般的坦率。再說,懷抱著希望也不失為什麼壞事,還是隻紅(鴻)蝠。不禁猜想是盛情難卻之作,但卻又毫不造作,真大師性情也。

睡不著就起身打打字,隨著社會西化,這些文人雅士的軼聞已不多見,筆者也非專精僅略有耳聞。能得一知音已是幸甚,更幸者知音無過溢之言。



2026年3月30日 星期一

印象是在墾丁小灣,就是有停車場、土地公廟那邊。傍晚天色漸暗,看到景色拍了下來,很幸福的感覺。天高地闊兩個人能走在一起,是件不容易的事。

十八歲那年,認識了一個新來的同事。開放式的廚房,旁邊就是收銀檯,上班時還能聊幾句,就這樣開始交往。那個年紀誰不是腦袋空空,只是當時不自覺而已。有天我脫口而出,問她願不願意嫁給我,我沒別的意思就是想到就脫口而出。過了兩三天她就答覆了,於是過了一段甜蜜的日子。

倆人黏得太緊,我只是想有點自己的空間,發發呆做做白日夢什麼的。她覺得我冷落她,有點情緒化,當時我是真的腦袋一片空白啊。看她難過我手足無措,同時不覺得自己有什麼錯。算是冷戰了一陣子,於是我提出了分手,倆人很平靜但她默默的流下了眼淚。後來和我姊談到她,我姊告訴我我是真的傷了她的心。很多年後才明白自己所表達的並不是自己的想法,還只是個小大人那時。

退伍後我專程去找她,我們聊了一早上,聽她數落我毛病一堆,她原來也是有她的理想的,算是被我給打亂了。聽到這裡才稍稍釋懷,兩顆青澀的蘋果,如果重來的話把愛情拿掉也許會一起走下去。從十八歲到我退伍差不多有四年了,對她的歉疚大於感情。剛退伍只想著銜接社會,也體認到對待感情是要很慎重看待的。現在回顧這段往事,那個時間點還是很自私的,她總是很溺愛我。

聊聊塵封已久的往事,人生真正要面對的是自己。坦然說出這段故事,要是當時有點概念就好了,致敬青春年少。

2019年3月22日 星期五

CHCP

CHange Code Page

Change the active console Code Page. The default code page is determined by the Windows Locale. View the current code page:
chcp Change the code page to Unicode/65001: chcp 65001


Code pageCountry/ Region/ Language
437United States美國
708阿拉伯文(ASMO 708)
720阿拉伯文(DOS)
850Multilingual (Latin I)多語言(拉丁文 I)
852Slavic (Latin II)中歐(DOS) - 斯拉夫語(拉丁文II)
855Cyrillic (Russian)西里爾文(俄語)
857Turkish土耳其語
860Portuguese葡萄牙語
861Icelandic冰島語
862希伯來文(DOS)
863Canadian-French加拿大 - 法語
865Nordic日耳曼語
866Russian俄語 - 西里爾文(DOS)
869Modern Greek現代希臘語
874泰文(Windows)
932日文(Shift-JIS)
936中國 - 簡體中文(GB2312)
949韓文
950繁體中文(Big5)
1200Unicode
1201Unicode (Big-Endian)
1250中歐(Windows)
1251西里爾文(Windows)
1252West European Latin西歐(Windows)
1253希臘文(Windows)
1254土耳其文(Windows)
1255希伯來文(Windows)
1256阿拉伯文(Windows)
1257波羅的海文(Windows)
1258越南文(Windows)
20866西里爾文(KOI8-R)
21866西里爾文(KOI8-U)
28592中歐(ISO)
28593拉丁文 3 (ISO)
28594波羅的海文(ISO)
28595西里爾文(ISO)
28596阿拉伯文(ISO)
28597希臘文(ISO)
28598希伯來文(ISO-Visual)
38598希伯來文(ISO-Logical)
50000用戶定義的
50001自動選擇
50220日文(JIS)
50221日文(JIS-允許一個字節的片假名)
50222日文(JIS-允許一個字節的片假名- SO/SI)
50225韓文(ISO)
50932日文(自動選擇)
50949韓文(自動選擇)
51932日文(EUC)
51949韓文(EUC)
52936簡體中文(HZ)
65000UTF-7 *Unicode (UTF-7)
65001UTF-8 *Unicode (UTF-8)

2018年3月17日 星期六

Searching Arrays and Collections

The Collections class and the Arrays class both provide methods that allow you to search for a specific element. When searching through collections or arrays, the following rules apply:
  • Searches are performed using the binarySearch() method.
  • Successful searches return the int index of the element being searched.
  • Unsuccessful searches return an int index that represents the insertion point. The insertion point is the place in the collection/array where the clement would be inserted to keep the collection/array properly sorted. Because positive return values and 0 indicate successful searches, the binarysearch() method uses negative numbers to indicate insertion points. Since 0 is a valid result for a successful search, the first available insertion point is -1. Therefore, the actual insertion point is represented as (-(insertion point) -1). For instance, if the insertion point of a search is at element 2, the actual insertion point returned will be -3.
  • The collection/array being searched must be sorted before you can search it.
  • If you attempt to search an array or collection that has not already been sorted, the results of the search will not be predictable.
  • If the collection/array you want to search was sorted in natural order, it must be searched in natural order. (This is accomplished by NOT sending a Comparator as an argument to the binarysearch() method.)
  • If the collection/array you want to search was sorted using a Comparator, it must be searched using the same Comparator, which is passed as the second argument to the binarysearch() method. Remember that Comparators cannot be used when searching arrays of primitives.

Let's take a look at a code sample that exercises the binarysearch() method:

import java.util.*;
class SearchObjArray {
    public static void main(String [] args) {
        String [] sa = {"one", "two", "three", "four"};
        Arrays.sort(sa);                                // #1
        for(String s : sa)
            System.out.print(s + " "};
        System.out.println("\none = "
                + Arrays.binarysearch(sa,"one"));            // #2
        System.out.println("now reverse sort");
        ReSortComparator rs = new ReSortComparator();    // #3
        Arrays.sort(sa,rs);
        for(String s : sa)
            System.out.print(s + " ");
        System.out.println("\none = "
                + Arrays.binarysearch(sa,"one"));            // #4
        System.out.println("one = "
                + Arrays.binarysearch(sa,"one",rs));        // #5
    }
    static class ReSortComparator
            implements Comparator {                // #6
        public int compare(String a, String b) {
            return b.compareTo(a);                        // #7
        }
    }
}

which produces something like this:

four one three two
one = 1
now reverse sort
two three one four
one = -1
one = 2

Here's what happened:

Line 1: Sort the sa array, alphabetically (the natural order).
Line 2: Search for the location of element "one", which is 1.
Line 3: Make a Comparator instance. On the next line we re-sort the array using the Comparator.
Line 4: Attempt to search the array. We didn't pass the binarySearch () method the Comparator we used to sort the array, so we got an incorrect (undefined) answer.
Line 5: Search again, passing the Comparator to binarysearch(). This time we get the correct answer, 2
Line 6: We define the Comparator; it's okay for this to be an inner class.
Line 7: By switching the use of the arguments in the invocation of compareTo(), we get an inverted sort.

Given:

1. import java.util.*;
2. public class Quest{
3.     public static void main(String[] args){
4.         String[] colors = 
5.                 {"blue","red","green","yellow","orange"};
6.         Arrays.sort(colors);
7.         int s2 = Arrays.binarySearch(colors, "orange");
8.         int s3 = Arrays.binarySearch(colors, "violet");
9.         System.out.print(s2 + "" + s3);
10.     }
11. }

What is the result?

A. 2-1
B. 2-4
C. 2-5
D. 3-1
E. 3-4
F. 3-5
G. Compilation fails.
H. An exception is thrown at runtime.