從 JFrog Artifactory 下載 artifact

登入 JFrog Artifactory 以後,進入自己的 Profile,然後點 Generate API Key,取得 API Key。

接下來,就可以在 curl 裡指定 X-JFrog-Art-Api: <token> 這個 Header,這樣就可以下載 artifact 了。

例如

curl -H "X-JFrog-Art-Api: <toen>" -o commons-collections-3.1.jar http://localhost:8081/artifactory/jcenter/apache-collections/commons-collections/3.1/commons-collections-3.1.jar

參考資料

PowerShell-取得磁碟剩餘空間

朋友主機的作業系統是 Windows Server 2012,之後會定期去做維護,那連線因為懶得用滑鼠按鍵去一個一個看,所以參考網路文章,寫了個簡單的腳本來一次印出來。

這腳本我命名為 du.ps1

function Get-FreeSpace {
    param ([string]$path);
    $space = (Get-Volume -FilePath $path).SizeRemaining;
    return [int64]($space / (1024 * 1024)); # this would otherwise be a float
}

$freeSpace = Get-FreeSpace "C:\"
Write-Host $freeSpace, "MB" -Separator " "
$freeSpace = Get-FreeSpace "D:\"
Write-Host $freeSpace, "MB" -Separator " "
$freeSpace = Get-FreeSpace "E:\"
Write-Host $freeSpace, "MB" -Separator " "
Read-Host "Press ENTER to exit"

簡單說明如下:

  1. Get-Volume -FilePath "<path>" 是取得指定路徑的物件,然後取物件的 SizeRemaining 屬性。
  2. 因為單位是 bytes,所以除以 1024 變成 K,再除以 1024 變成 MB
  3. 用 Write-Host 印出來,因為找不到類似 printf 或 print 的函式。Write-Host 的 -Separator 參數是指定分隔符號,這邊我用 ” ” 當作分隔,所以印出時,就會是 “100 MB” 這樣子的字串。
  4. 最後用 Read-Host 等按鍵,因為之後我會用滑鼠點一點來執行,若不加這行,執行完,視窗就會消失。

開啟 PowerShell 終端機視窗來執行 .\du.ps1 時,會有錯誤訊息,說不允許執行。這時候需要先執行下面這行,才能執行

Set-ExecutionPolicy RemoteSigned

參考文章

電影流水帳(2022/05/01~2022/05/15)

Humans - Reboot Recharge Rebel - Bus Poster 1189
Gemma Chan
  • Everything Everywhere All at Once (IMDB, Wikipedia),台譯:媽的多重宇宙。
  • Eternals (IMDB, Wikipedia),台譯:永恆族。

Everything Everywhere All at Once

蠻有意思的一部電影,因為眾多影評都給了好評,所以趁著勞動節就去看了。

這是講母女和解的故事。媽媽撐起了這個家,但實際上這個家已經要分崩離析,女兒不想待在家裡,丈夫想離婚,父親則是失智,經營的洗衣店也因為被查稅的關係,可能要倒閉了。就在這個要命的時刻,世界發生了變化,其他宇宙的丈夫前來,導致媽媽所看到的世界發生了變化。經過一番冒險以後,媽媽慢慢了解到世界並不是自己所以為的那樣子,其他宇宙的丈夫前來則是因為女兒。經過幾番波折,媽媽認知到自己想要的是維繫家庭,也認知到自己所用的方法不對。所以她改變了自己,這個改變解決了多重宇宙的問題,也融化了自己跟女兒之間的鴻溝。

故事的最後有了快樂的結局,這是一部蠻奇幻的電影,也是一部值得自己去省思的電影。很多時候,做一件事情的方法不只一種,面對事情的態度也不只一種,有時候需要多想想,有時候需要多試試,這些都可能會帶來不同的結果,事情的結果不一定只有一個,唯一不變的是世界持續在變。

Eternals

這部電影跟之前漫威的風格不太一樣,雖然特效蠻多的,但是故事不太一樣了,這次故事講的是背叛跟愛。

簡單說,永恆族是保姆,他們扶植星球上的生命,讓他們有足夠的智慧,以便能讓天神族所佈下的種子能吸取這星球的力量而茁壯。天神族同時也創造出另外一個種族,變異族,讓永恆族能有一個目標能持續的運作。在天神族的種子茁壯以後,永恆族會被洗腦,並派到另外一個星球去。

地球上的永恆族在打倒變異族以後,因為沒接收到天神族的指令,就融入了人群生活。有一天,變異族再次出現,永恆族 Sersi 則發現這變異族居然有了新的能力,於是 Sersi 踏上尋找其他永恆族的旅程。隨著永恆族慢慢集結,真相也慢慢浮現,他們知道了永恆族要做的事情,也就是地球即將要因為「神現」而滅亡。跟地球人友善的 Sersi 決定要阻止地球滅亡的命運,但永恆族裡的 Ikaris 不贊同,就分為兩派,打了起來。到最後,Ikaris 因為之前對 Sersi 的感情改變了念頭,一行人終於阻止了「神現」。隨後 Ikaris 自盡,有些人決定留在地球,有些人則決定進行星際旅行,去告知其他永恆族這件事情。

tuned-套用適合的系統設定

RHEL 跟 Ubuntu 都有提供這個系統服務,可以啟用這個系統服務來微調系統的設定,以達到預期的效能。

安裝

印象中,RHEL8 預設已經安裝,若沒有,可以用以下指令來安裝

yum install -y tuned

Ubuntu 可以使用以下指令來安裝

sudo apt install tuned

使用

使用相當簡單,啟動系統服務以後就可以了。

systemctl start tuned

之後就可以使用 tuned-adm 來做一些操作,這邊先說明一下什麼是 profile 。

profile 就是一組針對特定用途所提供的系統設定,例如網路最佳化或是資料庫最佳化等等的,不同的用途要調整的設定也不一樣。在啟動 tuned 以後,會啟用預設的 profile ,以 ubuntu 來說,是啟動 balanced 這個 profile。

tuned-adm 有以下子指令可以使用,以進行 profile 的操作:

子指令用途
list列出所有可用的 profile,每個 Linux 發行版所提供的 profile 都不太一樣。
active列出目前啟用的 profile
off關閉所有調整
profile切換到指定的 profile
profile_info顯示指定的 profile 資訊
recommend顯示建議的 profile
verify檢查
auto_profile自動選擇 profile
profile_mode顯示目前是自動選擇 profile 還是手動指定 profile

如果要客製化自己的 profile,也是可以的,這邊可以參考 /usr/lib/tuned 裡的 profile 來做複製跟改動。

電影流水帳(2022/04/16~2022/04/30)

Mary Elizabeth Winstead
Mary Elizabeth Winstead

The Shape of Water

導演是拍「環太平洋」跟「地獄怪客」的吉勒摩·戴托羅,這次題材跟「羊男的迷宮」一樣,是走怪誕路線的。但,故事是個愛情故事。

清潔女工為一個實驗室打掃,實驗室裡住著一個水底的生物,因為天天接觸,她對這個水底的生物有了感情。研究這個生物的博士是蘇聯人 (還是納粹?我忘了),他知道美國這邊想要處理掉這個生物,於是他很積極給祖國建議,希望運回祖國去研究,但祖國那邊不聽,他得知清潔女工想救出水底生物,就轉而幫助她。清潔女工透過博士幫忙,算是順利的將水底生物帶回家裡。研究室裡的生物不見了,研究室裡的高層介入調查,經過一番調查,發現博士不單純,也輾轉找到可能是清潔女工做的。但這段期間,清潔女工跟這個水底生物有了更進一步的發展,也有了更深的牽絆。清潔女工也知道不能留生物太久,即將到來的雨季是最好的時間點,就決定了雨季的那天進行。在那天,他們一起到了港邊,追查的人也循跡而至,開始一番拉扯。最後,清潔女工死了,追查的人也死了,水底生物帶走了清潔女工,賦予她新的生命與水底生活的能力,故事就這樣結束。

Kate

女殺手凱特的故事,現在想起來沒什麼特別的亮點,當時是衝著女主角去看的。

凱特某次暗殺,殺了一個女生的父親,這個女生的父親跟幫派有關係,凱特因為這小女孩的關係,有點內疚。匆匆經過數年,凱特想退了,就跟他的經紀人說,這次做完就退了。出任務前夕,她去酒吧喝酒,跟某個人發生了關係,想不到就因為這樣,她中毒了,是因為放射性元素而導致的毒,整個人變得虛弱。她必須要在有限的時間內去釐清為什麼自己會中毒,又是誰害的。在這個追查的過程裡,她認識了一個女孩,想不到就是之前那個女孩,也因為這樣,她發現自己捲入黑幫奪權的陰謀裡。追查到最後,她發現合謀害她的人裡,居然有自己的經紀人。她很心痛,但也沒時間了,於是她用最後的力氣幫了女孩,也殺了自己的經紀人,最後就這樣。

mysqldump/pgdump 連線密碼的存放

寫資料庫備份腳本時,會避免把密碼放在腳本裡,免得密碼流出去。

這時候密碼要藏在那邊呢?

postgresql

postgresql 的 pg_dump 預設會去讀取 $HOME/.pgpass 檔案,所以可以把帳號跟密碼放在這邊,腳本裡使用 pg_dump 進行備份時就不需要額外用參數指定。

.pgpass 檔案的內容是

hostname:port:database:username:password
  • hostname: 資料庫主機
  • port: 資料庫主機的 port
  • database: 資料庫
  • username: 連線的使用者帳號
  • password: 連線的使用者密碼

使用的時候,就不需要指定密碼了

pg_dump -h <db_host> -U <db_user> -F c -f $dump_file <db_name>

mysql

一般備份 mysql 資料庫會使用 mysqldump,mysqldump 有個參數 --defaults-file=<config_file>

所以可以用這個參數來指定,先在 $HOME/.config 資料夾下新增 backup.my.cnf 檔案,內容如下

[mysqldump]
user=<db_user>
password=<db_pass>
  • <db_user>: 放連線的使用者帳號
  • <db_pass>: 放連線的使用者密碼

至於主機的部份,可以用 mysqldump 參數指定,例如

mysqldump --defaults-file=$HOME/.config/backup.my.cnf -h <db_host> <db_name>

參考資料

Ubuntu LivePatch

Ubuntu LivePath 是一個動態修補 kernel 漏洞的機制。在傳統作法上,如果修補、更新了 kernel ,就一定要重新開機,讓新的 kernel 生效才能真正的修補漏洞。LivePatch 則提供了一個不需要重開機的方法,他會動態的修補在目前的 kernel 裡。在 ubuntu 的 How kernel livepatching works 有圖片說明。

Canonical 很佛心的提供了 Personal token,只要去 ubuntu.com 註冊,就可以取得。

取得 token 以後,就可以使用以下指令啟用

sudo ua attach <token>
sudo ua enable livepatch

啟用後,若想知道目前套用了哪些修補,可以用 canonical-livepatch 指令察看

canonical-livepatch status

若是公司使用,會需要購買企業訂閱。若是想把修補放到公司內部來節省頻寬,可以參考 Livepatch on-prem 的說明來進行。我大致看了一下,說是會把修補放到 S3 上面,離線的作法或許可以架設 minio 來代替 S3。這部份因為沒用到,就先跳過不看了。

SSH登入使用2FA驗證

Ubuntu 跟 RHEL 的設定方法大同小異:

  • Ubuntu: sudo apt install libpam-google-authenticator
  • RHEL: sudo yum install -y google-authenticator qrencode

步驟1

google-authenticator 產生所需的設定檔。

產生出來的檔案會在 ~/.google_authenticator

步驟2

設定 /etc/pam.d/sshd

加入

auth required pam_google_authenticator.so

步驟3

在 SSHD 設定檔 /etc/ssh/sshd_config 裡找到 ChallengeResponseAuthentication ,將其後的值改為 yes

ChallengeResponseAuthentication yes

修改完成後,重新啟動 sshd。

有陷阱!!

大致就這樣,在 RHEL8 會踩到 SELinux 的雷,這邊要修改 /etc/pam.d/sshd 的設定,將之前加入的那行改為

auth required pam_google_authenticator.so secret=/home/${USER}/.ssh/.google_authenticator

然後把 ~/.google_authenticator 檔案搬到 ~/.ssh/google_authenticator

處理一下 SELinux 權限

restorecon -Rv ~/.ssh/google_authenticator

然後一樣,重新啟動 sshd

圖形介面

參考資料裡的後半段有關於 GUI 登入的設定,這邊我就沒試過了。

參考資料

電影流水帳(2022/04/01~2022/04/15)

BLACK WIDOW
Yelena
  • Black Widow (IMDB, Wikipedia),台譯:黑寡婦。
  • Shang-Chi and the Legend of the Ten Rings (IMDB, Wikipedia),台譯:尚氣。

Black Widow

期待很久的故事,可惜之後因為角色設定的緣故,可能不會有續集了。故事是在內戰之後所發生的,那時黑寡婦 Natasha 幫助美國隊長,所以被通緝。在通緝跑路時,她遇到之前被設定為妹妹的 Yelena,兩人重聚,大打一場,然後 Natasha 發現以前黑寡婦這個組織還存在,妹妹 Yelena 也才剛脫離組織掌握。

在很久以前,Natasha 為了脫離黑寡婦組織,出賣了黑寡婦組織首腦的形蹤給神盾局,因此而脫離。但組織現在還存在?! Natasha 決定跟 Yelena 找出真相,開始循線追蹤。她們找到之前被設定為父親跟母親的家庭成員,然後了解了整個真相,在家庭會議之後,她們決定聯手摧毀黑寡婦這個組織,避免再有更多女孩受害。於是,她們設下陷阱,故意被抓走,才知道黑寡婦這組織總部在空中的一個堡壘。經過一番惡鬥之後,終於把之前假死的黑寡婦首腦消滅。黑寡婦組織所有人都脫離了控制,大伙躲了起來,看起來是 Natasha 跟 Yelena 協力運作這組織的樣子。

然後片尾的彩蛋接續到無限之戰跟終局之戰那邊,Natasha 掛了,Yelena 在悼念 Natasha 時,有個人前來跟她接觸就沒了。

Shang-Chi and the Legend of the Ten Rings

故事蠻輕鬆的,穿插的笑點不錯,基本上是個愛情故事,真正的主角不是尚氣,而是尚氣的父親-文武。

尚氣逃家以後來到美國,在美國做泊車小弟,認識了 Katy,成了好朋友,他們關係像是友達以上,戀人未滿那種。某天,兩人搭公車上班時,尚氣被攻擊,身上一個首飾被搶走,因為這樣,尚氣顯露了他的功夫,Katy 大為吃驚。尚氣當下決定回去澳門找妹妹夏靈,因為夏靈身上也有一個首飾。尚氣跟 Katy 回到澳門,很快的就找到夏靈,尚氣跟夏靈打了一架,打完說明事情經過。接著兩人又被襲擊,被老爸的人帶回家裡。這時,兩人才知道老爸太愛媽媽,有點失心瘋,一直以為媽媽還活著,是在媽媽老家那邊的一個被封印的山洞裡。拿尚氣跟夏靈的首飾就是為了要找到媽媽的老家,進而打破那山洞,救回媽媽。

尚氣跟夏靈聯手搶先回到媽媽老家,跟媽媽家族的人碰面,說明父親將會過來。沒多久父親就帶人過來開打了,文武手上有十環,果然厲害,突破重圍打開了山洞,山洞裡被封印的怪物跑了出來,文武這時才認清事實。文武將十環傳給了尚氣以後,就死去。尚氣使用了十環跟媽媽家族這邊的力量,將怪物消滅,恢復和平。

vim錄按鍵順序

這用 Google 查好幾次了,決定記錄一下。

在使用 vim 編輯時,難免會遇到重複性很高的工作,vim 有個功能,就是可以錄製按鍵順序。錄製完成以後,可以再次播放剛剛錄製的按鍵順序,這樣就可以省下很多苦工。

要開始錄製,先確定在 normal mode 下,按下 q ,接著按下 a ,這個 a 是 register 的意思,簡單的說,是個代號,表示把按鍵順序放到 a 這個 register 裡。如果你要錄製其他按鍵順序,可以用 b, c, d, e … 以此類推。

接下來,就是要按下你要記錄的按鍵順序,例如移到行首,換掉第一個字元等等的。

等到順序都錄製完了,回到 normal mode ,按下 q 停止錄製。

之後要播放按鍵順序時,就是按下 @ ,然後按下 a ,這就表示要播放 a register 裡的按鍵順序。要重複播放上一次的按鍵順序,用 @@ ;要重複播放 20 次,就用 20@

參考資料