Vibe Coding 與人類的時代

from Pixabay

任何人類都能使用魔法的時代要到來了——《葬送的芙莉蓮》漫畫第 53 話 | 人類的時代

有了強大的 AI 輔助 ,寫程式再也不是軟體工程師的專屬。

如此的時代巨變,首先讓我聯想到的,就是「芙莉蓮」中的這段劇情。

不過把這個比喻與感受表達得最好的,當屬財經作家王伯達的這篇臉書文

他寫道:

AI 讓更多人,用更容易的方式使用程式語言與複雜軟體。

這讓我想到芙莉蓮的老師,弗蘭梅。

她說服了人類的皇帝,讓人類得以開始研究魔法,魔法不再是個禁忌,開啟了人人有魔法可以練的年代。

顯然,在我這個軟體工程師眼中,AI 就像芙蘭梅,把原本高門檻的知識、技術變成大眾能輕易接觸的工具,讓所有人都有機會參與創造

本文聊聊我作為一個軟體工程師,如何看待 AI 普及後這個「魔法時代」。

GitHub Actions 入門:自動化 Lint、Format 與 Type Check

📌 這是 WeaMind 系列 的第 2 篇。
本系列以真實世界專案為背景,記錄重要技術實作與經驗分享。

從這篇文章開始,我將啟動一個新的系列。

搭配我正在實作中的 Side Project——WeaMind,寫下一篇又一篇的技術實作心得。

讓我們一起在專案中成長,並獲得更多的開發樂趣。

如標題所示,本文主要介紹 GitHub Actions。不過在此之前,我們得先對 CI 有初步的了解。


什麼是 CI?為什麼需要 CI?

CI 是「Continuous Integration」的縮寫,中文是「持續整合」。

它的核心概念是:當開發人員提交程式碼時,系統可以「自動執行一系列預先定義的檢查流程」,例如檢查程式碼是否與現有程式相容、是否能正常運作。

在軟體開發流程中,我們常常要處理很多重複但又不可忽略的工作:檢查程式碼格式、執行靜態分析、跑單元測試,甚至產生 API 文件等。

如果每次提交都要手動跑一輪,既麻煩又易忘。

這時 CI 就派上用場了。它能在每次 push 或開 PR 時(或其它事件),自動幫我們做這些事,讓問題提早浮現,使得開發流程更加穩健,也能節省大量重複性勞動。

yadm 教學:實作 macOS 與 Linux 的 dotfiles 跨平台同步

from Pixabay

兩年多前,我寫了這篇〈是時候同步你的 dotfiles 了——我選擇 yadm〉,當時的主要動機是想要在多個 Linux VM 之間同步設定檔。

該文章介紹了「何謂 dotfiles」(後端工程師應該都很熟悉),以及我認為的「dotfiles 同步工具」的兩大流派:

  1. Symbolic Link。
  2. Bare Git。

然而,兩年之間,我幾乎很少在文中提起它。

事實上,我這段期間使用的 yadm 的頻率確實不高

但這並不代表我沒有同步 dotfiles 的需求,只是真正的核心需求在於跨平台,尤其是 macOS 與 Linux 之間。

若僅是在不同 Linux VM 之間同步,就顯得有點小打小鬧,實用性不足


我日常開發主要都在 Mac 上,而 Mac 與 Linux 的設定落差雖不大,但絕不會完全相同——這讓單一套設定難以通用。

比如我的 Mac 上有一些 Homebrew 的環境變數,在 Linux 上無用武之地不說,還可能造成執行錯誤。

總之,若不解決跨平台問題,那 yadm 的價值將發揮不到一半。

上個月我終於鐵了心,把這件事搞定了!

做完只覺得,我實在太晚開始,跨平台同步的價值非常巨大且實用

因此,儘管使用這類工具的人並不多,我也要寫下這篇文章,供有志之士參考!

Gandi 惹惱了我😡——怒將域名轉至 Dynadot

我從 2018 年開始租用kyomind.tw這個域名,至今已 7 年。

每年 9/1 是它的續約時間。過去多年來,價格大致穩定,折合新台幣大概 700 多元。

直到去年續約,我被信用卡帳單上的金額嚇了一跳:1260 元

這是什麼情況?

一度以為是哪裡被誤收,或是信用卡出了問題。但查了帳單、比對後台紀錄,確認那筆款項的確是域名供應商 Gandi 對我的 .tw 域名的續約費用。

當下覺得很不對勁——域名費用可以這樣說漲就漲嗎?而且幅度也太誇張了!


就這樣過了半年多,想想幾個月後又要續約了,1260 實在有點讓人卻步。

我們知道,域名在不同供應商之間,價格並不同。

而且!域名是可以移轉的

所以我決定查查,目前 .tw 便宜的地方有哪些——發現了 Dynadot 只要 18 美元!

而且,其他域名供應商,大概也只要二十幾美元左右啊,怎麼 Gandi 會特別貴?

於是我決定進一步弄清楚這到底是怎麼回事,這才發現,其實此時此刻,Gandi 的續約價格也只是台幣 700 多。

這讓我更加惱火了……

為 e2-micro VM 建立 SSH 連線:本機與 GitHub

不久前,我看完了朋友古古的電子報〈終身免費的 VM 服務!Google Cloud 免費方案分享〉,介紹 GCP 的 E2 Micro(產品代號:e2-micro)免費 VM。

簡言之,我們可以在一定資源額度與條件範圍內,免費使用 Google Cloud Platform 上的 Compute Engine 虛擬機器。

我對此深感興趣,因為它的規格比之前的 F1 Micro 好上一截。

F1 時代的 RAM 大約只有 0.6 GiB(約 600MB),有開發經驗的都知道,這在某些情況下,用起來會有點捉襟見肘😂

於是,我也跟著教學開了一台!免費的午餐怎麼能不拿呢?

附帶一提,對 GCP 不熟的人——比如我,請一定要照著教學來建立 VM,以免設定時有所遺漏,一不小心就被收費。

最後一塊拼圖

不過原來的教學只寫到 VM 建立完成為止,對於我們這些後端工程師而言,顯然還有一個很重要的基礎設定沒做——SSH 連線。

因此,我想補齊這剩下的部分,包含:

  1. 建立自己的 Linux 帳號。
  2. 建立本機與 VM 的 SSH 連線金鑰,並完成連線。
  3. 建立 VM 與 GitHub 的 SSH 連線,且能正常 clone Github 專案。

剛好我在之前文章〈Linux 上的 Python 開發環境設定〉中,略過了「設定 SSH 連線」環節——老實說只是因為我懶得寫XD

但仔細想想,這個流程我自己做了很多次,不如直接寫在文章裡,方便大家回顧。

雖說是寫給 e2-micro,不過,這些內容適用於任何 Linux VM。

本文就來補完這些步驟,並講述我對於這個免費 VM 的看法。

Imgur 封鎖台灣 IP,我把圖床搬到 Cloudflare R2

上個月中,我在寫部落格時,突然發現圖片上傳失敗,無論怎麼嘗試都無法成功。

我的寫作流程是用 VS Code 的 Markdown Image 外掛,透過鍵盤快捷鍵,直接把圖片傳到 Imgur 上,這個流程已經持續了好幾年,非常方便、順手。

但這次踢到鐵板了。

相關文章:Notion + VS Code:我的 Markdown 寫作工作流

認真查了一下,才發現原來是 Imgur 大概從 5 月 16 日開始,無預警地封鎖了來自台灣的 IP,不再允許台灣使用者上傳圖片。(所幸已上傳的圖片還是可以看)

PTT 上也有討論

可以想見,這是多麼大的衝擊!

官方既然沒有給出任何理由,這個舉動(封鎖 IP)又顯然是蓄意的,那我們可以合理推測——短期內恐怕不會恢復正常了。

但我的部落格還是要繼續寫啊!只能乖乖尋找替代方案。

Pyright 上手指南:Python 型別檢查的新選擇

如〈Python 套件管理器 uv 介紹——與 Poetry 比較〉一文中所述,最近我開始了一個新的 side project

我打算好好利用這個專案,練習並實踐那些,在工作中無法盡情揮灑,或想學習但是還用不到的新技術。包括後端、AI、DevOps。

為了嘗試不同的開發體驗,從框架到工具都有所更新:

  • 因應 AI 時代,後端框架改用 FastAPI——輕量,且非同步支援佳。
  • 套件管理器從 Poetry 換成 uv——快,就是快。

而型別檢查器——本文的主角,則從 Mypy 改為 Pyright。

這不是一時興起的炫技選擇,而是一連串有意識的技術決策:選擇那些效能更好、體驗更佳,並且有長期潛力的替代方案。

Pyright,就是其中之一。


為什麼需要型別檢查?

如果你對 Python 的「型別檢查」議題還不熟,歡迎參考我之前寫的「Mypy 三部曲」,其中對 Python type hints 與型別靜態分析工具做了深入說明。

Type hints 歷經多代 Python 發展至今,已趨於成熟。但它在實際專案中的流行程度,恐怕還不算高。

甚至直白地說,對部分 Python 開發者而言,可能:

  1. 沒聽過。
  2. 知道但無感。

這正是本文要努力的目標——讓更多人加入撰寫 Python type hints 的行列🔥😎