軟體工程師每天都會用 Git 進行版控,雖然是經常使用,但有一些差異可能還真的沒有好好想過,所以前面有文章補充了一些名詞解釋和功能比較。Git 使用會遇到這是各樣的情形,雖然大部分都千篇一律,但有一些實際面對到的情況,是蠻值得記錄下來的! 所以這篇文章就筆記一下做一些 CLI 操作補充,另外也把一些踩坑的筆記統整。若以後有想到類似情境,就直接來參考這篇文章。


軟體工程師每天都會用 Git 進行版控,雖然是經常使用,但有一些差異可能還真的沒有好好想過,所以前面有文章補充了一些名詞解釋和功能比較。Git 使用會遇到這是各樣的情形,雖然大部分都千篇一律,但有一些實際面對到的情況,是蠻值得記錄下來的! 所以這篇文章就筆記一下做一些 CLI 操作補充,另外也把一些踩坑的筆記統整。若以後有想到類似情境,就直接來參考這篇文章。

一般來說 Git 的操作會涉及到幾個區域 :
- 硬碟區 disk : 檔案存放的一般資料夾,也會被稱為 workspace
- 暫存區 staging : 保存
git add紀錄的地方,也被稱為 index- 本地端 git local : 保存
git commit紀錄的地方,也被稱為 repository- 遠端 git remote :
git push的倉儲,如 Github、Gitlab 等等而各個之間狀態變化的簡單關係如下圖所示 :
以上就是最基本的使用和定義。

SSH 是 Secure Shell 的縮寫,為一種通訊協定,會對裝置之間的連線進行驗證和加密,安全地傳送 command。通常用於遠端控制伺服器、管理基礎架構和傳輸檔案。SSH 是在應用層和傳輸層上執行的,透過稱為公開金鑰加密,「public key 可供任何人使用」 ; 另一個金鑰為「private key 由其擁有者保密」,兩個 key 相互對應。此外傳輸的數據是經過壓縮的,所以可以加快傳輸的速度。並且許多作業系統,包含 macOS、Linux 都天然支援。

Dictionary 是 Python 用來儲存 key → value 的對應關係,其他語言類似的資料結構為 :
HashMap(Java);Object/Map(JavaScrip);Map(Go)等等,以下筆記一些 Dictionary 小觀念和使用時機。注意 Dictionary 底層是 hash table,所以其 key 必須是不可變的 (Immutable),這要特別注意 ; 另外自 Python 3.7+ 起,Dictionary 有保證會「保留插入順序」,但還是盡量不要依賴這個行為會比較好。

我們都知道 Python 是一個動態的語言,代表每一個 variable 是什麼型別是在 runtime 的時候決定的,雖然很靈活可是當 code 量級上去之後因爲類型不正確引發的錯誤也會逐漸增加。但 Python 也是可以做到型別要求的,就是使用 「 Type Hint 」 或者叫 「 Type Annotation 」,中文稱呼蠻多種的例如「型別標註」、「型別提示」等等。 若有寫 Type Hint 的話,比較現代的 IDE 都會有一些自動顯示或補全輔助 :
Python 的 Type Hint 是從
3.5開始萌芽逐漸引入直到現在,故有一些發展的歷史脈絡和演變,有一些寫法也漸漸更替,故簡單介紹和分析一下。

Python 的 Coroutine 發展已經逐漸穩定成熟,已經成為了提升 Python 程式效能的優秀解決方案之一,在之前簡單介紹 Coroutine 和 await/async 時,我們在範例 code 中一直有用到一個 Python buildin 模組
asyncio,它提供了一套完整的工具和接口,用於建立非同步應用程式,其核心是 Event-Loop,會追蹤所有註冊的任務,並根據任務的狀態調度它們的執行。 故接著來了解 Event-Loop 和其工作的執行單位 Task 吧 !

