-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
1 lines (1 loc) · 35.3 KB
/
Copy pathindex.html
File metadata and controls
1 lines (1 loc) · 35.3 KB
1
<!DOCTYPE html><html lang="zh-TW"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta><title>健忘工程師</title><link rel="manifest" href="/manifest.json"><meta name="theme-color" content="#c8b6a6"><meta name="application-name" content="健忘工程師"><meta name="msapplication-TileImage" content="https://forgetfulengineer.github.io/img/web_app-128x128.png"><meta name="msapplication-TileColor" content="#c8b6a6"><meta name="web-app-capable" content="yes"><meta name="apple-mobile-web-app-title" content="健忘工程師"><meta name="apple-mobile-web-app-status-bar-style" content="default"><link rel="apple-touch-icon" sizes="128x128" href="https://forgetfulengineer.github.io/img/web_app-128x128.png"><meta name="description" content="健忘沒關係,努力有痕跡;健忘沒關係,好險有筆記,嗨!這裡是健忘工程師的學習筆記,歡迎來這裡逛逛~在這個有搜尋引擎與 LLM 的時代,我認為不需要把所有事情都牢牢記住,真正重要的是理解和實作,而不是死記硬背。常用的觀念自然會熟悉,不常用、容易忘記的內容,就記錄下來,等需要的時候,再回來查閱就好!"><meta property="og:type" content="website"><meta property="og:title" content="健忘工程師"><meta property="og:url" content="https://forgetfulengineer.github.io/"><meta property="og:site_name" content="健忘工程師"><meta property="og:description" content="健忘沒關係,努力有痕跡;健忘沒關係,好險有筆記,嗨!這裡是健忘工程師的學習筆記,歡迎來這裡逛逛~在這個有搜尋引擎與 LLM 的時代,我認為不需要把所有事情都牢牢記住,真正重要的是理解和實作,而不是死記硬背。常用的觀念自然會熟悉,不常用、容易忘記的內容,就記錄下來,等需要的時候,再回來查閱就好!"><meta property="og:locale" content="zh_TW"><meta property="og:image" content="https://forgetfulengineer.github.io/img/og_image.png"><meta property="article:author" content="健忘工程師"><meta property="twitter:card" content="summary"><meta property="twitter:image:src" content="https://forgetfulengineer.github.io/img/og_image.png"><script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"WebSite","@id":"https://forgetfulengineer.github.io#website","url":"https://forgetfulengineer.github.io","name":"健忘工程師","alternateName":"forgetfulengineer","inLanguage":"zh-TW","author":{"@type":"Person","@id":"https://forgetfulengineer.github.io/about/#person","name":"健忘工程師","image":"https://forgetfulengineer.github.io/img/og_image.png","url":"https://forgetfulengineer.github.io/about/","jobTitle":"Software Engineer","sameAs":["https://github.com/forgetfulengineer"]},"publisher":{"@type":"Organization","@id":"https://forgetfulengineer.github.io#organization","name":"健忘工程師","url":"https://forgetfulengineer.github.io","logo":{"@type":"ImageObject","url":"https://forgetfulengineer.github.io/img/logo.svg"}},"description":"健忘沒關係,努力有痕跡;健忘沒關係,好險有筆記,嗨!這裡是健忘工程師的學習筆記,歡迎來這裡逛逛~在這個有搜尋引擎與 LLM 的時代,我認為不需要把所有事情都牢牢記住,真正重要的是理解和實作,而不是死記硬背。常用的觀念自然會熟悉,不常用、容易忘記的內容,就記錄下來,等需要的時候,再回來查閱就好!"}]}</script><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin=""><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://cdn.jsdelivr.net" crossorigin=""><link rel="dns-prefetch" href="https://forgetfulengineer-ga-data.netlify.app"><link rel="preload" as="image" href="https://cdn.jsdelivr.net/gh/forgetfulengineer/forgetfulengineer.github.io@v-20260720-175548/gallery/covers/use-nvm-to-manage-nodejs-version.webp" fetchpriority="high" onerror="this.onerror=null;this.setAttribute('href', '/gallery/covers/use-nvm-to-manage-nodejs-version.webp');"><link rel="canonical" href="https://forgetfulengineer.github.io"><link rel="alternate" href="https://forgetfulengineer.github.io/atom.xml" title="健忘工程師" type="application/atom+xml"><link rel="icon" href="https://forgetfulengineer.github.io/img/favicon.svg"><link rel="stylesheet" href="https://use.fontawesome.com/releases/v6.0.0/css/all.css" media="print" onload="this.media='all'"><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:opsz,wght@14..32,400..700&family=Noto+Sans+TC:wght@400;600;700&display=swap" media="print" onload="this.media='all'"><link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/forgetfulengineer/forgetfulengineer.github.io@v-20260720-175548/css/default.css" onerror="this.onerror=null;this.setAttribute('href', '/css/default.css');"><style>body>.footer,body>.navbar,body>.section{opacity:0}</style><!--!--><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/cookieconsent@3.1.1/build/cookieconsent.min.css" media="print" onload="this.media='all'"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/lightgallery@1.10.0/dist/css/lightgallery.min.css" media="print" onload="this.media='all'"><script src="https://www.googletagmanager.com/gtag/js?id=G-BS6F1Q01DB" async=""></script><script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-BS6F1Q01DB")</script><!--!--><script data-ad-client="ca-pub-4668744174470418" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js" async=""></script><meta name="follow.it-verification-code" content="5WjvDlSZRR20BXyXxNhG"><script>(()=>{function r(){var e,t,a;location.hash&&(e="#"+CSS.escape(location.hash.substring(1)),t=document.querySelector(`.tabs a[href="${e}"]`))&&(a=t.parentElement.parentElement,Array.from(a.children).forEach(e=>e.classList.remove("is-active")),Array.from(a.querySelectorAll("a")).map(e=>document.getElementById(e.getAttribute("href").substring(1))).forEach(e=>e.classList.add("is-hidden")),t&&t.parentElement.classList.add("is-active"),a=document.querySelector(e))&&a.classList.remove("is-hidden")}r(),document.addEventListener("click",function(e){var t,a=e.target.closest('.tabs a[href^="#"]');a&&(a=a.getAttribute("href"),t=location.hash,e.preventDefault(),t!==a)&&(history.replaceState(null,"",a),r())})})()</script><meta name="generator" content="Hexo 7.3.0"><link rel="sitemap" type="application/xml" title="Sitemap" href="/sitemap.xml"></head><body class="is-3-column"><nav class="navbar navbar-main"><div class="container navbar-container"><div class="navbar-brand justify-content-center"><a class="navbar-item navbar-logo" href="/"><img src="https://cdn.jsdelivr.net/gh/forgetfulengineer/forgetfulengineer.github.io@v-20260720-175548/img/logo.svg" alt="健忘工程師" height="28" onerror="this.onerror=null;this.setAttribute('src', '/img/logo.svg');"></a><div class="navbar-end is-flex"><a class="navbar-item is-hidden-desktop search" title="搜尋" href="javascript:;"><i class="fas fa-search"></i></a></div><a class="navbar-burger" role="button" aria-label="menu" aria-expanded="false"><span aria-hidden="true"></span><span aria-hidden="true"></span><span aria-hidden="true"></span></a></div><div class="navbar-menu"><div class="navbar-start"><div class="navbar-item has-dropdown is-hoverable"><div class="navbar-link is-active"><a class="link-muted" href="/">Home</a></div><div class="navbar-dropdown"><a class="navbar-item" href="/categories/">Category</a><a class="navbar-item" href="/tags/">Tag</a><a class="navbar-item" href="/archives/">Archive</a></div></div><div class="navbar-item has-dropdown is-hoverable"><div class="navbar-link"><a class="link-muted" href="/categories/Backend/">Backend</a></div><div class="navbar-dropdown"><a class="navbar-item" href="/categories/Backend/PHP/">PHP</a><a class="navbar-item" href="/categories/Backend/MySQL/">MySQL</a><a class="navbar-item" href="/categories/Backend/API/">API</a></div></div><div class="navbar-item has-dropdown is-hoverable"><div class="navbar-link"><a class="link-muted" href="/categories/Frontend/">Frontend</a></div><div class="navbar-dropdown"><a class="navbar-item" href="/categories/Frontend/Html/">Html</a><a class="navbar-item" href="/categories/Frontend/Css/">Css</a><a class="navbar-item" href="/categories/Frontend/JavaScript/">JavaScript</a></div></div><div class="navbar-item has-dropdown is-hoverable"><div class="navbar-link"><a class="link-muted" href="/categories/Other/">Other</a></div><div class="navbar-dropdown"><a class="navbar-item" href="/categories/Other/Git/">Git</a><a class="navbar-item" href="/categories/Other/Hexo/">Hexo</a><a class="navbar-item" href="/categories/Other/Tool/">Tool</a></div></div><a class="navbar-item" href="/about/">About</a></div><div class="navbar-end is-hidden-touch"><a class="navbar-item" target="_blank" rel="noopener" title="Youtube" href="https://www.youtube.com/@forgetful_engineer_playlist"><i class="fab fa-youtube"></i></a><a class="navbar-item" target="_blank" rel="noopener" title="GitHub" href="https://github.com/forgetfulengineer"><i class="fab fa-github"></i></a><a class="navbar-item search" title="搜尋" href="javascript:;"><i class="fas fa-search"></i></a></div></div></div></nav><section class="section"><div class="container"><div class="columns"><div class="column order-2 column-main is-9-tablet is-9-desktop is-6-widescreen"><div class="card"><article class="card-content article" role="article"><p class="title is-3 is-size-4-mobile"><a class="link-muted" href="/Backend/Nodejs/use-nvm-to-manage-nodejs-version/">【Node.js】使用 nvm 管理 Node.js 版本重點整理</a></p><div class="article-meta is-size-7 level is-mobile mb-3"><div class="level-left"><span class="level-item"><i class="fa-regular fa-calendar-days"></i><time datetime="2026-07-20T02:15:14.000Z" title="發表於2026/7/20 上午10:15:14">2026-07-20</time></span><span class="level-item is-hidden-phone"><i class="fa-regular fa-folder-open"></i><a class="link-muted" href="/categories/Backend/">Backend</a><span> / </span><a class="link-muted" href="/categories/Backend/Nodejs/">Nodejs</a></span><span class="level-item copy" id="share" style="cursor:pointer" title="複製連結" data-clipboard-text="https://forgetfulengineer.github.io/Backend/Nodejs/use-nvm-to-manage-nodejs-version/"><i class="fa-solid fa-link"></i>分享</span></div></div><div class="card-image"><a class="image" href="/Backend/Nodejs/use-nvm-to-manage-nodejs-version/"><img class="fill" src="https://cdn.jsdelivr.net/gh/forgetfulengineer/forgetfulengineer.github.io@v-20260720-175548/gallery/covers/use-nvm-to-manage-nodejs-version.webp" alt="【Node.js】使用 nvm 管理 Node.js 版本重點整理" fetchpriority="high" loading="eager" onerror="this.onerror=null;this.setAttribute('src', '/gallery/covers/use-nvm-to-manage-nodejs-version.webp');"></a></div><div class="content"><h2 id="本篇重點"><a href="#本篇重點" class="headerlink" title="本篇重點"></a>本篇重點</h2><ul><li>透過 nvm 可在單一系統中無縫切換多種 Node.js 版本,解決全域套件衝突</li><li>了解 Windows 安裝 nvm 的流程</li><li>相比直接安裝,nvm 提供更彈性的環境隔離與版本降級、升級能力</li><li>建議安裝 nvm 前先移除既有 Node.js,避免檔案或路徑衝突</li><li>適合維護舊專案、測試新版 Node.js、團隊協作與 CI/CD 開發流程</li></ul></div><hr><div class="level is-flex"><div class="article-tags is-size-7"><i class="fa-solid fa-tags"></i><a class="link-muted mr-2" rel="tag" href="/tags/backend/"># backend</a><a class="link-muted mr-2" rel="tag" href="/tags/frontend/"># frontend</a><a class="link-muted mr-2" rel="tag" href="/tags/javascript/"># javascript</a><a class="link-muted mr-2" rel="tag" href="/tags/js/"># js</a><a class="link-muted mr-2" rel="tag" href="/tags/nodejs/"># nodejs</a><a class="link-muted mr-2" rel="tag" href="/tags/nvm/"># nvm</a></div><a class="article-more button is-small is-size-7" href="/Backend/Nodejs/use-nvm-to-manage-nodejs-version/"><i class="fa-brands fa-readme"></i>繼續閱讀</a></div></article></div><div class="card"><article class="card-content article" role="article"><p class="title is-3 is-size-4-mobile"><a class="link-muted" href="/Other/GitHub/github-reference-system/">【GitHub】解析 Reference System:Issue、Pull Request、Commit 如何建立關聯</a></p><div class="article-meta is-size-7 level is-mobile mb-3"><div class="level-left"><span class="level-item"><i class="fa-regular fa-calendar-days"></i><time datetime="2026-07-02T03:06:59.000Z" title="發表於2026/7/2 上午11:06:59">2026-07-02</time></span><span class="level-item is-hidden-phone"><i class="fa-regular fa-folder-open"></i><a class="link-muted" href="/categories/Other/">Other</a><span> / </span><a class="link-muted" href="/categories/Other/GitHub/">GitHub</a></span><span class="level-item copy" id="share" style="cursor:pointer" title="複製連結" data-clipboard-text="https://forgetfulengineer.github.io/Other/GitHub/github-reference-system/"><i class="fa-solid fa-link"></i>分享</span></div></div><div class="card-image"><a class="image" href="/Other/GitHub/github-reference-system/"><img class="fill" src="https://cdn.jsdelivr.net/gh/forgetfulengineer/forgetfulengineer.github.io@v-20260720-175548/gallery/covers/github-reference-system.webp" alt="【GitHub】解析 Reference System:Issue、Pull Request、Commit 如何建立關聯" loading="lazy" onerror="this.onerror=null;this.setAttribute('src', '/gallery/covers/github-reference-system.webp');"></a></div><div class="content"><h2 id="本篇重點"><a href="#本篇重點" class="headerlink" title="本篇重點"></a>本篇重點</h2><ul><li>Reference System 透過簡單的語法讓 Issue、Pull Request、Commit 建立關聯</li><li>同一個 Repository 內的所有 Issue 和 PR 共用同一組遞增的流水號</li><li>跨儲存庫參照使用 <code>owner/repo#number</code></li><li>支援文字輸入的 GitHub 介面,皆可解析並觸發參照語法</li><li>雙向追蹤機制自動建立雙向提交紀錄和通知</li><li>利用 <code>Closing Keywords</code> 關閉 issue</li></ul></div><hr><div class="level is-flex"><div class="article-tags is-size-7"><i class="fa-solid fa-tags"></i><a class="link-muted mr-2" rel="tag" href="/tags/git/"># git</a><a class="link-muted mr-2" rel="tag" href="/tags/github/"># github</a><a class="link-muted mr-2" rel="tag" href="/tags/develop/"># develop</a></div><a class="article-more button is-small is-size-7" href="/Other/GitHub/github-reference-system/"><i class="fa-brands fa-readme"></i>繼續閱讀</a></div></article></div><div class="card"><article class="card-content article" role="article"><p class="title is-3 is-size-4-mobile"><a class="link-muted" href="/Backend/Develop/search-engine-integration-for-better-performance/">【Develop】介接搜尋引擎來提升查詢效率!</a></p><div class="article-meta is-size-7 level is-mobile mb-3"><div class="level-left"><span class="level-item"><i class="fa-regular fa-calendar-days"></i><time datetime="2026-06-23T07:49:47.000Z" title="發表於2026/6/23 下午3:49:47">2026-06-23</time></span><span class="level-item is-hidden-phone"><i class="fa-regular fa-folder-open"></i><a class="link-muted" href="/categories/Backend/">Backend</a><span> / </span><a class="link-muted" href="/categories/Backend/Develop/">Develop</a></span><span class="level-item copy" id="share" style="cursor:pointer" title="複製連結" data-clipboard-text="https://forgetfulengineer.github.io/Backend/Develop/search-engine-integration-for-better-performance/"><i class="fa-solid fa-link"></i>分享</span></div></div><div class="card-image"><a class="image" href="/Backend/Develop/search-engine-integration-for-better-performance/"><img class="fill" src="https://cdn.jsdelivr.net/gh/forgetfulengineer/forgetfulengineer.github.io@v-20260720-175548/gallery/covers/search-engine-integration-for-better-performance.webp" alt="【Develop】介接搜尋引擎來提升查詢效率!" loading="lazy" onerror="this.onerror=null;this.setAttribute('src', '/gallery/covers/search-engine-integration-for-better-performance.webp');"></a></div><div class="content"><h2 id="本篇重點"><a href="#本篇重點" class="headerlink" title="本篇重點"></a>本篇重點</h2><ul><li>搜尋引擎透過建立倒排索引(Inverted Index)來提升查詢效率</li><li>一般資料庫擅長資料儲存與交易處理,搜尋引擎則專注於資料檢索</li><li>搜尋引擎的優勢是全文檢索、模糊搜尋與相關性排序</li><li>適合導入搜尋引擎的場景有哪些</li><li>搜尋引擎可作為系統架構中的檢索層,降低資料庫查詢壓力</li></ul></div><hr><div class="level is-flex"><div class="article-tags is-size-7"><i class="fa-solid fa-tags"></i><a class="link-muted mr-2" rel="tag" href="/tags/backend/"># backend</a><a class="link-muted mr-2" rel="tag" href="/tags/database/"># database</a><a class="link-muted mr-2" rel="tag" href="/tags/develop/"># develop</a><a class="link-muted mr-2" rel="tag" href="/tags/search-engine/"># search engine</a><a class="link-muted mr-2" rel="tag" href="/tags/ai-rag/"># ai rag</a></div><a class="article-more button is-small is-size-7" href="/Backend/Develop/search-engine-integration-for-better-performance/"><i class="fa-brands fa-readme"></i>繼續閱讀</a></div></article></div><div class="card"><article class="card-content article" role="article"><p class="title is-3 is-size-4-mobile"><a class="link-muted" href="/Backend/Nodejs/-cjs-vs-esm-migration-guide/">【Node.js】解析 CJS 與 ESM 核心差異和專案轉換</a></p><div class="article-meta is-size-7 level is-mobile mb-3"><div class="level-left"><span class="level-item"><i class="fa-regular fa-calendar-days"></i><time datetime="2026-06-02T03:50:24.000Z" title="發表於2026/6/2 上午11:50:24">2026-06-02</time></span><span class="level-item is-hidden-phone"><i class="fa-regular fa-folder-open"></i><a class="link-muted" href="/categories/Backend/">Backend</a><span> / </span><a class="link-muted" href="/categories/Backend/Nodejs/">Nodejs</a></span><span class="level-item copy" id="share" style="cursor:pointer" title="複製連結" data-clipboard-text="https://forgetfulengineer.github.io/Backend/Nodejs/-cjs-vs-esm-migration-guide/"><i class="fa-solid fa-link"></i>分享</span></div></div><div class="card-image"><a class="image" href="/Backend/Nodejs/-cjs-vs-esm-migration-guide/"><img class="fill" src="https://cdn.jsdelivr.net/gh/forgetfulengineer/forgetfulengineer.github.io@v-20260720-175548/gallery/covers/cjs-vs-esm-migration-guide.webp" alt="【Node.js】解析 CJS 與 ESM 核心差異和專案轉換" loading="lazy" onerror="this.onerror=null;this.setAttribute('src', '/gallery/covers/cjs-vs-esm-migration-guide.webp');"></a></div><div class="content"><h2 id="本篇重點"><a href="#本篇重點" class="headerlink" title="本篇重點"></a>本篇重點</h2><ul><li>解析 CommonJS(CJS)與 ES Modules(ESM)模組語法差異</li><li>CJS 使用 <code>require()</code> 與 <code>module.exports</code>,ESM 使用 <code>import</code> 與 <code>export</code></li><li>CJS 採同步載入,ESM 採靜態分析與非同步初始化</li><li>ESM 天生支援 Tree Shaking,利於效能優化</li><li>整理專案 CJS 到 ESM 的轉換,通常需要調整載入、輸出、路徑、副檔名、全域變數等寫法</li></ul></div><hr><div class="level is-flex"><div class="article-tags is-size-7"><i class="fa-solid fa-tags"></i><a class="link-muted mr-2" rel="tag" href="/tags/backend/"># backend</a><a class="link-muted mr-2" rel="tag" href="/tags/javascript/"># javascript</a><a class="link-muted mr-2" rel="tag" href="/tags/js/"># js</a><a class="link-muted mr-2" rel="tag" href="/tags/nodejs/"># nodejs</a><a class="link-muted mr-2" rel="tag" href="/tags/cjs/"># cjs</a><a class="link-muted mr-2" rel="tag" href="/tags/esm/"># esm</a></div><a class="article-more button is-small is-size-7" href="/Backend/Nodejs/-cjs-vs-esm-migration-guide/"><i class="fa-brands fa-readme"></i>繼續閱讀</a></div></article></div><div class="card"><article class="card-content article" role="article"><p class="title is-3 is-size-4-mobile"><a class="link-muted" href="/Other/ide-disappeared-after-recovery/">【Antigravity】自動更新後編輯器因此消失,如何恢復原本的編輯器與設定</a></p><div class="article-meta is-size-7 level is-mobile mb-3"><div class="level-left"><span class="level-item"><i class="fa-regular fa-calendar-days"></i><time datetime="2026-05-20T06:52:57.000Z" title="發表於2026/5/20 下午2:52:57">2026-05-20</time></span><span class="level-item is-hidden-phone"><i class="fa-regular fa-folder-open"></i><a class="link-muted" href="/categories/Other/">Other</a></span><span class="level-item copy" id="share" style="cursor:pointer" title="複製連結" data-clipboard-text="https://forgetfulengineer.github.io/Other/ide-disappeared-after-recovery/"><i class="fa-solid fa-link"></i>分享</span></div></div><div class="card-image"><a class="image" href="/Other/ide-disappeared-after-recovery/"><img class="fill" src="https://cdn.jsdelivr.net/gh/forgetfulengineer/forgetfulengineer.github.io@v-20260720-175548/gallery/covers/ide-disappeared-after-recovery.webp" alt="【Antigravity】自動更新後編輯器因此消失,如何恢復原本的編輯器與設定" loading="lazy" onerror="this.onerror=null;this.setAttribute('src', '/gallery/covers/ide-disappeared-after-recovery.webp');"></a></div><div class="content"><h2 id="本篇重點"><a href="#本篇重點" class="headerlink" title="本篇重點"></a>本篇重點</h2><ul><li>Antigravity 2.0 不再以「AI IDE」為核心,而是改為 autonomous AI agent 平台</li><li>如何找回原本的 Antigravity IDE</li><li>如何恢復原本 IDE 設定與 AI 對話紀錄</li></ul></div><hr><div class="level is-flex"><div class="article-tags is-size-7"><i class="fa-solid fa-tags"></i><a class="link-muted mr-2" rel="tag" href="/tags/google/"># google</a><a class="link-muted mr-2" rel="tag" href="/tags/ai/"># ai</a><a class="link-muted mr-2" rel="tag" href="/tags/gemini/"># gemini</a><a class="link-muted mr-2" rel="tag" href="/tags/antigravity/"># antigravity</a><a class="link-muted mr-2" rel="tag" href="/tags/ide/"># ide</a></div><a class="article-more button is-small is-size-7" href="/Other/ide-disappeared-after-recovery/"><i class="fa-brands fa-readme"></i>繼續閱讀</a></div></article></div><nav class="pagination" role="navigation" aria-label="pagination"><div class="pagination-previous is-invisible is-hidden-mobile"><a href="/page/0/">上一頁</a></div><div class="pagination-next"><a href="/page/2/">下一頁</a></div><ul class="pagination-list is-hidden-mobile"><li><a class="pagination-link is-current" href="/">1</a></li><li><a class="pagination-link" href="/page/2/">2</a></li><li><span class="pagination-ellipsis">…</span></li><li><a class="pagination-link" href="/page/12/">12</a></li></ul></nav></div><div class="column column-left is-3-tablet is-3-desktop is-3-widescreen order-1 is-sticky"><div class="card widget is-hidden-mobile" data-type="profile"><div class="card-content"><nav class="level"><div class="level-item has-text-centered flex-shrink-1"><div><p class="title is-size-4 is-size-5-touch is-block" style="line-height:inherit">健忘工程師</p><p class="is-size-6-fullhd is-size-7-widescreen is-hidden-touch is-hidden-desktop-only is-block">thatforgetfulengineer@gmail.com</p></div></div></nav><nav class="level is-mobile"><div class="level-item has-text-centered is-marginless"><div><p class="heading">文章</p><a href="/archives/"><p class="title">58</p></a></div></div><div class="level-item has-text-centered is-marginless"><div><p class="heading">分類</p><a href="/categories/"><p class="title">20</p></a></div></div><div class="level-item has-text-centered is-marginless"><div><p class="heading">標籤</p><a href="/tags/"><p class="title">46</p></a></div></div></nav><div class="level"><a class="level-item button is-primary is-rounded" href="https://github.com/forgetfulengineer/about/" target="_blank" rel="me noopener">追蹤</a></div><div class="level is-mobile is-multiline"><a class="level-item button is-transparent is-marginless" target="_blank" rel="me noopener" title="Youtube" href="https://www.youtube.com/@forgetful_engineer_playlist"><i class="fab fa-youtube"></i></a><a class="level-item button is-transparent is-marginless" target="_blank" rel="me noopener" title="Github" href="https://github.com/forgetfulengineer"><i class="fab fa-github"></i></a></div></div></div><div class="card widget" data-type="subscribe-email"><div class="card-content"><div class="menu"><h3 class="menu-label">follow.it</h3><form action="https://api.follow.it/subscription-form/bUQxT0dsMEE0T1h0YWpOLzZVMDhSaGM3OTNxa2xIeW9jRWxFV1J4V0xZdzh2YWlJTzhCQW84Nm9wQ1htK0JFWHBDUkhUaThoekZwT3VzdFFQS3JGNHhDSTdXMk12eW5NRkY4U3JqN0psL3h6Z0lvSjBFNE85UUVUbGx5b3U0YnV8S1ROSWxhZXlXT0VEdnc1cHRYaHlYY0FZU2pUS3oycGlBS1pzL1hhZ3IzUT0=/8" method="post" target="_blank"><div class="field has-addons"><div class="control has-icons-left is-expanded"><input class="input" name="email" type="email" placeholder="Email"><span class="icon is-small is-left"><i class="fas fa-envelope"></i></span></div><div class="control"><input class="button" type="submit" value="訂閱"></div></div><p class="help">歡迎訂閱電子報!追蹤【健忘工程師】的最新資訊~</p></form></div></div></div><div class="card widget" data-type="adsense"><div class="card-content"><div class="menu"><h3 class="menu-label">廣告</h3><script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-4668744174470418" data-ad-slot="8144789411" data-ad-format="auto" data-full-width-responsive="true"></ins><script>(adsbygoogle=window.adsbygoogle||[]).push({})</script></div></div></div><div class="column-right-shadow is-hidden-widescreen is-sticky"></div></div><div class="column column-right is-3-tablet is-3-desktop is-3-widescreen is-hidden-touch is-hidden-desktop-only order-3 is-sticky"><div class="card widget" data-type="tags"><div class="card-content"><div class="menu"><h3 class="menu-label">標籤</h3><div class="field is-grouped is-grouped-multiline"><div class="control"><a class="tags has-addons" href="/tags/ai/"><span class="tag">ai</span></a></div><div class="control"><a class="tags has-addons" href="/tags/ai-rag/"><span class="tag">ai rag</span></a></div><div class="control"><a class="tags has-addons" href="/tags/antigravity/"><span class="tag">antigravity</span></a></div><div class="control"><a class="tags has-addons" href="/tags/api/"><span class="tag">api</span></a></div><div class="control"><a class="tags has-addons" href="/tags/backend/"><span class="tag">backend</span></a></div><div class="control"><a class="tags has-addons" href="/tags/ci-cd/"><span class="tag">ci/cd</span></a></div><div class="control"><a class="tags has-addons" href="/tags/cjs/"><span class="tag">cjs</span></a></div><div class="control"><a class="tags has-addons" href="/tags/css/"><span class="tag">css</span></a></div><div class="control"><a class="tags has-addons" href="/tags/database/"><span class="tag">database</span></a></div><div class="control"><a class="tags has-addons" href="/tags/db/"><span class="tag">db</span></a></div><div class="control"><a class="tags has-addons" href="/tags/develop/"><span class="tag">develop</span></a></div><div class="control"><a class="tags has-addons" href="/tags/devops/"><span class="tag">devops</span></a></div><div class="control"><a class="tags has-addons" href="/tags/esm/"><span class="tag">esm</span></a></div><div class="control"><a class="tags has-addons" href="/tags/frontend/"><span class="tag">frontend</span></a></div><div class="control"><a class="tags has-addons" href="/tags/ga/"><span class="tag">ga</span></a></div><div class="control"><a class="tags has-addons" href="/tags/gemini/"><span class="tag">gemini</span></a></div><div class="control"><a class="tags has-addons" href="/tags/git/"><span class="tag">git</span></a></div><div class="control"><a class="tags has-addons" href="/tags/git-bash/"><span class="tag">git bash</span></a></div><div class="control"><a class="tags has-addons" href="/tags/github/"><span class="tag">github</span></a></div><div class="control"><a class="tags has-addons" href="/tags/google/"><span class="tag">google</span></a></div></div></div></div></div><div class="card widget" data-type="adsense"><div class="card-content"><div class="menu"><h3 class="menu-label">廣告</h3><script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-4668744174470418" data-ad-slot="2860076679" data-ad-format="auto" data-full-width-responsive="true"></ins><script>(adsbygoogle=window.adsbygoogle||[]).push({})</script></div></div></div></div></div></div></section><footer class="footer"><div class="container"><div class="level"><div class="level-start"><a class="footer-logo is-block mb-2" href="/"><img src="https://cdn.jsdelivr.net/gh/forgetfulengineer/forgetfulengineer.github.io@v-20260720-175548/img/logo.svg" alt="健忘工程師" height="28" onerror="this.onerror=null;this.setAttribute('src', '/img/logo.svg');"></a><p class="is-size-7"><span>© 2026 健忘工程師</span> Powered by <a href="https://hexo.io/" target="_blank" rel="noopener">Hexo</a> & <a href="https://github.com/ppoffice/hexo-theme-icarus" target="_blank" rel="noopener">Icarus</a><br><span id="ga_container_site_pvuv"><i class="far fa-eye"></i>總瀏覽數:<span id="ga_value_site_pv">-</span> <i class="fa-solid fa-person-walking"></i>總訪客數:<span id="ga_value_site_uv">-</span></span></p></div><div class="level-end"><div class="field has-addons"><p class="control"><a class="button is-transparent is-large" target="_blank" rel="noopener" title="About" href="https://forgetfulengineer.github.io/about/"><i class="fa-solid fa-circle-user"></i></a></p><p class="control"><a class="button is-transparent is-large" target="_blank" rel="noopener" title="Tool" href="https://forgetfulengineer.github.io/categories/Other/Tool/"><i class="fa-solid fa-screwdriver-wrench"></i></a></p><p class="control"><a class="button is-transparent is-large" target="_blank" rel="noopener" title="Cookie Policy" href="https://forgetfulengineer.github.io/cookie-policy/"><i class="fa-solid fa-cookie"></i></a></p><p class="control"><a class="button is-transparent is-large" target="_blank" rel="noopener" title="Youtube" href="https://www.youtube.com/@forgetful_engineer_playlist"><i class="fab fa-youtube"></i></a></p><p class="control"><a class="button is-transparent is-large" target="_blank" rel="noopener" title="GitHub" href="https://github.com/forgetfulengineer"><i class="fab fa-github"></i></a></p><p class="control"><a class="button is-transparent is-large" target="_blank" rel="noopener" title="RSS" href="/atom.xml"><i class="fas fa-rss"></i></a></p><p class="control"><a class="button is-transparent is-large" target="_blank" rel="noopener" title="CC BY-NC-SA 4.0" href="https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.zh-hant"><i class="fab fa-creative-commons"></i> <i class="fab fa-creative-commons-by"></i> <i class="fab fa-creative-commons-nc"></i> <i class="fab fa-creative-commons-sa"></i> </a></p></div></div></div></div></footer><script src="https://cdn.jsdelivr.net/npm/jquery@3.3.1/dist/jquery.min.js" defer="defer"></script><script src="https://cdn.jsdelivr.net/npm/clipboard@2.0.4/dist/clipboard.min.js" defer="defer"></script><script data-pjax="" src="https://cdn.jsdelivr.net/gh/forgetfulengineer/forgetfulengineer.github.io@v-20260720-175548/js/column.js" defer="true" onerror="this.onerror=null;var s=document.createElement('script');s.src='/js/column.js';document.head.appendChild(s);this.remove();"></script><script data-pjax="" src="https://cdn.jsdelivr.net/gh/forgetfulengineer/forgetfulengineer.github.io@v-20260720-175548/js/animation.js" onerror="this.onerror=null;var s=document.createElement('script');s.src='/js/animation.js';document.head.appendChild(s);this.remove();"></script><a id="back-to-top" title="回到頁首" href="javascript:;"><i class="fas fa-chevron-up"></i></a><script data-pjax="" src="https://cdn.jsdelivr.net/gh/forgetfulengineer/forgetfulengineer.github.io@v-20260720-175548/js/back_to_top.js" defer="true" onerror="this.onerror=null;var s=document.createElement('script');s.src='/js/back_to_top.js';document.head.appendChild(s);this.remove();"></script><script src="https://cdn.jsdelivr.net/npm/cookieconsent@3.1.1/build/cookieconsent.min.js" defer="defer"></script><script>window.addEventListener("load",()=>{window.cookieconsent.initialise({type:"info",theme:"classic",static:!1,position:"bottom-left",content:{message:"此網站使用Cookie來改善您的體驗。",dismiss:"知道了!",allow:"允許使用Cookie",deny:"拒絕",link:"了解更多",policy:"Cookie政策",href:"/cookie-policy/"},palette:{popup:{background:"#edeff5",text:"#838391"},button:{background:"#4b81e8"}}})})</script><script src="https://cdn.jsdelivr.net/npm/lightgallery@1.10.0/dist/js/lightgallery.min.js" defer="defer"></script><!--!--><script src="https://cdn.jsdelivr.net/npm/countup.js@2.9.0/dist/countUp.umd.js" defer="defer"></script><script>async function fetchAndRenderGAData(){try{var a=await fetch("https://forgetfulengineer-ga-data.netlify.app/.netlify/functions/pageview");if(!a.ok)throw new Error("API 回應錯誤");let e=await a.json(),t=(e,t)=>{document.getElementById(e)&&window.countUp&&new countUp.CountUp(e,t,{enableScrollSpy:!0,scrollSpyOnce:!0})};requestAnimationFrame(()=>{t("ga_value_site_pv",e.pv),t("ga_value_site_uv",e.uv),t("ga_value_page_pv",e.pageViews)})}catch(e){console.error("獲取 GA 數據失敗:",e)}}"requestIdleCallback"in window?window.requestIdleCallback(fetchAndRenderGAData,{timeout:2e3}):window.addEventListener("load",()=>{fetchAndRenderGAData()})</script><script data-pjax="" src="https://cdn.jsdelivr.net/gh/forgetfulengineer/forgetfulengineer.github.io@v-20260720-175548/js/main.js" defer="true" onerror="this.onerror=null;var s=document.createElement('script');s.src='/js/main.js';document.head.appendChild(s);this.remove();"></script><div class="searchbox"><div class="searchbox-mask" style="position:absolute;bottom:0;left:0;right:0;top:0"></div><div class="searchbox-container"><div class="searchbox-header"><div class="searchbox-input-container" id="algolia-input"></div><div id="algolia-poweredby" style="display:flex;margin:0 .5em 0 1em;align-items:center;line-height:0"></div><a class="searchbox-close" href="javascript:;">×</a></div><div class="searchbox-body"></div><div class="searchbox-footer"></div></div></div><script src="https://cdn.jsdelivr.net/npm/algoliasearch@4.0.3/dist/algoliasearch-lite.umd.js" crossorigin="anonymous" defer="defer"></script><script src="https://cdn.jsdelivr.net/npm/instantsearch.js@4.3.1/dist/instantsearch.production.min.js" crossorigin="anonymous" defer="defer"></script><script src="https://cdn.jsdelivr.net/gh/forgetfulengineer/forgetfulengineer.github.io@v-20260720-175548/js/algolia.js" defer="true" onerror="this.onerror=null;var s=document.createElement('script');s.src='/js/algolia.js';document.head.appendChild(s);this.remove();"></script><script>document.addEventListener("DOMContentLoaded",function(){loadAlgolia({applicationId:"7ZUL91XZER",apiKey:"cf69122ca5c6091c28a5e86093fdb88b",indexName:"Forgetful engineer"},{hint:"請輸入關鍵字...",no_result:"未找到搜索結果",untitled:"(無標題)",empty_preview:"(無內容預覽)"})})</script><div class="notification"><i class="fa-regular fa-copy"></i>複製完成</div></body></html>