搜尋

搜尋結果

Swarm mode 上線 7 - load balancer | 反向代理 (2)
科技新知
MacauYeah・2025-07-18

前幾天,我們就使用traefik做了個最簡單的http反向代理。 做完上述的使用驗證後,我們可以正式開始看官方的例子,該例子加入了SSL,這就更充份地體現反向代理的用途。 官方教學連結 官方的yaml也很長,筆者實測了一個簡化版本。 services: traefik: image: traefik:v3.4 ports: - target: 443 published: 443 protocol: tcp networks: - traefik_proxy volumes: - /var/run/docker.sock:/var/run/docker.sock:ro configs: - source: dynamic-tls.yaml target: /dynamic/tls.yaml secrets: - source: certs-local.key target: /certs/local.key - source: certs-local.crt target: /certs/local.crt command: - --api.dashboard=true - --log.level=INFO - --accesslog=true - "--providers.file.filename=/dynamic/tls.yaml" - --providers.swarm.exposedByDefault=false - --providers.swarm.network=traefik_proxy - --entrypoints.websecure.address=:443 - --entrypoints.websecure.http.tls=true deploy: replicas: 1 placement: constraints: - node.role==manager whoami: image: traefik/whoami networks: - traefik_proxy deploy: labels: - "traefik.enable=true" - "traefik.http.routers.whoami.rule=Host(`whoami.swarm.localhost`)" - "traefik.http.routers.whoami.tls=true" - traefik.http.services.whoami.loadbalancer.server.port=80 networks: traefik_proxy: name: traefik_proxy driver: overlay attachable: true configs: dynamic-tls.yaml: file: ./dynamic/tls.yaml secrets: certs-local.key: file: ./certs/local.key certs-local.crt: file: ./certs/local.crt 餘下的就照跟官方設定 生成cert file。(或大家有正式的證書,就可以免去這一步。) mkdir -p certs openssl req -x509 -nodes -days 365 -newkey rsa:2048 \\ -keyout certs/local.key -out certs/local.crt \\ -subj "/CN=*.swarm.localhost" 指向cert的動態設定檔。 tls: certificates: - certFile: /certs/local.crt keyFile: /certs/local.key 然後我們就可以這樣測試 curl -v -k -H 'host:whoami.swarm.localhost' 筆者在一開始時,始終無法設定 dyanmic/tls.yaml ,其實是筆者誤會了 traefik 的讀取方式。本個例子中,traefik 其實會動態讀取 swarm 及 file provider 的設置,而dyanmic/tls.yaml是經過file provider的方式生效。也就是 traefik-ssl.yaml 中的"--providers.file.filename=/dynamic/tls.yaml"。 本個例子與官方例子最大的不同,是官方的cert, tls, 是直接使用bind mount的方式存取,如果你有多過一個manager,這個方式不太有效。本文就用了swarm config及swarm secret,方便多個manager自動配置。不過swarm config及swarm secret都有個缺點,若要更新它們的內容,就必需要重命名(例如dynamic-tls.yaml=> dynamic-tls.yaml2) ,否則swarm不允許發佈。 完整 yaml 請見 github

steam deck 辦公用途工具資訊 2024/12更新
科技新知
MacauYeah・2024-12-17

購入steam deck 已經有一年多的時間,之前亦發過一些安裝教學。適逢筆者系統重裝,又有機會重新檢視工具的可用性。 Podman / Distrobox 一項很重要的更新,Steam OS已經有預安裝podman,不需要經home brew安裝。但預裝的podman 沒有內置DNS,可能會對K8S等進階應用有影響,不過筆者只作為單機測試用,普通的podman compose沒有問題。 另一項很重要的更新,就是 distrobox,它可以經 podman 讓大家方便地執行不同的 linux 版本,想在Steam OS上使用Ubuntu?沒問題,開箱即用;想用VScode官方維護版本,沒問題,安裝指定Linux再按裝VScode就好。 詳見上一期的介紹。Steam OS 3.5更新,內建 podman, distrobox 中文輸入法 我們不需要再安裝Fcitx5 + Rime,如果大家在遊戲模式下,已經設定好中文輸入法,那麼在輸到桌面模式下,照樣以Steam Button + X Button的方式,打開內鍵輸入法。你會見到有虛擬鍵盤彈出,它會覆寫桌面模式的。此時,即使你關掉虛擬鍵盤,並用實體鍵盤,中文輸入法都會保留。不過大家要確認,彈出當下必需要是【中文】。 若然你彈出的虛擬鍵盤是英文,請按【地球】轉換到【中文】後,關掉虛擬鍵盤,再重來一次(重按Steam Button + X Button),確保彈出的時候是經【中文】覆寫。 Discovery Discovery 是 Steam OS 預設用來安裝第三方程式的地方,它經 flathub / flatpak 存取程式。但筆者一定要先強調,它提供的第三方程式,並不一定會得到原開發者的支援,它屬於打包移植之類。 例如 flathub 中可以找到 Google Chrome (https://flathub.org/apps/com.google.Chrome) ,但它實際是經過一個github 專案移植過去的 (https://github.com/flathub/com.google.Chrome)。它有提供持續更新,但筆者不保證當中有沒有任何被植入過任何不正當軟件。 相反,flathub中有一些程式是經過原開發者支援的,例如 Firefox (https://support.mozilla.org/en-US/kb/install-firefox-linux), Gnome Boxes (https://gitlab.gnome.org/GNOME/gnome-boxes), Gimp (https://www.gimp.org/downloads/) ,這類可以比較放心使用。 筆者過去使用 Discovery ,的確有遇到一些權限問題,但最後估計應該是筆者安裝 Homebrew 所影響。筆者在重裝 Steam OS 後,直接使用 Discovery,就沒有問題。過去需要經 Homebrew 安裝的東西,現在經 podman , distrobox 或 Gnome boxes 就可以了,不再需要經Homebrew去折騰一輪。而且Homebrew也不是萬能的,因為Steam OS有限制一些套件的事用,即使安裝Homebrew也解決不了。若想要完全開放套件限制或解決依賴問題,還不如直接開啟Steam OS覆寫權限,轉用Arch Linux的安裝包。

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做太細緻的權限管理。

斷捨離與個人成長之關係 放下過去創造自己的未來
文化創意
陳康妮・2023-10-19

你是否曾經感到自己的生活太過複雜和混亂?你是否曾經想要擺脫過去的陰影和束縛?你是否曾經渴望自己的未來更加明亮和美好?如果你有這些想法,那麼你可能需要嘗試一種叫做斷捨離的方法。 斷捨離是一種簡化生活的方法,意思是斷絕不必要的東西,捨棄多餘的物品,離開對自己不利的環境。斷捨離不僅可以讓我們的空間更寬敞、整潔,也可以讓我們的心靈更清爽、自由。斷捨離可以幫助我們減少壓力、提高效率、增加幸福感 斷捨離也可以促進我們的個人成長,尤其是與我們的原生家庭有關的成長。原生家庭是指我們出生和成長的家庭,它對我們的性格、價值觀、信念、行為等有很大的影響。然而,原生家庭並不一定都是健康和正面的,有些原生家庭可能存在著暴力、虐待、冷漠、過度保護、控制等問題,這些問題會給我們留下深刻的傷痕和陰影,影響我們與自己和他人的關係。 因此,我們需要對自己的原生家庭進行一次斷捨離,也就是放下過去,走出陰影,創造自己的未來。這並不意味著我們要否定或忘記自己的原生家庭,而是要正視和接受自己的過去,並從中學習和成長。 我們可以通過以下幾個步驟來實現斷捨離與原生家庭: 斷:意識到自己與原生家庭之間存在的問題和衝突,並決定改變自己的狀態和態度。這需要我們有勇氣和決心,也需要我們有足夠的自信和自愛。 捨:釋放自己對原生家庭的執著和依賴,並放下自己對原生家庭的怨恨和期待。這需要我們有寬容和謙卑,也需要我們有足夠的自由和自主。 離:距離自己與原生家庭之間不健康和負面的影響,並建立自己與原生家庭之間健康和正面的關係。這需要我們有智慧和技巧,也需要我們有足夠的尊重和溝通。 通過斷捨離與原生家庭,我們可以從過去中解放出來,並開始創造自己想要的未來。我們可以發現自己的潛能和價值,並實現自己的夢想和目標。我們可以與自己和他人建立更深刻和更美好的關係,並享受更豐富和更幸福的生活。 斷捨離不僅是一種生活方式,也是一種成長方式。它可以幫助我們釋放自己的負擔,發揮自己的潛力,創造自己的幸福。讓我們一起開始斷捨離吧! (澳門斷舍離學會 供稿)

Git Submodule
科技新知
MacauYeah・2023-09-15

Git Submodule 初次實務上使用submodule來同時管理幾個project的更新。如果有任何理解上的錯誤,請在github中提issue或pull request。 Why Submodule 假設你的團隊中有三個人,A君做A Project,B君做B Project,C君做Main Project。如果可以,A,B各提供已編譯的Binary或Library,給C君直接使用就最好。 但要做到好好管理,A,B都要有自己的發佈系統,即是把Binary上傳到某個分享Repo中,這樣C君就能有條理地通過IDE或Compile工具下載對應的版本。如果是javascript,Repo可能就是npm repo,如果是java,可能就是maven repo。這亦代表A,B君對程式編譯、打包、版本命名等都要很熟悉,不能一輩子都命名為v1.0.0。 如果團隊對這些都不熟悉,C君還有什麼方法呢?其實靠著Submodule的功能,C君也可以硬把A,B的Source code取出,做最後打包。 這跟A、B君自己把source code壓縮然後Email寄給C君是有不同的。因為這樣C君並不清楚A,B的git脈絡:C君需要自己做好A、B的版本記錄。想要只回滾A,B的版本普不容易。但經過git Submodule後,C君可以清楚知道現在正使用的是A、B的那一個commit版本。假如有一天,A、B、C三個都更新了,但發現合起來時就跑不動。C君可以保持A、C的版本不變,單獨提取B的某個版本進行測試。當然,你可以說原本Email也可以這樣管理,但始終你不清楚B的版本記錄,Email的日期並不代表Source Code的進度。(因為有時候,Bug Fix是針對舊版本的做更新,新功能的Email日期反而比Bug Fix要早) 同理,如果大家要連結多個沒有發佈系統的文字資料,也可以利用Submodule。例如筆者正在編輯一本書,當中不同的主題,就是使用Submodule的功能串連起。 Command 馬上看來來Submodule可以怎樣做。 假設你已經知道git 怎樣用,也起了git repo。假設你是C君,進入你的本機repo資料夾內,使用submodule參數。 上面的效果,就是把C君當前repo的狀態,連結到B君submodule當時預設分枝(default branch)的最後一個commit 中。然後C君在自己的repo怎樣更新,它引用到B君的submodule版本都不會變。 直到某一刻,B君說他加了一個穩定的新功能,請C也連帶更新一下。C君也做好自己的準備後,使用submodule參數進行更新。 注意,如果C君有多於一個submodule,上述指令會全部一口氣更新。另外,如果你覺得B君的最新版本不能用,還是可以針對B君取得特定的版本。

本週手遊重點推介 2021/05/31-06/06
手機‧電玩
MacauYeah・2021-06-07

上週就介紹左一啲Action RPG及競技向的手遊啦,今週不如又看看MMORPG類型的遊戲。 波西亞時光 一款Steam平台累計24468篇特別好評的生活模擬類遊戲終於都要在手機平台上面世啦,重點是對比Steam價格,手機版便宜一大段。雖然Steam的標簽就寫係生活模擬遊戲,但操作下的感覺打怪系的MMORPG+生活模擬,Steam版未入過手的朋友妨考慮一下手機版本。遊戲將於 8 月 4 日在正式推出。 https://youtu.be/qCV3UHKfZYs 阿爾比恩 Online 一直有玩開遊戲的朋友都知道,PC遊戲的可能性最高,操作性也最豐富,而主機遊戲因為手柄等的限制,操制系統會被調整,很多遊戲類型會被限制。手遊雖然普及率更高,但同樣問題都繼續出現,因為便攜性等各稱因素影響,手遊通常都以簡便操作為主。 但《阿爾比恩 Online》就不一樣,致力PC平台的遊戲體驗移植到手機之上。想享受PC等級的MMORPG,大家就一定不要錯過它。 https://youtu.be/MfzoDXd5v5Y 目前官方暫時只提供了android 試玩 APK (和PC、MAC),但預告片就宣佈了6月9日會正式上架各大手機平台,已經努力了好幾年的阿爾比恩 Online,到底會帶來什麼驚喜? 天諭 同為MMORPG的手遊《天諭》,就走東方幻想的路線,一個一個美美的大自然環境,是不是足不出戶都可以享受去旅行的風景呢? https://youtu.be/sXwT_EC0cKU 遊戲也開發得七七八八,遊戲語言亦支援中文,現在開放預約下載 https://www.icantw.com/event/TyWarm

本週手遊重點推介 2021/05/17-2021/05/23
手機‧電玩
MacauYeah・2021-05-24

二之國 "二之國"一直在主機平台都有不錯的表現,從JRPG來說,它的畫面和音樂,都是一個美妙的特別存在。現在終於到開發手遊版本啦,而且事前預約開始左啦,並於6月10日於港澳台同步推出。 大家快啲預約,在手機上感受宮崎駿的美妙童話世界 https://2worlds.netmarble.com/tw https://youtu.be/FyNA15a8q6o 本作除了繼承主機系列的畫面和音樂之外,還由傳統的故事劇情改為MMORPG,讓玩家之間有更多的互動。 槍彈辯駁 另一款要解紹的,同樣是主機平台都評價不錯的槍彈辯駁系列。不過這不是一個免費+課金的手遊,而是切切實實的買斷式遊戲 玩過主機版的Youtuber都會話你聽,這是一個劇情推動的遊戲。(手機版未經測試,可能與主機版有點不同) https://www.youtube.com/watch?v=aTZNn6PMA0Q 筆者也過去在評價遊戲時,一直都很著重性價比的問題,如果以原本主機版4XX MOP價錢來說,當然不會推薦給大家;但比起主機版價錢,手機版的價錢真的很吸引,14.99 USD,兌換起來,也才130MOP以下。不論怎麼看,也是一個值得收藏的選擇。 皇輿爭霸 Dominion 卡片桌上遊戲《皇輿爭霸 Dominion》將於 2021 年登陸 PC、iOS、Android 平台 皇輿爭霸跟三國殺一樣,原本都是桌遊,但大家都不滿足於桌遊版本,從而發展到電子平台上。其實它的桌遊版本早在2008年就已經推出,在遊戲背景上,它讓玩家建立自己的王國(牌組),玩起上來更像大富翁的以持有資源,讓對手失去競爭力的方式來推行遊戲。它比大富翁有更多的牌組,也能更體現出連續技的操作。 從2019年末,大家就因為疫情關係,減少外遊的比例,原本有玩開桌遊的朋友,也絕對是受影響的娛樂之一,受桌遊的朋友,不防就趁著這個機會入坑電子版桌遊,本作還是以基本遊玩免費的方式營運。實在可以大大地為大家止止桌遊癮。

繪本有「哲」!宮西達也心中筆下的「正義使者」
文化創意
繪本與棋@黃庭熾・2020-07-20

  學生考試之前,跟他們分享了宮西達也的作品《正義使者:奇幻超人之卷》,它是《正義使者:晃晃星人之卷》的續作,以繪本的形式引導讀者思考「正義」的內蘊,饒富趣味。   《正義使者:奇幻超人之卷》以倒敘寫法帶入故事,迅速設問:既然有二號超人,那麼一號在哪裡?馬上給讀者娓娓道來一段大氣慷慨的歷史。原來,奇幻超人二號一向暴躁,且瞧不起一號友愛、謹慎的作風,迷失在威風凜凜登場、打倒「壞蛋」即儆惡懲奸的高光鏡頭裡,往往一擊奇幻光波射後不理,獨留一號在戰後殘破的城市裡救傷扶危......一天,一號為了救護危在旦夕的外星人,挺身而出承受二號的必殺一擊,中招後如敗絮般倒落深谷去,二號欲救一號以挽回大錯,卻力有未逮,眼看倆超人即一同墜入萬丈深淵去,曾受過超人一號恩惠的外星人紛紛施以援手;在眾志成城下,他倆免於為深谷吞噬的下場,但一號依舊因傷重而辭世。但一號的犧牲,為二號揭示了真正的正義之路。   真正的正義之路顯然不是爭取擁有最高的武力;故事以倒敘而不是以結論的形式去傳達這抽象的訊息,以超人一號的細節、言行、赴義來傳遞,正義是一條德之路──仁者無敵。   作者固然有他想要表達的深意,但同學們又會買帳嗎?   為了了解學生們的想法,我故意在故事中間設回饋單,請他們針對城市中屢屢出現外星人時、依自己的經驗分享作法;從回饋內容及以個人對回饋者情況的認識來看,成績理想的學生往往會選擇更乾脆的做法,相反在學業上曾有挫折經驗者往往顯得更為寬容、有耐心。   讓學生填寫回饋,旨在協助他們釐清想法、練習表達。閱讀推廣重在構築出每一位學生都能暢所欲言的閱讀環境,常可以快速回饋、拔除多餘的標籤。   我相信,長期薰陶、潛移默化、日子有功,待他們的閱讀與閱歷日益豐富之時,自會水到渠成,不可「同日」而語! 你可以到這些圖書館讀到這本繪本: 下環圖書館、何東圖書館、望廈圖書館、氹仔圖書館、沙梨頭圖書館、澳門中央圖書館、石排灣圖書館、紅街市圖書館、青洲圖書館、黑沙環公園黃營均兒童圖書館──實際借閱情形可以透過澳門公共圖書館館藏查詢系統瞭解。

澳門教育家陳康妮:淺談澳門創新創業教育之我見
文化創意
陳康妮・2020-06-08

澳門「創新創業」教育開始受到澳門社會各界重視,然而推動「創新創業」教育開始時從來不易。創新的改革往往是由敢於行動的社會創新推動者先行推動,我在澳門推動創新創業教育已經有兩年半的時間,終於在澳門的一間創新創業的大學落地,我會利用大學的創新創業優勢,讓大學生在疫情期間有機會跨科發揮自己所長,因材施教和求學不是求分數的理念,把拍短片、創新點子或教育模式應用在課程設計、教學分享、課堂管理、教師培訓或與學生生涯規劃討論上。 2020年因應疫情的急速發展,有危就有機,新機遇和挑戰不停湧現,跨科知識、跨科技能不斷變化。創新創業教育是塑造下一代技能其中的重要一環,教育要與時並進,社會不斷創新。全球已有不少取得成效的社會創新點子,澳門有一群熱心社會創新創業的大學生在疫情期間設計社會創新點子,師生在課堂凝聚更多有心的同行者,包括大學教育工作者,大學生等等多方力量,重新定義未來創新創業的路向,積極推動澳門創新,讓我們的創新創業教育能更好裝備未來下一代的需要。 談到創新創業教育,我比較重視「以大學生學習為中心」,重燃大學生的學習動機,啟發大學生建構自主學習能力,然而,無可否認,澳門創新創業的同學,自己本身十分重視學術表現。創新創業教育的理解仍有落差,我理解他們面對突然其來的疫情困難,為師者只能一步一步陪伴他們試行他們的方案。 構建正面思考學習創新創業教育 創新創業教育在疫情爆發後慢慢一步一步推行涵蓋各個跨學科專業的大學生,創新創業教育不只結合線下教學,還延伸到教室以外,學習團隊合作精神、解決問題等核心能力。相信不久將來,澳門會更上一層樓,把創新創業教育全面推動至全澳門中小學教育層面。 孕育新一代的社會創新創業者是我未來培訓澳門教師的主要方向,在澳門,下半年我會主力培養更多創新創業的教育管理者。

【星爸爸教室】如何為小米手機安裝Google框架與服務?
手機‧電玩
星爸爸茶座・2019-10-28

隨著高階手機定價越來越高,以性價比著稱的小米手機近年備受青睞,用戶日益增加。眾多小米用家中,為數不少為水果牌子轉移過來,初期使用上總有點水土不服的感覺。其中港澳台朋友使用最普遍的Google服務,包括Gmail、Chrome、YouTube等服務,需要安裝Google框架才能使用,最令新用戶摸不著頭腦,星爸爸為解決網友疑問發文手把手教大家安裝。 首先,您需要準備一台近年購買的國內版小米手機,港版不需要安裝因已經預載,然後就沒有然後了。您或會黑人問號?飄過,是的,如果是Google框架是不需安裝了,因為近年小米已經把Google框架放進MIUI系統,所以您不需再在YouTube或網誌看幾年前發佈的教學復雜的安裝Google框架了。 問題來了,既然不需要安裝Google框架,那怎樣使用Google服務呢?以下星爸將會教您快捷與安全使用方法。 喚醒Google商店 先到應用商店搜索google 看到Google Play商店便更新吧!(圖片是更新後的所以變成打開) 桌面便出現熟悉的Google Play商店了,進入後登入自已Google帳號即可。 之後就按您的需要下載軟件應用了,星爸推薦的軟件有很多,Gmail、Chrome、YouTube、聯絡人等,特別推薦Google Photo(相簿),可無限備份普通品質的手機相照到雲端,留存美好時光,遺失手機都不需要擔心寶貴相片盡失。 後記,網友仍可使用舊式方法安裝Goolge框架,如谷歌安裝器、GO谷歌安裝器等,但會出現不能安裝舊版框架的顯示,解決方法仍是有的,但星爸就不推荐捨易取難的方法了,這還不包括一體安裝包有病毒或木馬等風險在內,還是簡簡單單安裝好快快樂樂使用為上策。 註:小米機型甚多,星爸測試手機為紅米K20 Pro、小米8,如其他型號手機未能使用上述方法或部份功能未能使用,歡迎到FaceBook留言指正。