技術記錄

GitHub Action 自動化部署 Hugo 網站

在今天之前,這個 blog 是用 Wercker 做自動化部署,當時對於 CI/CD 工具沒有太多比較,就直接使用了。

在 2018 年底,GitHub 公開了他們的自有 CI/CD 工具 GitHub Action,並於 2019 年底正式推出。這個工具經過了兩年多的發展,如今也有一定成熟度,社群有很多相關的工具發展起來,當然也不乏 Hugo 的自動化部署。如果 repo 使用 GitHub,那整合 GitHub 自家 CI/CD 當然是最方便的。

Python 實作 Disjoint Set 與 Union Find

使用情境 在 Leetcode 寫到一題: 1319. Number of Operations to Make Network Connected 現在有 n 台電腦以及一些 cables 將電腦點對點連接,問需要移動至少幾條 cable 才能讓在所有電腦連成單一網路。 以 graph 的角度來看,電腦就是 nodes,cables 就是 edges。 要將整張 graph 連接起來,至少需要 n-1 個 edges。若一個 graph 裡面有超過 n-1 個 edges,剩下的就是多出來的 edges,可以供我們拿來移動的 edges。 所以第一件事就是要檢查 edges 數量 >= n-1。 當檢查完畢之後,我們有至少 n-1 條 edges,一定可以用這些 edges 將所有 nodes 連接起來。 因為題目只問需要移動幾條 edges,我們可以假設我們

Clean Code 心得

因為公司有這本書的中文版,在各種等待時間,慢慢把這本看完了,同時也一邊寫些自己認為的重點。 其實我覺得 Clean Code 適合的閱讀對象,是從來沒有接觸過任何 Coding Style 的人。 如果你跟我一樣,有和別人合作過,平常有遵守一些準則(例如 PEP8),或是使用包含 Styling 的 linter (pylint / eslint / rubocop …),這本書還是能找到能學習的地方,例如命名原則、封裝的部分、模組的拆分、測試撰寫等等,這些開發準則以及自動化的 formatter 沒辦法告訴你的部分。 也難怪第一次聽到別人推薦大家看這本書的時候,把它歸類在「選讀」,卻又說裡面的內容很重要。因為很多觀念在現在

用 zsh + zim + powerlevel10k 讓你的 Terminal 潮又快

在開始之前,還是要先知道為什麼需要這些工具,就先上圖吧:

zsh + zim + powerlevel10k demo

  • 在 Terminal 內顯示你想要的資訊:git / 時間 / 自訂路徑 / conda / rvm / nvm / 執行結果顯示等等,應有盡有。
  • 更方便的自動補完,可以直接用 tab 或方向鍵選擇想要補完的結果。
  • 可以輸入部分指令,就顯示之前打過的指令,也可以用方向鍵上下搜尋