星期三, 11月 27, 2024

Installing and Switching Java Versions on Mac OS

Description

記錄Mac OS裝java

Install Java

有兩種方法 

  1. 透過homebrew
    這方法感覺比較好,但未成功,所以請用第二個方法 XD
  2. 下載bin裝法

1.透過homebrew

brew install openjdk@11

切換有兩種方法

A.brew switch

brew switch openjdk@11

但switch似乎被deprecated了,找不到switch指令

brew switch openjdk@11
Error: Unknown command: brew switch

B.jenv

又看有jenv來切換,透過jenv version看起來有切

但實際打java —version,仍然是一樣 所以先放棄了,會的人再教我

2.下載bin裝法 

1.Install 

就笨笨的下載,然後放Users/<your user account>/Library/Java/JavaVirtualMachines/ 用lntellij下載,也是會放這位置,所以可以透過ide做

2.設alias


vim ~/.zshrc

貼以下到最後

# Java Setting
alias java11="export JAVA_HOME=/usr/libexec/java_home -v 11; java -version"
alias java17="export JAVA_HOME=/usr/libexec/java_home -v 17; java -version"
alias java23="export JAVA_HOME=/usr/libexec/java_home -v 23; java -version"

p.s. 透過java_home切換,只能切安裝在Libaray/Java/JavaVirtualMachines裡底下

重啟terminal,就可以切換


# java17
openjdk version "17.0.12" 2024-07-16 LTS
OpenJDK Runtime Environment Corretto-17.0.12.7.1 (build 17.0.12+7-LTS)
OpenJDK 64-Bit Server VM Corretto-17.0.12.7.1 (build 17.0.12+7-LTS, mixed mode, sharing)

# java23
openjdk version "23" 2024-09-17
OpenJDK Runtime Environment (build 23+37-2369)
OpenJDK 64-Bit Server VM (build 23+37-2369, mixed mode, sharing)

Question

1: 沒設定PATH也能動?

我發現只有設定JAVA_HOME,但並沒有把${JAVA_HOME}/bin放進PATH變數如下

PATH="${JAVA_HOME}/bin:${PATH}

但是切換仍有用,我看是有PATH有指定/usr/bin,而底下有java

神奇的是他會隨切換版本而改變,這不是什麼神奇功能

2: 那我可以用brew安裝java,再用java_home -v來切嗎? 先說明 透過brew安裝會放在 /opt/homebrew/opt 透過intellij安裝會在/Users/<user>/Library/Java/JavaVirtualMachines/下 結論 我試是不行,因為java_home只能抓到/Library/Java/JavaVirtualMachines/下的java版本

See Also

Reference

星期四, 10月 03, 2024

控制Maven Unit Test及Integration Test

由於integration test不一定有環境跑,所以得區分
目標是unit test一定都會跑,而integration test有指定才跑
這裡利用maven-surefire及tag區分

1.Tag區分Unit及Integration Test

    @Test
    @Tag("UnitTest")
    @DisplayName("UnitTest1")
    public void testCase1() {
        assertEquals(1, 1);
    }

    @Test
    @Tag("UnitTest")
    @DisplayName("UnitTest2")
    public void testCase2() {
        assertEquals(1, 1);
    }

    @Test
    @Tag("IntegrationTest")
    @DisplayName("Integration")
    public void testCase3() {
        assertEquals(1, 1);
    }

2.maven-surefirem區分

在pom.xml裡,找plugins加入以下
...
<plugin>
	<groupid>org.apache.maven.plugins</groupid>
    <artifactid>maven-surefire-plugin</artifactid>
    <version>3.5.0</version>
    <executions>
        <!--mvn test-->
        <execution>
            <id>default-test</id>
            <phase>test</phase>
            <goals>
                <goal>test</goal>
            </goals>
            <configuration>
                <!--run test cases with tag "UnitTest"-->
                <groups>UnitTest</groups>
            </configuration>
        </execution>
        
        <!--mvn integration-test-->
        <execution>
            <id>integration-test</id>
            <phase>integration-test</phase>
            <goals>
                <goal>test</goal>
            </goals>
            <configuration>
                <!--run test cases with tag "IntegrationTest"-->
                <groups>IntegrationTest</groups>
            </configuration>
        </execution>
    </executions>
</plugin>
 

跑mvn integration-test可以發現分別先跑了
1.mvn test
2.mvn integration-test

本想研究怎麼拿掉mvn test步驟
不過想想unit test每次都跑也不錯,就沒理了

星期六, 9月 21, 2024

對話的練習

上周請小孩跟學校拿申請單
結果小孩暴氣表示不關他的事,為什麼要幫我拿
聽完這回覆理智線直接斷裂,想發火罵人時…
回想剛讀完「對話的力量」,便先收起怒火,晚點再談

等自己恢復平靜後,再跟小孩算帳對話
以下便記錄與小孩的對話內容(稍為縮減濃縮)


對話記錄

我:剛才你在生氣,發生了什麼事嗎 (覺察情緒)
孩:…

我:在學校發生什麼事嗎
~ 沈默幾秒鐘 ~
孩:我不想去上課

我:學校發生什麼事
孩:明天有音樂課,音樂課要唱歌跳舞

我:音樂課要唱歌跳舞?
孩:我不喜歡唱歌跳舞,聽到老師跟同學說以後會輪流,我不想要同學面前唱

我:在同學面前唱的感覺是什麼
孩:我覺得厭力很大

我:覺得壓力大? (確認)
孩:我不會唱歌跳舞,在同學面前,我會不自在…


~ 這裡讓小孩有話想說,專心聆聽確認問題,不給建議,讓他全說完 ~


我:很高興你能跟我說這件事,在同學面前,做不擅長的事,的確會感到厭力
我:明天上音樂課,如果要你唱歌怎麼辦?

(讓對方自己想處境,如何面對困境,獨立思索如何面對)

孩:不知道
我:那~ 你有想要解決這個問題
孩:哪有辦法解決!?

我:那你有想要解決嗎?(核對式提問助於聚焦、負責)
孩:怎麼解決?

我:明天的唱歌表演,請你想成我們要比的是「唱的最爛,跳的最差的」,唱的好、跳的好的人輸(註1)

之後我忘記小孩回覆什麼,但感受到他心情變好了
我們也聊了不少東西

這幾天感覺小孩比較會主動聊天
親子感情似乎有再更親密點… 吧!?(自我感覺良好)


心得

一開始的小孩暴氣不願拿申請單,真的令我發怒
當下覺得怎麼會這樣回答,也許小孩有其他事,所以讓他情緒不好,如同冰山

幸運剛讀完「 對話的力量」正好練習一下
過程中,自己能專心聆聽,不給建議
也許在想該怎麼提問,所以讓自己不帶情緒平靜應對
覺得挺有趣的


重點整理

  • 當對小孩吼,小孩就會吼回來的方式對話
  • 專注且和諧,語氣平穩,對方也會共頻

先梳理小孩的情緒,等平緩後,再聊他發生的事
從中瞭解問題後,也覺得小孩已講完,再進行下一步
再確認他是否想解決,沒確認這點,先給建議,對方可能覺得煩
如果他自己能解決問題,就引導他自己解
小孩沒想法的話,就提個方法給他
小孩感到沒自信,那就幫他建立自己的信心

註1:這招 從「 對話的力量」學的,「比爛」還挺有效的,當然前面的鋪陳是需要的

星期四, 9月 12, 2024

Scrum Master的被電旅程


過去在自己組織導入Scrum,覺得頗有幫助
今年突發奇想來找Scrum Master工作
沒想到被鈦坦找去,本來有點猶豫會被電

但想了想…
就去見識見識,被電就當學習唄

結果就...
真的被電了... XD


一方面鈦坦對敏捷的運作已經很成熟
團隊運作會成為現在這樣,都也經過不斷迭代過
提個意見,就會有說人以前試過
自己對運作也不熟悉,一直被覺得狀況外
真有體會團隊是活生生的個體

另一方面是身份轉換
過去自己一直是Team lead角色帶Scrum
而切換專職ScrumMaster反而不知道如何與團溝通

雖然前輩早說過SM沒有實權,需用不同方式協助團隊
道理及書都讀過,不過實際運作就跟自己想像不一樣 Orz
自以為講出問題,大家就會說「好唷~ 我們來解決這個問題」(結果是我被解決了  XD)

細想過去是別人不懂或者是自己有權力,所以大家就被迫上車了
現在團隊運作好好,誰理你在旁邊亂吠


這碰壁的過程,也請教多位過來人

感謝Oakely,之前也遇到相同的問題,聊起來特別有感
感謝Terry指導,「看到的是現像,還是問題」以及「能打裝作不能打」
感謝Sherry,建議引導的小細節,讓會議進行的更絲滑流暢
感謝Maureen,雖然太晚找你了,但是燒腦的提問,還是很有幫助
感謝Leo, Elvier及Sam,多次的談論,從你們身上學到很多不同的觀點
還有感謝Michelle幫忙,另外非常泰好吃 XD

感謝大家~

最後
試著努力,不過覺得還差很多
瞭解Scrum的運作,對工程師是加分,但對專職SM就嫌不足
除了理論外、必需懂很多手法技巧,更需要練習及經驗累績
不是小看SM這角色,而是事非經過不知難呀
所以先退回工程師角色,再繼續修練

p.s. 圖片是半瓶水,提醒自己要多修練