2026年11月2日 星期一

macOS 學習筆記 : 英文大小寫 (Caps Lock) 與注音輸入切換

今天開始設定我新買的 MackBook Air, 首先遇到的問題就是英文大小寫 (Caps Lock) 與注音輸入切換問題, 這是 Windows 使用者最不習慣的部分, Windows 的 Caps Lock 鍵單純用來切換英文大小寫; 但在 macOS 則有兩個用途 :
  • 中英輸入切換 : 
    輕按一下 (Tap) 可快速在中文與英文之間切換.
  • 鎖定全大寫 :
    長按約 0.5 秒 (Hold) 直到 Caps Lock 鍵上的綠色指示燈亮起會鎖定全大寫英文, 可連續輸入大寫英文字母; 再輕按一下 Caps Lock 鍵綠燈熄滅即可解除大寫鎖定.
如果只是要輸入一個大寫英文字母, 只要按住 Shift 鍵再按字母鍵即可, 不需要鎖定全大寫. 注意, 即使處於繁體中文 (注音) 輸入狀態, 只要按住 Shift 鍵打英文字母, 系統會直接輸出大寫英文字母, 不需要特地切換回英數輸入法. 

中英輸入模式切換除了輕按一下 Caps Lock 鍵外, 還可以同時按 Control + Space 鍵. 

如果想要與 Windows 使用習慣一致, 讓 Caps Lock 只用來鎖定全大寫, 可依下列步驟取消 Caps Lock 鍵的 Tap 切換中英輸入模式之功能 : 
  1. 點擊螢幕左上角的蘋果選單 > 系統設定
  2. 點選選單中的 "鍵盤"
  3. 在右側的 "文字輸入" 區塊點擊 "輸入來源" 旁邊的 "編輯…" 鈕
  4. 在彈出視窗的左側選擇 "所有輸入來源"
  5. 將 "使用「大寫鎖定」鍵切換「ABC」輸入來源" 關閉後按 "完成" 即可
不過用習慣後其實也沒必要跟 Windows 一樣用法啦. 

博客來買書 1 本 : 用 macOS 完整部署地端模型

今天在博客來看到胡嘉璽老師的 macOS 新作, 由於我本周開始在設定上個月中到貨的 Mac Mini, 此書剛好是我正需要的就買了 :





用掉 OpenPoint 410 點, 實付 443 元, 7-11 至興店取貨. 以前買書都用 LINE Pay, 在博客來應該用 UniPoint 中信卡, 這樣又可累積點數下次買書用. 

蝦皮購買 Acer 宏碁可充電藍牙無線滑鼠 x 2 (銀色)

此賣家上回有買過, 品質不錯, 回購銀色 2 個 :





明華智取免運 520 元. 

macOS 學習筆記索引

由於上個月在蘋果官網買了 Mac Mini (M6 32GB  + 512GB), 上週又在蝦皮買了 MacBook Air (M2 16GB + 1TB), 距離上一次使用 MacOS 已經過去 5 年, 我又再次擁抱蘋果生態系, 把之前寫的筆記索引如下以備查考 :



~ 進行中 ~

手機無法透過 Hinet 寄信問題

前陣子用手機的 Hinet 帳戶回信發現竟然信件寄送失敗, 測試了幾封都是一樣, 但 Hinet 收信則正常, 因為那時很忙, 且也很少用手機回信, 這問題也就擱著未處理. 上週在為了購買 MacBook Air, 用 Email 與蝦皮賣家聯繫時又遇到這問題了, 拖著也不是辦法, 於是馬上詢問中華電信客服幫忙查測原因, 客服一聽我的問題描述, 馬上說這是 SMTP 伺服器網址沒有更新所致, 原來他們早在 2024 年就已將 SMTP 外送網址改為 msr.hinet.net, 但我可能當時沒注意到這個通知. 

更改 SMTP 伺服器網址方法很簡單, 開啟手機 Gmail App, 點選設定 :





點選 Hinet 郵件帳戶 : 




點選外寄設定 : 




輸入密碼, 將 SMTP 伺服器欄位的 ms5.hinet.net 改為 ms5.hinet.net, 按完成即可 : 




改好後傳送一封郵件到我的 Gmail 信箱成功. 


2026年11月1日 星期日

2026 年第 42 周記事

本周因為在蝦皮買了一台 13 吋 Macbook Air (M2), 週六早上去善化面交, 所以待在鄉下時間不到一天半, 老家的整理工作暫停, 下周工作清單 : 
  • 組裝衣櫥
  • 將和室多餘的棉被打包放大垃圾袋防塵
  • 刷洗曝曬拖鞋
  • 洗 2F 和室毛毯
  • 自行車打氣
  • 組裝三輪自行車
Karen 老師的 Vibe coding 課程已上完第三周, 下周是最後一堂, 我雖然上課中無法跟著實作, 課後都會回看後再實作交作業, 買這課程學會了不少技能, 收穫很多. 接下來要陸續把之前買的線上課程逐一上完. 

下周主要工作是把 Mac Mini 與 MacBook Air 設定好.

市圖還書 1 本 : 用Excel學Python資料分析

此書被預約須還 : 
老實說, 現在 Vibe coding 時代這種底層 coding 的書用途越來越少了. 

Google Antigravity 學習筆記 : 製作個人網站部落格

週四 Karen 老師的 Vibe coding 課進入第三堂, 目標是製作一個有後台資料庫功能的網站, 我挑選了個人部落格做為題目, 但這次改用 agy 來實作, 因為上一堂課耗掉太多 Claude Code 的 token 用量 (大概 150 元台幣), 餘額剩下 4 美元左右. 

建立專案資料夾後啟動 agy : 

PS D:\agy\projects> mkdir my_blog  
PS D:\agy\projects> cd my_blog  
PS D:\agy\projects\my_blog> agy  

      ▄▀▀▄        Antigravity CLI 1.4.5
     ▀▀▀▀▀▀       yhhuang1966@gmail.com (Google AI Pro)
    ▀▀▀▀▀▀▀▀      Gemini 3.8 Flash (High)
   ▄▀▀    ▀▀▄     D:/agy/projects/my_blog
  ▄▀▀      ▀▀▄

────────────────────────────────────────────────────────────
> 我想製作個人品牌的官方網站,裡面需要放文章,讓我有可以公開的網頁,也要有後台的頁面,但公開網站沒有後台的登入功能,所以要給我額外登入的後台,後台可以上架文章,並連結前台,請你幫我設計與製作

○ Thought for 34.0s (Exploring potential project initialization strategies, considering Next.js or Vite. It's crucia...
● Ran 6 commands (+3 · node -e "const { Dat... · npm --version · npx create-next-app@...) (ctrl+o to expand)

▸ Thought for 4s, 215 tokens

  我正在為您建置個人品牌官方網站的完整架構(包含前台品牌形象、公開文章系統,以及隱藏式的獨立後台管理系統)。目前正在初
  始化專案環境與依賴套件,稍後將依序完成介面設計與前後台資料庫串接。

○ Thought for 6m 34s (Article detail page requires dynamic metadata generation using the article's title, excerpt, a...
● Ran (dir)
● Explored 1 file (package.json)
… 40 more actions (6 reads, 17 edits, 17 commands: 2 failed) …
● Ran (New-Item -ItemType Directory -Force -Path "app/admin/(dashboard)/articles/new", "app/admin/(dashboard)/articl...
● Edited 16 files (layout.tsx, page.tsx, page.tsx, +13) (ctrl+o to expand)
⚠ INVALID_ARGUMENT (code 400): Request contains an invalid argument.
Error ID: 084ecf42-ccff-43a4-a7e6-ac2c828273f1-133

────────────────────────────────────────────────────────────



> 為何出現 error? 請清查原因並排除
○ Thought for 1m 12s (Project build completed successfully; all routes compiled and optimized. Observed that the bui...
● Ran (npm run build) failed
● Edited 11 files (Icons.tsx, Footer.tsx, ArticleShareBar.tsx, +8)
… 10 more actions (5 reads, 2 edits, 3 commands: 3 failed) …
● Edited 1 file (db.ts)
● Ran 5 commands (npm run ×2 · node -e "fetch('http... ×3) (ctrl+o to expand)

▸ Thought for 10s

  針對稍早出現的 Build / 編譯錯誤,已為您完成全盤清查與問題排除,目前整個專案已通過完整編譯並成功於本機啟動運行!
  ──────
  ### 一、錯誤原因清查與排除說明

  稍早發生的錯誤主要由以下 4 個相容性原因引起,均已徹底解決:

  1. 圖示套件社群圖示缺失 (lucide-react):
      • 原因:最新版 lucide-react 調整了命名規範並移除了品牌專屬圖示(如 Github, Twitter, Linkedin)。
      • 排除方式:建立專屬的獨立向量圖示模組 Icons.tsx,提供純粹的 GitHub、X (Twitter)、LinkedIn SVG
      元件,不再依賴第三方品牌匯出。
  2. Next.js 16 實驗性快取與 Route Segment 衝突:
      • 原因:create-next-app 初始化時預設加入了 cacheComponents: true 與 partialPrefetching:
      true,此實驗性選項會嚴格禁止在頁面中使用 export const dynamic = "force-dynamic"。
      • 排除方式:精簡 next.config.ts 設定並移除不相容的 Route Segment 標記,回歸 Next.js 16
      標準的隨需伺服器動態渲染(SSR)。
  3. React 19 Server Components 資料物件原型限制 (Null Prototype):
      • 原因:Node 26 原生 node:sqlite 返回的資料庫行物件預設使用 Object.create(null)(Null Prototype)。而 React 19
      的 Server Component 在向 Client Component 傳遞 Props 時,為了序列化安全性,嚴格要求必須是純 Plain Object(具備
      Object.prototype),否則拋出 Classes or null prototypes are not supported 錯誤。
      • 排除方式:在 db.ts 的資料存取層加入 toPlain 轉換,將所有查詢返回的資料物件轉為標準 Plain Object。
  4. Client Component 中的時間戳預渲染警報:
      • 原因:Next.js 16 在靜態建置階段會攔截 Client Component 中直接調用的 new Date()。
      • 排除方式:修正 Footer.tsx 的時間取值邏輯,確保安全建置。
  ──────
  ### 二、系統現已正式就緒
  專案伺服器目前已在背景啟動運行中:
  #### 1. 公開前台(訪客視角)
  • 訪問網址:http://localhost:3000
  • 特點:
      • 首頁 (/):個人品牌主視覺、個人頭像、核心三面向服務理念、精選文章卡片、社群連結。
      • 文章專欄 (/articles):即時關鍵字搜尋、分類標籤快速篩選、文章卡片網格。
      • 文章閱讀頁 (/articles/[slug]):精美 Markdown 排版、閱讀時間估算、瀏覽次數計數器、社群一鍵分享。
      • 關於我 (/about):個人經歷里程碑、專業技術雲。
      • 聯絡合作 (/contact):互動式聯絡表單與社群管道。
      • 零後台痕跡:導覽列與頁尾皆完全不包含任何登入或後台連結,保證前台純粹度。


  #### 2. 獨立後台(品牌擁有者視角)
  • 隱藏後台入口:http://localhost:3000/admin
  • 登入頁面:http://localhost:3000/admin/login
  • 預設登入憑證:
      • 帳號:admin
      • 密碼:adminpassword123
  • 後台核心功能:
      • 數據總覽:統計文章數、已發布、草稿篇數與累積瀏覽量。
      • 文章管理:支援即時搜尋、分類篩選、一鍵快速切換「已發布/草稿」、刪除與直達前台預覽。
      • 撰寫與編輯文章:完整 Markdown
      編輯器,支援常用格式工具列、左右即時對照預覽、精選高畫質封面圖快速選取,可自由選擇立即發布或存為草稿。
      • 品牌設定:免動程式碼,直接在後台修改品牌名稱、職稱、自述、頭像網址、首頁標語與社群連結,前台即時同步更新。
      • 帳號安全:可隨時修改管理員帳號與登入密碼。


  您可以直接在瀏覽器打開 http://localhost:3000 查看前台,並開啟 http://localhost:3000/admin 體驗後台發布文章!

────────────────────────────────────────────────────────────
> 幫我佈署到 Vercel

○ Thought for 36.7s (The code checks for a Vercel environment to determine the database file path. If running on Ver...
● Ran 6 commands (+3 · git status: failed · vercel --help · vercel storage --help)
● Explored 1 file (.gitignore)
… 3 more actions (2 reads, 1 command) …
● Edited 2 files (db.ts, package.json)
● Ran 7 commands (+5 · vercel deploy --help · vercel --prod --yes) (ctrl+o to expand)

  已為您啟動 Vercel Production
  佈署流程(專案:tony1966/my_blog),正在雲端建置並分發中,完成後我會立即回報正式上線網址與檢查狀態。
○ Thought for 21.5s (Production deployment is live and serving all expected content. Considering the project's hosti...
● Ran 9 commands (+2 · vercel project prote... ×4 · node -e "fetch('http... ×3) (ctrl+o to expand)

▸ Thought for 4s
  您的個人品牌官方網站已成功佈署至 Vercel Production 正式環境!
  ──────
  ### 🌐 正式上線網址資訊
   項目                 | 網址 / 憑證                    | 說明
  ----------------------|--------------------------------|------------------------------------------------------------
   公開品牌前台         | myblog-rouge-psi.vercel.app[1] | 任何訪客皆可自由瀏覽,完全無任何後台入口,保持品牌視覺純淨
   獨立管理後台         | myblog-rouge-psi.vercel.app[2] | 額外獨立入口(未登入會自動導向 /admin/login)
   後台預設帳號         | admin                          | 可於後台「帳號安全」隨時更改
   後台預設密碼         | adminpassword123               | 可於後台「帳號安全」隨時更改
   Vercel 控制台        | vercel.com[3]                  | 專案管理、日誌與自訂網域綁定

  [1]: myblog-rouge-psi.vercel.app https://myblog-rouge-psi.vercel.app
  [2]: myblog-rouge-psi.vercel.app https://myblog-rouge-psi.vercel.app/admin
  [3]: vercel.com https://vercel.com/tony1966/my_blog
  ──────
  ### 🚀 佈署優化與細節說明

  1. 雲端唯讀檔案系統相容(Serverless Read-Only FS):
      • 針對 Vercel 雲端環境將檔案系統鎖定為唯讀的特性,在 db.ts 加入了環境自動偵測,確保在 Vercel Serverless Function
      運行時資料庫能夠平滑遷移至 /tmp 讀寫,避免出現 EROFS 權限錯誤。
  2. 公開網路存取配置:
      • 已關閉 Vercel 預設的團隊 SSO 防護限制,全球任何讀者皆能直接透過正式網址造訪您的網站。
  3. 前台即時功能:
      • 文章專欄清單、全文 Markdown 排版、閱讀時間預估、社群一鍵分享均已上線運作。
      • 您可以直接在瀏覽器點擊上方連結進入後台,發布您的第一篇線上文章!


以上是在 agy 的操作過程, 完成後瀏覽部落格 : 





然後用預設帳密登入後台 :





更換管理員帳密 (這樣預設帳號 admin 就失效了) : 




更新帳密成功後按左下角的 "安全登出" :




用新的管理員帳密登入 : 




按 "撰寫新文章" 便可發文了. 

蝦皮購買鍵盤注音轉印貼紙

周三在蝦皮買了一台 2022 年的二手 13 吋 Macbook Air 筆電 (M2+16GB+1TB), 昨天 (週六) 去善化面交, 由於是英文鍵盤, 賣家建議我若無法盲打注音, 可以貼注音貼紙, 其實我周四就預先在蝦皮訂購注音轉印貼紙, 只是忘了紀錄而已 : 





明華智取店免運 210 元. 

2026年10月31日 星期六

蝦皮購買二手 13 吋 Macbook Air (M2 16GB + 1TB)

最近想要開始學習 MacOS, 除了上個月已買了 Mac Mini 當主機跑本地模型外, 週三晚上在蝦皮閒逛時偶然看到一位住在台南善化的賣家要出售 2022 年上市, 搭載 M2 CPU 的 13 吋 Macbook Air, 由於這是具備 16 GB RAM + 1TB SSD 的高規格客製款, 讓我非常心動 : 






賣家標價 30000 元, 我叫 Gemini 幫我評估, 它認為這台電池 149 次, 健康度 85% 的筆電 CP 值很高, 若能拿到 29000 以下的甜甜價那更好, 經與賣家書信溝通後獲首肯 29000 元成交, 約定今天早上在善化火車站前的全聯面交. 

今早到新左營搭區間車前往善化, 由於火車慢分, 我在 08:55 時傳簡訊給賣家表示會稍遲一點到, 結果他說可以到火車站接我一起過去全聯. 出站後果然看到大門口一台藍色福斯等在那, 賣家是一個文質彬彬的人, 看來跟我差不多年紀, 寒暄後得知是比我年輕 5 歲的小老弟. 

到了全聯休息區, 坐定後賣家取出紙箱, 他連當初購買時的包裝盒都有保存, 然後從開機設定帳號到檢查系統組態一一說明, 確實與商品頁描述一致. 交付貨款後閒聊才知道賣家是個老師, 而且還是大學教授, 難怪架上出售的舊書都非常有學術氣息. 面交結束後搭 10:58 分的區間車返回高雄, 到新左營站轉捷運發現人潮非常多, 根本擠不上去, 只好等下一班. 回到家已經下午一點. 吃過飯隨即返回鄉下, 下周再開始來研究如何使用這個新玩具.