搜尋

搜尋結果

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

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

CyberCom3合1充電數據線 — 一條線搞掂晒,充電超方便!
科技新知
Lifemagtechie・2025-06-12

而家大家手上嘅電子產品多到數唔清,手機、平板、藍牙耳機、遊戲機hellip;hellip;每部機都有自己嘅充電線,仲有啲好舊款用USB,iPhone用Lightning,最新又係TypeC,搞到充電時成日手忙腳亂,尤其去旅行,帶幾多條線都唔夠! 呢條 CyberCom3合1充電數據線,就係為咗解決呢個煩惱而生。佢集合多種接口於一身,無論你係用緊iPhone定Android,甚至其他電子裝置,都可以用一條線搞掂晒,方便又慳位,真係你嘅生活充電好幫手! 一條線,多種接口,無懼設備多 CyberCom3合1充電數據線支援 Micro USB、USB A、Type C 同 Lightning 四大接口,無論你係iPhone、Samsung定係其他品牌,甚至係藍牙耳機、遊戲機,都可以用呢條線充電同傳輸數據。旅行唔使再帶一大堆線,行李又有位可以擺多啲戰利品啦! 快充快傳,效率up up! bull; 支援QC快充技術,最高60W輸出,手機、平板、智能手錶都可以超快充滿,唔使等成日。 bull; 傳輸速度高達480Mbps,無論係工作文件定係娛樂影片,一link就傳,節省你寶貴時間。
 耐用又防纏繞,攜帶超方便 bull; 採用彈性TPE物料,線身唔易打結,收納方便,唔怕亂晒。 bull; 線材耐用又有彈性,日常用或者出街旅行都好啱用。
 產品小百科 bull; 1米長度,無論係屋企、公司定旅行都啱用。 bull; 建議零售價 $99,依家優惠價$79就可以帶走。
 由此開始,充電更快更簡單! 設計貼心,性能強勁,係你工作同生活嘅好拍擋。無論係手機、平板、遊戲機定藍牙耳機,呢條線都幫你搞掂晒充電同數據傳輸,令你嘅數碼生活更輕鬆自在。了解CyberCom3合1充電數據線嘅詳情同優惠,幫你打造更智能、更方便嘅充電新體驗!購買網站 www.cyberportcom.com查詢電郵 info@cyberportcom.com

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,那麼就不用quot;forcequot;了,用最保守的刪除指令就可以 docker node rm node5 login node1, 取得manager token docker swarm jointoken manager node5關機,新增node6,使用相容的ip段,或者使用node5的ip login node6, 加入群集,設定vvip docker swarm join token xxxx XX_IPXX_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 的練習清單,還在持續新增中。讀者們有興趣也可以一起來修訂。 httpsgithub.commacauyeahAProgrammerPreparesblobmainsrcvuejsTimeAttack.md

何謂 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的功能,自動多除少補。

Steam Deck 也可以作為文字創作
科技新知
MacauYeah・2024-01-23

之前筆者就介紹了,如何使用Steam Deck作為程式開發機使用。這可能對於一般讀者來講不太常用,更常用的是做一些文書處理。筆者最近也拿著Steam Deck,也一步步地補充文書處理所缺少的軟件,正式踏入Steam Deck日常之路。 如果你沒有對系統做過任何更改,在桌面模式中,只要打開「Discover」,輸入後逐的軟件的唯一package name,就可以找到相關軟件。 但如果你像筆者之前一樣,加了homebrew等第三方系統,可能所有軟件都需要在terminal中,經過指令sudo flatpak install PACKAGE_NAME。 Chrome 唯一碼 com.google.Chrome 系統預設瀏覽器只有Firefox,不習慣的話可以另外下載Chrome。有了Chrome,至少所有的雲端文書軟件都可以用,想用Google Doc也沒有問題。 中文輸入法:Fcitx5 Rime 唯一碼:org.fcitx.Fcitx5 唯一碼:org.fcitx.Fcitx5.Addon.Rime Steam Deck原本有自帶的輸入法,但只適用於螢幕虛擬鍵盤使用(即使用Steam key X,打開虛擬鍵盤),而實體鍵盤就無法轉輸入法了。這時就需要Linux上的Fcitx5和Rime了。安裝很簡單,之後還要設定一下。 首次安裝後,在啟動器(桌面左下角)搜㝷及啟動 fcitx5,然後在右下角就會見到有個新的鍵盤圖示出現。 按鍵盤圖示,滑鼠右鍵,點選configure,把Rime 加入Fcitx裏面,然後Apply rarr; Close 然後按鍵盤圖示,滑鼠左鍵,應該就會切會成中文輸入法了。這時原本的鍵盤圖示會變成中文輸入法的圖示(或者你經CtrlSpace也可以) 最後對著中文輸入法圖示,再滑鼠右鍵,可以選擇不同的中文輸入法,例如拼音、注意、倉頡等。 有了輸入法,有了瀏覽器,世界已經都是你的了。 下載器 JDownloader 唯一碼:org.jdownloader.JDownloader 它可以用來下載大部份隱藏文件,例如YouTube video audio 。但需要注要,首次下載JDownloader 後,還要經過軟件內部更新,否則不能使用。(就像很多手遊,下了主程式後還要下更新檔) 其他 如果你不是長期有網絡,還需要真離線版文書處理器,還可以看看LibreOffice,WPS Office。但這些都不能保證跟windows office 百分百轉換,可能還是使用雲版的Microsoft office 365還要實際。

廣東話都 Work!地表最強翻譯機 TranSay
科技新知
Cheers!・2018-01-26

去旅行最忌雞同鴨講,最近 CTM 就引入近期勁 Hit 嘅翻譯神器「Transay」。呢部翻譯機集最新雲端科技與人工智能於一身,囊括 30 個國家語言,撳個掣就可以進行即時雙向翻譯,而且支援 4G Lte, 3G 及 WiFi,一推出就被網友推舉為「神級翻譯機」。今次我哋就去到「外傭集散地」的三盞燈附近實試 Transay,一齊睇吓係咪咁好用啦! Transay 支援 30 個國家語言,包括普通話、粵語、英語、韓語、日語、西班牙語、丹麥語、德語、法語、葡萄牙語、泰語等。 市面上翻譯機眾多,但能夠翻譯廣東話嘅,確實少之又之。 賣點: 獨有龐大雲端資料庫,提供即時翻譯。 支援多達 30 個國家語言雙向翻譯,令溝通無彊界。 同時支援 4G LTE, 3G 及 WiFi。 可透過 OTA 更新 Transay 系統,升級更多翻譯語言。 在北美州、歐洲、中國、亞洲等地都有雲端服務器,不論身處世界各地都能夠提供高速的翻譯體驗。 續航力達 8 小時,足夠每天的緊密行程。 獨有錄音筆功能,足以應付旅遊之外,工作、會議亦更加方便。 內置 2 吋液晶屏幕,能以文字方式顯示及紀錄翻譯對話。 經廠方反覆測試,確保翻譯準確,發音清晰。 至抵價換購TranSay TranSay 人工智能雙向翻譯機只需 350 積分 $1,980(原價 $2,260),有興趣嘅朋友,即刻用 CTM Buddy 手機程式換購啦! CTM Buddy 手機程式:httpsgoo.gljvAxs1