怎麼回事?我怎麼會重新愛上CLI的?

當你有一定的年紀之後,話就會愈說愈小聲。雖然我清楚地明白這個道理,但每次發生在自己身上時總是印象深刻。

常看這個blog的人應該都知道,我不太喜歡CLI(Command-Line Interface),除了因為現在的圖形化介面其實大多都做得很完善,加上我從小討厭背指令,實在記不得要完成某個動作的時候,該在鍵盤上敲下什麼…而且更主要的原因是,我經歷過那個只有CLI沒有GUI(Graphical User Interface)的年代,那個時代的工程師天天跟黑底白字(或綠字)的螢幕為伍,花上數小時在鍵盤上敲打著別人看起來完全沒有意義的文字…

我也不例外,副作用之一當然是練就了超快的打字速度…但其實頗為辛苦。所以當GUI出現的時候,我和很多那個年代的工程師一樣,是大聲頌揚大力鼓吹的,並且對CLI棄之如敝屣。

一晃眼30多年過去了…

最近這幾年,CLI居然又成為主流,我在心理上其實很難立刻接受。(你會發現人的既定印象與觀念有時真的很死板,一旦形成後,無法改變到難以想像的地步)我始終認為,只要在有設計良好的GUI的前提下,我根本沒什麼理由需要跟以前一樣一天到晚用力敲打鍵盤!

直到…

最近因為上課的關係,需要實現『金絲雀佈署』,這導致我常常需要一口氣建立兩三個Web Site Slot,並且在不同的slot分別各自佈署網站(這還只是暖場)。然後,為了實現金絲雀,我必須要先在第一個網站佈署新版,然後透過Web App的traffic management改變流量,把10%流量導入第一個站台,依此類推,直到最後一個站台佈署完新版…

第一次,我用Azure Web UI用到覺得很X。

當我發現,過程中我少做(或做錯)了一個步驟,導致設定配置有錯誤的時候,為了讓整個Lab環境乾淨且順暢一點,我發現我得要重來 >_<。

佈署到第三輪之後,我開始覺得這樣在網頁上用滑鼠點來點去實在不行。

就在這一刻,我竟然毫不猶豫的打開了powershell:

其實過去就安裝過了azure cli,所以我隨手把建立網站的指令打了進去,不夠確定的話還可以請AI神燈阿拉丁幫忙查詢(在上面,有看到嗎,哈)…後來發現,我與其這樣一行一行打,不如用VS Code編輯。接著開了VS Code,想到印象中有一個azure cli套件,可以有intellisense的功能,還可以在VS Code裡面直接run Azure CLI,所以我把套件裝了起來…

然後沒兩下我寫完了重建Web Site和Slot的指令,來回測試之下,一口氣重複做了近10次上面這個Lab…建立resource group, 建立網站, 建立slot, 佈署三個網站,再佈署新版,切換流量,測試,刪除resource group…

做到第五次時候我懂了(其實我早就懂了,只是不想承認),這些動作沒有CLI不行。

我不可能在網頁上連續操作10次這些動作,首先步驟很容易搞混,隨便順序上的錯誤就可能讓結果不同。其次,使用GUI我得要等網頁的回應時間,它比起CLI根本慢太多,再來,這些動作要在課堂上帶著學員跟著step by step一起做,用GUI大概得多花個半小時,但CLI只需要給學員指令碼就行…

這還只是做十次,如果,我是IT維運人員,每天都要做個十幾次呢?我能用GUI嗎?不,我會瘋掉…終於,我徹底接受必須使用CLI的原因了。

其實,我早就知道CLI的優點,只是我不常碰到那些情境吧。咦? 再仔細想想,我真的碰不到這些情境嗎? 我發現,我過去其實是下意識地有點刻意避開那些會讓我用到CLI的情境,好讓自己維持一個繼續討厭CLI的理由!!!

我突然發現,我或許不是因為覺得它不好用而討厭它,我可能是為了想繼續討厭它而下意識的選擇不去用…人的大腦還真是詭異啊。

直到有一天,環境逼著我非翻出這個解決方案,我才承認,這個過去被我討厭的對象,其實非但並不討厭,而且還能夠在許多關鍵時刻幫上我的忙…然而我僵化的既定印象,卻讓我把這個解決方案一直排除在選項之外…

這根本是我自己天大的損失。

轉念一想,一個CLI是如此,其實生活當中許多事情不也是如此嗎?自己討厭的那群同事、那些政黨、那個該死的OOXX…是不是其實也是我刻意選擇的價值判斷? 是不是他們現在的真實的狀況其實也早跟我過去在腦袋裡植入的既定印象有所不同?如果,我能讓(強迫)自己更客觀一點,是不是或許能夠更早發現對方的優點,以及我可以和對方合作的機會?

想到這裡,我更無懸念的繼續用VS Code把Lab剩下的指令打完…『或許明天中午,去找那個很久沒說話的同事吃個飯吧...』我心裡這樣想著。

留言

這個網誌中的熱門文章

使用LM Studio輕鬆在本地端以API呼叫大語言模型(LLM)

VS Code的字體大小

使用 Dify 建立企業請假機器人

使用Qdrant向量資料庫實作語意相似度比對

使用C#開發LineBot(3) - 使用LineBotSDK發送Line訊息