搜尋

搜尋結果

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

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

Git 歴史修正
科技新知
MacauYeah・2024-10-29

有時候,我們修正一系統檔案,例如某個commit中,多了一個不該放的檔案,又或者想修改該commit的作者,我們就要追搜到某個commit,然後用rebase隨個改。 例如本次repo,有一個githubAction.md,因為錯誤原因,被加到了main中,也藏了很久。如果我們想連根拔起,我們需要加出它第一次出現的commit。 $ git log githubAction.md commit 60ccd70f6b768138cbe23c93ffcfa32574ce895c 那我們就以它前一個commit作為rebase的根據,進行逐個commit修正。 $ git rebase i 60ccd70f6b768138cbe23c93ffcfa32574ce895c pick 60ccd70 draft some content pick e2ee9a3 add some senario. pick b91afc1 refine submodule; pick 98cd366 add notes about submodule specific checkout; pick 064b06f test directly commit in submodule main pick 7b648d2 update git submodules notes pick 556f25e add notes about merge timing pick 5244804 Create gitcontinuousintegrationstrategy.md pick 107e486 add more pratical nodes about ci; pick d93cbee add mono repo challenge pick 1c471b6 add worktree notes pick 9063ccb notes about different of git flow and github flow; pick b72e89e Update githubflow.md, add ref more link pick 0b8f2a9 draft github flow release problem pick 8b333fc finalize github flow release strategy 在rabase選項中,把需要改的commit由pick改為edit。rebase會以舊到新顯示。然後儲存。例如 edit 60ccd70 draft some content edit e2ee9a3 add some senario. edit b91afc1 refine submodule; pick 98cd366 add notes about submodule specific checkout; pick 064b06f test directly commit in submodule main pick 7b648d2 update git submodules notes pick 556f25e add notes about merge timing pick 5244804 Create gitcontinuousintegrationstrategy.md pick 107e486 add more pratical nodes about ci; pick d93cbee add mono repo challenge pick 1c471b6 add worktree notes pick 9063ccb notes about different of git flow and github flow; pick b72e89e Update githubflow.md, add ref more link pick 0b8f2a9 draft github flow release problem pick 8b333fc finalize github flow release strategy 我們第一次會在60ccd70,我們作出想要的改動,然後經amend去改掉60ccd70 $ rm githubAction.md $ git add u $ git commit amend author=quot;newuser quot; 確定無誤的話,就可以去下一步,即是到了e2ee9a3 $ git rebase continue 因為已經rebase過,你此時看到的不會再是hash不再是e2ee9a3,而是自動rebase完的e2ee9a3。若大家有東西要改,就使用commit amend。如果沒有東西要改,也沒有conflict,可以繼續rebase continue下去。

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

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

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君取得特定的版本。

挑戰高難度 vs 挑戰速度
手機‧電玩
MacauYeah・2018-10-16

原本,有次向身邊好機友問意見,有什麼遊戲值得成為我下一款Speedrun的目標。 但我發現一個重要的誤解,就是普遍認為Speedrun主要靠rdquo;實力rdquo;以及rdquo;手速rdquo;,所以靠自己摸索、提高rdquo;實力rdquo;就可以了。 一般人認為rdquo;實力rdquo;會影響rdquo;輸出rdquo;,這個直觀理解當然不是錯,只是rdquo;實力rdquo;提高,並不是指通過靠練習高難度關卡就提高實力了。 例如:我跑完一輸最高難度的刺客教條,回去挑戰普通難度,是不是會變快? 普通難度當然比最高難度通關快,但再重玩一次普通難度之後,會更快嗎?高難度關卡,只是讓你學會有效防禦迴避策略,但輸出並不提升多少。 Speedrun的重點,其實是Skip,不是Run。不需要的東西盡可能都不要拿,把路線規劃得更順會更有時間效果。形成loop目押,有glitches用glitches,才是最快的通關方式。所以研究各種路線的風險差異,就成為Speedrun策略重要的一環。 所以,當在一個speedrun社群裏,已經有前人把要點寫成指引,你練起來,會輕鬆好多。 如果沒有前人指引,那起碼也要自己寫筆記,在觀看練習不同的冠軍路線時,記下各種不同的前置條件,讓自己有個大概估算有什麼rdquo;選擇rdquo;,亦要準備一下如何一些隨機變數的對策。 另外,怎樣可以重複練習也是一個重點。因為以正常的方式完整跑一次遊戲是很花時間,你也不能練一次就通竅所有skip和目押,所以有效的分段重複練習就變得很重要。 如果遊戲原本就有章節可選,就最好。如果能夠自由Save Load,也不錯。而最難的遊戲,就是那些像Dark Souls系列,自動save,不讓你回頭的遊戲,這個練起上來最痛苦。主機遊戲更什,不是那些容易地作弊式還原存檔。 (所以現在Dark Souls Speedrun 冠軍的人,都是玩電腦版,用些工具來讓自己可以有效果還完save位置) 大家有興趣加入Speedrun行列,可以來youtube 連結 twitch 連結 留言。 想睇我地跑系列遊戲馬拉松的話,快啲follow 我地嘅youtube 同twitch,湊夠觀眾我地就開跑啦。 再後亦要宣傳一下,國外亦有Speedrun馬拉松係10月2729日進行,想睇新舊遊戲speedrun嘅朋友真係唔好錯過

不負責任 IPKN X ESTHERLOVESYOU 眼影盤 試色
美容
叫我女王・2016-05-24

叫我之前買左個IPKN同ESTHERLOVESYOU合作的眼影盤,見佢顏色易襯,價錢又唔會太貴,買黎玩下囉~ 睇下商品圖先: 佢總共有十隻色,價錢差唔多150幾蚊,平均一隻色15個幾,都算抵玩,隨盒仲有一枝掃。都算唔錯架! 睇下人地的商品圖: 如果你識玩,個組合都可以玩好奈,而且最近都岩一D粉色妝容~紅粉飛飛咁,男朋友見到都想鍚啖啦,係未先!(謎之聲:前提你要有一個男朋友先!)喂!又唔駛立刻講個事實出黎嘅~比人幻想下都好啊!你份人又係曳嘅! 以下係不負責任實物&試色圖! 請忽略我張枱係有D污糟嘅!切割墊呢D工具污糟係好正常嘅! 佢實物係真心扁架,所以放係化妝袋個陣係真係好慳位,用少少位,就可以攞十色出街⋯⋯ 打開之後,你會見到佢幫十隻顏色用左甜品名命名左,又係充滿左少女心的產物,個掃實際上眼都係抓粉能力唔錯,不過我就覺得佢個掃偏彈力啊,刷頭唔夠大,好似叫我呢D大眼的女人黎講,要上多一二次至可以上哂成隻眼!呢個有少少扣分! 黎到試色圖啦~其實可以睇到一D閃粉的系列,粉粒係幼細架,而且顏色都出,多數叫我都會先用淺色打底,然後再用稍為深色的疊上去,之後再用閃的打亮睇皮中間,做個小小的漸層,因為眼大都唔想放太多野上隻眼到,唔係就真係好似人妖- - 然後上眼圖係無嘅。標題都講左係不負責任啦,睇開D啦: 上色度:hearts;hearts;hearts;hearts;♡ 細緻度: hearts;hearts;hearts;♡♡ CP值:hearts;hearts;hearts;hearts;半 總括黎講,我係覺得抵買嘅,CP值都係几高的! 題外話: ♘:我以為你會叫女王喎!仲咩會變左叫「叫我」 ♕:我車,當你以我會咁做個陣,我偏唔要啊~ ♘:⋯⋯ ♕:係架啦,係咁架啦,平時比人叫多女皇,想叫下其他野。 ♘:你鐘意囉。 ♕:(扮食烟狀)肚餓,可唔可以幫我叫個外賣?

某家族涉借貸謀巨息,80餘宗暴利借貸涉2,000多萬!
其他
澳門生活圈・2019-06-26

批核快、利息低 這些網絡貸款信息 我們時常都會在網絡上看到 每借一筆金額就有著多少的利息 還有規定的還款日期 若是逾期了 相信利息也會隨之增長 曾有多少人陷入借貸的圈套裏 最後不僅身敗名裂 且還欠著一個巨額的利息 相信大家也知道 不正規的借貸 終究會榨幹你 ldquo;財仔rdquo;之手伸向公務員 本月25號,據司警透露,本澳一間囂張不法財務公司(俗稱:財仔)宣傳單張不但滿街派還派到政府部門,還公然向公務員伸出有毒ldquo;橄欖枝rdquo;。 財仔已運行4年 該不法財務公司從2015年7月開始運作,只要是透過宣傳單張和網上宣傳,該公司會安排不同成員到銀行開設賬戶,收款後多次轉賬再存入主腦銀行賬戶,藉此避過追查。 涉案財仔最無良之處是,借貸人半年至一年內只准償還利息,以期將借貸人搾幹搾盡;部分未能還款的借貸人,更會被ldquo;財仔rdquo;入稟法院民事起訴,將其物業抵押還債,令借貸人一夜間傾家蕩產。 司警展開收網行動 而近日,司警認為時機成熟,展開了收網行動,將一間家庭式運作的ldquo;財仔rdquo;連根拔起; 在涉案ldquo;財仔rdquo;成員上班之際,將4男1女拘捕,並起出11部存有借據的計算機、10部手機、18份借據、200多張空白借據及2,000多張借款宣傳品。 5名財仔成員被拘 5名被捕人士均為澳門人 嫌犯1姓關,男性,報稱商人,59歲; 嫌犯2是嫌犯1的其中一名兒子,姓關,29歲,報稱商人; 嫌犯3為嫌犯1的兒媳,姓溫,31歲,報稱無業; 嫌犯4為嫌犯3的親弟,姓溫,28歲,無業; 嫌犯5姓何,男性,35歲,商人。 警方以暴利罪、清洗黑錢及犯罪集團罪對各人落案起訴,移交檢院跟進。 涉款約2,400萬港元 司警表示,曾在2017年 6月起,司警就接獲了多名市民和政府部門報案,有借貸平台以ldquo;批核快、利息低rdquo;作為常用招數,吸引急需現金周轉客人光顧,收取超出法定利率的息額,從事非法借貸活動。 互聯網平台更設在外地並由一間內地網絡公司幫助營運。 據調查所得,集團放數會抽起借款金額8%至10%作利息,隨後收取8%至10%月息,並在借據中列明客人半年至一年不可清還借款,藉此保證利息收入。 一旦借貸人無力償還利息及本金,財仔成員會帶同借貸人到公證處進行物業抵押,企圖將不法借貸文件合法化,若借貸人最終無力還債,財仔會入稟法院民事起訴,將借貸人的物業侵吞或變賣。 在司警接獲的10名居民舉報個中,借貸金額由數萬元至過百萬元。 當深入調查後,發現財仔至少涉及86宗暴利借貸,涉款金額約2,400萬港元,不排除有更多受害人涉案,不排除仍然有人在逃。 司警局指相關公司雖然宣稱本澳公司,但從未在澳門注冊,呼籲涉案事主向司警報案,協助警方調查案件。 人若不是急需錢的話 一般都不會輕易去借貸 若真缺錢,就去正規的公司 對於不正式的借貸公司 最終只會榨幹你身上的分毫 相似於高利貸而又不次於高利貸 缺錢的人士,還是要慎重而為 材來源:力報、網絡 圖片來源:力報、表情包 如有侵權,請聯系我們刪除 版權屬於原作者 編輯撰寫:小嚕