電影流水帳(2023/01/01~2023/01/31)

Letitia Wright
Letitia Wright
  • Eurovision Song Contest: The Story of Fire Saga (IMDB, Wikipedia),台譯:歐洲歌唱大賽:火焰傳說。
  • Black Panther: Wakanda Forever (IMDB, Wikipedia),台譯:黑豹2:瓦干達萬歲。

Eurovision Song Contest: The Story of Fire Saga

蠻歡樂的電影,冰島上的 Lars 跟 Sigrit 從小就愛唱歌,一同組了團,期望日後可以參加歐洲歌唱大賽。長大以後,Lars 一事無成,父親嫌棄他只唱歌,不捕魚。Lars 一直懷抱著這夢想,直到一次爭吵後,他跟 Sigrit 決定去報名。冰島電視台本身不富裕,這次歐洲歌唱大賽又輪到冰島主辦,為了避免有人參賽,電視台老闆讓所有冰島的參賽者都上船開派對,然後把船炸了。沒上船的 Lars 跟 Sigrit ,就成了冰島的代表,參加歐洲歌唱大賽。

參加比賽的 Lars 跟 Sigrit 到巴黎參賽,Lars 在參加比賽之後,有一場出了大糗,跟 Sigrit 發生了爭吵,他失去了自己的方向,甚至打算不繼續參加了。回到冰島後,看到 Sigrit 仍然努力參加,冰島的其他人也鼓勵他,所以他後來醒了,再次回到巴黎,趕上最後一場決賽。Lars 幫 Sigrit 伴奏,要 Sigrit 唱出她寫的歌,最後奪得冠軍,一個快樂的結局。

Black Panther: Wakanda Forever

一開始就是 T’Challa 不好的消息,他快死了,妹妹舒莉急著想做出心形藥草來救哥哥,但生命就是這樣,說走就走,舒莉沒能來得及做出藥草。事實上,做出藥草,也不一定能救回 T’Challa,人都會這樣,會歸咎與自責,舒莉很過意不去,她覺得是自己不好。時間很快的過了一年,王后來找舒莉,找他出去走走,王后已經釋懷了,她知道自己的女兒還沒,想開導她。突然,海底人出現。

聯合國剛發現海底也有汎合金,想作進一步調查,卻被攻擊,聯合國以為是瓦干達幹的。Namor 帶領的海底人也有汎合金,他們並不想被陸地人發現,所以想找出來探索海底汎合金的機器是誰做的,所以才來找瓦干達,要瓦干達找出那個人。瓦干達調查以後,知道機器是莉莉威廉斯做的,就派人去找了他。要帶莉莉回去瓦干達的路上,Namor 就帶人把他們劫走了。在海底,舒莉跟莉莉了解了 Namor 等海底人的由來。後來因為在處理事情的立場不同,大家意見有了分歧, Namor 海底人不想被發現,跟瓦干達起了爭執,兩邊就這樣一發不可收拾。王后因為這次的爭執,死掉了,舒莉很生氣,很努力的研究新型藥草。透過從 Namor 那邊拿到的手鍊,她找到了做出心型藥草的方法。舒莉吃了心型藥草以後,見到了他的堂哥,堂哥跟他說了,你自己明白為什麼會看到我,舒莉很驚訝,也很生氣,就醒了。

接下來,舒莉成為了繼任的黑豹,跟 Namor 展開對決,兩邊打的難分難解。打到後來舒莉打贏了 Namor ,她放下了要復仇的心,放過 Namor ,只是要 Namor 海底人不要再打瓦干達,Namor 答應了,舒莉同時也答應,會對 Namor 海底人的事情保密,不讓人類知道這件事情,就這樣,事情算是圓滿落幕。

Shell Script 最佳實踐

來源:Shell Script Best Practice

這篇寫的很好,整理並摘錄裡面的內容

  1. 用 bash,不要用 zsh / fish
  2. 一開頭的 Sha-Bang 統一都寫 #!/usr/bin/env bash,這樣可以確保都是用相同的 shell 來執行,我自己是都寫 #!/bin/bash
  3. 副檔名用 .sh
  4. 第二行寫 set -o errexit,只要裏面有一行錯誤,就離開,不要繼續。
  5. 第三行寫 set -o nounset,只要有未設定的變數,就離開,不要繼續。
  6. 第四行寫 set -o pipefail,只要 pipe 過程中的指令有錯誤,就離開,不要繼續。
  7. 加上判斷 TRACE 環境參數是否存在的腳本,當有設定這個環境變數時,就加上 set -o xtrace,這可以幫助除錯。
  8. 儘量使用 [[ ]]取代 [ ][[ ]]是 bash內建的關鍵字,基本上作用跟 []或 test 一樣,可以減少額外消耗,而且有更多功能。
  9. 存取變數時,前後都加上雙引號。
  10. 函式裏面用 local 宣告變數。
  11. 加上 -h--help來說明自己怎麼使用。
  12. 印出錯誤訊息時,要導向到 stderr :echo 'Something unexpected happened' >&2
  13. 呼叫指令若有帶參數,最好帶長的,例如用 --silent代替 -s,這樣可讀性比較高。
  14. 一開始就切換到腳本的目錄,例如: cd "$(dirname "$0")" 我想這個應該是要確定腳本所要作用的目錄,所以加上註解,或是印出當前所在目錄,都對於後續維護的人會很有幫助。
  15. shellcheck來檢查腳本

作者有提供一個範本,可以直接複製來修改:

#!/usr/bin/env bash

set -o errexit
set -o nounset
set -o pipefail
if [[ "${TRACE-0}" == "1" ]]; then
    set -o xtrace
fi

if [[ "${1-}" =~ ^-*h(elp)?$ ]]; then
    echo 'Usage: ./script.sh arg-one arg-two

This is an awesome bash script to make your life better.

'
    exit
fi

cd "$(dirname "$0")"

main() {
    echo do awesome stuff
}

main "$@"

基本上就包含了前面所提到的重點,這裡額外一提的是有 main,這對於理解腳本來說,也是很重要的事情。

巧用 ps 找 CPU 用量最高跟記憶體用量最高的程序

因為還蠻常用的,就紀錄起來,之後就直接複製了。

ps aux --sort -%cpu | head -n 10
ps aux --sort -%mem | head -n 10
ps -eo pid,ppid,cmd,comm,%mem,%cpu --sort=-%mem | head -10

這邊要注意的是,MacOS 的 ps 跟 Linux 的 ps 不一樣,沒有 –sort 這個參數,MacOS 是用 -r 跟 -m 來做排序。

ps aux -r | head -n 10
ps aux -m | head -n 10

參考資料

從 proc 找 IP

一般來說,在安裝完 Linux 都會有 ifconfig 或是 ip 指令可以查詢主機的 IP。在容器環境裡,會因為要節省容器映像的空間,就不裝這些指令了。那要怎麼查 IP 呢? 可以從 /proc 來查詢。

cat /proc/net/fib_trie
cat /proc/net/fib_trie | grep "|--"   | egrep -v "0.0.0.0| 127."

就這樣,蠻簡單的。

參考資料