2026年1月21日 星期三

蝦皮購買 iPad Mini 5 透明殼

上周跟水某到夢時代熊老闆的店買了一台 7 吋電子紙閱讀器, 以便將手中的 4000 點夢時代點數用掉, 雖然安裝 HyRead 可以借市圖電子書與電子雜誌很方便, 但我覺得閱讀器反應較慢, 還是 iPad 較好用, 於是將擱置已久的 iPad mini 5 拿出來, 安裝 HyRead 後同樣可登入市圖借電子書, 覺得要好好來用它, 便上蝦皮買了兩個透明殼 :





滿 149 免運, 所以就買了兩個, 裕誠智取店取付. 

2026年1月18日 星期日

2026 年第 3 周記事

時序已來到一月中旬, 眼看一個月後就是春節了, 小時候期待過年, 現在年歲越長越是感到恐懼啊! 但一想到年底有年終獎金, 就不覺得有甚麼好怕啦! 呵呵. 不過一轉眼六年後退休, 到時沒薪水沒年終, 過年該是多恐怖的一件事啊! 看來現在就要開始替退休設想了, 退休後起碼要能維持每月 6 萬現金流 (勞保 21K + 勞退 20K + 投資 20K + ...), 以投資年收大約 50 萬回推, 平均 0056 報酬率 5% 簡單計算, 須持有 1000 萬 0056 才行, 加油! 

離過年不到一個月了, 這個周末開始著手整理老家庫房, 周六清了一批回收, 今日去上元買了廚廁清潔劑, 把廚房旁的浴室刷洗乾淨了, 下周要洗另外兩間浴廁, 但主要還是清庫房, 畢竟這一年來累積太多東西, 該丟就丟吧! 今天也在五金行買了一支矽膠槍, 下周要把餐廳後面浴廁的馬桶漏水問題徹底搞定. 

早上去市集時順路到種子行買六棵蔥來補盆栽中之前沒種活的空位, 我發現用盆栽種蔥非常方便, 幾乎沒雜草. 另外還買了 30 株香菜, 也是種在盆栽裡, 應該可以趕上過年之用. 下周再跑一趟種子行買九層塔苗來種, 最近菜園都沒看到半棵, 想做打拋豬沒九層塔不行. 

這一周我把閒暇時光花在 Vibe coding, 我發現 Gemini CLI 其實不輸 Claude Code, 還在持續探索中. 我有非常多小專案要做, 但常常卡在學過的東西生疏淡忘了, 要用時又花很多時間去複習與測試, 現在有 AI 幫我搞定軟體, 完成專案應該可以 50 倍速度前進. 

2026年1月17日 星期六

2026年1月16日 星期五

Gemini CLI 學習筆記 : 郵遞區號查詢小幫手專案

本篇旨在以使用 https://zip5.5432.tw 的 API 查詢郵遞區號為例來說明一個文組出身的程式小白如何透過 Gemini CLI 介面利用 Vibe coding 方式用嘴寫程式. 此網站可線上輸入地址來查詢郵遞區號, 也有提供 API 讓應用程式查詢, 此範例出自旗標 "Claude Code Vibe Coding 開發手冊" 這本書的第二章, 此處只是將 AI 工具改換成 Gemini CLI 而已 : 




此書範例程式碼與提示詞可在 GitHub 取得 :


本系列之前的文章參考 :


先摘要整理一下安裝 Gemin CLI 的步驟, Gemin CLI 必須在 Node.js 18 版以上才能跑, 首先開啟一個 Power Shell 視窗, 先安裝套件管理工具 Scoop :

PS C:\Users\tony1> Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression   

在 Windows 中使用 Scoop 來安裝 nvm 不僅可簡化安裝過程, 省去手動下載和配置的麻煩, 還可集中管理軟體與提高相容性. 

接著用 Scoop 安裝 Node.js 版本管理工具 nvm : 

PS C:\Users\tony1> scoop install nvm     

然後用 nvm 安裝 Node.js :

PS C:\Users\tony1> nvm install node   

安裝 Node.js 時會同時安裝 Node.js 的套件管理工具 npm, 最後用 npm 來安裝 Gemini CLI (是一個 Node.js 套件包) :

PS C:\Users\tony1> npm install -g @google/gemini-cli    

安裝好 Gemini CLI 後就可以馬上 "動口" 做 Vive coding, 用嘴來寫程式了. 

程式小白只要懂基本電腦操作 (其實就是常用的 DOS 檔案管理指令例如 mkdir/cd/del 等等),  即使是文組出身的人也可以快速開發出自己想要的軟體作品. 


1. 建立專案目錄 : 

首先在 Power shell 視窗中建立一個 gemini 資料夾來放置所有 Gemini CLI 專案 : 

PS C:\Users\tony1> d:   
PS D:\> mkdir gemini   

    目錄: D:\

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----       2026/1/13  上午 09:36                gemini

切換到 gemini 資料夾下建立一個 "postal-helper-proj1" 專案資料夾 : 

PS D:\> cd gemini   
PS D:\gemini> mkdir postal-helper-proj1   

    目錄: D:\gemini

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----       2026/1/13  上午 09:39                postal-helper-proj1

切換到專案目錄下 :

PS D:\gemini> cd postal-helper-proj1   
PS D:\gemini\postal-helper-proj1>  


2. 用 Google 帳號登入 Gemini CLI : 

在專案目錄下輸入 gemini 啟動 Gemini CLI : 

PS D:\gemini\postal-helper-proj1>gemini   




接下來就可輸入提示詞請 Gemini CLI 幫我們寫軟體了, 在旗標 "Claude Code Vibe Coding 開發手冊" 這本書 GitHub 資源的第二章可以找到提示詞 :


複製提示詞貼到 Gemini CLI 提示號後面按 Enter :

> 請用Python寫一個可以在命令列執行的郵遞區號小幫手,輸入是地址,輸出是 6 碼郵遞區號,台灣地址郵遞區號查詢程式使用 zip5.5432.tw API 查詢地址對應的郵遞區號

這時 Gemini CLI 會去讀取專案目錄, 發現裡面空空如也, 先顯示 Directory is empty 訊息後, 輸出如下訊息表示會寫一個 Python 程式利用 zip5.5432.tw 的 API (http://zip5.5432.tw/zip5json.py?adrs=地址) 來查詢給定地址之 6 碼郵遞區號, 寫好程式碼之後會先顯示, 並徵求允許將程式碼寫入專案目錄下的 postal_helper.py 檔案裡 (這檔名是它自訂的, 我們也可以在提示詞中指定) :

✦ I will create a Python script postal_helper.py that uses the zip5.5432.tw API to query the 6-digit postal code for a given address.




在程式碼後面會問 Apply this change? 我們可以直接按 Enter 選擇預設的 1. Allow once (每次寫入會詢問), 或按向下鍵移到 2. Allow for this session (本對話之後都不會再詢問, 直接寫入), 為了慎重起見, 用預設 1 即可. 

程式檔寫入完成後, Gemini CLI 輸出如下資訊, 表示它會用一個地址來測試這的程式看看是否能輸出正確的郵遞區號 : 

✦ I will now test the script with the address "台北市信義區市府路1號" (Taipei City Hall) to ensure it works correctly.

一樣直接按 Enter 選預設的 1. Allow once : 




查詢結果郵遞區號 11024 是正確的 : 




但它發現程式碼在處理中文輸出時出現怪碼 (可能是 UTF-8 編碼問題), 它立即自動更新程式碼, 並要求寫入檔案, 直接按 Enter 選預設的 1. Allow once : 




寫入後要求允許執行程式來測試是否繁體中文輸出 : 




雖然看起來似乎還是輸出怪碼, 但它卻回覆已解決此問題 :




另開一個命令提示字元或 PS 視窗, 切換到專案目錄下, 執行此 Python 程式 :

D:\gemini\postal-helper-proj1>dir   
 Volume in drive D is 新增磁碟區
 Volume Serial Number is 1258-16B8

 Directory of D:\gemini\postal-helper-proj1   

2026/01/16  下午 01:06    <DIR>          .
2026/01/13  上午 09:39    <DIR>          ..
2026/01/16  下午 02:16             2,924 postal_helper.py
               1 File(s)          2,924 bytes
               2 Dir(s)  934,934,114,304 bytes free

D:\gemini\postal-helper-proj1>python postal_helper.py 台北市信義區市府路1號   
正在查詢地址: 台北市信義區市府路1號 ...
------------------------------
地址: 台北市信義區市府路1號
6碼郵遞區號: 110204
------------------------------

果然能正確顯示繁體中文與輸出正確郵遞區號. 

以上我們只出一張嘴, 靠提示詞就讓 Gemini CLI 幫我們寫好可正確運行的程式, 從撰寫到測試 Gemini CLI 一手包辦, 我們連原始碼都還未一賭全貌, 好奇到底長怎樣的話, 可以用記事本開啟專案目錄下的 postal_helper.py 來看看 :

import sys
import json
import urllib.parse
import urllib.request
import io

# 確保在 Windows 上輸出為 UTF-8,避免亂碼
if sys.platform == "win32":
    sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
    sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8')

def get_postal_code(address):
    base_url = "https://zip5.5432.tw/zip5json.py"
    params = {'adrs': address}
    # Ensure the URL is correctly encoded
    url = f"{base_url}?{urllib.parse.urlencode(params)}"
    
    try:
        # User requested 6-digit postal code
        print(f"正在查詢地址: {address} ...")
        
        req = urllib.request.Request(url)
        # Some APIs require a User-Agent
        req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) PostalHelper/1.0')
        
        with urllib.request.urlopen(req) as response:
            if response.status != 200:
                print(f"錯誤: API 返回狀態碼 {response.status}")
                return

            data = response.read()
            try:
                result = json.loads(data)
            except json.JSONDecodeError:
                print("錯誤: 無法解析 JSON 回應。")
                print(f"回應內容: {data.decode('utf-8', errors='ignore')}")
                return
            
            # The API returns 'zipcode6' for the 6-digit code.
            # Sometimes it might return an empty string or null if not found.
            zip6 = result.get('zipcode6')
            
            if zip6:
                print("-" * 30)
                print(f"地址: {result.get('address', address)}")
                print(f"6碼郵遞區號: {zip6}")
                print("-" * 30)
            else:
                print("找不到該地址的 6 碼郵遞區號。")
                # Show full result just in case useful info is elsewhere
                if 'error' in result:
                    print(f"API 錯誤: {result['error']}")

    except urllib.error.URLError as e:
        print(f"網絡錯誤: {e}")
    except Exception as e:
        print(f"發生未預期的錯誤: {e}")

if __name__ == "__main__":
    if len(sys.argv) > 1:
        # Join arguments to handle addresses with spaces if not quoted
        address_input = " ".join(sys.argv[1:])
        get_postal_code(address_input)
    else:
        # Interactive mode
        print("台灣 6 碼郵遞區號小幫手")
        print("用法: python postal_helper.py <地址>")
        print("或在下方輸入地址 (按 Ctrl+C 離開):")
        while True:
            try:
                address_input = input("\n請輸入地址: ").strip()
                if not address_input:
                    continue
                get_postal_code(address_input)
            except KeyboardInterrupt:
                print("\n程式結束。")
                break
            except EOFError:
                break

程式小白欣賞就好, 但對常寫 Python 程式的我來說, 這可能要花我半天才能搞定, 而且 AI 採用的實作方法會與我自行撰寫的大異其趣. 

完成後輸入 exit 或按 Ctrl + C 跳出 Gemin CLI 結束對話. 

2026年1月13日 星期二

Gemini CLI 學習筆記 : 與 Claude Code 的比較

以前 Claude Code 是 Vibe coding 的首選, 它在程式碼生成品質與準確性上表現優異, 尤其是在複雜任務, 跨檔案重構, 與深度程式分析上都優於 Gemini CLI 與其它 AI 工具. 但 Google AI 在 2025 年底推出 Gemini 3 後, 在多個軟體工程與程式碼生成的基準上, Gemini 3 都已超越包括 Claude 系列在內的主要競爭者, 本篇旨在整理這兩大工具的性能比較. 

本系列之前的測試文章參考 :



1. 效能與功能比較 : 

為了公平起見, 我用第三方的 M365 Copilot Chat 針對 Vibe coding 開發軟體專案, 評比 Claude Code 與 Gemini CLI (Gemini 3) 的優缺點, 得到下面的比較表 : 


比較項目 Gemini 3 (Pro / Flash) Claude 3.5 Sonnet
代表性程式基準 在 SWE‑bench 場景報告中居領先;LiveCodeBench Pro 得分 2439,高於 GPT‑5.1 與 Claude Sonnet。 在 HumanEval 類型基準中表現穩定,但在 Live/Agentic 類基準不及 Gemini 3。
代理式終端工作 (CLI) Terminal‑Bench 2.0 取得 54.2%,領先 Claude 與 GPT‑5.1;適合 agentic coding。 表現穩定但在代理式任務比例上落後,偏向保守增量修改。
速度/延遲 (CLI 迭代) Gemini 3 Flash 主打低延遲與高吞吐,適合快速反覆嘗試。 速度中等,複雜推理時品質穩定,但迭代時間通常較長。
上下文視窗 可達超長上下文 (100 萬個 token),適合大型專案整體分析。 約 20 萬個 tokens,上下文足夠多數場景,但不及 Gemini 系列。
跨模態能力 在多模態基準領先,對 UI/畫面理解與多媒體輔助程式工作更有利。 跨模態能力有限,偏重文字場景。
工具/平台整合 支援 Gemini CLI、Google AI Studio、Vertex AI、Android Studio,Flash 為預設模型。 支援 Anthropic API、Amazon Bedrock、Vertex AI,但 CLI 官方工具較弱。
行為特徵 (提示遵循) 最新版本在思考與工具調用穩定性強化,格式與上下文管理已改進。 格式一致性與保守變更表現佳,較少過度重構。
適用場景總結 快速迭代、代理式工具使用、跨模態理解、超大上下文,適合 CLI 驅動的 vibe coding。 保守修補、嚴格遵循格式、低風險漸進修改,適合長期維護與精細重構。


摘要如下 :
  1. Gemini 3 Pro (Deep Think/Flash)  在包括程式生成 (LiveCodeBench), 代理編程 (Terminal‑Bench) 以及跨模態與邏輯推理的大型基準中表現領先.
  2. Claude 3.5 Sonnet 依舊可靠 (尤其在格式穩定與多步邏輯上), 但在程式產出量, 效能與大型 context 支援上, 目前已不如 Gemini 3. 
  3. 使用最新的 Gemini CLI + Gemini 3 Flash/Pro 在程式生成速度, 質量與 agentic 工作流方面已普遍被認為比 Claude 3.5 Sonnet 更強.
結論是 : 

目前改用 Gemini 3 CLI  (特別是 Flash 或 Pro 模式) 進行 vibe coding 或程式產出已明顯優於 Claude 3.5 Sonnet, 不僅速度快, 工程維度也更強大. 


2. 操作指令比較 : 

Gemini CLI 與 Claude Code 的操作指令之名稱與功能類似, 對照表如下 :


功能分類 功能描述 Gemini CLI Claude Code
安裝與啟動 全域安裝與基本啟動方式 npm install -g @google/gemini-cli
啟動後使用斜線指令 (/settings、/model)
npm install -g @anthropic-ai/claude-code
claude 啟動 REPL
互動模式 (REPL) 在終端中開啟持續對話 執行 gemini
內建斜線指令管理會話
claude(REPL)
可加初始提示 claude "query"
非互動/單次執行 單次執行並輸出結果
(適合 CI)
支援 Headless/print 模式
輸出 JSON 或文字
claude -p "query"
支援 --output-format json|text
會話續接 續接最近或指定會話 /chat save|resume|list|delete 管理對話 claude -c (續接最近) 
--resume 或 --fork-session
模型選擇 指定或切換模型 /model 選擇 Auto/Pro
支援 Gemini 3 Pro/Flash
--model
支援 --fallback-model
模型路由/容量處理 超載或配額時的回退策略 自動路由與回退
Pro 配額用盡時回退到 Flash
--fallback-model sonnet 等
MCP 整合 連接外部服務/工具 支援 MCP 伺服器與工具(grep, terminal) claude mcp
支援 --chrome 啟動瀏覽器
檔案/目錄存取 指定工作目錄, 附加路徑 /directory 管理範圍 --add-dir ../apps ../lib
權限/安全 控管可執行工具與跳過提示 --allowedTools / --disallowedTools
--dangerously-skip-permissions
系統提示 追加或覆寫系統提示 --append-system-prompt

--system-prompt-file
IDE/代理整合 VS Code/IDE 整合能力 Gemini Code Assist 代理模式與 CLI 聯動 --ide 啟動 IDE
支援 agents
自動化/腳本 CI 友善輸出與腳本化 Headless/print 模式;Cloud Shell 支援 -p/--print 搭配輸出格式
更新 CLI 自我更新 npm 更新至最新版本 claude update


注意, Gemini CLI 並沒有 Claude Code 那樣的權限/安全與系統提示操作指令, 這反映了兩大工具設計哲學的差異, Claude Code 有點像一個 "外部承包商", 它非常在意是否被授予權限 (例如它會一直問你 Allow?), 並提供操作指令來管理; 而 Gemini CLI 則像是一個 "深度整合的終端機外掛", 它將安全性與權限交給了底層系統 (OS 權限) 與文件化管理, 而不是透過互動式指令來開關.


3. 斜線指令比較 : 

因斜線指令較常用, 所以從上面的操作指令中抽離出來, 對照表如下 :


功能分類 功能描述 Gemini CLI Claude Code
基礎操作 顯示說明 /help /help
清除畫面/清除上下文 /clear /clear
退出程式 /quit /exit 或 Ctrl+D
報告 Bug /bug /bug
上下文管理 初始化專案配置 (重要) /init (建立 GEMINI.md) /init (建立 CLAUDE.md)
壓縮/精簡對話歷史 /compress /compact
查看/管理記憶與規則 /memory /memory
查看 Token 使用量/統計 /stats /cost 或 /stats
對話與任務 儲存/暫存當前對話 /chat save <tag> /rename (命名 Session)
恢復之前的對話 /chat resume <tag> /resume
計畫/思考模式 無專用指令, 需用 Prompt /plan (進入計畫模式)
配置與擴充 開啟設定 /settings /config
管理 MCP /mcp /mcp
檢查安裝健康度 (無直接對應) /doctor
更改介面主題/樣式 /theme /output-style


斜線指令中最主要的差異是 Gemini CLI 沒有 /doctor 與 /plan 指令, 其中 /plan 是 Claude Code 最棒的功能之一, 在此模式下 Claude Code 會先進行深度思考和規劃再開始寫程式, 這在處理複雜重構時非常有用, 也可避免 AI 衝太快直接改動原始碼, 可惜 Gemini CLI 並沒有此指令, 但可以靠提示工程或自訂指令來達成同樣功能. 

在 Gemini CLI 中用提示詞模擬 /plan 指令的方法有如下三種 :

(1). 單次對話提示詞 (One-off Prompt) :

例如 : 我想重構目前的 XXX 架構, 請先不要寫任何程式碼。請先切換到「規劃模式」, 分析目前的專案結構, 並列出你打算執行的具體步驟 (Step-by-step plan), 等我確認這個計畫並回覆「同意」後你再開始寫程式.

(2). 永久生效設定 (寫入 GEMINI.md) :

執行 /init 指令, 編輯 GEMINI.md, 加入以下內容 :

# Coding Guidelines
1. **Thinking First**: 對於涉及多個檔案修改或邏輯複雜的任務, **嚴禁直接產生程式碼**
2. **Plan Mode**: 必須先輸出一個詳細的「執行計畫 (Action Plan)」, 列出預計修改的檔案路徑和邏輯
3. **Approval**: 只有在使用者明確回覆「Go」或「同意」後才可以使用工具寫入檔案

(3). 自製 /plan 指令 :

在家目錄下建立檔案 : ~/.gemini/commands/plan.toml, 在檔案中貼上以下內容 : 

# 這裡定義指令名稱為 /plan
description = "分析需求並產出執行計畫,但不寫入程式碼"
prompt = """
你現在是架構師模式。請針對使用者的需求: "{{args}}"
1. 讀取相關檔案以理解現狀。
2. **不要** 進行任何寫入或修改檔案的操作。
3. 輸出一個詳細的步驟計畫 (Step-by-step Implementation Plan)。
4. 最後詢問使用者是否依此計畫執行。
"""

然後在 Gemini CLI 中輸入 /plan 指令, 例如 : 

/plan 幫我把資料庫從 SQLite 遷移到 PostgreSQL

這樣 Gemini CLI 就會像一個謹慎的工程師一樣執行規劃而不會貿然地直接動手修改檔案. 


3. 在 Gemini CLI 中實現系統提示控制 : 

從上面的比較可知, Gemini CLI 沒有提供 Claude Code 的系統提示與權限/安全指令, Google 的想法是 : 讓 AI 讀文件 (GEMINI.md 檔) 比讓人類背指令更符合自然語言交互的直覺, 只要善用 GEMINI.md (這是 Gemini CLI 的操作手冊, 啟動時會優先閱讀這個檔案), 不需要指令也可以達到 Claude 那種 "嚴格控制安全與行為" 的效果. 總之, Gemini CLI 適合喜歡文件化管理的人, 它沒有繁瑣的權限指令, 因為它希望使用者透過專案目錄和 GEMINI.md 設好防護欄. 

在 GEMINI.md 中加入安全與權限指令的範例如下 (markdown) :

# 專案規範與安全指令

## 行為限制 (System Rules)
1. **禁止操作**: 未經許可,禁止修改 `config/` 資料夾下的任何 .env 檔案。
2. **安全檢查**: 在執行任何 `rm` 或 `delete` 相關指令前,必須先列出檔案清單供我確認。
3. **程式碼風格**: 嚴格遵守 Python PEP 8 規範。

## 自動化權限
- 允許自動執行 `git status` 與 `ls` 等唯讀指令。
- 寫入檔案前,必須先顯示 diff 差異。

這麼做的好處是, 當我們把安全與權限規則寫在 GEMINI.md, 這份規則會跟著 Git 走, 亦即同組的開發者啟動 Gemini CLI 時會獲得相同的安全規範, 不需要每次換一台電腦就要重新 /config 一次. 

雖然最近會聚焦於 Gemini CLI 的探索, 但由於在四月初之前有胡嘉璽老師的 Vibe Coding 課程 (使用 Claude Code), 所以最近應該就會課金購買 Claude Code 月付方案, 同時學習兩套工具也好互相比較. 

Gemini CLI 學習筆記 : 版本更新與模型選擇

我在元旦前安裝 Gemini CLI 之後便因出遊與忙樹莓派而擱一邊, 但有在看年前買的兩本 Claude Code 書籍 (目前市面上沒有介紹 Gemini CLI 的書), 兩者在功能與介面上很像, 但既然買了 Google AI Pro 那就不急著給 Claude Code 課金, 先從 Gemini CLI 著手來摸索如何使用它來做 Vibe coding. 安裝 Gemini CLI 的方法參考 :



1. Gemini CLI 版本更新 :   

我在去年底安裝的 Gemini CLI 版本為 0.20.2 : 

> gemini --version   
✦ My version is 0.20.2.  

由於目前 Gemini CLI 改版很頻繁, 0.20.0 版是 12 月初的版本, 尚未支援 Gemini 3 系列模型 (2025 年 12 月中旬發布), 因此如果要讓 Gemini CLI 使用 Gemini 3 模型, 必須升版到 0.21 版以上. 

首先關閉所有 Gemini CLI 的 PS 視窗, 按 Windows 工具列上的搜尋鈕輸入 Power shell 開啟新的 PS 視窗, 輸入下列指令將 Gemini CLI 升版到最新版 (至少需 0.21.0 以上) :

PS C:\Users\tony1> npm install -g @google/gemini-cli@latest   
npm warn deprecated node-domexception@1.0.0: Use your platform's native DOMException instead

changed 583 packages in 4m

這樣便升版成功了 (那個 warning 無關緊要), 檢查版本已升到 0.23.0 :

PS C:\Users\tony1> gemini --version  
0.23.0  


2. 模型設定 :   

接下來輸入 gemini 進入 Gemini CLI 介面, 然後下 /settings 指令, 第一項 "Preview features" 預設為 false : 




按 Enter 或 Space 鍵改為 true :




按 ESC 鍵跳出設定後, 就可以在對話框右下角看到 "Auto (Gemini 3) /model"  字樣, 這表示 Gemini CLI 將使用 Gemini 3 (根據任務複雜度自動選擇 Flash/Pro) : 




輸入 /model 指令可以選擇模型 : 




按下鍵移到 3 Manual, 按 Enter : 




移動到想要的模型 (例如 Gemini-3-flash-preview) 按 Enter : 




這時對話框右下角就會變成 "Manual (Gemini-3-flash-preview) /model" 字樣了 :



2026年1月12日 星期一

光陽 Cue 100 (藍 MZU) 機車任意險續保

今天看簡訊才發現鄉下家那台藍色 Cue 100 任意險已到期, 馬上到明台網站線上續保, 同樣財損 30 萬, 傷害 300 萬 :




因車主登記為爸, 所以需傳真要保書至 ec@msig-mingtai.com.tw. 

ESP32 帶觸控螢幕開發板 CYD (ESP32-2432S028R)

今天在臉書看到這塊 ESP32 開發板令我驚艷, 組合了 ESP32-WROOM-32 開發板與 2.8 吋 TFT LCD (320x240 解析度), 以及 RGB LED, 光敏電阻 (LDR), 蜂鳴器, Micro SD 卡槽等感測器與周邊, 價格大約 600~700 元左右, 除了使用 C 語言開發, 也可以用 MicroPython (螢幕效能會較慢), 先記下來備忘, 參考資料如下 : 


2026年1月11日 星期日

2026 年第 2 周記事

感覺才剛跨年, 2026 已過去兩周矣. 本周開始有兩項 AI 內訓課程要持續到 3 月底, 一是 M365 Copilot 課程 (有三個月使用權限); 另一個是胡嘉璽老師的 Claude Code 課程, 真是太棒了, 年前買了他的書正在猛啃中 ... (但還沒課金呵呵). 

周五晚上回到鄉下已 7 點半, 陪爸看完台視綜合台的神機妙算劉伯溫後轉到某頻道正轉播 HVL 高中女子排球賽 (台中東山高中 vs 台北內湖高中), 好久沒看運動賽事就稍微停留一下 (學生時代也很愛打排球), 兩隊實力相當形成拉鋸戰蠻精彩的, 教練心情都寫在臉上 (東山原本領先多達 10 分, 後面被追上), 但我有事沒看完, 今天查詢是東山高中勝. 





已經兩三個月沒去巡墓園, 參道的雜草應該很高了, 周六早上帶齊工具 (割草機, 柴刀, 鐮刀, 手套) 穿雨鞋前去整理, 發現參道已經有人砍過草, 但墓園爬滿藤蔓, 周邊雜草叢生 :





花了兩小時工夫, 終於整理完畢, 掃墓前只要再略做打掃即可 (今年是 3/29) : 





幾年前聽嬸嬸說她們掃墓前請人整理墓園工錢是 5000 元, 我這趟賺了五千甚至更多哩. 

鄉下家的安麗都是元旦時換新, 但上周去台北玩, 所以與阿淑改約今日早上 09:30, 我在曬穀場與她就讀台南大學的兒子聊 AI 時, 剛走不久的送報生練小姐跑過來在圍牆外問我能否幫忙, 原來她離開我家後, 在不遠處機車突然熄火無法發動, 還好家裡有兩台機車, 就借她先把報紙送完, 我去買菜回來再送她回家. 前往市集半路上接到她電話, 說她的機車有可以發動了, 要我機車其回去還, 真是好佳在, 因為週日機車行都沒開.

2026年1月10日 星期六

露天購買 Type-C 孔 750mWh 4 號 AAA 可充電鋰電池

因小米無線滑鼠使用 4 號電池, 經常要去小北買碳鋅電池, 一顆約 5~10 元, 兩顆就 10~20 元, 不如買可充電的鋰電池, 不用回收這麼多廢電池 : 





全家取貨免運 621 元. 

momo 購買 Anker A1695 行動電源 (25000mAh)

為了能給 LG 筆電在沒有插座時可以充電, 今天在 momo 買了這顆大容量行動電源 : 





用掉 1742 元 momo 幣, 實付 1048 元. 

由於相當 165W 超過 160W 限制, 所以這顆無法上飛機帶出國. 

2026年1月9日 星期五

如何線上更改 GitHub 的檔案名稱與刪除檔案

我習慣直接在 GitHub 網站上更改 repo 內的檔案內容 (雖然本機有安裝 Git), 但如果要改的是檔案名稱呢? 其實跟改檔案內容方式一樣, 例如我的 serverless 儲存庫中的 send_ksml_books_messages.py 簡化為 send_books_messages.py 該怎麼做呢? 點選該檔案會先顯示其內容, 按右上方的筆圖示, 點選 In place 進入直接編輯頁面 : 




直接在上方檔名框中修改檔名, 然後按右邊的 "Commit changes" 鈕即可 :




如果是要刪除檔案, 則是要按右上角的三個點點按鈕, 然後點選彈出選單最底下的 "Delete file" :




注意, GitHub 不允許直接刪除資料夾, 如果一個資料夾不再需要, 可先逐一刪除該資料夾下所有檔案, 該資料夾就會自動消失. 

2026年1月7日 星期三

AI 大模型排行榜 Leaderboard Overview

今天在胡嘉璽老師的 Vibe coding 課程中得知下面這個 AI 排行榜網站 :


谷歌 AI 在四個領域拔得頭籌, 非常厲害耶! 






2026年1月5日 星期一

2026 年第 1 周記事

2026 的第一周因為週四元旦只有四天上班天, 我週五請假前往台北與宜蘭家庭旅遊, 因為 11 月時二哥交出 IC 資料後很多空閒, 說想去看故宮百年展, 原本是打算與水某搭高鐵上去, 後來菁菁說她也想去, 姊姊說她也可以 1/2 請一天, 所以就變成開車上台北的家庭旅遊了, 菁菁說沒去過的宜蘭, 然後就變成台北宜蘭之旅. 

上一次開車去北部是兩年前二哥碩班入學時, 但那時只是到中壢而已, 並沒有到台北, 這次不僅要進雙北, 還要挑戰走國五, 對我而言交通路線真是大考驗啊! 小舅說很佩服我, 雖然年輕時曾在台北開計程車多年, 但是他說現在他不敢開車到台北. 其實有 AI 幫忙規劃路線, 出發前先有個底, 有導航機協助, 不論是市區或國道匝道切換都很容易. 

第一天元旦早上七點與爸從鄉下出發先到高雄家載水某與菁菁, 八點從高雄出發走國三前往台北, 中途在台中清水服務區停留半小時吃午餐, 然後繼續北上從土城下國三, 直接到板橋大遠百金色三麥吃下午茶, 傍晚去會館入住. 第二天從板橋出發前往士林故宮參觀百年展, 中午在隔壁京華吃港式飲茶, 四點出發經自強隧道走國五前往宜蘭, 先去逛羅東夜市與吃晚餐, 然後前往蘇澳入住會館. 第三天早上前往清水地熱, 下午則去南方澳參拜金媽祖, 第四天是瞎拚行程, 前往羅東奕順軒買歐咪呀給後走國五先送二哥與姊姊去南港坐高鐵, 然後轉國三回高雄. 

下個周末優先來安裝衣櫥與整理庫房 (參考去年底的 todo 清單). 

2026年1月4日 星期日

台北宜蘭之旅 : 奕順軒

今天早上跟爸到會館對面的早餐店, 因為較晚去吃, 架上所剩不多, 幸好還有炒麵, 再點了兩杯豆漿, 吃完到隔壁麥味登幫菁菁買握蛋捲, 準備好就 checkout 回高雄. 但在上國五之前, 菁菁說要去羅東民權路的奕順軒買歐米呀給, 店旁有約六個車位的小停車場很方便, 進到店內發現顧客川流不息, 菁菁就買了好幾條鮮奶凍, 看到架上肉鬆麵包剩下三個我就全包了, 是我吃過最好吃的肉鬆麵包 :





瞎拚完就直接上國五回家, 由於姊姊要回台北, 二哥要回中壢, 我昨晚就已詢問 Gemini, 這種條件下走國三回高雄的交通路線要如何安排最方便, 它認為可以下南港交流道去南港高鐵站, 送姊姊與二哥坐捷運與高鐵最適當 :
  1. 蘇澳 → 南港 : 走國道5號北上, 經過石碇後看到「南港系統」不要轉彎繼續直行接「南港聯絡道」, 在南港聯絡道上行駛不久看到 「南港經貿園區」 的出口指標時靠右下南港交流道匝道  (經貿二路出口) 前往南港車站 (南港路側或市民大道側). 沿經貿二路直行後左轉南港路一段或直行接市民大道八段即可抵達南港車站 (北側或南側都可臨停).
  2. 南港 → 高雄 : 返回經貿二路或橫科路附近, 尋找「環東大道 / 國道三號 (南下)」的高架入口指標沿著南港聯絡道或環東大道接國道3號 (南下).
雖然早上北上已有明顯車潮, 速度在 70~80 左右, 但回程的雪隧感覺比去程要快得多, 放二哥與姊姊下車後走橫科路回國三南下 :  




三點半到達古坑休息站吃過午飯 (嘉義雞肉飯 & 老董牛肉麵) : 




出發前又在門口買了民雄包子, 換手由菁菁開車回左營 : 




六點多到達高雄家, 稍事整理後載菁菁回楠梓工作室, 然後走燕巢交流道返回鄉下結束四天旅行, 雖然去的景點不多, 但每一個地方都讓我放鬆與開心. 下次家庭旅遊規劃南橫或南庄. 

2026年1月3日 星期六

台北宜蘭之旅 : 羅東夜市 + 清水地熱 + 南方澳

昨天 1/2 參觀完故宮約 16:00 從至善路出發前往宜蘭, 還好趕在五點下班車潮之前起程, 才能在五點半前到達羅東夜市, 若不是上國三後不久把導航的 3 公里後下匝道看成現在就靠右下匝道, 耽誤了 20 分鐘, 應該五點就到了. 結果下去是新台五線, 只好在前方汐止 Costco 迴轉, 但我切不進內車道只好先上 Costco 樓上停車場繞一圈再下來走新台五線重回國三 :




約五點半到達羅東夜市, 我跟爸沿著夜市街找尋賣衣服的鋪子, 過一個路口看到一個婆婆的成衣店面, 一件長袖襯衫 100 元, 就幫爸買了三件, 還有內褲與衛生褲數件, 因為出來時匆忙忘記叫爸將衣服放進袋子, 而這幾天寒流來襲, 北部陰雨超冷. 買好後看見有一攤賣菱角酥, 覺得很特別就買了 50 元 :





 然後往回走到停車場後方的石二鍋, 這麼冷的天氣最適合吃火鍋. 菁菁她們則去逛夜市. 





吃完火鍋就回蘇澳會館住宿, 此地離火車站近, 交通方便. 

1/4 早上行程為前往大同鄉的清水地熱, 10 點過後出發, 沿著三星路從一段開到八段轉入較窄的山路, 約 12 點到達地熱谷, 桌子幾乎都已被佔滿, 幸好有人剛好要離開才有位置坐下來 :




2026年1月2日 星期五

台北宜蘭之旅 : 參觀故宮百年展

1/1 早上七點與爸從鄉下出發回高雄家, 八點載菁菁與水某走國三前往板橋, 中途僅停清水休息站 (約 10:30), 11 點再出發, 導航指示從中和下交流道, 但我習慣從土城下, 走中央路接四川路. 13:30 到達板橋大遠百, 離金色三麥訂位時間還早到了半小時. 與 AI 所述相同, 大遠百假日中午停車場滿了, 照其建議繞一小圈停至對面市民廣場地下停車場, 那裡還有近 300 個車位, 且有通道直通大遠百. 在金色三麥吃過午餐差不多快四點了, 便循導航前往住宿之會館. 






1/2 行程是參觀故宮百年展, 我從未開車到過士林, 所以先叫 Gemini 幫我規劃交通路線, 這條路線主要是利用環河南北快速道路避開台北市區的平面塞車路段 :
  1. 出發 : 從板橋民族路出發走縣民大道或文化路.
  2. 過橋 : 行駛華江橋進入台北市.
  3. 上快速道路 :下橋後直接銜接環河南北快速道路往北 (士林方向).
  4. 下匝道 : 沿著環河快速道路一路往北開, 經過中興橋, 忠孝橋下方, 繼續直行穿過中山高後到重陽橋時從中正路出口下 (往士林/百齡橋方向) 接士林中正路.
  5. 抵達 : 沿中正路行駛過百齡橋後直行, 接著右轉福林路接至善路二段直行即可抵達故宮. 
故宮周邊停車相對方便, 主要有兩個選擇 : 
  • 故宮西側停車場 (遊客專用) : 位於至善路上, 距離正館入口最近. 
  • 故宮對面停車場 (至善路二段) : 若西側停車場滿位可停在對面的大型停車場. 
Gemini 提醒要注意避開尖峰 : 1月2日是平日上班日, 早上 07:30 - 09:00 進台北市的橋樑 (華江橋) 和環河快速道路車流量非常大, 如果想避開塞車建議 09:30 之後出發會比較順暢. 




下午參觀完故宮就前往蘇澳, Gemini 建議走國道 5 號經雪山隧道至宜蘭, 這是最快且最直接的路線, 全程約 77 公里, 在不塞車的情況下車程約 1 小時 20 分 ~ 1 小時 30 分左右. 
  1. 出發 (士林/外雙溪) : 從故宮出發沿至善路二段經過自強隧道往內湖方向.
  2. 銜接國道 : 出自強隧道後沿著北安路接堤頂大道 (環東大道), 從堤頂交流道上國道一號 (汐五高架) 往北汐止方向), 續行至汐止系統交流道接國道三號 (南下), 隨即在南港系統交流道靠右接國道五號 (蔣渭水高速公路) 往宜蘭.
  3. 國道五號 (雪隧) : 沿著國道五號一路往南穿過雪山隧道直通到底經過頭城, 宜蘭, 羅東等交流道都不要下.
  4. 抵達蘇澳 : 行駛至國道五號終點 (蘇澳交流道), 下交流道後直行沿著海山西路行駛, 遇到中山路一段 (台9線) 迴轉或右轉即可抵達住宿地點. 




2026年1月1日 星期四

博客來買 Gemini 書兩本

昨天購買了 Google AI Pro 一年份, 打算 2026 年好好來學習 Gemini, 今天上博客來買了下面兩本 Gemini 的好書 :





結帳時本想用生日抵用券 50 元, 但又看到有 299 點 Open Point 點數可用, 一點兌一元, 所以抵用券就下次再用好了 (1/31 截止). 可見在小七與家樂福累積 Open Point 還是有用的. 

參加茶米老師 Gemini 新手村 4 (補記)

上周滑臉書時幸運看到追蹤的茶米老師頻道訊息, 得知 12/28 有 Gemini 線上公開課程, 是第四集結尾篇, 啊, 我竟錯過了前三集, 還好有全程聽完, 老師有獎勵認真的學生, 讓我們得以拿到前三集的通關密語, 真好! 

以下是這次上課簡報與上課資料 : 


Good Bye 2025, Welcome 2026

00:00 我在家跨年了! 來到 2026 新里程, 邁入 6 字頭的歐姬桑啦!