搜尋

搜尋結果

明愛慈善餐會籌逾110萬
其他
LifeMag Editor・2016-01-12

由澳門明愛舉辦之「澳門明愛2016年度慈善餐會」 (Caritas Macau Annual Charity Ball 2016)於一月九日晚上假澳門美高梅一層宴會廳舉行,主題為「匯德育靈 聚志豐生」,目的除了為澳門明愛籌募社會服務經費外,亦希望加強善長對明愛來年工作發展的了解,讓善長歡聚一堂,迎接新一年好開始。 澳門教區黎鴻昇主教、中華人民共和國外交部駐澳門特別行政區特派員公署潘雲東副特派員、中央人民政府駐澳門特別行政區聯絡辦公室社會工作部處長級助理林丹紅、台北經濟文化辦事處盧長水主任、社會工作局黃艷梅局長、社會保障基金行政管理委員會容光耀主席、警察總局局長代表趙汝民協調員、民政總署管理委員會關施敏委員、羅志國先生、金沙中國有限公司企業傳訊及社會事務副總裁黃鳳婷,以及多位捐贈機構代表和各界善長出席了餐會。席間,羅志國先生捐款澳門元二十萬、金沙中國有限公司捐款澳門元十五萬,有關善款支票由澳門明愛潘志明總幹事代表接收。另外,魏新教先生和超然國際集團有限公司捐款澳門幣五萬元,高富地產公司捐款澳門幣三萬元,區華焜建築公司捐款港幣三萬元,劉藝良先生、李漢基先生、三友發展有限公司、瑞權工程有限公司和周焯華先生各捐款澳門幣兩萬元,鄺達財先生捐款澳門幣一萬三仟元,黎榮添先生、新域城市規劃暨工程顧問有限公司、金海集團、澳門娛樂博彩業中介人協會、數碼寶股份有限公司和姚健池先生各捐款澳門幣一萬元,以支持澳門明愛各項社會服務經費。餐會筵開30席,近300人參與,籌得善款逾澳門元110萬。 澳門明愛在2016年將會把氹仔康暉長者日間護理中心轉型為本澳首間失智症長者日間護理中心,預計短期內將可啟用,同時亦會在黑沙環明暉護養院增設第二間失智症長者日間護理中心,並預計年底開始運作,以配合特區政策,面對社區老齡化問題。失智症長者因為在自理能力、方向、記憶等有缺失,需要專門訓練。為社區失智症長者而設的長者日間護理中心,可讓他們獲得更好護理,並紓緩家屬的照顧壓力。此外,明愛將繼續發展泉仁樂家庭服務中心,為服務對象提供更多元化的配套服務,提供深入的家庭輔導以及加強對嬰幼兒的家長工作,同時繼續加強凝聚義工團隊等。

“Run to Give”慈善跑活動完滿結束 - 喜達屋酒店與度假酒店集團
其他
LifeMag Editor・2015-10-13

澳門喜來登金沙城中心酒店及澳門瑞吉金沙城中心酒店的員工攜手舉行 “Run to Give”慈善跑活動 澳門喜來登金沙城中心酒店及澳門瑞吉金沙城中心酒店昨日攜手於澳門科技大學足球/田徑運動場舉行 “Run to Give” 慈善跑活動,共同支持澳門扶康會。“Run to Give” 同時亦為喜達屋年度全球志工活動 “Together As One (TAO)” 揭開序幕。超過70位澳門喜來登酒店及澳門瑞吉酒店員工熱心參與。 澳門喜來登金沙城中心酒店及澳門瑞吉金沙城中心酒店人力資源總經理陳詩麗小姐表示:「今年“Run to Give” 慈善跑活動很成功,大家在回饋社會的同時,亦十分樂在其中。我們倍感光榮能為澳門扶康會,籌集到近澳門幣25,000元的善款。」喜達屋酒店及度假酒店國際集團一直積極參與社區活動及致力回饋社會。是次全球性的慈善跑活動正是一個好例子。 澳門喜來登酒店行李服務員付成光先生以13分17秒驕人的成績獲得男子3公里比賽冠軍。而上介冠軍,澳門喜來登酒店的房務助理陳節興女士,連續第二年以15分31秒奪得“Run to Give”慈善跑女子3公里比賽冠軍。在男女子3公里比賽結束後,還舉行了3公里圑隊賽。由澳門喜來登酒店和澳門瑞吉酒店人力資源部的團隊: “永遠冠軍”榮獲3公里小組賽的冠軍,他們以12分23秒的成績創下團隊的紀錄。 “Run to Give” 慈善跑活動由酒店人力資源部策劃,並得到酒店員工的積極協助下順利進行,活動籌得的所有善款,將全數撥捐澳門扶康會。澳門扶康會由一群志願人士創立,是一間非牟利之社會服務機構,致力為殘疾人士提供多種機會,令他們發揮個人的能力,在所屬社區中,充分獨立自主,積極融入社會。

沒人了解你?20種跡象顯示你的智商高於常人
環宇搜奇
Chrysalids 少爺・2017-08-13

20 種跡象表明你的智商高於常人 你到底有多聰明?若你符合這 20 種跡象中的大多數情況,那麼你的智商可能高於常人。無需智力 IQ 測試! 1)你是家中長子/長女 家中長子/長女有眾多好處,比如教育年輕弟妹。在分析士兵的智力測試結果後,挪威研究者發現長子/長女平均智商為 103。次子/次女的平均智商為 100,而最小的孩子平均智商為 99。長子/長女與父母和弟妹間的特殊關係,可能是這種智商差異的原因所在。 2)你是左撇子 左撇子好處多。比如,1995 年,紐約記者 Maria Konnikova 發現左撇子比使用右手的人更具創造力。 3)你偶爾服藥(僅供參考) 我們並非建議你服用違禁藥物。但有趣的是,一項 2012 年的研究表明,智商與藥物之間存在關聯性。研究者調查了 6000 名人士的用藥習慣,發現偶爾服藥者在 11 歲的時候智商最高。 4)定期飲酒(僅供參考) 飲酒也有助於提升智商。與大眾的認知不同的是,飲酒不會讓我們變笨。而是恰恰相反!在對美國和英國人開展調查後,科學家發現,在年輕人當中,智商最高的人,往往是成年後經常飲酒的。 5)不高估自己 聽說過鄧甯-克魯格效應嗎?能力欠缺的人有一種虛幻的自我優越感,而有能力的人低估自己的能力。這同樣適用智商。高智商的人不會吹噓自己,因為他們知道自己未知的東西還很多。但是,低智商的人未必能做到這一點…… 6)你是夜貓子 你是夜貓子嗎?馬德里大學研究表明,夜貓子比早起的人聰明。具體來說,夜貓子的分析和概念思維技能高於常人。事實上,淩晨上床睡覺的人比普通人社交能力更強、更外向,也更具有創意。歷史上,馬塞爾·普魯斯特、查爾斯·達爾文和艾維斯·普雷斯利等名人都有晚睡的習慣。誰知道?你可能就是下一個莫札特! 7)幽默 微笑有益健康—及提升你的智商!研究者針對 400 名心理學學生進行了智商測試,發現智商高的學生最有幽默感。所以,喜劇演員智商最高? 8)學習閱讀年齡早 你是否很小就開始學習閱讀?一項 2012 年的英國研究表明,學習閱讀年齡早的人士比普通人聰明,如果你很小就開始閱讀,這對你而言是個好消息。研究者分析了 2,000 對雙胞胎的閱讀習慣。研究者發現,學習閱讀年齡早的雙胞胎,其認知能力得分高於平均分。 9)養貓 若你正在猶豫養條狗或貓,這項 2014 年的研究可能會幫你做出決定。研究者對養貓或狗的學童進行了智商測試,結果發現養貓的學童智商高。 10)很憂慮 生活在憂慮之中是一件難事。在多大數情況下,這也是高智商的標誌。2015 年,研究者對 126 名學童進行了不同的測試,以確定他們的焦慮度。結果發現,那些經常擔憂、愛沉思的學生(反復思考一個問題)的言語智商高於其他測試者。 11)政治自由派 你所選擇的黨派,能反映出你的智商。在一項研究中,進化心理學家 Satoshi Kanazawa 博士發現在智商測試中獲得最好成績的兒童,長大後政治上傾向于自由派。下次政治辯論中,這是一個有利(或不利)的論據! 12)兒童時上音樂課 在你兒童時,你可能討厭上小提琴或鋼琴課,但這些課程能讓你更聰明。一項 2004 年研究表明,九歲兒童參加鋼琴或歌唱課程,只需九個月就可以提高智商。對於參加戲劇或完全不參加任何課程的兒童,科學家並未發現此關聯。但是注意,一項 2013 年研究發現,參加音樂課程的兒童很可能在課程開始之時,其智商就高於平均智商。 13)初次發生性行為年齡晚 我們都知道那些嘲笑在大學時還是處男的陳詞濫調。最近研究發現,這些成見還是有一定道理。研究發現麻省理工等名牌大學學生比普通大學的學生,性伴侶的數量更少。這些名校的處男也比其他普通高校多。在一定程度上,這種現象可以解釋為睾酮會對控制智商的人體化學過程產生負面影響。男性擁有更多睾酮,智商越低。其次,智商高的學生意識到性帶來的風險,因此性關係更少。最後,他們將更多時間放在學習上,相親約會時間少。 14)藍色眼珠 眼睛的顏色能反映出你的智商。似乎是,淺色眼珠的人在戰略活動中表現更佳,而棕色眼珠的人反應更快。換句話說,藍色眼珠的人在科學方面更優秀,而深色眼珠在運動中表現更佳。 15)安靜 在聚會或活動中聽得多說得少的人,比常人聰明。事實上,更謹慎的人傾向於先分析情況,再開口。這是高智商的一種表現,因為他們很少說會讓自己後悔的話! 16)長得高 據說高個的人在愛情中更幸運,雖然無法證明這是真的。但依據一項 2008 年研究,高個男性比普通人更聰明。專家針對兒童開展了智力測試,除了成年後掙更多錢外,高個男孩和女孩的智商高於普通人。 17)身材瘦 尋找更多減肥的動力嗎?若我們告訴你瘦子比超重的人和胖子智商高呢?依據 2006 年研究表明,我們的認知能力隨著我們腰圍的增加而減少。另外一項研究發現,肥胖和智商間的關聯度。專家對 11 歲兒童進行了口頭和非口頭測試,發現成績差的男生和女生在中年患肥胖病的風險最高。 18)你總是忙碌的 高智商的人永遠不會厭倦。他們善於利用時間,學習新東西。他們通常每週工作 40 小時,晚上或週末上課或參加其他活動。 19)喝母乳 眾所周知,嬰兒喝母乳好處多。你可能不知道,喝母乳的嬰兒比喝奶粉的嬰兒聰明。作為 2007 年研究的一部分,研究者調研了 3,000 名英國和新西蘭兒童的營養情況。研究發現,母乳餵養的兒童智商測試成績更好。總體來說,母乳餵養兒童的智商比喝奶粉兒童智商高出七個點。 20)你不吸煙 2010 年,以色列研究者對比了 20,000 年輕人的智商。研究發現 18-21 歲不吸煙的男生的智商 (101) 高於吸煙的男生 (94)。而且,重度吸煙者(每天超過一包煙的人)平均智商只有 90。戒煙又多了一個理由! 以上文章及圖片均轉載自網路,所有版權歸原作者所有 原文地址:http://www.msn.com/

Coding中的AI輔能3 | AI 探索新領域
科技新知
MacauYeah・2026-01-26

繼之前筆者介紹使用AI Chat問一些技術固有問題後,筆者亦試著繼續用AI做一些其他功能探索。 也是先講結論 目前筆者針對自己不熟悉的技術,而且認為已存在,不太可能不存在的技術,叫AI幫忙做事。跟過去一期最大的差別,就是筆者無法快速判斷AI的答案是對還是錯,只能跟著AI一句一句的地執行Code再去找問題。但即使是這樣的情況下,AI還是能提供到有參考價值的答案。 Jasper report studio 參數引用 在預設的情況下,Jasper report studio 的某些參數只可以反映在 SQL Data Source中,其他Data Source並不適合。但即使這樣,筆者還是希望AI找尋一下過去的人有什麼解決辦法。原本的問題,筆者在Google上,並不能找到合適的參考案例,但在問Claude Sonnet 後,反而有案例。實測下,也是有效的。 與搜尋引擎關鍵字不同,在Claude Sonnet中,筆者花了較長的字句去描述問題。也有可能是因為「生成式」的關係,Claude Sonnet 可以生成更多我沒有見過的關鍵字,從而得到答案。而這個答案,非常大機會並不是出自官方的使用說明中。這種就像坊間的用法,可能升級後會突然無法使用。但至少目前可以解決問題。 QEMU 的教學 筆者一直被逼著試用一些新的cloud image,並非筆者認知的傳統VM使用方法。qemu筆者之前有看過官方教學,但實在太長、太複雜,故筆者就把自己的問題拋給DeepSeek-V3,看看它能不能提供一個可行的指令。 結果是可行的。不過要重提的是,筆者雖然對QEMU不太懂,但至少對Cloud image有些認識,知道Cloud image是如何運作,某些image又可能缺了些什麼。針對性地問DeepSeek-V3一些具體問題,結果還可以接受。也幫忙解決了筆者誤會抄下來的指令。 總結 總括來講,這種方法係加大了筆者可以搜索的範圍,AI亦可以做一些自己的嘗試。省卻了自己閱讀大量文章之後再組合的過程。對於一些自己太熟悉,但是穩定的技術,應該會有可行解。 但如果針對一些很肯定資料來源的問題,筆者還是會選擇使用傳統搜索的方式或以AI找出官方來源,自行到官網查證。Fact Check 資料可信性,原本就是這麼做,也會繼續這樣做。AI會有幻覺,傳統的搜尋答案有部份也是來Stack Overflow等討論區,也是需要進一步自行了解。

Coding中的AI輔能2 | Ai 寫測試用例
科技新知
MacauYeah・2026-01-21

繼之前筆者介紹使用AI Chat問一些技術問題後,筆者亦試著用AI直接參考code的改動。 先講結論 目前筆者只針對自己熟悉的技術,叫AI幫忙做事。那怕它做錯,我也有條件驗證及修正。而結果是,。 優點:它的確有幫上忙,省了我一些時間。省時不多,但有省得不多。總比全人力Google來得舒服。 缺點:很慢,有點鈍。它的答案也可能很直觀,需要手動再調整。 寫測試 為免一下子挑戰太大,筆者先從寫測試開始。使用一個現有的專案,去掉secret等敏感資訊,然後針對新做的function,叫GitHub Copilot 幫忙寫Test Case。Copilot Agent就會開始檢驗你現有的測試,學著你之前的風格,為新的function寫測試。Copilot會結合你現有的程式,也了解一些框架的知識,例如Hibernate Entity, Repository之間的關係,試著寫一個符合你剛才文字表述的邏輯。就是因為這也是一個整體掃瞄和學習的過程,筆者覺得不論付費還是免費的AI額度,可能都會一樣慢。 為什麼要在這個地方上使用AI幫忙呢? 因為Test Case中,通常因應不同的情況,有不同的預設值。很多時,Test Case相似,又無法直接覆用預設值。所以找AI幫忙起草,後期自己再修正一些,總比全力自己設計要省心一點。 Maven pom依賴升級 筆者亦都有試過找GitHub Copilot 解決一些因版本升級帶來的依賴不相容的問題。同樣地,筆者對於這些問題,有一定的了解,只是不想每個版本逐個比較。筆者想靠 Agent 找到相近或相容的版本,結果算做得不錯。這些問題本身沒有難到需要大量Google去做資料搜集,但至少Troubleshoot時,要回憶幾個不同的maven指令。平常pom 版本分析的指令很少機會會用,一時三刻要重新好好理解一下,也是費神。這個場境,似乎AI也勝任,自己最後驗證也簡單。就像解一元多次方程式一樣,找解很費神,但驗證就很簡單。那怕驗證時真要追蹤 pom file,也有IDE幫忙。 總括來講,筆者沒有叫AI大量創作,在控制問題範圍的情況下,免費額度的GitHub Copilot也能找到一些幫助。

Coding中的AI輔能
手機‧電玩
MacauYeah・2025-12-20

早排跟一位外國的朋友聊天,發現對方公司大力地推動開發工作與AI結合,而且實務上亦幫到忙,可以解放生産力。 既然大家在AI上有得益,筆者亦試用一下。就礙於安全性問題,目前筆者暫時都經過chatbot的發散問題的方式,問AI取得方向性的建議。以下,筆者就分享一下自己的使用心得。 Github Copilot Chat 道理上可以直接安裝VSCode上,但不知道是否不版本更新問題。筆者的Ubuntu 24.04 VSCode 無法運行。反而匯出vsix 後,筆者的codeserver (open source VSCode) 可以運行。 有相同問題的朋友,可以留言找codeserver的詳細安裝方式。 初次使用下,GPT-5 mini 的性能不錯。作為發散問題,可以幫筆者快速地梳理筆者想要了解的技術。(前題是這個技術很成熟,只是筆者不太了解) 例如:筆者會問它關於一些 builder pattern 的必要性。與原本的做法有什麼差異。通過一輪來回對答,筆者對於使用情境也有一個更全面的了解。相對於傳統,筆者要多輪Google,之後再在腦海中梳理再追問,的確快好多。 GitHub Copilot Chat 唯一的問題是,免費的額度需要每個月才會補充。長期用需要付上月費,而且它內置的Model並不包括 DeepSeeks 和 Claude。 我們可以經API KEY隨時加的外部的Model,不過這就等於我們需要多頭付費,GitHub 充一份錢,外部算力也是。 Poe.com 因為筆者暫時也只是使用開放式問題,做一些思維上的整理。筆者還試過 Poe 的第三方Claude Bot。除了策略問題外,範例寫Code效果也行。(當然是限制在筆者未了解,但其實已面世很久的技術。如果好像現在問它一個spring boot 4的問題,就不太推薦) 由於不是直接由Bot改Code,所以算力消耗不高,Poe也每日補充免費額度,可以更方便用來試水看看。 還想用AI嗎? 筆者直接給答案,想,很想。不過這並不代表我們就輕鬆很多。 對於傳統開發框架,我們還是要先理解、學習。就算未來筆者試用Bot生成Code,筆者還是要負責驗證的部份。驗證的能力,其實就是基於過去的理解和學習。面對一些新問題,筆者還是需要去官方網站找實際的資料、範例,以判斷AI生成的結論是否合理。也依靠這些資訊去修正AI的結果。 對於筆者已知的問題,若筆者過去的專案已有答案,筆者還是寧願自行複制貼上,去做一些手動修改,去適配新的場景,因為這需要的驗證工作量還更少,風險更低。

Visual Studio Code 才是 coding anywhere的基礎?
科技新知
MacauYeah・2025-10-25

筆者過去就有發表過使用 VM / docker + code server 作為 coding anywhere的基礎, 現時也有一直使用。code server 有效,但對於Web App 開發,仍有所不足。 那個藏在瀏覽器的IDE - Code Server 使用 code server 的好處,就是筆者只需要一個有瀏覽器的客戶端,就可以連線到雲上的VM中使用 code server 。不論多重的功夫,交給外部的雲去做,自己的客戶端就可以盡可能輕便。不想自己攪一套code server開發環境?github codespaces in browser 也是一個很類似的替代器。它也是隨時經雲建立一台專用的 VM,之後就可以經瀏覽器進行開發。 一切看來都很好,所有東西都可以在 VM / docker 中進行。如果你的 VM / docker,可以有齊所有除錯工具,應該就真萬能了。現實就是不太美好,因為雲上的 VM ,docker 中的容器,主要都是沒圖形介面的。如果你想要利用的除錯工具,例如 chrome,你就未必可以順利在 headless VM / docker conatiner 中安裝了。很多除錯工具,要麼就需要圖形介面,要麼就要有條件連到本地硬碟,所以筆者就 code server 本身,真的沒有太多解法。 Web App 開發,回到原始的基本步 - Visual Studio Code 回到原始的基本步,本地Visual Studio Code + VM / docker ,就好好地可以利用本地的 chrome 等進行 NodeJs 的除錯。它就跟本地Visual Studio Code + 本地開發類似,本地能用的 chrome,可以經過 vscode 連到 VM / docker 內,只要Remote Development 插件就可以了。筆者測試過,真的很簡單,vscode連線後,會在你的VM / docker 內,安裝一個很細的 client。然後其他事就像本地開發一樣了。Remote Development 除了用自己的VM外,官方還稱它可以連上github codespaces。筆者就未有詳細測試,有興趣的朋友可以建立一個codespaces看看。 雖然 Visual Studio Code 並沒有保證完整地解決所有問題,但至少它提供了一個橋樑可以作為接口開發。coding anywhere 還是有條件實現,只是我們的客戶端並不如一開始的單純,只少要有一個完整的桌面電腦環境OS ,可以做到 port forward,做一些簡單的對接。只是單純的移動端 Web 界面,就未能夠做到那些複雜的跨機轉譯。

git submodule 的那些坑
科技新知
MacauYeah・2025-09-26

submodule 設定 有些時候,我們並不想追蹤submodule的預設分支。對於初次新增時,我們可以 git submodule add -b YOUR_BRANCH REPO_URL_OR_RELATIVE_REPO_PATH git submodule add -b feature/devcontainer https://github.com/macauyeah/spring-boot-multiple-datasource.git git submodule add -b feature/devcontainer ../spring-boot-multiple-datasource 若在初始化後期,想改branch,可以直接修改設定檔。(首次做,還是建議使用指令方式加入,因為第一次總要把submodule整個歷史記錄取下來。) # file .gitmodules [submodule "spring-boot-multiple-datasource"] path = spring-boot-multiple-datasource url = https://github.com/macauyeah/spring-boot-multiple-datasource.git branch = YOUR_BRANCH 關於上述 url 的部份,如果是公開的倉庫,當然可以以完整的方式存取。例如你可以直寫 url = https://github.com/macauyeah/spring-boot-multiple-datasource.git。 若為私有倉庫,道理上要本機有權限存取才行,對於持續整合/持續部署就有些麻煩。正常解決方向就是 CI Server 有齊所有倉庫的存取權限,具體要根據不同 CI Server 的設定,有時候還要跨 Docker 的方式去接入。那是有夠麻煩的一件事。但若果 main module 與 sub module 剛好為同一個倉,我們也可以使用相對路勁來解決。 # file .gitmodules [submodule "spring-boot-multiple-datasource"] path = spring-boot-multiple-datasource url = ../spring-boot-multiple-datasource.git branch = YOUR_BRANCH 但這是有代價的,我們在本地 checkout 時,也必需要模疑類似的文件夾架構,也就是 sub module 也要獨立 checkout 。

Swarm mode 上線 6 - 2| 升級陷阱
科技新知
MacauYeah・2025-04-14

上一期筆者就介紹寺過swarm的相容性,可以任意地刪除其中node、加入新的node,系統會自動同步各機狀態。今日,我們就來討論一下加減的流程吧。 實戰輪調流程 假設我們有5個 node,都為manager,各個 docker 版本都為28.0.4 ,我們將要關掉node 5 (ubuntu 22),並加入node 6 (ubuntu24),輪調流程如下 如果node5有vvip,login node 5,關掉vvip systemctl stop keepalived login node1, 把node5降為drain模式,變為worker,並從群集中刪除 docker node update --availability drain node5 docker node demote node5 若然node5不是直接關機、刪除,只想好好地離開群集,可以 login node5, 在node5上預先執行 docker swarm leave docker node rm --force node5 如果之前node5有好好地離開群集,而且狀態已經轉為down,那麼就不用"force"了,用最保守的刪除指令就可以 docker node rm node5 login node1, 取得manager token docker swarm join-token manager node5關機,新增node6,使用相容的ip段,或者使用node5的ip login node6, 加入群集,設定vvip docker swarm join --token xxxx XX_IP:XX_PORT systemctl stop keepalived 這陷阱這陷阱 偏我遇上 上述的操作,有一些可能的陷阱,筆者就剛好踩過,未來不知道會不會有官方保證 docker的版本需要相同,不同版本可能不能加入群集,例如 docker 28.0.4 不能加到 docker 27.5.1。 docker 27.2.x 不能加到 docker 27.5.1。 docker swarm,官方雖然宣稱支援不同版本共存,但這指的是已加入的node,在不解綁的情況下原機升級。 在swarm已有多版本共存的情況下,有一個node選擇完全脫離,它想再加入,也是會失敗的。可能這不是docker自身的限制,而是底層library的相容性問題。筆者在實測不同版本時,就得到這樣的error。docker credentials: cannot check peer: missing selected ALPN property

學習寫程式,除了複制貼上還有什麼?
科技新知
MacauYeah・2025-02-07

不知道大家是如何學習特定程式語言/框架的建構? 也不知道大家可如何保持程式庫/框架的最新狀態? 筆者就分享一下最新的經驗,看看對大家有沒有得著。 制作自己的範本 跟著程式/框架的導覽教學(Tutorial)走一偏 從零起一個新專案 設定專案,該用的基本功能全部設定好,作為概念驗證(Proof of Concept),也作為日後範本(Template)之用。 有需要用新專案,就複制之前的範本,再逐一修改名字或路徑的設定。 上述做法,是筆者過去比較常用的策略。面對很統一要求的專案,都有效。當程式庫有更新,我們可以選擇只局部修改,範本就可以長期用。我們也不需要經常從零走一篇。 練手的Code - 從零起一個新專案 上述的範本做法,對於現時需求多變的專案,可能不是很有效。例如有些專案使用Session Auth,有些則是Api Auth,有些則是Open Auth。同一個範本中有齊多種Auth的設定,原本難度就有夠高,之後複制完還要自行禁用不相關的部份,也是相當的煩人。當範本中多有個地方都有互相衝突的地方,複制範本就不是一個很易的做法。 面對那些複雜的配對,我們務必要真正了解技術的運作原理,然後為每個功能都從零建一個專案,做一個最簡單的Proof of Concept。重點不是在未來拿它們複制貼上,而是用來厘清概念,哪段程式對這個功能至關重要,哪段其實沒有作用。 如果可以,每次程式庫/框架升級時,都從零建一次。這樣一來可以練手,加深記憶,二來是每次版本的變動,有些程式碼可能已經變得沒有作用,原本的寫法並不再是最簡的。當然這個也可以為每個功能獨立做成範本,到有需要的時候再抄少量的程式碼就好。 其實練手的過程中,我們亦會慢慢熟習IDE的功能,有些IDE或Plugin已經很方便地自行完成一些設定。所以筆者漸漸的也習慣了不抄程式碼,改為以IDE Plugin的方式建立,某些真的很不熟練的部份才會維持範本複制的型式。 這是筆者最近學習vue3 的練習清單,還在持續新增中。讀者們有興趣也可以一起來修訂。 https://github.com/macauyeah/AProgrammerPrepares/blob/main/src/vuejs/TimeAttack.md

Steam OS 3.5更新,內建 podman, distrobox
科技新知
MacauYeah・2024-12-10

之前筆者有介紹過如何在Steam OS上安裝podman,但都必需要自行折騰一番,特別是遇到一些依賴缺失時,還要逐個除錯。在Steam OS 3.5更新之後,官方已經有預安裝的 podman,筆者建議,如果有機重刷OS,就直接使用預安裝版本就好。更重要的是,不但有預設podman,連另一個神器distrobx,也在Steam OS 3.5之後引入。 podman-compose Steam OS 3.5,雖然已經有預安裝 podman ,但在實際環境下,多安裝一個 podman-compose 可以更方便地一體化操作。 我們可以經 python 安裝。 剛安裝 podman-compose ,會出現在自己的 home 目標的隱藏目錄。最後一步就是要加到自己的 PATH 環境變數裏面。 修改保存後,就重啟。之後 podman-compose 的指令就可以任意存取了。 要補充一點,就是官方預安裝的 podman 還是缺少了一些 DNS 的元件,大家會看到 warning 提示。不過在筆者單個 container 的使用情境下,並不受影響。之後要在其上二次引用的 distrobox 也可以順利執行。 神器 distrobox 在 Steam OS 3.5 中,除了 podman 外,還有預裝 distrobox 。 distrobox 其實是基於 container 技術的擴展應用,它目標是讓用經過 container 就可以輕鬆使用到不同 linux 的發佈版本。例如我想在 Steam OS 中使用 Ubuntu ,經過 distrobox 就可以用到。道理上, distrobox 基於 container (podman) 操作的,所以它能做到的,其實自己手動經 podman 也是可以做到。但若果大家想使用跨 Linux 版本的 GUI 程式,筆者還是建議優先使用 distrobox 。因為 distrobox 預設已為不同版本的 Linux 的 Image (來源影像檔) 加入部份調整,在運行時亦有x11等互通,指令也較為簡單。 以下做來例子,示範在 Steam OS 中就執行 Ubuntu 版本的 vscode。 註: Distrobox 也不是萬能的,例如它的 Ubuntu 版本內沒有 snap ,所以不能執行 Ubuntu 版本的 Firefox。 snap will not works (firefox not works)

Swarm Mode 上線番外篇:Ceph
科技新知
MacauYeah・2024-08-20

在預設Docker和K8s的容器主導世界裏面,其實一直都缺少了直觀的儲存空間。當你的程序需要讀寫故定的來源資料,該來源就必需是外部的穩定儲存空間,例如是資料庫、NFS。但資料庫、NFS等,要做到真的正穩定,其實就要走Cluster(叢集)模式,確保它們自己本身不是做成single point of failure (單點故障)的元兇。 坊間,只要付得起錢,其實找個穩定的資料庫或NFS,也是有的。但如果你像筆者一樣,只有一塊或多塊【鐵】,就要試試開源的儲存引擎Ceph Storage。 Ceph Storage,有自己特有的CephFS格式,但也支援NFS https://docs.ceph.com/en/quincy/cephadm/install/。也就是,只要我們有足夠多人力,道理上可以自己用實體機去模擬一個穩定的NFS。 因為只是試裝,筆者暫時只用VM來測試,完整的安裝script,可以在這裏找到。script使用Multipass VM,大家有條件的話,可以使用其他VM引擎來看重複。以下是一些官網上沒有提的重點: Ubuntu 24.04 還未能正式使用。在筆者做POC的當是,Ceph v18 在 Ubuntu 24.04上需要先解決,即使大家使用Curl base下載 binary,也未必能成功。 筆者成功測的版本是 Ubuntu 22.04 + Ceph v17,全使用Ubuntu 發佈的內置版本。但大家也要留意自己的Ubuntu apt 有沒有更新到最新版,過去的 cephadm,引用的container image url也變更。記得更新到v17 的最新版,cephadm 指令才能成功取得image。 在官方說明文件的【Deploying a new Ceph cluster】中的【Adding Hosts】https://docs.ceph.com/en/reef/cephadm/install/#adding-hosts 節章可能有些誤導,大家應該要看 【Host Management】中的【Adding Hosts】 https://docs.ceph.com/en/reef/cephadm/host-management/#cephadm-adding-hosts 在每個節點內,可以直觀地連接地Ceph Dashboard,但若大家需要Port Forword,要注意你的Network Interface,筆者就只能經過預設的IPv4的public ip 進行ssh port forward,不能經過0.0.0.0。 Script 位置 https://github.com/macauyeah/ubuntuPackerImage/blob/main/initCephCluster.sh

何謂 Infrastructure as code - IaC
科技新知
MacauYeah・2024-06-07

在雲端服務出現後,好多新的名字,或許大家都聽過,筆者也稍為再簡介一下。 Software as a Service (Saas)。就像我們的Web App,不用下載體件,可以直接經雲進行業務操作。 Platform as a service (Paas)。這個概念可能最含糊,筆者理解就是,雲端供應商提供一些底層的軟件,供IT人使用。像是資料庫,Web Engine。 Infrastructure as a Service (Iaas)。這個更底層,雲端供應商給出CPU, IP, Memory, Storage等,頂多就再多個預安裝OS的選項。IT人自己去配搭使用。 多得這些彈性服務,雲端應用才真的跟過去租用實體伺服器有所差異。 但對於IT人來講,要使用這麼多不同的服務,實在也不簡單。對於IT消費方,用錢換來實體硬件的靈活性,但因為硬件沒有邊界之後,軟件的量就暴增。管理也不能說是很方便。 在Docker, Kubernetes等Container(容器)出現後,又為這些管理問題帶來另一種希望,就是Infrastructure as code - IaC。它的目標是,管理基礎設施,要像管理原始碼一樣,checkout 就可以回覆到指定狀態。 初聽之下,大家可能覺得好玄,但其實這個概念,在之前筆者的Docker 教學中,已經有出現過。Docker compose 、Docker stack 指令,它們都是基於yaml檔的IaC。 當筆者更新了yaml 檔,執行一次stack deploy ,docker 就會對比之前狀態,如果replica(分身)不夠多,就自動增加所欠數量,如果image 也更新了,就排隊輪流重起換image 。最重要的是,當我們checkout 舊的yaml 檔,回到過去某個狀況,只要還是執行同一句stack deploy ,系統就自然減少所需的replica數量,下戴過去的image。這就代表,我們對於container 構建而成的環境,都可以放入Git等版本控制中,整個管理模式,就像管理程式碼一樣(GitOps)。 對於更進階的Kubernetes更是如些,除了container外,多種不同的network,storage配置,都通過yaml檔進行控制。這樣,架構即使複雜,但只少可以測試、重現和管理。還有一個,它比Docker stack要強的是,它某程度上支緩刪除的概念。雖然不完全,但總比完全沒有方便。 這個IoC的概念,可能還未達到一定廣泛地應用的階段,但它的核心在於,基建項目有檢測試差異的功能,自動去因為這個差異去加或減資源。用Programmer的講法,就是系統有Diff的功能,自動多除少補。