搜尋

搜尋結果

Steam OS 3.7 桌面模式下的中文輸入法 fcitx5+RIME
科技新知
MacauYeah・2026-02-21

上一篇我們提到,SteamOS的原生鍵盤不知為何失效,我們在桌面模式上的另一個選擇就是flatpak中的 Fcitx5。 因為Fcitx5是基於flapak安裝的,預設只在flapak下通用,後半部份,亦會介紹如何打破這個限制。 安裝Fcitx5 及倉頡五 我們可以在 Discovery App,輸入關鍵字 Fcitx5, 找到相關的套件。為更精準地安裝指定套件,可以直接在terminal 使用以下指令。 首次啟動時,需在start menu中,搜尋fcitx5,它就會長註在右下角的系統列中,選該icon→右鍵→input method settings,把「RIME」加入到fcitx5中,就可以使用了。 在此時,你可以打開Firefox,經control+space的方式轉換輸入法試試。但之後你會發現,原生的Kate文字軟件,都無辦法輸入中文。因為只有Dsicovery / flatpak 的 app 才能正常使用fcitx5。 大範圍套用Fcitx5 如果你找網上或AI的資訊,大部都會提示你修改系統設定檔,把fcitx5加到其中,但筆者就不成功。好在有[Bilibili強者的筆記](https://www.bilibili.com/opus/1139601518269300768](https://www.bilibili.com/opus/1139601518269300768)),原來SteamOS自帶的是ibus,但ibus又不讓設定(因為要換rootfs)。我們通過flatpak中安裝fcitx5,其實是可以通過ibus存到系統的。步驟如下: 如果你還未為當前的deck user配上密碼,你可以在terminal中使用 有密碼後,就可以使用 把所有module加為ibus 你沒有看錯,真的是那樣。基在上所有原生的桌面app及terminal,也可以切為到中文輸入法了。還有一個特例就是經 distrobox 生成的環境,依然無法存入ibus。 Reference https://www.bilibili.com/opus/1139601518269300768

生活AI 應用筆記
科技新知
MacauYeah・2025-07-22

上週六(7月19日),筆者參加了聖公會的一門講座「AI時代,父母的教養實戰新教程」,學習如何利用AI輔助小朋友的教育。雖然課題如此,但課堂還是以感受AI的使用方式為主,之後大家就好好利用AI這個知識庫去激發新思維。課堂上,文字、語音、動畫都有示範,但筆者感受到文字AI的部分最為深刻。 在過去一兩年,筆者曾略微使用AI,但即使在DeepSeek出現後,筆者仍覺得幫助有限。這主要是因為筆者身處科技行業,AI給出的答案不夠精準,難以協助開發,還可能導致一堆無法延續的結果,因此筆者甚少使用。然而,上課的主題並非針對本業使用AI,而是探討如何利用AI為生活注入更多新感受。 AI或許無法取代專業,但可以幫助你引入跨界元素,讓思考模式或你的作品更加多樣化。課堂中,學員將自己創作的家書放入AI,請它協助轉換成不同年齡層的人用詞、改編為劇本或變成辯論議題等。當然,並非每個方向都能產生合理的結果,例如家書轉為辯論,明顯會顯得不合適。但由於轉換的成本低,你可以透過少量提詞,得到多樣不同的呈現效果,激發新的思維。這就像在創作前,你可能會參考大量同類型的作品,去取得靈感。 筆者也簡單分享一些使用文字AI創作的方向,希望大家能有所收穫。 首先,準備好自己的原稿,這個原稿必須是由自己親自起草的,而非AI生成的主題方向。起草時,不必過於拘泥於前後文法,只需有一個大概方向即可。 將原稿交給AI,請它幫忙修改。AI會協助你修正一些口語或錯字問題。 嘗試請AI給你一些建議,或者請它幫你補充段落。筆者認為,請AI給建議會更好一些,因為有時補充段落可能會顯得過於機械。 除此之外,文字AI在日常生活中還做得不錯的實例 整理文章重點,重新以不同的方式演繹 整埋文章重點,筆者在大學的教育中,就經常看到以條列重點去取得原本書的教學方式。所以針對中小學教育,或新知識的學習,都可以試試用AI來整理大意,提升學習效率。 更強的是,如果你還是看不懂,可以叫AI以更多例子,深一點或淺一點去解釋一次。 禮物準備 有時物輕情義重,如果你身邊的親友很重儀式感,那麼使用AI的搜集及變化能力來幫你多樣化禮物的準備,相信可能為你加入更多新元素。 計劃旅行 計劃旅行,過去一般都參考他人的行程分享。過去就一篇一篇地逐篇閱讀,個人歸納。現在你可以先問AI,再去覆核。過去自行搜尋的方式,可能會被一些旅遊網站的文章所佔據,而現在改用AI,配合不同的提詞(prompt),你還可以多一些不同的參考角度。 註:本文僅使用AI修正用字,並未生成任何插畫或議題。

澳門斷捨離學會「愛・生命」讀書會6月活動圓滿落幕
文化創意
陳康妮・2025-07-03

(2025年7月3日 - 市民日報) 澳門斷捨離學會「愛・生命」讀書會6月活動 圓滿落幕 澳門斷捨離學會於6月成功舉辦「愛・生命」主題讀書會,吸引眾多書友參與,活動氣氛熱烈,內容充實,展現了閱讀與生命的深刻連結。活動由澳門知名教育家陳康妮主持,以愛. 生命為切入點,帶領參加者深入探討生命教育的意義及生死教育的價值,激發大家對人生價值的思考。陳康妮以其豐富的教育經驗,分享如何透過繪本故事向年輕一代傳遞澳門的文化與價值,強調「說好澳門故事」的重要性,引導參與者以閱讀滋養心靈,傳承本土文化。 活動亮點之一為澳門文藝家李嘉麗的參與,她特別為本次讀書會設計了一系列獨具匠心的環保信封,融入澳門文化元素,展現簡約與創意的結合。這些信封不僅實用,更傳達了斷捨離的理念——摒棄多餘、珍惜當下,讓生活回歸本真。李嘉麗表示,設計靈感源自澳門的歷史與自然景觀,希望透過藝術創作,讓參與者感受到「愛・生命」的溫暖與力量。 本次活動不僅是一場心靈的洗滌,更是一次文化與教育的交融。參與者紛紛表示,透過陳康妮的分享與李嘉麗的創意設計,他們對生命教育有了更深的體悟,並對澳門的文化傳承充滿期待。澳門斷捨離學會表示,未來將繼續舉辦多元化的讀書會活動,結合文學、藝術與教育,推動澳門閱讀文化的發展,為社區注入更多正能量。

開發者在Steamdeck上的另一個選擇: Gnome box
科技新知
MacauYeah・2024-05-28

前些日子,因為升級podman的關係,筆者對Steamdeck的限制就更為了解。因為Steamdeck是一個修改過的Arch linux,不單止代表是某些區塊是唯讀不可寫。更深一層的問題是,有些依賴包,不能簡單地通過安裝或自行編輯來解決。 例如早前podman 5.0.x需要的pasta依賴,雖然Arch linux官方有這個lib的發佈,但Steamdeck沒有選用,那些我們自己下載原始碼,你地會發現steamdeck的gcc或cc編譯指令還法完全執行,一來是編譯器指令沒有預設對,另一方面則是缺少了更多的c lib (.h) 依賴包。最後筆者只好選擇下載pasta官方預編譯的二進位程式。能用,但就總是多少有點不安心。因為pasta的預編譯只是針對x86_64的CPU,並沒有考慮link lib的問題,不過這次運氣還算可以,沒有無盡依賴的問題。 回來講Steamdeck的情況,之前筆者介紹brew,其實是macOS帶過來的,雖然他們對其他linux的支援很不錯,但多少都基於某些低層的依賴包可以隨時更新。而Steamdeck這個限制版,就沒有保證linux 依賴包的預安裝。(那怕是Ubuntu也是一樣,只是我們可以通過進一步的指令案裝就可以了。)所以在Steamdeck上,長遠還是要找一些官方維護的軟件比較安全。 Steamdeck上預設的是依賴安裝是【Flatpak】,雖然它不像yum, apt, dnf這些仔細可以安裝原始碼依賴,但它們可以安裝App,例如Firefox、Chrome、輸入法等。遺憾的是,Flatpak上沒有podman, docker,對於開發者來說就很不方便。 但最後,筆者終於在【Flatpak】上發現一套【BOX】VM解決方案。它的功能不算強大,但至少可以經ISO安裝自己想要的OS,也有快照功能(只限關機狀態下)。BOX官方亦表明,這套VM不是針對自動化或企業管理所做的,只有一些基本操作。 官方連結: https://apps.gnome.org/Boxes/ 官方原始碼: https://gitlab.gnome.org/GNOME/gnome-boxes Flathub載點: https://flathub.org/apps/org.gnome.Boxes 對於筆者來說,能裝到VM,代表就有更多的操作空間。如果大家不介意多了一些虛擬層,會太影響效能,其實很多操作可以在VM內使用。例如不需要再用podman,可以直接在VM中使用docker、安裝k8s等。對於效能問題,我們必需要在Steamdeck操作時,至少我們可以在VM中先安裝Arch linux,找回必要的依賴包,編譯我們想要的link lib,再抄回Steamdeck下執行。過程的確比較轉折,但若然Steamdeck這台機器只適合打機的話,就真的很可惜。

澳門教育家陳康妮:啟迪心靈,倫理學的光芒
文化創意
陳康妮・2024-05-14

澳門教育家陳康妮:啟迪心靈,倫理學的光芒 在當今這個快速變化的世界中,倫理學教育成為了塑造個人和社會價值觀的重要力量。澳門教育家陳康妮女士,以其深厚的學識和對教育的熱情,致力於培養學生的道德判斷力和社會責任感,被譽為當代教育界的一束明亮的光芒。 陳康妮,一位在倫理學領域具有深遠影響力的思想家,她的教學不僅限於課堂。她的理念是教育應該超越學術,觸及學生的內心世界,幫助他們在面對個人及社會問題時,能夠做出明智和有道德的決定。 倫理學:不僅是理論,更是實踐 陳女士認為,倫理學不應該只停留在理論層面,而應該轉化為實際行動。她在澳門多所學校推行的「倫理與社會責任」課程,鼓勵學生參與社區服務,從而將學到的倫理知識應用於真實世界中,解決實際問題。 面對挑戰:個人與社會的共同進步 在陳康妮的引導下,學生學會了如何在個人發展和社會進步之間找到平衡。她強調,每個人都應該為社會的整體福祉負責,同時也要關注個人的成長和幸福。 結語 陳康妮女士的工作不僅影響了她的學生,也對澳門社會產生了深遠的影響。她的教育理念和實踐,為培養一代又一代有道德、有責任感的公民奠定了堅實的基礎。在這個充滿挑戰的時代,我們需要更多像陳康妮女士這樣的教育家,來照亮我們的道路,引領我們前行。

測試驅動開發 | 系統邊界Mock
科技新知
MacauYeah・2024-04-23

好一段日子之前,筆者就介紹了一些寫Test Case的大方向 。對於大部份情況來說,有分隔的開發環境,有整個配套,測試起來是順暢的,想做單元測試可以,做整合測試也可以。但如果沒有,我們其實也要想辦法寫Mock。 Mock這個概念,對於寫前端程式的朋友應該比較熟悉,因為前端開發者總不能等後端準備好之後,才開始慢慢設計。前端很早期就要模擬一些情況,做介面設計,做各種思考。而且這個Mock不是指在運行單元測試時,才使用的臨時修改隨機數據。而是針對開發時,自行模擬的後端或外部環境。不過因為前端介面涉及很多主觀設計,很多元素冇辦法做固定的自動測試,所以前端的測試通常要人幫測試。 而後端開發,邊界Mock這一概念也很有用。在外部環境不足的情況下,為自己系統的邊界部份自建一個Stub / Dummy 等的模疑數據,是很有幫助的。不論我們對外部環境的掌控度有多少,我們走測試驅動開發(Test Driven Development),好好地定義這個外部環境的期待行為是很重要的。 例如,你有個功能,需要存入數據,但資料庫未準備好,也沒有所謂的In Memory資料庫可以用。這時,自己架空寫一個什麼都不做或回傳固定結果的函數作為中轉接口,然後在你的Test Case可以規劃你的想要結果。 也許你會說,這個函數就是存下資料,我不會需要它的回傳結果,但我們其實還是可以在Test case 中定義一些錯誤檢測,確保這個函數沒有Throw Exception 。再進一步想,我們主程式是否真的不負任何儲存失敗的責任?要定義其他回傳變數,方便寫Log讓追蹤?或者我們至少要知道成功後的Primary Key ?若然業務上真的不在乎儲存結果的有效性,我們不存入數據也是可以的? 所以歸根究底,我們還是在乎儲存的成功與否。還是有必要去驗證驗寫入是否成功。 上述例子,因為資料庫不存在,開發途中可能Test Case 有好長一段時間也通過不了,但至少當資料庫完備後,可以直接驗證,不用人手手工測試。 舉另外一個例子,我們要從某個地方,例如API或資料庫,讀取數據。我們也可以先寫中轉接口,並為它寫Test Case定義應有的行為。雖然明明就只是讀取,我們沒法控制太多。但在接口做好異常狀態處理,是很重要的。例如Handle exception、檢查某些重要業務值會不會是空、確保後續部份可以正常使用,這是因為我們不能被外部系統的失誤而導致自身系統癱瘓。 其實測試驅動,本質上就是強逼大家想多一點,好好定義預期的行為,不論內部條件怎樣變化,都有一自動的檢收標準。

如何衡量課金制遊戲的價值
手機‧電玩
MacauYeah・2024-03-05

筆者因為作息調整,可以花時間花資源去深玩的遊戲越來越少,需要專攻一款價值高的遊戲是一個很重要的課題。隨着年紀增長,家庭環境改變,大家都可能會遇到相同的問題。所以筆者很想探討一下,一年只玩一款遊戲的話,CP值是否有所保證?也就是滿意度和支出的比例是否保持一個高水平? 好多老一派玩家會支持傳統主機遊戲,主要係因為免費課金制,品質很差。初時下載遊戲免費,但遊戲無法通關,過程也很重複無趣,所以滿意度很差。正好筆者最近重回手遊,就來分享一下時間和滿意度比例。 本文為了方便討論單一手遊的價值,先只以「不課金」,只討論時間成本支出。日後再以「課金上限」來對比不同的課金情況或是與主機遊戲對比。 定義 成本:時間 CP值 ⇒ 淨滿意時長 / 淨成本 ⇒ 即成本越高,每單位成本的滿意度越低。 CP值 = sum (分段內容時長 * 分段滿意度) / (時間 ) 註:分段滿意度可能為負,為方便倍數計算,最大為10,最少為-10。 崩壞:星穹鐵道 - 主觀評分 主線序+ 第一章:20小時 * 8 = 160 五角色養成,累積前70等的升級素材:30小時 * 2 = 60 因為很多時候都是內卦刷戰鬥,不怎開心,但還未至於要吐 第二章:15小時 * 8 = 120 筆者有幸以不課金的陣型,以完成主線第二章。主角(火)、娜塔莎(物理)、希露瓦(雷)、景元(雷,劇情指定角色)。除了主角滿級其他都很素。 角色養成,累積70-80(封頂等級)的升級素材:30 * 1 = 30 70-80等級就開始跳躍性質變,借助外援也無法快速囤積資源。 筆者只有主角的等級+存護命途可以練滿,另一角色也只有等級練滿。其他連突破70級的資源都不夠。 模擬宇宙部份挑戰:5小時 * 8 = 40 忘卻之亭部份挑戰:1小時 * 2 = 2 有難度,但沒什麼樂趣 淨滿意度·時長 :160 + 60 + 120 + 30 + 40 + 2 = 412 淨成本:20 + 30 + 15 + 30 + 5 + 1 = 101 CP值 412/101 = 4.08 以上,就是星穹首年來的內容,對應六季的更新。目前遊戲新剛推出2.0更新,筆者也會花一點時間了解一下是否有等級門檻。 不過以長期遊玩的角度,還要考慮如何提升高等級刷素材的滿意度。

澳門教育家陳康妮:換我照顧你
文化創意
陳康妮・2024-01-25

澳門教育家陳康妮:換我照顧你 「爸爸,你記得今日午餐吃過什麼嗎?」這是澳門教育家陳康妮每週日去護老院探訪換肝後的陳爸爸時,總是要問的一句話。陳爸爸因為肝硬化而接受了肝臟移植手術,但手術後卻出現了腦退化的症狀,記憶力逐漸衰退,有時甚至不認得自己吃過什麼。陳康妮作為長女,每週日都會從忙碌的工作中抽出時間,去陪伴和照顧父親,這已經持續了五年。 「我希望能夠讓他感受到我的愛和關懷。」陳康妮說,她每次去探訪父親時,都會帶上一些他喜歡的食物,和他聊天,嘗試喚起他的記憶。讓他保持身體的健康和舒適。「我不想讓他覺得自己是一個負擔,而是一個被尊重和愛護的人。」她說。 陳康妮表示,成為照顧者的過程並不容易,她也曾經遇到過很多困難和挑戰,她說,她能夠堅持下來,是因為她深深地感恩父親對她的養育之恩,也因為她相信孝順父母是一種美德和責任。「我從小就是父親的掌上明珠,他總是無微不至地照顧我,教導我,支持我。他是我最好的老師,也是我最親密的朋友。」陳康妮回憶說,父親曾經帶她去認識他不同的朋友,培養了她的多方面的興趣和才能。「他總是對我說,你要做自己,不要被別人的眼光所束縛,你要追求你的夢想,不要放棄你的理想。」陳康妮說,正是父親的鼓勵和支持,讓她成為了一名優秀的澳門教育家,獲得了社會的尊重和認可。 「現在,換我照顧你。」陳康妮說,她希望能夠用自己的行動來報答父親的恩情,也希望能夠用自己的故事來鼓勵更多的市民孝順父母,關心老人,讓他們感受到溫暖和幸福。陳康妮說:「我相信,只要有愛,就沒有什麼是不能克服的。」

Switch / Steam Deck / Mobile 使用體驗比拼 (三)
手機‧電玩
MacauYeah・2023-12-14

上兩期,筆者從機身重量、續航性兩方面,對於遊戲機身便攜性的影響,今期最後一期,就從穩定性方面去討論,最後再做一個綜合影響。 沒有對比也就沒有傷害 - Mobile - Smart Phone 筆者所講的穩定性,其實就是正常運行一個遊戲,不會出現閃退的情況,讓你可以正正常常玩完一款遊戲。但因為Mobile原本是多用途機器,你玩著玩著,可以就要跳出遊戲回覆信息,但再次回到遊戲後,能不能正常運行的不知道。 大部份iOS遊戲,因為舊iphone機能限制,基本上跳出去後,都因為不夠RAM,回來後遊戲會重置。除非你打死不切換,否則一款遊戲沒有頻繁auto save功能,根本玩不下去。Android可能會好一點,有不同機型可以選擇,多一點RAM總是安全一點。 強行地用Linux運行Windows的黑科技 - Steam Deck 老實說,Windows已經不夠穩定,用Linux運行Windows Game,會比較穩定嗎?不過最幸運的是,Steam Deck有技術支援,更有社群支援,各遊戲經過Steam官方驗證,連續遊玩下閃退情況都很少。不穩定的原因,反而是Steam Deck主機本身。 在筆者遊玩的經驗中,待機後再打開,有一定機會率會整個遊戲閃退。這些問題在遊玩大作,特別是3A大作,會引來一個很不愉快的體驗。因為它們的auto save位置點一般都是以情節點來做考量,而以上班族來講,三步一待機的使用情境也很常見,那麼觸發閃退的機會率就很高。某次啟動會隨機引起閃退遊戲,真的欲哭無淚。 筆者也翻查過網上的資料,一年多前就有這個問題存在,而官方亦無法根治。筆者在寫稿的途中,還在測試坊間一些可能的補救方式,但因為時間不長,不敢說這問題是可以解決的。 穩定發揮 - Switch Switch在穩定性真的無可挑剔,多次待機後都沒有太多問題。完全貼合它的市場定位:在家可以隨時在電視玩,出外也可以四處走。隨時隨地停,隨時隨地再開。最多最多都是遊玩實體卡帶時,因為接觸不良而閃退。但這些不可避免的,因為實體卡始終是物理型態存在,跟著Switch四處奔波,難免會出問題。但下載數位版,存放於SD卡就不會有閃退。至少SD卡不會像實體卡會經常替換,所以出問題的機會也較少。 綜合體驗 其實討論了幾個方面,筆者都從是省心遊玩的角度出發去討論。 Mobile在裝備上會最少煩惱,想最輕鬆出問,這個是不二選擇,但考慮玩非課金類遊戲就最沒有保障。 Steam Deck優點是移動堡壘,若你玩的是高性能需求的遊戲,你只能選它。但想隨時玩就未必做得到。 Switch 在重量和穩定性上面最有優勢,考量延續性體驗,這個是首選。

斷捨離學會25日舉辦個人成長工作坊 歡迎澳門市民參加
文化創意
陳康妮・2023-10-24

澳捨離10月25日晚上7:30分舉辦個人成長工作坊。歡迎澳門市民參加: 斷捨離是一種由日本瑜伽師沖正弘提出的生活理念,意思是「斷絕不需要的東西、捨去多餘的物品、脫離對物品的執著」; 這種理念被認為可以幫助人們減少生活中的負擔和壓力,提升自我認識和自我區分,增加生活品質和幸福感; 家庭系統是一種以婚姻、血緣、收養、同居等關係為基礎而形成的共同生活單位; 家庭系統中的成員彼此相互影響,形成一種情感連結和互動模式; 家庭系統也會受到外在環境和文化的影響,產生變化和適應。 那麼,斷捨離與家庭系統有什麼關係呢?我們可以從以下兩個方面來看: 從心理學的角度來看,斷捨離可以幫助人們提高自我區分的程度,也就是區分自己的理智和情感,不受他人或物品的牽制; 這對於家庭系統中的成員來說,是一種重要的能力,因為它可以讓他們在保持親密關係的同時,也能保有自己的想法和立場,不會過度依賴或反抗家庭系統; 這樣可以減少家庭系統中的衝突和矛盾,增加溝通和理解,促進家庭系統的和諧與健康; 從社會學的角度來看,斷捨離可以幫助人們實踐理性消費,也就是在購買物品前思考是否真的需要,是否符合自己的價值觀和生活方式; 這對於家庭系統來說,是一種有效的資源管理,因為它可以讓家庭系統節省時間、空間、金錢等資源,避免浪費和囤積; 這樣可以提高家庭系統的生活水平和滿足感,也可以減少對外部環境和文化的依賴或追隨; 綜上所述,我們可以看到斷捨離與家庭系統有著密切的關係,它們既相互影響,又相互促進。通過實踐斷捨離,我們不僅可以改善自己的心理狀態和生活品質,也可以改善自己與家庭系統中其他成員的關係和互動,進而提升家庭系統的功能和幸福感。

澳門斷捨離學會:歡迎加入! 2023年10月-12月工作坊
文化創意
陳康妮・2023-10-09

澳門斷捨離學會是一個致力於推廣斷捨離理念和實踐的非牟利組織,現在合共26000位澳門市民加入,成立於2019年,由一群熱愛生活和追求簡約的澳門市民組成。學會的宗旨是幫助人們清理身邊的物品,減少無謂的負擔,提升生活品質和幸福感。 為了讓更多人了解和體驗斷捨離的好處,澳門斷捨離學會將於2023年10月至12月期間,舉辦三場工作坊,分別探討斷捨離與個人成長、斷捨離與輔導技巧、斷捨離與家庭治療的關係。工作坊將由學會的創辦人兼主席陳康妮女士主講,她是一位資深澳門教育家和生活教練,也是《澳門教育創新》一書的作者。 工作坊的詳細資料如下: 10月25日(禮拜三)晚上7:30 題目:斷捨離與個人成長內容:介紹斷捨離的基本原則和方法,並分享如何通過清理物品來釋放自己的潛能,實現個人目標和夢想。 11月22日(禮拜三)晚上7:30 題目:斷捨離與輔導技巧內容:介紹如何運用斷捨離的思維和技巧來進行有效的自我輔導和他人輔導,並分享一些實際的案例和心得。 12月13日(禮拜三)晚上7:30 題目:斷捨離與家庭治療內容:介紹如何通過斷捨離來改善家庭關係和氛圍,並分享如何協助家庭成員一起參與斷捨離的活動和遊戲。 工作坊適合任何對斷捨離感興趣或想要嘗試的人士參加,無需任何基礎或經驗。工作坊費用為免費,報名方式為在學會的Facebook專頁群組留言或私訊留言。名額有限,先到先得。 澳門斷捨離學會誠摯邀請您加入我們的工作坊,一起體驗斷捨離帶來的轉變和喜悅!

[教學] 平民雲端服務不是夢 | 5分鐘教你如何快速起VM
科技新知
MacauYeah・2023-05-11

前言 原本筆者只是想做docker cluster,但因為在實機中建VM極其麻煩,所以就研究了好一陣子如何快速起VM。 Hyper-V有預設的Ubuntu template,但只有ubuntu desktop版,沒有server版。而且desktop gui顯得浪費資源,要clone VM也很廢時,放棄。 Windows Subsystem Linux起VM很方便,但同一個Linux version只有一個instance,沒法起cluster,放棄。 Virtual box沒有Ubuntu template,若要clone的話就變得跟Hyper-V差不多,放棄。 經過一輪資料搜集,發現了一個Ubuntu multipass engine,聲稱可以跨平台快速起VM。裏面有一些很吸引的功能,可以自己建立images、使用固定IP。 那怕即使是沒有snapshot,在自定義images的配合下預裝docker,要隨時加減cluster node都是一件容易的事。 重大決策點 醜話說在前頭。經過一輪測試,multipass最大的問題,就是custom image、fix IP都只能在bare metal ubuntu 中才能使用。如果你沒有一台閒置實體機安裝Ubuntu,還是要再多考慮一下。 重點 詳細的流程,筆者記錄了在Packer template 和Multipass Static IP中,在這裏就只說一些重點。 packer是使用cloud-init和qemu的技術,行起template中指定的cloud image (在筆者的例子中就是ubuntu-22.04-server-cloudimg-amd64.img) 大家可以定義image行起後進行一些操作,而那些操作都是經過qemu vnc、ssh進去操作的。 操作完後就會直接儲存當時的image。所以在操作結束之前,盡可能地刪cache或刪去不要的user / group settings。 最後生成的image,還是一個cloud image。若要再運行它,必需要使用支援cloud-init的VM來讀取。 cloud-init是用來指定初次運行時要設定的事,例如:hdd size, user account password, ssh key import等。 使用工具cloud-localds可以生成一個seed.img,這樣qemu也可以cloud-init。 Hyper-V應該也可以經過類似方式,進行cloud-init,但筆者未有去實測。如有更簡便的方法請告知。 multipass預設就已經有cloud-init,在bare metal ubuntu就可以直接執行。 multipass也可以設定不同的cloud-init參數。 成品 最後筆者就選擇了用packer用來預裝docker,經mulitpass無腦起VM,再使用shell script對多個node設定docker,達到即時起docker node的功能。這樣就減省了VM的安裝時間,也省去了docker的安裝問題。 說到底,如果只想測試docker cluster,其實windows, macOS中的multipass也可以實現相同的功能。因為安裝docker那些都可以經過shell script自動化,只是每次重複操作,都變得相當慢。另外,因為multipass在windows, macOS不支援fix ip,對於指定docker cluster interface又會再多一重功夫。