搜尋

搜尋結果

土地誕、春分遇龍抬頭
宗教玄學
熊神進・2026-03-18

2026年的二月初二除了是土地誕外還正好是二十四節令中的“春分”和傳統市傳俗的“龍抬頭”,三個節遇上一起這概率不是很高。 在澳門,農曆二月初二是土地誕,她一個極具特色與傳統意義的日子。這一傳統節日,宛如一顆鑲嵌在澳門文化長河中的明珠,散發著獨特的魅力,承載著深厚的文化內涵與歷史記憶。 一、土地誕的起源與雀仔園土地廟的前世今生 土地誕的起源可追溯至古老的農耕文明。在傳統農耕社會中,土地是人們賴以生存的根基,人們對土地充滿了敬畏與感恩之情。爲了祈求土地神靈的庇佑,保佑風調雨順、五穀豐登,便逐漸形成了祭祀土地神的習俗,土地誕也由此而來。 而在澳門,雀仔園土地廟見證了這一傳統節日的傳承與發展,這座土地廟歷史悠久,在過去,周邊的居民們每逢土地誕,都會自發地來到這裏,舉行莊重的祭祀儀式。隨著時間的推移,雀仔園土地廟不斷修繕與擴建,逐漸成爲了澳門土地誕慶祝活動的核心地點,它不僅是一座宗教建築,更是澳門傳統文化的象徵,承載著一代又一代澳門人的情感與記憶。 二、澳門人慶祝土地誕的方式 每到農曆二月初二土地誕,澳門(尤其荷蘭園區)便迎來一片熱鬧祥和的氛圍之中。其中,粵劇(當地人叫大戲)表演是慶祝活動的一大亮點。在雀仔園土地廟前的空地上,搭建起了華麗的戲臺,專業的粵劇演員們身著精美戲服,唱念做打,精彩絕倫的表演吸引了衆多市民和游客駐足觀看。悠揚的唱腔、優美的舞姿,將傳統粵劇文化的魅力展現得淋漓盡致,讓人們在欣賞藝術的同時,也感受到了濃厚的節日氛圍。 此外,爲老居民(長者)舉辦圍餐也是土地誕的重要活動之一。圍餐現場,擺滿了豐盛的美食,老人們圍坐在一起,歡聲笑語,共享節日的喜悅。這一活動不僅體現了澳門社會對老年人的關愛與尊重,也增進了鄰里之間的感情,讓社區更加和諧溫暖。 拜土地的習俗與風水寓意 在澳門,拜土地是一項做生意的人的傳統習俗。風水學家認爲,每月的初二和十六日是祭祀土地神的好日子。居民們會在這兩天燒“五路財神香”,這種香有五支,分別呈現五種不同的顔色。在風水文化中,五路財神代表著東西南北中五個方位的財神,燒“五路財神香”寓意著祈求五路財神的庇佑,爲做生意的人帶來財運和好運。 拜土地的過程也十分講究。人們會先準備好香燭、水果、鮮花等祭品,然後來到土地廟前,虔誠地向土地神上香、叩拜,表達自己的感恩與祈求。整個過程莊重而神聖,體現了人們對土地神的敬畏之情。 澳門農曆二月初二土地誕,是傳統文化與現代生活的完美融合。它不僅是一場宗教祭祀活動,更是澳門人民傳承和弘揚傳統文化的重要方式。在這個特殊的日子裏,我們看到了傳統文化的强大生命力,也感受到了澳門這座城市獨特的魅力。讓我們珍惜這一寶貴的文化遺産,將傳統文化的火種代代相傳。

為何 VueJS 除錯如此麻煩?
科技新知
MacauYeah・2025-11-04

前一次,筆者分享了VS code debugging frontend的好功能,也確實了coding anywhere並不是一個普通的notepad + language server就可以解決的事。我們還要考慮如何debugging (除錯)的問題。 雖然筆者知道 vscode 可以解決問題,但為何 最原始的 nodejs debugger 不能解決問題。如果node debugger 不能解決問題,那麼 vscode 又做了什麼,它可以解決問題?經過一輪的實驗,筆者懷心疑,也許,強大的並不是 vscode 本身,而瀏覽器才真正的做到 debugger 的功能。而 vscode 只是以更方便的方式,重現那些結果。 為何 backend 的 debugger 不發揮作用? 筆者舉例,現時有一個 vue 3 專案,使用官方建議的方式生成 $ npm create vue@latest 這個專案,在開發模式下,會以 vite 架起一個端口為 5173 的伺服器,讓開發人員可以經過瀏覽器看到vue內容。筆者一直都認為,只要在 vite 的指令中插入 inspect 參數,一切就可以成功,就像 nodejs 一樣,只要在開始時加入參數就可以。結果當然是不行的。 經過對比 VueDevTools 的參考功能,筆者發現了一個出發點的問題。vite 其實是一個伺服器級的程式,也許它只是負責把所以 vue + js 動態轉成常見 js,就像 webpack 一樣。我們想要設的中斷點,都不在它的程式上,所以 debug 參數也沒有用。實質,我們要加的中斷點,其實要在客戶端上,也就是瀏覽器上。那因此,VueDevTools 也不包括那些功能。它只是好好地記錄了每個 vue component 或 js 是如何被改寫的過程(就像被 webpack改寫的過程)。 官方又是用什麼來除錯的? 既然我們知道了問題所在,就要看看傳統的 javascript 又是如何除錯的。實際上,因為瀏覽器的配合,設立中斷點的功能,原來早就實現了。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/debugger 只要我們在任何 javascript 地方,插入 “debugger;” 這個神奇的字,瀏覽器就會在inspect模式下,自動產生中斷點。之後,你可以控制瀏覽器進行watch / step into / step over 功能。絕對比console.log更有意義。 在發現了這個方法之後,回去找vue3的官方文件,驚訝地發現,它就是提議用這種方式進行除錯。 https://vuejs.org/guide/extras/reactivity-in-depth.html#reactivity-debugging 未解之謎 雖然我們找到了設定中斷點的方式,但對於vscode是如何做到客戶端、伺服器端通用這件事,筆者還是沒有了解到。就以現在的知訊來看,很大機會就是vscode操控了瀏覽器的除錯模式,把所有資訊都回傳了vscode本身。這也是解譯了為何vscode在起動debugger時,必需要由vscode自己叫起瀏覽器。而codeserver這類雲IDE無法叫起本地瀏覽器,就造成它無法運用除錯功能的原因。 有與趣為codeserver一起搵解決方案的朋友,可以到筆者的 https://github.com/macauyeah/AProgrammerPrepares ,以文字教學的方提交你的解決方案。 祝願大家可以早日實現coding 自由。

Docker Tag 命名
科技新知
MacauYeah・2024-10-24

一般來講,同一個docker image會提供多個不同的版本,每個版本會附予不同的tag,以作標識。但以docker image的維護者來講,它的tag通常代表的是自己程式的版本號。不過這個版本號卻存在很多變數,就讓筆者好好地逐一說明。 程式的版本號 在沒有Docker的年代,其實所有軟件在發佈時,都會標示版本號,方便使用方明確追蹤問題,自行選擇升級、降級以解決相容性問題。大家要重現問題,也能清清楚地重現。所以docker image的tag,在某程度,都是代表發佈自己的程式版本號。但以前的年代,軟件底層的依賴,例如OS層面的共享程式庫,則不在發佈的管控中,所以過去的程式,在跨電腦安裝時,都會出現缺少某些共享庫的問題。而使用了Docker後,image以內的共享庫的都會在打包的那一刻固定和發佈,就不會有漏的問題。 庫更新,怎麼辦 上面說到image可以打包共享庫,但問題是共享庫也會有安全性更新問題,那麼對docker image的維護者來講,它自己的tag又該如何命名? 因為庫的量可大可少,所以一般來說,都不可能完全把各個庫的版本號寫在自己的tag上。退而求其次,就是用"版本號+日期",庫的細版本號,就存在原始碼當中。Ubuntu 就是這樣的例子。 不過"版本號+日期"的命名方式真的方便嗎?每次下遊用戶想更新去最近版本,都要自己找一次最近的日期。這樣對很多用戶來講都不夠方便。所以docker又提供了一個重tag的功能。例如ubuntu:noble,在早些時候指著noble-20240904.1,然後過幾天,又指向更新的noble-20241009。更常見的是latest,每次image都預設會存在,docker也希望大家會定期更新這個tag,讓大家可以更易地找到最新版本。 註: 這跟git tag有所不同,git tag並不預期會變的。當協作者收到tag後,那怕上遊刻意更新tag指針,協作者沒有刪除原tag之前,都不會知道tag更新去了哪裏。 我們該如何選 在發佈方和引用方來講,引用時可以明確使用唯一的"版本號+日期",對穩定性來講是有意義的。不過多多少少,會產生額外的時間成本。發佈方來說,就是多用了一些儲存空間,方便引用方可以隨時找到舊(庫)版本。而引用方,就要手動修改引用號,作為驗收依據,自動更新的難度比較大。 但對於自動更新要求比較大的情況下,可能就是使用latest或者會隨時更新的share tag(共用tag)比較實際。但我們也依然要定一些方式去版本更新記錄,例如:同時使用 beta latest archive 每日自動更新beta,只有所有測試都通過時,才把archive指向現在的latest,再把latest指向現在的beta。這樣做的好處是,核心的docker stack檔案改變的機會較少,也可以免除docker swarm做太細緻的權限管理。