<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>Alice Hsu's Blog</title><link>https://alicehsu.blog/zh-tw/</link><description>Recent content on Alice Hsu's Blog</description><generator>Hugo</generator><language>zh-TW</language><lastBuildDate>Mon, 18 May 2026 00:30:00 -0500</lastBuildDate><atom:link href="https://alicehsu.blog/zh-tw/index.xml" rel="self" type="application/rss+xml"/><item><title>配眼鏡</title><link>https://alicehsu.blog/zh-tw/posts/2026/05/new-glasses/</link><pubDate>Mon, 18 May 2026 00:30:00 -0500</pubDate><guid>https://alicehsu.blog/zh-tw/posts/2026/05/new-glasses/</guid><description>猜猜我花多久才配到適合的眼鏡？</description><content:encoded>&lt;p&gt;二月初某一天，洗眼鏡的時候忽然啪的一聲，左邊鏡框斷裂，鏡片掉了出來。&lt;/p&gt;
&lt;p&gt;這是一副陪伴了我十年左右的壓克力圓框眼鏡，顏色隨著時間從深粉褪至淡粉，鏡腳的地方也有許多鏽蝕痕跡。哎，是時候功成身退了，我把手中的鏡片暫用白膠黏一黏，再上網預約了附近的 A 眼鏡行。&lt;/p&gt;
&lt;p&gt;殊不知，災難的前奏才正要開始。閱讀下文前，請先猜猜我花多久才配到適合的眼鏡？答案將在結尾揭曉。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;十年沒配眼鏡了，再加上第一次在美國配眼鏡，一切都那麼的新鮮。走進這家號稱全美最好的 A 眼鏡行，也沒注意為何這間店沒什麼人。我跟著驗光師先做了些檢查，再由一位不在場的男醫生在螢幕裡替我線上看診，走出診間後興致高昂挑了鏡框，剛好鏡框在打折，一次配兩副挺划算的。拿了鏡框後到櫃檯結帳，櫃檯小姐散發出低迷厭世的氛圍，隨口說了個高價，我和 Sam 震了一下，不是說在打折嗎？她噢了一聲說，那是配最便宜的鏡片，不過按你這麼深的度數，需要薄的鏡片比較好。&lt;/p&gt;
&lt;p&gt;所有的價格都在她的電腦上，沒有公開本子可以參考價格的我，只好說了個預算。只見她的手指在鍵盤上搭搭搭快速敲了幾下，口中又迸出個價格，這會勉強可以接受，眼鏡嘛，生活必需品，這錢只好付了。&lt;/p&gt;
&lt;p&gt;「多久才會拿到新眼鏡呢？」
&lt;br&gt;
「兩週，好了我們會簡訊通知你。」&lt;/p&gt;
&lt;p&gt;好吧，美國嘛，看來不只打電話給客服慢，連配眼鏡也慢，只好耐心等了。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;兩週後，收到簡訊通知說可以拿眼鏡了，簡訊裡又說：「我們即將關門，希望您 2/28 前可以來取件，之後若有任何疑問，請洽我們的分店處理。」&lt;/p&gt;
&lt;p&gt;我迅速去 A 眼鏡行取件，店內許多架子都清空了，不見驗光師，只剩上次那位櫃檯小姐在，慘白的日光燈下，她的低迷厭世似乎又加劇了。我試了試新眼鏡，頭暈目眩，好吧，應該是身體需要時間適應吧？我咬了咬牙拿了眼鏡回家。&lt;/p&gt;
&lt;p&gt;努力適應了幾天還是很不對勁：只要戴上眼鏡就必暈，書沒法看太久，左眼總是失焦的狀態，而鏡框調太緊了，壓得太陽穴很痛。我只好拉著 Sam 陪我到另外一間分店去處理這兩副新眼鏡，而這間分店 A&amp;rsquo; 離家挺遠，需要開車三十多分鐘才到得了，不想無功而返的我，在網站上預訂了看醫生的時間。&lt;/p&gt;
&lt;p&gt;到了分店 A&amp;rsquo;，遇到上次的驗光師阿姨，看來是被調過來了。她巴拉巴拉說，可能是軸偏掉的問題，不過也不是很確定啦，待會由醫生幫你瞧瞧。這間店裡的醫生是駐店的，總算不在螢幕裡了，不過，她的腿打著石膏，拄著拐杖一跛一跛把我拎進診間，心情感覺沒有很好，本想三言兩語打發我走，不過在我不屈不撓（？）說了這兩副眼鏡帶給我多大困擾後，又一言不發替我重測了視力，沒有解釋為何我會暈眩，我只好再好學不倦主動提問，她才說，可能是你兩眼視力相差太多，我這次幫你調接近一點，希望可以改善暈眩的問題。我拿著第二張新的驗光單，請櫃檯人員幫我重配鏡片之外，也請他們幫我把鏡框調鬆一點。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;於是我盼啊盼，又等了兩週，終於，簡訊通知我可以取件了。我們開了半小時的車到了 A&amp;rsquo;，櫃檯大哥從後方的櫃子只拿出一副，我問：「另外一副呢？我配了兩副耶。」他說：「哎呀，我們的政策是確定第一副好了才會改第二副的鏡片喔，另外一副還要等兩個禮拜喔。」&lt;/p&gt;
&lt;p&gt;在那一瞬間，我的理智線不是斷掉了，而是接起來了，看見這間店所有誇張不合理的地方，友善模式下線，論理生氣模式上線。我跟大哥說，你們上次沒有這樣跟我說欸，我們來回你們這間店要一個小時，下次還要跑一趟欸。他不太抱歉地說抱歉，又說，不然下一副好了我們宅配送到你家？不過，運費要請你們負擔喔。（要不要聽聽你自己在說什麼？）&lt;/p&gt;
&lt;p&gt;我氣沖沖拿了現有的眼鏡先回家，這副眼鏡戴上後照樣暈眩，而原本太緊的問題變成太鬆，我拿下仔細研究後發現，眼鏡師傅直接把鏡腿和鏡片之間的接合處，削掉了一個角！對的，就是削掉，無法復原的那種。&lt;/p&gt;
&lt;p&gt;原本的生氣轉為心累，我和 Sam 討論，都一個多月了，拿到的這副眼鏡還是不能戴，另外一副還要等嗎？按著這家店的待客服務和做工品質，只恐去取件了還得要再跑一趟去調整，來來回回何時才是個頭啊？我想了想，隔了幾天後破釜沈舟拿了眼鏡去退貨，連還沒好的那副也不要了。拿回了眼鏡的錢，不過醫生看診的錢要不回來。不過沒關係，我的時間精力真的需要一個即時停損點了。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;離開了 A 店，我認真搜尋了一間評價比較好的 B 眼鏡行，它有線上配眼鏡的服務：網站上填寫度數後，就能宅配眼鏡到你家，並且，我們家附近十分鐘就有一間實體店，有問題都可去調整。實在不想多花錢再驗光的我，決定拿 A&amp;rsquo; 的驗光單一試，沒想到它到貨的時間不巧，剛好是我飛回台灣的那天。我人在機場時， Sam 在家拍了照片跟我說：「我覺得這家品質好很多耶！」光是它的眼鏡盒，就不是 A 店那種廉價低品質的透明塑膠盒，而是一個有著黑色硬殼、配有彈簧鉸鏈的盒子，輕輕一撥就可彈開或關上，而內裡有著膚色細小的絨毛，質感極佳，眼鏡在裡頭看起來十分不凡。&lt;/p&gt;
&lt;p&gt;過了三週，回美國的我終於可以戴上新眼鏡了。B 店配出來的整體品質明顯比 A 和 A&amp;rsquo; 還要好很多，美中不足的部分還是會暈眩，只不過時間拉得比較長才發作了。我想了想，我需要長時間看書寫字，還是不能將就啊，於是預約了 B 店的醫生，決定重新驗一次光。&lt;/p&gt;
&lt;p&gt;B 店門庭若市，氣氛愉悅，儘管客人很多，店內人員依舊能將每個客人照料地還不錯。驗光師幫我做了檢查，看了看我手中兩張驗光單說：「啊，所以你需要第二意見（Second Opinion）是嗎？」她又仔細一瞧，「啊不對，這前兩張雖是同一家店，卻是不同醫生啊，你需要第三意見是吧。」&lt;/p&gt;
&lt;p&gt;醫生接著氣定神閒走進來了，是個看起來自在悠閒的伯伯，驗光師阿姨轉述了我的情況，他邊聽，又邊詢問我。我邊打另一間店的小報告，他一邊情緒價值給好給滿地說：「Oh no~」他細心解釋我的情況，說另一間店大概是過度矯正了我的閃光了，那麼重的閃光度數大概是我暈眩的源頭，我需要的是一副戴起來舒服、跟原本差不多度數的眼鏡。&lt;/p&gt;
&lt;p&gt;「我們不會跟 A 店一樣。」醫生霸氣地說。&lt;/p&gt;
&lt;p&gt;結帳時，我問了問櫃檯人員多久會好，短髮的小姐姐自信驕傲地回答：
&lt;br&gt;
「一個小時內！」&lt;/p&gt;
&lt;p&gt;結果，不到一個小時，我就收到簡訊說：
&lt;br&gt;
「你的眼鏡好了！我們花了 24 分鐘就做好囉！」&lt;/p&gt;
&lt;p&gt;戴上眼鏡後，我的視野變得清晰，總算沒有暈眩，得知我荒謬際遇的櫃檯人員，看著我露出心滿意足的笑容都鬆了一口氣。我恍若隔世地走出這間店，在正午陽光下在附近的商店街走走試試這副眼鏡，不會暈眩；走進隔壁的書店試試昏暗的燈光，不會頭痛。從我上星期一走進這家店驗光，直到我拿到新眼鏡，全部才不過兩個小時。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;文章開頭的問題你答對了嗎？我是上星期一拿到眼鏡的，而第一次配鏡在二月初，總共過了三個多月。&lt;/p&gt;
&lt;p&gt;實在荒謬，以此文記之，供大家娛樂之餘，也是警世文吧：若要前途明亮，請慎選眼鏡行。&lt;/p&gt;</content:encoded></item><item><title>讀黃麗群的散文和小說</title><link>https://alicehsu.blog/zh-tw/posts/2026/05/read-sabrina-huangs-essay-and-fictions/</link><pubDate>Tue, 12 May 2026 17:00:00 -0500</pubDate><guid>https://alicehsu.blog/zh-tw/posts/2026/05/read-sabrina-huangs-essay-and-fictions/</guid><description>她的文字也讓我不禁思考：我會怎樣描述那些我所珍視的人呢？我想我所願的，就是看對方如剛曬完太陽的被子，我能毫無疙瘩撲向他，捲起來，深深吸氣吧。</description><media:thumbnail url="https://alicehsu.blog/images/Post47home.jpg"/><media:content url="https://alicehsu.blog/images/Post47home.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post47home.jpg" type="image/jpeg"/><content:encoded>&lt;img
src="https://alicehsu.blog/images/Post47home.jpg"
loading="eager"
/&gt;&lt;p&gt;前陣子，黃麗群這個名字在諸多部落格之間相繼出現。本來有點傲嬌，越是大家都在討論的就越不想跟風。直到看到《我與貍奴不出門》書封那隻蜷曲翻肚的肥貓，實在難以抵擋其魅力，索性借了電子書來讀一讀。&lt;/p&gt;
&lt;p&gt;讀著讀著，內心忍不住想起柯裕棻老師：她們的文字都冷冽而犀利，偶爾微甜，偶爾刺破生命的空無荒唐，真的有點像啊。&lt;/p&gt;
&lt;p&gt;直到我讀了黃麗群老師的短篇小說集《海邊的房間》，看到柯裕棻老師替她寫序，得知兩人是相識多年的好友，我不禁大叫：「難怪！」難怪什麼呢？難怪我在她們的文字中聞到類似的氣味，難怪我會喜歡上黃麗群老師的文字，難怪啊。&lt;/p&gt;
&lt;p&gt;如果你喜歡黃麗群老師的散文集，那我真是十分、不，是萬分推薦你去看柯裕棻老師的散文集。《洪荒三疊》、《甜美的剎那》、《恍惚的慢板》都超級棒！&lt;/p&gt;
&lt;p&gt;我可以想像若麗群老師碰巧讀到我的文章，現在大概一陣靜默，撇撇嘴說：「你到底是在推薦誰啊？」&lt;/p&gt;
&lt;p&gt;請你稍作忍耐，容我用以下心得，說說這幾天讀你作品的反思吧。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;讀麗群老師的散文，總覺得好像五指張開，伸進冰涼的河水，隨手一撈就是亮晶晶的白沙和海星，好多句子美得不可思議：&lt;strong&gt;「雲被陽光碾薄，半透明地懶在山邊或天角上。」&lt;/strong&gt;（《&lt;a href="%28https://www.books.com.tw/products/0010584034?sloc=main%29"&gt;背後歌&lt;/a&gt; · 春天別來》）此外，她的譬喻並非堆砌辭藻炫耀才學，而是以具象的畫面詮釋抽象的概念，以此顯現她對人事物的看法。比如：&lt;strong&gt;「我真正所願不是你恆常視我如珠寶，我真正所願是能一直看待你像剛剛出爐一塊麵包，蒸氣騰騰不滅，冒出火與糖與麥子與奶油味道」&lt;/strong&gt;（《背後歌 · 愚人金》），對她而言，愛情不是讓自己名貴到高不可攀，而是能一直被對方平實而美好的一面所吸引。她的文字也讓我不禁思考：我會怎樣描述那些我所珍視的人呢？我想我所願的，就是看對方如剛曬完太陽的被子，我能毫無疙瘩撲向他，捲起來，深深吸氣吧。
&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.books.com.tw/products/0010819316?sloc=main"target="_blank"
&gt;《我與貍奴不出門》&lt;/a&gt;這本散文集，我最喜歡〈喜歡說明書〉，每個句子精準描繪何謂喜歡。讀完以後，有個句子一直在腦中遲遲不走：&lt;strong&gt;「喜歡是我們最後的誠實，最後的本能，與最後的正直」&lt;/strong&gt;，為什麼是最後呢？我想，大概是因為，一個人若不清楚自己喜歡什麼，他也快失去自己了吧。身而為人，不讓自己活得模模糊糊，總能說清楚自己喜歡什麼、不喜歡什麼（不是對別人任性的那種），才活得比較舒坦，比較篤定。為了這樣的舒坦和篤定，我們必須探索，盡力挖掘，開鑿一個得以安然存放自己喜歡和不喜歡的寶藏洞窟。&lt;/p&gt;
&lt;p&gt;等到你所喜歡的人出現時，就能帶他四處參觀啦。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;a href="https://www.books.com.tw/products/0010993922?sloc=main"target="_blank"
&gt;《海邊的房間》&lt;/a&gt;這本短篇小說集，每個故事各有不同的外衣，有些驚悚，有些蒼涼，不過內裡其實都是一樣的：其實是人類的渴望經過壓抑、變形而噴發的結果。有些小說表面上像是出現在社會新聞頭版的故事，不過卻教讀者無法置身事外，因為麗群老師把讀者放在離角色極其近的位置，讓人置身事內或感受或觀察一個被悲哀籠罩的人，他是一個怎樣的人？當人在如此近的距離，就難以輕易評斷角色，說他犯錯純粹是黑心肝，彷彿我們生來的心肝就是白的、跟他有基因上絕對的區別一樣。這些悲劇角色，或者推展到社會上許多的人，是生病且病得不輕沒錯，那難道我們自己及至所歸屬的群體，就沒有那塊怎樣醫都醫不好的灰斑嗎？&lt;/p&gt;
&lt;p&gt;我想，試著去回答這些問題，也許就是讀小說的目的了？對小說家而言，我會有這樣的想法，是否也達成她寫小說的目的了？麗群老師曾在一篇散文提到寫小說對她而言的意義，就是 &lt;strong&gt;「這麼好一間『看病』的密室，就是文字上的『看』，不打算解決，它不是醫心方只是顯微鏡」&lt;/strong&gt;（《&lt;a href="https://www.books.com.tw/products/0010642773?sloc=main"target="_blank"
&gt;感覺有點奢侈的事&lt;/a&gt; · 那蛇那頭那病》）。我想也是，若小說家志在解決社會問題，就會去從政；若志在解決人心問題，就會去從諮商；志在讓問題於一個安全的虛構世界裡被暴露出來，讓人不需頭破血流就得以看見問題的複雜度並且產生共情，可能才是寫小說的起點吧。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;最後，再次推坑，快去看黃麗群的散文、的小說、的&lt;a href="https://sabrinahuanglichun.wordpress.com/about/"target="_blank"
&gt;部落格&lt;/a&gt;；想看別人被罵，或是自己想被罵的話，可以去看她的&lt;a href="https://www.youtube.com/@Soluluforurdelulu/videos"target="_blank"
&gt;還是你想被罵&lt;/a&gt;。&lt;/p&gt;</content:encoded></item><item><title>寫了半年的部落格之後</title><link>https://alicehsu.blog/zh-tw/posts/2026/05/after-half-year-blogging/</link><pubDate>Tue, 05 May 2026 19:00:00 -0500</pubDate><guid>https://alicehsu.blog/zh-tw/posts/2026/05/after-half-year-blogging/</guid><description>殊不知幫自己挖了個大洞，但在洞裡好開心啊。</description><media:thumbnail url="https://alicehsu.blog/images/Post/46/1.png"/><media:content url="https://alicehsu.blog/images/Post/46/1.png" medium="image"/><enclosure url="https://alicehsu.blog/images/Post/46/1.png" type="image/jpeg"/><content:encoded>&lt;img
src="https://alicehsu.blog/images/Post/46/1.png"
loading="eager"
/&gt;&lt;p&gt;部落格上線，已經超過半年了，隨著生命歷程的轉變，我做了一些調整，決定讓部落格更符合現階段的狀態和期待。&lt;/p&gt;
&lt;p&gt;最明顯的改變即是換了網站的 Favicon。自從去年年末雙手罹患肌腱炎，就沒辦法彈太久的琴，嚴重的時候，彈個五分鐘就會出現手僵手麻的情況，一度真沮喪到看到琴就難過。雖然我不靠音樂賺錢吃飯（咦這樣還能自稱音樂家嗎？），不過彈琴做音樂一直是我核心的身份認同，而我發現這樣的身份認同與身體限制如板塊相互對峙，開始壓力山大。&lt;/p&gt;
&lt;p&gt;我決定先把這個標籤從首頁拿下來，也從我心底拿下來，休息一會，先專心在其他有趣的事情上。&lt;/p&gt;
&lt;p&gt;想了想，決定來換網站的 Favicon 好了，打開 IPad 的 Sketchbook App，花五秒鐘畫了一支鉛筆草稿，&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; 本想著要再加些細節。往後一坐，忽然發現這草稿草得好可愛呀，那些不經意不完美的線條，別說 AI 無法複製，我也畫不出第二支一模一樣的。或許也可以說，粗略的線條，代表本站作者姑妄言之，既然如此，那請讀者們也請姑且讀之。&lt;/p&gt;
&lt;p&gt;接著重寫&lt;a href="https://alicehsu.blog/zh-tw/about/"&gt;「關於」&lt;/a&gt;。「關於」的頁面真是整個部落格裡最難寫的一頁了，難寫的地方，除隱私的考量之外，也涵括各種過度思考：如果寫職業，讀者是否就會以職業的既有印象來看我呢？如果寫性格，有可能我認為的性格和讀者感受到的其實不同，那還要寫嗎？其實也有許多格友沒有放「關於」的頁面，而有些讀者 / 格友如 &lt;a href="https://tianyanfeng.blog/how-i-read-a-blog/"target="_blank"
&gt;Tian-Yan&lt;/a&gt;，偏好直接讀文章，從中拼湊出對作者的想像。不過，即使不見得每個讀者會看關於，我還是好希望作者有放喔，實在很好奇每個作者會如何表述自己。為滿足腦袋中小讀者的需求，猶豫許久，忽然想到，欸？如果直接表述自己太有壓力，那就描述對寫作和對平台的想法好了，它們是每篇文章的後設思考，也是這個網站存在的目的，感覺很對，於是大修。&lt;/p&gt;
&lt;p&gt;修修改改的過程中，我也回顧了之前所寫過的文章，覺得挺神奇的。我的文字的確在變化，而自己的聲音好像也慢慢越長越出來。除此之外，也長出其他的小芽小花：
&lt;br&gt;
學習不一樣的表述方式；&lt;br&gt;
學習在無聊的小事中找到更深遠的意義；&lt;br&gt;
練習在公共領域裡頭，表述對事物的看法；&lt;br&gt;在沒有外部回饋下，維持內在動力繼續前進（非常同意 &lt;a href="https://immarcus.com/blog/do-not-measure"target="_blank"
&gt;Marcus&lt;/a&gt; 所說的，不要隨便測量）。&lt;/p&gt;
&lt;p&gt;除這些，也有一些意外之喜，那就是 &lt;a href="https://visbible.org/"target="_blank"
&gt;VisBible.org&lt;/a&gt; 這個網站。&lt;/p&gt;
&lt;p&gt;會有這個網站，還得歸功於先有這個部落格。我原本想將自己讀經時順手做的筆記（下圖）放在部落格上供大家參考的（如果沒有部落格，恐怕連分享的想法也沒有），不過，做圖的人其實很多，但做網站的人相對偏少，那何不做一個網站呢？&lt;/p&gt;
&lt;p&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/46/2.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/46/2.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
（列王紀的君王時序）&lt;/p&gt;
&lt;p&gt;殊不知幫自己挖了個大洞，但在洞裡好開心啊。&lt;/p&gt;
&lt;p&gt;以上大概就是寫了半年（嚴格來說是七個月）部落格的心得吧。有一些調整，也有一些意料內和意料外的收穫。希望可以繼續寫，把尚在土裏的自己一點點挖掘出來。&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;感謝 Sam 又花了 5 秒鐘的好幾倍，幫我把 PNG 圖描成 SVG 向量圖。&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content:encoded></item><item><title>關於</title><link>https://alicehsu.blog/zh-tw/about/</link><pubDate>Fri, 01 May 2026 23:00:00 -0500</pubDate><guid>https://alicehsu.blog/zh-tw/about/</guid><description>&lt;figure class=" w-49"&gt;&lt;img src="https://alicehsu.blog/images/avatar.jpg"
 alt="profile photo"&gt;
&lt;/figure&gt;

&lt;p&gt;寫作，於我而言，是安頓、釐清、對話、實驗、分享。&lt;/p&gt;
&lt;p&gt;在多個平台寫作後，我發現平台的性質無庸置疑影響著一個人的表達方式及其內容。為了讓寫作保有最大程度的自由，2025 年 10 月，這個部落格上線了，寫著寫著，我發現這還是最自在的地方，也能遇見比較真實的自己。為什麼呢？可以右轉出去走到底到&lt;a href="https://alicehsu.blog/zh-tw/posts/2025/12/pros-and-cons-of-self-hosted-blogs/"&gt;〈自架部落格的優缺點〉&lt;/a&gt;這篇文章瞧瞧。&lt;/p&gt;</description><content:encoded>&lt;figure class=" w-49"&gt;&lt;img src="https://alicehsu.blog/images/avatar.jpg"
alt="profile photo"&gt;
&lt;/figure&gt;
&lt;p&gt;寫作，於我而言，是安頓、釐清、對話、實驗、分享。&lt;/p&gt;
&lt;p&gt;在多個平台寫作後，我發現平台的性質無庸置疑影響著一個人的表達方式及其內容。為了讓寫作保有最大程度的自由，2025 年 10 月，這個部落格上線了，寫著寫著，我發現這還是最自在的地方，也能遇見比較真實的自己。為什麼呢？可以右轉出去走到底到&lt;a href="https://alicehsu.blog/zh-tw/posts/2025/12/pros-and-cons-of-self-hosted-blogs/"&gt;〈自架部落格的優缺點〉&lt;/a&gt;這篇文章瞧瞧。&lt;/p&gt;
&lt;p&gt;除了寫作之外，我做了一個網站叫 &lt;a href="https://visbible.org/"target="_blank"
&gt;VisBible&lt;/a&gt;，這是聖經視覺化的網站，目的是讓讀者不畏聖經中繁雜的資訊，得以明白神是怎樣的一位神，以及祂對人的心意為何。我也有一些&lt;a href="https://alicehsu.blog/zh-tw/portfolio/"&gt;音樂作品&lt;/a&gt;，有興趣可以去逛逛。&lt;/p&gt;
&lt;p&gt;最後，感謝我的先生 &lt;a href="https://mhyeh.github.io/"target="_blank"
&gt;Samuel&lt;/a&gt; （文章裡的 Sam）幫我架設網站，並且將網站改得如此好看 ❤️&lt;/p&gt;
&lt;p&gt;若有任何想法，歡迎來信：mail@alicehsu.blog&lt;/p&gt;</content:encoded></item><item><title>不要再說生產力了</title><link>https://alicehsu.blog/zh-tw/posts/2026/04/dont-use-the-word-productivity-anymore/</link><pubDate>Tue, 28 Apr 2026 01:00:00 -0500</pubDate><guid>https://alicehsu.blog/zh-tw/posts/2026/04/dont-use-the-word-productivity-anymore/</guid><description>你真覺得自己的價值和機器一樣？難道你花了許多力氣照顧生病的自己就不算一種生產力？</description><content:encoded>&lt;div
class="alert alert-caution my-6 overflow-hidden rounded-lg transition-all duration-200 ease-out hover:-translate-y-0.5 hover:shadow-md"
style="background-color: color-mix(in srgb, var(--color-caution) 10%, transparent);
border-left-color: var(--color-caution);
--hover-bg: color-mix(in srgb, var(--color-caution) 15%, transparent);"
onmouseover="this.style.backgroundColor = this.style.getPropertyValue('--hover-bg')"
onmouseout="this.style.backgroundColor = 'color-mix(in srgb, var(--color-caution) 10%, transparent)'"
role="alert"
aria-labelledby="alert-0-title"&gt;
&lt;div
id="alert-0-content"
class="alert-content px-6 pb-6 py-6 items-center justify-between "&gt;
&lt;div class="prose prose-sm text-foreground/90 max-w-none"&gt;
&lt;p&gt;這是我的「&lt;a href="https://blogblog.club/party/?ref=wen-lab.tw"target="_blank"
&gt;BlogBlog 同樂會 - 2026 年 4 月&lt;/a&gt;」的投稿文章。本月主題是「&lt;a href="https://www.wen-lab.tw/blogblog-party-productivity/"target="_blank"
&gt;生產力&lt;/a&gt;」！&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;hr&gt;
&lt;p&gt;　　　　　　　　　　　　　　「真正重要的事情是眼睛看不見的，唯有用心看才看得見。」&lt;br&gt;&amp;mdash;&amp;mdash;聖修伯里《小王子》&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;大學時期，我將生產力奉為圭臬。&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; 當時我買了克里斯．貝利（Chris Bailey）的《最有生產力的一年》，讀了好多遍，將書裡頭的概念付諸行動，最大化每一天可以做的事情。&lt;/p&gt;
&lt;p&gt;過了幾年，我發現我對生產力的看法完全變了。原本奉之為圭臬，現在卻棄之若敝屣。&lt;/p&gt;
&lt;p&gt;這是為什麼呢？核心在於我發現了「生產力」（Productivity）這個詞背後所隱含的概念。&lt;/p&gt;
&lt;p&gt;根據《牛津英文詞典》（Oxford English Dictionary），「Productivity」這個詞有以下三個意思：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;這詞最早見於 1818 年，定義為「具有生產能力的狀態或特質。」&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;到 1876 年，這個詞開始用於指涉與經濟相關的意涵，其意思為：「指投入資源（包括勞動力、材料、設備等）後所產出的產品或商品之效率，尤其常用於工業領域。」&lt;sup id="fnref:3"&gt;&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref"&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;到了 1881 年，與生態學相關的新意思出来了：「指個體、族群或群落產生新生物量的速率；亦指特定棲地或區域的繁殖能力與承載潛力。」&lt;sup id="fnref:4"&gt;&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref"&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;由此可見，「生產力」其實是很新的詞。是人類千年文明以來，近兩百年才出現的詞。也就是說，這並非亙古以來人類的共同心靈意識（至少放牧的人不會用「生產力」這個字吧）。而現代人常說的「哇這個人好有生產力」或是「我今天一整天生產力很高」，大概是從上述第二個經濟層面的意思衍生而來的。只不過，投入的資源是一個人的時間、精力、才能，而產出的則是身體和心智的勞動成果。&lt;/p&gt;
&lt;p&gt;問題就出在這裡呀！為什麼人會用「生產力高」或「生產力低」&amp;mdash;&amp;mdash;這個因著工業革命而產生的詞語來評判自己的勞動成果呢？明明人就不是機器，卻用著看機器的眼光看自己，並且，使用這個詞彙，潛意識裡容易將自己物化之外，也容易將所有事情量化並且加上價值評判：量化自己的努力，量化勞動成果的價值，並且嘗試在這當中找到一個方程式，期望將投注的資源和結果都緊握在自己手裡，就能獲得人生的最佳解。&lt;/p&gt;
&lt;p&gt;人生才沒那麼簡單。&lt;/p&gt;
&lt;p&gt;今天可能有個意外、或是突如其來的一場病就會打破你原定的「生產計畫」。並且，以生產力來看待自己的工作產出不覺得狹隘嗎？難道你今天因著生病，沒辦法有太多工作成果，就要說自己「生產力低」嗎？你真覺得自己的價值和機器一樣？難道你花了許多力氣照顧生病的自己就不算一種生產力？&lt;/p&gt;
&lt;p&gt;除此之外，我總覺得用「生產力」去評判一個人所做的事，其實是很廉價的：&lt;/p&gt;
&lt;p&gt;「哇，這個學者的生產力好高喔！」：我們不問學者的研究帶來多重要的影響，只看他出版的論文篇數；
&lt;br&gt;
「哇，這個作家的生產力好高喔！」：我們不看作家的書籍安慰多少人的心靈，只看他一年寫了幾本書；
&lt;br&gt;
「哇，我今天生產力好高喔！」：我們不思考做事情最重要的目的是什麼？只看量有沒有達成原先所設的目標。&lt;/p&gt;
&lt;p&gt;或許你會掙扎著重新定義生產力、重新界定生產力的定義範圍不只包括量還包括質，不過重新定義代表著必須除魅，一不小心，最初的意思會鬼影幢幢出沒攪擾你的思緒、你的信心、你對人生應該要怎樣的既定想像。&lt;/p&gt;
&lt;p&gt;既然如此，該當如何？我認為：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;不要再使用「生產力」這個詞來描述人了&lt;/strong&gt;：「生產力」即便重新定義，還是常需要與舊的意思對抗，何不選一個意思不模稜兩可、大家都有共識的詞？如果真要找一個詞來描述「所付出之能力與所獲得之功效的比率」，&lt;sup id="fnref:5"&gt;&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref"&gt;5&lt;/a&gt;&lt;/sup&gt; 不是還有一個更好的詞嗎？就是「&lt;strong&gt;效率&lt;/strong&gt;」。效率這個詞客觀描繪人做事情投入的資源與其成果的比率，沒有額外的意思，不像「生產力」，難免會將比率與價值評判畫上等號。而且有趣的是，當我們大大方方用「效率」這個詞來指涉「量」，就不會想再貪心地拿這個詞去概括「質」的意思了。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;重新思考你所做的事情，是否為達成目的的最佳手段&lt;/strong&gt;：一天結束之際，別急著用做了多少事情來評價自己，先回頭思考做事情的目的是什麼，而你所安排的這些事情，是否真為達成目的的最佳手段？畢竟，若這些行動並非最好的方法，或者根本達不到目的地，那就算你做再多生產力再高，也只能生產出成堆成山的徒勞。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;開頭時曾提到，我大學時代曾視生產力為人生之重要準則，回頭看來，其實是生產力提供當時的我一個幻象：只要我生產力越高，所有的事情就都能抓在手裡，我就擁有越多的機會和可能性，而這樣的機會和可能性就等同自我價值。不過當泡泡越吹越大，突地破滅之後，我被炸出一身焦慮和恐慌。就連上述提及的生產力研究專家貝利也提到，他在演講時突然焦慮恐慌發作的情形，迫使他必須思考生產力的意義，也迫使他重新為生產力定下界限。&lt;sup id="fnref:6"&gt;&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref"&gt;6&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;我認為貝利書中所提的方法有待商榷，因此情願設立一個更遠的界線，也就是不再用生產力這個詞語。如果你真的要使用「生產力」這個詞，那主詞至少放個機器吧！比如：某某機器的生產力很高，不要再拿它來描述、量化人了。&lt;/p&gt;
&lt;p&gt;畢竟，那些最難以量化的人事物，正因為無法以同一公式複製重現，往往具備最寶貴的價值。&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;赫然發現&lt;a href="https://alicehsu.blog/zh-tw/posts/2025/09/%e5%88%aa%e6%8e%89-fb-%e8%88%87-ig-%e7%9a%84%e6%88%91%e7%99%bc%e7%94%9f%e4%ba%86%e4%bb%80%e9%ba%bc%e8%ae%8a%e5%8c%96/"&gt;當初的自己&lt;/a&gt;潛意識裡連娛樂也要有生產力，實在是&amp;hellip;&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;原文為「The state or quality of being productive.」 “Productivity, N.” Oxford English Dictionary, Oxford UP, September 2025, &lt;a href="https://doi.org/10.1093/OED/4998692053"target="_blank"
&gt;https://doi.org/10.1093/OED/4998692053&lt;/a&gt;.&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:3"&gt;
&lt;p&gt;原文為「&lt;em&gt;Economics.&lt;/em&gt; The effectiveness of productive effort, especially in industry, as measured in terms of the rate of output (of goods, products, etc.) per unit of input (of labour, materials,equipment, etc.)」，同上。&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:4"&gt;
&lt;p&gt;原文為「&lt;em&gt;Ecology.&lt;/em&gt; The rate of production of new biomass by an individual, population, or community; the fertility or capacity of a given habitat or area」，同上。&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:5"&gt;
&lt;p&gt;此為教育部辭典對於「效率」一詞的定義 &lt;a href="https://dict.revised.moe.edu.tw/dictView.jsp?ID=107225&amp;amp;q=1&amp;amp;word=%E6%95%88%E7%8E%87"target="_blank"
&gt;https://dict.revised.moe.edu.tw/dictView.jsp?ID=107225&amp;q=1&amp;word=%E6%95%88%E7%8E%87&lt;/a&gt;&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:6"&gt;
&lt;p&gt;出自於《愈平靜愈有生產力》一書。（克里斯．貝利。《愈平靜愈有生產力》。吳凱琳譯，天下文化，2023年。）&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content:encoded></item><item><title>尋訪海芋 - 陽明山竹子湖</title><link>https://alicehsu.blog/zh-tw/posts/2026/04/a-visit-to-calla-lily-fields/</link><pubDate>Thu, 23 Apr 2026 15:00:00 -0500</pubDate><guid>https://alicehsu.blog/zh-tw/posts/2026/04/a-visit-to-calla-lily-fields/</guid><description>不知為何，「招蜂引蝶」這個成語總是貶義？</description><media:thumbnail url="https://alicehsu.blog/images/Post/44/6.jpg"/><media:content url="https://alicehsu.blog/images/Post/44/6.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post/44/6.jpg" type="image/jpeg"/><content:encoded>&lt;p&gt;回美前一天，和家人到陽明山觀賞海芋。&lt;/p&gt;
&lt;p&gt;從前只去過擎天崗大草原，陽明山花海盛名在外，雖然嚮往許久，卻一直沒找到時間與機會前往，這次能和家人一起同遊，真的挺開心的。&lt;/p&gt;
&lt;p&gt;我們去程搭捷運到劍潭站，再轉搭公車小 8 一路坐到竹子湖；回程由於小 8 坐滿了，改搭小 9 到捷運北投站，交通上來說是挺方便的。&lt;/p&gt;
&lt;p&gt;到公車站下來之後，涼爽的山風迎面而來，山上和山下的氣溫差上許多，是適宜避暑的好地方。我們走幾步路就到海芋園了，這些海芋園其實是私有的，需買票進場，一百元門票也不算貴，還能換五朵海芋或三朵鳶尾花，非常划算。&lt;/p&gt;
&lt;p&gt;不過說是海芋園，其實比較像海芋田，海芋們在水裡綻放著，非常美麗。我們星期一去，人不是很多，可以自在拍照，依山傍花海，說是世外桃源也不為過。這裡的蜜蜂都肥肥胖胖（褒義），一隻隻貪吃鬼鑽進海芋或鳶尾的花蕊裡，先把頭塞進去，屁股再隨後跟上，這奮不顧身的模樣，真是非常可愛呀。&lt;/p&gt;
&lt;p&gt;雖是海芋吸引我們來的，不過卻是蜜蜂讓花的美更上一層樓：海芋讓我看見花瓣形狀及其綻放的角度可以如此奇特；而蜜蜂讓我看見了花的甜味。不知為何，「招蜂引蝶」這個成語總是貶義？在我讀來，招蜂引蝶的花總是多了份煙火氣，沒那麼高冷，具備親和力。並且，既然都要凋謝，何不花團錦簇熱熱鬧鬧的？何必孤芳自賞寂寂寞寞的？&lt;/p&gt;
&lt;p&gt;「一起」的力量比我們想像的還要大。和家人聊到，其實陽明山並不遠，不過自己一個人就提不起興致去山上賞花，為什麼兩個人就多了動力來賞花呢？好像有些事就是如此，一個人做著無趣，兩個人就熱鬧，三個人，就可以成為生氣盎然的花園。&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;花季末尾，一起去賞花吧！&lt;/p&gt;
&lt;p&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/44/1.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/44/1.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/44/2.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/44/2.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/44/3.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/44/3.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/44/4.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/44/4.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/44/5.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/44/5.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/44/6.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/44/6.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/44/7.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/44/7.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/44/8.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/44/8.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/44/9.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/44/9.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/44/10.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/44/10.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/44/11.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/44/11.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/44/12.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/44/12.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/44/13.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/44/13.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/44/14.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/44/14.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/44/15.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/44/15.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/44/16.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/44/16.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/44/17.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/44/17.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/44/18.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/44/18.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/44/19.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/44/19.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;就像&lt;a href="https://blogblog.club/party"target="_blank"
&gt;部落格同樂會&lt;/a&gt;一樣，每個部落格都是一方小小的花園，聚集在一起就變成一片花海，非常美麗呢！&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content:encoded></item><item><title>異鄉人</title><link>https://alicehsu.blog/zh-tw/posts/2026/04/the-stranger/</link><pubDate>Sat, 18 Apr 2026 01:00:00 -0500</pubDate><guid>https://alicehsu.blog/zh-tw/posts/2026/04/the-stranger/</guid><description>為什麼兩個人在某個特定時間的相遇，就註定了他們這一生會不會成為友人和家人呢？</description><content:encoded>&lt;p&gt;前幾個星期回台灣，朋友問我：&lt;/p&gt;
&lt;p&gt;「這麼多年沒有回來，你覺得自己有什麼變化？」&lt;/p&gt;
&lt;p&gt;我想了一下，說：「大概就是一種，無論在何地，都是異鄉人的感覺吧。」&lt;/p&gt;
&lt;p&gt;話題又飄到了遠方，我的思緒卻停留在原地。三個星期前降落在桃園機場，從機艙走到空橋，撲面而來的，是熟悉的濕悶感貼在肌膚上，記憶也一片一片貼回來，但神秘的是，好像也貼不緊，大概是這幾年在美國的時間所產生對台灣的距離感，讓身體長出了某個程度的防粘層吧。&lt;/p&gt;
&lt;p&gt;然而，我並不感傷，也不覺得這個距離感有什麼不好，反倒終於理解了過去的自己。&lt;/p&gt;
&lt;p&gt;怎麼說呢？&lt;/p&gt;
&lt;p&gt;在安靜的地方生活了幾年，才發現在台灣的生活經驗，一直處於感官爆裂的狀態：
&lt;br&gt;
捷運東門與中正紀念堂站中間的磨軌聲；
&lt;br&gt;
午後雷陣雨之前的窒悶感；
&lt;br&gt;
不走斑馬線橫衝直撞的行人；
&lt;br&gt;
宮廟遶境的鞭炮和尖刺的嗩吶；
&lt;br&gt;
夜市裡各種高飽和高對比的招牌，&lt;/p&gt;
&lt;p&gt;以及各種族繁不及備載的經驗，都讓我疲勞不堪。我一直很疑惑為什麼身邊大部分的人看起來好像過得還不錯？可以跟著喧嘩，也可以跟著八卦。明明生長在這塊土地上，卻沒有跟著長出可以適應這塊土地的眼睛鼻子耳朵（不過嘴巴倒是很適應，台灣美食難波萬）。&lt;/p&gt;
&lt;p&gt;離開這片地土，到北美大陸，街景色彩明朗和諧，房屋錯落有致，不過卻也有許多我得要花力氣適應的地方：打客服要各種數字轉接並且等半小時以上；開車兩三個小時可以到的地方叫作近；外食會被服務生打擾然後還要付小費（今天餐點還可以嗎？沒問題很好吃；今天餐點還可以嗎？沒問題很好吃；今天餐點還可以嗎？沒問題很好吃）。&lt;/p&gt;
&lt;p&gt;要說我會因此非常想念台灣嗎？並非全部；回台灣後會非常想念美國嗎？並非全部。我忽然切身明白之前同學曾說過的話：「我在美國生活的時間已經超過我在家鄉的時間了：我總是在美國思念著斯里蘭卡，在斯里蘭卡想念著美國。」&lt;/p&gt;
&lt;p&gt;既然如此，容我大膽地假設：會不會，思念的總合就是家鄉？家鄉不再僅限出生地、某個時間以前所居處的地理位置，而是跨越時空、心之所繫所愛的物件對象環境？或者不說所繫所愛好了，光是能舒服待著、不覺得格格不入（而是格格入入）就很神奇了。在這廣袤的世界裡，在這個總是能夠讓我們感到不自在的環境裡，可以找到一兩個舒舒服服待著的格子，可說是萬分幸運的事情了。&lt;/p&gt;
&lt;p&gt;行文至此，忽然想念起那些在各地的家人友人，為什麼我們能夠成為彼此的家人友人呢？要說單單是血緣，根據我的定義，&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; 有些人其實並不在家人的範圍裡。那要說是興趣，到底要有多少個興趣才能夠真的成為友人呢？凡是有共同興趣就能成為友人嗎？要說是價值觀，那為何我們遇到某些比自己更好的人時，會願意為了他而改變自己的價值觀呢？&lt;/p&gt;
&lt;p&gt;況且有些時候，若我們遇見的是過去的他，搞不好也不會成為友人。可是為什麼遇見特定時候的他就能夠成為友人呢？為什麼兩個人在某個特定時間的相遇，就註定了他們這一生會不會成為友人和家人呢？&lt;/p&gt;
&lt;p&gt;這些問題的答案實在太過神秘，我只能先歸於上帝的恩典。因為，這不是我們做什麼努力、用力算取時間去努力碰到一個人就可以達成的。可以遇見契合之人的恩典，讓我們無論身處何地，都能瞥見家鄉的樣式：不會寂寞無聊，也不用隨時處在備戰狀態，相處的時間度日如秒，生活從舊的默契長出新的默契。&lt;/p&gt;
&lt;p&gt;就是在這些堆疊起來的秒數和默契之中，那些爆裂的感官經驗和不方便的文化習慣忽然變得容易忍受了。我很感謝，生命中的有些人，成為了我疲憊時可休憩的格子；也很榮幸，自己能讓一些人覺得舒服自在。&lt;/p&gt;
&lt;p&gt;願我們成為彼此的家鄉。&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;這裡的「家人」指涉的是血緣與信仰裡的集合裡，讓我真心覺得自在之人的子集。「友人」指的不只同輩，更泛指跨年齡層衷心交往的對象。當然，其定義並非客觀放諸四海皆準的事實，而是筆者主觀的感受。&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content:encoded></item><item><title>再見了，舊樂譜</title><link>https://alicehsu.blog/zh-tw/posts/2026/03/good-bye-my-old-scores/</link><pubDate>Sun, 29 Mar 2026 16:34:01 +0800</pubDate><guid>https://alicehsu.blog/zh-tw/posts/2026/03/good-bye-my-old-scores/</guid><description>記念一下即將被我丟掉的樂譜們</description><media:thumbnail url="https://alicehsu.blog/images/Post42home.jpg"/><media:content url="https://alicehsu.blog/images/Post42home.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post42home.jpg" type="image/jpeg"/><content:encoded>&lt;p&gt;記念一下即將被我丟掉的樂譜們：
&lt;style&gt;
#masonry-0da619838a120fce82823aada6825d6b-1 {
width: 100%;
}
#masonry-0da619838a120fce82823aada6825d6b-1 .masonry-container {
width: 100%;
position: relative;
}
#masonry-0da619838a120fce82823aada6825d6b-1 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 20px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-0da619838a120fce82823aada6825d6b-1 .masonry-item img {
width: 95%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-0da619838a120fce82823aada6825d6b-1 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-0da619838a120fce82823aada6825d6b-1 .glightbox:hover,
#masonry-0da619838a120fce82823aada6825d6b-1 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-0da619838a120fce82823aada6825d6b-1 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-0da619838a120fce82823aada6825d6b-1 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-0da619838a120fce82823aada6825d6b-1"
data-columns="1"
data-gutter="20"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post42home.jpg"
class="glightbox"
data-gallery="masonry-0da619838a120fce82823aada6825d6b-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post42home.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post42home.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-0da619838a120fce82823aada6825d6b-1';
const config = {
columns: 1 ,
gutter: 20 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;&lt;/p&gt;
&lt;p&gt;這些只是一大落書的冰山一角，除此之外，我還丟掉了許多裝了紙本樂譜的資料夾，小時候練琴的記憶都回來了。&lt;/p&gt;
&lt;p&gt;然後，深深記得從哈農畢業，開始彈布爾格彌勒的興奮記憶。&lt;/p&gt;</content:encoded></item><item><title>如何省時間？</title><link>https://alicehsu.blog/zh-tw/posts/2026/03/how-to-save-time/</link><pubDate>Thu, 12 Mar 2026 20:30:00 -0500</pubDate><guid>https://alicehsu.blog/zh-tw/posts/2026/03/how-to-save-time/</guid><description>在家裡附近的圖書館看到一本薄薄的小書，放在 non-fiction 區，叫作 「How to Save Time」</description><media:thumbnail url="https://alicehsu.blog/images/Post/41/2.JPG"/><media:content url="https://alicehsu.blog/images/Post/41/2.JPG" medium="image"/><enclosure url="https://alicehsu.blog/images/Post/41/2.JPG" type="image/jpeg"/><content:encoded>&lt;p&gt;在家裡附近的圖書館看到一本薄薄的小書，放在 non-fiction 區，叫作 「How to Save Time」。&lt;/p&gt;
&lt;p&gt;原本預期這本書是純文字的論述書籍，再加上幾個實用的小技巧吧，結果翻開內文第一頁，我就愣住了。&lt;/p&gt;
&lt;p&gt;第一頁：
&lt;style&gt;
#masonry-75b45e79a17b8e676c9b64d0c86234e5-1 {
width: 100%;
}
#masonry-75b45e79a17b8e676c9b64d0c86234e5-1 .masonry-container {
width: 100%;
position: relative;
}
#masonry-75b45e79a17b8e676c9b64d0c86234e5-1 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 20px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-75b45e79a17b8e676c9b64d0c86234e5-1 .masonry-item img {
width: 95%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-75b45e79a17b8e676c9b64d0c86234e5-1 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-75b45e79a17b8e676c9b64d0c86234e5-1 .glightbox:hover,
#masonry-75b45e79a17b8e676c9b64d0c86234e5-1 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-75b45e79a17b8e676c9b64d0c86234e5-1 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-75b45e79a17b8e676c9b64d0c86234e5-1 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-75b45e79a17b8e676c9b64d0c86234e5-1"
data-columns="1"
data-gutter="20"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/41/1.JPG"
class="glightbox"
data-gallery="masonry-75b45e79a17b8e676c9b64d0c86234e5-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/41/1.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/41/1.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-75b45e79a17b8e676c9b64d0c86234e5-1';
const config = {
columns: 1 ,
gutter: 20 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;&lt;/p&gt;
&lt;p&gt;&amp;hellip;&amp;hellip;好的喔？&lt;/p&gt;
&lt;p&gt;快速翻了一下，整本書都像第一頁一樣，一張圖片加上一行簡單的敘述句。&lt;/p&gt;
&lt;p&gt;「May 總是丟東西。」
&lt;br&gt;
「她在客廳放了一個碗，碗放了眼鏡、碗放了鑰匙、碗放了手機。」
&lt;br&gt;
「現在 May 知道她東西放哪了。」&lt;/p&gt;
&lt;p&gt;&amp;hellip;&amp;hellip;所以之前 May 都把時間浪費在找東西就對了？&lt;/p&gt;
&lt;p&gt;還有一段：&lt;/p&gt;
&lt;p&gt;「May 有很多事情要做。」
&lt;br&gt;
「她要上課。」
&lt;br&gt;
「她在保齡球隊裡打球。」
&lt;br&gt;
「她在學前遊戲班幫忙。」
&lt;br&gt;
「May 沒辦法做所有的事。」
&lt;br&gt;
「所以她減少事情。」
&lt;br&gt;
「她就省時間啦。」&lt;/p&gt;
&lt;p&gt;&amp;hellip;&amp;hellip;人生可以這麼簡單就好啦 XD&lt;/p&gt;
&lt;p&gt;讓我在圖書館憋不住的是這個：&lt;/p&gt;
&lt;style&gt;
#masonry-75b45e79a17b8e676c9b64d0c86234e5-2 {
width: 100%;
}
#masonry-75b45e79a17b8e676c9b64d0c86234e5-2 .masonry-container {
width: 100%;
position: relative;
}
#masonry-75b45e79a17b8e676c9b64d0c86234e5-2 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 20px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-75b45e79a17b8e676c9b64d0c86234e5-2 .masonry-item img {
width: 95%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-75b45e79a17b8e676c9b64d0c86234e5-2 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-75b45e79a17b8e676c9b64d0c86234e5-2 .glightbox:hover,
#masonry-75b45e79a17b8e676c9b64d0c86234e5-2 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-75b45e79a17b8e676c9b64d0c86234e5-2 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-75b45e79a17b8e676c9b64d0c86234e5-2 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-75b45e79a17b8e676c9b64d0c86234e5-2"
data-columns="1"
data-gutter="20"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/41/2.JPG"
class="glightbox"
data-gallery="masonry-75b45e79a17b8e676c9b64d0c86234e5-2"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/41/2.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/41/2.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-75b45e79a17b8e676c9b64d0c86234e5-2';
const config = {
columns: 1 ,
gutter: 20 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;
&lt;p&gt;（這跟省時間有什麼關係啊？）我的內心大喊，在圖書館忍笑忍得很難過，肩膀直抖動。&lt;/p&gt;
&lt;p&gt;人生不能太過追求表面的生產力，適當的休息還是必要的，這是作者想傳達的意思對吧？&lt;/p&gt;
&lt;p&gt;如果有興趣的話，歡迎到&lt;a href="https://us.grassrootsbooks.net/products/how-to-save-time"target="_blank"
&gt;這裡&lt;/a&gt;買書，一本 9.95，網站上有試閱，噢順帶一提，其實試聽音檔就能聽完整本書了。&lt;/p&gt;</content:encoded></item><item><title>舊約歷史好難懂？用視覺化的方式讀懂它！</title><link>https://alicehsu.blog/zh-tw/posts/2026/03/introduce-visbible.org/</link><pubDate>Wed, 11 Mar 2026 20:00:00 -0500</pubDate><guid>https://alicehsu.blog/zh-tw/posts/2026/03/introduce-visbible.org/</guid><description>北國的亞哈謝和約蘭是兄弟，南國的約蘭和亞哈謝是父子。南國約蘭的兒子亞哈謝，跟北國亞哈謝的兄弟約蘭，一起去基列的拉末打亞蘭王哈薛。</description><media:thumbnail url="https://alicehsu.blog/images/Post/40/2.png"/><media:content url="https://alicehsu.blog/images/Post/40/2.png" medium="image"/><enclosure url="https://alicehsu.blog/images/Post/40/2.png" type="image/jpeg"/><content:encoded>&lt;p&gt;這陣子在部落格的發文頻率變得比較低，因為都把時間花在做網站啦！&lt;/p&gt;
&lt;p&gt;隆重跟大家介紹，我和 Sam 做了一個網站叫做 &lt;a href="https://visbible.org/"target="_blank"
&gt;VisBible.org&lt;/a&gt;。這個網站旨在將聖經裡複雜的概念，以好懂的視覺化方式呈現。目前我們做了一個專案叫做&lt;a href="https://visbible.org/KingsTimeline/"target="_blank"
&gt;「聖經君王時序」&lt;/a&gt;。&lt;/p&gt;
&lt;h2 id="讀聖經的痛點"&gt;讀聖經的痛點&lt;/h2&gt;
&lt;p&gt;如果你是基督徒或者曾經讀過聖經，就會發現一旦讀到舊約《列王紀》和《歷代志》，就是一連串複雜的歷史。有時候《列王紀》有記載的，《歷代志》沒有；有時候《歷代志》有寫的，《列王紀》卻沒提。此外，中文聖經和合本的翻譯裡，有許多不同的君王名字翻譯得一模一樣，導致讀者讀到《列王紀》或《歷代志》時，常覺得是一場大混戰。人很多、事情也多，名字又很像，讀起來非常辛苦：&lt;/p&gt;
&lt;div
class="alert alert-note my-6 overflow-hidden rounded-lg transition-all duration-200 ease-out hover:-translate-y-0.5 hover:shadow-md"
style="background-color: color-mix(in srgb, var(--color-note) 10%, transparent);
border-left-color: var(--color-note);
--hover-bg: color-mix(in srgb, var(--color-note) 15%, transparent);"
onmouseover="this.style.backgroundColor = this.style.getPropertyValue('--hover-bg')"
onmouseout="this.style.backgroundColor = 'color-mix(in srgb, var(--color-note) 10%, transparent)'"
role="alert"
aria-labelledby="alert-0-title"&gt;
&lt;div
class="
cursor-pointer
flex items-center justify-between px-6 py-6"
onclick="toggleAlert('alert-0')" role="button" tabindex="0"
aria-expanded="true" aria-controls="alert-0-content"
onkeydown="if(event.key==='Enter'||event.key===' '){toggleAlert('alert-0');event.preventDefault();}"
&gt;
&lt;div class="flex items-center gap-3"&gt;
&lt;h4
id="alert-0-title"
class="m-0 font-semibold text-foreground/90"&gt;
請跟我一起繞口令
&lt;/h4&gt;
&lt;/div&gt;
&lt;div
class="flex-shrink-0 transition-transform duration-200"
id="alert-0-chevron"&gt;
&lt;svg class="h-4 w-4"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7" /&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div
id="alert-0-content"
class="alert-content px-6 pb-6 items-center justify-between "&gt;
&lt;div class="prose prose-sm text-foreground/90 max-w-none"&gt;
&lt;p&gt;南國約蘭的兒子亞哈謝，跟北國亞哈謝的兄弟約蘭，一起去基列的拉末打亞蘭王哈薛。&lt;/p&gt;
&lt;p&gt;（救命啊&amp;hellip;Orz）&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;p&gt;更不用說讀到舊約後面的大小先知書了，由於大小先知書的書寫背景是基於前面《列王紀》和《歷代志》所記載的歷史，如果前面都搞不清楚了，讀到後面先知針對以色列南北國以及列國所傳達上帝審判的訊息時，很難有歷史脈絡，只會有一種神很兇的錯誤模糊印象，殊不知是這些王本來就很誇張，上帝已經派許多人提醒過了。&lt;/p&gt;
&lt;h2 id="網頁的亮點"&gt;網頁的亮點&lt;/h2&gt;
&lt;p&gt;以上是身為基督徒的我在讀經時常遇到的困擾，我想可能別人也會有同樣的問題吧。為了解決它，我和 Sam 建立了&lt;a href="https://visbible.org/KingsTimeline/"target="_blank"
&gt;「聖經君王時序」&lt;/a&gt;專案，以每個王為單位，統整《列王紀》及《歷代志》所書寫關於每個王的事件、上帝當時候做的事，以及外邦動向，讓訊息是統整在一起的。&lt;/p&gt;
&lt;p&gt;除了整合訊息外，這個網頁的亮點如下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;用不同的顏色區分好王、壞王、介於兩者之間的王、外邦的事件以及神的作為，讓人一眼就可以看出南、北國整體發展的動向&lt;/strong&gt;：例如：北國除了耶戶這個模糊的人物之外，是一如既往的烏漆嘛黑，一大堆惡王；而南國則是中間有幾個好王，但到後面也跟著烏漆嘛黑，越來越壞。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;標註先知在哪些王在位時服事&lt;/strong&gt;：閱讀先知書時，可以來回參照這個網站，迅速得知當時的歷史背景。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;所有事件摘要都附有原文出處&lt;/strong&gt;：點擊超連結就可連至 Bible Gateway 的網站得知出處經文原文段落。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="網頁設計上的取捨--一些qa"&gt;網頁設計上的取捨 / 一些QA&lt;/h2&gt;
&lt;div
class="alert alert-tip my-6 overflow-hidden rounded-lg transition-all duration-200 ease-out hover:-translate-y-0.5 hover:shadow-md"
style="background-color: color-mix(in srgb, var(--color-tip) 10%, transparent);
border-left-color: var(--color-tip);
--hover-bg: color-mix(in srgb, var(--color-tip) 15%, transparent);"
onmouseover="this.style.backgroundColor = this.style.getPropertyValue('--hover-bg')"
onmouseout="this.style.backgroundColor = 'color-mix(in srgb, var(--color-tip) 10%, transparent)'"
role="alert"
aria-labelledby="alert-1-title"&gt;
&lt;div
class="
cursor-pointer
flex items-center justify-between px-6 py-6"
onclick="toggleAlert('alert-1')" role="button" tabindex="0"
aria-expanded="false" aria-controls="alert-1-content"
onkeydown="if(event.key==='Enter'||event.key===' '){toggleAlert('alert-1');event.preventDefault();}"
&gt;
&lt;div class="flex items-center gap-3"&gt;
&lt;h4
id="alert-1-title"
class="m-0 font-semibold text-foreground/90"&gt;
Q: 為什麼不要把網頁用直式來排列，而是用橫式排列？
&lt;/h4&gt;
&lt;/div&gt;
&lt;div
class="flex-shrink-0 transition-transform duration-200"
id="alert-1-chevron"&gt;
&lt;svg class="h-4 w-4"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7" /&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div
id="alert-1-content"
class="alert-content
hidden
px-6 pb-6 items-center justify-between "&gt;
&lt;div class="prose prose-sm text-foreground/90 max-w-none"&gt;
&lt;p&gt;A: 因為直式排列對我本人來說很違反直覺。我認為把南國放在下面、北國放在上面（以地理方位上下來區分）是比較直覺的。另外，歷史時間由左到右呈現，有種電影膠捲的感覺，也比較符合我對時間的直覺。如果你覺得上下排列比較直覺的話，已經有人做過了，可以到&lt;a href="https://bibleeveryone.com/kings.php"target="_blank"
&gt;這個網站&lt;/a&gt;去看看。&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;div
class="alert alert-tip my-6 overflow-hidden rounded-lg transition-all duration-200 ease-out hover:-translate-y-0.5 hover:shadow-md"
style="background-color: color-mix(in srgb, var(--color-tip) 10%, transparent);
border-left-color: var(--color-tip);
--hover-bg: color-mix(in srgb, var(--color-tip) 15%, transparent);"
onmouseover="this.style.backgroundColor = this.style.getPropertyValue('--hover-bg')"
onmouseout="this.style.backgroundColor = 'color-mix(in srgb, var(--color-tip) 10%, transparent)'"
role="alert"
aria-labelledby="alert-2-title"&gt;
&lt;div
class="
cursor-pointer
flex items-center justify-between px-6 py-6"
onclick="toggleAlert('alert-2')" role="button" tabindex="0"
aria-expanded="false" aria-controls="alert-2-content"
onkeydown="if(event.key==='Enter'||event.key===' '){toggleAlert('alert-2');event.preventDefault();}"
&gt;
&lt;div class="flex items-center gap-3"&gt;
&lt;h4
id="alert-2-title"
class="m-0 font-semibold text-foreground/90"&gt;
Q: 為什麼要以「王」為單位，而不是以「時間」為單位？
&lt;/h4&gt;
&lt;/div&gt;
&lt;div
class="flex-shrink-0 transition-transform duration-200"
id="alert-2-chevron"&gt;
&lt;svg class="h-4 w-4"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7" /&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div
id="alert-2-content"
class="alert-content
hidden
px-6 pb-6 items-center justify-between "&gt;
&lt;div class="prose prose-sm text-foreground/90 max-w-none"&gt;
&lt;p&gt;A: 如果以時間為單位，有些王在位的年份非常少，可能才七天或是幾個月，在視覺呈現效果上會變得很窄、不好看。所以思前想後，還是決定以「王」為單位，畢竟在讀《歷代志》和《列王紀》的時候，大多數也都是以王為單位。&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;div
class="alert alert-tip my-6 overflow-hidden rounded-lg transition-all duration-200 ease-out hover:-translate-y-0.5 hover:shadow-md"
style="background-color: color-mix(in srgb, var(--color-tip) 10%, transparent);
border-left-color: var(--color-tip);
--hover-bg: color-mix(in srgb, var(--color-tip) 15%, transparent);"
onmouseover="this.style.backgroundColor = this.style.getPropertyValue('--hover-bg')"
onmouseout="this.style.backgroundColor = 'color-mix(in srgb, var(--color-tip) 10%, transparent)'"
role="alert"
aria-labelledby="alert-3-title"&gt;
&lt;div
class="
cursor-pointer
flex items-center justify-between px-6 py-6"
onclick="toggleAlert('alert-3')" role="button" tabindex="0"
aria-expanded="false" aria-controls="alert-3-content"
onkeydown="if(event.key==='Enter'||event.key===' '){toggleAlert('alert-3');event.preventDefault();}"
&gt;
&lt;div class="flex items-center gap-3"&gt;
&lt;h4
id="alert-3-title"
class="m-0 font-semibold text-foreground/90"&gt;
Q: 為什麼要用黑色代表「壞王」？紅色代表「好王」？藍色代表「神的作為」？綠色代表「外邦的作為」？
&lt;/h4&gt;
&lt;/div&gt;
&lt;div
class="flex-shrink-0 transition-transform duration-200"
id="alert-3-chevron"&gt;
&lt;svg class="h-4 w-4"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7" /&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div
id="alert-3-content"
class="alert-content
hidden
px-6 pb-6 items-center justify-between "&gt;
&lt;div class="prose prose-sm text-foreground/90 max-w-none"&gt;
&lt;p&gt;A: 因為黑色對我而言，感覺就是這個人黑心肝、壞透了。而用紅色代表好王，代表我們要 highlight 做得好的事情，要記得他哪裡值得學習。至於藍色跟綠色嘛&amp;hellip;&amp;hellip;則沒有什麼特別意義，純粹覺得好看。&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;h2 id="網頁截圖"&gt;網頁截圖&lt;/h2&gt;
&lt;style&gt;
#masonry-11246d08417f059fb5d01565eb2ee54f-1 {
width: 100%;
}
#masonry-11246d08417f059fb5d01565eb2ee54f-1 .masonry-container {
width: 100%;
position: relative;
}
#masonry-11246d08417f059fb5d01565eb2ee54f-1 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 20px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-11246d08417f059fb5d01565eb2ee54f-1 .masonry-item img {
width: 95%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-11246d08417f059fb5d01565eb2ee54f-1 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-11246d08417f059fb5d01565eb2ee54f-1 .glightbox:hover,
#masonry-11246d08417f059fb5d01565eb2ee54f-1 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-11246d08417f059fb5d01565eb2ee54f-1 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-11246d08417f059fb5d01565eb2ee54f-1 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-11246d08417f059fb5d01565eb2ee54f-1"
data-columns="1"
data-gutter="20"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/40/1.png"
class="glightbox"
data-gallery="masonry-11246d08417f059fb5d01565eb2ee54f-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/40/1.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/40/1.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/40/2.png"
class="glightbox"
data-gallery="masonry-11246d08417f059fb5d01565eb2ee54f-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/40/2.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/40/2.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/40/3.png"
class="glightbox"
data-gallery="masonry-11246d08417f059fb5d01565eb2ee54f-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/40/3.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/40/3.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-11246d08417f059fb5d01565eb2ee54f-1';
const config = {
columns: 1 ,
gutter: 20 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;
&lt;h2 id="結語"&gt;結語&lt;/h2&gt;
&lt;p&gt;所有的事件內容是我一筆筆填寫校訂的，可能還是會有些微的錯誤。網站上附有聯絡信箱和快速報錯表單。如果有發現網站操作或是內容資訊有不對的地方，歡迎&lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScBGI-yK-xd7Uk3ICacEKFAgXUnTB3loXTrEnvPMwfUWertDg/viewform"target="_blank"
&gt;填寫表單&lt;/a&gt;或來信告知。&lt;/p&gt;
&lt;p&gt;歡迎去 &lt;a href="https://visbible.org/"target="_blank"
&gt;VisBible.org&lt;/a&gt; 逛逛吧！也歡迎來信告訴我使用心得！&lt;/p&gt;</content:encoded></item><item><title>布丁的記憶</title><link>https://alicehsu.blog/zh-tw/posts/2026/02/memories-of-pudding/</link><pubDate>Sat, 28 Feb 2026 16:00:00 -0600</pubDate><guid>https://alicehsu.blog/zh-tw/posts/2026/02/memories-of-pudding/</guid><description>有些人是統一布丁，有些人是手工布丁。</description><media:thumbnail url="https://alicehsu.blog/images/Post39home.jpg"/><media:content url="https://alicehsu.blog/images/Post39home.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post39home.jpg" type="image/jpeg"/><content:encoded>&lt;p&gt;你都是怎麼吃布丁的呢？&lt;/p&gt;
&lt;p&gt;小時候非常喜歡吃統一布丁，記憶中總是拿著超商附的方形湯匙，一層一層挖布丁。我說的一層一層，是真的一層一層喔！就是從表面輕輕削去一層之後，再往下削去一層。而且挖同一層時，總是盡量讓這一口布丁跟前一口布丁中間沒有任何的挖痕。挖到布丁本體跟焦糖中間的界線時，我也會很堅持讓最後一層黃色沒有沾染到任何焦糖顏色。當吃到焦糖，我會先把邊邊的半圓形給吃掉，再吃掉中間剩下的。&lt;/p&gt;
&lt;p&gt;為了要挖出完美的切面，我往往會耗去許多時間來消弭可能出現的多餘痕跡。至於為什麼要這麼費功夫？我想不單純是小時候的自己沒事做，而是一種捨不得吃完的心理吧。布丁不常出現在我家，面對偶爾出現的&lt;a href="https://alicehsu.blog/zh-tw/posts/2025/11/%EF%B8%8F-%e7%83%8f%e6%89%98%e9%82%a6%e5%bc%8f%e6%99%ba%e6%85%a7%e5%86%b0%e7%ae%b1/"&gt;冰箱&lt;/a&gt;貴客，總是要小心翼翼地對待，增加相處的時間，延長幸福的記憶了。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;長大之後喝到布丁奶茶也是驚為天人。我發現比起珍珠奶茶，我好像更愛布丁奶茶。&lt;/p&gt;
&lt;p&gt;無糖的奶茶配上布丁，香濃順口，甜味也剛剛好。不像珍珠奶茶需要耗費極大的力氣咀嚼，也難以控制吸到的珍珠量，布丁奶茶就溫順多了，非常好吸，布丁和奶茶的比例不會太過失衡。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;上個週末被邀請參加一個 Potluck。主人說我們可以不帶東西，不過如果想帶的話，可以帶點甜的。我兩眼發光問 Sam ：「要不要自己做布丁？」雖然比較興奮的好像是我，但他還是被我說動了。&lt;/p&gt;
&lt;p&gt;這輩子還沒自己做過布丁，為了避免讓賓客吃到失敗的布丁，我們按著 &lt;a href="https://www.youtube.com/watch?v=PlA09FSd22E"target="_blank"
&gt;MASA 的食譜&lt;/a&gt;試做了一輪。看著倒進去的砂糖多如小山，我想這個布丁絕對是甜到爆炸。果不其然，第一天做完真的甜到胃疼（如字面上的意思）。後來帶給賓客的布丁，是把糖打了七折才端出去的，還是有點甜，不過不至於胃痛了，我甚至覺得，布丁本體的糖打五折會剛好一點。除此之外，由於我們用的布丁容器大小跟 Masa 的不一樣，烤的時間上拉長了許多，做甜點可真是差之毫厘失之千里啊。&lt;/p&gt;
&lt;p&gt;最讓我驚訝的就是味道了。自己動手做過後，發現純手工布丁跟統一布丁的味道差滿多的：自己做的布丁，其焦糖不像統一布丁那樣有一個明顯的分層，而是偏液狀，布丁本體味道非常香濃，而口感非常扎實、比較沒那麼好挖。仔細一想，統一布丁的口感軟軟爛爛的，味道也沒有那麼香濃。&lt;/p&gt;
&lt;p&gt;吃過真布丁才知道，原來統一布丁不是布丁，它只是長得像罷了。&lt;/p&gt;
&lt;p&gt;這好像也滿適用於人際關係：有些人是統一布丁，有些人是手工布丁。手工布丁給的愛是真心的，是真材實料的鮮奶、雞蛋跟砂糖。而有些布丁長得一副布丁模布丁樣，但卻沒有任何一點布丁該要有的內涵（冷知識：統一布丁沒有任何鮮奶和雞蛋喔）。長期吃統一布丁，可能以為這就是全世界了；一旦你遇到手工布丁，才會曉得原來之前的布丁都不是布丁啊！&lt;/p&gt;
&lt;p&gt;所以，你可以偷偷罵一個不真誠的人：「你這個統一布丁！」（並沒有）&lt;/p&gt;
&lt;p&gt;雖說如此，下次回台灣，我可能還是會吃統一布丁，並喝個布丁奶茶吧，因為它們方便，也因為他們可以讓我稍稍懷念青春時光，只是我大概不會再如此小心翼翼吃統一布丁了，就一湯匙挖到底吧。&lt;/p&gt;
&lt;p&gt;附一張試做的布丁照片：
&lt;style&gt;
#masonry-8e8648cd40e2fbfd17d13720f0ee600e-1 {
width: 100%;
}
#masonry-8e8648cd40e2fbfd17d13720f0ee600e-1 .masonry-container {
width: 100%;
position: relative;
}
#masonry-8e8648cd40e2fbfd17d13720f0ee600e-1 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 20px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-8e8648cd40e2fbfd17d13720f0ee600e-1 .masonry-item img {
width: 50%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-8e8648cd40e2fbfd17d13720f0ee600e-1 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-8e8648cd40e2fbfd17d13720f0ee600e-1 .glightbox:hover,
#masonry-8e8648cd40e2fbfd17d13720f0ee600e-1 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-8e8648cd40e2fbfd17d13720f0ee600e-1 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-8e8648cd40e2fbfd17d13720f0ee600e-1 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-8e8648cd40e2fbfd17d13720f0ee600e-1"
data-columns="1"
data-gutter="20"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post39home.jpg"
class="glightbox"
data-gallery="masonry-8e8648cd40e2fbfd17d13720f0ee600e-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post39home.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post39home.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-8e8648cd40e2fbfd17d13720f0ee600e-1';
const config = {
columns: 1 ,
gutter: 20 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;&lt;/p&gt;</content:encoded></item><item><title>午後散步</title><link>https://alicehsu.blog/zh-tw/posts/2026/02/walk-in-the-afternoon/</link><pubDate>Mon, 16 Feb 2026 19:30:00 -0600</pubDate><guid>https://alicehsu.blog/zh-tw/posts/2026/02/walk-in-the-afternoon/</guid><description>對湖而言，冰凍三尺，非一日之寒，是好幾日好幾週好幾月之寒</description><media:thumbnail url="https://alicehsu.blog/images/Post/38/1.jpg"/><media:content url="https://alicehsu.blog/images/Post/38/1.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post/38/1.jpg" type="image/jpeg"/><content:encoded>&lt;p&gt;今日，溫度很難得到攝氏十度以上，看見外面陽光甚好，忍不住放下手邊的工作到外邊走走。&lt;/p&gt;
&lt;p&gt;回暖的日子，小動物們紛紛跑出來了：看到久違的小松鼠正找著松果，也聽見小麻雀啾啾的聲音。除了小動物，也有許多人類冒出來了，路上不乏許多行人享受午後陽光。&lt;/p&gt;
&lt;p&gt;閒晃到附近的湖，有家長帶著孩子在湖邊的遊樂設施玩沙；有小孩騎著電動滑板車從我旁邊呼嘯而過；也有大孩騎著腳踏車，臉上咧著大大的笑容。&lt;/p&gt;
&lt;p&gt;啊，大概跟我一樣悶壞了吧，總算可以出來透透氣，笑容止都止不住。&lt;/p&gt;
&lt;p&gt;除了小孩，湖邊也有一些看起來有運動習慣的青年人在慢跑著。他們穿著專業的短袖運動服，踩著色彩鮮艷的慢跑鞋，即使泥濘滿地也阻擋不了他們邁開堅定的步伐大步向前跑。有些會帶著狗狗一起跑步，一隻有雙聰明伶俐眼睛的伯恩山犬，將叼著的樹枝輕輕放在地上，等候後方的主人拾起、往前丟，牠再踏著愉快的腳步往前奔跑撿牠心愛的小樹枝。&lt;/p&gt;
&lt;p&gt;也有一些是結伴的老年人，有些像是夫妻、有些像是朋友。老年人走路步伐比較緩慢、比較小心翼翼，通常穿比較多。偶爾擦身而過，會面帶微笑友善地說哈囉；噢對了，步伐比較慢的還有剛有小孩的夫妻，緩緩推著嬰兒車，這一刻彷彿就是永恆。&lt;/p&gt;
&lt;p&gt;我走到湖的另一端，人較少，視野變得遼闊，原本結冰的湖面變得凹凸不平，湖邊的蘆葦也探出頭來，融化一部份的冰在它身上彷彿熱可可上的棉花糖，軟萌軟萌的。實在難以想像，之前的湖是一塊大冰塊，甚至可以在上面溜冰都不成問題。&lt;/p&gt;
&lt;p&gt;對湖而言，冰凍三尺，非一日之寒，是好幾日好幾週好幾月之寒。即便如此，對太陽來說，要融化湖並非難事，就每日每週每月暖你，總是會化的。&lt;/p&gt;
&lt;p&gt;我們看的是寒？還是暖？我們看的是當下？還是永恆？&lt;/p&gt;
&lt;p&gt;午後出去走走，驅散寒氣，迎接初春。&lt;/p&gt;
&lt;style&gt;
#masonry-802bd402a69015ea9032085d20bc02b5-1 {
width: 100%;
}
#masonry-802bd402a69015ea9032085d20bc02b5-1 .masonry-container {
width: 100%;
position: relative;
}
#masonry-802bd402a69015ea9032085d20bc02b5-1 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 20px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-802bd402a69015ea9032085d20bc02b5-1 .masonry-item img {
width: 95%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-802bd402a69015ea9032085d20bc02b5-1 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-802bd402a69015ea9032085d20bc02b5-1 .glightbox:hover,
#masonry-802bd402a69015ea9032085d20bc02b5-1 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-802bd402a69015ea9032085d20bc02b5-1 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-802bd402a69015ea9032085d20bc02b5-1 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-802bd402a69015ea9032085d20bc02b5-1"
data-columns="1"
data-gutter="20"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/38/1.jpg"
class="glightbox"
data-gallery="masonry-802bd402a69015ea9032085d20bc02b5-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/38/1.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/38/1.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/38/2.jpg"
class="glightbox"
data-gallery="masonry-802bd402a69015ea9032085d20bc02b5-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/38/2.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/38/2.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/38/3.JPG"
class="glightbox"
data-gallery="masonry-802bd402a69015ea9032085d20bc02b5-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/38/3.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/38/3.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-802bd402a69015ea9032085d20bc02b5-1';
const config = {
columns: 1 ,
gutter: 20 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;</content:encoded></item><item><title>《藥師少女的獨語》：致敬我有著亮光的朋友們</title><link>https://alicehsu.blog/zh-tw/posts/2026/02/the-apothecary-diaries/</link><pubDate>Tue, 10 Feb 2026 14:40:00 -0600</pubDate><guid>https://alicehsu.blog/zh-tw/posts/2026/02/the-apothecary-diaries/</guid><description>為什麼主角這些特質會引發我的共鳴呢？我想，大概是我想到了我的朋友們吧。</description><media:thumbnail url="https://alicehsu.blog/images/Post37home.jpg"/><media:content url="https://alicehsu.blog/images/Post37home.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post37home.jpg" type="image/jpeg"/><content:encoded>&lt;img
src="https://alicehsu.blog/images/Post37home.jpg"
loading="eager"
/&gt;&lt;p&gt;前幾日讀到&lt;a href="https://www.cna.com.tw/news/acul/202602070198.aspx"target="_blank"
&gt;一則新聞&lt;/a&gt;，是《藥師少女的獨語》的主角聲優悠木碧訪台的消息。&lt;/p&gt;
&lt;p&gt;快速瀏覽了新聞，看到幾個關鍵字：貓貓、後宮、推理，嘿！正中紅心。&lt;/p&gt;
&lt;p&gt;問 Sam 有沒有聽過這一部動畫，他說這部評價滿好的，不過他也沒看過。於是，兩個掛病號的人一個週末就把第一季給嗑完了。&lt;/p&gt;
&lt;p&gt;這部動畫吸引我的有幾個點：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;女主角不是大家閨秀，而是出生於妓院的小姑娘。你以為是個勵志向上的故事嗎？不是喔，女主常常思考要如何在不出風頭的前提下，有智慧應對危險、解決問題。除此之外，她隨遇而安、忠心工作、對身邊的人好。&lt;/li&gt;
&lt;li&gt;女主對美男子一點興趣都沒有，對自己熱衷的藥材卻會兩眼發光。&lt;/li&gt;
&lt;li&gt;女主外貌（故意）平平無奇，內在有豐富的藥理知識和出色的推斷能力。&lt;/li&gt;
&lt;li&gt;不像柯南，主角的家庭背景在第一集就清楚地交代了，《藥師少女的獨語》慢慢把每條線索散佈在每一集中，讓讀者自己推理女主和男主的身世。&lt;/li&gt;
&lt;li&gt;不像柯南，每一個獨立事件都會在當集內收尾，《藥師少女的獨語》每一集裡雖然也會解決主線問題，但往往會留下一兩個懸而未解的謎團，直到後面的集數才解開。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;說故事的方法有助於激發讀者的參與感，那為什麼主角這些特質會引發我的共鳴呢？我想，大概是我想到了我的朋友們吧。&lt;/p&gt;
&lt;p&gt;我大學時期有幾個朋友，是屬「曖曖內含光」的類型。她們功課非常好，但對於要成為什麼卷姐其實沒什麼興趣。她們對自己喜歡的東西如數家珍，比如，我有個朋友喜歡聽《盜墓筆記》的有聲小說，好幾次與她一起幫老師打工，她可以從第一集說書說到打工結束，然後下回分解，等到下次一起工作再繼續講（我們還是有認真工作啦！）。另一個朋友對於維多利亞的秘密走秀很有興趣，都記得哪個超模誰是誰。她們看起來很平凡，不過都有這些共通點：對朋友非常忠心、尊重朋友的選擇、在適當的時候表達支持。她們淡泊名利，不是愛出風頭的類型，卻是極其真誠的朋友。現在回想起來，大學時期有她們的陪伴，心裡其實滿感謝的。&lt;/p&gt;
&lt;p&gt;希望作者可以維持品質繼續寫下去，也希望我的朋友們&amp;mdash;那些像主角貓貓一樣有著亮光的人們&amp;mdash;可以過得好啊。&lt;/p&gt;</content:encoded></item><item><title>全雞雞湯</title><link>https://alicehsu.blog/zh-tw/posts/2026/02/chicken-soup/</link><pubDate>Mon, 09 Feb 2026 20:00:00 -0600</pubDate><guid>https://alicehsu.blog/zh-tw/posts/2026/02/chicken-soup/</guid><description>有萬丈光芒從湯裡激射而出，雞也很開心地在我身後跳躍 🐔🐔🐔</description><media:thumbnail url="https://alicehsu.blog/images/Post/36/1.jpg"/><media:content url="https://alicehsu.blog/images/Post/36/1.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post/36/1.jpg" type="image/jpeg"/><content:encoded>&lt;p&gt;近日身體微恙，鼻竇炎加上中耳炎，非常想要喝個熱呼呼的東西，幫助身體快點好。&lt;/p&gt;
&lt;p&gt;傳說雞湯具有抗發炎的功效，我和 Sam 決定來挑戰一下做個全雞雞湯，就是那種有一整隻雞在湯裡面的雞湯！&lt;/p&gt;
&lt;p&gt;厲害的雞湯其實十分麻煩，若要做拉麵的雞白湯，得要先燉了一鍋雞湯，再把雞肉炒碎，跟原本的雞湯熬煮第二遍。而飯店的清湯雞湯，據說是要用兩隻雞：第一隻雞是負責熬湯，沒有要吃的，第二隻雞才是用來吃的。既然只是做個家常版（？）的雞湯，就一雞到底啦。&lt;/p&gt;
&lt;p&gt;我們去超市選購的時候，發現架上其實沒有太多選擇，就兩款：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Air-chilled（氣冷雞）&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;：內臟全部都掏乾淨了，但是雞偏小隻。&lt;/li&gt;
&lt;li&gt;普通處理的雞：大隻許多，不過還殘留一些內臟。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;（猜猜我們會選哪個？）&lt;/p&gt;
&lt;p&gt;思來想去，覺得既然要燉了，那就燉個厲害點的大雞吧。於是，我們就拎著那一顆在塑膠袋圓球裡的普通雞，跟著我們回家。&lt;/p&gt;
&lt;p&gt;先幫雞洗個 spa，英雄 Sam 就戴著手套把雞頭和一些內臟從他的肚子裡撈出來（什麼都抵擋不了吃貨的決心！）接著反覆清洗雞的裡裡外外。隨後燒一鍋開水，小心翼翼地把雞放到鍋裡後（其實萬分驚險，那隻雞真的太大了，我們家的鍋子太小啦，差點不只燙雞還燙人），汆燙兩分鐘後即可把雞撈出放到電鍋內鍋裡。&lt;/p&gt;
&lt;p&gt;接著，在內鍋放入薑片、泡開的香菇和些許蒜粒，再把剛剛汆燙的水加入少許米酒、鹽、糖、紹興酒，與剛剛泡香菇的水一同倒入。以鋁箔紙封死後，就可以端進電鍋裡蒸煮啦！&lt;/p&gt;
&lt;p&gt;外鍋先放兩杯水，跳起來之後再加兩杯水，再跳起來就有這一鍋完美的雞湯。
&lt;style&gt;
#masonry-018af3691f2a59a9869d24055687d6bd-1 {
width: 100%;
}
#masonry-018af3691f2a59a9869d24055687d6bd-1 .masonry-container {
width: 100%;
position: relative;
}
#masonry-018af3691f2a59a9869d24055687d6bd-1 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 10px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-018af3691f2a59a9869d24055687d6bd-1 .masonry-item img {
width: 95%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-018af3691f2a59a9869d24055687d6bd-1 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-018af3691f2a59a9869d24055687d6bd-1 .glightbox:hover,
#masonry-018af3691f2a59a9869d24055687d6bd-1 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-018af3691f2a59a9869d24055687d6bd-1 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-018af3691f2a59a9869d24055687d6bd-1 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-018af3691f2a59a9869d24055687d6bd-1"
data-columns="2"
data-gutter="10"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/36/1.jpg"
class="glightbox"
data-gallery="masonry-018af3691f2a59a9869d24055687d6bd-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/36/1.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/36/1.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/36/2.jpg"
class="glightbox"
data-gallery="masonry-018af3691f2a59a9869d24055687d6bd-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/36/2.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/36/2.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-018af3691f2a59a9869d24055687d6bd-1';
const config = {
columns: 2 ,
gutter: 10 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;
嚐了一碗，味道鮮美！甚至比外面的一些雞湯還厲害，香菇和雞釋放的精華，完美地讓湯頭的味道變得十分豐富，如果我在動漫裡，此刻大概有萬丈光芒從湯裡激射而出，雞也很開心地在我身後跳躍吧 🐔🐔🐔&lt;/p&gt;
&lt;p&gt;然後我們很浪費地拿這個清澈金澄的湯頭來做火鍋。&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;Sam 讀完我的初稿，說他把氣冷雞看成冷氣雞&amp;hellip;&amp;hellip;（所以我說我用不很真認打字對吧）&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content:encoded></item><item><title>天乾物燥，小心......</title><link>https://alicehsu.blog/zh-tw/posts/2026/02/static-shock/</link><pubDate>Thu, 05 Feb 2026 19:30:00 -0600</pubDate><guid>https://alicehsu.blog/zh-tw/posts/2026/02/static-shock/</guid><description>我常笑說，我們兩個還真是來電啊。</description><media:thumbnail url="https://alicehsu.blog/images/Post35home.jpg"/><media:content url="https://alicehsu.blog/images/Post35home.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post35home.jpg" type="image/jpeg"/><content:encoded>&lt;img
src="https://alicehsu.blog/images/Post35home.jpg"
loading="eager"
/&gt;&lt;div
class="alert alert-caution my-6 overflow-hidden rounded-lg transition-all duration-200 ease-out hover:-translate-y-0.5 hover:shadow-md"
style="background-color: color-mix(in srgb, var(--color-caution) 10%, transparent);
border-left-color: var(--color-caution);
--hover-bg: color-mix(in srgb, var(--color-caution) 15%, transparent);"
onmouseover="this.style.backgroundColor = this.style.getPropertyValue('--hover-bg')"
onmouseout="this.style.backgroundColor = 'color-mix(in srgb, var(--color-caution) 10%, transparent)'"
role="alert"
aria-labelledby="alert-0-title"&gt;
&lt;div
id="alert-0-content"
class="alert-content px-6 pb-6 py-6 items-center justify-between "&gt;
&lt;div class="prose prose-sm text-foreground/90 max-w-none"&gt;
&lt;p&gt;這是我的&lt;a href="https://blogblog.club/party"target="_blank"
&gt;「BlogBlog 同樂會 - 2026 年 2 月」&lt;/a&gt;的投稿文章。本月主題是「只有我這樣嗎？」，由 Wiwi 主持。如果你有自己的部落格，歡迎一起來參加！&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;p&gt;剛來美國的時候，不只要適應語言差異、文化差異，還得要適應濕度差異。&lt;/p&gt;
&lt;p&gt;入冬，開啟暖氣，家裡危機四伏。一不小心就電光石火，與家中的物品產生互放的光亮。沒錯，就是靜電。一個我在台灣無感的現象，到美國卻變得隨處常見。&lt;/p&gt;
&lt;p&gt;只要一開啟暖氣，家中的濕度就會驟降。一旦碰到門把、衣架或是電腦，就會被電得劈哩啪啦唏哩嘩啦。有時候碰到 Sam，甚至還會有火花出現。我常笑說，我們兩個還真是來電啊。&lt;/p&gt;
&lt;p&gt;有一天終於受不了了，在 Amazon 買了個加濕器放在客廳。看著水霧徐徐噴出，內心就安穩許多，總算不用小心翼翼過生活了。&lt;/p&gt;
&lt;p&gt;雖然如此，被電的恐懼已深植我心。一旦要碰金屬物品，我總會以奇怪的姿勢想辦法降低被電的機率。&lt;/p&gt;
&lt;p&gt;比如：碰門把之前，我會先用指甲快速碰一下，確定沒事才握緊門把；如果要洗手，我會先打開水龍頭，快速地劃過水流，確認沒事再把手放到水流下沖洗；外出回來，要把大衣掛在衣帽架上，我會想盡辦法不要碰到衣架本人，而是甩動大衣的帽子，讓帽子勾在衣架上後再放下外套。&lt;/p&gt;
&lt;p&gt;當然還有許多：路過加濕器，手就會在上面蒸一下；不會乖乖用手握著門把關車門，而是用手肘關門；跟別人握手前，先偷偷往自己手裡哈氣（不過沒什麼用就是了，我自己還是被電得霹哩啪啦）。&lt;/p&gt;
&lt;p&gt;不知道是不是只有我這麼怕靜電？如果你也跟我一樣害怕靜電，或是有什麼奇招可以抵抗靜電的話，歡迎來信和我分享（mail@alicehsu.blog），讓我知道我不是孤單的哈哈哈。&lt;/p&gt;
&lt;p&gt;天乾物燥，不只要小心火燭，還要小心靜電啊。&lt;/p&gt;</content:encoded></item><item><title>胎萌</title><link>https://alicehsu.blog/zh-tw/posts/2026/02/vivipary/</link><pubDate>Tue, 03 Feb 2026 16:00:00 -0600</pubDate><guid>https://alicehsu.blog/zh-tw/posts/2026/02/vivipary/</guid><description>番茄發芽了，這還能吃嗎？</description><media:thumbnail url="https://alicehsu.blog/images/Post34home.jpg"/><media:content url="https://alicehsu.blog/images/Post34home.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post34home.jpg" type="image/jpeg"/><content:encoded>&lt;img
src="https://alicehsu.blog/images/Post34home.jpg"
loading="eager"
/&gt;&lt;p&gt;晚餐時間，廚房傳來一陣驚叫：&lt;/p&gt;
&lt;p&gt;「番茄發芽了，這還能吃嗎？」Sam 一邊哀嚎一邊問。&lt;/p&gt;
&lt;p&gt;我仔細一瞧他手中的番茄切塊，原本小小的籽竟然冒出了綠色的芽，有一些甚至還讓番茄的表皮隆起，一副要衝出來的樣子。&lt;/p&gt;
&lt;p&gt;讓我忍不住想到《獵人》裡面蟻王出生的片段（怕）。&lt;/p&gt;
&lt;p&gt;上網查了一些資料，發現應該是可以吃，但好像不太好吃。&lt;/p&gt;
&lt;p&gt;Sam 繼續哀號，一邊挖手中的芽。那些番茄被我們堆在冰箱上許久，可能有一兩個禮拜了吧，大概是溫度跟濕度都十分宜人，讓番茄寶寶迫不及待想要跑出來了。&lt;/p&gt;
&lt;p&gt;我們把它切一切，挑掉芽之後，弄了個番茄炒蛋吃了，可能也因著加了番茄醬，吃不出番茄味道有什麼區別，過了幾天肚子也很平安。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;這個小插曲最讓我印象深刻的是蕃茄裡小芽的名字，叫作「胎萌」（Vivipary）。&lt;/p&gt;
&lt;p&gt;這個詞挺神秘的。我查了&lt;a href="https://dict.revised.moe.edu.tw/index.jsp"target="_blank"
&gt;《教育部重編國語辭典修訂本》&lt;/a&gt;找不到這個詞（雖然我覺得教育部的字典很難贏得我的信任），除此之外也查了網路版的&lt;a href="http://www.kaom.net/book_hanyudacidian.php"target="_blank"
&gt;《漢語大辭典》&lt;/a&gt;、&lt;a href="https://humanum.arts.cuhk.edu.hk/Lexis/lexi-mf/"target="_blank"
&gt;《漢語多功能字庫》&lt;/a&gt;、&lt;a href="https://www.kangxizidian.com/"target="_blank"
&gt;《康熙字典》&lt;/a&gt;&amp;hellip;&amp;hellip;等等，都查不到，試著查一些古籍也沒有。唯一有查到的是在&lt;a href="https://www.hanyucidian.org/"target="_blank"
&gt;《漢語詞典總彙》&lt;/a&gt;裡面，它有收錄這個詞語。不過看起來是收錄在《漢英大詞典》第三版裡頭的其中一個條目，但它也沒有做詳細的解釋，只有「胎萌」加上漢語拼音 [tāi méng]，再加上 vivipary，就沒了。&lt;/p&gt;
&lt;p&gt;那為什麼我會知道這個詞呢？&lt;/p&gt;
&lt;p&gt;因為我問了 Claude，它告訴我的。我想，既然它都這麼說了，代表還是有人會使用這些詞吧。&lt;/p&gt;
&lt;p&gt;於是，我直接把「胎萌」這個詞丟到 Google 去，發現它有出現在&lt;a href="https://zh.wikipedia.org/wiki/%E8%83%8E%E7%94%9F%E6%A4%8D%E7%89%A9"target="_blank"
&gt;維基百科&lt;/a&gt;。是在胎生植物的條目底下：&lt;/p&gt;
&lt;blockquote
class="border-primary bg-muted/30 hover:bg-muted/40 my-6 rounded-r-lg border-l-4 py-4 pr-4 pl-6 transition-all duration-200 ease-out hover:translate-x-1"&gt;
&lt;div class="prose prose-sm max-w-none"&gt;
&lt;p&gt;胎生植物（Viviparous plants）又稱胎萌植物，是指果實成熟後不脫離母體植物，種子仍留在果實中並不掉落，而會在果實內直接發芽長成幼苗；即幼苗在母株上發育後才脫落、著生進而獨立生長。&lt;/p&gt;
&lt;/div&gt;
&lt;/blockquote&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;p&gt;我又靈光一閃，在華藝資料庫裡搜尋，發現台灣有篇期刊有用到這個詞。原來不只番茄會「胎萌」，佛手瓜也會。&lt;/p&gt;
&lt;blockquote
class="border-primary bg-muted/30 hover:bg-muted/40 my-6 rounded-r-lg border-l-4 py-4 pr-4 pl-6 transition-all duration-200 ease-out hover:translate-x-1"&gt;
&lt;div class="prose prose-sm max-w-none"&gt;
&lt;p&gt;成熟後若未及時採收，種子在瓜中很快就會萌發，此現象稱為「胎萌」，是佛手瓜的一大特點。（65）&lt;/p&gt;
&lt;/div&gt;
&lt;/blockquote&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;p&gt;雖然許多字典沒有「胎萌」這個詞，我自己倒是滿喜歡這個詞的。「胎」這個字，讓我覺得番茄裡的小芽好像擬人化了，在番茄媽媽的肚子裡成長。而「萌」這個字，描述了植物生發的狀態，整體唸起來也很 Q。不管這個詞是從哪裡來的，它真的很可愛，而且讀來簡潔方便。&lt;/p&gt;
&lt;p&gt;無論如何，番茄裡發出小芽的現象，叫作「胎萌」，番茄本人應該還可以吃（&lt;del&gt;不過吃壞肚子可別怪我&lt;/del&gt;），望周知。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;引用文獻&lt;/p&gt;
&lt;p&gt;菱怡。〈本是同根生－佛手瓜與龍鬚菜〉。《清流雙月刊》45 (2023): 64-69。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NB&lt;/strong&gt;: Due to the unique semantic nature of the Chinese word 胎萌, no English translation is provided.&lt;/p&gt;</content:encoded></item><item><title>《駭客任務》：怪怪的感覺很重要</title><link>https://alicehsu.blog/zh-tw/posts/2026/01/the-matrix-that-strange-feeling-matters/</link><pubDate>Tue, 27 Jan 2026 16:30:00 -0600</pubDate><guid>https://alicehsu.blog/zh-tw/posts/2026/01/the-matrix-that-strange-feeling-matters/</guid><description>那種說不出來的違和感，其實是一切改變的開始。</description><media:thumbnail url="https://alicehsu.blog/images/Post33home.png"/><media:content url="https://alicehsu.blog/images/Post33home.png" medium="image"/><enclosure url="https://alicehsu.blog/images/Post33home.png" type="image/jpeg"/><content:encoded>&lt;p&gt;上回出去玩，從聖地牙哥飛回芝加哥的航班上，我在飛機上終於看了《駭客任務》（The Matrix）第一集。其中有一段基努·李維和勞倫斯·費許朋的對話，讓我印象十分深刻。&lt;/p&gt;
&lt;style&gt;
#masonry-77de1ec1c2b58d9ec2e09af3df1ca568-1 {
width: 100%;
}
#masonry-77de1ec1c2b58d9ec2e09af3df1ca568-1 .masonry-container {
width: 100%;
position: relative;
}
#masonry-77de1ec1c2b58d9ec2e09af3df1ca568-1 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-77de1ec1c2b58d9ec2e09af3df1ca568-1 .masonry-item img {
width: 60%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-77de1ec1c2b58d9ec2e09af3df1ca568-1 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-77de1ec1c2b58d9ec2e09af3df1ca568-1 .glightbox:hover,
#masonry-77de1ec1c2b58d9ec2e09af3df1ca568-1 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-77de1ec1c2b58d9ec2e09af3df1ca568-1 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-77de1ec1c2b58d9ec2e09af3df1ca568-1 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-77de1ec1c2b58d9ec2e09af3df1ca568-1"
data-columns="1"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post33home.png"
class="glightbox"
data-gallery="masonry-77de1ec1c2b58d9ec2e09af3df1ca568-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post33home.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post33home.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-77de1ec1c2b58d9ec2e09af3df1ca568-1';
const config = {
columns: 1 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;
&lt;blockquote
class="border-primary bg-muted/30 hover:bg-muted/40 my-6 rounded-r-lg border-l-4 py-4 pr-4 pl-6 transition-all duration-200 ease-out hover:translate-x-1"&gt;
&lt;div class="prose prose-sm max-w-none"&gt;
&lt;p&gt;That you are a slave, Neo. （你是個奴隸，尼歐）&lt;/p&gt;
&lt;p&gt;Like everyone else, you were born into bondage, （就跟其他人一樣，你生來便身陷枷鎖）&lt;/p&gt;
&lt;p&gt;Born into a prison that you cannot smell or taste or touch,&lt;/p&gt;
&lt;p&gt;（生來就禁錮在一座你聞不到、嘗不到、也觸摸不到的囹圄裡）&lt;/p&gt;
&lt;p&gt;A prison&amp;hellip;for your mind. （一座&amp;hellip;囚禁你心智的監獄。）&lt;/p&gt;
&lt;/div&gt;
&lt;/blockquote&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;hr&gt;
&lt;p&gt;這段對話是勞倫斯·費許朋對 Matrix（母體）的描述：訴說著主角和這個世界上所有人所處的世界，其實不是真實世界，而是一個由「母體」所操縱的世界。&lt;/p&gt;
&lt;p&gt;這何嘗不是社群媒體的寫照呢？&lt;/p&gt;
&lt;h2 id="駭客任務與社群媒體"&gt;《駭客任務》與社群媒體&lt;/h2&gt;
&lt;p&gt;社群媒體就像一座囚禁我們心智的監獄：演算法每天餵給我們訊息，我們就吃，就像監獄的牢飯一樣，餓不死，可是也沒太多營養和美味。偶爾還比牢飯更慘，那些激情和煽動的文字，其實是有毒的。&lt;/p&gt;
&lt;p&gt;許多社群媒體的創作者，就像奴隸一樣，在封閉的平台裡貢獻他們的才華，而最大的獲益者還是平台。至於不創作內容的使用者，其實也是奴隸：他們貢獻專注度，而專注度就是時間，時間就是生命，生命是我們在這地球上最珍貴的資產。&lt;/p&gt;
&lt;p&gt;我覺得社群媒體很弔詭的一件事情是：你好像擁有監獄的鑰匙，只要登出帳號就能離開；但實際上，它有一種像磁力般可怕的力量，隨時會把你吸回去。即便你一再登出，但已經習慣在上面獲得短暫刺激快樂的你，就會想要一直回去，本質上就是上癮了。&lt;/p&gt;
&lt;p&gt;要逃脫這樣的監獄需要花費力氣和代價，除了要掙扎怎麼戒掉之外，還要面對別人的不理解，以及自己偶爾的 FOMO（Fear of Missing Out），擔心錯過別人的生命故事。不過，相比電影中主角需要經過可怕、非人的手術才能獲得自由，離開社群媒體所付出的代價小得多，只需要花一點力氣和方法，就能逃脫這個禁錮心智的牢籠。而且離開之後，不像《駭客任務》裡的牛排會變得難吃，你會發現這個世界上原來有更多好吃的東西：好看的書、經典的電影、感動人的音樂。古今中外不在 FB 和 IG 的美好創作，真的超級無敵多！&lt;/p&gt;
&lt;h2 id="黑歷史"&gt;黑歷史&lt;/h2&gt;
&lt;p&gt;過往的我，尤其是大學時期，真的花太多時間在看 Instagram 和 Facebook。我發現自己的行為模式是：一遇到挫折或難過的事，就會打開社群媒體看一些貼文，這是一個能快速放下煩心事的方法，卻累積不少隱患。當時的我並沒有學會以健康的方式處理難題，導致生命中最精華的一段時間就這樣流逝了。社群媒體大幅偷走了我的時間與生命。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://alicehsu.blog/zh-tw/posts/2025/09/%e5%88%aa%e6%8e%89-fb-%e8%88%87-ig-%e7%9a%84%e6%88%91%e7%99%bc%e7%94%9f%e4%ba%86%e4%bb%80%e9%ba%bc%e8%ae%8a%e5%8c%96/"&gt;〈刪除 FB 和 IG 的我發生了什麼變化〉&lt;/a&gt;這篇文章寫於 2019 年，那並非我真正戒掉社群媒體的時刻，只是一個起點。我花了多年時間，甚至最後得用直接刪掉帳號這種極端的方式，才真正脫離社群媒體的影響。&lt;/p&gt;
&lt;p&gt;儘管花很多時間和力氣，我還是很開心 2019 年的我，當時和主角 Neo 在片頭一樣：對這個世界有一種說不出來、怪怪的感覺。&lt;/p&gt;
&lt;h2 id="怪怪的感覺是一切的開端"&gt;怪怪的感覺是一切的開端&lt;/h2&gt;
&lt;p&gt;那種說不出來的違和感，其實是一切改變的開始，開啟了我戒社群媒體的過程。&lt;strong&gt;我想每一個改變，其實就是從一個違和感開始吧？就是那種別人都覺得很正常，但是只有你自己知道，好像有哪裡怪怪的感覺。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;順帶一提，如果你成功戒掉了社群媒體，依然覺得哪裡有怪怪的感覺，那也很正常。這代表你發現有一個更大的牢籠罩著你，而基督信仰是那股走出牢籠、抵抗磁力的力量。&lt;/p&gt;
&lt;h2 id="結語"&gt;結語&lt;/h2&gt;
&lt;p&gt;最後我想說：經典不愧是經典！《駭客任務》是 1999 年上映的電影，當時社群媒體還沒有橫行世界。現在讀來，我不會說它是預言，只會說：一部經典，其實是擁有穿透時空的力量，並且可以讓不同世代的人有所共感。&lt;/p&gt;
&lt;p&gt;一起來看更多的經典吧！&lt;/p&gt;</content:encoded></item><item><title>推薦好用的語音輸入軟體 Typeless</title><link>https://alicehsu.blog/zh-tw/posts/2026/01/recommend-typeless/</link><pubDate>Wed, 21 Jan 2026 22:20:00 -0600</pubDate><guid>https://alicehsu.blog/zh-tw/posts/2026/01/recommend-typeless/</guid><description>當我說一個中英夾雜的句子，大多數時候它也沒問題。比如：「我覺得那家 ice cream shop 的 Gelato 很好吃，下次我想要吃 strawberry 口味的！」這句晶晶體的話就是用 Typeless 打的哈哈哈。</description><media:thumbnail url="https://alicehsu.blog/images/Post32home.jpg"/><media:content url="https://alicehsu.blog/images/Post32home.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post32home.jpg" type="image/jpeg"/><content:encoded>&lt;img
src="https://alicehsu.blog/images/Post32home.jpg"
loading="eager"
/&gt;&lt;div
class="alert alert-caution my-6 overflow-hidden rounded-lg transition-all duration-200 ease-out hover:-translate-y-0.5 hover:shadow-md"
style="background-color: color-mix(in srgb, var(--color-caution) 10%, transparent);
border-left-color: var(--color-caution);
--hover-bg: color-mix(in srgb, var(--color-caution) 15%, transparent);"
onmouseover="this.style.backgroundColor = this.style.getPropertyValue('--hover-bg')"
onmouseout="this.style.backgroundColor = 'color-mix(in srgb, var(--color-caution) 10%, transparent)'"
role="alert"
aria-labelledby="alert-0-title"&gt;
&lt;div
id="alert-0-content"
class="alert-content px-6 pb-6 py-6 items-center justify-between "&gt;
&lt;div class="prose prose-sm text-foreground/90 max-w-none"&gt;
&lt;p&gt;這篇文章不是業配文，純粹是熱情心得文，不過如果 Typeless 想贊助我也是可以的啦！&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;p&gt;今天想來推薦一款對我幫助很大的語音輸入軟體，叫作 Typeless。&lt;/p&gt;
&lt;p&gt;會知道 Typeless 是因為看了&lt;a href="https://readingoutpost.com/typeless/"target="_blank"
&gt;瓦基的文章&lt;/a&gt;（而瓦基又是看了另外一個電子報作家錄的影片），才知道有這一款語音輸入的軟體。&lt;/p&gt;
&lt;p&gt;Typeless 是一個尊重使用者隱私權的軟體，標榜資料上傳到伺服器處理完下載到你的電腦後，就會立刻銷毀伺服器上的資料，也不會拿你的資料來訓練他們的語言模型。你的資料只會存在你的裝置。Typeless 可以設定語言輸出為繁體中文，這點聽瓦基說比只能產生簡體中文的 Whisperflow 好用。我自己使用 Typeless 的過程中，它大部分是產出繁體，不過偶爾會出現簡體，是個奇怪的 bug。不過我覺得瑕不掩瑜，它對我的幫助比這個缺點多上許多。&lt;/p&gt;
&lt;h2 id="對我的幫助"&gt;對我的幫助&lt;/h2&gt;
&lt;h3 id="一讓我的手休息"&gt;一、讓我的手休息&lt;/h3&gt;
&lt;p&gt;我的手受傷了好一段時間，正在長期休養中。對我來說，Typeless 真的出現得非常及時，讓我可以「講」文章，而不需要一直「打」文章，手能夠多休息。&lt;/p&gt;
&lt;h3 id="二提高寫作效率"&gt;二、提高寫作效率&lt;/h3&gt;
&lt;p&gt;用說的真的比用寫的快很多。有時候講一個列表，它會自動幫你標上數字；當你思緒卡住，說了「嗯」跟「啊」，或是跟它說「哎呀我講錯了」，它也聽得懂，會幫你删掉贅詞和錯誤的內容。除此之外，當我說一個中英夾雜的句子，大多數時候它也沒問題。比如：「我覺得那家 ice cream shop 的 Gelato 很好吃，下次我想要吃 strawberry 口味的！」這句晶晶體的話就是用 Typeless 打的哈哈哈。&lt;/p&gt;
&lt;h3 id="三翻譯效率提升"&gt;三、翻譯效率提升&lt;/h3&gt;
&lt;p&gt;我的部落格都是自己先用中文寫成，再用 AI 軟體翻成英文（之後會再由我編輯、校正）。以往都需要先把文章貼到 ChatGPT，翻譯完再貼回我的 VS Code。使用 Typeless，我就不需要來回切換不同軟體，只要複製一份中文文章，選取文章並按下快捷鍵，說：「請幫我翻譯成英文。」經過幾秒後，它就能直接在原地產出文章。&lt;/p&gt;
&lt;p&gt;除此之外，我必須提一下它的翻譯品質。我覺得 ChatGPT 有時候翻得並沒有很好，我常常需要給很多的指令，讓它比較好轉換中英文之間的差異（包括文法和慣用語），不過，還是需要我大量校正與修改。Typeless 的語言模型就非常厲害了，不僅不太需要修改，還常常讓我嘆為觀止。以下是幾個例子：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://alicehsu.blog/zh-tw/posts/2026/01/lets-go-crocheting-little-cutties/"&gt;〈鉤！鉤！Go！那些小可愛們〉&lt;/a&gt;有一個核心用詞叫「織織不倦」，Typeless 譯為&lt;a href="https://alicehsu.blog/posts/2026/01/our-little-cutties-at-home/"&gt;「You could say we are hooked」&lt;/a&gt;。這邊雙關處理的方式令人驚艷！我原本取聲音上的雙關，以「織織不倦」來取代「孜孜不倦」。但這邊 Typeless 是以詞義來做雙關。Hook 原本是「鉤子」的意思，也可作為「鉤針」，Hooked 這個英文字是 Hook 的形容詞，有「著迷」或「愛上」的意思。不得不說，這個雙關真的是滿厲害的。&lt;/li&gt;
&lt;li&gt;&lt;a href="https://alicehsu.blog/zh-tw/posts/2026/01/let-go-of-the-burden/"&gt;〈放下重擔〉&lt;/a&gt;這篇詞，我原先有押韻。Typeless &lt;a href="https://alicehsu.blog/posts/2026/01/let-go-of-the-burden/"&gt;翻成英文&lt;/a&gt;之後，它竟然也能夠完美地押韻！而且還是用英詩常見的 AABB 格律。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;或許有人會覺得，將原本的中文詩用 AI 翻成英詩，真的有必要嗎？用 AI 翻譯詩，是不是就失去了詩的美好？我倒不覺得會失去詩原本的美好，反而可能讓詩有更豐富的樣貌。對我來說，這首中文詩（以及我所有的中文文章、音樂作品、圖像作品）完全沒有用 AI 生成，是我絞盡腦汁所得的作品。完成之後，Typeless 就像我的美國朋友，幫我把文章翻成道地的英文。&lt;/p&gt;
&lt;p&gt;扯遠了，以後有空再寫一篇相關的文章討論。&lt;/p&gt;
&lt;h3 id="四記帳變快了"&gt;四、記帳變快了&lt;/h3&gt;
&lt;p&gt;我和 Sam 有記帳的習慣。每一次去超市買完東西、拿到一疊收據，記帳對我們來說是一件很累人的事情。開始用 Typeless 之後，想說：「如果用講的就可以輸入，不就輕鬆很多嗎？」於是我們就開始嘗試用口說的方式來輸入品項與價錢的內容，發現速度超級快！&lt;/p&gt;
&lt;h2 id="使用方式"&gt;使用方式&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;電腦&lt;/strong&gt;：按著預設的快捷鍵 &lt;code&gt;Fn&lt;/code&gt; 開始說話，講完後放開，系統就會顯示你剛才說的內容；此外，你也可以使用免持系統 &lt;code&gt;Fn&lt;/code&gt; + &lt;code&gt;space&lt;/code&gt; 就不用一直按著。&lt;/p&gt;
&lt;p&gt;因為我 Mac 的 Delete 快捷鍵是 &lt;code&gt;Fn&lt;/code&gt; + &lt;code&gt;Delete&lt;/code&gt; 鍵，而每次一按到預設的 &lt;code&gt;Fn&lt;/code&gt; 快捷鍵，它都會觸發 Typeless，我就把 Typeless 的快捷鍵改成 &lt;code&gt;Control&lt;/code&gt; 了&lt;/p&gt;
&lt;p&gt;目前為止，我還沒碰過不能使用的介面。 VS Code、網頁搜尋欄、ChatGPT、Mac 的 Notes 以及 finder&amp;hellip;&amp;hellip;等等，都能用 Typeless。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;手機&lt;/strong&gt;：下載了 Typeless 的 App 之後，它會內建在手機鍵盤。需要打字時，切換鍵盤到 Typeless，接著點一下黑色麥克風，講完後再點一下就好了。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="使用技巧"&gt;使用技巧&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;有時候它需要比較長的句子才能明白你在講什麼。比如說，如果我要用台語講「蚵仔煎」。若我只講這幾個字，我的 Typeless 就會打出「我家 then」，不過如果台灣國語說：「我想要去夜市吃蚵仔煎 」，這樣「蚵仔煎」就會寫對字。&lt;/li&gt;
&lt;li&gt;Typeless 偶爾會自作聰明改掉你原本講的每個字，讓它覺得比較通順（不是我覺得比較通順）。如果你想要它一字不改你說的話，可以先跟它說：「&lt;strong&gt;請一字不漏地輸入以下我講的每一句、每一個字&lt;/strong&gt;：『我覺得非常開心，可以在這裡介紹 Typeless&amp;hellip;&amp;hellip;』」這樣就好啦！&lt;/li&gt;
&lt;li&gt;我們用試算表來記帳，需要品項和價格分開記在不同的儲存格。我們會先下指令，才輸入要記的內容，例如：「&lt;strong&gt;請你待會在品項和價錢之間用 tab 分開，不需要加上數字編號。&lt;/strong&gt; 番茄 2.99，泡麵 4.79&amp;hellip;&amp;hellip;」我們發現，一次講多一點品項，它比較不會有幻覺。缺點就是它會把指令語也輸進去，不過刪掉就好，不是太大的問題。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="費用"&gt;費用&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;免費版：一個禮拜可以講 4,000 字，對於不需大量文字產出的人，已經很夠用了。&lt;/li&gt;
&lt;li&gt;付費版：字數無限，且提供 30 天的試用期。買一年的話，一個月美金 12 元。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="結語"&gt;結語&lt;/h2&gt;
&lt;p&gt;使用 Typeless 之後，我才發現以前自己手寫筆記的學習效率並不高，反倒是因著用說的來做筆記，更容易理解學到的東西，並記住知識內容。&lt;/p&gt;
&lt;p&gt;推薦給大家！&lt;/p&gt;
&lt;p&gt;官方下載點：&lt;a href="https://www.typeless.com/"target="_blank"
&gt;Typeless&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title>數位極簡生活宣言</title><link>https://alicehsu.blog/zh-tw/posts/2026/01/digital-minimalism-manifesto/</link><pubDate>Sun, 18 Jan 2026 23:00:00 -0600</pubDate><guid>https://alicehsu.blog/zh-tw/posts/2026/01/digital-minimalism-manifesto/</guid><description>拍這張照片我真的會看嗎？還是告別式上會用到嗎？</description><media:thumbnail url="https://alicehsu.blog/images/Post31home.jpg"/><media:content url="https://alicehsu.blog/images/Post31home.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post31home.jpg" type="image/jpeg"/><content:encoded>&lt;img
src="https://alicehsu.blog/images/Post31home.jpg"
loading="eager"
/&gt;&lt;p&gt;這兩天刪手機照片刪紅了眼，其實一開始沒有想要大肆整理，但可能就跟清房間一樣吧：擦一個桌子就會想要拖地，拖了地就會想要整理床鋪。&lt;/p&gt;
&lt;p&gt;開始整理後，我發現越新的手機，照片就越肥。新手機一張照片大小是舊手機的三倍，可是我傳上 blog 前還是會把它壓縮到 720p 左右，我的手機又不能調整畫素，哎，實在是&amp;hellip;&amp;hellip;。&lt;/p&gt;
&lt;p&gt;於是我把近六年來的照片整理了一番，刪掉了大約 2000 張照片，清出了大概 12 GB 的空間。&lt;/p&gt;
&lt;p&gt;用一小撮時間拍照，結果用一大堆時間刪照片，想想實在很荒謬。雖然現在硬碟的容量很大又很便宜，可是把沒有整理好的資料丟進去、眼不見為淨，實在不是我的作風。&lt;/p&gt;
&lt;p&gt;花了太多時間整理之後，我痛定思痛，決定立一個「數位極簡生活宣言」，盡量從源頭管控資料量。除了包含照片外，也包含訊息和檔案，提醒自己，也供大家參考。&lt;/p&gt;
&lt;h2 id="數位極簡生活宣言"&gt;數位極簡生活宣言&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;我按下快門前要三思：為何要拍這張照片？拍這張照片我真的會看嗎？&lt;del&gt;還是告別式上會用到嗎？&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;我旅行完後要立刻整理，並刪除重複的照片&lt;/li&gt;
&lt;li&gt;我要隨手刪 Email、刪筆記、刪 App&lt;/li&gt;
&lt;li&gt;我要大方退出不再需要的工作性質群組&lt;/li&gt;
&lt;li&gt;我要大方刪掉不太認識的好友&lt;/li&gt;
&lt;li&gt;為了隱私的緣故，大部分的資料用硬碟備份就好&lt;/li&gt;
&lt;li&gt;非得要用雲端備份資料的話，不要把資料丟上不同的雲端服務，丟一個就好&lt;/li&gt;
&lt;li&gt;如果電腦裡的東西常常很亂，代表我要重新設計工作流或是檔案管理系統&lt;/li&gt;
&lt;li&gt;留下一筆資料前，先想想有沒有怦然心動的感覺？&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;讓我們一起來過數位極簡生活！&lt;/p&gt;</content:encoded></item><item><title>放下重擔</title><link>https://alicehsu.blog/zh-tw/posts/2026/01/let-go-of-the-burden/</link><pubDate>Fri, 16 Jan 2026 23:00:00 -0600</pubDate><guid>https://alicehsu.blog/zh-tw/posts/2026/01/let-go-of-the-burden/</guid><description>親愛的你　壓力很滿</description><media:thumbnail url="https://alicehsu.blog/images/Post30home.jpeg"/><media:content url="https://alicehsu.blog/images/Post30home.jpeg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post30home.jpeg" type="image/jpeg"/><content:encoded>&lt;p&gt;　親愛的你　壓力很滿&lt;/p&gt;
&lt;p&gt;　你有沒有　好好吃飯&lt;/p&gt;
&lt;p&gt;　有好多事　令你很煩&lt;/p&gt;
&lt;p&gt;　讓你不知　該怎麼辦&lt;/p&gt;
&lt;div style="width: 100%; justify-content: center; display: flex;"&gt;
&lt;div style="width: 0vw;"&gt;
&lt;hr style="margin: 0; --tw-gradient-via: var(--color-accent);"&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;　生命有時　彷彿枯乾&lt;/p&gt;
&lt;p&gt;　神的愛如　溪水潺潺&lt;/p&gt;
&lt;p&gt;　走著走著　步履蹣跚&lt;/p&gt;
&lt;p&gt;　要把難處　交給神管&lt;/p&gt;
&lt;div style="width: 100%; justify-content: center; display: flex;"&gt;
&lt;div style="width: 0vw;"&gt;
&lt;hr style="margin: 0; --tw-gradient-via: var(--color-accent);"&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;　你每天擔　勞苦重擔&lt;/p&gt;
&lt;p&gt;　以為不擔　就會完蛋&lt;/p&gt;
&lt;p&gt;　其實生命　沒那麼難&lt;/p&gt;
&lt;p&gt;　耶穌陪你　一起承擔&lt;/p&gt;
&lt;div style="width: 100%; justify-content: center; display: flex;"&gt;
&lt;div style="width: 0vw;"&gt;
&lt;hr style="margin: 0; --tw-gradient-via: var(--color-accent);"&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;　偶爾可以　出門遊玩&lt;/p&gt;
&lt;p&gt;　假日可以　出門爬山&lt;/p&gt;
&lt;p&gt;　你不需要　那麼蠻幹&lt;/p&gt;
&lt;p&gt;　有耶穌在　你不落單&lt;/p&gt;
&lt;style&gt;
#masonry-da31dfcddbe832840f56994a99bde57f-1 {
width: 100%;
}
#masonry-da31dfcddbe832840f56994a99bde57f-1 .masonry-container {
width: 100%;
position: relative;
}
#masonry-da31dfcddbe832840f56994a99bde57f-1 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-da31dfcddbe832840f56994a99bde57f-1 .masonry-item img {
width: 60%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-da31dfcddbe832840f56994a99bde57f-1 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-da31dfcddbe832840f56994a99bde57f-1 .glightbox:hover,
#masonry-da31dfcddbe832840f56994a99bde57f-1 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-da31dfcddbe832840f56994a99bde57f-1 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-da31dfcddbe832840f56994a99bde57f-1 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-da31dfcddbe832840f56994a99bde57f-1"
data-columns="1"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post30home.jpeg"
class="glightbox"
data-gallery="masonry-da31dfcddbe832840f56994a99bde57f-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post30home.jpeg"
alt="草稿"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post30home.jpeg"
data-gallery-alt="草稿"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;草稿&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-da31dfcddbe832840f56994a99bde57f-1';
const config = {
columns: 1 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;
&lt;hr&gt;
&lt;h3 id="後記"&gt;後記&lt;/h3&gt;
&lt;p&gt;最近在整理筆記，發現筆記本裡有這個有趣的作品，是 2024 年 6 月所寫的。當時我正熱衷於追《派對咖孔明》這部作品（現在已棄坑），裡頭有一個角色叫 KABE 太人，是個文字功底很強的饒舌歌手。最讓我驚艷的是：KABE 太人饒舌片段，從日文翻譯到中文的過程中，譯者竟能完美地在每個句尾押韻！&lt;/p&gt;
&lt;p&gt;受到這個作品的影響，某天腦中忽然蹦出了一個句子，於是也想挑戰一下，看看要如何完成一首全篇押韻的作品，最後就寫了這一篇像 rap 的詞。說不定哪一天可以譜成曲，就先放在部落格做紀念。&lt;/p&gt;</content:encoded></item><item><title>讀梁實秋先生〈罵人的藝術〉</title><link>https://alicehsu.blog/zh-tw/posts/2026/01/the-art-of-creative-insults/</link><pubDate>Thu, 15 Jan 2026 22:00:00 -0600</pubDate><guid>https://alicehsu.blog/zh-tw/posts/2026/01/the-art-of-creative-insults/</guid><description>你要罵人，要挑一個無論在什麼方面都勝過你的人罵，才不吃虧。</description><media:thumbnail url="https://alicehsu.blog/images/Post29home.jpg"/><media:content url="https://alicehsu.blog/images/Post29home.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post29home.jpg" type="image/jpeg"/><content:encoded>&lt;img
src="https://alicehsu.blog/images/Post29home.jpg"
loading="eager"
/&gt;&lt;p&gt;最近讀了一篇有趣的文章，是&lt;a href="https://cws.nmtl.gov.tw/home/zh-tw/writer/593523?mark=%E6%A2%81%E5%AF%A6%E7%A7%8B"target="_blank"
&gt;梁實秋先生（1903-1987）&lt;/a&gt;所寫的〈罵人的藝術〉。&lt;/p&gt;
&lt;p&gt;作者開宗明義講得很清楚：世界上沒有一個不罵人的人，而選擇「要罵什麼」、「不罵什麼」、「怎麼罵」的過程，是非常道德的。想罵人卻不罵，容易氣到自己、讓身體出毛病，所以，不罵人大可不必。但至於要怎麼罵，這可就有智慧與藝術了。&lt;/p&gt;
&lt;p&gt;這篇文章短小精鍊，作者舉了十個點，並提出有趣的分析和辯證，十分推薦大家去看原文。我就在此稍稍分享幾個點。&lt;/p&gt;
&lt;p&gt;梁實秋先生說，你要罵人，要挑一個無論在什麼方面都勝過你的人罵，才不吃虧。他願意回罵你，代表他看你是同一個層級，所以才回罵。&lt;/p&gt;
&lt;blockquote
class="border-primary bg-muted/30 hover:bg-muted/40 my-6 rounded-r-lg border-l-4 py-4 pr-4 pl-6 transition-all duration-200 ease-out hover:translate-x-1"&gt;
&lt;div class="prose prose-sm max-w-none"&gt;
&lt;p&gt;你罵大人物，就怕他不理你；他一回罵你，就算罵著了。因為身份相同的人才肯對罵。&lt;/p&gt;
&lt;/div&gt;
&lt;/blockquote&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;p&gt;他也說，罵人要含蓄，目的是讓人後知後覺：一開始不覺得被罵，等他慢慢回想後，才發現這不是好話。出言典雅有助於達到此目的，並且，最好還引用對方講過的話。&lt;/p&gt;
&lt;p&gt;此外，罵人最忌浮躁。最下等的罵人就是潑婦罵街。比較高級的罵人法，是等對方罵你罵得累，再說他一兩句、冷笑幾聲，就能氣死他。&lt;/p&gt;
&lt;p&gt;最後，作者揭露寫此文的目的：其實除了教人罵人，同時也讓讀者了解罵人者的心態是什麼，忽然有個反轉，挺有意思的。&lt;/p&gt;
&lt;h2 id="我的心得"&gt;我的心得&lt;/h2&gt;
&lt;p&gt;我從沒想過，原來罵人還可以有這麼多面向，算是長見識了。&lt;/p&gt;
&lt;p&gt;以上述標準來看現實生活中愛罵人的人，忽然覺得他們其實挺沒智慧：要嘛吵得臉紅脖子粗，要嘛出言不遜，實在不聰明。&lt;/p&gt;
&lt;p&gt;現在，面對一些莫名其妙來罵我的人，我可以有更好的方法應對；也曉得，原來在那些人眼中，我可是個大人物呢！哈哈哈。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;梁實秋（秋郎）。〈罵人的藝術〉。《罵人的藝術》，新月書店，1927 年，頁 1–10。&lt;/p&gt;
&lt;p&gt;延伸閱讀：&lt;a href="https://www.taiwan-panorama.com/zh/Articles/Details?Guid=b767e5d1-381c-434a-91f3-2626977e2822&amp;amp;langId=1&amp;amp;CatId=8&amp;amp;postname=%E5%A4%A7%E5%B8%AB%EF%BC%8C%E6%9C%AA%E6%9B%BE%E9%9B%A2%E5%B8%AD%E2%80%94%E2%80%94%E8%A8%98%E6%A2%81%E5%AF%A6%E7%A7%8B%E5%85%88%E7%94%9F%E6%96%87%E5%AD%B8%E6%88%90%E5%B0%B1%E7%A0%94%E8%A8%8E%E6%9C%83"target="_blank"
&gt;大師，未曾離席——記梁實秋先生文學成就研討會&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Thumbnail and Banner: Icons by &lt;a href="https://icon-sets.iconify.design/?query=face&amp;#43;to&amp;#43;face"target="_blank"
&gt;Game-Icons&lt;/a&gt;, licensed under CC BY 3.0. Modified by Alice Hsu.&lt;/p&gt;</content:encoded></item><item><title>雪人融化史</title><link>https://alicehsu.blog/zh-tw/posts/2026/01/the-melting-of-a-snowman/</link><pubDate>Tue, 13 Jan 2026 21:30:00 -0600</pubDate><guid>https://alicehsu.blog/zh-tw/posts/2026/01/the-melting-of-a-snowman/</guid><description>有個朋友說這不是雪人，是跳棋</description><media:thumbnail url="https://alicehsu.blog/images/Post/28/1.JPG"/><media:content url="https://alicehsu.blog/images/Post/28/1.JPG" medium="image"/><enclosure url="https://alicehsu.blog/images/Post/28/1.JPG" type="image/jpeg"/><content:encoded>&lt;p&gt;前陣子很冷，下了大雪，雪的厚度比陽台椅墊本人還高。我和 Sam 就堆起了&lt;a href="https://alicehsu.blog/zh-tw/posts/2025/12/%e8%81%96%e8%aa%95%e5%b0%8f%e6%8f%92%e7%95%ab/"&gt;雪人&lt;/a&gt;啦！
以下是雪人融化史：
&lt;style&gt;
#masonry-18dde906af385f3eb07c4fb622700c3a-1 {
width: 100%;
}
#masonry-18dde906af385f3eb07c4fb622700c3a-1 .masonry-container {
width: 100%;
position: relative;
}
#masonry-18dde906af385f3eb07c4fb622700c3a-1 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-18dde906af385f3eb07c4fb622700c3a-1 .masonry-item img {
width: 60%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-18dde906af385f3eb07c4fb622700c3a-1 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-18dde906af385f3eb07c4fb622700c3a-1 .glightbox:hover,
#masonry-18dde906af385f3eb07c4fb622700c3a-1 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-18dde906af385f3eb07c4fb622700c3a-1 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-18dde906af385f3eb07c4fb622700c3a-1 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-18dde906af385f3eb07c4fb622700c3a-1"
data-columns="1"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/28/1.JPG"
class="glightbox"
data-gallery="masonry-18dde906af385f3eb07c4fb622700c3a-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/28/1.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/28/1.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/28/2.JPG"
class="glightbox"
data-gallery="masonry-18dde906af385f3eb07c4fb622700c3a-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/28/2.JPG"
alt="總覺得大雪人很 rock，小雪人像丸子三兄弟"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/28/2.JPG"
data-gallery-alt="總覺得大雪人很 rock，小雪人像丸子三兄弟"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;總覺得大雪人很 rock，小雪人像丸子三兄弟&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/28/3.JPG"
class="glightbox"
data-gallery="masonry-18dde906af385f3eb07c4fb622700c3a-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/28/3.JPG"
alt="佛地魔雪人"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/28/3.JPG"
data-gallery-alt="佛地魔雪人"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;佛地魔雪人&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/28/4.JPG"
class="glightbox"
data-gallery="masonry-18dde906af385f3eb07c4fb622700c3a-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/28/4.JPG"
alt="哎呀，頭斷了"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/28/4.JPG"
data-gallery-alt="哎呀，頭斷了"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;哎呀，頭斷了&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-18dde906af385f3eb07c4fb622700c3a-1';
const config = {
columns: 1 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;
有個朋友說這不是雪人，是跳棋，被他這麼一說我也覺得真像，哈哈哈！&lt;/p&gt;
&lt;p&gt;其實我們只有滾一顆雪球而已。雪人的身體是先把積雪撥開（可見這個雪有多厚）、拍接實而成的，我們花比較多時間在做雪人的頭，把雪人的頭給滾好之後，才放上去。&lt;/p&gt;
&lt;p&gt;一開始做雪球，其實很難結成球。雪太鬆軟了，不具有黏性。後來我們噴了一些水，邊噴水邊把雪拍上去，然後在地上滾一滾、狂灑水，才終於成功。&lt;/p&gt;
&lt;p&gt;成功之後，我們又去撿了兩根樹枝插上去。想了一想，總覺得臉上還缺了什麼，剛好那週有買紅蘿蔔，於是從冰箱選了一根插上去。覺得哎呀，真是可愛！&lt;/p&gt;
&lt;p&gt;做完了大雪人，隔天興致勃勃的我又堆了三顆雪球變成小雪人。有了小雪人加入，讓大雪人不再顯得無依無靠。&lt;/p&gt;
&lt;p&gt;這兩隻雪人就在我家陽台肩並肩待了好幾週，後來天氣漸漸回暖，他們兩人（？）也就慢慢地跟我們說再見。&lt;/p&gt;
&lt;p&gt;原本我想，就讓那條紅蘿蔔待在陽台上吧，可能有小松鼠、小鳥之類的來我家陽台（雪國的動物不怕冷），就給它們當零食。結果等了許久都沒有誰願意光顧那條紅蘿蔔。有一天，我覺得這樣下去也不是辦法，打開陽台門準備把它拎起來，丟進廚餘攪碎機處理。&lt;/p&gt;
&lt;p&gt;結果一拎起來，就知道為什麼沒有動物想吃它了。&lt;/p&gt;
&lt;p&gt;這條不斷結凍又解凍的紅蘿蔔，已經不是我記憶中的紅蘿蔔了。它變成了一條軟趴趴、所有細胞都壞死崩解的紅蘿蔔。觸感真的很可怕，到現在依然記憶猶新。&lt;/p&gt;
&lt;p&gt;明年，或者說之後，如果再堆雪人，我不會想再插紅蘿蔔了；不過插個樹枝，倒是還不錯。&lt;/p&gt;
&lt;p&gt;明年見了！雪人君！&lt;/p&gt;</content:encoded></item><item><title>讀余光中先生〈的的不休〉</title><link>https://alicehsu.blog/zh-tw/posts/2026/01/the-non-stop-de/</link><pubDate>Mon, 12 Jan 2026 23:30:00 -0600</pubDate><guid>https://alicehsu.blog/zh-tw/posts/2026/01/the-non-stop-de/</guid><description>的的的的的的的的的</description><media:thumbnail url="https://alicehsu.blog/images/Post27home.jpg"/><media:content url="https://alicehsu.blog/images/Post27home.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post27home.jpg" type="image/jpeg"/><content:encoded>&lt;img
src="https://alicehsu.blog/images/Post27home.jpg"
loading="eager"
/&gt;&lt;h2 id="前言"&gt;前言&lt;/h2&gt;
&lt;p&gt;一直以來想整理&lt;a href="https://cws.nmtl.gov.tw/home/zh-tw/writer/731827?mark=%E4%BD%99%E5%85%89%E4%B8%AD"target="_blank"
&gt;余光中先生&lt;/a&gt;所寫的〈的的不休〉，這回總算找到時間，可以好好書寫。雖然余光中先生主要談的是翻譯，不過我想，其建議並不侷限於翻譯，也同樣提醒了寫作者。遂整理文章摘要以及心得。&lt;/p&gt;
&lt;h2 id="的的不休在說什麼"&gt;〈的的不休〉在說什麼？&lt;/h2&gt;
&lt;p&gt;這篇文章寫於 1996 年 2 月，是余光中先生於香港中文大學翻譯學術會議的演說稿。余光中先生提及，五四運動以來，「的」這個字無所不在，幾乎變成一切形容詞的語尾。不僅是學生，連知名學者和作家都難以擺脫「的的不休」（45）。&lt;/p&gt;
&lt;p&gt;「的」這個字本來就很忙了，它在文法上擔任許多角色（45-46），包含：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;一般形容詞：比如「有趣的節目」&lt;/li&gt;
&lt;li&gt;是⋯⋯的：比如「他不來是對的」&lt;/li&gt;
&lt;li&gt;表從屬關係：比如「王家的長子」&lt;/li&gt;
&lt;li&gt;形容子句：例如「警察抓走的那個人，其實並不是小偷」&lt;/li&gt;
&lt;li&gt;表示身份：例如「做媽媽的」、「教書的」&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;除了上述功能之外，還有一些原因，讓它更常出現在文章裡。比如：現代人懶得區分「的」、「得」、「地」（46）；以及，英文字典的編譯者，只要是形容詞，就要加上「的」（55）。&lt;/p&gt;
&lt;p&gt;其實針對「的的不休」，余光中先生並沒有明確給出一些指導性原則，不過，他倒是援引了自己的翻譯，以及其他作家的文章和翻譯作為例子，來說明哪些是比較好的語句、哪些比較差，我姑且歸納原則如下：&lt;/p&gt;
&lt;h3 id="一使用中文既有的句法"&gt;一、使用中文既有的句法&lt;/h3&gt;
&lt;p&gt;比如：「An old, mad, blind, despised, and dying king.」&lt;/p&gt;
&lt;p&gt;(a) 不好的譯法：一位衰老的、瘋狂的、瞎眼的、被人蔑視的、垂死的君王&lt;/p&gt;
&lt;p&gt;(b) 他的翻譯：又狂又盲，眾所鄙視的垂死老王（48-49）&lt;/p&gt;
&lt;h3 id="二精鍊詞句"&gt;二、精鍊詞句&lt;/h3&gt;
&lt;p&gt;(a) 沒那麼好：白色的鴨、徐徐的划行、深深的水&lt;/p&gt;
&lt;p&gt;(b) 比較好：白鴨、徐徐划行、深水（54-55）&lt;/p&gt;
&lt;h3 id="三重新安排句子結構"&gt;三、重新安排句子結構&lt;/h3&gt;
&lt;p&gt;比如：「I know a girl whose mother is a pianist.」&lt;/p&gt;
&lt;p&gt;(a) 不好的譯法：「我認識其母親為鋼琴家的一個女孩。」&lt;/p&gt;
&lt;p&gt;(b) 好的譯法：「我認識一個女孩，她母親是鋼琴家。」（57）&lt;/p&gt;
&lt;h3 id="四取法於文言文"&gt;四、取法於文言文&lt;/h3&gt;
&lt;p&gt;比如：「Everything is the same, but you are not here, and I still am. In separation the one who goes away suffers less than the one who stays behind.」by Byron&lt;/p&gt;
&lt;p&gt;(a) 白話譯法：「一切如常，只是你走了，而我仍在此。兩人分手，遠行的人總不如留下的人這麼受苦。」&lt;/p&gt;
&lt;p&gt;(b) 文言譯法：「此間百凡如故，我仍留而君已去耳。行行生別離，去者不如留者神傷之甚也。」（錢鍾書譯）（58）&lt;/p&gt;
&lt;h2 id="我的心得"&gt;我的心得&lt;/h2&gt;
&lt;p&gt;針對為什麼會「的的不休」，除了上述英文字典的編譯者需要負點責任之外，對我來說，英文單字書也是原因之一。國高中階段，因著不斷將英文形容詞和「&amp;hellip;的」畫上連結，以至於寫翻譯題時，容易遇到句子裡有形容詞就加上「的」。長此以往，我發現自己寫中文文章也受此影響、的的不休。我滿好奇，如果以前多背一點文言文，或是多翻譯白話文至古文，不曉得是不是會好一點？或許有人會覺得，幹嘛要翻譯成古文？我們又不需要穿越到古代去。不過我倒覺得，既然我們翻譯了許多文言文，幹嘛不反過來試試看呢？&lt;/p&gt;
&lt;p&gt;重點不在於沒有古人可以對話，而是用來訓練思考變得凝練、清晰。&lt;/p&gt;
&lt;p&gt;在這篇文章裡，余光中先生也罵了很多知名作家。比如老舍的《駱駝祥子》有一段：&lt;/p&gt;
&lt;blockquote
class="border-primary bg-muted/30 hover:bg-muted/40 my-6 rounded-r-lg border-l-4 py-4 pr-4 pl-6 transition-all duration-200 ease-out hover:translate-x-1"&gt;
&lt;div class="prose prose-sm max-w-none"&gt;
&lt;p&gt;「體面的、要強的、好夢想的、利己的、個人的、健壯的、偉大的，祥子，不知陪著人送了多少回殯；不知道何時何地會埋起他自己來，埋起這墮落的，自私的，不幸的，社會病胎裡的產兒，個人主義的末路鬼！」&lt;/p&gt;
&lt;/div&gt;
&lt;/blockquote&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;p&gt;還有徐志摩〈我所知道的康橋〉：&lt;/p&gt;
&lt;blockquote
class="border-primary bg-muted/30 hover:bg-muted/40 my-6 rounded-r-lg border-l-4 py-4 pr-4 pl-6 transition-all duration-200 ease-out hover:translate-x-1"&gt;
&lt;div class="prose prose-sm max-w-none"&gt;
&lt;p&gt;「遠近的炊煙，成絲的、成縷的、成捲的、輕快的、遲重的、濃灰的、淡青的、慘白的，在靜定的朝氣裡漸漸的上騰，漸漸的不見，彷彿是朝來人們的祈禱，參差的翳入了天聽。」&lt;/p&gt;
&lt;/div&gt;
&lt;/blockquote&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;p&gt;余光中先生認真統計了這兩段文章各自有多少個「的」？其中，老舍 78 個字就有 12 個「的」，徐志摩 64 個字就有 14 個「的」，其中，也可見就連徐志摩也會「的」、「地」不分（55-56）。&lt;/p&gt;
&lt;p&gt;雖然余光中先生如此批評，不過我想有沒有可能，這些作家們大量使用「的」是想要創造某種特殊文風呢？&lt;/p&gt;
&lt;p&gt;我讀徐志摩，覺得在「遠近的炊煙」後面，接了大量有「的」的形容詞，彷彿在看一個慢動作電影：看見炊煙各種樣態、形式、顏色和速度。不過我讀老舍就比較累了，有這麼多形容詞在名詞前面，讀來實在辛苦，倒沒什麼文風可言。&lt;/p&gt;
&lt;p&gt;究竟作者是否為了創造文風，我們不得而知。不過我認為對寫作者而言：不管是刻意製造文風，或是創造凝練語句，兩種能力皆要具備。&lt;/p&gt;
&lt;h2 id="結語"&gt;結語&lt;/h2&gt;
&lt;p&gt;寫這篇文章時，我也忍不住一直用 &lt;code&gt;Cmd&lt;/code&gt; + &lt;code&gt;F&lt;/code&gt; 檢查我到底會不會寫太多「的」，也不斷調整、編輯語句。比如：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;做了大量的「古文翻白話」練習題 $\rightarrow$ 既然我們翻譯了許多文言文&lt;/li&gt;
&lt;li&gt;哪些是比較好的語句、哪些是比較差的語句 $\rightarrow$ 哪些是比較好的語句、哪些比較差&lt;/li&gt;
&lt;li&gt;而是用來訓練思考的凝練度 $\rightarrow$ 而是用來訓練思考變得凝練、清晰&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;我覺得這個過程挺好玩的，大家也不妨試試減少「的」的使用量吧！（啊，這句話有三個「的」 XD）&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;余光中。〈論的的不休——中文大學「翻譯學術會議」主題演說〉。《翻譯乃大道，譯者獨憔悴：余光中翻譯論集》，余幼珊編，九歌，2021 年，頁 45-61。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NB&lt;/strong&gt;: Due to the unique linguistic nature of the Chinese particle de (的), no English translation is provided.&lt;/p&gt;</content:encoded></item><item><title>換 Email 和 Handles 了！</title><link>https://alicehsu.blog/zh-tw/posts/2026/01/changed-emails-and-handles/</link><pubDate>Wed, 07 Jan 2026 21:00:00 -0600</pubDate><guid>https://alicehsu.blog/zh-tw/posts/2026/01/changed-emails-and-handles/</guid><description>@alicehsumusic / &lt;a href="mailto:alicehsumusic@gmail.com"&gt;alicehsumusic@gmail.com&lt;/a&gt; / &lt;a href="mailto:alicehsuwrites@gmail.com"&gt;alicehsuwrites@gmail.com&lt;/a&gt;</description><media:thumbnail url="https://alicehsu.blog/images/Post26home.jpg"/><media:content url="https://alicehsu.blog/images/Post26home.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post26home.jpg" type="image/jpeg"/><content:encoded>&lt;img
src="https://alicehsu.blog/images/Post26home.jpg"
loading="eager"
/&gt;&lt;p&gt;新年新氣象，為了重整形象（？），最近我將 YouTube 和 SoundCloud 的 handles 改了，也重新辦了兩個 Gmail 帳號。&lt;/p&gt;
&lt;p&gt;我的 YouTube 和 SoundCloud 的 handles，原本是 &lt;code&gt;@alice_h_hsu&lt;/code&gt;，現在是 &lt;code&gt;@alicehsumusic&lt;/code&gt;，一目瞭然，代表 Alice Hsu 在做音樂。&lt;/p&gt;
&lt;p&gt;至於 Gmail 帳號，原本我有一個信箱叫 alicemusicwonderland77，用來處理音樂相關的事務，兼收這個部落格的信，可是後來覺得太長、不夠專業，索性重新辦了一個叫作 &lt;a href="mailto:alicehsumusic@gmail.com"&gt;alicehsumusic@gmail.com&lt;/a&gt;，專門處理音樂方面的事務；此外，也申請了一個 Gmail 帳號 &lt;a href="mailto:alicehsuwrites@gmail.com"&gt;alicehsuwrites@gmail.com&lt;/a&gt;，專門處理部落格的來信與寫作相關事務，若寄信到首頁顯示的 &lt;a href="mailto:mail@alicehsu.blog"&gt;mail@alicehsu.blog&lt;/a&gt;，也會自動轉寄至此信箱。&lt;/p&gt;
&lt;p&gt;現在要找到不用加任何數字，還要看起來很專業帥氣的 Gmail 信箱，真的是不容易啊！好開心可以找到這兩個沒有人使用的帳號。&lt;/p&gt;
&lt;p&gt;簡而言之，聯繫我的方式：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;音樂相關：
請寄信到 &lt;a href="mailto:alicehsumusic@gmail.com"&gt;alicehsumusic@gmail.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;寫作、部落格相關：
請寄到 &lt;a href="mailto:alicehsuwrites@gmail.com"&gt;alicehsuwrites@gmail.com&lt;/a&gt; 或 &lt;a href="mailto:mail@alicehsu.blog"&gt;mail@alicehsu.blog&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;至於，如果我寫了一篇跟音樂相關的文章，而你想針對內容回應，那就請隨意 XD，反正，寄到上述任何一個信箱，收信的人都會是我。&lt;/p&gt;
&lt;p&gt;潛水的讀者快來和我打招呼吧！&lt;/p&gt;</content:encoded></item><item><title>鉤！鉤！Go！那些小可愛們</title><link>https://alicehsu.blog/zh-tw/posts/2026/01/lets-go-crocheting-little-cutties/</link><pubDate>Tue, 06 Jan 2026 21:30:00 -0600</pubDate><guid>https://alicehsu.blog/zh-tw/posts/2026/01/lets-go-crocheting-little-cutties/</guid><description>織織不倦</description><media:thumbnail url="https://alicehsu.blog/images/Post/25/8.JPG"/><media:content url="https://alicehsu.blog/images/Post/25/8.JPG" medium="image"/><enclosure url="https://alicehsu.blog/images/Post/25/8.JPG" type="image/jpeg"/><content:encoded>&lt;div
class="alert alert-caution my-6 overflow-hidden rounded-lg transition-all duration-200 ease-out hover:-translate-y-0.5 hover:shadow-md"
style="background-color: color-mix(in srgb, var(--color-caution) 10%, transparent);
border-left-color: var(--color-caution);
--hover-bg: color-mix(in srgb, var(--color-caution) 15%, transparent);"
onmouseover="this.style.backgroundColor = this.style.getPropertyValue('--hover-bg')"
onmouseout="this.style.backgroundColor = 'color-mix(in srgb, var(--color-caution) 10%, transparent)'"
role="alert"
aria-labelledby="alert-0-title"&gt;
&lt;div
id="alert-0-content"
class="alert-content px-6 pb-6 py-6 items-center justify-between "&gt;
&lt;div class="prose prose-sm text-foreground/90 max-w-none"&gt;
&lt;p&gt;這是我的 2026 年 1 月份 &lt;a href="https://blogblog.club/party"target="_blank"
&gt;BlogBlog 同樂會&lt;/a&gt;投稿，歡迎大家一同來 Party！&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;p&gt;「嘿，Udon！有客人來囉！快來打招呼！」&lt;/p&gt;
&lt;p&gt;「等等，我去叫 Sesame 來一起打招呼！Se-sa-me ～～～」&lt;/p&gt;
&lt;p&gt;「 Udon 你好吵歐，我還想再睡一下&amp;hellip;&amp;hellip;」&lt;/p&gt;
&lt;p&gt;「快點啦 Udon 和 Sesame，今天客人特別來看你們耶！」&lt;/p&gt;
&lt;p&gt;「什麼什麼！我們來了！」&lt;/p&gt;
&lt;p&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/25/1.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/25/1.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
超可愛！有沒有！！&lt;/p&gt;
&lt;h2 id="我是如何入鉤針這個坑的"&gt;我是如何入鉤針這個坑的&lt;/h2&gt;
&lt;p&gt;我是怎麼入坑的呢？其實沒有人推，是自己跳下去的。&lt;/p&gt;
&lt;p&gt;有次逛市集，看到有人賣各種鉤針的作品，其中就有像 Udon 和 Sesame 這樣可愛的小東西，一個要價四十五美元，當下好心動，不過想想又有點買不太下去，忽然靈光一閃：「不然我自己來做一隻好了！」於是就這樣入了坑。&lt;/p&gt;
&lt;p&gt;剛開始擔心這個新嗜好堅持不下去，於是去了實體的藝術用品店（現在已經倒掉的 JOANN QQ），先買了一根 2.5 mm 的針，以及少少的毛線，看 YouTube 從基本針法開始學。這當中就屬艾織老師講解得最清楚了，她的初學者影片畫面拍得很仔細，而且口條清晰，非常好懂。於是，從平面開始學習織一塊小布，又學著織了一堆小球，接著挑戰織小貓貓，覺得還可以，就開始了織大貓貓的 Project 啦！&lt;/p&gt;
&lt;p&gt;這個坑越織越深，而且影響力甚大，Sam 看我織也忍不住一起學。他織了 Udon，我織了 Sesame；他織了兩隻小恐龍，我織了小烏龜和帽子；聖誕節前織了聖誕樹，春天之際織了花花，可謂「織織不倦」，哈哈哈。&lt;/p&gt;
&lt;style&gt;
#masonry-64793406a751a0b48d1d90a4bb090fe8-1 {
width: 100%;
}
#masonry-64793406a751a0b48d1d90a4bb090fe8-1 .masonry-container {
width: 100%;
position: relative;
}
#masonry-64793406a751a0b48d1d90a4bb090fe8-1 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 15px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-64793406a751a0b48d1d90a4bb090fe8-1 .masonry-item img {
width: 90%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-64793406a751a0b48d1d90a4bb090fe8-1 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-64793406a751a0b48d1d90a4bb090fe8-1 .glightbox:hover,
#masonry-64793406a751a0b48d1d90a4bb090fe8-1 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-64793406a751a0b48d1d90a4bb090fe8-1 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-64793406a751a0b48d1d90a4bb090fe8-1 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-64793406a751a0b48d1d90a4bb090fe8-1"
data-columns="3"
data-gutter="15"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/25/2.JPG"
class="glightbox"
data-gallery="masonry-64793406a751a0b48d1d90a4bb090fe8-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/25/2.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/25/2.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/25/3.JPG"
class="glightbox"
data-gallery="masonry-64793406a751a0b48d1d90a4bb090fe8-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/25/3.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/25/3.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/25/4.JPG"
class="glightbox"
data-gallery="masonry-64793406a751a0b48d1d90a4bb090fe8-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/25/4.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/25/4.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/25/5.JPG"
class="glightbox"
data-gallery="masonry-64793406a751a0b48d1d90a4bb090fe8-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/25/5.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/25/5.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/25/6.jpg"
class="glightbox"
data-gallery="masonry-64793406a751a0b48d1d90a4bb090fe8-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/25/6.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/25/6.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/25/7.jpg"
class="glightbox"
data-gallery="masonry-64793406a751a0b48d1d90a4bb090fe8-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/25/7.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/25/7.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-64793406a751a0b48d1d90a4bb090fe8-1';
const config = {
columns: 3 ,
gutter: 15 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;
&lt;h2 id="鉤針的好處"&gt;鉤針的好處&lt;/h2&gt;
&lt;h3 id="一成本極低"&gt;一、成本極低&lt;/h3&gt;
&lt;p&gt;如上文所述，需要的東西其實並不多，只有：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;毛線&lt;/li&gt;
&lt;li&gt;鉤針（棒針需要兩根棒子，而鉤針是只有一根鈍頭的鉤子）&lt;/li&gt;
&lt;li&gt;記號扣（用來標記針目的東西，別用別針，會刺到手，別問我是怎麼知道的。）&lt;/li&gt;
&lt;li&gt;剪刀（家家戶戶都有的東西）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/25/9.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/25/9.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;如果你想織填充玩偶的話，需要另外買：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;娃娃專用眼睛或針線&lt;/li&gt;
&lt;li&gt;大頭針（暫時固定娃娃的手腳，以用來確認該織上四肢的針目）&lt;/li&gt;
&lt;li&gt;棉花&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你一開始想挑戰填充玩偶，或是顏色比較多的織物，可以買廠商配好的鉤針材料包（crochet kit），這樣就不需要自己配色，也不用買一大堆材料。不過它單價比較高，可自行斟酌。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;備註&lt;/strong&gt;：我買了毛線架，後來覺得沒有必要，可能我買的毛線架不夠重吧，織著織著毛線架常常倒掉，可以不用買。&lt;/p&gt;
&lt;h3 id="二上手容易"&gt;二、上手容易&lt;/h3&gt;
&lt;p&gt;YouTube 有一大堆免費的教學影片，推薦從&lt;a href="https://www.youtube.com/@EvelinesCrochet"target="_blank"
&gt;艾織&lt;/a&gt;老師的&lt;a href="https://youtube.com/playlist?list=PLJZs-ZBpJ2IXYB61RLnqRWcIwQJlHHrrb&amp;amp;si=ANUvBvf7VGL_jyOd"target="_blank"
&gt;基礎針法教學影片&lt;/a&gt;開始看。學好基本的針法，之後就易如反掌了。有些東西看來複雜，其實根本原理很簡單。比如説貓咪和小恐龍，都是先織好身體，再織手腳，最後把它們縫起來。並且，這項技能和騎腳踏車一樣，久久沒織，依舊能容易回想起來。&lt;/p&gt;
&lt;h3 id="三送禮自用兩相宜"&gt;三、送禮自用兩相宜&lt;/h3&gt;
&lt;p&gt;鉤針作品真的用處多多：可以織個小球給貓玩、織個小動物給小孩玩、織個小可愛給自己玩。家裡的牆壁有點空？織個花朵裝飾牆壁吧！一直很想要某個特定顏色或花樣的衣物但找不到？自己設計織圖織給自己穿吧！送禮的話，有誰會不愛一個親手織的小東西呢？手作的溫度是難以取代的。&lt;/p&gt;
&lt;h3 id="四打發時間的健康嗜好"&gt;四、打發時間的健康嗜好&lt;/h3&gt;
&lt;p&gt;一直覺得沒事就滑手機、滑社群很不健康，不過，不這樣又不知道還可以幹嘛？跟你說個小秘密：你可以開始織東西！相較於滑手機，滑完後什麼都沒留下，織東西織完後，會長出一隻可愛的小狐狸、小松鼠，或是帶給人溫暖的圍巾，那種療癒感是難以言喻的。並且，相較於滑社群容易上癮、停不下來，織東西不會上癮，你能輕易放下半成品去做其他的事情。除此之外，鉤針是個哪裡都能進行的活動，只要塞顆毛線和鉤針在包包或袋子裡，出門等車、跑銀行、通勤，隨處都可織。&lt;/p&gt;
&lt;p&gt;鉤針和身心健康到底有什麼關聯呢？有一篇收錄於 PubMed 的期刊回答了這個問題。&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; 2018 年，澳洲的研究者 Burns 以及 Van der Meer 在網路上的鉤針社團發了問卷，最後，收到的 8391 份有效問卷中，最多數的人（89.5%）覺得鉤針能帶給他們平靜。並且，鉤針對人產生的影響，清一色幾乎都是正向的（平靜、開心、有自信&amp;hellip;&amp;hellip;等等），只有鮮少的人會因鉤針產生負面情緒（有壓力、沒價值感和焦慮只占 2.1%、0.5% 以及 0.4%）。除此之外，也有人會用鉤針來幫助他們面對人生中的重大事件，比如親友過世、離婚或罹患重大疾病等。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.reddit.com/r/crochet/comments/1ep1b3k/the_mental_health_benefits_of_crocheting_arent/"target="_blank"
&gt;Reddit&lt;/a&gt; 上也有個版主在討論鉤針怎樣幫助他面對焦慮症：&lt;/p&gt;
&lt;blockquote
class="border-primary bg-muted/30 hover:bg-muted/40 my-6 rounded-r-lg border-l-4 py-4 pr-4 pl-6 transition-all duration-200 ease-out hover:translate-x-1"&gt;
&lt;div class="prose prose-sm max-w-none"&gt;
&lt;p&gt;每當這種情況（焦慮）發生時，我通常不是已經在鉤針，就是會拿起鉤針開始編織。說真的，鉤針編織會讓我感覺好很多；它真的能幫助我把那股緊繃不安的能量釋放出去。&lt;/p&gt;
&lt;/div&gt;
&lt;/blockquote&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;p&gt;下面也有人回應：&lt;/p&gt;
&lt;blockquote
class="border-primary bg-muted/30 hover:bg-muted/40 my-6 rounded-r-lg border-l-4 py-4 pr-4 pl-6 transition-all duration-200 ease-out hover:translate-x-1"&gt;
&lt;div class="prose prose-sm max-w-none"&gt;
&lt;p&gt;鉤針讓我可以專心在某件事情上，而不是一直陷在停不下來的想法裡。&lt;/p&gt;
&lt;/div&gt;
&lt;/blockquote&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;p&gt;有這樣能幫助你平靜和開心的嗜好，不試試看嗎？&lt;/p&gt;
&lt;h3 id="五老樂樂少樂樂獨樂樂眾樂樂"&gt;五、老樂樂、少樂樂、獨樂樂、眾樂樂&lt;/h3&gt;
&lt;p&gt;你以為鉤針只是老奶奶的興趣嗎？這樣想就太 low 啦，鉤針可是很潮的：你可以用鉤針織一幅畫、可以織包包、可以織超酷的衣服，搜尋欄上打 crochet art ，就能看到有許多年輕的藝術家用鉤針鉤織你從沒看過的酷東西（比如這顆&lt;a href="https://www.theblueelephants.com/crochet-heart-pattern/"target="_blank"
&gt;心臟&lt;/a&gt;，有夠酷！）&lt;/p&gt;
&lt;p&gt;除了自己織之外，一群人在一起也很適合鉤針。農曆新年即將要到了，和不熟的家人聚在一起很尷尬不知道要幹嘛嗎？可以一起織東西！這樣，每個人就會專注在手邊的鉤針大業，降低那些討厭話題出現的頻率，又因著彼此做同一件事，能達到一定程度的互動和關懷（「欸這個我不會織耶！你幫我看一下！」「啊，這裡就是要先穿進去再把線勾出來&amp;hellip;&amp;hellip;」）。除此之外，其實滿多地方都有鉤針社團，可以認識一些人，達到一定的社交量，也不致太多，是個 I 人友善的活動。&lt;/p&gt;
&lt;h3 id="六訓練創意和空間感被動收入"&gt;六、訓練創意和空間感＋被動收入&lt;/h3&gt;
&lt;p&gt;走過新手階段後，你可以不用亦步亦趨按照別人的織圖鉤織了，而是發揮創意，將自己獨一無二的創意織出來。到這個階段就不太容易了，得常常織了又拆、拆了又織，因著將腦中的圖轉換成 2D 或 3D 的物品，你能順便訓練自己的空間概念。有些人會將自己的設計圖（織圖）放上 &lt;a href="https://www.etsy.com/"target="_blank"
&gt;Etsy&lt;/a&gt; 賣，我覺得這滿聰明的：比起賣需要花許多時間力氣完成的作品，織圖雖然單價低，不過做一次放上網，就能不費力一直賣，不失為一個不錯的被動收入來源。&lt;/p&gt;
&lt;h2 id="鉤針適合什麼樣的人"&gt;鉤針適合什麼樣的人&lt;/h2&gt;
&lt;p&gt;綜上所述，鉤針適合以下這些人：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想省錢培養新嗜好的人&lt;/li&gt;
&lt;li&gt;想要改掉沒事滑社群的人&lt;/li&gt;
&lt;li&gt;通勤沒事做的人&lt;/li&gt;
&lt;li&gt;焦慮和憂鬱的人&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;想鍛鍊創意和空間感的人&lt;/li&gt;
&lt;li&gt;想要有被動收入的人&lt;/li&gt;
&lt;li&gt;想要有一點社交能量，卻不至太多的 I 人&lt;/li&gt;
&lt;li&gt;想要送出有溫度禮物的人&lt;/li&gt;
&lt;li&gt;家裡缺裝飾品、玩偶的人&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="結語"&gt;結語&lt;/h2&gt;
&lt;p&gt;快點入坑吧！&lt;/p&gt;
&lt;h2 id="後記"&gt;後記&lt;/h2&gt;
&lt;p&gt;一、&lt;/p&gt;
&lt;p&gt;之前就在 Canva 做好了這個影片，剛好藉此機會發布啦！這是 Udon 等待 Sesame 出生的照片合集，可愛吧～～
&lt;div
class="video-js-container"&gt;
&lt;video
data-setup="{&amp;#34;language&amp;#34;:&amp;#34;zh-TW&amp;#34;,&amp;#34;playbackRates&amp;#34;:[0.5,1,1.5,2]}"
width="100%"
height="100%"
class="video-js vjs-default-skin vjs-fluid"
controls
&gt;
&lt;source
src="https://alicehsu.blog/images/Post/25/Hello%20Sesame.mp4"
&gt;
&lt;/video&gt;
&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;二、&lt;/p&gt;
&lt;p&gt;寫這篇文章的過程中，Sam 把這隻大恐龍織出來了，有沒有很可愛！真的好大好好抱啊～～
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/25/8.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/25/8.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;Burns, P, and R Van Der Meer. &lt;a href="https://pubmed.ncbi.nlm.nih.gov/32245337/"target="_blank"
&gt;“Happy Hookers: findings from an international study exploring the effects of crochet on wellbeing.”&lt;/a&gt; Perspectives in public health vol. 141,3 (2021): 149-157. doi:10.1177/1757913920911961&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;鉤針不能也不應取代專業醫療或心理治療，有相關心理健康需求，請諮詢專業醫療或心理健康人員喔。&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content:encoded></item><item><title>麻油雞麵線</title><link>https://alicehsu.blog/zh-tw/posts/2026/01/sesame_oil_chicken_misua/</link><pubDate>Sat, 03 Jan 2026 19:30:00 -0600</pubDate><guid>https://alicehsu.blog/zh-tw/posts/2026/01/sesame_oil_chicken_misua/</guid><description>小時候有戶鄰居很喜歡煮麻油雞，常常大白天就能聞到香味，可謂「一家煮雞萬家香」。</description><media:thumbnail url="https://alicehsu.blog/images/Post24home.jpg"/><media:content url="https://alicehsu.blog/images/Post24home.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post24home.jpg" type="image/jpeg"/><content:encoded>&lt;p&gt;記憶中，家人其實不太煮麻油雞，不過，我對麻油雞的印象倒是不淺。小時候有戶鄰居很喜歡煮麻油雞，常常大白天就能聞到香味，可謂「一家煮雞萬家香」。&lt;/p&gt;
&lt;p&gt;大學時期，冬天總喜歡和好朋友們到學校後門的那條街去吃麻油雞麵線。那間店走路會到，就是遠了些，不過和朋友們一起聊天，在寒風中走路就不那麼辛苦。印象中，麵線和湯需要分開點，我們還會加份燙青菜，青菜是泡在麻油湯的高麗菜，非常地香。吃完之後身體都暖呼呼的，回宿舍的路又是上坡，回去的時候不只飽飽的，身子還會出汗，可以抵禦北部濕冷的天氣。&lt;/p&gt;
&lt;p&gt;來美國後，在教會遇到有個之前做餐飲的阿姨，她一時興起想分享手藝給我們這群小朋友，於是開放點餐：「想學什麼菜就跟阿姨說！」因此，某天下午我們聚在一起，和阿姨學包水晶餃、煮麻油雞、煎月亮蝦餅&amp;hellip;&amp;hellip;等等，煮得不亦樂乎。&lt;/p&gt;
&lt;p&gt;前陣子非常地冷，約攝氏負十幾度吧。有天心血來潮，忽然想吃麻油雞麵線，也想到之前和阿姨學的食譜還留著，就和 Sam 去超市買了食材回來煮。我們稍微調整了食譜，拿掉了不喜歡的枸杞和紅棗，加入了高麗菜。成品非常滿意！在異國吃到台味滿滿的料理還是滿感動的。
&lt;style&gt;
#masonry-5bdfa41e919bd6fad66519a76ea1514f-1 {
width: 100%;
}
#masonry-5bdfa41e919bd6fad66519a76ea1514f-1 .masonry-container {
width: 100%;
position: relative;
}
#masonry-5bdfa41e919bd6fad66519a76ea1514f-1 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-5bdfa41e919bd6fad66519a76ea1514f-1 .masonry-item img {
width: 60%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-5bdfa41e919bd6fad66519a76ea1514f-1 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-5bdfa41e919bd6fad66519a76ea1514f-1 .glightbox:hover,
#masonry-5bdfa41e919bd6fad66519a76ea1514f-1 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-5bdfa41e919bd6fad66519a76ea1514f-1 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-5bdfa41e919bd6fad66519a76ea1514f-1 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-5bdfa41e919bd6fad66519a76ea1514f-1"
data-columns="1"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post24home.jpg"
class="glightbox"
data-gallery="masonry-5bdfa41e919bd6fad66519a76ea1514f-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post24home.jpg"
alt="非常好吃！"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post24home.jpg"
data-gallery-alt="非常好吃！"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;非常好吃！&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-5bdfa41e919bd6fad66519a76ea1514f-1';
const config = {
columns: 1 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;&lt;/p&gt;
&lt;h3 id="麻油雞烹飪步驟"&gt;麻油雞烹飪步驟&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;用蔬菜油冷油煸薑片&lt;/li&gt;
&lt;li&gt;薑呈現金黃色後加入麻油繼續煸&lt;/li&gt;
&lt;li&gt;香味出來後，煎雞肉，雞皮朝下煎&lt;/li&gt;
&lt;li&gt;煎到雞皮呈現金黃色後，直接加米酒、兑熱水，大約 1:1，燉煮一個小時&lt;/li&gt;
&lt;li&gt;加入高麗菜，煮到稍微透明就可以了&lt;/li&gt;
&lt;li&gt;加鹽調味後即可出餐&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="加麵線"&gt;加麵線&lt;/h3&gt;
&lt;p&gt;我們買的麵線是五木的友白髮素麵，比記憶中的麵線細一些。我們用另一個鍋子煮麵，大概兩分鐘左右就可以撈起來到碗裡，再加入煮好的麻油雞湯和料就可以上桌了。&lt;/p&gt;</content:encoded></item><item><title>《生命是一份厚禮》讀後感</title><link>https://alicehsu.blog/zh-tw/posts/2025/12/%E7%94%9F%E5%91%BD%E6%98%AF%E4%B8%80%E4%BB%BD%E5%8E%9A%E7%A6%AE%E8%AE%80%E5%BE%8C%E6%84%9F/</link><pubDate>Wed, 31 Dec 2025 12:00:00 -0600</pubDate><guid>https://alicehsu.blog/zh-tw/posts/2025/12/%E7%94%9F%E5%91%BD%E6%98%AF%E4%B8%80%E4%BB%BD%E5%8E%9A%E7%A6%AE%E8%AE%80%E5%BE%8C%E6%84%9F/</guid><description>雋永的文字，不討拍取暖，更絲毫不見文人掉書袋的氣息。</description><media:thumbnail url="https://alicehsu.blog/images/Post23home.jpeg"/><media:content url="https://alicehsu.blog/images/Post23home.jpeg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post23home.jpeg" type="image/jpeg"/><content:encoded>&lt;img
src="https://alicehsu.blog/images/Post23home.jpeg"
loading="eager"
/&gt;&lt;p&gt;存在主義者說，生命是一片虛無；佛教徒說，前世所累積的業障由今生來還；唯有基督徒說，生命是上帝賜的一份厚禮。&lt;/p&gt;
&lt;p&gt;《生命是一份厚禮》由作者吳鯤生撰寫，是一本薄薄一百多頁圖文並茂的散文作品。文字淺顯，對生命的反思卻一點都不淺薄。思想的重量可見於作者的廣博閱讀，以及在生活中發現基督的覺察力。&lt;/p&gt;
&lt;blockquote
class="border-primary bg-muted/30 hover:bg-muted/40 my-6 rounded-r-lg border-l-4 py-4 pr-4 pl-6 transition-all duration-200 ease-out hover:translate-x-1"&gt;
&lt;div class="prose prose-sm max-w-none"&gt;
&lt;p&gt;如果『死亡』是座橋，橋的那頭是永恆：離別雖有傷感，可是在巨大的不捨之後，有更巨大的『再相遇』的把握。（頁 118–119）&lt;/p&gt;
&lt;/div&gt;
&lt;/blockquote&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;blockquote
class="border-primary bg-muted/30 hover:bg-muted/40 my-6 rounded-r-lg border-l-4 py-4 pr-4 pl-6 transition-all duration-200 ease-out hover:translate-x-1"&gt;
&lt;div class="prose prose-sm max-w-none"&gt;
&lt;p&gt;……可是，死亡忘了一樁事實：死是罪的結果，它只能夠拘禁犯了罪的人。所以，當有一天，一位『曾經凡事受過試探，與我們一樣，只是他沒有犯罪』的人，主動迎向十字架的酷刑，主動走進死亡的時候，『死亡』才發現它錯了，那位聖潔無罪的耶穌走進死亡的幽谷，與『死亡』正面交鋒。（頁 100）&lt;/p&gt;
&lt;/div&gt;
&lt;/blockquote&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;p&gt;《生命是一份厚禮》邀請讀者從生活小事上追尋生命的源頭。比如：作者描述自己因意外養了一隻狗狗，有了迫切回家的理由，進一步勾出讀者對「回家」的共感，最後闡發自己對永恆家鄉的渴望：&lt;/p&gt;
&lt;blockquote
class="border-primary bg-muted/30 hover:bg-muted/40 my-6 rounded-r-lg border-l-4 py-4 pr-4 pl-6 transition-all duration-200 ease-out hover:translate-x-1"&gt;
&lt;div class="prose prose-sm max-w-none"&gt;
&lt;p&gt;家鄉，是個召喚，是種嚮往，在我往墮落方向傾斜時，家鄉的嚮往拉住我、不放棄我。（頁 25）&lt;/p&gt;
&lt;/div&gt;
&lt;/blockquote&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;p&gt;雋永的文字，不討拍取暖，更絲毫不見文人掉書袋的氣息。《生命是一份厚禮》是作者吳鯤生透過文字所築的台階，期望讀者站在台階上，更接近基督的真光。&lt;/p&gt;
&lt;p&gt;參考書目：
吳鯤生：《生命是一份厚禮》，新北市：校園書房，2018。&lt;/p&gt;
&lt;p&gt;購書連結：&lt;a href="https://www.books.com.tw/products/0010807841"target="_blank"
&gt;博客來&lt;/a&gt; / &lt;a href="https://shop.campus.org.tw/ProductDetails.aspx?productID=000544689"target="_blank"
&gt;校園書房&lt;/a&gt; / &lt;a href="https://www.taaze.tw/products/11316450170.html"target="_blank"
&gt;TAAZE 讀冊&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="後記"&gt;後記&lt;/h3&gt;
&lt;p&gt;這篇文章在 2020 年 7 月 2 日於 Medium 發表。是繼&lt;a href="https://alicehsu.blog/zh-tw/posts/2025/09/%e5%88%aa%e6%8e%89-fb-%e8%88%87-ig-%e7%9a%84%e6%88%91%e7%99%bc%e7%94%9f%e4%ba%86%e4%bb%80%e9%ba%bc%e8%ae%8a%e5%8c%96/"&gt;〈刪掉 FB 與 IG 的我，發生了什麼變化?〉&lt;/a&gt;之後，從 Medium 搬家過來的第二篇、也是最後一篇文章，經校訂和排版後重新張貼於部落格。至此，從 Medium 搬家完畢，Bye Bye！Medium！&lt;/p&gt;
&lt;style&gt;
#masonry-cc13b4b10613e71609d3eaa694917180-1 {
width: 100%;
}
#masonry-cc13b4b10613e71609d3eaa694917180-1 .masonry-container {
width: 100%;
position: relative;
}
#masonry-cc13b4b10613e71609d3eaa694917180-1 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 10px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-cc13b4b10613e71609d3eaa694917180-1 .masonry-item img {
width: 100%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-cc13b4b10613e71609d3eaa694917180-1 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-cc13b4b10613e71609d3eaa694917180-1 .glightbox:hover,
#masonry-cc13b4b10613e71609d3eaa694917180-1 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-cc13b4b10613e71609d3eaa694917180-1 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-cc13b4b10613e71609d3eaa694917180-1 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-cc13b4b10613e71609d3eaa694917180-1"
data-columns="2"
data-gutter="10"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/23/1.png"
class="glightbox"
data-gallery="masonry-cc13b4b10613e71609d3eaa694917180-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/23/1.png"
alt="截圖以茲紀念。"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/23/1.png"
data-gallery-alt="截圖以茲紀念。"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;截圖以茲紀念。&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-cc13b4b10613e71609d3eaa694917180-1';
const config = {
columns: 2 ,
gutter: 10 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;</content:encoded></item><item><title>自架部落格的優缺點</title><link>https://alicehsu.blog/zh-tw/posts/2025/12/pros-and-cons-of-self-hosted-blogs/</link><pubDate>Sun, 28 Dec 2025 17:00:00 -0600</pubDate><guid>https://alicehsu.blog/zh-tw/posts/2025/12/pros-and-cons-of-self-hosted-blogs/</guid><description>沒有人按讚、按愛心、拍手，我是為何而寫呢？</description><media:thumbnail url="https://alicehsu.blog/images/Post22home.jpeg"/><media:content url="https://alicehsu.blog/images/Post22home.jpeg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post22home.jpeg" type="image/jpeg"/><content:encoded>&lt;img
src="https://alicehsu.blog/images/Post22home.jpeg"
loading="eager"
/&gt;&lt;h2 id="前言"&gt;前言&lt;/h2&gt;
&lt;p&gt;今年 10 月 5 日此部落格上線後，已經過了兩個多月，即將滿三個月了。自從有了這個地方，總是有股說不出來的安穩感，啊，就像是長期租房的人，終於買了棟房子那樣的安穩吧。&lt;/p&gt;
&lt;p&gt;本來此篇題目訂為〈寫部落格的好處〉，後來想想，不對，「寫部落格」根本上還是「寫作」這件事，而「寫作」的根本意義還是「創作」，既然意義已於&lt;a href="https://alicehsu.blog/zh-tw/posts/2025/10/%e7%82%ba%e4%bb%80%e9%ba%bc%e8%a6%81%e5%89%b5%e4%bd%9c/"&gt;〈為什麼要創作？〉&lt;/a&gt;這篇文章稍稍提及，那麼，此文就不必重複，而是著重討論「自架部落格」這個媒介的優缺點。&lt;/p&gt;
&lt;h2 id="缺點"&gt;缺點&lt;/h2&gt;
&lt;p&gt;先說缺點好了。&lt;/p&gt;
&lt;p&gt;自己架部落格的缺點就是學習曲線十分陡峭，對一個沒寫過程式、幾乎沒用過終端機的文科生來說，自架部落格的難度滿高的。往往要摸索好一陣子，才能搞懂架設網站的邏輯脈絡。敝人因受惠於有個會寫程式的先生，才得免去初期撞牆之痛苦。在此除了感謝 Sam ，也呼籲每個程式人：你們的才能得以讓家人朋友有地方發揮才華，若有時間精力，請不要吝惜幫助身邊的人架設部落格呀。&lt;/p&gt;
&lt;h2 id="優點"&gt;優點&lt;/h2&gt;
&lt;p&gt;好了，那麼來說說優點。&lt;/p&gt;
&lt;p&gt;欸？你說缺點就這樣？是的，缺點就這樣。而這個缺點是可以藉自身學習或親友幫助克服的，掌控權在你手上。&lt;/p&gt;
&lt;h3 id="絕對的擁有權"&gt;絕對的擁有權&lt;/h3&gt;
&lt;p&gt;首先，最明顯的優點即是作者本身對部落格有絕對的擁有權，只要你決定繼續開，部落格就不會被關站。小學時無名小站非常紅，還記得身邊的同學幾乎都有無名小站的帳號，彼此偶爾會串別人家門子，也會很好奇誰來我家。除此之外，為自己的部落格挑個漂亮的主題（我選的大概是楓紅吧）更是樂此不疲。小朋友的我，在裡頭寫了好幾篇文章，大多是為賦新詞強說愁，有些還上鎖，只給自己最好的朋友讀。當然啦，也有許多同學上鎖講其他人的壞話。&lt;/p&gt;
&lt;p&gt;不過，風光一時的無名小站，卻在 2013 年關閉了。當時我已經使用 Facebook 四年了，重心都在上面，對於無名關站沒什麼太大的感覺，想說 Facebook 也還不錯用。實在是，太年輕了啊，現在好奇當年的小 Alice 在部落格寫些什麼，都無從得知了。&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;反之，自架部落格不會隨著別人的商業決策而關閉，只要你想開，那就開；哪天不想經營了，撤掉便是。&lt;/p&gt;
&lt;h3 id="分享遊記的好方法"&gt;分享遊記的好方法&lt;/h3&gt;
&lt;p&gt;其次，是我寫&lt;a href="https://alicehsu.blog/zh-tw/posts/2025/12/%e8%a5%bf%e9%81%8a%e8%a8%98%e4%b8%80%e8%81%96%e5%9c%b0%e7%89%99%e5%93%a5%e4%b9%8b%e6%99%af%e9%bb%9e%e7%af%87/"&gt;〈西遊記〉&lt;/a&gt;系列文章時發現的：想與家人朋友分享旅遊的照片，直接丟部落格的連結給對方，是最不佔空間，以及能達成深度分享的好方法。對方不需因為你肥重的照片，而必須定期清理他的通訊軟體空間；除此之外，相較於直接在通訊軟體上寫詳細的旅遊心得，有疲勞轟炸對方的疑慮，在部落格上為圖片寫長文並不奇怪，你能好好為圖片附上有趣的註解，也能為這段經驗寫個深刻的反思。你說，我寫 FB 和 IG 不是也可以做到嗎？不過，你的朋友家人不見得有用這些社群媒體呀！（我就是你那位沒用 IG 的朋友）。&lt;/p&gt;
&lt;h3 id="版面配置自主性高"&gt;版面配置自主性高&lt;/h3&gt;
&lt;p&gt;再者，是許多人提到的：版面配置的自主性，自架部落格比起其他平台真是好太多了。&lt;/p&gt;
&lt;p&gt;使用社群媒體，或是別人搭建好的部落格服務，最大的缺點就是不能更改既有的版面配置設定，甚者，平台改版的時候，改得好看或難看都只能被動接受。&lt;/p&gt;
&lt;p&gt;很久很久以前我辦過 Medium 帳號，在上頭寫了兩篇文章，後來忙其他事情就沒繼續寫。有一天心血來潮，想說回去寫個文章好了，點進去發現：什麼！標題怎麼被改成醜到不行的斜體？而且我還不能改，我的眼睛好痛。Medium 比我的房東還霸道，我跟房東租房，他不能闖進我房間來；但我在 Medium 平台寫文章，Medium 有權闖進我房間，把牆壁漆成&lt;span style="color: #8400ffff;"&gt;大紫色&lt;/span&gt;我還不能說不。&lt;/p&gt;
&lt;style&gt;
#masonry-f7dfcc50676bb33621782e2192f07010-1 {
width: 100%;
}
#masonry-f7dfcc50676bb33621782e2192f07010-1 .masonry-container {
width: 100%;
position: relative;
}
#masonry-f7dfcc50676bb33621782e2192f07010-1 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 10px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-f7dfcc50676bb33621782e2192f07010-1 .masonry-item img {
width: 100%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-f7dfcc50676bb33621782e2192f07010-1 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-f7dfcc50676bb33621782e2192f07010-1 .glightbox:hover,
#masonry-f7dfcc50676bb33621782e2192f07010-1 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-f7dfcc50676bb33621782e2192f07010-1 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-f7dfcc50676bb33621782e2192f07010-1 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-f7dfcc50676bb33621782e2192f07010-1"
data-columns="2"
data-gutter="10"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/21/1.png"
class="glightbox"
data-gallery="masonry-f7dfcc50676bb33621782e2192f07010-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/21/1.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/21/1.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/21/2.png"
class="glightbox"
data-gallery="masonry-f7dfcc50676bb33621782e2192f07010-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/21/2.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/21/2.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-f7dfcc50676bb33621782e2192f07010-1';
const config = {
columns: 2 ,
gutter: 10 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;
&lt;p&gt;（高下立判，對吧？）&lt;/p&gt;
&lt;p&gt;自架部落格，不再受制於人之外，你可以開始做許多「出格」的事。比如說：可以自己畫&lt;a href="https://alicehsu.blog/zh-tw/posts/2025/12/%e8%81%96%e8%aa%95%e5%b0%8f%e6%8f%92%e7%95%ab/"&gt;聖誕插畫&lt;/a&gt;，跨「出格」子裝飾在部落格的角落；也可以自行決定部落格的每個元素，畫專屬自己的 Favicon（這個部落格的彩色微笑音符就是我自己畫的喔！）。並且，你能自行決定一篇文章是否添加圖片，若添加圖片要以何種形式呈現。不像 Instagram 發文，圖片是必要的一環，且必須先圖片、後文字；Facebook 則是先文字、後圖片；兩者都不能圖文交織。&lt;/p&gt;
&lt;p&gt;你的創意極其寶貴、獨一無二，不要把創意禁錮在 Facebook 那既有的 &lt;span style="color: #1877F2;"&gt;#1877F2 藍&lt;/span&gt;白牢服裡啊！&lt;/p&gt;
&lt;p&gt;並且，作者可以有系統地分類文章，讀者也能因此更容易明白作者對一個主題的看法。比如：你能從本站的&lt;a href="https://alicehsu.blog/zh-tw/categories/"&gt;「分類」&lt;/a&gt;裡，看到我針對不同主題所寫過的文章；也能點擊文章內的&lt;a href="https://alicehsu.blog/zh-tw/posts/2025/12/%e4%b8%80%e5%80%8b%e6%9c%89%e8%91%97%e9%99%bd%e5%85%89%e9%9a%8e%e6%a2%af%e7%9a%84%e8%a7%92%e8%90%bd/"&gt;橘色文字&lt;/a&gt;，跳轉到別的文章。這些功能是目前的社群媒體沒有的。&lt;/p&gt;
&lt;h3 id="不必有按讚按愛心拍手的功能"&gt;不必有「按讚」、「按愛心」、「拍手」的功能&lt;/h3&gt;
&lt;p&gt;最後，也是我覺得最重要的優點：在自己的部落格，你可以不加上「按讚」、「按愛心」、「拍手」的功能。&lt;/p&gt;
&lt;div
class="alert alert-tip my-6 overflow-hidden rounded-lg transition-all duration-200 ease-out hover:-translate-y-0.5 hover:shadow-md"
style="background-color: color-mix(in srgb, var(--color-tip) 10%, transparent);
border-left-color: var(--color-tip);
--hover-bg: color-mix(in srgb, var(--color-tip) 15%, transparent);"
onmouseover="this.style.backgroundColor = this.style.getPropertyValue('--hover-bg')"
onmouseout="this.style.backgroundColor = 'color-mix(in srgb, var(--color-tip) 10%, transparent)'"
role="alert"
aria-labelledby="alert-0-title"&gt;
&lt;div
class="
cursor-pointer
flex items-center justify-between px-6 py-6"
onclick="toggleAlert('alert-0')" role="button" tabindex="0"
aria-expanded="true" aria-controls="alert-0-content"
onkeydown="if(event.key==='Enter'||event.key===' '){toggleAlert('alert-0');event.preventDefault();}"
&gt;
&lt;div class="flex items-center gap-3"&gt;
&lt;h4
id="alert-0-title"
class="m-0 font-semibold text-foreground/90"&gt;
Fun Fact
&lt;/h4&gt;
&lt;/div&gt;
&lt;div
class="flex-shrink-0 transition-transform duration-200"
id="alert-0-chevron"&gt;
&lt;svg class="h-4 w-4"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7" /&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div
id="alert-0-content"
class="alert-content px-6 pb-6 items-center justify-between "&gt;
&lt;div class="prose prose-sm text-foreground/90 max-w-none"&gt;
&lt;p&gt;你知道嗎？其實 Facebook 一開始是沒有「按讚」的功能。這個按鍵是 Facebook 平台創立五年後，於 2009 年 2 月 9 日才加上去的，這個決策讓 Facebook 賺進大把鈔票。接著在 2016 年，食髓知味的他們又加上了六種情緒。&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;p&gt;這些機制讓讀者得以迅速表達非語言反應，作者也能快速接收別人的情緒或讚賞。不過，「快速」和「有效率」不見得對整體人類福祉「好」。在我看來，雖然文章的傳播速度快很多、很容易被看見，不過，方便卻容易讓人養成這樣的習慣：身為讀者，容易在讀一篇文章時就想給作者情緒反應，而非好好消化、理解對方在說什麼；身為作者，你容易以量化的讚來衡量自己的作品價值，甚至用讚數作為標準來創作。仔細想想，歷史上有許多繪畫、音樂、文學大師，生前其作品都不被待見，過世才被後人挖掘而發揚光大。如果當時就有社群媒體，他們都用別人的讚數來衡量自己作品的好壞，現在美術館只恐看不到幾幅梵谷的畫了。&lt;/p&gt;
&lt;p&gt;坦白說，以往在社群媒體發文，心情也會隨著誰按我讚、以及哪些人沒按讚起伏（使用社群媒體的你，摸著良心老實說，你是不是也會？）。而這樣的起伏會影響我寫下篇文章的狀態，我發現：自己寫文章越來越綁手綁腳，寫作的動力隨風飄搖。&lt;/p&gt;
&lt;p&gt;三個月前開始在自己的部落格寫文章，寫作變成一件比較純粹的事：&lt;strong&gt;沒有人按讚、按愛心、拍手，我是為何而寫呢？好像，可以比較是為了分享自己喜歡、覺得有趣、有價值和意義的東西而寫耶。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;我不敢說自己完全沒有私心，我也必須承認，有時候很希望自己的作品被看見（這也是為什麼這個部落格有&lt;a href="https://alicehsu.blog/zh-tw/portfolio/"&gt;「作品集」&lt;/a&gt;的頁面）。不過，在自己的部落格寫作，因著沒有那些愛心和讚的機制，寫作和寫曲的心情可以比較穩當。我能比較享受做事本身帶來的滿足感，而非因著別人的情緒回饋而患得患失。&lt;/p&gt;
&lt;p&gt;不過，請別誤會，我還是非常期待和讀者有所交流的，收到讀者的信我還是很開心。對我而言，正向有建設性的文字回饋，比起量化的讚和愛心有意義多了。&lt;/p&gt;
&lt;h2 id="快樂的農夫"&gt;快樂的農夫&lt;/h2&gt;
&lt;p&gt;關於自架部落格的優缺點差不多就說到這裡了。我也不確定這個部落格將來會長成什麼樣子？就如三個月前的自己，也想不到我的部落格會這麼五彩繽紛呢！就繼續寫寫字、畫畫圖，我不再是個&lt;a href="https://wiwi.blog/blog/internet-peasant"target="_blank"
&gt;網路佃農&lt;/a&gt;，而是擁有自己一畝田的農夫，在此地繼續快樂耕耘。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="後記"&gt;後記&lt;/h3&gt;
&lt;p&gt;寫完此篇文章後，越看越覺得像篇推坑文，如果你對自架部落格有興趣，歡迎去&lt;a href="https://blogblog.club/resources"target="_blank"
&gt;部落格俱樂部&lt;/a&gt;找資源喔！&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;其實可以透過 Internet Archive 的 Wayback Machine 試著找找看，不過我連帳號都忘了。如果你記得帳號可以按以下教學去找找看： &lt;a href="https://www.elle.com/tw/life/tech/g64365475/find-wretch-back/"target="_blank"
&gt;https://www.elle.com/tw/life/tech/g64365475/find-wretch-back/&lt;/a&gt;&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;這段歷史出自此篇報導： &lt;a href="https://apnews.com/article/like-button-facebook-history-book-89d00e73c7c6da500b06e251d44b858c"target="_blank"
&gt;https://apnews.com/article/like-button-facebook-history-book-89d00e73c7c6da500b06e251d44b858c&lt;/a&gt;&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content:encoded></item><item><title>作品集</title><link>https://alicehsu.blog/zh-tw/portfolio/</link><pubDate>Mon, 22 Dec 2025 16:30:00 -0600</pubDate><guid>https://alicehsu.blog/zh-tw/portfolio/</guid><description>&lt;p&gt;因手受傷，長期休養中，暫且不會更新。（2026/01/24）&lt;/p&gt;
&lt;h3 id="原創作品"&gt;原創作品&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;發表日期&lt;/th&gt;
 &lt;th&gt;曲名&lt;/th&gt;
 &lt;th&gt;演奏連結&lt;/th&gt;
 &lt;th&gt;琴譜&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;10-13-2025&lt;/td&gt;
 &lt;td&gt;Bell (Stage E. Piano)&lt;/td&gt;
 &lt;td&gt;&lt;a
 href="https://youtu.be/3qoF04GK2zI"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;
 &lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;

&lt;/svg&gt;&lt;/a&gt; / &lt;a
 href="https://soundcloud.com/alice_h_hsu/alice-hsu-bell-stage-e-piano-original-piano-composition"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;

 &lt;defs
 id="defs1" /&gt;
 &lt;sodipodi:namedview
 id="namedview1"
 pagecolor="#ffffff"
 bordercolor="#000000"
 borderopacity="0.25"
 inkscape:showpageshadow="2"
 inkscape:pageopacity="0.0"
 inkscape:pagecheckerboard="0"
 inkscape:deskcolor="#d1d1d1"
 inkscape:zoom="10.630554"
 inkscape:cx="14.721716"
 inkscape:cy="10.159395"
 inkscape:window-width="896"
 inkscape:window-height="729"
 inkscape:window-x="374"
 inkscape:window-y="38"
 inkscape:window-maximized="0"
 inkscape:current-layer="svg1" /&gt;
 &lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
 &lt;path
 d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
 id="path1"
 style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;

&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://alicehsu.blog/pdf/Bell.pdf"target="_blank"
&gt;下載&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;10-13-2025&lt;/td&gt;
 &lt;td&gt;Bell&lt;/td&gt;
 &lt;td&gt;&lt;a
 href="https://youtu.be/Z4o3uY5C2EI"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;
 &lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;

&lt;/svg&gt;&lt;/a&gt; / &lt;a
 href="https://soundcloud.com/alice_h_hsu/alice-hsu-bell-original-piano-composition"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;

 &lt;defs
 id="defs1" /&gt;
 &lt;sodipodi:namedview
 id="namedview1"
 pagecolor="#ffffff"
 bordercolor="#000000"
 borderopacity="0.25"
 inkscape:showpageshadow="2"
 inkscape:pageopacity="0.0"
 inkscape:pagecheckerboard="0"
 inkscape:deskcolor="#d1d1d1"
 inkscape:zoom="10.630554"
 inkscape:cx="14.721716"
 inkscape:cy="10.159395"
 inkscape:window-width="896"
 inkscape:window-height="729"
 inkscape:window-x="374"
 inkscape:window-y="38"
 inkscape:window-maximized="0"
 inkscape:current-layer="svg1" /&gt;
 &lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
 &lt;path
 d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
 id="path1"
 style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;

&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://alicehsu.blog/pdf/Bell.pdf"target="_blank"
&gt;下載&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;08-27-2025&lt;/td&gt;
 &lt;td&gt;Ruins&lt;/td&gt;
 &lt;td&gt;&lt;a
 href="https://youtu.be/RsftgIKy3LM"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;
 &lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;

&lt;/svg&gt;&lt;/a&gt; / &lt;a
 href="https://on.soundcloud.com/USjfFvWS2FYXasseaL"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;

 &lt;defs
 id="defs1" /&gt;
 &lt;sodipodi:namedview
 id="namedview1"
 pagecolor="#ffffff"
 bordercolor="#000000"
 borderopacity="0.25"
 inkscape:showpageshadow="2"
 inkscape:pageopacity="0.0"
 inkscape:pagecheckerboard="0"
 inkscape:deskcolor="#d1d1d1"
 inkscape:zoom="10.630554"
 inkscape:cx="14.721716"
 inkscape:cy="10.159395"
 inkscape:window-width="896"
 inkscape:window-height="729"
 inkscape:window-x="374"
 inkscape:window-y="38"
 inkscape:window-maximized="0"
 inkscape:current-layer="svg1" /&gt;
 &lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
 &lt;path
 d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
 id="path1"
 style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;

&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://alicehsu.blog/pdf/Ruins.pdf"target="_blank"
&gt;下載&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;07-01-2025&lt;/td&gt;
 &lt;td&gt;Bitter Sweet&lt;/td&gt;
 &lt;td&gt;&lt;a
 href="https://youtu.be/iFkaTUgE1PE"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;
 &lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;

&lt;/svg&gt;&lt;/a&gt; / &lt;a
 href="https://on.soundcloud.com/EUAzsPntLhmjrm2gCZ"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;

 &lt;defs
 id="defs1" /&gt;
 &lt;sodipodi:namedview
 id="namedview1"
 pagecolor="#ffffff"
 bordercolor="#000000"
 borderopacity="0.25"
 inkscape:showpageshadow="2"
 inkscape:pageopacity="0.0"
 inkscape:pagecheckerboard="0"
 inkscape:deskcolor="#d1d1d1"
 inkscape:zoom="10.630554"
 inkscape:cx="14.721716"
 inkscape:cy="10.159395"
 inkscape:window-width="896"
 inkscape:window-height="729"
 inkscape:window-x="374"
 inkscape:window-y="38"
 inkscape:window-maximized="0"
 inkscape:current-layer="svg1" /&gt;
 &lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
 &lt;path
 d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
 id="path1"
 style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;

&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://alicehsu.blog/pdf/Bitter%20Sweet.pdf"target="_blank"
&gt;下載&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;06-18-2025&lt;/td&gt;
 &lt;td&gt;Farewell&lt;/td&gt;
 &lt;td&gt;&lt;a
 href="https://youtu.be/Rx4R5YYzuEg"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;
 &lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;

&lt;/svg&gt;&lt;/a&gt; / &lt;a
 href="https://on.soundcloud.com/KXcNYTUocrhkzbLj8z"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;

 &lt;defs
 id="defs1" /&gt;
 &lt;sodipodi:namedview
 id="namedview1"
 pagecolor="#ffffff"
 bordercolor="#000000"
 borderopacity="0.25"
 inkscape:showpageshadow="2"
 inkscape:pageopacity="0.0"
 inkscape:pagecheckerboard="0"
 inkscape:deskcolor="#d1d1d1"
 inkscape:zoom="10.630554"
 inkscape:cx="14.721716"
 inkscape:cy="10.159395"
 inkscape:window-width="896"
 inkscape:window-height="729"
 inkscape:window-x="374"
 inkscape:window-y="38"
 inkscape:window-maximized="0"
 inkscape:current-layer="svg1" /&gt;
 &lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
 &lt;path
 d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
 id="path1"
 style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;

&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://alicehsu.blog/pdf/Farewell.pdf"target="_blank"
&gt;下載&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="鋼琴改編"&gt;鋼琴改編&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;發表日期&lt;/th&gt;
 &lt;th&gt;原創者&lt;/th&gt;
 &lt;th&gt;曲名&lt;/th&gt;
 &lt;th&gt;演奏連結&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;12-20-2025&lt;/td&gt;
 &lt;td&gt;John F. Wade / From William Sandy&amp;rsquo;s Christmas Carols, 1833 / John Stainer / Franz Grüber / French Carol&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://alicehsu.blog/pdf/Christmas%20Hymns%20Medley.pdf"target="_blank"
&gt;Christmas Hymns Medley&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;a
 href="https://www.youtube.com/watch?v=exz_3UsK_hk&amp;amp;t=4s"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;
 &lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;

&lt;/svg&gt;&lt;/a&gt; / &lt;a
 href="https://on.soundcloud.com/WAJOmUA4crqsWt0dp8"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;

 &lt;defs
 id="defs1" /&gt;
 &lt;sodipodi:namedview
 id="namedview1"
 pagecolor="#ffffff"
 bordercolor="#000000"
 borderopacity="0.25"
 inkscape:showpageshadow="2"
 inkscape:pageopacity="0.0"
 inkscape:pagecheckerboard="0"
 inkscape:deskcolor="#d1d1d1"
 inkscape:zoom="10.630554"
 inkscape:cx="14.721716"
 inkscape:cy="10.159395"
 inkscape:window-width="896"
 inkscape:window-height="729"
 inkscape:window-x="374"
 inkscape:window-y="38"
 inkscape:window-maximized="0"
 inkscape:current-layer="svg1" /&gt;
 &lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
 &lt;path
 d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
 id="path1"
 style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;

&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;11-25-2025&lt;/td&gt;
 &lt;td&gt;Fujii Kaze&lt;/td&gt;
 &lt;td&gt;Kirari&lt;/td&gt;
 &lt;td&gt;&lt;a
 href="https://www.youtube.com/watch?v=rIAMN3ULdX8"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;
 &lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;

&lt;/svg&gt;&lt;/a&gt; / &lt;a
 href="https://on.soundcloud.com/9POR1wvqA5q98GWS54"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;

 &lt;defs
 id="defs1" /&gt;
 &lt;sodipodi:namedview
 id="namedview1"
 pagecolor="#ffffff"
 bordercolor="#000000"
 borderopacity="0.25"
 inkscape:showpageshadow="2"
 inkscape:pageopacity="0.0"
 inkscape:pagecheckerboard="0"
 inkscape:deskcolor="#d1d1d1"
 inkscape:zoom="10.630554"
 inkscape:cx="14.721716"
 inkscape:cy="10.159395"
 inkscape:window-width="896"
 inkscape:window-height="729"
 inkscape:window-x="374"
 inkscape:window-y="38"
 inkscape:window-maximized="0"
 inkscape:current-layer="svg1" /&gt;
 &lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
 &lt;path
 d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
 id="path1"
 style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;

&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;09-16-2025&lt;/td&gt;
 &lt;td&gt;Five for Fighting&lt;/td&gt;
 &lt;td&gt;100 Years&lt;/td&gt;
 &lt;td&gt;&lt;a
 href="https://youtu.be/a4PW3n9SA8A"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;
 &lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;

&lt;/svg&gt;&lt;/a&gt; / &lt;a
 href="https://on.soundcloud.com/Yfra4kwTA3Di3PShph"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;

 &lt;defs
 id="defs1" /&gt;
 &lt;sodipodi:namedview
 id="namedview1"
 pagecolor="#ffffff"
 bordercolor="#000000"
 borderopacity="0.25"
 inkscape:showpageshadow="2"
 inkscape:pageopacity="0.0"
 inkscape:pagecheckerboard="0"
 inkscape:deskcolor="#d1d1d1"
 inkscape:zoom="10.630554"
 inkscape:cx="14.721716"
 inkscape:cy="10.159395"
 inkscape:window-width="896"
 inkscape:window-height="729"
 inkscape:window-x="374"
 inkscape:window-y="38"
 inkscape:window-maximized="0"
 inkscape:current-layer="svg1" /&gt;
 &lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
 &lt;path
 d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
 id="path1"
 style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;

&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;08-09-2025&lt;/td&gt;
 &lt;td&gt;蘇打綠&lt;/td&gt;
 &lt;td&gt;日光 (雙鋼琴Cover)&lt;/td&gt;
 &lt;td&gt;&lt;a
 href="https://youtu.be/sNEwXQAIC3A"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;
 &lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;

&lt;/svg&gt;&lt;/a&gt; / &lt;a
 href="https://on.soundcloud.com/jZC8DiKaGManSVUAcP"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;

 &lt;defs
 id="defs1" /&gt;
 &lt;sodipodi:namedview
 id="namedview1"
 pagecolor="#ffffff"
 bordercolor="#000000"
 borderopacity="0.25"
 inkscape:showpageshadow="2"
 inkscape:pageopacity="0.0"
 inkscape:pagecheckerboard="0"
 inkscape:deskcolor="#d1d1d1"
 inkscape:zoom="10.630554"
 inkscape:cx="14.721716"
 inkscape:cy="10.159395"
 inkscape:window-width="896"
 inkscape:window-height="729"
 inkscape:window-x="374"
 inkscape:window-y="38"
 inkscape:window-maximized="0"
 inkscape:current-layer="svg1" /&gt;
 &lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
 &lt;path
 d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
 id="path1"
 style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;

&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;06-23-2025&lt;/td&gt;
 &lt;td&gt;蘇打綠&lt;/td&gt;
 &lt;td&gt;十年一刻&lt;/td&gt;
 &lt;td&gt;&lt;a
 href="https://youtu.be/FShd3-4umQI"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;
 &lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;

&lt;/svg&gt;&lt;/a&gt; / &lt;a
 href="https://on.soundcloud.com/Gx5LJzRlXnUtvylvmr"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;

 &lt;defs
 id="defs1" /&gt;
 &lt;sodipodi:namedview
 id="namedview1"
 pagecolor="#ffffff"
 bordercolor="#000000"
 borderopacity="0.25"
 inkscape:showpageshadow="2"
 inkscape:pageopacity="0.0"
 inkscape:pagecheckerboard="0"
 inkscape:deskcolor="#d1d1d1"
 inkscape:zoom="10.630554"
 inkscape:cx="14.721716"
 inkscape:cy="10.159395"
 inkscape:window-width="896"
 inkscape:window-height="729"
 inkscape:window-x="374"
 inkscape:window-y="38"
 inkscape:window-maximized="0"
 inkscape:current-layer="svg1" /&gt;
 &lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
 &lt;path
 d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
 id="path1"
 style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;

&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;06-08-2025&lt;/td&gt;
 &lt;td&gt;蘇打綠&lt;/td&gt;
 &lt;td&gt;你在煩惱什麼&lt;/td&gt;
 &lt;td&gt;&lt;a
 href="https://youtu.be/JpLZL5CxitI"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;
 &lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;

&lt;/svg&gt;&lt;/a&gt; / &lt;a
 href="https://on.soundcloud.com/bI4zUMFiUCqAYPNEDc"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;

 &lt;defs
 id="defs1" /&gt;
 &lt;sodipodi:namedview
 id="namedview1"
 pagecolor="#ffffff"
 bordercolor="#000000"
 borderopacity="0.25"
 inkscape:showpageshadow="2"
 inkscape:pageopacity="0.0"
 inkscape:pagecheckerboard="0"
 inkscape:deskcolor="#d1d1d1"
 inkscape:zoom="10.630554"
 inkscape:cx="14.721716"
 inkscape:cy="10.159395"
 inkscape:window-width="896"
 inkscape:window-height="729"
 inkscape:window-x="374"
 inkscape:window-y="38"
 inkscape:window-maximized="0"
 inkscape:current-layer="svg1" /&gt;
 &lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
 &lt;path
 d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
 id="path1"
 style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;

&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="古典音樂錄音"&gt;古典音樂錄音&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;發表日期&lt;/th&gt;
 &lt;th&gt;作曲家&lt;/th&gt;
 &lt;th&gt;曲名&lt;/th&gt;
 &lt;th&gt;演奏連結&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;11-05-2025&lt;/td&gt;
 &lt;td&gt;浦朗克&lt;/td&gt;
 &lt;td&gt;第七號即興曲&lt;/td&gt;
 &lt;td&gt;&lt;a
 href="https://www.youtube.com/watch?v=vE9QNQYPN2Q"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;
 &lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;

&lt;/svg&gt;&lt;/a&gt; / &lt;a
 href="https://soundcloud.com/alice_h_hsu/francis-poulenc-improvisation-no-7-alice-hsu?si=6f79b944c30c4c28a313056290bb51f5&amp;amp;utm_source=clipboard&amp;amp;utm_medium=text&amp;amp;utm_campaign=social_sharing"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;

 &lt;defs
 id="defs1" /&gt;
 &lt;sodipodi:namedview
 id="namedview1"
 pagecolor="#ffffff"
 bordercolor="#000000"
 borderopacity="0.25"
 inkscape:showpageshadow="2"
 inkscape:pageopacity="0.0"
 inkscape:pagecheckerboard="0"
 inkscape:deskcolor="#d1d1d1"
 inkscape:zoom="10.630554"
 inkscape:cx="14.721716"
 inkscape:cy="10.159395"
 inkscape:window-width="896"
 inkscape:window-height="729"
 inkscape:window-x="374"
 inkscape:window-y="38"
 inkscape:window-maximized="0"
 inkscape:current-layer="svg1" /&gt;
 &lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
 &lt;path
 d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
 id="path1"
 style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;

&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;10-02-2025&lt;/td&gt;
 &lt;td&gt;蕭斯塔科維契&lt;/td&gt;
 &lt;td&gt;浪漫曲 (出自於《娃娃舞曲》)&lt;/td&gt;
 &lt;td&gt;&lt;a
 href="https://youtu.be/1hjkNCefsao"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;
 &lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;

&lt;/svg&gt;&lt;/a&gt; / &lt;a
 href="https://on.soundcloud.com/V3xWwHzUic6wuWIH0a"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;

 &lt;defs
 id="defs1" /&gt;
 &lt;sodipodi:namedview
 id="namedview1"
 pagecolor="#ffffff"
 bordercolor="#000000"
 borderopacity="0.25"
 inkscape:showpageshadow="2"
 inkscape:pageopacity="0.0"
 inkscape:pagecheckerboard="0"
 inkscape:deskcolor="#d1d1d1"
 inkscape:zoom="10.630554"
 inkscape:cx="14.721716"
 inkscape:cy="10.159395"
 inkscape:window-width="896"
 inkscape:window-height="729"
 inkscape:window-x="374"
 inkscape:window-y="38"
 inkscape:window-maximized="0"
 inkscape:current-layer="svg1" /&gt;
 &lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
 &lt;path
 d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
 id="path1"
 style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;

&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;09-26-2025&lt;/td&gt;
 &lt;td&gt;蕭斯塔科維契&lt;/td&gt;
 &lt;td&gt;抒情圓舞曲 (出自於《娃娃舞曲》)&lt;/td&gt;
 &lt;td&gt;&lt;a
 href="https://youtu.be/PujmjvfiSsE"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;
 &lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;

&lt;/svg&gt;&lt;/a&gt; / &lt;a
 href="https://on.soundcloud.com/VXtjg68HfjPNB3lIGJ"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;

 &lt;defs
 id="defs1" /&gt;
 &lt;sodipodi:namedview
 id="namedview1"
 pagecolor="#ffffff"
 bordercolor="#000000"
 borderopacity="0.25"
 inkscape:showpageshadow="2"
 inkscape:pageopacity="0.0"
 inkscape:pagecheckerboard="0"
 inkscape:deskcolor="#d1d1d1"
 inkscape:zoom="10.630554"
 inkscape:cx="14.721716"
 inkscape:cy="10.159395"
 inkscape:window-width="896"
 inkscape:window-height="729"
 inkscape:window-x="374"
 inkscape:window-y="38"
 inkscape:window-maximized="0"
 inkscape:current-layer="svg1" /&gt;
 &lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
 &lt;path
 d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
 id="path1"
 style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;

&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;</description><content:encoded>&lt;p&gt;因手受傷，長期休養中，暫且不會更新。（2026/01/24）&lt;/p&gt;
&lt;h3 id="原創作品"&gt;原創作品&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;發表日期&lt;/th&gt;
&lt;th&gt;曲名&lt;/th&gt;
&lt;th&gt;演奏連結&lt;/th&gt;
&lt;th&gt;琴譜&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;10-13-2025&lt;/td&gt;
&lt;td&gt;Bell (Stage E. Piano)&lt;/td&gt;
&lt;td&gt;&lt;a
href="https://youtu.be/3qoF04GK2zI"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;
&lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;
&lt;/svg&gt;&lt;/a&gt; / &lt;a
href="https://soundcloud.com/alice_h_hsu/alice-hsu-bell-stage-e-piano-original-piano-composition"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;defs
id="defs1" /&gt;
&lt;sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="10.630554"
inkscape:cx="14.721716"
inkscape:cy="10.159395"
inkscape:window-width="896"
inkscape:window-height="729"
inkscape:window-x="374"
inkscape:window-y="38"
inkscape:window-maximized="0"
inkscape:current-layer="svg1" /&gt;
&lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
&lt;path
d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
id="path1"
style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;
&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://alicehsu.blog/pdf/Bell.pdf"target="_blank"
&gt;下載&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10-13-2025&lt;/td&gt;
&lt;td&gt;Bell&lt;/td&gt;
&lt;td&gt;&lt;a
href="https://youtu.be/Z4o3uY5C2EI"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;
&lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;
&lt;/svg&gt;&lt;/a&gt; / &lt;a
href="https://soundcloud.com/alice_h_hsu/alice-hsu-bell-original-piano-composition"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;defs
id="defs1" /&gt;
&lt;sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="10.630554"
inkscape:cx="14.721716"
inkscape:cy="10.159395"
inkscape:window-width="896"
inkscape:window-height="729"
inkscape:window-x="374"
inkscape:window-y="38"
inkscape:window-maximized="0"
inkscape:current-layer="svg1" /&gt;
&lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
&lt;path
d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
id="path1"
style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;
&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://alicehsu.blog/pdf/Bell.pdf"target="_blank"
&gt;下載&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;08-27-2025&lt;/td&gt;
&lt;td&gt;Ruins&lt;/td&gt;
&lt;td&gt;&lt;a
href="https://youtu.be/RsftgIKy3LM"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;
&lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;
&lt;/svg&gt;&lt;/a&gt; / &lt;a
href="https://on.soundcloud.com/USjfFvWS2FYXasseaL"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;defs
id="defs1" /&gt;
&lt;sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="10.630554"
inkscape:cx="14.721716"
inkscape:cy="10.159395"
inkscape:window-width="896"
inkscape:window-height="729"
inkscape:window-x="374"
inkscape:window-y="38"
inkscape:window-maximized="0"
inkscape:current-layer="svg1" /&gt;
&lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
&lt;path
d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
id="path1"
style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;
&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://alicehsu.blog/pdf/Ruins.pdf"target="_blank"
&gt;下載&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;07-01-2025&lt;/td&gt;
&lt;td&gt;Bitter Sweet&lt;/td&gt;
&lt;td&gt;&lt;a
href="https://youtu.be/iFkaTUgE1PE"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;
&lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;
&lt;/svg&gt;&lt;/a&gt; / &lt;a
href="https://on.soundcloud.com/EUAzsPntLhmjrm2gCZ"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;defs
id="defs1" /&gt;
&lt;sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="10.630554"
inkscape:cx="14.721716"
inkscape:cy="10.159395"
inkscape:window-width="896"
inkscape:window-height="729"
inkscape:window-x="374"
inkscape:window-y="38"
inkscape:window-maximized="0"
inkscape:current-layer="svg1" /&gt;
&lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
&lt;path
d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
id="path1"
style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;
&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://alicehsu.blog/pdf/Bitter%20Sweet.pdf"target="_blank"
&gt;下載&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;06-18-2025&lt;/td&gt;
&lt;td&gt;Farewell&lt;/td&gt;
&lt;td&gt;&lt;a
href="https://youtu.be/Rx4R5YYzuEg"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;
&lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;
&lt;/svg&gt;&lt;/a&gt; / &lt;a
href="https://on.soundcloud.com/KXcNYTUocrhkzbLj8z"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;defs
id="defs1" /&gt;
&lt;sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="10.630554"
inkscape:cx="14.721716"
inkscape:cy="10.159395"
inkscape:window-width="896"
inkscape:window-height="729"
inkscape:window-x="374"
inkscape:window-y="38"
inkscape:window-maximized="0"
inkscape:current-layer="svg1" /&gt;
&lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
&lt;path
d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
id="path1"
style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;
&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://alicehsu.blog/pdf/Farewell.pdf"target="_blank"
&gt;下載&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="鋼琴改編"&gt;鋼琴改編&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;發表日期&lt;/th&gt;
&lt;th&gt;原創者&lt;/th&gt;
&lt;th&gt;曲名&lt;/th&gt;
&lt;th&gt;演奏連結&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;12-20-2025&lt;/td&gt;
&lt;td&gt;John F. Wade / From William Sandy&amp;rsquo;s Christmas Carols, 1833 / John Stainer / Franz Grüber / French Carol&lt;/td&gt;
&lt;td&gt;&lt;a href="https://alicehsu.blog/pdf/Christmas%20Hymns%20Medley.pdf"target="_blank"
&gt;Christmas Hymns Medley&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a
href="https://www.youtube.com/watch?v=exz_3UsK_hk&amp;amp;t=4s"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;
&lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;
&lt;/svg&gt;&lt;/a&gt; / &lt;a
href="https://on.soundcloud.com/WAJOmUA4crqsWt0dp8"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;defs
id="defs1" /&gt;
&lt;sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="10.630554"
inkscape:cx="14.721716"
inkscape:cy="10.159395"
inkscape:window-width="896"
inkscape:window-height="729"
inkscape:window-x="374"
inkscape:window-y="38"
inkscape:window-maximized="0"
inkscape:current-layer="svg1" /&gt;
&lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
&lt;path
d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
id="path1"
style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;
&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11-25-2025&lt;/td&gt;
&lt;td&gt;Fujii Kaze&lt;/td&gt;
&lt;td&gt;Kirari&lt;/td&gt;
&lt;td&gt;&lt;a
href="https://www.youtube.com/watch?v=rIAMN3ULdX8"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;
&lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;
&lt;/svg&gt;&lt;/a&gt; / &lt;a
href="https://on.soundcloud.com/9POR1wvqA5q98GWS54"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;defs
id="defs1" /&gt;
&lt;sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="10.630554"
inkscape:cx="14.721716"
inkscape:cy="10.159395"
inkscape:window-width="896"
inkscape:window-height="729"
inkscape:window-x="374"
inkscape:window-y="38"
inkscape:window-maximized="0"
inkscape:current-layer="svg1" /&gt;
&lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
&lt;path
d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
id="path1"
style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;
&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;09-16-2025&lt;/td&gt;
&lt;td&gt;Five for Fighting&lt;/td&gt;
&lt;td&gt;100 Years&lt;/td&gt;
&lt;td&gt;&lt;a
href="https://youtu.be/a4PW3n9SA8A"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;
&lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;
&lt;/svg&gt;&lt;/a&gt; / &lt;a
href="https://on.soundcloud.com/Yfra4kwTA3Di3PShph"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;defs
id="defs1" /&gt;
&lt;sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="10.630554"
inkscape:cx="14.721716"
inkscape:cy="10.159395"
inkscape:window-width="896"
inkscape:window-height="729"
inkscape:window-x="374"
inkscape:window-y="38"
inkscape:window-maximized="0"
inkscape:current-layer="svg1" /&gt;
&lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
&lt;path
d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
id="path1"
style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;
&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;08-09-2025&lt;/td&gt;
&lt;td&gt;蘇打綠&lt;/td&gt;
&lt;td&gt;日光 (雙鋼琴Cover)&lt;/td&gt;
&lt;td&gt;&lt;a
href="https://youtu.be/sNEwXQAIC3A"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;
&lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;
&lt;/svg&gt;&lt;/a&gt; / &lt;a
href="https://on.soundcloud.com/jZC8DiKaGManSVUAcP"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;defs
id="defs1" /&gt;
&lt;sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="10.630554"
inkscape:cx="14.721716"
inkscape:cy="10.159395"
inkscape:window-width="896"
inkscape:window-height="729"
inkscape:window-x="374"
inkscape:window-y="38"
inkscape:window-maximized="0"
inkscape:current-layer="svg1" /&gt;
&lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
&lt;path
d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
id="path1"
style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;
&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;06-23-2025&lt;/td&gt;
&lt;td&gt;蘇打綠&lt;/td&gt;
&lt;td&gt;十年一刻&lt;/td&gt;
&lt;td&gt;&lt;a
href="https://youtu.be/FShd3-4umQI"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;
&lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;
&lt;/svg&gt;&lt;/a&gt; / &lt;a
href="https://on.soundcloud.com/Gx5LJzRlXnUtvylvmr"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;defs
id="defs1" /&gt;
&lt;sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="10.630554"
inkscape:cx="14.721716"
inkscape:cy="10.159395"
inkscape:window-width="896"
inkscape:window-height="729"
inkscape:window-x="374"
inkscape:window-y="38"
inkscape:window-maximized="0"
inkscape:current-layer="svg1" /&gt;
&lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
&lt;path
d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
id="path1"
style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;
&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;06-08-2025&lt;/td&gt;
&lt;td&gt;蘇打綠&lt;/td&gt;
&lt;td&gt;你在煩惱什麼&lt;/td&gt;
&lt;td&gt;&lt;a
href="https://youtu.be/JpLZL5CxitI"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;
&lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;
&lt;/svg&gt;&lt;/a&gt; / &lt;a
href="https://on.soundcloud.com/bI4zUMFiUCqAYPNEDc"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;defs
id="defs1" /&gt;
&lt;sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="10.630554"
inkscape:cx="14.721716"
inkscape:cy="10.159395"
inkscape:window-width="896"
inkscape:window-height="729"
inkscape:window-x="374"
inkscape:window-y="38"
inkscape:window-maximized="0"
inkscape:current-layer="svg1" /&gt;
&lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
&lt;path
d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
id="path1"
style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;
&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="古典音樂錄音"&gt;古典音樂錄音&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;發表日期&lt;/th&gt;
&lt;th&gt;作曲家&lt;/th&gt;
&lt;th&gt;曲名&lt;/th&gt;
&lt;th&gt;演奏連結&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;11-05-2025&lt;/td&gt;
&lt;td&gt;浦朗克&lt;/td&gt;
&lt;td&gt;第七號即興曲&lt;/td&gt;
&lt;td&gt;&lt;a
href="https://www.youtube.com/watch?v=vE9QNQYPN2Q"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;
&lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;
&lt;/svg&gt;&lt;/a&gt; / &lt;a
href="https://soundcloud.com/alice_h_hsu/francis-poulenc-improvisation-no-7-alice-hsu?si=6f79b944c30c4c28a313056290bb51f5&amp;amp;utm_source=clipboard&amp;amp;utm_medium=text&amp;amp;utm_campaign=social_sharing"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;defs
id="defs1" /&gt;
&lt;sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="10.630554"
inkscape:cx="14.721716"
inkscape:cy="10.159395"
inkscape:window-width="896"
inkscape:window-height="729"
inkscape:window-x="374"
inkscape:window-y="38"
inkscape:window-maximized="0"
inkscape:current-layer="svg1" /&gt;
&lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
&lt;path
d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
id="path1"
style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;
&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10-02-2025&lt;/td&gt;
&lt;td&gt;蕭斯塔科維契&lt;/td&gt;
&lt;td&gt;浪漫曲 (出自於《娃娃舞曲》)&lt;/td&gt;
&lt;td&gt;&lt;a
href="https://youtu.be/1hjkNCefsao"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;
&lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;
&lt;/svg&gt;&lt;/a&gt; / &lt;a
href="https://on.soundcloud.com/V3xWwHzUic6wuWIH0a"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;defs
id="defs1" /&gt;
&lt;sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="10.630554"
inkscape:cx="14.721716"
inkscape:cy="10.159395"
inkscape:window-width="896"
inkscape:window-height="729"
inkscape:window-x="374"
inkscape:window-y="38"
inkscape:window-maximized="0"
inkscape:current-layer="svg1" /&gt;
&lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
&lt;path
d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
id="path1"
style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;
&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;09-26-2025&lt;/td&gt;
&lt;td&gt;蕭斯塔科維契&lt;/td&gt;
&lt;td&gt;抒情圓舞曲 (出自於《娃娃舞曲》)&lt;/td&gt;
&lt;td&gt;&lt;a
href="https://youtu.be/PujmjvfiSsE"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;
&lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;
&lt;/svg&gt;&lt;/a&gt; / &lt;a
href="https://on.soundcloud.com/VXtjg68HfjPNB3lIGJ"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;defs
id="defs1" /&gt;
&lt;sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="10.630554"
inkscape:cx="14.721716"
inkscape:cy="10.159395"
inkscape:window-width="896"
inkscape:window-height="729"
inkscape:window-x="374"
inkscape:window-y="38"
inkscape:window-maximized="0"
inkscape:current-layer="svg1" /&gt;
&lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
&lt;path
d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
id="path1"
style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;
&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</content:encoded></item><item><title>錄了聖誕詩歌串燒（有譜）</title><link>https://alicehsu.blog/zh-tw/posts/2025/12/%E9%8C%84%E4%BA%86%E8%81%96%E8%AA%95%E8%A9%A9%E6%AD%8C%E4%B8%B2%E7%87%92%E6%9C%89%E8%AD%9C/</link><pubDate>Mon, 22 Dec 2025 16:00:00 -0600</pubDate><guid>https://alicehsu.blog/zh-tw/posts/2025/12/%E9%8C%84%E4%BA%86%E8%81%96%E8%AA%95%E8%A9%A9%E6%AD%8C%E4%B8%B2%E7%87%92%E6%9C%89%E8%AD%9C/</guid><description>再過幾天就是聖誕節了，這個 Project 是我一直以來想做的：將幾首喜歡的詩歌放在一起，做一個詩歌串燒（Christmas Medley）。</description><media:thumbnail url="https://alicehsu.blog/images/Post21home.png"/><media:content url="https://alicehsu.blog/images/Post21home.png" medium="image"/><enclosure url="https://alicehsu.blog/images/Post21home.png" type="image/jpeg"/><content:encoded>&lt;img
src="https://alicehsu.blog/images/Post21home.png"
loading="eager"
/&gt;&lt;p&gt;再過幾天就是聖誕節了，這個 Project 是我一直以來想做的：將幾首喜歡的詩歌放在一起，做一個詩歌串燒（Christmas Medley）。&lt;/p&gt;
&lt;p&gt;這次選的詩歌分別是以下五首，都是關於耶穌誕生的詩歌。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;齊來崇拜（O Come, All Ye Faithful）&lt;/li&gt;
&lt;li&gt;聖誕佳音（The First Noel）&lt;/li&gt;
&lt;li&gt;奇妙聖嬰（What Child is This? Who, Laid to Rest?）&lt;/li&gt;
&lt;li&gt;平安夜（Silent Night）&lt;/li&gt;
&lt;li&gt;天使歌唱 （Angels We Have Heard on High）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;有些詩歌重新配了和弦，希望能讓耳朵聽起來煥然一新；這次也不像之前寫一個完整的譜，而是只寫了右手旋律以及和弦的 lead sheet，多一點自由發揮的空間。&lt;/p&gt;
&lt;p&gt;好奇譜上寫了什麼，可以在下面下載，不過，&lt;del&gt;我也沒完全照著彈就是了&lt;/del&gt;，參考就好。&lt;/p&gt;
&lt;p&gt;願這些詩歌能帶給你平靜安穩的力量。&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/exz_3UsK_hk?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;script type="text/javascript" src= '/js/pdf-js/build/pdf.js'&gt;&lt;/script&gt;
&lt;style&gt;
#embed-pdf-container {
position: relative;
width: 100%;
height: auto;
min-height: 20vh;
}
.pdf-canvas {
border: 1px solid black;
direction: ltr;
width: 100%;
height: auto;
display: none;
}
#the-canvas {
border: 1px solid black;
direction: ltr;
width: 100%;
height: auto;
display: none;
}
.pdf-loadingWrapper {
display: none;
justify-content: center;
align-items: center;
width: 100%;
height: 350px;
}
.pdf-loading {
display: inline-block;
width: 50px;
height: 50px;
border: 3px solid #d2d0d0;;
border-radius: 50%;
border-top-color: #383838;
animation: spin 1s ease-in-out infinite;
-webkit-animation: spin 1s ease-in-out infinite;
}
.pdf-paginator {
width: 100%;
justify-content: center;
align-items: center;
}
#overlayText {
word-wrap: break-word;
display: grid;
justify-content: end;
}
#overlayText a {
position: relative;
top: 10px;
right: 4px;
color: #000;
margin: auto;
background-color: #eeeeee;
padding: 0.3em 1em;
border: solid 2px;
border-radius: 12px;
border-color: #00000030;
text-decoration: none;
}
#overlayText svg {
height: clamp(1em, 2vw, 1.4em);
width: clamp(1em, 2vw, 1.4em);
}
.pdf-wrapper {
position: relative;
display: flex;
justify-content: center;
align-items: center;
}
.pdf-nav {
position: absolute;
top: 100%;
height: 100%;
transform: translateY(-100%);
background: rgba(180, 180, 180, 0.2);
border: none;
font-size: 2rem;
padding: 0em 0.2em;
cursor: pointer;
transition: background 0.2s ease;
}
.pdf-nav:disabled {
opacity: 0.1;
cursor: default;
}
.pdf-nav:hover {
background: rgba(180, 180, 180, 0.7);
}
.pdf-prev {
left: 0em;
}
.pdf-next {
right: 0em;
}
@keyframes spin {
to { -webkit-transform: rotate(360deg); }
}
@-webkit-keyframes spin {
to { -webkit-transform: rotate(360deg); }
}
&lt;/style&gt;&lt;div class="embed-pdf-container" id="embed-pdf-container-83c188d1"&gt;
&lt;div class="pdf-loadingWrapper" id="pdf-loadingWrapper-83c188d1"&gt;
&lt;div class="pdf-loading" id="pdf-loading-83c188d1"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="pdf-wrapper"&gt;
&lt;button class="pdf-nav pdf-prev" id="pdf-prev-83c188d1" aria-label="Previous page"&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="28" height="28" fill="black"&gt;
&lt;path d="M15.41 7.41 14 6l-6 6 6 6 1.41-1.41L10.83 12z"/&gt;
&lt;/svg&gt;
&lt;/button&gt;
&lt;canvas class="pdf-canvas" id="pdf-canvas-83c188d1"&gt;&lt;/canvas&gt;
&lt;button class="pdf-nav pdf-next" id="pdf-next-83c188d1" aria-label="Next page"&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="28" height="28" fill="black"&gt;
&lt;path d="M8.59 16.59 13.17 12 8.59 7.41 10 6l6 6-6 6z"/&gt;
&lt;/svg&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="pdf-paginator" id="pdf-paginator-83c188d1"&gt;
&lt;span&gt;
Page &lt;span class="pdf-pagenum" id="pdf-pagenum-83c188d1"&gt;&lt;/span&gt; / &lt;span class="pdf-pagecount" id="pdf-pagecount-83c188d1"&gt;&lt;/span&gt;
&lt;a href="https://alicehsu.blog/pdf/Christmas%20Hymns%20Medley.pdf" aria-label="Download" download&gt;[Download]
&lt;/a&gt;
&lt;/span&gt;
&lt;/div&gt;
&lt;noscript&gt;
View the PDF file &lt;a class="pdf-source" id="pdf-source-noscript-83c188d1" href="https://alicehsu.blog/pdf/Christmas%20Hymns%20Medley.pdf"&gt;here&lt;/a&gt;.
&lt;/noscript&gt;
&lt;script type="text/javascript"&gt;
(function(){
var url = '\/pdf\/Christmas Hymns Medley.pdf';
var hidePaginator = "" === "true";
var hideLoader = "" === "true";
var selectedPageNum = parseInt("") || 1;
var pdfjsLib = window['pdfjs-dist/build/pdf'];
if (pdfjsLib.GlobalWorkerOptions.workerSrc == '')
pdfjsLib.GlobalWorkerOptions.workerSrc = 'https://cdn.jsdelivr.net/npm/pdfjs-dist@3.4.120/build/pdf.worker.min.js';
var pdfDoc = null,
pageNum = selectedPageNum,
pageRendering = false,
pageNumPending = null,
scale = 3,
canvas = document.getElementById('pdf-canvas-83c188d1'),
ctx = canvas.getContext('2d'),
paginator = document.getElementById("pdf-paginator-83c188d1"),
loadingWrapper = document.getElementById('pdf-loadingWrapper-83c188d1');
showPaginator();
showLoader();
function renderPage(num) {
pageRendering = true;
pdfDoc.getPage(num).then(function(page) {
var viewport = page.getViewport({scale: scale});
canvas.height = viewport.height;
canvas.width = viewport.width;
var renderContext = {
canvasContext: ctx,
viewport: viewport
};
var renderTask = page.render(renderContext);
renderTask.promise.then(function() {
pageRendering = false;
showContent();
updateButtons();
if (pageNumPending !== null) {
renderPage(pageNumPending);
pageNumPending = null;
}
});
});
document.getElementById('pdf-pagenum-83c188d1').textContent = num;
}
function showContent() {
loadingWrapper.style.display = 'none';
canvas.style.display = 'block';
}
function showLoader() {
if(hideLoader) return
loadingWrapper.style.display = 'flex';
canvas.style.display = 'none';
}
function showPaginator() {
if(hidePaginator) return
paginator.style.display = 'block';
}
function queueRenderPage(num) {
if (pageRendering) {
pageNumPending = num;
} else {
renderPage(num);
}
}
function updateButtons() {
var prevBtn = document.getElementById('pdf-prev-83c188d1');
var nextBtn = document.getElementById('pdf-next-83c188d1');
prevBtn.disabled = (pageNum &lt;= 1);
nextBtn.disabled = (pageNum &gt;= pdfDoc.numPages);
}
function onPrevPage() {
if (pageNum &lt;= 1) {
return;
}
pageNum--;
queueRenderPage(pageNum);
}
document.getElementById('pdf-prev-83c188d1').addEventListener('click', onPrevPage);
function onNextPage() {
if (pageNum &gt;= pdfDoc.numPages) {
return;
}
pageNum++;
queueRenderPage(pageNum);
}
document.getElementById('pdf-next-83c188d1').addEventListener('click', onNextPage);
pdfjsLib.getDocument(url).promise.then(function(pdfDoc_) {
pdfDoc = pdfDoc_;
var numPages = pdfDoc.numPages;
document.getElementById('pdf-pagecount-83c188d1').textContent = numPages;
if(pageNum &gt; numPages) {
pageNum = numPages
}
renderPage(pageNum);
});
})();
&lt;/script&gt;</content:encoded></item><item><title>一個有著陽光階梯的角落</title><link>https://alicehsu.blog/zh-tw/posts/2025/12/%E4%B8%80%E5%80%8B%E6%9C%89%E8%91%97%E9%99%BD%E5%85%89%E9%9A%8E%E6%A2%AF%E7%9A%84%E8%A7%92%E8%90%BD/</link><pubDate>Sat, 20 Dec 2025 14:50:00 -0600</pubDate><guid>https://alicehsu.blog/zh-tw/posts/2025/12/%E4%B8%80%E5%80%8B%E6%9C%89%E8%91%97%E9%99%BD%E5%85%89%E9%9A%8E%E6%A2%AF%E7%9A%84%E8%A7%92%E8%90%BD/</guid><description>冬季暖陽將 / 濕搭搭的靈魂 / 曬乾拍打</description><media:thumbnail url="https://alicehsu.blog/images/Post20home.jpg"/><media:content url="https://alicehsu.blog/images/Post20home.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post20home.jpg" type="image/jpeg"/><content:encoded>&lt;p&gt;
&lt;style&gt;
#masonry-0e9a5fd061a358ded8d17dd8dbee5690-1 {
width: 100%;
}
#masonry-0e9a5fd061a358ded8d17dd8dbee5690-1 .masonry-container {
width: 100%;
position: relative;
}
#masonry-0e9a5fd061a358ded8d17dd8dbee5690-1 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-0e9a5fd061a358ded8d17dd8dbee5690-1 .masonry-item img {
width: 60%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-0e9a5fd061a358ded8d17dd8dbee5690-1 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-0e9a5fd061a358ded8d17dd8dbee5690-1 .glightbox:hover,
#masonry-0e9a5fd061a358ded8d17dd8dbee5690-1 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-0e9a5fd061a358ded8d17dd8dbee5690-1 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-0e9a5fd061a358ded8d17dd8dbee5690-1 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-0e9a5fd061a358ded8d17dd8dbee5690-1"
data-columns="1"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post20home.jpg"
class="glightbox"
data-gallery="masonry-0e9a5fd061a358ded8d17dd8dbee5690-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post20home.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post20home.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-0e9a5fd061a358ded8d17dd8dbee5690-1';
const config = {
columns: 1 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;
冬季暖陽將&lt;/p&gt;
&lt;p&gt;濕搭搭的靈魂&lt;/p&gt;
&lt;p&gt;曬乾拍打&lt;/p&gt;
&lt;p&gt;霉味在白日的搓揉下蒸發&lt;/p&gt;
&lt;p&gt;靈魂散發著&lt;/p&gt;
&lt;p&gt;暖洋洋的香味&lt;/p&gt;
&lt;p&gt;我拿起它穿上&lt;/p&gt;
&lt;p&gt;啊——滿足地嘆了一聲&lt;/p&gt;
&lt;p&gt;這樣的溫柔觸感&lt;/p&gt;
&lt;p&gt;配上花草茶&lt;/p&gt;
&lt;p&gt;再與相愛的人聊天&lt;/p&gt;
&lt;p&gt;這就是幸福親吻的觸感了&lt;/p&gt;
&lt;p&gt;是的，是的&lt;/p&gt;
&lt;p&gt;幸福就在一個有著陽光階梯的角落&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;NB: 這首詩在 2018 年 12 月 21 於 FB 發表。沒想到七年整後的今天，2025 年 12 月 20 的我，會剛好想起之前寫的這首作品，索性放上來自己的部落格以茲紀念。&lt;/p&gt;
&lt;p&gt;猶記得那陣子正值台北冬天的雨季，也是我生命的雨季。正巧那天的天氣破天荒地好，窩在圖書館讀書的我看見了這幅景象，心一動，就寫了一首詩。&lt;/p&gt;
&lt;p&gt;多年後讀到同一首詩，還是滿感動的。感動那時的雨季，因為有抓住陽光，所以走到了現在。&lt;/p&gt;
&lt;p&gt;希望這首詩，能為每個正在經歷滂沱大雨的人，帶來一點力量。&lt;/p&gt;</content:encoded></item><item><title>聖誕小插畫</title><link>https://alicehsu.blog/zh-tw/posts/2025/12/%E8%81%96%E8%AA%95%E5%B0%8F%E6%8F%92%E7%95%AB/</link><pubDate>Fri, 19 Dec 2025 19:02:20 -0600</pubDate><guid>https://alicehsu.blog/zh-tw/posts/2025/12/%E8%81%96%E8%AA%95%E5%B0%8F%E6%8F%92%E7%95%AB/</guid><description>祝大家聖誕快樂！</description><media:thumbnail url="https://alicehsu.blog/images/Snowman.gif"/><media:content url="https://alicehsu.blog/images/Snowman.gif" medium="image"/><enclosure url="https://alicehsu.blog/images/Snowman.gif" type="image/jpeg"/><content:encoded>&lt;p&gt;受到&lt;a href="https://trashposts.com/blog/christmas-theme-and-guestbook/"target="_blank"
&gt;廢文小天地&lt;/a&gt;的啟發，我也來畫個 GIF 小插畫應景聖誕節啦！祝大家聖誕快樂！
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Snowman.gif"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Snowman.gif"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/ChristmasTree.gif"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/ChristmasTree.gif"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post19home.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post19home.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;&lt;/p&gt;</content:encoded></item><item><title>西遊記（終）：聖地牙哥之意外景點篇</title><link>https://alicehsu.blog/zh-tw/posts/2025/12/%E8%A5%BF%E9%81%8A%E8%A8%98%E7%B5%82%E8%81%96%E5%9C%B0%E7%89%99%E5%93%A5%E4%B9%8B%E6%84%8F%E5%A4%96%E6%99%AF%E9%BB%9E%E7%AF%87/</link><pubDate>Thu, 18 Dec 2025 17:50:00 -0600</pubDate><guid>https://alicehsu.blog/zh-tw/posts/2025/12/%E8%A5%BF%E9%81%8A%E8%A8%98%E7%B5%82%E8%81%96%E5%9C%B0%E7%89%99%E5%93%A5%E4%B9%8B%E6%84%8F%E5%A4%96%E6%99%AF%E9%BB%9E%E7%AF%87/</guid><description>終於，西遊記的連載要結束了。連載的末尾，就以旅途的三個意外景點作結吧。</description><media:thumbnail url="https://alicehsu.blog/images/Post/18/2.JPG"/><media:content url="https://alicehsu.blog/images/Post/18/2.JPG" medium="image"/><enclosure url="https://alicehsu.blog/images/Post/18/2.JPG" type="image/jpeg"/><content:encoded>&lt;img
src="https://alicehsu.blog/images/Post/18/2.JPG"
loading="eager"
/&gt;&lt;p&gt;終於，西遊記的連載要結束了。連載的末尾，就以旅途的三個意外景點作結吧。&lt;/p&gt;
&lt;h2 id="ec-gallery"&gt;Ec Gallery&lt;/h2&gt;
&lt;p&gt;某一天晚餐後我們在路上閒晃，碰巧路過一間畫廊，透明櫥窗展著下面這兩幅畫，我立刻被吸進去。
&lt;style&gt;
#masonry-b1694583bce0e856a8b84816c90cad13-1 {
width: 100%;
}
#masonry-b1694583bce0e856a8b84816c90cad13-1 .masonry-container {
width: 100%;
position: relative;
}
#masonry-b1694583bce0e856a8b84816c90cad13-1 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-b1694583bce0e856a8b84816c90cad13-1 .masonry-item img {
width: 80%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-b1694583bce0e856a8b84816c90cad13-1 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-b1694583bce0e856a8b84816c90cad13-1 .glightbox:hover,
#masonry-b1694583bce0e856a8b84816c90cad13-1 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-b1694583bce0e856a8b84816c90cad13-1 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-b1694583bce0e856a8b84816c90cad13-1 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-b1694583bce0e856a8b84816c90cad13-1"
data-columns="1"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/18/2.JPG"
class="glightbox"
data-gallery="masonry-b1694583bce0e856a8b84816c90cad13-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/18/2.JPG"
alt="這個凝視好溫暖"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/18/2.JPG"
data-gallery-alt="這個凝視好溫暖"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;這個凝視好溫暖&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/18/3.JPG"
class="glightbox"
data-gallery="masonry-b1694583bce0e856a8b84816c90cad13-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/18/3.JPG"
alt="彈琴的 Schroeder 和拉琴的 Woodstock"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/18/3.JPG"
data-gallery-alt="彈琴的 Schroeder 和拉琴的 Woodstock"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;彈琴的 Schroeder 和拉琴的 Woodstock&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-b1694583bce0e856a8b84816c90cad13-1';
const config = {
columns: 1 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;&lt;/p&gt;
&lt;p&gt;與店員聊天，曉得原來作畫的人叫做湯姆·艾佛哈特（Tom Everhart），他其實是《花生》漫畫作者查爾斯·舒茲（Charles Schulz）的好朋友，舒茲生前將版權留給他，只有一個條件：艾佛哈特不能重複自己的風格，他必須要畫出屬於自己的史努比。&lt;/p&gt;
&lt;style&gt;
#masonry-b1694583bce0e856a8b84816c90cad13-2 {
width: 100%;
}
#masonry-b1694583bce0e856a8b84816c90cad13-2 .masonry-container {
width: 100%;
position: relative;
}
#masonry-b1694583bce0e856a8b84816c90cad13-2 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-b1694583bce0e856a8b84816c90cad13-2 .masonry-item img {
width: 60%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-b1694583bce0e856a8b84816c90cad13-2 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-b1694583bce0e856a8b84816c90cad13-2 .glightbox:hover,
#masonry-b1694583bce0e856a8b84816c90cad13-2 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-b1694583bce0e856a8b84816c90cad13-2 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-b1694583bce0e856a8b84816c90cad13-2 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-b1694583bce0e856a8b84816c90cad13-2"
data-columns="1"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/18/4.JPG"
class="glightbox"
data-gallery="masonry-b1694583bce0e856a8b84816c90cad13-2"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/18/4.JPG"
alt="舒茲和艾佛哈特的合照"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/18/4.JPG"
data-gallery-alt="舒茲和艾佛哈特的合照"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;舒茲和艾佛哈特的合照&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/18/5.JPG"
class="glightbox"
data-gallery="masonry-b1694583bce0e856a8b84816c90cad13-2"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/18/5.JPG"
alt="艾佛哈特其他的史努比"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/18/5.JPG"
data-gallery-alt="艾佛哈特其他的史努比"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;艾佛哈特其他的史努比&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-b1694583bce0e856a8b84816c90cad13-2';
const config = {
columns: 1 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;
&lt;p&gt;我很喜歡艾佛哈特的風格，夢幻中又帶點調皮和溫暖，史努比原來也可以這麼多彩。&lt;/p&gt;
&lt;h2 id="the-shout-house"&gt;The Shout! House&lt;/h2&gt;
&lt;style&gt;
#masonry-b1694583bce0e856a8b84816c90cad13-3 {
width: 100%;
}
#masonry-b1694583bce0e856a8b84816c90cad13-3 .masonry-container {
width: 100%;
position: relative;
}
#masonry-b1694583bce0e856a8b84816c90cad13-3 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-b1694583bce0e856a8b84816c90cad13-3 .masonry-item img {
width: 60%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-b1694583bce0e856a8b84816c90cad13-3 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-b1694583bce0e856a8b84816c90cad13-3 .glightbox:hover,
#masonry-b1694583bce0e856a8b84816c90cad13-3 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-b1694583bce0e856a8b84816c90cad13-3 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-b1694583bce0e856a8b84816c90cad13-3 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-b1694583bce0e856a8b84816c90cad13-3"
data-columns="1"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/18/8.JPG"
class="glightbox"
data-gallery="masonry-b1694583bce0e856a8b84816c90cad13-3"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/18/8.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/18/8.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-b1694583bce0e856a8b84816c90cad13-3';
const config = {
columns: 1 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;
&lt;p&gt;有天晚上和 Sam 的同事們聚餐，吃飯的時候，有位同事提及待會想去鋼琴酒吧聽音樂，大家一聽很感興趣，就揪團一起去了。它不用入場費，只不過入場時需要檢查 ID 和背包。我們點了飲料，等候他們八點開場。&lt;/p&gt;
&lt;p&gt;舞臺上是 Courtney、Eric 和 Tom 輪流表演，主要是兩個人在台上演奏，輪流讓一個人去台下休息。大多數時候是雙鋼琴，偶爾其中一個人會去打鼓或彈吉他。不得不說，整場聽下來，我真的很佩服每個樂手的廣闊的曲目記憶庫、演奏/演唱技巧以及即興能力。台下每張桌子上有便條紙和鉛筆，客人可以寫下想點的歌，走到台前放在琴上。通常是點歌要祝福壽星的，以及有給小費的會優先彈。這得要記得多少首歌啊？厲害！&lt;/p&gt;
&lt;p&gt;
&lt;div
class="video-js-container"&gt;
&lt;video
data-setup="{&amp;#34;language&amp;#34;:&amp;#34;zh-TW&amp;#34;,&amp;#34;playbackRates&amp;#34;:[0.5,1,1.5,2]}"
width="100%"
height="100%"
class="video-js vjs-default-skin vjs-fluid"
controls
&gt;
&lt;source
src="https://alicehsu.blog/images/Post/18/Song%201.mp4"
&gt;
&lt;/video&gt;
&lt;/div&gt;
（這首曲子叫 All My Ex&amp;rsquo;s Live in Texas，歌詞很好笑。）&lt;/p&gt;
&lt;p&gt;而且，現場音樂就是有種無法取代的生命力。演奏的過程中他們會帶動氣氛，甚至叫點歌的人到台前跳舞，下面這個很 high 的大哥和他朋友就是。&lt;/p&gt;
&lt;div
class="video-js-container"&gt;
&lt;video
data-setup="{&amp;#34;language&amp;#34;:&amp;#34;zh-TW&amp;#34;,&amp;#34;playbackRates&amp;#34;:[0.5,1,1.5,2]}"
width="100%"
height="100%"
class="video-js vjs-default-skin vjs-fluid"
controls
&gt;
&lt;source
src="https://alicehsu.blog/images/Post/18/Song%202.mp4"
&gt;
&lt;/video&gt;
&lt;/div&gt;
&lt;p&gt;音樂和氣氛真的好棒，如果有機會再訪聖地牙哥會想再來聽表演！&lt;/p&gt;
&lt;h2 id="the-rady-shell-at-jacobs-park"&gt;The Rady Shell at Jacobs Park&lt;/h2&gt;
&lt;p&gt;有天晚上和 Sam 散步經過 The Rady Shell，聽到有音樂的聲音，好奇走過去，發現好像是某齣音樂劇在排演。
&lt;style&gt;
#masonry-b1694583bce0e856a8b84816c90cad13-4 {
width: 100%;
}
#masonry-b1694583bce0e856a8b84816c90cad13-4 .masonry-container {
width: 100%;
position: relative;
}
#masonry-b1694583bce0e856a8b84816c90cad13-4 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-b1694583bce0e856a8b84816c90cad13-4 .masonry-item img {
width: 60%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-b1694583bce0e856a8b84816c90cad13-4 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-b1694583bce0e856a8b84816c90cad13-4 .glightbox:hover,
#masonry-b1694583bce0e856a8b84816c90cad13-4 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-b1694583bce0e856a8b84816c90cad13-4 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-b1694583bce0e856a8b84816c90cad13-4 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-b1694583bce0e856a8b84816c90cad13-4"
data-columns="1"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/18/9-1.JPG"
class="glightbox"
data-gallery="masonry-b1694583bce0e856a8b84816c90cad13-4"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/18/9-1.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/18/9-1.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-b1694583bce0e856a8b84816c90cad13-4';
const config = {
columns: 1 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;&lt;/p&gt;
&lt;p&gt;舞台上的燈光很炫酷，兩個對戲的演員講話很好笑，大概是某種荒謬喜劇吧。&lt;/p&gt;
&lt;p&gt;我們查了查，發現原來是附近的 Awaken Church 辦的聖誕晚會，什麼！不只有演戲，還有空中飛人？什麼！不只有空中飛人，還有煙火？看了好心動好想買，不過票價實在不菲，我們想了想決定還是放棄，心想能夠看到一點點免費的排演就不錯了。&lt;/p&gt;
&lt;p&gt;過幾天的週六下午，在小義大利區逛完後，我們不知怎的，決定不搭電車，而是慢慢散步回飯店。濱海步道上，有個大哥看起來在推銷東西，不知怎的，身為 I 人的我們竟然沒有躲開。&lt;/p&gt;
&lt;p&gt;他說：
「今天晚上有表演喔！真的超酷的，你們可以來看看！」&lt;/p&gt;
&lt;p&gt;他停頓了一會，又說：「這個票價的確有點貴，不過，如果你們真的很想來，可以跟售票亭的人說：『Esther invited us』，就是免費的啦。」&lt;/p&gt;
&lt;p&gt;就這樣，我們拿到了票，進到場內發現竟然是在前排搖滾區。&lt;/p&gt;
&lt;p&gt;面對這種以許多「不知怎的」所堆疊起來、發生機率低到不行的事件，我只能說是上帝的恩典。當神要給禮物時，是直接送到眼前來的，而且一點也不小氣，非常大方給最前方的位子。&lt;/p&gt;
&lt;style&gt;
#masonry-b1694583bce0e856a8b84816c90cad13-5 {
width: 100%;
}
#masonry-b1694583bce0e856a8b84816c90cad13-5 .masonry-container {
width: 100%;
position: relative;
}
#masonry-b1694583bce0e856a8b84816c90cad13-5 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-b1694583bce0e856a8b84816c90cad13-5 .masonry-item img {
width: 60%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-b1694583bce0e856a8b84816c90cad13-5 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-b1694583bce0e856a8b84816c90cad13-5 .glightbox:hover,
#masonry-b1694583bce0e856a8b84816c90cad13-5 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-b1694583bce0e856a8b84816c90cad13-5 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-b1694583bce0e856a8b84816c90cad13-5 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-b1694583bce0e856a8b84816c90cad13-5"
data-columns="1"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/18/9.JPG"
class="glightbox"
data-gallery="masonry-b1694583bce0e856a8b84816c90cad13-5"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/18/9.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/18/9.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/18/10.JPG"
class="glightbox"
data-gallery="masonry-b1694583bce0e856a8b84816c90cad13-5"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/18/10.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/18/10.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/18/11.JPG"
class="glightbox"
data-gallery="masonry-b1694583bce0e856a8b84816c90cad13-5"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/18/11.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/18/11.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/18/12.JPG"
class="glightbox"
data-gallery="masonry-b1694583bce0e856a8b84816c90cad13-5"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/18/12.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/18/12.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/18/13.JPG"
class="glightbox"
data-gallery="masonry-b1694583bce0e856a8b84816c90cad13-5"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/18/13.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/18/13.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/18/14.JPG"
class="glightbox"
data-gallery="masonry-b1694583bce0e856a8b84816c90cad13-5"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/18/14.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/18/14.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/18/15.JPG"
class="glightbox"
data-gallery="masonry-b1694583bce0e856a8b84816c90cad13-5"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/18/15.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/18/15.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/18/16.JPG"
class="glightbox"
data-gallery="masonry-b1694583bce0e856a8b84816c90cad13-5"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/18/16.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/18/16.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-b1694583bce0e856a8b84816c90cad13-5';
const config = {
columns: 1 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;
&lt;p&gt;整齣劇講的是耶穌誕生的故事，看完整個表演覺得很感動，這個教會實在是人才濟濟，樂團、歌手、空中飛人、演員、每個幕後人員等等無一不投入，讓整個表演非常專業和精彩。&lt;/p&gt;
&lt;p&gt;我們進場之後也遇到了那個推銷的大哥，聊了一會，知道他叫作 Pedro。&lt;/p&gt;
&lt;p&gt;謝謝 Pedro 大哥在太陽下的辛勞服事，讓我們有機會看表演！&lt;/p&gt;
&lt;h2 id="結語"&gt;結語&lt;/h2&gt;
&lt;p&gt;終於，寫完了西遊記了。一開始的時候沒有想寫那麼多的，結果寫著寫著，整個系列就破六千字了（感覺都要變旅遊美食部落客了 lol）這些文章有哪裡讓你產生共鳴的嗎？歡迎來信與我分享你的想法：）&lt;/p&gt;</content:encoded></item><item><title>西遊記（三）：聖地牙哥之人物速寫</title><link>https://alicehsu.blog/zh-tw/posts/2025/12/%E8%A5%BF%E9%81%8A%E8%A8%98%E4%B8%89%E8%81%96%E5%9C%B0%E7%89%99%E5%93%A5%E4%B9%8B%E4%BA%BA%E7%89%A9%E9%80%9F%E5%AF%AB/</link><pubDate>Wed, 17 Dec 2025 14:40:00 -0600</pubDate><guid>https://alicehsu.blog/zh-tw/posts/2025/12/%E8%A5%BF%E9%81%8A%E8%A8%98%E4%B8%89%E8%81%96%E5%9C%B0%E7%89%99%E5%93%A5%E4%B9%8B%E4%BA%BA%E7%89%A9%E9%80%9F%E5%AF%AB/</guid><description>他說：「哇，我這一生都沒看過雪，滿想看雪的。」</description><media:thumbnail url="https://alicehsu.blog/images/Post17home.gif"/><media:content url="https://alicehsu.blog/images/Post17home.gif" medium="image"/><enclosure url="https://alicehsu.blog/images/Post17home.gif" type="image/jpeg"/><content:encoded>&lt;img
src="https://alicehsu.blog/images/Post17home.gif"
loading="eager"
/&gt;&lt;h3 id="篇一"&gt;篇一&lt;/h3&gt;
&lt;p&gt;傍晚，繁忙的小義大利區燈火通明，The Market of Buon Appetito 也點亮了燈。&lt;/p&gt;
&lt;p&gt;這間不大的雜貨店坐落在街角，就位於自家餐廳隔壁，似乎是由兩間房間打通而成。老闆很有效利用空間（這種精神總讓我想起華人超市），一間賣乾貨，貨架彼此靠得很近，留有一人半能通過的走道。架上擺滿各式各樣的醬料和義大利麵：細麵、寬麵、螺旋麵、貝殼麵、甚至還有形狀像車輪的麵，目不暇給。另一間則是集合了少許生鮮貨架，並且還塞了一間只有吧台座位的咖啡店，好吧，可能不算「店」，說「角落」好了。&lt;/p&gt;
&lt;p&gt;店裏沒有一個人閒著，那位義大利小哥也是。&lt;/p&gt;
&lt;p&gt;我們拿了 Galvanina 汽水在櫃檯前等待結帳，探了探頭，看見一個穿著 Buon Appetito 黑色 T-shirt 店服的小哥正在上架許多的商品。他看見了我們，放下手邊工作。一邊跟我們寒暄：從哪裡來呀？&lt;/p&gt;
&lt;p&gt;我們說：「威斯康辛州，那裡好冷，正在下暴雪。」&lt;/p&gt;
&lt;p&gt;他說：「哇，我這一生都沒看過雪，滿想看雪的。」&lt;/p&gt;
&lt;div style="width: 100%; justify-content: center; display: flex;"&gt;
&lt;div style="width: 20vw;"&gt;
&lt;hr style="margin: 0; --tw-gradient-via: var(--color-accent);"&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;因為 Galvanina 汽水實在太好喝，我們又光顧了雜貨舖好幾次，也總能在店裡看見小哥的身影。他不是忙碌著，就是和客人聊天。&lt;/p&gt;
&lt;p&gt;看見他時，我說：「又見到你啦！」&lt;/p&gt;
&lt;p&gt;「啊對耶，你們前幾天有來。」&lt;/p&gt;
&lt;p&gt;寒暄了一會，在那個神秘的吧台咖啡角落和他點了兩杯 expresso，我們又繼續聊起來。他和 Sam 聊了關於 conference 和 AI 的問題，又說道自己也是學生，暫時在這裡打工，對這類主題也滿感興趣。說著說著，他忽然想起什麼似的，說：&lt;/p&gt;
&lt;p&gt;「哎呀真不想破壞氣氛，不過&amp;hellip;&amp;hellip;你們需要付錢喔！」&lt;/p&gt;
&lt;p&gt;哈哈，聊天聊得太歡樂了，付完錢又聊了一會，有客人來問了問題，他向我們擺擺手後忙碌了起來。&lt;/p&gt;
&lt;div style="width: 100%; justify-content: center; display: flex;"&gt;
&lt;div style="width: 20vw;"&gt;
&lt;hr style="margin: 0; --tw-gradient-via: var(--color-accent);"&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;最後一次見到他，是在某個早晨。&lt;/p&gt;
&lt;p&gt;我們在小義大利站下了電車，正巧看見小哥在我們前方匆匆走過，一樣穿著那件 Buon Appetito 的黑色 T-Shirt。&lt;/p&gt;
&lt;p&gt;他過了馬路後，交通號誌轉為紅燈，我們在馬路的另一端看見他走進了前方的超商。&lt;/p&gt;
&lt;p&gt;對他來說，這就是另一個上班日吧。&lt;/p&gt;
&lt;p&gt;或許，與像我們這樣的遊客聊天，是他每年夏季的日常。不過，他大概不會知道，他的日常，讓兩個從雪國來的人感到溫暖。&lt;/p&gt;
&lt;p&gt;祝福他，有一天能看到真正的雪。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="篇二"&gt;篇二&lt;/h3&gt;
&lt;p&gt;飯店後門出去就是個濱海步道，有許多人在這裡遛狗和跑步。&lt;/p&gt;
&lt;p&gt;慢跑的人有許多，常見的是穿著瑜伽服的年輕女性，以及打著赤膊的男性。&lt;/p&gt;
&lt;p&gt;除了瑜伽服和赤膊是標配外，這當中，有許多人的標配是音響。對，就是音響，不是耳機，可以放出來、讓大家不用洗耳也能恭聽的那種。&lt;/p&gt;
&lt;p&gt;這讓我想到台灣有許多阿伯爬山，也是這樣自帶 BGM，只不過他們放出來的歌不是台語相思愛情歌，而是潮潮的英文動次動次歌。當然，配戴音響的人看起來比阿伯有型多了。&lt;/p&gt;
&lt;p&gt;雖然外表看來賞心悅目，我還是不那麼喜歡自帶 BGM 的人（畢竟要忍受那些沒那麼喜歡的歌），我忍不住問 Sam 一個假想題：&lt;/p&gt;
&lt;p&gt;「你覺得你比較難忍受哪一種人？是配戴音響跑步的人，還是戴耳機邊在路上跳舞的人？」&lt;/p&gt;
&lt;p&gt;他想了想說：&lt;/p&gt;
&lt;p&gt;「大概是戴耳機跳舞吧，你不能確定他是不是真的在聽音樂，搞不好他是吸 ㄎㄧㄤ 了在跳舞。還有，你也沒辦法預判他的肢體動作，走太近搞不好會不小心被打到。」&lt;/p&gt;
&lt;p&gt;剛講完沒過幾分鐘，就遇到一個大哥戴全罩式耳機，旁若無人跳著舞。&lt;/p&gt;
&lt;p&gt;&amp;hellip;&amp;hellip;&lt;/p&gt;
&lt;p&gt;「我覺得你有道理，自帶 BGM 的人安全多了。」&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="後記"&gt;後記&lt;/h3&gt;
&lt;p&gt;西遊記前兩篇是屬於以圖片為主體的旅遊介紹文，這篇想嘗試一個不同的風格：以純文字速寫那些在聖地牙哥遇到的有趣的人，寫完之後，發現那些記憶碎片拼成了有趣的形狀，滿喜歡的。&lt;/p&gt;</content:encoded></item><item><title>度假後症候群</title><link>https://alicehsu.blog/zh-tw/posts/2025/12/%E5%BA%A6%E5%81%87%E5%BE%8C%E7%97%87%E5%80%99%E7%BE%A4/</link><pubDate>Sun, 14 Dec 2025 15:00:00 -0600</pubDate><guid>https://alicehsu.blog/zh-tw/posts/2025/12/%E5%BA%A6%E5%81%87%E5%BE%8C%E7%97%87%E5%80%99%E7%BE%A4/</guid><description>度假後症候群（Post-Vacation Syndrome）顧名思義，指的是一個人在度假之後會產生之行為與症狀。</description><media:thumbnail url="https://alicehsu.blog/images/Post16home.jpg"/><media:content url="https://alicehsu.blog/images/Post16home.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post16home.jpg" type="image/jpeg"/><content:encoded>&lt;img
src="https://alicehsu.blog/images/Post16home.jpg"
loading="eager"
/&gt;&lt;p&gt;度假後症候群（Post-Vacation Syndrome）顧名思義，指的是一個人在度假之後會產生之行為與症狀：&lt;/p&gt;
&lt;p&gt;常見的有：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;每天回顧旅遊時拍攝的相片&lt;/li&gt;
&lt;li&gt;旅遊時每天可走上萬步，回家後整天懶懶的不想動&lt;/li&gt;
&lt;li&gt;出去玩人是固體，回家變回液體&lt;/li&gt;
&lt;li&gt;常常想念異地美食&lt;/li&gt;
&lt;li&gt;工作動力變低&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;處方：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;想三個待在家裡的好處&lt;/li&gt;
&lt;li&gt;看看錢包&lt;/li&gt;
&lt;li&gt;&lt;del&gt;規劃下次旅行&lt;/del&gt;&lt;/li&gt;
&lt;/ol&gt;</content:encoded></item><item><title>西遊記（二）：聖地牙哥之美食篇</title><link>https://alicehsu.blog/zh-tw/posts/2025/12/%E8%A5%BF%E9%81%8A%E8%A8%98%E4%BA%8C%E8%81%96%E5%9C%B0%E7%89%99%E5%93%A5%E4%B9%8B%E7%BE%8E%E9%A3%9F%E7%AF%87/</link><pubDate>Fri, 12 Dec 2025 15:00:00 -0600</pubDate><guid>https://alicehsu.blog/zh-tw/posts/2025/12/%E8%A5%BF%E9%81%8A%E8%A8%98%E4%BA%8C%E8%81%96%E5%9C%B0%E7%89%99%E5%93%A5%E4%B9%8B%E7%BE%8E%E9%A3%9F%E7%AF%87/</guid><description>出門之前，身為吃貨的我們早在 Google Map 存了滿滿的餐廳。</description><media:thumbnail url="https://alicehsu.blog/images/Post/15/1.jpg"/><media:content url="https://alicehsu.blog/images/Post/15/1.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post/15/1.jpg" type="image/jpeg"/><content:encoded>&lt;img
src="https://alicehsu.blog/images/Post/15/1.jpg"
loading="eager"
/&gt;&lt;p&gt;出門之前，身為吃貨的我們早在 Google Map 存了滿滿的餐廳。我和 Sam 熱愛拉麵，不過聖地牙哥的拉麵店實在屈指可數，而且看起來一般般；反倒是小義大利區（Little Italy）的餐廳看起來非常棒，我們決定試試看。結果一嘗試不得了，直接成為義大利菜的愛好者。&lt;/p&gt;
&lt;p&gt;小義大利區就在機場隔壁，而且 MTS （聖地牙哥的電車）會停靠，出入非常方便，一下飛機的餓昏的我們直奔這裡吃晚餐。不得不說，整個街頭都很有義式風情，氣氛很 Chill，幾乎每間店的街邊還有直立式瓦斯暖爐（propane patio heater），客人享受戶外風光之餘，也不會被寒冷侵襲。&lt;/p&gt;
&lt;p&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/15/2.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/15/2.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/15/31.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/15/31.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/15/3.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/15/3.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;&lt;/p&gt;
&lt;h2 id="正餐"&gt;正餐&lt;/h2&gt;
&lt;p&gt;走進義大利人開的餐廳，真的像是走進阿嬤家廚房一樣，份量非常大，可以讓人從非常餓吃到非常飽。我們通常各點一份主餐，或是一份前菜和一份主餐就吃得非常撐了。&lt;/p&gt;
&lt;h3 id="炸飯糰arancini-章魚沙拉insalata-di-polpo"&gt;炸飯糰（Arancini）&amp;amp; 章魚沙拉（Insalata Di Polpo）&lt;/h3&gt;
&lt;p&gt;炸飯糰和章魚沙拉是我們分別在 &lt;a href="https://maps.app.goo.gl/PfHRxdasvwwRX6eD8"target="_blank"
&gt;Buon Appetito&lt;/a&gt; 以及 &lt;a href="https://maps.app.goo.gl/MtpcPQXRd9DvfDSg6"target="_blank"
&gt;Solunto&lt;/a&gt; 兩間餐廳點的前菜。炸飯糰大概是我拳頭的 2/3 大小，是炸燉飯球裡包著肉醬、起司以及青豆的一道菜。咬下去外殼酥脆有炸飯糰特有的黏性，裡頭的醬味道濃郁，還會拉絲。我原本很排斥吃青豆（營養午餐三色豆的慘淡記憶猶新），不過這家的青豆完全沒有可怕的生豆味，而且軟硬適中，非常難得的好吃。事實證明，我不是挑食，而是不喜歡吃難吃的食物哈哈。&lt;/p&gt;
&lt;p&gt;章魚沙拉裡頭包含了章魚、生菜、烤馬鈴薯、橄欖，以及朝鮮薊，擠上檸檬汁之後味道變得平衡清爽。我原本想像這些章魚應該是冷的，結果其實是熱的，而且口感極嫩，很好咀嚼，與章魚燒裡頭的章魚差很多。
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/15/6.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/15/6.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/15/5.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/15/5.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;&lt;/p&gt;
&lt;h3 id="海鮮湯cioppino-附餐燉飯"&gt;海鮮湯（cioppino）&amp;amp; 附餐燉飯&lt;/h3&gt;
&lt;p&gt;Cioppino （/tʃoʊˈpiːnoʊ/，聽起來像「秋皮～no」）算是來聖地牙哥必點的菜了吧！由於臨近海邊，小義大利區餐廳使用的海鮮有地利之便，新鮮便宜。不過，這裡也不是每間都有，我們找了一下，最後找到了&lt;a href="https://maps.app.goo.gl/PfHRxdasvwwRX6eD8"target="_blank"
&gt;Buon Appetito&lt;/a&gt;。那天我們兩個人其實都不太餓，就只點了一份 Cioppino 加上附餐的燉飯。老闆先上了一份餐廳招待的麵包，又上了附餐燉飯，接著幫我們的海鮮湯分成兩碗給我們（超貼心！我們沒有請他弄他就幫我們分了）。&lt;/p&gt;
&lt;style&gt;
#masonry-355608443d626d04d38fd0fcefbdfe66-1 {
width: 100%;
}
#masonry-355608443d626d04d38fd0fcefbdfe66-1 .masonry-container {
width: 100%;
position: relative;
}
#masonry-355608443d626d04d38fd0fcefbdfe66-1 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 20px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-355608443d626d04d38fd0fcefbdfe66-1 .masonry-item img {
width: 100%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-355608443d626d04d38fd0fcefbdfe66-1 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-355608443d626d04d38fd0fcefbdfe66-1 .glightbox:hover,
#masonry-355608443d626d04d38fd0fcefbdfe66-1 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-355608443d626d04d38fd0fcefbdfe66-1 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-355608443d626d04d38fd0fcefbdfe66-1 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-355608443d626d04d38fd0fcefbdfe66-1"
data-columns="3"
data-gutter="20"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/15/9.jpg"
class="glightbox"
data-gallery="masonry-355608443d626d04d38fd0fcefbdfe66-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/15/9.jpg"
alt="附餐麵包"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/15/9.jpg"
data-gallery-alt="附餐麵包"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;附餐麵包&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/15/8.jpg"
class="glightbox"
data-gallery="masonry-355608443d626d04d38fd0fcefbdfe66-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/15/8.jpg"
alt="1/2 的 Cioppino"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/15/8.jpg"
data-gallery-alt="1/2 的 Cioppino"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;1/2 的 Cioppino&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/15/7.jpg"
class="glightbox"
data-gallery="masonry-355608443d626d04d38fd0fcefbdfe66-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/15/7.jpg"
alt="附餐燉飯"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/15/7.jpg"
data-gallery-alt="附餐燉飯"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;附餐燉飯&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-355608443d626d04d38fd0fcefbdfe66-1';
const config = {
columns: 3 ,
gutter: 20 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;
&lt;p&gt;看了看這份量&amp;hellip;&amp;hellip;，老闆，你真的怕我們餓到耶。&lt;/p&gt;
&lt;p&gt;麵包大概是我五天的早餐份，1/2 份的 Cioppino 海鮮超多，燉飯則是堆得像一座小山。&lt;/p&gt;
&lt;p&gt;好吃到沒話說，附餐麵包柔軟，沾著他們家特製的醬，就算是好幾天的早餐份也吃光光。我們餐後還在他們家開的雜貨舖買了麵包與醬料當那幾天的早餐。海鮮湯有蛤蜊、淡菜、魷魚、扇貝、魚和蝦子，撒上厚厚一層的帕馬森起司，沾著番茄高湯，我大概把一年沒吃的海鮮份都吃完了。燉飯的口感的確是很道地的 Risotto，米心微硬，而且番紅花的香氣滿濃郁的，好吃！&lt;/p&gt;
&lt;h3 id="義大利麵--義大利燉飯"&gt;義大利麵 &amp;amp; 義大利燉飯&lt;/h3&gt;
&lt;p&gt;在這些餐廳吃飯，服務生上菜之後，往往會問：「要不要帕馬森起司呀？」說要，他們就端著一大碗起司粉來，說：「Tell me when！」接著就挖一大勺起司粉，像是不要錢一樣撒上你的麵或飯。雖然我住起司州，新鮮的起司也還算是貴東西，看到他們那麼大方，真覺得自己像是被阿嬤寵的小孫子，每天都被餵地飽飽。&lt;/p&gt;
&lt;p&gt;其中我覺得很酷的是起司輪義大利麵（Cheese Wheel Pasta），又以 &lt;a href="https://maps.app.goo.gl/uynWX388Avqjta2r7"target="_blank"
&gt;Vincenzo&lt;/a&gt; 這家很酷炫（下面有影片），主廚做完義大利麵後（圖一），由服務生端來，並且推一個巨大的帕馬森起司進行桌邊服務：先拿噴槍將起司烤一烤，再把起司刮一刮，接著將義大利麵倒進去拌一拌，最後盛盤出餐。義大利麵裹了香濃的起司，怎能不好吃？我們也有和朋友吃另一間的 Cheese Wheel Pasta，不過他沒有用噴槍烤過起司，只有義大利麵安靜滑進去起司裡，拌個兩三下就出來了，跟這個不能比啊。&lt;/p&gt;
&lt;p&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/15/11.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/15/11.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/15/15.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/15/15.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/15/14.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/15/14.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/15/13.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/15/13.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/15/12.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/15/12.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/15/10.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/15/10.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;&lt;/p&gt;
&lt;div
class="video-js-container"&gt;
&lt;video
data-setup="{&amp;#34;language&amp;#34;:&amp;#34;zh-TW&amp;#34;,&amp;#34;playbackRates&amp;#34;:[0.5,1,1.5,2]}"
width="100%"
height="100%"
class="video-js vjs-default-skin vjs-fluid"
controls
&gt;
&lt;source
src="https://alicehsu.blog/images/Post/15/Cheese%20Wheel%20Pasta.mp4"
&gt;
&lt;/video&gt;
&lt;/div&gt;
&lt;h3 id="tacos--nachos"&gt;Tacos &amp;amp; Nachos&lt;/h3&gt;
&lt;p&gt;除了義大利菜之外，墨西哥的 Taco 也是來聖地牙哥必點的菜。我們分別去了 &lt;a href="https://maps.app.goo.gl/mZPy8NBqv8XuvHRf7"target="_blank"
&gt;Taco El Gordo&lt;/a&gt; 以及 &lt;a href="https://maps.app.goo.gl/qi79vQh418Ea2RbS9"target="_blank"
&gt;The Waves&lt;/a&gt; 這兩間店。這兩間店位於小義大利區的南邊，會議中心（Convention Center）走路十幾分鐘的距離。Taco El Gordo 永遠都有人在外面排隊，下午茶時間也還是能看到遊客站在外面等，生意非常之好。&lt;/p&gt;
&lt;p&gt;我們點了三種口味，我自己滿喜歡牛舌的，它有碳烤的香氣且調味適中。香菜味不像台灣的那麼重，本來不喜歡香菜的我都能接受（這趟旅程一直打破我對食物的既有印象），他還加了好多酪梨，而洋蔥以及檸檬汁也是起到了平衡口感與味道的作用，原本重口味的 Taco 就變得有層次分明了。至於飲料 Horchata 就是&amp;hellip;&amp;hellip;甜得要命，它好像是米做的吧，有濃重的肉桂香很不錯，可是這個甜度是喝了要糖暈的程度，實在沒辦法喝完。&lt;/p&gt;
&lt;p&gt;Taco El Gordo 沒有 Fish Taco，想吃 Fish Taco 的我們到了另外一間店 The Waves，點了 Taco 之後又點了 Nachos。他們家的魚非常大塊，滿不錯吃的；而 Nachos 的份量也很大，我們和朋友三個人勉強才吃完。&lt;/p&gt;
&lt;style&gt;
#masonry-355608443d626d04d38fd0fcefbdfe66-2 {
width: 100%;
}
#masonry-355608443d626d04d38fd0fcefbdfe66-2 .masonry-container {
width: 100%;
position: relative;
}
#masonry-355608443d626d04d38fd0fcefbdfe66-2 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-355608443d626d04d38fd0fcefbdfe66-2 .masonry-item img {
width: 100%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-355608443d626d04d38fd0fcefbdfe66-2 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-355608443d626d04d38fd0fcefbdfe66-2 .glightbox:hover,
#masonry-355608443d626d04d38fd0fcefbdfe66-2 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-355608443d626d04d38fd0fcefbdfe66-2 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-355608443d626d04d38fd0fcefbdfe66-2 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-355608443d626d04d38fd0fcefbdfe66-2"
data-columns="2"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/15/17.JPG"
class="glightbox"
data-gallery="masonry-355608443d626d04d38fd0fcefbdfe66-2"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/15/17.JPG"
alt="Taco El Gordo 人好多"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/15/17.JPG"
data-gallery-alt="Taco El Gordo 人好多"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;Taco El Gordo 人好多&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/15/18.JPG"
class="glightbox"
data-gallery="masonry-355608443d626d04d38fd0fcefbdfe66-2"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/15/18.JPG"
alt="牛舌/牛肉/豬肉Tacos (Taco El Gordo)"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/15/18.JPG"
data-gallery-alt="牛舌/牛肉/豬肉Tacos (Taco El Gordo)"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;牛舌/牛肉/豬肉Tacos (Taco El Gordo)&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/15/19.jpg"
class="glightbox"
data-gallery="masonry-355608443d626d04d38fd0fcefbdfe66-2"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/15/19.jpg"
alt="Nachos (The Waves)"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/15/19.jpg"
data-gallery-alt="Nachos (The Waves)"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;Nachos (The Waves)&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/15/20.jpg"
class="glightbox"
data-gallery="masonry-355608443d626d04d38fd0fcefbdfe66-2"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/15/20.jpg"
alt="Fish Tacos (The Waves)"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/15/20.jpg"
data-gallery-alt="Fish Tacos (The Waves)"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;Fish Tacos (The Waves)&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-355608443d626d04d38fd0fcefbdfe66-2';
const config = {
columns: 2 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;
&lt;h2 id="點心--飲料"&gt;點心 &amp;amp; 飲料&lt;/h2&gt;
&lt;p&gt;吃完正餐當然不能放過點心。照片上看起來沒那麼大，不過實際上這些甜點都是要兩個人或三個人才吃得完。說一說生平第一次吃到的 Crêpe 和 Cannoli 好了。台版的可麗餅是脆的，法式的餅皮是軟的，&lt;a href="https://maps.app.goo.gl/NtqKdpdP8B1a86Q47"target="_blank"
&gt;Le Parfait Paris&lt;/a&gt; 這間店賣多種口味的 Crêpe，我們點的 Crêpe 裡頭包了貨真價實的草莓，上頭又淋莓果醬，好吃！至於 &lt;a href="https://maps.app.goo.gl/MtpcPQXRd9DvfDSg6"target="_blank"
&gt;Solunto&lt;/a&gt; 所賣的 Cannoli，店裏有賣大的和小的，我們買了一根大的分食，它的餅皮是硬脆的，而且味道吃起來有點像台灣的菜脯餅，有點出戲哈哈哈。不過柔軟的內餡配上酥脆的餅皮，整體來說還不錯吃。&lt;/p&gt;
&lt;p&gt;飲料的話，首推 Galvanina 的果汁汽水，它在義大利雜貨店裡賣得很便宜，大概是 Walmart 價格的一半。喝了三種不同的口味後，還是覺得檸檬口味最讚了，檸檬汁帶點甜味，氣泡是溫和綿密的，不像雪碧那樣刺激，非常爽口！&lt;/p&gt;
&lt;style&gt;
#masonry-355608443d626d04d38fd0fcefbdfe66-3 {
width: 100%;
}
#masonry-355608443d626d04d38fd0fcefbdfe66-3 .masonry-container {
width: 100%;
position: relative;
}
#masonry-355608443d626d04d38fd0fcefbdfe66-3 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-355608443d626d04d38fd0fcefbdfe66-3 .masonry-item img {
width: 100%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-355608443d626d04d38fd0fcefbdfe66-3 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-355608443d626d04d38fd0fcefbdfe66-3 .glightbox:hover,
#masonry-355608443d626d04d38fd0fcefbdfe66-3 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-355608443d626d04d38fd0fcefbdfe66-3 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-355608443d626d04d38fd0fcefbdfe66-3 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-355608443d626d04d38fd0fcefbdfe66-3"
data-columns="3"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/15/23.jpg"
class="glightbox"
data-gallery="masonry-355608443d626d04d38fd0fcefbdfe66-3"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/15/23.jpg"
alt="法式可麗餅（Crêpe）"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/15/23.jpg"
data-gallery-alt="法式可麗餅（Crêpe）"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;法式可麗餅（Crêpe）&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/15/24.jpg"
class="glightbox"
data-gallery="masonry-355608443d626d04d38fd0fcefbdfe66-3"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/15/24.jpg"
alt="卡諾里（Cannoli）"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/15/24.jpg"
data-gallery-alt="卡諾里（Cannoli）"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;卡諾里（Cannoli）&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/15/25.jpg"
class="glightbox"
data-gallery="masonry-355608443d626d04d38fd0fcefbdfe66-3"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/15/25.jpg"
alt="拿波里派（Napoleon Pie）"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/15/25.jpg"
data-gallery-alt="拿波里派（Napoleon Pie）"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;拿波里派（Napoleon Pie）&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/15/26.JPG"
class="glightbox"
data-gallery="masonry-355608443d626d04d38fd0fcefbdfe66-3"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/15/26.JPG"
alt="提拉米蘇（Tiramisu）"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/15/26.JPG"
data-gallery-alt="提拉米蘇（Tiramisu）"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;提拉米蘇（Tiramisu）&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/15/27.JPG"
class="glightbox"
data-gallery="masonry-355608443d626d04d38fd0fcefbdfe66-3"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/15/27.JPG"
alt="愛爾蘭咖啡（Irish Coffee）"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/15/27.JPG"
data-gallery-alt="愛爾蘭咖啡（Irish Coffee）"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;愛爾蘭咖啡（Irish Coffee）&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/15/28.JPG"
class="glightbox"
data-gallery="masonry-355608443d626d04d38fd0fcefbdfe66-3"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/15/28.JPG"
alt="Galvanina 牌子的果汁汽水"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/15/28.JPG"
data-gallery-alt="Galvanina 牌子的果汁汽水"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;Galvanina 牌子的果汁汽水&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-355608443d626d04d38fd0fcefbdfe66-3';
const config = {
columns: 3 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;
&lt;h2 id="小結"&gt;小結&lt;/h2&gt;
&lt;p&gt;寫這篇文章的時候，邊寫邊覺得意猶未盡，很想念那些食物。如果所有的義大利餐廳一定要選一間，我會推薦 Buon Appetito，除了食物好吃外，這間店老闆很貼心，而附屬的雜貨店有一位滿有趣的小哥（&lt;a href="https://alicehsu.blog/zh-tw/posts/2025/12/%e8%a5%bf%e9%81%8a%e8%a8%98%e4%b8%89%e8%81%96%e5%9c%b0%e7%89%99%e5%93%a5%e4%b9%8b%e4%ba%ba%e7%89%a9%e9%80%9f%e5%af%ab/"&gt;之後再聊聊&lt;/a&gt;），有種別間義大利餐廳都沒有的溫馨感，這就是為什麼它值得登上我貼文縮圖和封面的原因啦！（沒有業配，真心推薦）&lt;/p&gt;
&lt;p&gt;下集再敘。&lt;/p&gt;</content:encoded></item><item><title>西遊記（一）：聖地牙哥之景點篇</title><link>https://alicehsu.blog/zh-tw/posts/2025/12/%E8%A5%BF%E9%81%8A%E8%A8%98%E4%B8%80%E8%81%96%E5%9C%B0%E7%89%99%E5%93%A5%E4%B9%8B%E6%99%AF%E9%BB%9E%E7%AF%87/</link><pubDate>Wed, 10 Dec 2025 23:50:00 -0600</pubDate><guid>https://alicehsu.blog/zh-tw/posts/2025/12/%E8%A5%BF%E9%81%8A%E8%A8%98%E4%B8%80%E8%81%96%E5%9C%B0%E7%89%99%E5%93%A5%E4%B9%8B%E6%99%AF%E9%BB%9E%E7%AF%87/</guid><description>剛從加州聖地牙哥（San Diego）旅遊回來，今年 NeurIPS 國際研討會在聖地牙哥舉辦，Sam 的論文投上了要去會議發表，我也托他的福有機會到聖地牙哥旅行啦！</description><media:thumbnail url="https://alicehsu.blog/images/Post/14/0-2.JPG"/><media:content url="https://alicehsu.blog/images/Post/14/0-2.JPG" medium="image"/><enclosure url="https://alicehsu.blog/images/Post/14/0-2.JPG" type="image/jpeg"/><content:encoded>&lt;img
src="https://alicehsu.blog/images/Post/14/0-2.JPG"
loading="eager"
/&gt;&lt;p&gt;為什麼叫作西遊記？因為這是一個住在威斯康辛州的作者往「西」旅行到加州的「遊記」，哈哈！&lt;/p&gt;
&lt;p&gt;剛從加州聖地牙哥（San Diego）旅遊回來，今年 NeurIPS 國際研討會在聖地牙哥舉辦，Sam 的&lt;a href="https://arxiv.org/pdf/2509.23564"target="_blank"
&gt;這篇論文&lt;/a&gt;投上了要去會議發表，我也托他的福有機會到聖地牙哥旅行啦！&lt;/p&gt;
&lt;p&gt;會議是 12/2 開始，我們提前了幾天，在感恩節（11/27）當天出發先去找朋友玩，剛好完美避開了威斯康辛州今年的第一場暴風雪，到一個可以只穿短袖的聖地牙哥度假。&lt;/p&gt;
&lt;p&gt;一下公車，好多人都在拍照，真的太漂亮了！
&lt;style&gt;
#masonry-e094762fff4917ad1422f086658d21ef-1 {
width: 100%;
}
#masonry-e094762fff4917ad1422f086658d21ef-1 .masonry-container {
width: 100%;
position: relative;
}
#masonry-e094762fff4917ad1422f086658d21ef-1 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-e094762fff4917ad1422f086658d21ef-1 .masonry-item img {
width: 60%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-e094762fff4917ad1422f086658d21ef-1 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-e094762fff4917ad1422f086658d21ef-1 .glightbox:hover,
#masonry-e094762fff4917ad1422f086658d21ef-1 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-e094762fff4917ad1422f086658d21ef-1 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-e094762fff4917ad1422f086658d21ef-1 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-e094762fff4917ad1422f086658d21ef-1"
data-columns="1"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/0-0.JPG"
class="glightbox"
data-gallery="masonry-e094762fff4917ad1422f086658d21ef-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/0-0.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/0-0.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/0-1.JPG"
class="glightbox"
data-gallery="masonry-e094762fff4917ad1422f086658d21ef-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/0-1.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/0-1.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/0-2.JPG"
class="glightbox"
data-gallery="masonry-e094762fff4917ad1422f086658d21ef-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/0-2.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/0-2.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-e094762fff4917ad1422f086658d21ef-1';
const config = {
columns: 1 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;&lt;/p&gt;
&lt;h2 id="巴爾波亞公園溫室植物園"&gt;巴爾波亞公園：溫室植物園&lt;/h2&gt;
&lt;p&gt;下飛機的第二天來到巴爾波亞公園（Balboa Park）走走，感恩節假期大概整個全聖地牙哥的人都來了，車子很難找到停車位，我們停在滿遠的地方散步一會進來的。&lt;/p&gt;
&lt;p&gt;Balboa Park 是個佔地很廣的公園，公園裡有許多不同的景點和博物館可以逛，一天是走不完的，我們挑了幾個有興趣的地方走走。其中一個就是這個溫室植物園（Botanical Building），天花板是鏤空的，下雨天可以順便幫植物澆水。裡頭的植物滿可愛的，還有一個小噴泉，很適合拍照。&lt;/p&gt;
&lt;style&gt;
#masonry-e094762fff4917ad1422f086658d21ef-2 {
width: 100%;
}
#masonry-e094762fff4917ad1422f086658d21ef-2 .masonry-container {
width: 100%;
position: relative;
}
#masonry-e094762fff4917ad1422f086658d21ef-2 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-e094762fff4917ad1422f086658d21ef-2 .masonry-item img {
width: 60%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-e094762fff4917ad1422f086658d21ef-2 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-e094762fff4917ad1422f086658d21ef-2 .glightbox:hover,
#masonry-e094762fff4917ad1422f086658d21ef-2 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-e094762fff4917ad1422f086658d21ef-2 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-e094762fff4917ad1422f086658d21ef-2 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-e094762fff4917ad1422f086658d21ef-2"
data-columns="1"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/1.JPG"
class="glightbox"
data-gallery="masonry-e094762fff4917ad1422f086658d21ef-2"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/1.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/1.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/2.JPG"
class="glightbox"
data-gallery="masonry-e094762fff4917ad1422f086658d21ef-2"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/2.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/2.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/3.JPG"
class="glightbox"
data-gallery="masonry-e094762fff4917ad1422f086658d21ef-2"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/3.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/3.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-e094762fff4917ad1422f086658d21ef-2';
const config = {
columns: 1 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;
&lt;h2 id="巴爾波亞公園聖地牙哥藝術博物館"&gt;巴爾波亞公園：聖地牙哥藝術博物館&lt;/h2&gt;
&lt;p&gt;第二個逛的是聖地牙哥藝術博物館（San Diego Museum of Art），Balboa Park 裡面許多的建築物就如這棟一樣，外牆有許多的雕刻。我們看了一些超現實主義（surrealism）、荷蘭畫、以及一位名為 Alfredo Castañeda 阿伯的畫。以下有許多不負責任之搞笑心得：
&lt;style&gt;
#masonry-e094762fff4917ad1422f086658d21ef-3 {
width: 100%;
}
#masonry-e094762fff4917ad1422f086658d21ef-3 .masonry-container {
width: 100%;
position: relative;
}
#masonry-e094762fff4917ad1422f086658d21ef-3 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-e094762fff4917ad1422f086658d21ef-3 .masonry-item img {
width: 60%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-e094762fff4917ad1422f086658d21ef-3 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-e094762fff4917ad1422f086658d21ef-3 .glightbox:hover,
#masonry-e094762fff4917ad1422f086658d21ef-3 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-e094762fff4917ad1422f086658d21ef-3 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-e094762fff4917ad1422f086658d21ef-3 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-e094762fff4917ad1422f086658d21ef-3"
data-columns="1"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/4.JPG"
class="glightbox"
data-gallery="masonry-e094762fff4917ad1422f086658d21ef-3"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/4.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/4.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/5.JPG"
class="glightbox"
data-gallery="masonry-e094762fff4917ad1422f086658d21ef-3"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/5.JPG"
alt="這是想表達前面的樹是煙斗的原料嗎？"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/5.JPG"
data-gallery-alt="這是想表達前面的樹是煙斗的原料嗎？"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;這是想表達前面的樹是煙斗的原料嗎？&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/6.JPG"
class="glightbox"
data-gallery="masonry-e094762fff4917ad1422f086658d21ef-3"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/6.JPG"
alt="有旅客指出右上角有艘船，好酷！"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/6.JPG"
data-gallery-alt="有旅客指出右上角有艘船，好酷！"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;有旅客指出右上角有艘船，好酷！&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/7.JPG"
class="glightbox"
data-gallery="masonry-e094762fff4917ad1422f086658d21ef-3"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/7.JPG"
alt="坐太久了靜脈曲張的小腿。"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/7.JPG"
data-gallery-alt="坐太久了靜脈曲張的小腿。"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;坐太久了靜脈曲張的小腿。&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/8.JPG"
class="glightbox"
data-gallery="masonry-e094762fff4917ad1422f086658d21ef-3"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/8.JPG"
alt="「姊姊今天不在家，去拿那幅畫像來畫全家福！」"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/8.JPG"
data-gallery-alt="「姊姊今天不在家，去拿那幅畫像來畫全家福！」"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;「姊姊今天不在家，去拿那幅畫像來畫全家福！」&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/9.JPG"
class="glightbox"
data-gallery="masonry-e094762fff4917ad1422f086658d21ef-3"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/9.JPG"
alt="Castañeda 阿伯的畫充滿了他的肖像，有好多我都覺得滿 ㄎ一ㄤ 滿有趣的（雖然人家想表達的是人有許多不同的身份認同）。"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/9.JPG"
data-gallery-alt="Castañeda 阿伯的畫充滿了他的肖像，有好多我都覺得滿 ㄎ一ㄤ 滿有趣的（雖然人家想表達的是人有許多不同的身份認同）。"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;Castañeda 阿伯的畫充滿了他的肖像，有好多我都覺得滿 ㄎ一ㄤ 滿有趣的（雖然人家想表達的是人有許多不同的身份認同）。&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/10.JPG"
class="glightbox"
data-gallery="masonry-e094762fff4917ad1422f086658d21ef-3"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/10.JPG"
alt="這種面無表情一堆臉的畫作出現在不只這幅畫裡，場館有好多其他類似的。"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/10.JPG"
data-gallery-alt="這種面無表情一堆臉的畫作出現在不只這幅畫裡，場館有好多其他類似的。"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;這種面無表情一堆臉的畫作出現在不只這幅畫裡，場館有好多其他類似的。&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/11.JPG"
class="glightbox"
data-gallery="masonry-e094762fff4917ad1422f086658d21ef-3"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/11.JPG"
alt="「你們看，這裡有洞耶！」"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/11.JPG"
data-gallery-alt="「你們看，這裡有洞耶！」"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;「你們看，這裡有洞耶！」&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-e094762fff4917ad1422f086658d21ef-3';
const config = {
columns: 1 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;&lt;/p&gt;
&lt;h2 id="聖地牙哥海事博物館"&gt;聖地牙哥海事博物館&lt;/h2&gt;
&lt;p&gt;海事博物館（Maritime Museum of San Diego）是我們覺得整體 CP 值最高的地方，每個人票價 28 美元，就能逛 9 艘船。它還有許多加購（出海巡航或是上海盜船等等）我們沒買，畢竟一般的入場票就足夠我們逛三個多小時了！這些船都停在 San Diego Bay，有些還能從一艘船走到另一艘。
&lt;style&gt;
#masonry-e094762fff4917ad1422f086658d21ef-4 {
width: 100%;
}
#masonry-e094762fff4917ad1422f086658d21ef-4 .masonry-container {
width: 100%;
position: relative;
}
#masonry-e094762fff4917ad1422f086658d21ef-4 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-e094762fff4917ad1422f086658d21ef-4 .masonry-item img {
width: 60%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-e094762fff4917ad1422f086658d21ef-4 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-e094762fff4917ad1422f086658d21ef-4 .glightbox:hover,
#masonry-e094762fff4917ad1422f086658d21ef-4 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-e094762fff4917ad1422f086658d21ef-4 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-e094762fff4917ad1422f086658d21ef-4 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-e094762fff4917ad1422f086658d21ef-4"
data-columns="1"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/13.JPG"
class="glightbox"
data-gallery="masonry-e094762fff4917ad1422f086658d21ef-4"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/13.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/13.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/14.JPG"
class="glightbox"
data-gallery="masonry-e094762fff4917ad1422f086658d21ef-4"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/14.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/14.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/16.JPG"
class="glightbox"
data-gallery="masonry-e094762fff4917ad1422f086658d21ef-4"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/16.JPG"
alt="這是 USS Dolphin 潛水艇的入口，可以走下去喔！"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/16.JPG"
data-gallery-alt="這是 USS Dolphin 潛水艇的入口，可以走下去喔！"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;這是 USS Dolphin 潛水艇的入口，可以走下去喔！&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/15.JPG"
class="glightbox"
data-gallery="masonry-e094762fff4917ad1422f086658d21ef-4"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/15.JPG"
alt="樓梯很陡，需要面朝外向下走。"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/15.JPG"
data-gallery-alt="樓梯很陡，需要面朝外向下走。"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;樓梯很陡，需要面朝外向下走。&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/17.JPG"
class="glightbox"
data-gallery="masonry-e094762fff4917ad1422f086658d21ef-4"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/17.JPG"
alt="可以看到聲納室。"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/17.JPG"
data-gallery-alt="可以看到聲納室。"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;可以看到聲納室。&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/18.JPG"
class="glightbox"
data-gallery="masonry-e094762fff4917ad1422f086658d21ef-4"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/18.JPG"
alt="能夠操作潛望鏡看到海面上的景象。"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/18.JPG"
data-gallery-alt="能夠操作潛望鏡看到海面上的景象。"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;能夠操作潛望鏡看到海面上的景象。&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/19.JPG"
class="glightbox"
data-gallery="masonry-e094762fff4917ad1422f086658d21ef-4"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/19.JPG"
alt="從潛望鏡看到的景色，超酷！（努力對焦許久的成果）"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/19.JPG"
data-gallery-alt="從潛望鏡看到的景色，超酷！（努力對焦許久的成果）"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;從潛望鏡看到的景色，超酷！（努力對焦許久的成果）&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/20.JPG"
class="glightbox"
data-gallery="masonry-e094762fff4917ad1422f086658d21ef-4"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/20.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/20.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/21.JPG"
class="glightbox"
data-gallery="masonry-e094762fff4917ad1422f086658d21ef-4"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/21.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/21.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/22.JPG"
class="glightbox"
data-gallery="masonry-e094762fff4917ad1422f086658d21ef-4"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/22.JPG"
alt="PCF 816 Swift Boat 船上還有發放頭盔和背心，體驗當海軍的感覺（不知道為什麼耳邊總響起「你這個爛砲兵～～～！」）有一個看起來疑似是船長本人的爺爺在和其他遊客聊天。"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/22.JPG"
data-gallery-alt="PCF 816 Swift Boat 船上還有發放頭盔和背心，體驗當海軍的感覺（不知道為什麼耳邊總響起「你這個爛砲兵～～～！」）有一個看起來疑似是船長本人的爺爺在和其他遊客聊天。"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;PCF 816 Swift Boat 船上還有發放頭盔和背心，體驗當海軍的感覺（不知道為什麼耳邊總響起「你這個爛砲兵～～～！」）有一個看起來疑似是船長本人的爺爺在和其他遊客聊天。&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/23.JPG"
class="glightbox"
data-gallery="masonry-e094762fff4917ad1422f086658d21ef-4"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/23.JPG"
alt="還有看起來很像是貴族會搭乘的船。"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/23.JPG"
data-gallery-alt="還有看起來很像是貴族會搭乘的船。"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;還有看起來很像是貴族會搭乘的船。&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/24.JPG"
class="glightbox"
data-gallery="masonry-e094762fff4917ad1422f086658d21ef-4"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/24.JPG"
alt="裡頭擺了很多看起來名貴的器皿可以假裝喝下午茶。"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/24.JPG"
data-gallery-alt="裡頭擺了很多看起來名貴的器皿可以假裝喝下午茶。"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;裡頭擺了很多看起來名貴的器皿可以假裝喝下午茶。&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/25.JPG"
class="glightbox"
data-gallery="masonry-e094762fff4917ad1422f086658d21ef-4"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/25.JPG"
alt="我們逛其他船的時候碰巧遇到海盜船出航。"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/25.JPG"
data-gallery-alt="我們逛其他船的時候碰巧遇到海盜船出航。"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;我們逛其他船的時候碰巧遇到海盜船出航。&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/26.JPG"
class="glightbox"
data-gallery="masonry-e094762fff4917ad1422f086658d21ef-4"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/26.JPG"
alt="結果它們就開始對戰啦！彼此發射砲彈（當然是發射到水裡），體驗感滿分！"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/26.JPG"
data-gallery-alt="結果它們就開始對戰啦！彼此發射砲彈（當然是發射到水裡），體驗感滿分！"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;結果它們就開始對戰啦！彼此發射砲彈（當然是發射到水裡），體驗感滿分！&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/27.JPG"
class="glightbox"
data-gallery="masonry-e094762fff4917ad1422f086658d21ef-4"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/27.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/27.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/28.JPG"
class="glightbox"
data-gallery="masonry-e094762fff4917ad1422f086658d21ef-4"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/28.JPG"
alt="Star of India 裡的船長室有高級的床。這艘船曾經載了不少移民，船上有一筆有趣 / 淒慘的資料是：1879 年，這艘船從倫敦航行前往紐西蘭，載了不少想移民的人，有個叫作 Stead Ellis 的人記錄：旅途末尾，食物短缺，許多乘客只能吃老鼠派（怕），我受不了飢餓偷了馬鈴薯。"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/28.JPG"
data-gallery-alt="Star of India 裡的船長室有高級的床。這艘船曾經載了不少移民，船上有一筆有趣 / 淒慘的資料是：1879 年，這艘船從倫敦航行前往紐西蘭，載了不少想移民的人，有個叫作 Stead Ellis 的人記錄：旅途末尾，食物短缺，許多乘客只能吃老鼠派（怕），我受不了飢餓偷了馬鈴薯。"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;Star of India 裡的船長室有高級的床。這艘船曾經載了不少移民，船上有一筆有趣 / 淒慘的資料是：1879 年，這艘船從倫敦航行前往紐西蘭，載了不少想移民的人，有個叫作 Stead Ellis 的人記錄：旅途末尾，食物短缺，許多乘客只能吃老鼠派（怕），我受不了飢餓偷了馬鈴薯。&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/29.JPG"
class="glightbox"
data-gallery="masonry-e094762fff4917ad1422f086658d21ef-4"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/29.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/29.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-e094762fff4917ad1422f086658d21ef-4';
const config = {
columns: 1 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;&lt;/p&gt;
&lt;p&gt;整體而言體驗很棒，每艘船上有滿多解說牌，自己逛我覺得不成問題，如果來聖地牙哥玩，非常推薦到這裡走走。&lt;/p&gt;
&lt;h2 id="鮪魚港公園海港村"&gt;鮪魚港公園+海港村&lt;/h2&gt;
&lt;p&gt;去鮪魚港公園（Tuna Harbor Park）主要是看這座勝利之吻（Unconditional Surrender）的雕像，人非常多，不只年輕的情侶，也有上了年紀的夫妻和母子在前面拍照。這座雕像的八卦滿多的，先按下不表。至於海港村（Seaport Village）有許多紀念品店，有些店賣滿潮的衣帽，朋友在這裡買了滿好看的 T-shirt，我本來看到一個鴨舌帽滿心動的，後來發現它只適合夏天的自己，就算啦。
&lt;style&gt;
#masonry-e094762fff4917ad1422f086658d21ef-5 {
width: 100%;
}
#masonry-e094762fff4917ad1422f086658d21ef-5 .masonry-container {
width: 100%;
position: relative;
}
#masonry-e094762fff4917ad1422f086658d21ef-5 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-e094762fff4917ad1422f086658d21ef-5 .masonry-item img {
width: 60%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-e094762fff4917ad1422f086658d21ef-5 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-e094762fff4917ad1422f086658d21ef-5 .glightbox:hover,
#masonry-e094762fff4917ad1422f086658d21ef-5 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-e094762fff4917ad1422f086658d21ef-5 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-e094762fff4917ad1422f086658d21ef-5 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-e094762fff4917ad1422f086658d21ef-5"
data-columns="1"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/32.JPG"
class="glightbox"
data-gallery="masonry-e094762fff4917ad1422f086658d21ef-5"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/32.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/32.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/33.JPG"
class="glightbox"
data-gallery="masonry-e094762fff4917ad1422f086658d21ef-5"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/33.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/33.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-e094762fff4917ad1422f086658d21ef-5';
const config = {
columns: 1 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;&lt;/p&gt;
&lt;h2 id="日落懸崖"&gt;日落懸崖&lt;/h2&gt;
&lt;p&gt;日落懸崖（Sunset Cliffs Natural Park）是這次旅遊的另一個高潮。那天太陽大概四點三十幾分下山，我們一路趕著追夕陽，那天的天邊有一些雲，快到的時候，在車上看見夕陽落入雲底，真的很美。
&lt;style&gt;
#masonry-e094762fff4917ad1422f086658d21ef-6 {
width: 100%;
}
#masonry-e094762fff4917ad1422f086658d21ef-6 .masonry-container {
width: 100%;
position: relative;
}
#masonry-e094762fff4917ad1422f086658d21ef-6 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-e094762fff4917ad1422f086658d21ef-6 .masonry-item img {
width: 60%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-e094762fff4917ad1422f086658d21ef-6 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-e094762fff4917ad1422f086658d21ef-6 .glightbox:hover,
#masonry-e094762fff4917ad1422f086658d21ef-6 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-e094762fff4917ad1422f086658d21ef-6 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-e094762fff4917ad1422f086658d21ef-6 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-e094762fff4917ad1422f086658d21ef-6"
data-columns="1"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/42.JPG"
class="glightbox"
data-gallery="masonry-e094762fff4917ad1422f086658d21ef-6"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/42.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/42.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/43.JPG"
class="glightbox"
data-gallery="masonry-e094762fff4917ad1422f086658d21ef-6"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/43.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/43.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/44.jpg"
class="glightbox"
data-gallery="masonry-e094762fff4917ad1422f086658d21ef-6"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/44.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/44.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/45.jpg"
class="glightbox"
data-gallery="masonry-e094762fff4917ad1422f086658d21ef-6"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/45.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/45.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/46.jpg"
class="glightbox"
data-gallery="masonry-e094762fff4917ad1422f086658d21ef-6"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/46.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/46.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/47.jpg"
class="glightbox"
data-gallery="masonry-e094762fff4917ad1422f086658d21ef-6"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/47.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/47.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/48.jpg"
class="glightbox"
data-gallery="masonry-e094762fff4917ad1422f086658d21ef-6"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/48.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/48.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/49.jpg"
class="glightbox"
data-gallery="masonry-e094762fff4917ad1422f086658d21ef-6"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/49.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/49.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/50.jpg"
class="glightbox"
data-gallery="masonry-e094762fff4917ad1422f086658d21ef-6"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/50.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/50.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/51.jpg"
class="glightbox"
data-gallery="masonry-e094762fff4917ad1422f086658d21ef-6"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/51.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/51.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-e094762fff4917ad1422f086658d21ef-6';
const config = {
columns: 1 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;&lt;/p&gt;
&lt;h2 id="小結"&gt;小結&lt;/h2&gt;
&lt;p&gt;謝謝你看完這篇圖很多的貼文，西遊記還會有後面幾集，包含美食和一些意外的景點，請持續追蹤：）&lt;/p&gt;</content:encoded></item><item><title>我寫了藤井風 Kirari 的 Piano Cover</title><link>https://alicehsu.blog/zh-tw/posts/2025/12/%E6%88%91%E5%AF%AB%E4%BA%86%E8%97%A4%E4%BA%95%E9%A2%A8-kirari-%E7%9A%84-piano-cover/</link><pubDate>Tue, 09 Dec 2025 15:00:00 -0600</pubDate><guid>https://alicehsu.blog/zh-tw/posts/2025/12/%E6%88%91%E5%AF%AB%E4%BA%86%E8%97%A4%E4%BA%95%E9%A2%A8-kirari-%E7%9A%84-piano-cover/</guid><description>寫 Piano Cover 可能有點像翻譯吧，把一首由樂團演奏的曲子「翻譯」成由鋼琴演奏的曲子，挺有成就感的。</description><media:thumbnail url="https://alicehsu.blog/images/Post13home.jpg"/><media:content url="https://alicehsu.blog/images/Post13home.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post13home.jpg" type="image/jpeg"/><content:encoded>&lt;p&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post13home.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post13home.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
（最近開始學習使用電繪 App，這張是臨摹 Fujii Kaze 的照片畫的喔！自己滿喜歡的。）&lt;/p&gt;
&lt;h2 id="緣起"&gt;緣起&lt;/h2&gt;
&lt;p&gt;對我來說寫 Piano Cover 能訓練自己鋼琴編曲的能力。可能有點像翻譯吧，把一首由樂團演奏的曲子「翻譯」成由鋼琴演奏的曲子，挺有成就感的。&lt;/p&gt;
&lt;p&gt;會挑藤井風的 Kirari，出發點是想訓練自己能否駕馭不同的曲風。這首曲子其實 YouTube 上有許多人都做過。不過，聽了幾個版本之後，我發現不是太吵就是太無聊，於是給自己一個挑戰：我想寫一個耐聽、並且每個樂段的伴奏都有變化的曲子！&lt;/p&gt;
&lt;p&gt;結果，後來發現難的不是寫曲，而是之後的練琴啊啊啊ヽ(；▽；)ノ&lt;/p&gt;
&lt;p&gt;前一陣子練琴傷到了手。確切而言，是練前一台 keyboard 的時候，因為從彈鋼琴改成彈 keyboard 用了錯誤的肌肉，結果手就傷到了。結果，練這首滿需要技巧的曲子只能練練停停。練琴進度緩慢，不過前一陣子總算是錄完了！（感謝啾 C 和 SunGuts 物理治療師的許多手部伸展影片）雖然有一些不太完美的地方，不過整體來說還算滿意！&lt;/p&gt;
&lt;h2 id="編曲流程"&gt;編曲流程&lt;/h2&gt;
&lt;p&gt;以下是我寫一首 Piano Cover 大致的流程：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;快速找出主唱的旋律作為右手的主旋律&lt;/li&gt;
&lt;li&gt;以 0.5 倍速聽不太確定的地方，修改抓錯的右手節奏&lt;/li&gt;
&lt;li&gt;寫出所有的和弦&lt;/li&gt;
&lt;li&gt;將和弦編成左手的伴奏&lt;/li&gt;
&lt;li&gt;編好初版的曲子，先練琴，修改不符合我彈琴直覺的音符與樂段（無限循環）。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;自己寫 Cover 的好處就是：我可以改譜改到開心！覺得哪裡不太不合人體工學，就能把它刪掉！對於一個從小彈古典音樂的人來說，可以改譜有種小小犯規的感覺哈哈哈。&lt;/p&gt;
&lt;h3 id="輔助工具一"&gt;輔助工具一&lt;/h3&gt;
&lt;p&gt;編曲的過程中，我有使用一些工具輔助我寫 Cover。第一個工具是網路上的 Music Seperation：將人聲和器樂分開，這對於我處在第二、三、四階段時很有幫助。在第二個階段，只有人聲的音樂能讓我更專心去辨別歌手的音高和節奏，比較不會被器樂分心；在第三、四階段，只有器樂的演奏能讓我專心分析和弦和樂團編曲，有助於我不被人聲干擾。（當然這只是大概，畢竟辨識和弦還是需要將人聲考慮進去）。&lt;/p&gt;
&lt;h3 id="輔助工具二"&gt;輔助工具二&lt;/h3&gt;
&lt;p&gt;第二個工具則是 &lt;a href="https://nicechord.com/tuner/"target="_blank"
&gt;Wiwi 的音高顯示器&lt;/a&gt;。對於一些節奏很快、不確定藤井到底唱的是哪個音時，音高顯示器就派上用場了！我將音樂開 0.5 倍速，一邊開啟音高顯示器來確認到底是哪個音，通常人聲滿大聲的，用這個工具辨認歌手的音沒什麼問題。&lt;/p&gt;
&lt;h2 id="最好玩的部分"&gt;最好玩的部分&lt;/h2&gt;
&lt;p&gt;第四階段是編曲時最能發揮創意的階段，也是我個人覺得最好玩的階段。當一首曲子的主要旋律和和弦盡量如實「翻譯」完畢後，剩下的部分就是不可譯（Untranslatable）的部分，那是樂團編制獨有的綜合音色，產生的是鋼琴無法完全複製貼上的效果。這部分就能盡情發揮，想寫什麼就寫什麼。&lt;/p&gt;
&lt;h3 id="第一部分"&gt;第一部分&lt;/h3&gt;
&lt;p&gt;覺得頗有成就感的是從第 66 小節開始的左手段落：&lt;/p&gt;
&lt;p&gt;&lt;div class="w-10"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/rIAMN3ULdX8?autoplay=0&amp;amp;controls=1&amp;amp;end=140&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=133" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/13/1.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/13/1.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;這裡原曲其實挺複雜的，我後來決定不寫複雜的和聲，直接改以複雜的節奏呈現。這邊不太好彈，後來發現將手腕放輕鬆，彈對的成功率會高很多。&lt;/p&gt;
&lt;h3 id="第二部分"&gt;第二部分&lt;/h3&gt;
&lt;p&gt;另一段我很喜歡的部分是 33 小節副歌開始的左手伴奏。
&lt;div class="w-10"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/rIAMN3ULdX8?autoplay=0&amp;amp;controls=1&amp;amp;end=86&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=67" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/13/2.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/13/2.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/13/3.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/13/3.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/13/4.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/13/4.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;因為副歌滿長的，為了聽起來不無聊，左手伴奏有一些些變化，比如說原本左手第一拍是八度上行，經過四小節後變成是同音重複的彈奏方式；又比如原本第二拍是十六分音符，後來改成附點八分音符。我還滿喜歡這樣的效果的。&lt;/p&gt;
&lt;h2 id="結語"&gt;結語&lt;/h2&gt;
&lt;p&gt;其實自己實際錄音彈的，有些部分還是和自己寫的有出入，不過，可以盡情改譜大概是身為編曲/作曲者的特權了。下一次會挑戰完成另一個不同形式的作品，敬請期待：）&lt;/p&gt;
&lt;p&gt;以下是完整版：
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/rIAMN3ULdX8?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;/p&gt;</content:encoded></item><item><title>包裹在哪裡？</title><link>https://alicehsu.blog/zh-tw/posts/2025/11/%E5%8C%85%E8%A3%B9%E5%9C%A8%E5%93%AA%E8%A3%A1/</link><pubDate>Wed, 26 Nov 2025 16:35:25 -0600</pubDate><guid>https://alicehsu.blog/zh-tw/posts/2025/11/%E5%8C%85%E8%A3%B9%E5%9C%A8%E5%93%AA%E8%A3%A1/</guid><description>訂單上顯示了一個 Fedex 的連結，讓人用來追蹤包裹。</description><media:thumbnail url="https://alicehsu.blog/images/Post12home.jpg"/><media:content url="https://alicehsu.blog/images/Post12home.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post12home.jpg" type="image/jpeg"/><content:encoded>&lt;img
src="https://alicehsu.blog/images/Post12home.jpg"
loading="eager"
/&gt;&lt;p&gt;最近網購個東西，下單後，訂單上顯示了 Fedex 的連結，讓人用來追蹤包裹。&lt;/p&gt;
&lt;p&gt;有點心急想快點拿到，下單後，三不五時就會去看一下包裹現在在哪裡。&lt;/p&gt;
&lt;p&gt;某一天，我忽然意識到：不是啊，難道我看多次一點，司機就會開快一點嗎？這東西也不用冰，也不需要算好時間收包裹把東西塞進&lt;a href="https://alicehsu.blog/zh-tw/posts/2025/11/%EF%B8%8F-%e7%83%8f%e6%89%98%e9%82%a6%e5%bc%8f%e6%99%ba%e6%85%a7%e5%86%b0%e7%ae%b1/"&gt;冰箱&lt;/a&gt;，那我幹嘛還在這邊點連結？反正到了就是到了，沒到就是沒到。&lt;/p&gt;
&lt;p&gt;我又發現，對於沒辦法掌控和決定的事情，憂慮與擔心不就和追蹤包裹的連結一樣嗎？它欺騙你的大腦，讓你覺得好像可以掌控事情的發展。可是，你做的只是點開連結而已，並沒有自己手握方向盤腳踩油門，甚至也沒有叫司機飆車開快點。&lt;/p&gt;
&lt;p&gt;克制了幾次點連結的衝動，今天寫文章的我不爭氣地又點了一次包裹連結，好吧，已經從 Texas 到了 Chicago，感恩節的禮物潮讓貨運變得好慢啊。&lt;/p&gt;</content:encoded></item><item><title>遇見浦朗克（Francis Poulenc）</title><link>https://alicehsu.blog/zh-tw/posts/2025/11/%E9%81%87%E8%A6%8B%E6%B5%A6%E6%9C%97%E5%85%8Bfrancis-poulenc/</link><pubDate>Mon, 24 Nov 2025 20:13:07 -0600</pubDate><guid>https://alicehsu.blog/zh-tw/posts/2025/11/%E9%81%87%E8%A6%8B%E6%B5%A6%E6%9C%97%E5%85%8Bfrancis-poulenc/</guid><description>浦朗克是個什麼樣子的人？他對音樂有什麼看法？他有喜歡和不喜歡的作曲家嗎？</description><media:thumbnail url="https://alicehsu.blog/images/Post/11/2.jpg"/><media:content url="https://alicehsu.blog/images/Post/11/2.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post/11/2.jpg" type="image/jpeg"/><content:encoded>&lt;h2 id="遇見"&gt;遇見&lt;/h2&gt;
&lt;p&gt;法蘭西斯·浦朗克 （Francis Poulenc，1899 – 1963）是法國的作曲家和鋼琴家，為法國六人組（Les Six）的其中一人。台灣的期刊論文常翻譯為浦朗克或浦浪克，在此就稱他為浦朗克了。&lt;/p&gt;
&lt;p&gt;第一次認識浦朗克是透過&lt;a href="https://www.youtube.com/watch?v=vE9QNQYPN2Q"target="_blank"
&gt;《即興曲第七號》&lt;/a&gt;認識他的，這首曲子被列入某個鋼琴檢定的指定曲之一，孤陋寡聞的我才曉得原來古典音樂有這號人物。記得第一次聽，就被它豐富的和聲深深吸引：這首曲子從平淡無奇、看似單純無害的Ｃ大調出發，結果，隨著神秘又變化多端的和弦一一出現，才發現它其實並不簡單。我自己特別喜歡 B 段令人心碎的開頭，以及中間層層堆疊、磅礴寬廣的八度，還有高潮褪去，洗盡鉛華回到 C 大調的轉折，好吧，喜歡的部分太多了，就不在此贅述。&lt;/p&gt;
&lt;p&gt;是什麼樣子的人會寫出這樣的曲子？他對音樂有什麼看法？他有喜歡和不喜歡的作曲家嗎？對這個人的好奇促使我找了些資料，且聽我娓娓道來。&lt;/p&gt;
&lt;h2 id="速寫浦朗克"&gt;速寫浦朗克&lt;/h2&gt;
&lt;style&gt;
#masonry-b88edcfd2524926ef1b32a970dc4a528-1 {
width: 100%;
}
#masonry-b88edcfd2524926ef1b32a970dc4a528-1 .masonry-container {
width: 100%;
position: relative;
}
#masonry-b88edcfd2524926ef1b32a970dc4a528-1 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 5px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-b88edcfd2524926ef1b32a970dc4a528-1 .masonry-item img {
width: 90%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-b88edcfd2524926ef1b32a970dc4a528-1 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-b88edcfd2524926ef1b32a970dc4a528-1 .glightbox:hover,
#masonry-b88edcfd2524926ef1b32a970dc4a528-1 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-b88edcfd2524926ef1b32a970dc4a528-1 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-b88edcfd2524926ef1b32a970dc4a528-1 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-b88edcfd2524926ef1b32a970dc4a528-1"
data-columns="2"
data-gutter="5"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="5"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/11/1.jpg"
class="glightbox"
data-gallery="masonry-b88edcfd2524926ef1b32a970dc4a528-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/11/1.jpg"
alt="照片攝於 1946 年，約浦朗克 47 歲時。此張照片在 Public Domain，出自於 University of Melbourne Archives。連結：https://archives.library.unimelb.edu.au/nodes/view/431648"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/11/1.jpg"
data-gallery-alt="照片攝於 1946 年，約浦朗克 47 歲時。此張照片在 Public Domain，出自於 University of Melbourne Archives。連結：https://archives.library.unimelb.edu.au/nodes/view/431648"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;照片攝於 1946 年，約浦朗克 47 歲時。此張照片在 Public Domain，出自於 University of Melbourne Archives。連結：https://archives.library.unimelb.edu.au/nodes/view/431648&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-b88edcfd2524926ef1b32a970dc4a528-1';
const config = {
columns: 2 ,
gutter: 5 ,
maxColumns: 5 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;
&lt;p&gt;浦朗克在 1899 年出生於法國巴黎富有的中產階級家庭裡，父親埃米爾·浦朗克（Emile Poulenc）經營一間製藥公司，而母親珍妮（Jenny，舊姓 Royer）出身於藝術工匠家庭。五歲的浦朗克由母親啟蒙學習鋼琴，母親不久後就把他交給其他人教導。對浦朗克影響最大的老師，是他 15 歲至 18 歲時的老師韋涅斯（Ricardo Viñes），此人不只在鋼琴上啟發甚多，也在他生命中扮演著生命導師（spiritual mentor）的角色；其次，就是他 22 歲時找的老師柯克蘭（Charles Koechlin），因為覺得自己作曲多半倚賴直覺，而非智識，而決定與柯克蘭學習，補足自己不足的部分。其實，浦朗克本來是想去讀音樂學院的，不過，因父親堅持他得要先在孔多塞中學（Lycée Condorcet）接受傳統的人文古典教育才能繼續讀音樂學院，他就乖乖讀了。不幸的是，因雙親在他 18 歲之前雙雙過世，再加上一戰爆發，讀音樂院的計劃就此被打亂，不過卻沒有阻礙他的音樂之路。18 歲那年，因著作品&lt;a href="https://www.youtube.com/watch?v=brC3qrv3Yv0"target="_blank"
&gt;《黑人狂想曲》（FP 3）&lt;/a&gt;在巴黎首演，浦朗克贏得了史特拉汶斯基的賞識，並且作品得以由倫敦的 Chester 出版社出版。&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;讀浦朗克的生平，在一些點上覺得挺有共鳴：國高中時我極想讀音樂班也是不成，大學唸的是文學，原本也打算唸完文學之後去唸個音樂所，因著世事變化後來還是沒有唸成。二十歲左右，也是覺得自己缺乏某些專業素養而找了老師（後來發現找錯人了，這又是另個故事）。現在回頭看來，的確還是有些遺憾，不過遺憾感沒有之前那麼多了，如果我過去是受正統的學院訓練，搞不好會花很多時間在我沒那麼喜歡的學科（比如說歌劇）：而我也沒有機會享受到讀文學的好處。或許浦朗克沒讀音樂學院也讓他得享作曲上的某些自由吧？&lt;/p&gt;
&lt;div
class="alert alert-note my-6 overflow-hidden rounded-lg transition-all duration-200 ease-out hover:-translate-y-0.5 hover:shadow-md"
style="background-color: color-mix(in srgb, var(--color-note) 10%, transparent);
border-left-color: var(--color-note);
--hover-bg: color-mix(in srgb, var(--color-note) 15%, transparent);"
onmouseover="this.style.backgroundColor = this.style.getPropertyValue('--hover-bg')"
onmouseout="this.style.backgroundColor = 'color-mix(in srgb, var(--color-note) 10%, transparent)'"
role="alert"
aria-labelledby="alert-0-title"&gt;
&lt;div
class="
cursor-pointer
flex items-center justify-between px-6 py-6"
onclick="toggleAlert('alert-0')" role="button" tabindex="0"
aria-expanded="false" aria-controls="alert-0-content"
onkeydown="if(event.key==='Enter'||event.key===' '){toggleAlert('alert-0');event.preventDefault();}"
&gt;
&lt;div class="flex items-center gap-3"&gt;
&lt;h4
id="alert-0-title"
class="m-0 font-semibold text-foreground/90"&gt;
🗣️ Fun Fact 1 ：他是 E 人還是 I 人？
&lt;/h4&gt;
&lt;/div&gt;
&lt;div
class="flex-shrink-0 transition-transform duration-200"
id="alert-0-chevron"&gt;
&lt;svg class="h-4 w-4"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7" /&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div
id="alert-0-content"
class="alert-content
hidden
px-6 pb-6 items-center justify-between "&gt;
&lt;div class="prose prose-sm text-foreground/90 max-w-none"&gt;
&lt;p&gt;浦朗克大概是個大 E 人，而且是講話很爆笑，是聚會焦點的那種人。很多朋友都說他是個很會說故事的人（storyteller），如果聚會要炒熱氣氛，叫他講個故事就好了，浦朗克可以源源不絕一直說下去。&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt; 🗣️🗣️🗣️&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;div
class="alert alert-tip my-6 overflow-hidden rounded-lg transition-all duration-200 ease-out hover:-translate-y-0.5 hover:shadow-md"
style="background-color: color-mix(in srgb, var(--color-tip) 10%, transparent);
border-left-color: var(--color-tip);
--hover-bg: color-mix(in srgb, var(--color-tip) 15%, transparent);"
onmouseover="this.style.backgroundColor = this.style.getPropertyValue('--hover-bg')"
onmouseout="this.style.backgroundColor = 'color-mix(in srgb, var(--color-tip) 10%, transparent)'"
role="alert"
aria-labelledby="alert-1-title"&gt;
&lt;div
class="
cursor-pointer
flex items-center justify-between px-6 py-6"
onclick="toggleAlert('alert-1')" role="button" tabindex="0"
aria-expanded="false" aria-controls="alert-1-content"
onkeydown="if(event.key==='Enter'||event.key===' '){toggleAlert('alert-1');event.preventDefault();}"
&gt;
&lt;div class="flex items-center gap-3"&gt;
&lt;h4
id="alert-1-title"
class="m-0 font-semibold text-foreground/90"&gt;
📻 Fun Fact 2：跟得上時代的酷大叔&lt;br&gt;
&lt;/h4&gt;
&lt;/div&gt;
&lt;div
class="flex-shrink-0 transition-transform duration-200"
id="alert-1-chevron"&gt;
&lt;svg class="h-4 w-4"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7" /&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div
id="alert-1-content"
class="alert-content
hidden
px-6 pb-6 items-center justify-between "&gt;
&lt;div class="prose prose-sm text-foreground/90 max-w-none"&gt;
&lt;p&gt;浦朗克可說是個非常跟得上時代的人：留聲機剛發明，就用留聲機錄了自己的曲子，最早的錄音可以追溯到 1928 年；四五十歲時，因看見收音機的影響力，於是在法國廣播電台做了節目。&lt;sup id="fnref:3"&gt;&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref"&gt;3&lt;/a&gt;&lt;/sup&gt; 我想，若他活在現代，浦朗克大概也會開個 Podcast 聊音樂吧 🎙️&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;h2 id="浦朗克的鋼琴作品"&gt;浦朗克的鋼琴作品&lt;/h2&gt;
&lt;h3 id="不該怎樣演奏他的鋼琴曲"&gt;不該怎樣演奏他的鋼琴曲？&lt;/h3&gt;
&lt;p&gt;要明白一首曲子該如何彈奏，除了認真讀譜上每個記號和音樂術語之外，還有個不錯的切入點，就是聽聽作曲者親口說他討厭自己的作品被怎樣演奏。與侯斯唐（Claude Rostand）的對談中，浦朗克提及自己的鋼琴作品演奏有四不：&lt;strong&gt;不要彈性速度（rubato）&lt;/strong&gt;、&lt;strong&gt;不要吝於踩踏板&lt;/strong&gt;、&lt;strong&gt;不要擅自延長或縮減音符的時值&lt;/strong&gt;、&lt;strong&gt;不要過度強調反覆出現的和弦或琶音&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;對浦朗克而言，他超討厭 rubato ，覺得一旦速度設定好了，就用原本的速度彈到底就好，除非他中間有指示速度的轉換再換即可；另外，不要擅改音符的時值，這會讓他瘋掉，他還寧可錯音一堆，也不願音符被彈地太長或太短；而踏板是他最在乎的，踩踏板的方式深深受到老師韋涅斯的影響，浦朗克說韋涅斯即使踏板用得很多很雜亂，他的演奏仍然清晰，因著老師的影響，他覺得自己的鋼琴作品踏板怎麼踩都不夠、永遠不夠，浦朗克說，當他聽到某些鋼琴家演奏他的作品沒有踩夠多的踏板時，他很想大喊：&lt;strong&gt;「把奶油加到醬汁裡啊！你在減什麼肥啊！」&lt;/strong&gt;&lt;sup id="fnref:4"&gt;&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref"&gt;4&lt;/a&gt;&lt;/sup&gt;（聽起來真好吃，浦朗克的音樂聽多了會不會胖 lol）&lt;/p&gt;
&lt;p&gt;讀到踏板要踩越多越好時，我滿驚訝的。仔細想想，我發現我的驚訝不是針對浦朗克的音樂，而是我自己對音樂的預設立場是踏板越少越好，彈一首曲子如果可以不用踏板就不用。或許這樣的想法是來自擔心吧：擔心踩太多踏板會讓音符糊糊髒髒的。不過的確，如果踏板踩的方式能夠讓音樂多一層味道，音符又能清晰，那何樂而不為？&lt;/p&gt;
&lt;h3 id="對自己鋼琴作品的評價"&gt;對自己鋼琴作品的評價&lt;/h3&gt;
&lt;p&gt;對自己作品詮釋很有想法的浦朗克，評論起自己的鋼琴作品也是愛惡分明、毫不嘴軟，我自己就喜歡他直來直往的性子。浦朗克說，他能「容忍」&lt;a href="https://www.youtube.com/watch?v=R7Z_3EA9pyY"target="_blank"
&gt;《無窮動》（FP 14）&lt;/a&gt;、&lt;a href="https://www.youtube.com/watch?v=zRvDH9OTyXY"target="_blank"
&gt;《C 大調組曲》（FP 19）&lt;/a&gt;以及&lt;a href="https://www.youtube.com/watch?v=f1toEsWfF6Q"target="_blank"
&gt;《三首小品》（FP 5）&lt;/a&gt;；他非常喜愛&lt;a href="https://www.youtube.com/watch?v=_4WI6B8rY4o"target="_blank"
&gt;《即興曲》&lt;/a&gt;、還有一首&lt;a href="https://www.youtube.com/watch?v=OgaqeMzEjS8"target="_blank"
&gt;《降 A 大調的間奏曲》（FP 118）&lt;/a&gt;；徹底不喜歡&lt;a href="https://www.youtube.com/watch?v=XQXDv2hpTG0"target="_blank"
&gt;《拿坡里》（FP 40）&lt;/a&gt;和&lt;a href="https://www.youtube.com/watch?v=Fj165Gsfoeg"target="_blank"
&gt;《納澤勒之夜》（FP 84）&lt;/a&gt;，至於其他作品嘛，則一概不感興趣。&lt;sup id="fnref:5"&gt;&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref"&gt;5&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;他沒有詳細解釋自己討厭和喜歡的理由，被好奇心驅使的我忍不住找了他提及的作品來聽，想一聽究竟，結果聽完更疑惑了，他需要「容忍」的《無窮動》是我很喜歡的曲子，我還真能反覆循環聽下去，實在不明白為何他沒那麼喜歡？不過，我想作曲家的品味本來就不會完全同於聽眾的品味，而這或許也是任何的創作者需要具備的特質，不能將自己的品味全然建立在觀眾之上，而是需要保持適當的距離。&lt;/p&gt;
&lt;h2 id="浦朗克喜歡和討厭的作曲家"&gt;浦朗克喜歡和討厭的作曲家&lt;/h2&gt;
&lt;p&gt;在另個訪談中，侯斯唐請浦朗克選六個他喜歡的作曲家。經過一番掙扎後，浦朗克選了&lt;strong&gt;德布西、史特拉汶斯基、薩堤、法雅、拉威爾和巴爾托克&lt;/strong&gt;，並且很遺憾沒能把普羅高非夫選進去。&lt;sup id="fnref:6"&gt;&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref"&gt;6&lt;/a&gt;&lt;/sup&gt; 對浦朗克而言，德布西的音樂喚醒了他對音樂的感受，不過卻是史特拉汶斯基的音樂引導了他的作曲風格，在浦朗克的音樂裡，史特拉汶斯基有著強烈的存在感。&lt;sup id="fnref:7"&gt;&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref"&gt;7&lt;/a&gt;&lt;/sup&gt; 至於拉威爾則是影響了浦朗克的和聲，特別是&lt;a href="https://www.youtube.com/watch?v=_rtZF5mAj0w"target="_blank"
&gt;《動物的典型》（FP 111）&lt;/a&gt;這首曲子就受到拉威爾的影響；而薩堤則是在音樂的美感上影響了他。&lt;sup id="fnref:8"&gt;&lt;a href="#fn:8" class="footnote-ref" role="doc-noteref"&gt;8&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;被問到討厭哪些作曲家，浦朗克倒也直言不諱，而且批評的方式很有創意。比如說，他不喜歡布拉姆斯，因為他「有舒曼的缺點，卻沒有舒曼的天賦」（He has Schumann&amp;rsquo;s faults without his genius）；&lt;sup id="fnref:9"&gt;&lt;a href="#fn:9" class="footnote-ref" role="doc-noteref"&gt;9&lt;/a&gt;&lt;/sup&gt; 他也不喜歡佛瑞，他說他對佛瑞的音樂過敏，而且一生都過敏（in my case I&amp;rsquo;m allergic to Fauré, and have been all my life）。&lt;sup id="fnref:10"&gt;&lt;a href="#fn:10" class="footnote-ref" role="doc-noteref"&gt;10&lt;/a&gt;&lt;/sup&gt; 即便批評，浦朗克也肯定這些作曲家的優點：布拉姆斯也的確還是一位天才，而他也還是喜歡佛瑞的藝術歌曲。值得一提的是，浦朗克的批評並非酸民式的胡亂攻擊，他可是從小就研讀這些大師們的作品。&lt;sup id="fnref:11"&gt;&lt;a href="#fn:11" class="footnote-ref" role="doc-noteref"&gt;11&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;浦朗克的訪談真的很好看，十分建議大家去讀一讀（其實原文是法文，這則文獻是由 Roger Nichols 翻譯成英文的），浦朗克是個說話很風趣好笑的阿伯，也有很多有意思的比喻。我自己很欣賞他對自己誠實的特質，我想這大概是成為藝術家非常重要的特質之一了：不人云亦云、有自己的想法。對浦朗克而言，即使布拉姆斯和佛瑞再好、別人再喜歡，那也都別人的，而不是他的品味。誠實面對自己喜歡什麼、不喜歡什麼，才能在中間開出一條縫，走出屬於自己的一條路。&lt;/p&gt;
&lt;h2 id="結語"&gt;結語&lt;/h2&gt;
&lt;p&gt;其實浦朗克的資料真的很多，他曾和皮埃爾·貝納克（Pierre Bernac）合作，寫了 90 多首法國藝術歌曲（mélodies），自己也有其他類型的音樂作品（以前這些古典音樂大師真的都好多產啊！）。由於我在所有音樂的種類中最喜歡器樂作品，所有器樂作品中又最喜歡鋼琴作品，浦朗克的鋼琴作品是這篇文章主要關注的重點，就不繼續探討他的其他創作了，如果哪天有力氣我再續寫有關浦朗克的其他事吧。&lt;/p&gt;
&lt;p&gt;最後，分享前一陣子自己的演奏，彈的就是最初相遇的即興曲第七首，希望有稍微接近浦朗克阿伯心目中的標準。
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/vE9QNQYPN2Q?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Bibliography&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Chimènes, Myriam and Roger Nichols. “Poulenc, Francis.” &lt;em&gt;Grove Music Online&lt;/em&gt;. Oxford University Press, 2001. &lt;a href="https://doi.org/10.1093/gmo/9781561592630.article.22202"target="_blank"
&gt;https://doi.org/10.1093/gmo/9781561592630.article.22202&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Editions de l&amp;rsquo;Oiseau-Lyre. “Francis Poulenc in a Suit, Sitting at a Piano with His Arms Outstretched.” 1946. University of Melbourne Archives. UMA-ITE-2016003500406. Accessed November 25, 2025. &lt;a href="https://archives.library.unimelb.edu.au/nodes/view/431648"target="_blank"
&gt;https://archives.library.unimelb.edu.au/nodes/view/431648&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Poulenc, Francis. “Musical Likes and Dislikes.” Interview by Claude Rostand. In &lt;em&gt;Francis Poulenc: Articles and Interviews: Notes from the Heart&lt;/em&gt;, edited by Nicolas Southon, translated by Roger Nichols, 273–278. Burlington, VT: Ashgate Publishing, 2014.&lt;/p&gt;
&lt;p&gt;Poulenc, Francis. “My Teachers and My Friends.” In &lt;em&gt;Francis Poulenc: Articles and Interviews: Notes from the Heart&lt;/em&gt;, edited by Nicolas Southon and translated by Roger Nichols, 97–103. Burlington, VT: Ashgate Publishing, 2014.&lt;/p&gt;
&lt;p&gt;Poulenc, Francis. “Poulenc at the Piano: Advice and Favourites.” In &lt;em&gt;Francis Poulenc: Articles and Interviews: Notes from the Heart&lt;/em&gt;, edited by Nicolas Southon, translated by Roger Nichols, 191–195. Burlington, VT: Ashgate Publishing, 2014.&lt;/p&gt;
&lt;p&gt;Southon, Nicolas. “Introduction.” In &lt;em&gt;Francis Poulenc: Articles and Interviews: Notes from the Heart&lt;/em&gt;, edited by Nicolas Southon, translated by Roger Nichols, 1–14. Burlington, VT: Ashgate Publishing, 2014.&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;Myriam Chimènes and Roger Nichols, “Poulenc, Francis,” &lt;em&gt;Grove Music Online&lt;/em&gt; (Oxford University Press, 2001), 1–2.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;Nicolas Southon, “Introduction,” in &lt;em&gt;Francis Poulenc: Articles and Interviews: Notes from the Heart&lt;/em&gt;, ed. Nicolas Southon, trans. Roger Nichols (Burlington, VT: Ashgate Publishing, 2014), 9.&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:3"&gt;
&lt;p&gt;Chimènes and Nichols, “Poulenc, Francis,” 2–3.&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:4"&gt;
&lt;p&gt;Francis Poulenc, “Poulenc at the Piano: Advice and Favourites,” in &lt;em&gt;Francis Poulenc: Articles and Interviews: Notes from the Heart&lt;/em&gt;, ed. Nicolas Southon, trans. Roger Nichols (Burlington, VT: Ashgate Publishing, 2014), 193.&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:5"&gt;
&lt;p&gt;Poulenc, “Poulenc at the Piano: Advice and Favourites,” 194.&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:6"&gt;
&lt;p&gt;Francis Poulenc, “Musical Likes and Dislikes,” interview by Claude Rostand, in &lt;em&gt;Francis Poulenc: Articles and Interviews: Notes from the Heart&lt;/em&gt;, ed. Nicolas Southon, trans. Roger Nichols (Burlington, VT: Ashgate Publishing, 2014), 274.&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:7"&gt;
&lt;p&gt;Poulenc, “Musical Likes and Dislikes,” 273.&amp;#160;&lt;a href="#fnref:7" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:8"&gt;
&lt;p&gt;Poulenc, “Musical Likes and Dislikes,” 273-274.&amp;#160;&lt;a href="#fnref:8" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:9"&gt;
&lt;p&gt;Poulenc, “Musical Likes and Dislikes,” 275.&amp;#160;&lt;a href="#fnref:9" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:10"&gt;
&lt;p&gt;Poulenc, “Musical Likes and Dislikes,” 276.&amp;#160;&lt;a href="#fnref:10" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:11"&gt;
&lt;p&gt;Francis Poulenc, “My Teachers and My Friends,” in &lt;em&gt;Francis Poulenc: Articles and Interviews: Notes from the Heart&lt;/em&gt;, ed. Nicolas Southon, trans. Roger Nichols (Burlington, VT: Ashgate Publishing, 2014), 96.&amp;#160;&lt;a href="#fnref:11" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content:encoded></item><item><title>角野隼斗（Cateen）的鋼琴獨奏會</title><link>https://alicehsu.blog/zh-tw/posts/2025/11/%E8%A7%92%E9%87%8E%E9%9A%BC%E6%96%97cateen%E7%9A%84%E9%8B%BC%E7%90%B4%E7%8D%A8%E5%A5%8F%E6%9C%83/</link><pubDate>Mon, 17 Nov 2025 16:20:06 -0600</pubDate><guid>https://alicehsu.blog/zh-tw/posts/2025/11/%E8%A7%92%E9%87%8E%E9%9A%BC%E6%96%97cateen%E7%9A%84%E9%8B%BC%E7%90%B4%E7%8D%A8%E5%A5%8F%E6%9C%83/</guid><description>昨天下午去芝加哥聽角野隼斗的鋼琴獨奏會</description><media:thumbnail url="https://alicehsu.blog/images/Post/10/3.jpg"/><media:content url="https://alicehsu.blog/images/Post/10/3.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post/10/3.jpg" type="image/jpeg"/><content:encoded>&lt;img
src="https://alicehsu.blog/images/Post/10/3.jpg"
loading="eager"
/&gt;&lt;p&gt;昨天下午去芝加哥聽角野隼斗（&lt;a href="https://hayatosum.com/biography"target="_blank"
&gt;Hayato Sumino&lt;/a&gt;，綽號 Cateen）的鋼琴獨奏會，走出音樂廳，覺得滿足和感動快要滿溢出來了！&lt;/p&gt;
&lt;p&gt;Cateen 是我一直在追蹤的鋼琴家，我很喜歡他創作的曲子，尤其是這首 &lt;a href="https://www.youtube.com/watch?v=VmKin2xhKNk"target="_blank"
&gt;Big Cat Waltz&lt;/a&gt; 真的超可愛！今年八月初某天逛著他的 YouTube 頻道，忽然發現：欸？底下的說明欄顯示他最近的一次演出就在芝加哥耶！開車當天來回沒問題，又能挑到便宜票價的好位子，那還等什麼？拉著 Sam 就立刻下單！&lt;/p&gt;
&lt;p&gt;八月初到昨天，生活平淡的時候看看日曆，一絲絲小期待就讓生活多了點滋味：啊！十一月可以去聽 Cateen 的獨奏會耶！小小的期待累積起來，讓踏進芝加哥交響中心（Orchestra Hall at Symphony Center）的我感覺有點恍惚，期待終於變成真實，反而有點不真實。&lt;/p&gt;
&lt;p&gt;不像台灣的國家音樂廳，從大門到音樂廳有許多的彎彎繞繞，芝加哥交響中心從大門抵達管弦樂廳是極近絕對的直線距離。這次買的位子是最便宜和次要便宜的票價，分別為 29 和 39 美元，一樓面對鋼琴第五排右側的位置。雖然看不到鋼琴家的手，聲響效果卻是非常地好，音波不會被天花板擋住，還能清楚聽見弱音。噢對了，還能看見 Cateen 走回休息室仰頭喝水，也能清楚看見他彈琴時的表情，還有蓬鬆捲髮跳動的樣子，這個位子的 CP 值真的很棒。&lt;/p&gt;
&lt;p&gt;Cateen 走進舞台，沒等掌聲完全停止就開始彈奏巴赫第二冊平均律第一號 C 大調前奏曲和賦格（BWV 870），隨後又立刻演奏了 Partita 第二號 C 小調組曲（BWV 826），聆聽的過程中，有時候會想想自己會怎麼彈？很快就看見自己和 Cateen 的差距，他怎能將巴赫彈地這麼豐富？我自己最喜歡組曲中的輪旋曲（Rondeau）和隨想曲（Capriccio），是動能很強的曲子，與前面如泣如訴有別，又有豐富的色彩，彈完之後，聽眾終於迫不及待鼓掌。&lt;/p&gt;
&lt;p&gt;接著是蕭邦的 C 小調夜曲，作品編號 48 第一首，這是他四年前在蕭邦鋼琴大賽上第一輪彈的第一首曲子，極小聲的 Do 一出場，承先啟後，立刻轉換了音樂廳的氣氛，原本奔放的情感轉為內斂的情緒。同樣的，從夜曲到詼諧曲，Cateen 也沒有任何休息或猶豫，立即彈了第一個和弦，隨著他的手落入鍵盤，我左前方的老太太震了好大一下，我忍不住微笑，看來音樂會也考驗聽眾的精神力呢。&lt;/p&gt;
&lt;p&gt;蕭邦的第一號詼諧曲，B 小調作品編號 20，是整場音樂會中最讓我感動的曲子。Cateen 本身的技巧高超，可以將快速音群彈地口齒清晰；他的音樂性也極好，可以將長樂句彈地絲滑細緻流暢。不過，高超技巧未必是讓人感動的關鍵因素，為什麼這首曲子這麼感動我呢？有可能是我讀了節目單的介紹，得知這首曲子的創作背景嗎？蕭邦在維也納時壓力極大、因著回不去家鄉華沙而將滿腔的情感注入在這首曲子，我是透過 Cateen 的詮釋而感染了蕭邦的痛苦嗎？又或者，是因為從小比賽聽到太多參賽者演奏這首曲子，卻沒人能像 Cateen 詮釋地這般細膩，我是因為透過 Cateen 有機會重新認識這首曲子的美麗而感動嗎？&lt;/p&gt;
&lt;p&gt;或許都有吧，也有可能是我看見了自己曾經的掙扎，以及曾經的盼望。&lt;/p&gt;
&lt;p&gt;上半場演奏完畢，幾乎全場起立鼓掌，這還是我生平第一次參加獨奏會，演奏家還沒全場彈完，大家就起身鼓掌的。&lt;/p&gt;
&lt;p&gt;下半場從顧爾達（Friedrich Gulda）的前奏曲與賦格開始，顧爾達的前奏曲總讓我想起巴赫平均律第一冊的 C 小調前奏曲（BWV 847），很像是巴赫化了萬聖節的妝從墳墓裡爬出來跳舞。曲子結束後，Cateen 起身致詞，說道他是第一次來到芝加哥（哇好榮幸），也提及後面的曲子是他的創作，刻意選用了直立琴，為要引發一種懷舊感，而最後一首改編拉威爾的波麗露會同時使用兩台琴，他又說：「雖然如此，我還是只有十隻手指頭啦！」全場都笑了。&lt;/p&gt;
&lt;p&gt;致敬蕭邦的 New Birth 和 Recollection 分別以平台琴和直立琴演奏，我又不禁慶幸自己買到這個位子，可以聽得很清楚音色的差異。除此之外，直立琴本來能發出的音量就滿小的，雖然拆開了琴蓋，音量還是明顯比平台琴小了很多，坐在這裡就需要屏氣凝神才能聽得清楚。Recollection 的聲音好像從海洋浮出的藍色泡泡，聲音朦朦朧朧的，有時候會有一些細碎的高音音符，很像在海底偶爾看見的海面浮光。&lt;/p&gt;
&lt;p&gt;下半場的時間過得很快，在 Recollection 之後，Cateen 彈了卡普斯汀（Nikolai Kapustin）八首演奏會練習曲的其中五首，隨後是他自己的三首夜曲，最後則是波麗露。&lt;/p&gt;
&lt;p&gt;好難想像，身為音樂家到底要有多強的體力、專注力和記憶力，才能完成這樣一場演奏會？將波麗露放到最後才彈，在此之後又有三首安可曲（其中兩首還是蕭邦 C 大調練習曲作品編號 10 第一首，以及 Cateen 自己的小星星變奏曲），Cateen 的體力以及心智實在驚人。&lt;/p&gt;
&lt;p&gt;波麗露快結束時，內心總浮現出：「哎好討厭的感覺喔」，音樂的美在於將美好濃縮於有限的時間之中，而這也是它討厭的地方。或許，這也是為什麼，我想透過寫作&amp;mdash;&amp;mdash;這種看似徒勞的方式&amp;mdash;&amp;mdash;解碼感動，透過文字重新編譯，試著延長美好的保存期限吧。&lt;/p&gt;
&lt;p&gt;音樂會結束，全場歡聲雷動，觀眾幾乎全場起立，Sam 跟我說他也被圈粉了，真是太好了，我想身為粉絲最開心的事，就是把身邊的人通通都變成粉絲呢。&lt;/p&gt;
&lt;p&gt;很久很久沒有聽到一場令人感動的音樂會了。不只是技巧高超，Cateen 對音樂的熱愛在他的琴聲中展露無遺。他是個享受彈琴的鋼琴家，也是個對音樂和生命有著熱忱與盼望的作曲家，不是每個音樂家都是這樣的。&lt;/p&gt;
&lt;p&gt;想要去練琴了！&lt;/p&gt;
&lt;style&gt;
#masonry-61b4718970b35458cc1866fdc10230f3-1 {
width: 100%;
}
#masonry-61b4718970b35458cc1866fdc10230f3-1 .masonry-container {
width: 100%;
position: relative;
}
#masonry-61b4718970b35458cc1866fdc10230f3-1 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 20px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-61b4718970b35458cc1866fdc10230f3-1 .masonry-item img {
width: 60%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-61b4718970b35458cc1866fdc10230f3-1 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-61b4718970b35458cc1866fdc10230f3-1 .glightbox:hover,
#masonry-61b4718970b35458cc1866fdc10230f3-1 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-61b4718970b35458cc1866fdc10230f3-1 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-61b4718970b35458cc1866fdc10230f3-1 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-61b4718970b35458cc1866fdc10230f3-1"
data-columns="1"
data-gutter="20"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="5"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/10/5.jpg"
class="glightbox"
data-gallery="masonry-61b4718970b35458cc1866fdc10230f3-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/10/5.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/10/5.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/10/1.jpg"
class="glightbox"
data-gallery="masonry-61b4718970b35458cc1866fdc10230f3-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/10/1.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/10/1.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/10/2.jpg"
class="glightbox"
data-gallery="masonry-61b4718970b35458cc1866fdc10230f3-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/10/2.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/10/2.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/10/3.jpg"
class="glightbox"
data-gallery="masonry-61b4718970b35458cc1866fdc10230f3-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/10/3.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/10/3.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/10/4.jpg"
class="glightbox"
data-gallery="masonry-61b4718970b35458cc1866fdc10230f3-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/10/4.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/10/4.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/10/6.jpg"
class="glightbox"
data-gallery="masonry-61b4718970b35458cc1866fdc10230f3-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/10/6.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/10/6.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-61b4718970b35458cc1866fdc10230f3-1';
const config = {
columns: 1 ,
gutter: 20 ,
maxColumns: 5 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;</content:encoded></item><item><title>❄️ 烏托邦式智慧冰箱</title><link>https://alicehsu.blog/zh-tw/posts/2025/11/%EF%B8%8F-%E7%83%8F%E6%89%98%E9%82%A6%E5%BC%8F%E6%99%BA%E6%85%A7%E5%86%B0%E7%AE%B1/</link><pubDate>Fri, 07 Nov 2025 22:30:43 -0600</pubDate><guid>https://alicehsu.blog/zh-tw/posts/2025/11/%EF%B8%8F-%E7%83%8F%E6%89%98%E9%82%A6%E5%BC%8F%E6%99%BA%E6%85%A7%E5%86%B0%E7%AE%B1/</guid><description>真正符合人性的智慧冰箱會長什麼樣子?</description><media:thumbnail url="https://alicehsu.blog/images/Post9home.jpg"/><media:content url="https://alicehsu.blog/images/Post9home.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post9home.jpg" type="image/jpeg"/><content:encoded>&lt;img
src="https://alicehsu.blog/images/Post9home.jpg"
loading="eager"
/&gt;&lt;p&gt;最近和家人聊到智慧冰箱，不久後，就讀到了 &lt;a href="https://wiwi.blog/blog/smart-fridge"target="_blank"
&gt;Wiwi&lt;/a&gt; 和&lt;a href="https://shuojen.site/blog/2025/11/04/bed"target="_blank"
&gt;黃碩人&lt;/a&gt;所寫關於智慧家電的文章，讓我不禁思考真正符合人性的智慧冰箱會長什麼樣子。&lt;/p&gt;
&lt;p&gt;身為一位家庭主婦所幻想的烏托邦式智慧冰箱：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;放入或取出食材，關上冰箱門的那刻，冰箱會自動掃描新增或刪減的菜並且自動建檔、更新，並且清楚標示每一樣菜的購買日期以及保存期限，完全不需要自己慢慢手動輸入。最棒的是，它能準確判斷每種蔬果、每罐醬料和隔夜菜，不需要勞煩心神編輯它寫錯的地方。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;智慧面板會顯示可愛的提醒文字：&lt;/p&gt;
&lt;blockquote
class="border-primary bg-muted/30 hover:bg-muted/40 my-6 rounded-r-lg border-l-4 py-4 pr-4 pl-6 transition-all duration-200 ease-out hover:translate-x-1"&gt;
&lt;div class="prose prose-sm max-w-none"&gt;
&lt;p&gt;菠菜快到期啦 ((((；ﾟДﾟ))))&lt;/p&gt;
&lt;p&gt;我知道蘿蔔可以放很久&amp;hellip;可是它快壞了耶 Σ（ﾟдﾟlll）&lt;/p&gt;
&lt;p&gt;再喝可樂會胖喔 ＼＼\٩(๑`^´๑)۶//／／ （你管我&amp;hellip;&amp;hellip;）&lt;/p&gt;
&lt;/div&gt;
&lt;/blockquote&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;沒事的時候也會賣萌：&lt;/p&gt;
&lt;blockquote
class="border-primary bg-muted/30 hover:bg-muted/40 my-6 rounded-r-lg border-l-4 py-4 pr-4 pl-6 transition-all duration-200 ease-out hover:translate-x-1"&gt;
&lt;div class="prose prose-sm max-w-none"&gt;
&lt;p&gt;那個雞腿看起來好好吃 _:(´ཀ`」 ∠)&lt;/p&gt;
&lt;p&gt;今天會是個美好的一天 (*´∇｀*)&lt;/p&gt;
&lt;/div&gt;
&lt;/blockquote&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;智慧面板根據你買的菜推薦你食譜，不用煩惱今天晚上不知道煮什麼。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果想自己寫一週備餐的食譜，可以在智慧面板上打開一張潔白的檔案，直接手寫輸入在面板上。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;食譜的所有資料都儲存在智慧面板裡，不需要下載 App 或註冊會員就能使用。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;不需要網路連線、不用看廣告、更不會賣掉你的隱私。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;對了，我們真的不需要一台冰箱來看天氣，也不需要一台冰箱來放家人的照片，實在多此一舉，這些手機就做得到啦。&lt;/p&gt;
&lt;p&gt;這樣的冰箱有沒有很想要？我自己倒是滿想要有一台的，希望冰箱廠商可以來買走我的點子哈哈哈XDD&lt;/p&gt;</content:encoded></item><item><title>🤤 濃稠醬汁培根蛋麵</title><link>https://alicehsu.blog/zh-tw/posts/2025/11/%E6%BF%83%E7%A8%A0%E9%86%AC%E6%B1%81%E5%9F%B9%E6%A0%B9%E8%9B%8B%E9%BA%B5/</link><pubDate>Sat, 01 Nov 2025 15:26:04 -0500</pubDate><guid>https://alicehsu.blog/zh-tw/posts/2025/11/%E6%BF%83%E7%A8%A0%E9%86%AC%E6%B1%81%E5%9F%B9%E6%A0%B9%E8%9B%8B%E9%BA%B5/</guid><description>好吃的義大利麵在這裡。</description><media:thumbnail url="https://alicehsu.blog/images/Post/8/1.jpg"/><media:content url="https://alicehsu.blog/images/Post/8/1.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post/8/1.jpg" type="image/jpeg"/><content:encoded>
&lt;style&gt;
#masonry-11d11808be20de07fbc507eb99862070-1 {
width: 100%;
}
#masonry-11d11808be20de07fbc507eb99862070-1 .masonry-container {
width: 100%;
position: relative;
}
#masonry-11d11808be20de07fbc507eb99862070-1 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 15px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-11d11808be20de07fbc507eb99862070-1 .masonry-item img {
width: 70%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-11d11808be20de07fbc507eb99862070-1 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-11d11808be20de07fbc507eb99862070-1 .glightbox:hover,
#masonry-11d11808be20de07fbc507eb99862070-1 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-11d11808be20de07fbc507eb99862070-1 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-11d11808be20de07fbc507eb99862070-1 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-11d11808be20de07fbc507eb99862070-1"
data-columns="1"
data-gutter="15"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="5"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/8/1.jpg"
class="glightbox"
data-gallery="masonry-11d11808be20de07fbc507eb99862070-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/8/1.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/8/1.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-11d11808be20de07fbc507eb99862070-1';
const config = {
columns: 1 ,
gutter: 15 ,
maxColumns: 5 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;
&lt;h2 id="2-人份培根蛋麵"&gt;2 人份培根蛋麵&lt;/h2&gt;
&lt;h3 id="心得"&gt;心得&lt;/h3&gt;
&lt;p&gt;Sam 和我所做的培根蛋麵，是平民簡易版的卡波納拉（Carbonara）義大利麵：以培根取代豬臉頰肉，以全蛋取代蛋黃（畢竟只剩蛋白也滿令人煩惱的），以罐裝的起司粉取代現削的起司。食材容易取得，價格也比較親民，成品還是很美味。&lt;/p&gt;
&lt;p&gt;雖然滿多食譜最後把起司蛋液加入盛了麵和配料離火的鍋子，不過因鍋子溫度還是滿高，容易讓蛋結塊，Sam 後來決定反過來，將義大利麵和配料放到起司蛋液裡，這樣不只蛋不易結塊，每一根義大利麵也較容易吸附濃稠的醬汁，非常好吃！&lt;/p&gt;
&lt;h3 id="食材"&gt;食材&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;義大利麵（Rummo）： 220 克&lt;/li&gt;
&lt;li&gt;鹽：少許&lt;/li&gt;
&lt;li&gt;厚切培根：3條&lt;/li&gt;
&lt;li&gt;蘑菇：3 顆&lt;/li&gt;
&lt;li&gt;蒜末：適量&lt;/li&gt;
&lt;li&gt;蛋：3 顆&lt;/li&gt;
&lt;li&gt;帕馬森起司粉：很多&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="烹飪步驟"&gt;烹飪步驟&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;備料
&lt;ul&gt;
&lt;li&gt;將培根切成細條，蘑菇切片，蒜頭切末&lt;/li&gt;
&lt;li&gt;放一點鹽巴在一大鍋水裡&lt;/li&gt;
&lt;li&gt;找另一個內鍋，或大一點的鍋子（因為最後還要加入麵條和配料，所以需要大一點的鍋子），將蛋打入其中，加入非常多的帕馬森起司粉，稍微拌勻&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;開始烹飪
&lt;ul&gt;
&lt;li&gt;鹽水煮沸後加入義大利麵，用計時器定時至包裝上要求的烹飪時間&lt;/li&gt;
&lt;li&gt;煮麵的同時，一個人拿著起司蛋液那鍋在義大利麵水上不斷快速攪散，利用蒸氣的熱氣讓起司粉變得均勻&lt;/li&gt;
&lt;li&gt;同時，另一個人熱鍋，加入少許油，下培根&lt;/li&gt;
&lt;li&gt;煎至金黃後下蘑菇&lt;/li&gt;
&lt;li&gt;拌炒一下後，下黑胡椒粉&lt;/li&gt;
&lt;li&gt;香氣出來後，下蒜末&lt;/li&gt;
&lt;li&gt;蒜末炒到金黃後，即可關火&lt;/li&gt;
&lt;li&gt;這時，麵煮熟後，撈起在起司蛋液那鍋快速攪拌&lt;/li&gt;
&lt;li&gt;攪一半後倒入剛剛炒好的培根蘑菇蒜末&lt;/li&gt;
&lt;li&gt;適時補一點水，避免太過濃稠&lt;/li&gt;
&lt;li&gt;醬汁調到喜歡的濃度，即可盛盤出餐&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;若是自己一人煮，可以稍微調整料理順序：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;煮麵水煮沸後，先不下麵，先把起司蛋液在上面攪勻&lt;/li&gt;
&lt;li&gt;下麵後，就可同時炒料&lt;/li&gt;
&lt;/ul&gt;</content:encoded></item><item><title>日式親子丼飯＋蕃茄玉米湯</title><link>https://alicehsu.blog/zh-tw/posts/2025/10/%E6%97%A5%E5%BC%8F%E8%A6%AA%E5%AD%90%E4%B8%BC%E9%A3%AF%E8%95%83%E8%8C%84%E7%8E%89%E7%B1%B3%E6%B9%AF/</link><pubDate>Fri, 31 Oct 2025 23:43:12 -0500</pubDate><guid>https://alicehsu.blog/zh-tw/posts/2025/10/%E6%97%A5%E5%BC%8F%E8%A6%AA%E5%AD%90%E4%B8%BC%E9%A3%AF%E8%95%83%E8%8C%84%E7%8E%89%E7%B1%B3%E6%B9%AF/</guid><description>好吃的晚餐在這裡。</description><media:thumbnail url="https://alicehsu.blog/images/Post/7/1.jpg"/><media:content url="https://alicehsu.blog/images/Post/7/1.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post/7/1.jpg" type="image/jpeg"/><content:encoded>&lt;p&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/7/1.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/7/1.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/7/2.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/7/2.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;&lt;/p&gt;
&lt;h2 id="2-人份日式親子丼飯食譜"&gt;2 人份日式親子丼飯食譜&lt;/h2&gt;
&lt;h3 id="食材"&gt;食材&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;雞肉醃料
&lt;ul&gt;
&lt;li&gt;醬油：40 g&lt;/li&gt;
&lt;li&gt;味醂：20 g&lt;/li&gt;
&lt;li&gt;米酒：20 g&lt;/li&gt;
&lt;li&gt;糖：20 g&lt;/li&gt;
&lt;li&gt;蒜泥：適量&lt;/li&gt;
&lt;li&gt;薑泥：適量&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;雞腿肉： 2 片&lt;/li&gt;
&lt;li&gt;洋蔥：半顆&lt;/li&gt;
&lt;li&gt;高麗菜： 3 大片&lt;/li&gt;
&lt;li&gt;蛋： 3 顆&lt;/li&gt;
&lt;li&gt;蔥： 4 支&lt;/li&gt;
&lt;li&gt;白芝麻：適量&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="烹飪步驟"&gt;烹飪步驟&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;將雞腿肉浸泡在醃料 20-30 分鐘&lt;/li&gt;
&lt;li&gt;雞皮向下煎 2 分鐘&lt;/li&gt;
&lt;li&gt;翻面煎 1 分 50 秒&lt;/li&gt;
&lt;li&gt;再翻面煎 1 分鐘&lt;/li&gt;
&lt;li&gt;再翻面煎 1 分鐘&lt;/li&gt;
&lt;li&gt;拿起來在砧板上切片&lt;/li&gt;
&lt;li&gt;鍋子不洗直接下洋蔥，稍微炒一下就下高麗菜&lt;/li&gt;
&lt;li&gt;再稍微炒一下就下切好的雞腿排&lt;/li&gt;
&lt;li&gt;加 50 ml 的水在醃料的醬裡，混合均勻後加入鍋中&lt;/li&gt;
&lt;li&gt;蓋鍋蓋煮至雞肉顏色變白&lt;/li&gt;
&lt;li&gt;開蓋淋一半蛋液再蓋鍋蓋&lt;/li&gt;
&lt;li&gt;蛋稍微凝固後再開蓋加入剩下的蛋液&lt;/li&gt;
&lt;li&gt;半凝固後，加在白飯上，撒上芝麻、蔥花，即可出餐！&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="番茄玉米湯"&gt;番茄玉米湯&lt;/h2&gt;
&lt;h3 id="食材-1"&gt;食材&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;日式高湯
&lt;ul&gt;
&lt;li&gt;水 1500 g&lt;/li&gt;
&lt;li&gt;昆布 1 根&lt;/li&gt;
&lt;li&gt;柴魚片 2 把&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;番茄： 3 顆&lt;/li&gt;
&lt;li&gt;玉米：2 根&lt;/li&gt;
&lt;li&gt;味噌：半匙&lt;/li&gt;
&lt;li&gt;鹽：少許&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="烹飪步驟-1"&gt;烹飪步驟&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;泡昆布 20 分鐘，開火以小火煮 10 分鐘&lt;/li&gt;
&lt;li&gt;撈起昆布後加 2 把柴魚片，小火煮2分鐘後將柴魚片瀝掉&lt;/li&gt;
&lt;li&gt;放入切好的番茄和玉米，中大火煮 20 分鐘&lt;/li&gt;
&lt;li&gt;加入鹽巴和味噌，即可出餐！&lt;/li&gt;
&lt;/ul&gt;</content:encoded></item><item><title>🤔 為什麼要創作？</title><link>https://alicehsu.blog/zh-tw/posts/2025/10/%E7%82%BA%E4%BB%80%E9%BA%BC%E8%A6%81%E5%89%B5%E4%BD%9C/</link><pubDate>Thu, 30 Oct 2025 21:15:06 -0500</pubDate><guid>https://alicehsu.blog/zh-tw/posts/2025/10/%E7%82%BA%E4%BB%80%E9%BA%BC%E8%A6%81%E5%89%B5%E4%BD%9C/</guid><description>最近常常思考這個問題，覺得這個問題滿有趣的，想試著回答一下。</description><media:thumbnail url="https://alicehsu.blog/images/Post6home.jpg"/><media:content url="https://alicehsu.blog/images/Post6home.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post6home.jpg" type="image/jpeg"/><content:encoded>&lt;img
src="https://alicehsu.blog/images/Post6home.jpg"
loading="eager"
/&gt;&lt;div
class="alert alert-caution my-6 overflow-hidden rounded-lg transition-all duration-200 ease-out hover:-translate-y-0.5 hover:shadow-md"
style="background-color: color-mix(in srgb, var(--color-caution) 10%, transparent);
border-left-color: var(--color-caution);
--hover-bg: color-mix(in srgb, var(--color-caution) 15%, transparent);"
onmouseover="this.style.backgroundColor = this.style.getPropertyValue('--hover-bg')"
onmouseout="this.style.backgroundColor = 'color-mix(in srgb, var(--color-caution) 10%, transparent)'"
role="alert"
aria-labelledby="alert-0-title"&gt;
&lt;div
id="alert-0-content"
class="alert-content px-6 pb-6 py-6 items-center justify-between "&gt;
&lt;div class="prose prose-sm text-foreground/90 max-w-none"&gt;
&lt;p&gt;這篇文章主要寫給非以創作為主業的讀者。若以創作為主業，則有其他需考量的議題。&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;p&gt;最近常常思考這個問題，覺得這個問題滿有趣的，想試著回答一下。我發現寫 blog 的好處是我會想寫這類抽象有意思的主題，並且在寫作的過程中把這個議題爬梳得更清楚（然後一不小心就變成千字文了）；如果沒寫 blog ，頂多還是會有幾個想法，不過就不會有相較完整的論述了。&lt;/p&gt;
&lt;h2 id="定義創作"&gt;定義創作&lt;/h2&gt;
&lt;p&gt;粗略定義一下「創作」的範圍。我所探討的創作，指的是人類從事任何的藝術種類，所以可以是：作曲、畫畫、舞蹈、寫作、攝影、陶藝、金工、拍電影&amp;hellip;&amp;hellip;等等。並且，他所產出的藝術內涵或形式有別於其他人。比如說，一個寫小說的人，他寫的是「小說」這個文類，不過，卻能寫出別人前所未聞的內文。當然也可能是未來某個天才，創造出一個異於小說、詩、散文、戲劇又得到大家認可的文類；而產出的方法，則是透過技巧將思想和情感表達出來，可以用 AI 工具，卻只能是輔助，不可喧賓奪主取代人的技巧、思考和表達。&lt;/p&gt;
&lt;p&gt;所以，在這個定義之下，我不認為 AI 會創作，因為 AI 並沒有情感和思想。 並且， AI 充其量只是在「生產」，而非有意識地「創作」。&lt;/p&gt;
&lt;h2 id="問題的存在"&gt;問題的存在&lt;/h2&gt;
&lt;p&gt;滿有趣的是，我們不會拿「為什麼要創作」這個問題去問年紀很小的孩子，他們拿起畫筆是再自然不過的事情了，我們不會問孩子：「你為什麼要畫畫？」反倒還會給他更多的紙和筆。我們也不會問他們說：「你幹嘛要捏黏土？」可能還會坐下來陪他一起蓋城堡。&lt;/p&gt;
&lt;p&gt;不過到一定年紀，小朋友的畫筆換成鉛筆，畫布換成作業本。有些家長開始問孩子這樣的問題：「你為什麼要畫畫都不寫作業？」（其實不是真的在問為什麼）。這樣環境長大的孩子，逐漸將畫畫（或是任何他喜歡的藝術種類）當成是次要於學業的選項。即使不這麼想，對就讀普通班（相對於就讀特殊班級，如音樂班和美術班）的人而言，在學校學習一般科目的時間佔掉了一天的大半比例，即便想創作，也只能用零碎的時間完成。長大之後，真正能將創作當作正職的人少之又少，大多數的人工作之餘的時間被家庭和其他事情填滿，創作就漸漸淡出他的生活圈了。&lt;/p&gt;
&lt;p&gt;成年後的我們開始問：「為什麼要創作？」某種程度已經遠離了孩子的初心。畢竟，小孩不會這樣問自己：「為什麼我要去畫畫？」，通常的情況是想畫就畫、想唱歌就開心唱歌，不為什麼，也不管自己表現夠不夠好。長大後，人會開始評估，創作能不能換取金錢、地位或別人的認可，如果不會就決定不嘗試。除此之外，有些人害怕自己沒有天賦，或是害怕技巧不夠純熟沒資格創作，所以退避三舍。當然，也有其他人單純只是找不到創作有什麼意義，覺得生活也挺滿足的，不需要花額外的時間和力氣在這件事上。最後，也有一些人是生活本就過得很辛苦了，為了生存工作都來不及，沒空也沒力氣再創作。&lt;/p&gt;
&lt;p&gt;即便有這些阻攔，我想，還是有一些理性和感性的理由，是值得人跨越困難、提起信心去創作的：&lt;/p&gt;
&lt;h2 id="我的回答"&gt;我的回答&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;創作讓人有意識過生活&lt;/strong&gt;：活在社群媒體橫行的時代，AI 文和讓人憤怒沮喪的文字填滿許多人的心智，過著被資訊淹沒的生活。不同於滑社群媒體，創作要求你要有意識感受、思考和表達。就像體力要好需要靠運動鍛鍊一樣，腦力要好也需要鍛鍊，一個以創作鍛鍊腦力的人，開啟感知以及思考的正向循環，過更有意識的生活。對我而言，寫作是最好的例子：寫文章讓我慢下來思考一些議題，而不單被動讓別人的觀點塞滿大腦；而寫日記則幫助我整理一天的情感和思緒，慢下來選字、重新排列文章邏輯的過程，原先混亂的狀態逐漸恢復秩序。心情和想法整理好後繼續過生活，整個人變得更加透徹平靜。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;創作讓人體會生活可以不只是生存&lt;/strong&gt;：如上文所說，有些人會覺得為生存工作都來不及了，沒法創作。不過，這不就繼續停留在生活只有生存的閉鎖循環裡嗎？其實，不是沒辦法創作，而是沒辦法在自訂的時間內創作出心目中水準的作品。那麼，不妨將標準降低，選一個最有信心的藝術媒介，先簡單完成一個小小的作品。生活越是辛苦，越要有一項事物讓人記得生活不只是這樣而已，既然都要受苦了，就不要浪費這個苦，把它轉換成創作的動力，把痛苦變成美好的文字、音樂、繪畫&amp;hellip;&amp;hellip;。這樣不是很划算嗎？曾經自己在寫論文的階段，真覺得我生活好像就剩下論文了，每天都活在生存模式，很可怕。後來覺得再這樣下去不行，不知從哪冒出來的想法是想去作曲，寫著寫著，感覺好一些些，雖然沒有很多，不過也正是這個「好一些些」幫助我度過很辛苦的階段。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;創作讓人得以與自己面對面&lt;/strong&gt;：過生活的我們，常常只看見冰山外層的自己；然而，創作的過程中，因著需要常常挖掘點子、更細膩感受某個畫面，而得以凝視冰山下層的自己。我自己也常在寫作中，發現「原來我是這麼想的啊！」以及「我和我原本想的不一樣耶！」那是很奇妙的感受，創作彷彿是一面鏡子，映照出自己的形象，並且和底層的自己產生深刻的共鳴。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;創作帶給人不同層次的快樂與滿足&lt;/strong&gt;：一般的嗜好，例如運動，可以做到前兩點。不過，運動不見得能讓人更理解自己，況且，其對身體帶來的效益明顯有時限性，久沒運動，身體狀態不會一直處在巔峰。相反的，某個時期創作的作品，若好好保存，是可以放很久很久的。或許，因著這樣的永恆性，以及孕育一個作品所花費的心力，讓人獲得另一種層次的滿足和快樂吧。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="結語"&gt;結語&lt;/h2&gt;
&lt;p&gt;每個人或多或少都有藝術細胞，差別只在於哪個方面的藝術細胞，以及細胞大或細胞小而已，不過，細胞大小其實不太重要，重要的是有沒有拿出來用，讓細胞越長越大、越長越多。&lt;/p&gt;
&lt;p&gt;一起開始創作吧！&lt;/p&gt;</content:encoded></item><item><title>🍁 生日之旅</title><link>https://alicehsu.blog/zh-tw/posts/2025/10/%E7%94%9F%E6%97%A5%E4%B9%8B%E6%97%85/</link><pubDate>Sat, 25 Oct 2025 23:47:21 -0500</pubDate><guid>https://alicehsu.blog/zh-tw/posts/2025/10/%E7%94%9F%E6%97%A5%E4%B9%8B%E6%97%85/</guid><description>一早和 Samuel 一起去 Devil’s Lake 賞楓過生日。</description><media:thumbnail url="https://alicehsu.blog/images/Post/5/30.jpg"/><media:content url="https://alicehsu.blog/images/Post/5/30.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post/5/30.jpg" type="image/jpeg"/><content:encoded>&lt;p&gt;一早和 Samuel 一起去 Devil&amp;rsquo;s Lake 賞楓過生日。Devil&amp;rsquo;s Lake 是 Wisconsin 的州立公園，之前來的時候人沒那麼多，今天有好多遊客，大家都是來賞楓的，沒話說，實在太漂亮了。&lt;/p&gt;
&lt;h2 id="devils-lake"&gt;Devil&amp;rsquo;s Lake&lt;/h2&gt;
&lt;p&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/9.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/9.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/10.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/10.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/11.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/11.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/14.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/14.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/8.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/8.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/6.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/6.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/16.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/16.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/15.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/15.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/13.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/13.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/5.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/5.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/7.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/7.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/12.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/12.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/17.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/17.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/18.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/18.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/19.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/19.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/20.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/20.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/27.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/27.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/28.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/28.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/29.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/29.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/30.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/30.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/4.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/4.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;&lt;/p&gt;
&lt;h2 id="午餐"&gt;午餐&lt;/h2&gt;
&lt;p&gt;午餐在 Devil&amp;rsquo;s Lake 附近的 Balanced Rock Winery 享用很厲害的 Signature Charcuterie Board 和 Wine flight。 拼盤配料豐富價格實惠，我們兩人點了最小的份量還是吃不完，打包後又是滿滿的一盒，不愧是起司州！Wine Flight 的話，我個人最喜歡最右邊的水果酒，酒有桃子的香甜味。&lt;/p&gt;
&lt;style&gt;
#masonry-fed66a04a190ce8df59c63e9ee0fa90f-1 {
width: 100%;
}
#masonry-fed66a04a190ce8df59c63e9ee0fa90f-1 .masonry-container {
width: 100%;
position: relative;
}
#masonry-fed66a04a190ce8df59c63e9ee0fa90f-1 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 20px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-fed66a04a190ce8df59c63e9ee0fa90f-1 .masonry-item img {
width: 100%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-fed66a04a190ce8df59c63e9ee0fa90f-1 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-fed66a04a190ce8df59c63e9ee0fa90f-1 .glightbox:hover,
#masonry-fed66a04a190ce8df59c63e9ee0fa90f-1 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-fed66a04a190ce8df59c63e9ee0fa90f-1 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-fed66a04a190ce8df59c63e9ee0fa90f-1 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-fed66a04a190ce8df59c63e9ee0fa90f-1"
data-columns="2"
data-gutter="20"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="5"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/5/21.jpg"
class="glightbox"
data-gallery="masonry-fed66a04a190ce8df59c63e9ee0fa90f-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/21.jpg"
alt="從左至右：Roustabout Red（紅酒）、Edelweiss（白酒）、Isabella（粉紅酒）、Perfectly Peach（水果酒）"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/21.jpg"
data-gallery-alt="從左至右：Roustabout Red（紅酒）、Edelweiss（白酒）、Isabella（粉紅酒）、Perfectly Peach（水果酒）"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;從左至右：Roustabout Red（紅酒）、Edelweiss（白酒）、Isabella（粉紅酒）、Perfectly Peach（水果酒）&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/5/22.jpg"
class="glightbox"
data-gallery="masonry-fed66a04a190ce8df59c63e9ee0fa90f-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/22.jpg"
alt="漂亮的粉紅酒 Isabella"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/22.jpg"
data-gallery-alt="漂亮的粉紅酒 Isabella"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;漂亮的粉紅酒 Isabella&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/5/23.jpg"
class="glightbox"
data-gallery="masonry-fed66a04a190ce8df59c63e9ee0fa90f-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/23.jpg"
alt="Charcuterie board（熟食冷肉盤）有很多有趣的食物，其中包含長得有點像筍子的 artichoke heart（朝鮮薊心）以及 dried apricot（乾杏）。"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/23.jpg"
data-gallery-alt="Charcuterie board（熟食冷肉盤）有很多有趣的食物，其中包含長得有點像筍子的 artichoke heart（朝鮮薊心）以及 dried apricot（乾杏）。"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;Charcuterie board（熟食冷肉盤）有很多有趣的食物，其中包含長得有點像筍子的 artichoke heart（朝鮮薊心）以及 dried apricot（乾杏）。&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/5/24.jpg"
class="glightbox"
data-gallery="masonry-fed66a04a190ce8df59c63e9ee0fa90f-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/24.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/24.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/5/25.jpg"
class="glightbox"
data-gallery="masonry-fed66a04a190ce8df59c63e9ee0fa90f-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/25.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/25.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/5/26.jpg"
class="glightbox"
data-gallery="masonry-fed66a04a190ce8df59c63e9ee0fa90f-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/26.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/26.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-fed66a04a190ce8df59c63e9ee0fa90f-1';
const config = {
columns: 2 ,
gutter: 20 ,
maxColumns: 5 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;
&lt;h2 id="晚餐"&gt;晚餐&lt;/h2&gt;
&lt;p&gt;晚餐去吃我們的愛店，我們去年生日也來這裡，我想大概可以考慮每年生日都來一趟。前菜的淡菜完全不腥，味道鮮甜，白醬味道也很清爽有檸檬的香氣，今晚 serve 我們的阿姨還免費提供我們麵包讓我們能沾著醬把醬吃光光。我們的主餐都很好吃，只是今天太累了，就不繼續寫分析啦。Sam 最喜歡他們家的甜點草莓拿波里派，餅皮裡有杏仁，非常酥脆！&lt;/p&gt;
&lt;p&gt;是個難忘的一天！&lt;/p&gt;
&lt;p&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/35.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/35.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/32.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/32.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/33.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/33.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/34.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/34.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/36.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/36.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/37.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/37.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/38.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/38.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/39.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/39.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;&lt;/p&gt;</content:encoded></item><item><title>⛲ 創作的泉源：讀林文月先生《生活可以如此美好》</title><link>https://alicehsu.blog/zh-tw/posts/2025/10/%E5%89%B5%E4%BD%9C%E7%9A%84%E6%B3%89%E6%BA%90%E8%AE%80%E6%9E%97%E6%96%87%E6%9C%88%E5%85%88%E7%94%9F%E7%94%9F%E6%B4%BB%E5%8F%AF%E4%BB%A5%E5%A6%82%E6%AD%A4%E7%BE%8E%E5%A5%BD/</link><pubDate>Fri, 24 Oct 2025 21:50:24 -0500</pubDate><guid>https://alicehsu.blog/zh-tw/posts/2025/10/%E5%89%B5%E4%BD%9C%E7%9A%84%E6%B3%89%E6%BA%90%E8%AE%80%E6%9E%97%E6%96%87%E6%9C%88%E5%85%88%E7%94%9F%E7%94%9F%E6%B4%BB%E5%8F%AF%E4%BB%A5%E5%A6%82%E6%AD%A4%E7%BE%8E%E5%A5%BD/</guid><description>最近在讀林文月先生（1933-2023）的《生活可以如此美好》散文集</description><media:thumbnail url="https://alicehsu.blog/images/Post4home.JPG"/><media:content url="https://alicehsu.blog/images/Post4home.JPG" medium="image"/><enclosure url="https://alicehsu.blog/images/Post4home.JPG" type="image/jpeg"/><content:encoded>&lt;img
src="https://alicehsu.blog/images/Post4home.JPG"
loading="eager"
/&gt;&lt;p&gt;最近在讀&lt;a href="https://cws.nmtl.gov.tw/home/zh-tw/writer/756861?search=%7B%22search%22:%22%E6%9E%97%E6%96%87%E6%9C%88%22,%22menuIds%22:%5B2412%5D%7D&amp;amp;moduleKey=TAG&amp;amp;searchType=search&amp;amp;offset=0&amp;amp;mark=%E6%9E%97%E6%96%87%E6%9C%88"target="_blank"
&gt;林文月先生&lt;/a&gt;（1933-2023）的《生活可以如此美好》散文集，其中的一篇文章〈給女兒的信——擬《傅雷家書》〉（寫於 1987 年 10 月），她提及創作的幾項靈感來源，發人省思，也有我想與其對話之處，故援引原文如下：&lt;/p&gt;
&lt;blockquote
class="border-primary bg-muted/30 hover:bg-muted/40 my-6 rounded-r-lg border-l-4 py-4 pr-4 pl-6 transition-all duration-200 ease-out hover:translate-x-1"&gt;
&lt;div class="prose prose-sm max-w-none"&gt;
&lt;p&gt;至於那創作求新的泉源從哪裏來呢？&lt;/p&gt;
&lt;p&gt;學校給你們的教育，固然都是很重要的基礎，&lt;/p&gt;
&lt;p&gt;但無論從事何種創作，一定要有豐富的知識，高尚的情操，與熱烈的愛心。&lt;/p&gt;
&lt;p&gt;這就要從平日的閱讀習慣及生活態度上注意下功夫了。&lt;/p&gt;
&lt;p&gt;我常常覺得一個創作者只具備專業的知識是不充足的，譬如就以畫家為例子吧：&lt;/p&gt;
&lt;p&gt;一個畫家倘若熟知美術的變遷歷史和道理，有充份駕馭顏料彩筆的技巧，&lt;/p&gt;
&lt;p&gt;他可能會成為相當懂得佈局結構著彩的作畫者，&lt;/p&gt;
&lt;p&gt;但他要表現其麼內容呢？這就牽涉到個人的內在涵養和思想的層面，&lt;/p&gt;
&lt;p&gt;而一牽涉到這個層面，就絕不單純的只是專業知識的問題了。&lt;/p&gt;
&lt;p&gt;所以歸根結柢說來，要多閱讀各方面的書籍，並且要多思考，多關懷，&lt;/p&gt;
&lt;p&gt;才能豐富你的知識，豐富你的生命，如此才能有源源不絕的內容可以表現。&lt;/p&gt;
&lt;p&gt;（頁122）&lt;/p&gt;
&lt;/div&gt;
&lt;/blockquote&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;hr&gt;
&lt;p&gt;林先生所提之創作泉源，主要有三項：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;豐富的知識&lt;/li&gt;
&lt;li&gt;高尚的情操&lt;/li&gt;
&lt;li&gt;熱烈的愛心&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;以下是我的詮釋：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;豐富的知識&lt;/strong&gt;：包含與藝術相關的理論、歷史、鑑賞技巧，以及具備創作藝術作品的技巧。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;高尚的情操&lt;/strong&gt;&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;：我想囊括兩個層面。一是在乎他人，不認為這個世界繞著自己轉，願意多花心力關心人，小至身邊的家人朋友，大至國家社會；二是好品味，擁有好品味的人能一眼看出事物或是話題的價值，知道哪些會讓自己的生命變得更美好，哪些則不會。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;熱烈的愛心&lt;/strong&gt;：很有趣的是，林先生在愛心前面加了「熱烈」二字，我想，這大概反映只有一般的愛是不夠的吧。如果只是一般「愛音樂」、「愛繪畫」，那是不夠成為一位藝術家的，頂多只能成為一個鑑賞者，或是工匠而已。一位熱切愛著藝術的人，藝術是他生命的一部份，他會想辦法超越自己、不斷前進、不斷創作。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;林先生談到豐富以上創作泉源的方法是閱讀。然而，我覺得閱讀偏智識層面，雖然重要沒錯，卻少了感官層面的探索。&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt; 我認為在生活中專注感受也滿重要的：&lt;/p&gt;
&lt;p&gt;專心察看生活中的風景；&lt;/p&gt;
&lt;p&gt;專心聆聽蟲鳴鳥叫；&lt;/p&gt;
&lt;p&gt;專心聞飯菜的香味；&lt;/p&gt;
&lt;p&gt;專心感受這個世界的美好，將美好透過創作分享出去。&lt;/p&gt;
&lt;p&gt;當然也可能是另一個面向：勇敢看見苦難，透過創作來舒緩別人生命中的傷痛；聽見別人因不公義而受苦的呼聲，藉由作品為導正不公義的價值觀出一份心力。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;雖然沒有機會認識林先生本人，我卻在閱讀她的文字之中，產生某種奇妙的思念之情。倘若可行，真想親自修習她六朝文學的課程，也很想與她當面喝咖啡、談文學、聊創作。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;延伸閱讀（於2026 年 1 月 13 日補充）：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://cws.nmtl.gov.tw/home/zh-tw/chronology/757263"target="_blank"
&gt;林文月文學年表&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.lib.ntu.edu.tw/events/2023_LinWen-yueh/"target="_blank"
&gt;台大圖書館：永遠的風華—林文月教授紀念展&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;不知為何，身在 2025 年的我，一開始覺得「高尚」這個詞有點刺眼，我猜是許多時候，人們太常在高尚前面加個「假」字，導致我們忘記高尚的真實樣態。&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;不過，也可能是林先生不覺得需要特別提，她大概也沒想到，幾十年後的世界，人們的注意力被智慧型手機影響而急遽下滑吧。&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content:encoded></item><item><title>📚免費學習樂理的線上資源</title><link>https://alicehsu.blog/zh-tw/posts/2025/10/%E5%85%8D%E8%B2%BB%E5%AD%B8%E7%BF%92%E6%A8%82%E7%90%86%E7%9A%84%E7%B7%9A%E4%B8%8A%E8%B3%87%E6%BA%90/</link><pubDate>Fri, 17 Oct 2025 13:27:44 -0500</pubDate><guid>https://alicehsu.blog/zh-tw/posts/2025/10/%E5%85%8D%E8%B2%BB%E5%AD%B8%E7%BF%92%E6%A8%82%E7%90%86%E7%9A%84%E7%B7%9A%E4%B8%8A%E8%B3%87%E6%BA%90/</guid><description>我的網頁瀏覽器有一個名為「music」的書籤資料夾，放了我歷年來找到很棒、與音樂相關的資源。</description><media:thumbnail url="https://alicehsu.blog/images/Post3home.jpg"/><media:content url="https://alicehsu.blog/images/Post3home.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post3home.jpg" type="image/jpeg"/><content:encoded>&lt;img
src="https://alicehsu.blog/images/Post3home.jpg"
loading="eager"
/&gt;&lt;p&gt;我的網頁瀏覽器有一個名為「music」的書籤資料夾，放了我歷年來找到很棒、與音樂相關的資源。覺得只放在那有點可惜，索性寫一篇文分享給大家。我想對於想自學樂理的學生，或是需要教學資源的老師都會滿有幫助的。&lt;/p&gt;
&lt;h2 id="中文資源"&gt;中文資源&lt;/h2&gt;
&lt;h3 id="1-好和弦-nicechordcom"&gt;1. 好和弦 NiceChord.com&lt;/h3&gt;
&lt;p&gt;中文的樂理資源本就不多，願意免費且公開提供樂理學習資源的，目前我除了 NiceChord.com 就找不到其他的了。NiceChord.com 由台灣鋼琴家官大爲（Wiwi Kuan）所創立，他擅長將困難的樂理知識講解地清楚易懂！Wiwi 創立的 &lt;a href="https://www.youtube.com/@nicechordwiwi/videos"target="_blank"
&gt;YouTube&lt;/a&gt; 頻道也有許多豐富的內容，不過由於近年來他將重心移到自架的部落格和影音平台，我在這裡還是主推他的個人網頁了。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;⭐ 亮點&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;網站的樂理知識大多是現代流行音樂會運用的概念，你可以一次搞懂現代和弦代號，還能理解一些在爵士裡常出現的酷炫和弦怎麼使用。當然也有基礎的樂理知識，包含：搞懂音程名稱、理解大調和小調的原理&amp;hellip;&amp;hellip;等等。&lt;/li&gt;
&lt;li&gt;除此之外，還有關於鋼琴彈奏、即興、編曲、混音的分享。&lt;/li&gt;
&lt;li&gt;他還寫了一系列的&lt;a href="https://nicechord.com/tools/"target="_blank"
&gt;程式&lt;/a&gt;，讓人能簡單查詢音樂名詞、使用自訂節拍的節拍器、查詢和弦代號&amp;hellip;&amp;hellip;等等。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;📸 網站截圖&lt;/strong&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/3/1.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/3/1.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;style&gt;
#masonry-c0ddd86c1e4f53eddc24cdc695d96d17-1 {
width: 100%;
}
#masonry-c0ddd86c1e4f53eddc24cdc695d96d17-1 .masonry-container {
width: 100%;
position: relative;
}
#masonry-c0ddd86c1e4f53eddc24cdc695d96d17-1 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-c0ddd86c1e4f53eddc24cdc695d96d17-1 .masonry-item img {
width: 100%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-c0ddd86c1e4f53eddc24cdc695d96d17-1 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-c0ddd86c1e4f53eddc24cdc695d96d17-1 .glightbox:hover,
#masonry-c0ddd86c1e4f53eddc24cdc695d96d17-1 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-c0ddd86c1e4f53eddc24cdc695d96d17-1 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-c0ddd86c1e4f53eddc24cdc695d96d17-1 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-c0ddd86c1e4f53eddc24cdc695d96d17-1"
data-columns="2"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/3/2.png"
class="glightbox"
data-gallery="masonry-c0ddd86c1e4f53eddc24cdc695d96d17-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/3/2.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/3/2.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/3/3.png"
class="glightbox"
data-gallery="masonry-c0ddd86c1e4f53eddc24cdc695d96d17-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/3/3.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/3/3.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-c0ddd86c1e4f53eddc24cdc695d96d17-1';
const config = {
columns: 2 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;&lt;/p&gt;
&lt;p&gt;網站連結：&lt;a href="https://nicechord.com/"target="_blank"
&gt;好和弦 NiceChord.com&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="英文資源"&gt;英文資源&lt;/h2&gt;
&lt;p&gt;不得不說，免費分享樂理知識的網站數量，英文網站比中文多上許多。&lt;/p&gt;
&lt;h3 id="1-music-theory-for-the-21st-century-classroom"&gt;1. Music Theory for the 21st-Century Classroom&lt;/h3&gt;
&lt;p&gt;這是我英文資源裡的首推！美國菩及海灣大學 （University of Puget Sound） 的 &lt;a href="https://www.pugetsound.edu/directory/robert-hutchinson"target="_blank"
&gt;Robert Hutchinson&lt;/a&gt; 教授非常慷慨，他將為期四學期的大學音樂理論教材免費公開在線上，讓你能按部就班理解樂理。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;⭐ 亮點&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;這個網站可以免費下載PDF檔，相當於免費獲得一本音樂理論教科書。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;他在網頁上將每個音樂範例嵌入 YouTube 錄音。每一首都有精確的時間標記（讀者不用自己拉時間軸，有沒有很貼心！），你就能直接聆聽書中所提到的段落。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;每章最後都有附贈練習題，還包含解答，能讓你立即應用所學的內容。（好像在寫高中自修，還能自己對答案，不用怕不知道自己寫得對還是不對！）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;除此之外，書本從基礎概念開始，也涵蓋像是對位法等進階主題，適合初學者與中級學習者。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;📸 網站截圖&lt;/strong&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/3/4.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/3/4.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;style&gt;
#masonry-c0ddd86c1e4f53eddc24cdc695d96d17-2 {
width: 100%;
}
#masonry-c0ddd86c1e4f53eddc24cdc695d96d17-2 .masonry-container {
width: 100%;
position: relative;
}
#masonry-c0ddd86c1e4f53eddc24cdc695d96d17-2 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-c0ddd86c1e4f53eddc24cdc695d96d17-2 .masonry-item img {
width: 100%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-c0ddd86c1e4f53eddc24cdc695d96d17-2 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-c0ddd86c1e4f53eddc24cdc695d96d17-2 .glightbox:hover,
#masonry-c0ddd86c1e4f53eddc24cdc695d96d17-2 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-c0ddd86c1e4f53eddc24cdc695d96d17-2 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-c0ddd86c1e4f53eddc24cdc695d96d17-2 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-c0ddd86c1e4f53eddc24cdc695d96d17-2"
data-columns="2"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/3/5.png"
class="glightbox"
data-gallery="masonry-c0ddd86c1e4f53eddc24cdc695d96d17-2"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/3/5.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/3/5.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/3/6.png"
class="glightbox"
data-gallery="masonry-c0ddd86c1e4f53eddc24cdc695d96d17-2"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/3/6.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/3/6.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-c0ddd86c1e4f53eddc24cdc695d96d17-2';
const config = {
columns: 2 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;&lt;/p&gt;
&lt;p&gt;網站連結：&lt;a href="https://musictheory.pugetsound.edu/mt21c/MusicTheory.html"target="_blank"
&gt;Music Theory for the 21st-Century Classroom&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;PDF 下載點： &lt;a href="https://musictheory.pugetsound.edu/"target="_blank"
&gt;PDF&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="2-teoría-music-theory-web"&gt;2. teoría: Music Theory Web&lt;/h3&gt;
&lt;p&gt;teoría是由任職波多黎各音樂學院 (Puerto Rico Conservatory of Music) 的 &lt;a href="https://jeanne-inc.com/collections/jose-rodriguez-alvira"target="_blank"
&gt;José Rodríguez Alvira&lt;/a&gt; 教授於 1997 年創立。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;⭐ 亮點&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Tutorials 的介面有非常扎實的基礎樂理知識，從基本的認識音符時值，到稍微進階一點的和聲進行都有介紹。&lt;/li&gt;
&lt;li&gt;有非常多可自訂出題範圍的聽力練習。比如說，如果想要考考三和弦，你可以選擇出題範圍要不要包含大三、小三、增三、減三&amp;hellip;&amp;hellip;等等。也能選擇考轉位的範圍，如果有選擇困難，那你可以選 &amp;ldquo;Play, Don&amp;rsquo;t Ask&amp;rdquo; （就播吧，別問了）的選項。對於要考音樂檢定或是純粹想考考自己音感的人，它滿實用的。&lt;/li&gt;
&lt;li&gt;最讓我驚艷的是，Articles 的頁面收錄了作者撰寫的古典作品分析。包含：蕭邦的 24 首前奏曲分析，巴赫的布蘭登堡協奏曲、舒曼的兒時情景&amp;hellip;&amp;hellip;等等，若想了解古典樂曲和聲進行以及作曲家的作曲邏輯，可以逛逛這一頁。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;📸 網站截圖&lt;/strong&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/3/7.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/3/7.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;style&gt;
#masonry-c0ddd86c1e4f53eddc24cdc695d96d17-3 {
width: 100%;
}
#masonry-c0ddd86c1e4f53eddc24cdc695d96d17-3 .masonry-container {
width: 100%;
position: relative;
}
#masonry-c0ddd86c1e4f53eddc24cdc695d96d17-3 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-c0ddd86c1e4f53eddc24cdc695d96d17-3 .masonry-item img {
width: 100%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-c0ddd86c1e4f53eddc24cdc695d96d17-3 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-c0ddd86c1e4f53eddc24cdc695d96d17-3 .glightbox:hover,
#masonry-c0ddd86c1e4f53eddc24cdc695d96d17-3 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-c0ddd86c1e4f53eddc24cdc695d96d17-3 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-c0ddd86c1e4f53eddc24cdc695d96d17-3 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-c0ddd86c1e4f53eddc24cdc695d96d17-3"
data-columns="2"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/3/8.png"
class="glightbox"
data-gallery="masonry-c0ddd86c1e4f53eddc24cdc695d96d17-3"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/3/8.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/3/8.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/3/9.png"
class="glightbox"
data-gallery="masonry-c0ddd86c1e4f53eddc24cdc695d96d17-3"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/3/9.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/3/9.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-c0ddd86c1e4f53eddc24cdc695d96d17-3';
const config = {
columns: 2 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;
網站連結：&lt;a href="https://www.teoria.com/index.php"target="_blank"
&gt;teoría&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="小結"&gt;小結&lt;/h2&gt;
&lt;p&gt;以上這三個是我最常逛的樂理網站，偶爾會逛的還有： &lt;a href="https://www.musictheory.net/lessons"target="_blank"
&gt;musictheory.net&lt;/a&gt;、&lt;a href="https://www.musicca.com/tw"target="_blank"
&gt;Musicca&lt;/a&gt;、&lt;a href="https://pianowithjonny.com/library/"target="_blank"
&gt;Piano With Jonny&lt;/a&gt; 等等。&lt;/p&gt;
&lt;p&gt;這些網站有沒有幫到你呢？或是你有喜歡的樂理網站嗎？歡迎來信和我分享心得：
&lt;a href="mailto:mail@alicehsu.blog"&gt;mail@alicehsu.blog&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title>🔔 Bell 的創作歷程</title><link>https://alicehsu.blog/zh-tw/posts/2025/10/bell-%E7%9A%84%E5%89%B5%E4%BD%9C%E6%AD%B7%E7%A8%8B/</link><pubDate>Sun, 12 Oct 2025 22:15:47 -0500</pubDate><guid>https://alicehsu.blog/zh-tw/posts/2025/10/bell-%E7%9A%84%E5%89%B5%E4%BD%9C%E6%AD%B7%E7%A8%8B/</guid><description>有一天即興時忽然彈出前八小節，覺得不錯聽，就錄進了我的 Yamaha P525。</description><media:thumbnail url="https://alicehsu.blog/images/Post2home.png"/><media:content url="https://alicehsu.blog/images/Post2home.png" medium="image"/><enclosure url="https://alicehsu.blog/images/Post2home.png" type="image/jpeg"/><content:encoded>&lt;div
class="alert alert-warning my-6 overflow-hidden rounded-lg transition-all duration-200 ease-out hover:-translate-y-0.5 hover:shadow-md"
style="background-color: color-mix(in srgb, var(--color-warning) 10%, transparent);
border-left-color: var(--color-warning);
--hover-bg: color-mix(in srgb, var(--color-warning) 15%, transparent);"
onmouseover="this.style.backgroundColor = this.style.getPropertyValue('--hover-bg')"
onmouseout="this.style.backgroundColor = 'color-mix(in srgb, var(--color-warning) 10%, transparent)'"
role="alert"
aria-labelledby="alert-0-title"&gt;
&lt;div
id="alert-0-content"
class="alert-content px-6 pb-6 py-6 items-center justify-between "&gt;
&lt;div class="prose prose-sm text-foreground/90 max-w-none"&gt;
&lt;p&gt;完整琴譜請至&lt;a href="https://alicehsu.blog/portfolio/"&gt;作品集&lt;/a&gt;下載，也可在這裡找到我的 YouTube 演奏影片喔！&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;p&gt;Bell 這首曲式為 A-B-A’ 的鋼琴小品，是由開頭的 8 個小節靈感衍伸而來的
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/2/1.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/2/1.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;&lt;/p&gt;
&lt;h2 id="創作背景"&gt;創作背景&lt;/h2&gt;
&lt;p&gt;有一天即興時忽然彈出前八小節，覺得不錯聽，就錄進了我的 Yamaha P525。原本想放一陣子再來發展成一首曲子，結果旋律不斷不斷在腦海裡盤旋，覺得不寫出來不行，索性花幾天的時間趕緊寫完整首曲子。而曲名 Bell（鐘）則是因作曲的過程，發現旋律有鐘聲的意象而賦予其名。&lt;/p&gt;
&lt;h2 id="關於作曲"&gt;關於作曲&lt;/h2&gt;
&lt;h3 id="a-段1-22-小節"&gt;A 段（1-22 小節）&lt;/h3&gt;
&lt;p&gt;A 段的寫作，大多數是在鋼琴上即興而來。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;17-20 小節&lt;/strong&gt;：
17-18 小節的右手旋律是變換第 1 小節而來，讓聽者重新記得這首曲子的動機。而 19-20 小節是模仿前面兩個小節、不過改變音域來模仿迴盪的鐘聲。
&lt;style&gt;
#masonry-f09e1115375fa7e1853ad682bebc5cc9-1 {
width: 100%;
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-1 .masonry-container {
width: 100%;
position: relative;
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-1 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-1 .masonry-item img {
width: 100%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-1 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-1 .glightbox:hover,
#masonry-f09e1115375fa7e1853ad682bebc5cc9-1 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-1 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-1 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-f09e1115375fa7e1853ad682bebc5cc9-1"
data-columns="3"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/2/2.png"
class="glightbox"
data-gallery="masonry-f09e1115375fa7e1853ad682bebc5cc9-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/2/2.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/2/2.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-f09e1115375fa7e1853ad682bebc5cc9-1';
const config = {
columns: 3 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;&lt;/p&gt;
&lt;style&gt;
#masonry-f09e1115375fa7e1853ad682bebc5cc9-2 {
width: 100%;
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-2 .masonry-container {
width: 100%;
position: relative;
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-2 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 20px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-2 .masonry-item img {
width: 100%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-2 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-2 .glightbox:hover,
#masonry-f09e1115375fa7e1853ad682bebc5cc9-2 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-2 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-2 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-f09e1115375fa7e1853ad682bebc5cc9-2"
data-columns="2"
data-gutter="20"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/2/3.png"
class="glightbox"
data-gallery="masonry-f09e1115375fa7e1853ad682bebc5cc9-2"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/2/3.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/2/3.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/2/4.png"
class="glightbox"
data-gallery="masonry-f09e1115375fa7e1853ad682bebc5cc9-2"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/2/4.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/2/4.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-f09e1115375fa7e1853ad682bebc5cc9-2';
const config = {
columns: 2 ,
gutter: 20 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;
&lt;h3 id="b-段23-54-小節"&gt;B 段（23-54 小節）&lt;/h3&gt;
&lt;p&gt;B 段的寫作，主要是想要寫一個不同於 A 段質地的音樂，所以運用了 A 段的動機，變換節奏、旋律方向和演奏方法而來的。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;23-26 小節&lt;/strong&gt;：主旋律改為左手，反向 (inversion) 處理 A 段前兩小節的旋律而來；而右手部分則是將 A 段的動機增值 (augmentation)。
&lt;style&gt;
#masonry-f09e1115375fa7e1853ad682bebc5cc9-3 {
width: 100%;
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-3 .masonry-container {
width: 100%;
position: relative;
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-3 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-3 .masonry-item img {
width: 100%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-3 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-3 .glightbox:hover,
#masonry-f09e1115375fa7e1853ad682bebc5cc9-3 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-3 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-3 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-f09e1115375fa7e1853ad682bebc5cc9-3"
data-columns="1"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/2/5.png"
class="glightbox"
data-gallery="masonry-f09e1115375fa7e1853ad682bebc5cc9-3"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/2/5.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/2/5.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-f09e1115375fa7e1853ad682bebc5cc9-3';
const config = {
columns: 1 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;27-30 小節&lt;/strong&gt;：此段是模仿 A 段的 9-12 小節。
&lt;style&gt;
#masonry-f09e1115375fa7e1853ad682bebc5cc9-4 {
width: 100%;
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-4 .masonry-container {
width: 100%;
position: relative;
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-4 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 20px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-4 .masonry-item img {
width: 100%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-4 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-4 .glightbox:hover,
#masonry-f09e1115375fa7e1853ad682bebc5cc9-4 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-4 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-4 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-f09e1115375fa7e1853ad682bebc5cc9-4"
data-columns="2"
data-gutter="20"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/2/8.png"
class="glightbox"
data-gallery="masonry-f09e1115375fa7e1853ad682bebc5cc9-4"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/2/8.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/2/8.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/2/7.png"
class="glightbox"
data-gallery="masonry-f09e1115375fa7e1853ad682bebc5cc9-4"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/2/7.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/2/7.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-f09e1115375fa7e1853ad682bebc5cc9-4';
const config = {
columns: 2 ,
gutter: 20 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;&lt;/p&gt;
&lt;p&gt;老實說，一開始我沒寫 23-30 小節的樂段，B 段原本是從 31 小節開始的。後來覺得整個曲子太短了，覺得後方的高潮需要一些鋪陳才加上的。並且，為了讓曲子不無聊、多一些對話，我刻意變換音符走向與和弦進行。寫完之後，覺得這樣的效果還挺不錯的。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;39-42 小節&lt;/strong&gt;：這段是前方樂段和後面高潮的銜接。
&lt;style&gt;
#masonry-f09e1115375fa7e1853ad682bebc5cc9-5 {
width: 100%;
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-5 .masonry-container {
width: 100%;
position: relative;
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-5 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-5 .masonry-item img {
width: 100%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-5 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-5 .glightbox:hover,
#masonry-f09e1115375fa7e1853ad682bebc5cc9-5 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-5 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-5 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-f09e1115375fa7e1853ad682bebc5cc9-5"
data-columns="2"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/2/9.png"
class="glightbox"
data-gallery="masonry-f09e1115375fa7e1853ad682bebc5cc9-5"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/2/9.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/2/9.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-f09e1115375fa7e1853ad682bebc5cc9-5';
const config = {
columns: 2 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;43-48 小節&lt;/strong&gt;：這是整首曲子的高潮。原本右手嘗試想模仿 1-4 小節的左手，卻發現窒礙難行，後來決定重新設計右手：不同於 A 段的左手大抵是陪襯的作用，這段右手的連續和弦下行，與左手的單音旋律同樣重要，有種互搶鋒頭的意味。
&lt;style&gt;
#masonry-f09e1115375fa7e1853ad682bebc5cc9-6 {
width: 100%;
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-6 .masonry-container {
width: 100%;
position: relative;
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-6 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-6 .masonry-item img {
width: 100%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-6 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-6 .glightbox:hover,
#masonry-f09e1115375fa7e1853ad682bebc5cc9-6 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-6 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-6 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-f09e1115375fa7e1853ad682bebc5cc9-6"
data-columns="2"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/2/10.png"
class="glightbox"
data-gallery="masonry-f09e1115375fa7e1853ad682bebc5cc9-6"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/2/10.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/2/10.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-f09e1115375fa7e1853ad682bebc5cc9-6';
const config = {
columns: 2 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;
&lt;strong&gt;49-54 小節&lt;/strong&gt;：這段我想創造出鐘聲迴盪的效果，所以在左手彈了第一拍的八度之後，立刻飛到高音域彈後三拍，彈奏上比較有挑戰性。
&lt;style&gt;
#masonry-f09e1115375fa7e1853ad682bebc5cc9-7 {
width: 100%;
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-7 .masonry-container {
width: 100%;
position: relative;
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-7 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-7 .masonry-item img {
width: 100%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-7 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-7 .glightbox:hover,
#masonry-f09e1115375fa7e1853ad682bebc5cc9-7 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-7 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-7 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-f09e1115375fa7e1853ad682bebc5cc9-7"
data-columns="3"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/2/11.png"
class="glightbox"
data-gallery="masonry-f09e1115375fa7e1853ad682bebc5cc9-7"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/2/11.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/2/11.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-f09e1115375fa7e1853ad682bebc5cc9-7';
const config = {
columns: 3 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;&lt;/p&gt;
&lt;h3 id="a-段55-74-小節"&gt;A&amp;rsquo; 段（55-74 小節）&lt;/h3&gt;
&lt;p&gt;因為 1-8 小節實在很好聽，若只彈一次太可惜啦，所以決定將曲式定為 ABA&amp;rsquo; ，這樣就能再一次回味好聽的旋律！&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;63-70 小節&lt;/strong&gt;：這段右手是重複第一次所彈的，為了讓音樂變得有趣一點，調整了左手的伴奏，讓原本的降 A 原位分解和弦改為二轉位，引發聽者一種：「啊音樂快結束」的情緒。古典音樂在樂曲快結束時滿常有這種 $\mathrm{I}^6_4 \rightarrow \mathrm{V}^7 \rightarrow \mathrm{I}$ 的和聲進行，我借來使用在這邊的左手伴奏。
&lt;style&gt;
#masonry-f09e1115375fa7e1853ad682bebc5cc9-8 {
width: 100%;
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-8 .masonry-container {
width: 100%;
position: relative;
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-8 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-8 .masonry-item img {
width: 100%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-8 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-8 .glightbox:hover,
#masonry-f09e1115375fa7e1853ad682bebc5cc9-8 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-8 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-f09e1115375fa7e1853ad682bebc5cc9-8 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-f09e1115375fa7e1853ad682bebc5cc9-8"
data-columns="2"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/2/12.png"
class="glightbox"
data-gallery="masonry-f09e1115375fa7e1853ad682bebc5cc9-8"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/2/12.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/2/12.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-f09e1115375fa7e1853ad682bebc5cc9-8';
const config = {
columns: 2 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;&lt;/p&gt;
&lt;h2 id="關於演奏"&gt;關於演奏&lt;/h2&gt;
&lt;div
class="alert alert-caution my-6 overflow-hidden rounded-lg transition-all duration-200 ease-out hover:-translate-y-0.5 hover:shadow-md"
style="background-color: color-mix(in srgb, var(--color-caution) 10%, transparent);
border-left-color: var(--color-caution);
--hover-bg: color-mix(in srgb, var(--color-caution) 15%, transparent);"
onmouseover="this.style.backgroundColor = this.style.getPropertyValue('--hover-bg')"
onmouseout="this.style.backgroundColor = 'color-mix(in srgb, var(--color-caution) 10%, transparent)'"
role="alert"
aria-labelledby="alert-1-title"&gt;
&lt;div
id="alert-1-content"
class="alert-content px-6 pb-6 py-6 items-center justify-between "&gt;
&lt;div class="prose prose-sm text-foreground/90 max-w-none"&gt;
&lt;p&gt;&lt;strong&gt;此段並非告訴演奏者「應該」如何演奏，而是純粹分享我「覺得」怎麼樣彈比較好聽。你也可以發掘你自己覺得好聽的演奏方式，然後寫信跟我分享。&lt;/strong&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;h3 id="踏板"&gt;踏板&lt;/h3&gt;
&lt;p&gt;這首曲子的踏板滿關鍵的，不過我不想將每個踏板符號都寫上去，這樣太囉哩囉嗦了。同時我也接受別的演奏者和我有不同的詮釋方式。值得一提的是： 16 小節的第二拍 E♭ 彈完不換踏板，直接彈奏 19 小節才換，能讓整個音樂有鐘聲迴響的感覺，我滿喜歡的。讓我不禁想到之前聽到鐘聲時，那種前一個音和後一個音交織在一起共鳴的感覺。（同樣適用於第 70 小節的低音 E♭）&lt;/p&gt;
&lt;p&gt;而 23-26 小節則是刻意不踩踏板，讓整體很明顯與前一個段落有所切割，也讓音樂更俐落。&lt;/p&gt;
&lt;h3 id="不同的音色"&gt;不同的音色&lt;/h3&gt;
&lt;p&gt;這首曲子本來是寫給鋼琴演奏的。寫完之後，意外發現 Yamaha P525 內建的 &lt;a href="https://www.youtube.com/watch?v=3qoF04GK2zI"target="_blank"
&gt;Stage E. Piano&lt;/a&gt; 的音色演奏這首曲子非常好聽，滿像遊戲的背景音樂，所以用這個音色重新彈奏又錄了一支影片。其實我覺得如果用鐵琴的音色來演奏應該也不錯。如果你有發現哪些音色也適合來演奏這首曲子，歡迎來信跟我分享！&lt;/p&gt;
&lt;h2 id="結語"&gt;結語&lt;/h2&gt;
&lt;p&gt;寫作這篇文章之前，我請 ChatGPT 推薦，可以寫作的次要主題，結果，它除了給我主題之外，還寫了非常多矯情的句子，讓我來分享一下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;「有時候我會卡在兩個音之間，那是一種說不出的停頓。像話到嘴邊又吞回去。」$\rightarrow$ 我是會卡沒錯，不過後面的比喻實在太油膩了。&lt;/li&gt;
&lt;li&gt;「當我彈下最後一個音，我突然覺得，這首曲子已經不屬於我了。」$\rightarrow$ 並沒有（基德揮手），我還是擁有這首曲子好嗎！樂曲第一頁有寫我的 Copyright！&lt;/li&gt;
&lt;li&gt;「每一首曲子，都是一封寫給某個時刻的信。」$\rightarrow$ 太太太矯情了，我以為我在聽霸道總裁講話。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;所以決定不理 ChatGPT 油膩到不行的建議，決定平平淡淡好好記錄自己作曲時的一些想法。&lt;/p&gt;
&lt;p&gt;如果你演奏了我的曲子，歡迎你來信與我分享你的演奏喔！如果你上傳到任何影音分享平台，也歡迎你轉貼這篇文章讓你的聽眾了解我的創作歷程。&lt;/p&gt;</content:encoded></item><item><title>刪掉 FB 與 IG 的我，發生了什麼變化?</title><link>https://alicehsu.blog/zh-tw/posts/2025/09/%E5%88%AA%E6%8E%89-fb-%E8%88%87-ig-%E7%9A%84%E6%88%91%E7%99%BC%E7%94%9F%E4%BA%86%E4%BB%80%E9%BA%BC%E8%AE%8A%E5%8C%96/</link><pubDate>Sun, 28 Sep 2025 21:21:01 -0500</pubDate><guid>https://alicehsu.blog/zh-tw/posts/2025/09/%E5%88%AA%E6%8E%89-fb-%E8%88%87-ig-%E7%9A%84%E6%88%91%E7%99%BC%E7%94%9F%E4%BA%86%E4%BB%80%E9%BA%BC%E8%AE%8A%E5%8C%96/</guid><description>從 2009 年加入 FB 至現在，我使用 FB 將近十年了。</description><media:thumbnail url="https://alicehsu.blog/images/Post1home.jpg"/><media:content url="https://alicehsu.blog/images/Post1home.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post1home.jpg" type="image/jpeg"/><content:encoded>&lt;p&gt;以下這篇文章在 2019 年 4 月 5 日於 Medium 發表。六年後的我，不只刪除了app，也刪除了 Instagram 的帳號，並且常讓 Facebook 處於停用的狀態，只有在還需用 Marketplace 的時候才會開啟帳號。現在回看，真覺得六年前的自己開了很好的頭。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;從 2009 年加入 FB 至現在，我使用 FB 將近十年了。&lt;/p&gt;
&lt;p&gt;這十年來變化之大，從少少的幾個朋友一起玩開心農場，暴增至 400 多個（對有些人來說還算少的了）狂洗我的動態版面，不僅我的國小老師，甚至到不熟的遠親阿姨都加我為 FB 好友。一團既熟悉又陌生的親友擠在我的好友名單，很快地我就成了潛水一族，默默看著大家的動態。&lt;/p&gt;
&lt;p&gt;當我在FB的發言有太多顧忌時，我將重心轉向 IG，在一個自由的小天地寫寫文章。偶爾，看完別人的限動後回個雙眼愛心的心情，表示關心。&lt;/p&gt;
&lt;p&gt;然而，我卻發現我越來越不快樂。&lt;/p&gt;
&lt;p&gt;總是想著剛剛的文章明明寫得還不錯，但我在意的 A 怎麼沒按愛心？或是，當我寫報告寫累了，想逛個社群媒體放鬆，卻看到修同門課的同學發了字很大的貼文慶祝寫完報告，反而令我更焦慮。&lt;/p&gt;
&lt;p&gt;除此之外，我又想到：對我生命真正重要的家人、朋友、師長，幾乎都是社群媒體的低度活躍者。我與他們擁有最珍貴的記憶，不是誰按了我哪則貼文讚，而是走到我身旁，陪我用同個頻率大笑；或是擁抱並輕拍悲傷的我，讓我放心在他們的懷裡痛哭。&lt;/p&gt;
&lt;p&gt;一直到昨天覺察到這點，我狠下了心，在 FB 與 IG 發文說我要從這兩個平台消失一個月，但仍留著 Messenger 與 Line，不過會關掉手機的通知，因此不再是隨 call 隨到，而是只集中在一天當中的一個時段統一回覆。&lt;/p&gt;
&lt;p&gt;接著，我做了以下一氣呵成的動作：&lt;/p&gt;
&lt;div
class="alert alert-caution my-6 overflow-hidden rounded-lg transition-all duration-200 ease-out hover:-translate-y-0.5 hover:shadow-md"
style="background-color: color-mix(in srgb, var(--color-caution) 10%, transparent);
border-left-color: var(--color-caution);
--hover-bg: color-mix(in srgb, var(--color-caution) 15%, transparent);"
onmouseover="this.style.backgroundColor = this.style.getPropertyValue('--hover-bg')"
onmouseout="this.style.backgroundColor = 'color-mix(in srgb, var(--color-caution) 10%, transparent)'"
role="alert"
aria-labelledby="alert-0-title"&gt;
&lt;div
id="alert-0-content"
class="alert-content px-6 pb-6 py-6 items-center justify-between "&gt;
&lt;div class="prose prose-sm text-foreground/90 max-w-none"&gt;
&lt;p&gt;&lt;strong&gt;步驟一&lt;/strong&gt;：刪除手機中 FB、IG 的 app。&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;div
class="alert alert-caution my-6 overflow-hidden rounded-lg transition-all duration-200 ease-out hover:-translate-y-0.5 hover:shadow-md"
style="background-color: color-mix(in srgb, var(--color-caution) 10%, transparent);
border-left-color: var(--color-caution);
--hover-bg: color-mix(in srgb, var(--color-caution) 15%, transparent);"
onmouseover="this.style.backgroundColor = this.style.getPropertyValue('--hover-bg')"
onmouseout="this.style.backgroundColor = 'color-mix(in srgb, var(--color-caution) 10%, transparent)'"
role="alert"
aria-labelledby="alert-1-title"&gt;
&lt;div
id="alert-1-content"
class="alert-content px-6 pb-6 py-6 items-center justify-between "&gt;
&lt;div class="prose prose-sm text-foreground/90 max-w-none"&gt;
&lt;p&gt;&lt;strong&gt;步驟二&lt;/strong&gt;：在筆電的 Chrome 瀏覽器安裝 Block site 應用元件，把 FB 和 IG 給列入阻擋名單內。&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;div
class="alert alert-caution my-6 overflow-hidden rounded-lg transition-all duration-200 ease-out hover:-translate-y-0.5 hover:shadow-md"
style="background-color: color-mix(in srgb, var(--color-caution) 10%, transparent);
border-left-color: var(--color-caution);
--hover-bg: color-mix(in srgb, var(--color-caution) 15%, transparent);"
onmouseover="this.style.backgroundColor = this.style.getPropertyValue('--hover-bg')"
onmouseout="this.style.backgroundColor = 'color-mix(in srgb, var(--color-caution) 10%, transparent)'"
role="alert"
aria-labelledby="alert-2-title"&gt;
&lt;div
id="alert-2-content"
class="alert-content px-6 pb-6 py-6 items-center justify-between "&gt;
&lt;div class="prose prose-sm text-foreground/90 max-w-none"&gt;
&lt;p&gt;&lt;strong&gt;步驟三&lt;/strong&gt;：找尋替代的娛樂：當社群媒體的癮頭發作時，找其他更有生產力的娛樂轉移我的注意力。如：畫紓壓著色畫、聽音樂、看課外讀物、寫字……。&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;div
class="alert alert-caution my-6 overflow-hidden rounded-lg transition-all duration-200 ease-out hover:-translate-y-0.5 hover:shadow-md"
style="background-color: color-mix(in srgb, var(--color-caution) 10%, transparent);
border-left-color: var(--color-caution);
--hover-bg: color-mix(in srgb, var(--color-caution) 15%, transparent);"
onmouseover="this.style.backgroundColor = this.style.getPropertyValue('--hover-bg')"
onmouseout="this.style.backgroundColor = 'color-mix(in srgb, var(--color-caution) 10%, transparent)'"
role="alert"
aria-labelledby="alert-3-title"&gt;
&lt;div
id="alert-3-content"
class="alert-content px-6 pb-6 py-6 items-center justify-between "&gt;
&lt;div class="prose prose-sm text-foreground/90 max-w-none"&gt;
&lt;p&gt;&lt;strong&gt;步驟四&lt;/strong&gt;：找尋支持團體：跟教會的朋友們說，請大家為我禱告；跟家人師長聊，被大大讚美因此增強自信心。&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;p&gt;我原本以為可能要以堅強的意志力克服，結果發現：咦？怎麼好像還滿輕鬆，似乎沒有想像中那麼難欸。一整天下來，我目前覺察到最明顯的改變有以下幾點：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;心情變清爽了&lt;/strong&gt;：因為終於不再有「誰還沒按讚」的等待，也不再有「必須消掉紅色通知數字」的強迫症，我覺得自己彷彿按下 Ctrl+Shift+Esc，把大腦的工作管理員給叫出來，並關閉社群媒體的背景程式。頓時，腦內瞬間多了超多容量，可以騰出多餘心力在其他有意義的事情上，也讓我更從容自在，而不是焦慮地在原地打轉。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;覺察力變高&lt;/strong&gt;：以往沒感覺的風景，今日多了不同的感受。眼睛離開手機螢幕，忽然之間，我不再是那個被動、被別人資訊塞滿的鴨子，而是一名主動、有冒險精神的探索者。不僅，我對於現實生活世界的色彩更加敏感，除此之外，我也可以感覺地到更細微的觸覺：今日的微風濕度剛剛好，一陣涼風吹拂在臉上，猶如面膜服貼在臉上的那一瞬間。
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/1/1.jpg"
alt="信義誠品的色鉛筆牆"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/1/1.jpg"
data-gallery-alt="信義誠品的色鉛筆牆"
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/1/2.jpg"
alt="市政府前的日落"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/1/2.jpg"
data-gallery-alt="市政府前的日落"
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;喝水不再是一件難事(有可能跟第二點有關)&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;這點還滿有趣的。我本身是個愛喝飲料的人，前一陣子喝太兇想戒都覺得好難戒掉。但今天，我對水的味道更敏感了，忽然覺得平日喝的微糖微冰飲料太甜膩，完全不想碰，反而喜歡水純粹的味道。&lt;/p&gt;
&lt;p&gt;其實一整天下來，我最大的感想就是：啊！舒爽！戒掉 FB、IG 的第一天，宛如濕悶已久的天氣終於在午後下起滂沱大雨，心情是雀躍無比的。我覺得自己因著社群媒體而失能的部分，正慢慢地一步一步被自己找回來。&lt;/p&gt;</content:encoded></item></channel></rss>