1. 前言:被淘汰的筆電,本質上是一台附電池的伺服器
抽屜裡那台 2016 年的文書筆電,通常是這樣被判死刑的:開機三分鐘、開瀏覽器就滿載、然後系統更新告訴你硬體不符資格。於是它被換掉了。但這個判決是拿「桌面作業系統的需求」去衡量硬體,而不是拿「這台機器實際的運算能力」去衡量。
同一台機器上,一顆四執行緒的 CPU、8GB 記憶體、一顆 SSD,用來跑一個有使用者登入、有資料庫、有後台的網頁服務,其實相當寬裕——這種規格比很多雲端主機的入門方案還好。它甚至比同價位的雲端主機多了兩樣東西:一顆內建的 UPS(電池),和一個不用另外買的螢幕與鍵盤。
所以這門課的前提不是「將就」,而是一個很實際的判斷:學開發不需要先花錢買新電腦,而學開發最好的機器,剛好就是一台你敢隨便重裝、弄壞了也不心疼的舊筆電。
時代背景讓這件事變得更有意義:大量 2015 到 2018 年之間的筆電因為 TPM 與處理器世代的門檻,無法升級到新版 Windows,而舊版的支援期限也已經結束。這批機器在企業與家庭裡數量龐大,硬體堪用但沒有安全更新可用——裝上仍在維護的 Linux 發行版,是把它們救回生產線最直接的方法。
2. 為什麼是 Linux:把資源重新算一次
Linux 在這裡不是意識形態選擇,而是資源分配的選擇。同一台機器,作業系統拿走多少,你的服務就少多少。
| 組態 | 記憶體空載占用(量級) | 適合的用途 |
|---|---|---|
| 新版桌面 Windows | 數 GB | 文書。剩下的資源不足以同時跑編輯器、資料庫與服務。 |
| Linux 加輕量桌面(Xfce / LXQt / MATE) | 數百 MB | 課程主力組態。有圖形介面可以看瀏覽器與編輯器,同時還留得下資料庫與服務。 |
| Linux 無桌面,只留 SSH | 約一百 MB 上下 | 把舊筆電當家用伺服器長期放著,從別台機器連進去操作。 |
除了省下來的記憶體,選 Linux 還帶來三件對後面的課程至關重要的事:
- 開發環境與正式環境一致:你之後要部署上去的雲端主機幾乎一定跑 Linux。在 Linux 上開發,等於少掉一整類「在我電腦上是好的」問題。
- 套件管理是一行指令:資料庫、執行環境、反向代理都從發行版的套件庫裝,不必到處找安裝檔,也方便日後重現整台機器的設定。
- 服務化是系統內建能力:用 systemd 把自己寫的服務註冊成開機自動啟動、掛掉自動重啟,這是「能用的小程式」和「能上線的服務」之間的分界線。
3. AI Vibe Coding 在這裡的角色
Vibe Coding 常被誤解成「叫 AI 幫你打字」。實際上在這門課裡,AI 補的是另一塊:一個沒有程式背景的人,最大的障礙不是打字速度,而是他不知道一套服務應該長什麼樣子——不知道使用者認證該怎麼做、不知道資料表要開哪些欄位、不知道為什麼需要遷移(migration)這種東西。
AI 能把這段「業界慣例」直接攤在你面前。你描述需求,它產出一套有結構的實作,你從讀它開始學。這是一個反向的學習路徑:先看到完整的成品長什麼樣,再回頭理解每個零件為什麼存在。對成人學員來說,這條路比從變數與迴圈慢慢爬上來快得多,因為成人本來就有商業與流程的經驗,缺的只是技術詞彙的對照表。
但這條路有一個硬性前提:你必須讀得懂它給你的東西,並且驗證得出來。課程把時間花在這一塊,而不是花在教你怎麼寫更炫的提示詞。一個看不懂自己系統的人,做出來的不是 SaaS,是一顆定時炸彈。
4. 「企業級」到底是什麼意思
學員最常問的是:我做的東西憑什麼叫企業級?答案不是功能多,而是這份清單有沒有齊。以下這些是任何一套要給真人用的服務都躲不掉的零件,也是課程會逐項帶過的:
- 使用者與認證:註冊、登入、密碼雜湊、工作階段(session)或權杖(token)的處理,以及忘記密碼的流程。
- 權限:誰能看到誰的資料。角色型存取控制(RBAC)最少要能分出管理者與一般使用者。
- 資料庫與遷移:資料表結構要能版控、能重現、能往前升級,而不是手動改上去的。
- API 與後台:對外的介面與對內的管理介面分開,後台不是把資料庫直接開給人看。
- 稽核日誌:誰在什麼時候改了什麼。出事的時候,這是唯一能還原現場的東西。
- 備份與還原:備份不算完成,還原成功才算完成——課程會實際做一次還原演練。
- 設定與祕密管理:資料庫密碼、API 金鑰不能寫在程式碼裡,要從環境變數或祕密管理服務讀。
- 監控與健康檢查:服務掛了要有人知道,最低限度是一個健康檢查端點與一份錯誤日誌。
一句話總結這份清單:企業級的意思不是「功能很強」,而是「出事的時候查得出來、救得回來、而且不會一次全毀」。這也是課程裡最反直覺、但講完學員最有感的一段。
5. 6 小時怎麼排
基礎場次的目標很明確:跑完一整輪「從空機到一套可以操作的服務」。順序大致如下:
- 整備硬體與系統:確認機器狀況、安裝 Linux、處理無線網路與顯示驅動、把 SSD 與記憶體吃滿。這段刻意放在最前面,因為它是整堂課唯一碰得到硬體的部分,也最能讓人建立「這台機器是我的」的感覺。
- Linux 只學用得到的:檔案系統與路徑、權限與 sudo、終端機的十幾個指令、套件管理。不教完整的系統管理,只教後面會用到的。
- 工具與帳號:設定 AI Coding 工具、確認帳號與額度、理解費用怎麼算。這一步請務必課前備好帳號,現場申請會吃掉後面的實作時間。
- 把需求講清楚:拿一個真實的小型商業需求(例如一套客戶預約或報修單系統),練習把它拆成 AI 聽得懂的規格——有哪些角色、有哪些畫面、有哪些資料、哪些事情不可以發生。
- 讓服務跑起來:產出程式、讀懂它、在本機跑起來、連上資料庫、登入進去操作。這一步結束時,學員手上已經有一套可以點的東西。
- 驗證與收尾:刻意去戳它(見下一節),註冊成 systemd 服務讓它開機自動啟動,做一次備份與還原,然後對外開通讓同學連進來用。
6. 驗證:AI 寫的東西怎麼確認它真的對
這是整堂課最核心、也最不能省的一段。AI 產出的程式通常「看起來」很對,問題都藏在邊界上。課程用固定的一套戳法:
- 先寫驗收標準,再讓 AI 寫程式:把「怎樣算做對了」用人話寫下來,否則你沒有判斷的依據,只能被 AI 說服。
- 邊界值:空值、超長字串、負數、重複送出同一筆、同時兩個人改同一筆資料。
- 越權測試:用 A 使用者的身分去讀 B 使用者的資料。這是 AI 產出最常漏掉的一類問題,而且是真實世界最常見的資料外洩成因。
- 看它下的 SQL:確認查詢有沒有把使用者身分帶進條件,而不是抓完全部再於程式裡過濾。
- 看日誌:故意讓它出錯一次,確認錯誤有被記下來,而且記下來的內容足以讓你找到原因。
- 還原演練:把資料庫刪掉,用備份救回來。沒做過這件事的備份,等於沒有備份。
7. 從本機到雲端:進階課程處理的事
本機跑得起來,只解決了一半。服務要讓外部使用者穩定連得進來,需要處理另一組問題,這是進階課程的範圍:
- 容器化:把服務與它的依賴打包成一個映像檔,讓它在哪裡跑都一樣。這一步同時解決了「部署」與「重現環境」兩件事。
- 選運算服務:無狀態的網頁服務適合用能縮到零的容器服務(依用量計費、沒人用就不收錢);需要常駐或特殊需求的則用雲端虛擬機。課程會實際比較兩者的成本與限制。
- 資料庫搬上雲:受管理的資料庫服務省掉備份與修補的維運,但費用是固定支出,要學會算這筆帳。
- 網域與憑證:把網域指過去,讓 HTTPS 憑證自動簽發與續期。
- 祕密管理:資料庫密碼與 API 金鑰改從雲端的祕密管理服務讀取,不進版控、不進映像檔。
- 成本控制:設定預算警示與用量上限。雲端最常見的意外不是服務掛掉,是月底的帳單。
本機那台舊筆電在上雲之後並沒有退休,它變成最理想的測試環境:改壞了不影響任何人,測完再推上去。一台實體機加一個雲端環境,就是一套很標準的開發流程,而成本幾乎是零。
8. 常見卡點(都是硬體的)
軟體的問題 AI 大多能幫你解決,卡住學員的幾乎都是硬體與韌體:
- 無線網卡驅動:部分舊機型的無線晶片需要額外的韌體套件,最穩的作法是安裝時先接網路線。
- 開機韌體設定:安全開機(Secure Boot)與 UEFI/Legacy 模式要先確認,否則安裝媒體根本開不起來。
- 散熱:舊筆電的風扇與散熱膏多半已經失效。當它要長時間跑服務,清灰塵與換散熱膏的效益比升級任何零件都大。
- 硬碟:如果還是傳統機械硬碟,換一顆 SSD 是投報率最高的一次升級,通常比整台機器的殘值還便宜。
- 電池與蓋上螢幕的行為:要當伺服器用,得把「蓋上螢幕就休眠」關掉;而還能用的電池就是一顆免費的不斷電系統。
9. 為什麼這件事到現在才做得到
同樣的硬體、同樣的 Linux,五年前也存在,但這門課那時開不起來。差別在於中間那道牆:一個沒有程式背景的人,要自己把使用者認證、資料庫結構、權限控制與部署流程學到能動,過去至少是數個月的事,而且中途放棄的比例極高。
AI 把這道牆的高度降下來了。它不會讓人自動變成工程師,但它讓「先做出一個能動的完整系統,再回頭理解它」變成可行的學習路徑。對成人學員來說,這個順序的差別是決定性的——因為你手上很快就有一個能給別人看的成品,而動機正是從那裡來的。
10. 結論
一台被淘汰的文書筆電、一套仍在維護的開源系統、一個 AI Coding 帳號,構成的不是一套將就的學習環境,而是一條完整的生產線:硬體、作業系統、開發、驗證、部署、維運,每一段都親手走過一次。
這門課真正想傳遞的判斷是:限制往往不在硬體,而在我們對硬體的想像。同樣一台機器,看成「跑不動的舊電腦」它就是廢物,看成「一台附電池的 Linux 伺服器」它就是你的第一個產品的起點。
LinuxAISaaS雲端部署