潮流特區

最新文章

Docker 中的非管理員用户 Docker non-root user

科技新知
MacauYeah・2025-03-14

Container USER為何重要 在制作Docker Image的過程中,有時會接觸到 USER 這個設定。這事關到最後的 Docker Container內部運行的那個 user 到底會有什麼權限。大家也要知道,Docker Container 其實也只是一個 Linux 上的程序,也就是如果Container內權限過大,也有機會從 Container 內部存取到 Host上的資料。 一般情況下,Docker Image 預設的 USER 就是 root,最基礎的base image都是一樣。而我們想換,其實也相當簡單,就像Linux上起User一樣,只要經指令RUN adduser xxx 或RUN useradd xxx 也可以在 Docker Image 中創建帳號和 home 資料夾,之後就隨時經USER xxx來切換 實際上是不是這麼簡單? 如果你將要Container中執行的程序,是一個binary,平常你在Linux中也是以 non-root 方式執行,那麼是的,就是那麼簡單。例如你執行系統中的java, node, python,原本在Linux中就已經是誰都可以,那麼你的docker container 也應該沒有難度。 但如果原本的安裝包,預設是由system service來啟動,我們就要花點力氣,看看那個service是怎樣呼叫binary的,然後就一步一步模擬它的做法。例如筆者有打包的codeserver,預設是system service啟動,但它也有提共binary的執行方法,安定好home資料夾後,我們也可以手動啟動。 泛生之檔案權限問題 上述binary的情境之所以簡單,是因為大部份情況下,我們都只對於container 內部運行考慮即可,因為預設投產情況下的運作模式,都是隨時起、隨時刪、隨時砍掉重練,只要container內部運作可以自給自足,就可以了。Docker Swarm的運作也是如此,所以它不預期有的持久化資料權限的問題。 而持久化資料權限的問題,其實早在單個Linux伺服器就已經存在。同一個伺服器中,不同process就有不同的UID,當他們需要共同讀/寫某些檔案,就會設定多人權限。同理,當多個Container要共同檔案,也是同樣問題。在討論共享檔案之前,我們先看看預設 Docker Storage Mount 會給我們什麼權限。 如果是bind mount,bind mount的權限預設會是Host內的檔案或者資料夾的權限。 如果Host是root,container內是non-root,container有機會無法讀寫bind mount內的檔案。 留意權限設置就可以解決問題 如果Host是non-root,但container 內是root,從container內生成的檔案,Host的non-root user就無法使用。 Host是non-root的話就一定無解,Host至少有sudo權限,臨時變成管理員,去修正問題。 如果host和container也是non-root,但UID不夾,其實也不能交換使用。 跟上述一樣,最後要靠sudo來解決問題。 如果host和container也是root,就沒有權限問題,但就有安全性的風險。 如果是volume mount,就還是看看 mount path 是docker image layer中現有的 path還是新起的path 大部份手動建立的named volume都是root 經docker compose起的named volume滿足以下條件的話,將會是non-root。 docker image 中的已有該path存在。 named volume未存在,docker compose會把對應path的內容在初次建立時抄到named volume 中。 例如ubuntu:24.04中的/home/ubuntu,存在於docker image中,它的擁有者就是UID 1000,我們經docker compose HOME_VOLUME:/home/ubuntu,在HOME_VOLUME建立時,就會是UID 1000。但如果是 NOT_EXISTS:/home/ubuntu/somethingNotExists,那麼NOT_EXISTS建立時,也會是root 上述討論的Storage mount是集中在單機情況下,使用HOST OS的本地儲存。若現在的場境是多機共享的share storage,就會更麻煩,還要看看那個share storage本身的屬性。例如常見的Linux NFS,其實有指定的權限,跟NFS的Login權限有關,如果你的process本身對檔案權限很敏感,就請先不要挑戰NFS(例如postgresql)。 Rootless mode - Rootless 模式 Rootless 模式指的是在Host中,執行Container的使用者,不需要是管理員,筆者就常用於開發環境中。投產環境中反而沒有聽過這樣的討論,因為投產環境很少可以讓非管理員去執行這麼重要的環境管理。 雖然只是開發環境,但這像前述的bind mount討論中,如果Host是non-root,但container 內是root,又或是兩者non-root,但UID不夾,也會出現權限問題。無腦的將host user加入docker group,只可以讓非管理員可以運行docker,但解決不了權限問題。 真正有條件解決的,可能就會向linux subgroup的方式發展。暫時筆者用得比較順的rootless mode,可以無腦用的,不是docker,是podman。有興趣的朋友可以經podman官網看看教學,它給筆者的感覺就像是自動轉換UID。 podman rootless mode 想看更多 筆者已經將過去的文章重新整理成gitbook,有興趣睇更多的讀者,可以來筆者的gitbook再翻一翻 https://macauyeah.github.io/AProgrammerPrepares/

用Trading View寫Machine Learning算法(二)|將簡單訊號變成實用策略|Random Forest (隨機森林)|動態計算訊號權重|麥振威

創富坊
程式交易 www.quants.hk (導師: 財經書藉作家: 麥振威)・2025-03-11

用Trading View寫Machine Learning算法(二)|將簡單訊號變成實用策略|Random Forest (隨機森林)|動態計算訊號權重|麥振威 上一段影片已介紹了KNN算法,自己一直也強調有很多的演算法其實也適合用來設計交易策略。要學習AI、Machine Learning就要明白各種的演算法,這次介紹的Random Forest也是常用的演算法,若配合「權重投票」,可以寫成很多不同的策略。 雖然大部份人都會運用Python來寫Random Forest,但我們可用Trading View 的pine script,配合array的寫法,不斷「動態」去計自每個入市訊號的權重。 例如以下四個十分簡單的入市準則: 1)MACD的快線是否高於慢線? 股價是否上升/下跌? 2)Zero lag MACD的快線是否高於慢線? 股價是否上升/下跌? 3)RSI升穿或跌穿50? 股價是否上升/下跌? 4)ATR是否升穿或跌穿其SMA(10)? 股價是否上升/下跌? 例如MACD的快線升穿慢線,其後股價真的上升的話,這個訊號的的權重就會增加0.1,若果股價下跌,這個訊號的權重就減0.1,不斷「動態」咁去計算每個入市準則既權重,權重越高,之後再有訊號出現時,重要性就越高。用這種方法,一樣可以有Random Forest的效果,而且一些好簡單的入市準則,只要經過這個步驟來組合之後,效果都可以提升。 重點是用「動態」的方法去計算每個入市訊號的權重,只要學懂這種方法,過去大家想過很多的交易策略,都可以嘗試去改良。例如你同時運用了1分鐘圖、5分鐘圖、15分鐘圖、小時圖的訊號綜合一齊變成一個買入策略,但有時候1分鐘圖、5分鐘圖的訊號配合,股價便已上升,但有時候則確實要四個timeframe的訊號也配合才算準確,原因就是市場的波幅會不斷變化,透過「動態」的方式去計算毎個timeframe的訊號權重應多大,整個策略的效果就會有很大的不同。

Spring Boot 08 - 多情境設置 maven profile 與 application.properties 進階篇

科技新知
MacauYeah・2025-03-11

上期我們介紹完最直觀的用法,這期我們再來討論多管齊下的方向。 在開始之前,筆者總結一下上期的 Profile 的要點。 Spring boot 是經過 spring.profiles.active 去選擇什麼 (spring boot) Profile 生效 spring.profiles.active 它可以在runtime(運行時)動態更改 maven 是經過 xml 去選擇編譯時的 (maven) profile maven 編譯時為 spring.profiles.active 填入一個固定值 另外,筆者亦在測試途中,發現一個現像。 maven 並不提供混合 profile,即使下指令同時觸發兩個 profile ,最後亦只有一個 maven profile 生效。但這個部份筆者未在官方文件中找到,大家如果有任何發現,可以幫忙修正。 Spring boot 混合 Profile 當我們經IDE編譯時,可以為 spring.profiles.active 填入多個值,各值之間用逗號分隔,就可以觸發多個 profile 。 spring.profiles.active=dev,uat 程式碼中的application.properties, application-dev.properties, application-uat.properties 都會生效 Spring boot會先後載入上述三個檔案,如果有重複值,後面出現的會覆蓋前面的值。 spring.profiles.active如果填入的值與現在的application-xxx.properties不匹配,該部份不生效,例如 spring.profiles.active=dev,uat 程式碼中只有application.properties, application-dev.properties,但沒有application-uat.properties Spring boot會先後載入上述兩個檔案 上述的都好理解,當大家都接受上面的結論後,再來看這個現像。 spring.profiles.active 是啟動spring boot時,作為選擇profile的依據。 application.properties可以有一個預設的spring.profiles.active,正常跑spring boot就會看它。 正常跑spring boot時,還可以通過傳入參數--spring.profiles.active=xx,改變那個值。 Spring boot test 因為結構特殊,它只會看到 application.properties 中的那個spring.profiles.active值。 Spring boot test 暫時沒有方法傳入參數spring.profiles.active,但可以經程式碼 @ActiveProfiles 硬改運行中的 profile 。spring.profiles.active亦只會顯示 application.properties中的那個值。 Spring boot 混合 Profile 例子 大家看完概念之後,可以來看看實際例子。 當什麼都不加,就是根據application.properties的spring.profiles.active來啟動profile。 mvn clean compile spring-boot:run # or mvn clean compile package java -jar target/spring-boot-profile-0.0.1-SNAPSHOT.jar 正常spring-boot:run的情況下,可以經的 --spring.profiles.active 覆蓋過application.properties內的值。 mvn clean compile spring-boot:run -Dspring-boot.run.arguments="--spring.profiles.active=dev --spring.profiles.active=uat" mvn clean compile spring-boot:run -Dspring-boot.run.arguments="--spring.profiles.active=dev,uat" # or mvn clean compile package java -jar target/spring-boot-profile-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev --spring.profiles.active=uat java -jar target/spring-boot-profile-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev,uat 上述例子,若dev,uat內的值沒有衝突,沒有覆蓋問題。但如果有衝突,最後會是uat內定義的值。 Spring boot test Profile 例子 因為不是正常spring-boot:run,所以那些參數都沒有用,具體只會看application.properties內預設spring.profiles.active mvn clean compile test -Dspring-boot.run.arguments="--spring.profiles.active=dev,uat" # arguments will be ignored, same as mvn clean compile test Maven Profile 例子 加入Maven之後,就可以修改application.properties內的預設spring.profiles.active。但要注意,maven只會有單profile 假設pom.xml如下 application.properties如下 spring.profiles.active=@active.profile@ 下述三組例子,有且只有uat生效。因為maven的uat生效後,會修改 mvn clean compile spring-boot:run -Puat # or mvn clean compile package -Pdev -Dci=true java -jar target/spring-boot-profile-0.0.1-SNAPSHOT.jar # or mvn clean compile test -Puat 當然,你想要弄一個maven mix profile 也可以 以下例子可以令 dev, uat 同時出現在spring.profiles.active mvn clean compile spring-boot:run -Pmix # or mvn clean compile package -Pmix java -jar target/spring-boot-profile-0.0.1-SNAPSHOT.jar # or mvn clean compile test -Pmix Maven Profile Spring boot test例子 上述例子都了解後,最後就來看看全部混合的情況 當Test case中沒有硬改 profile 定義,application.properties中的spring.profiles.active就直接作用。以下情況就是同時運行dev,uat // java @SpringBootTest class ProfileTests { } // bash mvn clean compile test -Pmix 當Test case中有定義@ActiveProfiles ,application.properties中的spring.profiles.active的值會保留,但不在該test case中生效。以下情況就是同時運行uat,dev,但讀取spring.profiles.active的值會是dev,uat。 // java @SpringBootTest @ActiveProfiles(value = { "uat", "dev" }) class MultipleProfileUatDevTests { } // bash mvn clean compile test -Pmix 如果我們把maven 指令中的加入package,預期 test 執行的是 uat,dev 。而 jar 的打包結果會是 dev,uat。 // java @SpringBootTest @ActiveProfiles(value = { "uat", "dev" }) class MultipleProfileUatDevTests { } // bash mvn clean compile test package -Pmix 但請盡量不要這些做,因為會越來越混亂,特別是打包 prod 環境。為減少出錯的機會,例如test污染了prod的環境,筆者在package時,通常都會跳過test。 mvn clean compile package -Pprod -Dmaven.test.skip=true

第九維度的玄學根據

宗教玄學
熊神進・2025-03-10

近期,一位學生邀請我參加一個冥想群組,討論一個引人注目的話題:“地球將在2025年4月15日12:12分開始進入第九維度,持續879秒。”這一主題的發起者據說是一位冥想老師,我本人與這位老師並不相識。 以下是我與學生討論的內容摘錄: ““The Earth will begin to enter the ninth dimension on April 15 at 12:12, lasting for 879 seconds. This phenomenon is due to gamma rays emitted from the galactic center resonating with Earth's magnetic field, creating a dimensional gateway at 9898Hz. During this period, you will experience the following phenomena: First, there will be a global aurora displaying an unprecedented purple-gold hue. Second, approximately 33% of people will feel intense vibrations in their pineal glands, while another 44% will briefly enter a deep meditative state. Quantum ripples will emerge on the Earth's surface, reactivating some ancient energy fields. Notably, at energy hotspots such as Machu Picchu and the Great Pyramid, brief holographic projections will appear, showcasing the original forms of these structures. This 879-second dimensional transition will not cause destruction to the material world; rather, it will represent a collective upgrade of global consciousness. 。” 學生詢問我對“地球進入第九維度”這一說法的看法,是否符合玄學原則。值得一提的是,我自少便修習七脈輪,17年前已自成一派,對於其他學說並不混淆。今天所表述的純屬個人觀點,並不代表任何流派。 首先,讓我們討論所謂的“4月15日12:12開始,地球進入第九維度,持續879秒”。在我的修行體系中,並不存在具體的“維度轉換”概念,更何況是如此精確的時間標記。這可以被視為一種“靈性預測”。在我的冥想中,地球的運動與天文事件存在一定的可預測規律,但維度的變化在物理學中並沒有實質依據,尤其是在弦理論中,額外維度屬於微觀範疇,無法被宏觀的地球所經歷。 關於銀河中心發出的gamma rays與地球磁場共振形成9898Hz維道通道的說法,若我的學生曾經學習過宇宙磁場的相關知識,以下內容可能會有所幫助: Gamma rays的能量通常極高,頻率遠超過9898Hz,通常在GeV或TeV級別。 Gamma rays作為高能光子,並不帶電,其對地球磁場的影響微乎其微。磁場主要影響帶電粒子,如太陽風中的質子和電子,而gamma rays幾乎不受磁場影響。 他提到的現象中,包括全球範圍的紫金色極光,這種極光是由太陽風粒子與地球磁場相互作用產生的,通常顯示的顏色有紅色、綠色和紫色,而紫金色卻不常見。 此外,他提到約33%的人會感受到松果體的震動,44%的人會進入深層冥想狀態。對此,我持有異議。松果體在生物學上主要調節褪黑激素,影響睡眠週期,至今尚無數據支持其在維度變化中產生物理震動的說法。而冥想本質上是一種主觀體驗,受到心理暗示或群體效應的影響。所謂的33%和44%也缺乏數據支持。 在與學生的討論中,我提出以下幾點: 物理學中的“維度”和“量子”等概念有嚴格的定義,這些定義與靈性冥想無關。 玄學理論應建立在一定的知識基礎上,無法隨意下結論,否則難以站穩腳跟。 對於冥想的解釋往往較為平淡,而“奇蹟”論則常依賴誇張的表述來吸引注意力。 我在講課中常常說,冥想必須天人合一,天就是宇宙觀,如果導師其本質已走火入魔,他/她教導出來的學生,難免是神神化化。雖然“第九維度”話題激發了許多討論,但我們應以批判和理性的態度來看待這些聲稱。

熊神進3月10日至3月16日一周生肖運程

玄學星相
熊神進・2025-03-08

鼠 這個星期,屬鼠的朋友財運較差,職場上可能會因爲遲到或請假而受到扣工資的影響,業績表現一般,收入甚至可能下降。因此,筆者熊神進建議你在消費上要克制,避免隨意借貸,以免陷入財務困境。同時,本周可以隨身佩戴一串「元辰十二靈石手串」作爲護身符,期望能够得到貴人的相助,促進健康成長。周二情感運勢有所提升,特別適合與异性溝通,建立良好的人際關係。 牛 屬牛的朋友在這一周的健康運勢表現一般,可能會出現失眠的情况。建議不要過多思慮那些無關緊要的事情,保持心態平和。此外,醜土在春天有一點求財不順,可以考慮搬家或重新粉飾家宅,以增强財運。本周也是聘請風水師進行堪輿的好時機,良好的開端能够爲你帶來好運。保持積極的心態,適時調整生活環境,能够改善整體運勢。 虎 屬虎的朋友本周由于寅卯合木傷身的關係,健康狀况較爲不利,容易出現呼吸道、消化道以及皮膚等方面的疾病,甚至可能影響到思想和神經狀態。因此,務必加强身體的調理與保養,適當進行鍛煉以增强免疫力。同時,建議定期進行體檢,確保身體健康。此外,保持良好的心態,避免情緒波動帶來的負面影響,對整體運勢也有積極的幫助。 兔 屬兔的朋友在工作上的努力得到上級的認可,本周表現頗受賞識,尤其要多注意與主管之間的溝通與合作。同時,健康方面需關注飲食問題,保持飲食均衡,增加水果和蔬菜的攝入,以確保腸道暢通。工作與生活的平衡是提升運勢的重要因素,保持積極向上的態度,能够爲未來的職業發展打下良好的基礎。星期五是月食,凡月食之夜,不宜男女有身體接觸。 龍 屬龍的朋友在這一周整體運勢較爲良好,適合放鬆心情,可以選擇外出游玩或在家好好休息。不過,若有重要事務需處理,仍需保持警覺,避免因放鬆而錯過良機。在社交方面,適當參與一些聚會,能够擴展人脉,結識貴人。如果心愛的人在遠方, 請你好好爲他/她祝福。此外,良好的心態與適度的休息相結合,將爲你帶來更多的好運。 蛇 屬蛇的朋友這一周受到「劍鋒」負面影響,可能會遭遇小人或意外的困擾。在運動時務必提高警惕,注意交通安全,以防發生意外或血光之灾。人際關係上,建議以和爲貴,儘量忍讓,避免衝突。出門駕駛時,務必保持冷靜,寧願慢一點,不要急于求成。此外,佩戴「太歲火山藍月手串」可以化解歲君的凶狠,提升自身的運勢。 馬 屬馬的朋友本周運勢可能會出現阻滯,事業進展不穩定,常常會因意外情况而感到措手不及。因此,務必增强防範意識,提前做好準備,以便在遇到突發情况時能够保持冷靜、妥善應對。同時,保持樂觀積極的心態,避免負面情緒的影響,努力尋求解决問題的方法,將爲你帶來轉機和好運。財運乏善可陳,理財必須格外小心,以免錢財外泄而入不敷支。 羊 本周屬羊的朋友運勢反復,財來財去,雖然正財收入尚可,但開支也較多,難以積蓄。《管子》提到「節用而養德」,在消費時應多加謹慎,避免不必要的開支。建議制定合理的預算,以確保財務狀况的穩定。健康方面,保持良好的心態,笑口常開,有助于提升身體的活力與免疫力。適當參與一些有趣的活動,將有助于緩解生活中的壓力,恢復精力。 猴 屬猴的朋友本周運程波動較大,工作上可能會經歷許多波折,精神狀態也受到影響,容易因小事而煩惱或生氣。建議在面對困難時,保持冷靜,避免胡思亂想,及時與家人商量,尋求他們的意見與支持。同時,適時調整自己的心態,專注于解决問題,而不是被情緒所困擾,這樣才能提高工作表現。幸運數字:2、7、6、1及其組合。 鶏 屬鶏的朋友在工作方面運勢較好,正官星的影響使你有機會找到新的工作或得到上司的支持。如果積極努力工作,本周的運勢將有明顯的提升。建議多與同事溝通,建立良好的團隊關係,提升工作效率。幸運顔色:白色、金色、水藍此外,保持積極的態度,勇于迎接挑戰,將爲你的職場生涯帶來更大的發展空間。 狗 屬狗的朋友本周需注意情緒管理,可能會因爲外界的壓力而感到焦慮。建議適時放鬆自己,進行適當的休閑活動,幫助緩解壓力。此外,健康方面要關注飲食與作息,保持良好的生活習慣,以增强體質。與家人及朋友保持良好的溝通,能够讓你感受到更多的支持與關心,有助于改善整體運勢。過多幾星期就是清明節,請盡旱跟家人安排掃墓一事。 猪 屬猪的朋友在健康方面需特別留意,可能會出現失眠、頭痛和胸部問題,尤其在季節轉換時要格外小心。筆者熊神進建議建議保持規律的作息時間,避免熬夜,以保證充足的睡眠。此外,適當的鍛煉與均衡的飲食也能增强身體的抵抗力,降低生病的風險。在工作上,保持積極進取的態度,珍惜每一個機會,將爲你帶來更好的發展前景。

熊神進3月10日至3月16日一周生肖運程

玄學星相
熊神進・2025-03-08

鼠 這個星期,屬鼠的朋友財運較差,職場上可能會因爲遲到或請假而受到扣工資的影響,業績表現一般,收入甚至可能下降。因此,筆者熊神進建議你在消費上要克制,避免隨意借貸,以免陷入財務困境。同時,本周可以隨身佩戴一串「元辰十二靈石手串」作爲護身符,期望能够得到貴人的相助,促進健康成長。周二情感運勢有所提升,特別適合與异性溝通,建立良好的人際關係。 牛 屬牛的朋友在這一周的健康運勢表現一般,可能會出現失眠的情况。建議不要過多思慮那些無關緊要的事情,保持心態平和。此外,醜土在春天有一點求財不順,可以考慮搬家或重新粉飾家宅,以增强財運。本周也是聘請風水師進行堪輿的好時機,良好的開端能够爲你帶來好運。保持積極的心態,適時調整生活環境,能够改善整體運勢。 虎 屬虎的朋友本周由于寅卯合木傷身的關係,健康狀况較爲不利,容易出現呼吸道、消化道以及皮膚等方面的疾病,甚至可能影響到思想和神經狀態。因此,務必加强身體的調理與保養,適當進行鍛煉以增强免疫力。同時,建議定期進行體檢,確保身體健康。此外,保持良好的心態,避免情緒波動帶來的負面影響,對整體運勢也有積極的幫助。 兔 屬兔的朋友在工作上的努力得到上級的認可,本周表現頗受賞識,尤其要多注意與主管之間的溝通與合作。同時,健康方面需關注飲食問題,保持飲食均衡,增加水果和蔬菜的攝入,以確保腸道暢通。工作與生活的平衡是提升運勢的重要因素,保持積極向上的態度,能够爲未來的職業發展打下良好的基礎。星期五是月食,凡月食之夜,不宜男女有身體接觸。 龍 屬龍的朋友在這一周整體運勢較爲良好,適合放鬆心情,可以選擇外出游玩或在家好好休息。不過,若有重要事務需處理,仍需保持警覺,避免因放鬆而錯過良機。在社交方面,適當參與一些聚會,能够擴展人脉,結識貴人。如果心愛的人在遠方, 請你好好爲他/她祝福。此外,良好的心態與適度的休息相結合,將爲你帶來更多的好運。 蛇 屬蛇的朋友這一周受到「劍鋒」負面影響,可能會遭遇小人或意外的困擾。在運動時務必提高警惕,注意交通安全,以防發生意外或血光之灾。人際關係上,建議以和爲貴,儘量忍讓,避免衝突。出門駕駛時,務必保持冷靜,寧願慢一點,不要急于求成。此外,佩戴「太歲火山藍月手串」可以化解歲君的凶狠,提升自身的運勢。 馬 屬馬的朋友本周運勢可能會出現阻滯,事業進展不穩定,常常會因意外情况而感到措手不及。因此,務必增强防範意識,提前做好準備,以便在遇到突發情况時能够保持冷靜、妥善應對。同時,保持樂觀積極的心態,避免負面情緒的影響,努力尋求解决問題的方法,將爲你帶來轉機和好運。財運乏善可陳,理財必須格外小心,以免錢財外泄而入不敷支。 羊 本周屬羊的朋友運勢反復,財來財去,雖然正財收入尚可,但開支也較多,難以積蓄。《管子》提到「節用而養德」,在消費時應多加謹慎,避免不必要的開支。建議制定合理的預算,以確保財務狀况的穩定。健康方面,保持良好的心態,笑口常開,有助于提升身體的活力與免疫力。適當參與一些有趣的活動,將有助于緩解生活中的壓力,恢復精力。 猴 屬猴的朋友本周運程波動較大,工作上可能會經歷許多波折,精神狀態也受到影響,容易因小事而煩惱或生氣。建議在面對困難時,保持冷靜,避免胡思亂想,及時與家人商量,尋求他們的意見與支持。同時,適時調整自己的心態,專注于解决問題,而不是被情緒所困擾,這樣才能提高工作表現。幸運數字:2、7、6、1及其組合。 鶏 屬鶏的朋友在工作方面運勢較好,正官星的影響使你有機會找到新的工作或得到上司的支持。如果積極努力工作,本周的運勢將有明顯的提升。建議多與同事溝通,建立良好的團隊關係,提升工作效率。幸運顔色:白色、金色、水藍此外,保持積極的態度,勇于迎接挑戰,將爲你的職場生涯帶來更大的發展空間。 狗 屬狗的朋友本周需注意情緒管理,可能會因爲外界的壓力而感到焦慮。建議適時放鬆自己,進行適當的休閑活動,幫助緩解壓力。此外,健康方面要關注飲食與作息,保持良好的生活習慣,以增强體質。與家人及朋友保持良好的溝通,能够讓你感受到更多的支持與關心,有助于改善整體運勢。過多幾星期就是清明節,請盡旱跟家人安排掃墓一事。 猪 屬猪的朋友在健康方面需特別留意,可能會出現失眠、頭痛和胸部問題,尤其在季節轉換時要格外小心。筆者熊神進建議建議保持規律的作息時間,避免熬夜,以保證充足的睡眠。此外,適當的鍛煉與均衡的飲食也能增强身體的抵抗力,降低生病的風險。在工作上,保持積極進取的態度,珍惜每一個機會,將爲你帶來更好的發展前景。

Spring Boot 08 - 多情境設置 maven profile 與 application.properties

科技新知
MacauYeah・2025-02-25

為何要有不同的建構 Profile Profile這一字,很難在IT技術文章中翻譯,它在Spring boot中的語意大概就是一個設定一個固定的運行環境參數合。例如我們做開發時,有些只想在開發環境中出現的設定,諸如測試用的資料庫、細緻一點的LOG層級,都寫在dev profile中。當換成正式環境時,我們也有一套全新的配置,而且會集中寫在prod profile中。把這些參數設定從程式碼邏輯中抽離,可以讓你的程式碼簡潔很多,也方便對比不同環境的設定。 application.properties Spring Boot (Spring Boot Starter) 就提供了 Profile 管理。我們可以為一個Spring Boot 模組設定多個不同的 application.properties src/main/resources/application.properties 為預設 (default profile) src/main/resources/application-uat.properties 為驗收環境專用 src/main/resources/application-prod.properties 為投產環境專用 src/main/resources/application-test.properties 為自動測試專用 在執行程式時,我們只要動改變啟動的參數spring.profiles.active,例如 mvn spring-boot:run -Dspring-boot.run.arguments="--spring.profiles.active=uat" # or mvn package && java -jar target/YOUR_JAR_NAME --spring.profiles.active=uat Spring Boot 就會指定載入 application-uat.properties 的內容,如果有些值沒有定義,它會再追溯到預設的 application.properties中。 在運行中改變啟動參數的情況可能不多,筆者更常用的情況是在編譯期間產生多個 Jar 檔,不同 Jar 檔指定不同的環境,方便系統管理員取用測試。想做到這個效果,我們需要在 application.properties 中,我們還需要加入一句spring.profiles.active=@active.profile@,並在編譯工具中加入這個變量,例如筆者常用的 maven pom.xml 中,就會有這一串設定 它在 maven clean compile package 時,就已經可以在JAR中填入固定spring.profiles.active。那麼每次執行時,都會是指定的profile。 mvn package -Puat java -jar target/YOUR_JAR_NAME 在這個例子中,JAR 中的 spring.profiles.active 就會固定是uat,我們不需要在啟動參數中加入字眼。 如果大家不會碰到混合Profile的話,其實上述的資訊已經足夠大家應付很多情境。 但當大家有追求,需要寫自動測試,有機會不同自動測試需要啟用不同的 Profile ,更有可能出現混合Profile的情況,這件事就變得很複雜。我們需要繼續深入了解一下 Spring Boot 的覆蓋機制,下面將會以測試方式導出結論。 如果真的對混合 Profile 沒有太多信心,我們也可以用單一 Profile 重組不同 properties 的方式,自行去模擬混合 Profile ,例如除了dev, uat, test之外,我們可以加入 dev-test, uat-test, default-test 作為驅分。這樣應該可以簡化測試的複雜度,不過 properties 檔案就可能會成幾何級成長。 但在某情特殊情況下,我們不可能簡單地重組 properties 等型式去做測試,例如針對部份uat-test的測試,只有部份可以執行,部份不可以,那麼我們還是需要用到混合 Profile ,限定某些測試需要執個某個 profile ,但其餘部份可以動態切換。 有條件的讀者,也可以先行試玩一下混合 profile 的特性,下期筆者再為不同情況作解紹。 混合Profile Source code spring boot profile

重入膠坑5 | 堆積變山積,山積有辦法解決嗎?

手機‧電玩
MacauYeah・2025-02-20

針對大標題的問題,先講結論,堆積是沒法完全避免的,但我們應該有條件防止堆積變成山積(大量堆積)。 堆積不可避免的原因 以前筆者一直是玩遊戲多,面對特價節日買多了的現像,直到PS4後期,都還會有這個問題出現。但在過渡到PS5早期,就不再有這個問題。因為數位遊戲必定是越賣越便宜,除了機器壞、停產的問題,基本上不會有所謂的錯過好遊戲的問題。不同平台,每年都有節日特價,急玩頂多也就原價買入,能等就一定會有好價錢。 但模型可不一樣,實體商品都有限量的問題,首發一定貴,再販之後會回落到正常價,但再過一期就不一定有現貨。所以大家的策略一般是先買入自己認為不錯的新貨/特價品,以免後來買不到,即使山積也會照買。不過問題就是當年紀越來越大,又或是對制作越來越有要求,作業的速度就會越來越慢,然後山積就會越來越嚴重。 改變一下心態 首先這裏不討論成品玩具的山積問題,因為成品玩具至少可以折價出讓,只要夠捨得,想清貨一般都有市場。這裏講的山積問題主要是針對拼裝模型部份,針對那些要自己出手,慢慢一件件加工的玩具。 最初,我們可能很想完美地砌完一台模型,打磨、上色、擺拍。但因為一些技術問題,例如因為損毀要另行修復、制作難度、天氣問題、家庭問題,令大家的進度一直無法向前。久而久之,就會更無心情去完成作品,食之無味,棄之可惜。 面對這個問題,我們可以考慮放過自己,其實不一定要完美制作才能體現樂趣。素組,AA膠強行修復,遮醜,拍攝區部特寫,也可以一定程度的避重就輕地跳過有問題的部份。 貴精不貴多 由少量堆積變成山積主要的原因源自於【不想錯過】,但對於長遠目標來講,山積可能意義不大。 如果我們的目標是收藏,我們會想精制,而面對可能損毀的風險,雙入更具意義。所以不同時期山積多款模型,就變得沒有對沖意義。 如果我們的目標是重複把玩,我們可能更在意空間收納的方便性。若山積的話對於怎樣找模型,絕對是一個阻礙。舊模可能需要搬去一個更隱閉的地方,但這樣亦代表不再把玩,所以堆積也沒有價值。 重新定義如何斷捨離 回到本文最初的結論,堆積,或者叫作團貨,是沒法完全避免的。主要因為商品可取得性問題,再加上對珍品的不捨,一定量的堆積是必定會出現的。但我們可知道,物品始終都會老化或損壞,亦即是有保質期的問題,堆積不代表可以永久擁有。有些我們無法完成、修復的作品,就只好換個形式儲存,例如變成改件作為下一個作品的配件使用,又或是送出給下一位有緣人。新品購入時,亦要評估保質時間,自己是否可以在指定時間內開封體驗,免得錯過最佳觀賞時間。

Github copliot vs Intellij IDEA ultimate

科技新知
MacauYeah・2025-02-18

github copliot 最近正式開放每月限量免費使用,只要有github 帳號,就可以經過vscode copliot plugin,向 github copliot 交互式生成程式碼,又或是經 copliot 提供 code completion。大家會不會想過,加了github copliot的vscode,是不是效率暴升,可以跟傳統的付費IDE 例如intellij 的IDEA ultimate版本平起平坐? 流暢度明顯提高 是的,在生成程式碼方面,特別是code completion,在開啟copilot之後,實在好太多了。筆者長期寫java,vscode 原生的 java code completion,實在太陽春。java class name都很長,而且是強型別,很多時候都要完整打出class name。但大部份時候,筆者都要打很多個字之後,vscode才猜到你想打什麼,再給你可能的code completion,但這樣一來你也快打完了,幫助不大。要麼就是自己複制貼上,要麼就自己全拼出來。 在開了github copilot之後,在空行開始時,它就會開始猜你的意途,在打幾個字母以後,它雖然會頓一頓,但總在筆者跳去其他部份複制class name之前,就給出更新結果,實在省心太多。但猜測始終是猜測,大部份時候還是邊打邊修正。不過code completion方面,已經是追得上intellij,有些時候更是超越了intellij。例如我們有時寫 javascript 時,需要做多語言顯示,我們需要為每個語言設定一份i18n的翻譯。copilot 在這方面也能幫到忙,它會自動推薦可能的翻譯,你連問都不用問,這些功能,都不是 intellij 的本地運算會有的支援。 另一個要提提的是 copilot chat,它跟大家平時使用 chatgpt 程式碼生成的方面類似,只是它可以直接在vscode的某個檔裏直接交換生成程式碼。不過生成的品質都很一般,很初階的事可以做,深一點的就不懂。例如你很常寫java,但突然要寫javascript,有些javascript的array操作你懶得查,這時你可以叫copilot chat幫你生成。但若果你今日使用 javascript 框架,有一些 vuejs 或 reactjs 的結構參數傳遞你不太了解,你想找copilot chat,那就幫助不太。它依然可以生成一些程式碼,但對你碰釘的地方沒有修正意義。你還是需要自行從官方文件較對、研究Stack overflow中相似問題的解決方案。就跟chatgpt差不多。當然這些不是傳統IDE可以給你的。但如果現今對比的是收費的copilot chat和本地免費的ollama qwen2.5-coder,copilot chat就沒有太大性價比。 可以作為付費IDE的平替嗎? 如果我們拿vscode + github copilot 跟 intellij IDEA ultimate來比較,前者入門價錢是120美元一年,後者入門則是169美元(次年續期有優惠,但到了第三年才會比 github copilot便宜)。單看價錢的話,github copilot的確比較便宜。想省點錢,github copliot絕對是一個可以考慮的選擇。但除了錢以外,或者我們還要考慮一些其他因素。 公司立場上,介不介意你的IDE上傳資料到cloud service上面? 付費IDE的除錯功能、多環境整合、程式碼品質分析,這些關係到長期維護,非程式碼生成部份,是不是可以忽略不計。 筆者在開發開源的程式,長期都使用vscdoe,在配上 github copilot 後,明顯覺得它提升了 vscode 的流暢度。但相對實際工作上,筆者還是會集中使用 intellij IDEA ultimate 。因為即使vscode 有明顯改善,但日常碰到的問題更多不是在生成部份,而是解決那些似是而非的程式碼結構陷阱,這方面還是intellij 更幫到忙。(當然stack overflow和其他網路資源才是真正的救命靈藥。)


破.地獄
摘星廚神•巴黎夢
愛情咀咀咒
摘星廚神:巴黎夢
穿越時空的初吻
你的顏色
摘星廚神.巴黎夢
穿越時空の初吻
贖夢
SEVENTEEN RIGHT HERE WORLD TOUR IN CINEMAS
迪士尼《白雪公主》
4DX  白雪公主
白雪公主
魔域女巫
高空殺機
孤獨的美食家
無痛俠
猴
機動戰士Gundam GQuuuuuuX -Beginning-
門逃
米奇17號
4DX  劇場版 「進擊的巨人」完結篇 THE LAST ATTACK
4DX  哪吒之魔童鬧海
IMAX with Laser 哪吒之魔童鬧海
看我今天怎麼說
哪吒之魔童鬧海
破.地獄
摘星廚神•巴黎夢