為了要把系統架構解耦,改為異步分散式處理,有時會決定使用 Message Queue 的設計來達成目標,其指的是應用程序之間通過在 Message Service 而不是直接調用彼此通訊。對於其落地的產品,常見的開源工具有 Kafka、RabbitMQ 等等或者雲端服務 GCP-Pub/Sub 和 AWS-SQS 等等。作為兩個子系統之間的通信中間層,會需要依靠協定保持有序且有效率的方式實現資訊交換,而目前廣泛使用的協定有 MQTT 和 AMQP ,以下也會簡單介紹一下。


為了要把系統架構解耦,改為異步分散式處理,有時會決定使用 Message Queue 的設計來達成目標,其指的是應用程序之間通過在 Message Service 而不是直接調用彼此通訊。對於其落地的產品,常見的開源工具有 Kafka、RabbitMQ 等等或者雲端服務 GCP-Pub/Sub 和 AWS-SQS 等等。作為兩個子系統之間的通信中間層,會需要依靠協定保持有序且有效率的方式實現資訊交換,而目前廣泛使用的協定有 MQTT 和 AMQP ,以下也會簡單介紹一下。

在軟體開發的日常中,Git 可以說已經是比肩「電腦」一樣基礎的存在了! 因此相應其周邊生態也非常豐富,有些擴展工具或實用網站蠻直得注意一下的,這邊文章就簡單記錄一下:

安裝完 Git 之後,可以使用
git configCLI 取得 Git 設定組態參數,git config 是一個記錄了 git 操作的所有基本檔案資料。 比方說 :
- git init 創建時預設的 branch 名稱
- 寫 git commit 的顯示模板
- 當 push github 時的使用者資料
等等設定都可以在 git config 中調整修改。而在不同專案中,可能需要使用不同的 Git username 和 email, 例如個人專案中想使用「私人 Email」 ; 而在公司專案中則需要使用「公司 Email」,若每次切換專案時都要手動更改 Git 配置會十分麻煩。 這時 Git Include 可以根據資料夾自動套用對應的用戶設定,而無需每次手動調整。

軟體開發有許多的已經定義的管理工作流程,例如說 Git Flow、Github Flow、GitLab Flow 等等,而這些共通點是都以 Branch 來區分不同階段的開發狀態 ; 在研發過程中,也經常需要在不同的 Branch 之間切換來處理不同的任務。這時
git worktree就很大程度派上了用場,它可以讓同一個 Git Repository 同時擁有多個工作目錄,且每個目錄綁定不同 Branch,各個工作樹之間是互相獨立的。這樣就不用在「 code 寫到一半 」時,遇到臨時需要切換到不同的分支作業,卻因為「 正在更動的檔案 」與「 目標分支上的檔案」有衝突而要另外處理,故
git worktree很適合拿來處理緊急 hotfix 或者另外的 code-review。

在現代開發環境中,熟練掌握各種工具的快捷鍵能顯著提升工作效率,本筆記整理了自己常用開發工具的基礎操作與進階快捷鍵,幫助更高效地進行開發工作。由於自己現在開發主要環境都是使用 mac os,所以快捷鍵會以 mac 的鍵盤配置為主,筆記會列出的重點工具為 :
MacOS TerminalVisual Studio Code (VSCode)Vim然後可能也會補充一些
Windows PowerShell和IntelliJ IDEA。在日常開發中可有意識的多使用快捷鍵來加深記憶,若遺忘時這裡可以快速查看筆記,鞏固快捷鍵的知識。

雖然使用了 Git 作為版本管理工具,但每個人對於分支的認知可能不同,故造成每次 commit 到不同分支之後,要合併要回哪個分支可能會有歧義,這時就可參考一些已存在的 Workflow 規範,只要團隊遵守這樣的 branch 的 commit 和 merge 規則,就可以有一致性。
每個 Workflow 規範都不太一樣,常見有: Git Flow、GitHub Flow、GitLab flow ,主要都是希望就算 Project 越來越大協作人員越來越多,也能有效管理 Git Branch,那這邊會以 GitHub Flow 為主要說明,但也會筆記分析了解其他不同策略的優缺點。

