-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
1 lines (1 loc) · 29 KB
/
index.html
1
<!doctype html><html lang=zh><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=/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=/img/web_app-128x128.png><meta name=description content=健忘沒關係,努力有痕跡;健忘沒關係,好險有筆記,嗨!這裡是健忘工程師的學習筆記,歡迎來這裡逛逛~😁><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=健忘沒關係,努力有痕跡;健忘沒關係,好險有筆記,嗨!這裡是健忘工程師的學習筆記,歡迎來這裡逛逛~😁><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","@type":"BlogPosting","mainEntityOfPage":{"@type":"WebPage","@id":"https://forgetfulengineer.github.io"},"headline":"健忘工程師","image":["https://forgetfulengineer.github.io/img/og_image.png"],"author":{"@type":"Person","name":"健忘工程師"},"publisher":{"@type":"Organization","name":"健忘工程師","logo":{"@type":"ImageObject","url":"https://forgetfulengineer.github.io/img/logo.svg"}},"description":"健忘沒關係,努力有痕跡;健忘沒關係,好險有筆記,嗨!這裡是健忘工程師的學習筆記,歡迎來這裡逛逛~😁"}</script><link rel=preload href=https://cdn.jsdelivr.net/npm/@fortawesome/[email protected]/webfonts/fa-solid-900.woff2 as=font type=font/woff2 crossorigin=anonymous><link rel=preload href=https://cdn.jsdelivr.net/npm/@fortawesome/[email protected]/webfonts/fa-regular-400.woff2 as=font type=font/woff2 crossorigin=anonymous><link rel=preload href=https://cdn.jsdelivr.net/npm/@fortawesome/[email protected]/webfonts/fa-brands-400.woff2 as=font type=font/woff2 crossorigin=anonymous><link rel=preload href=https://cdn.jsdelivr.net/npm/@fortawesome/[email protected]/css/all.min.css as=style onload="this.rel='stylesheet'" crossorigin=anonymous><link rel=preconnect href=https://fonts.gstatic.com crossorigin><link rel=icon href=/img/favicon.svg><link data-pjax rel=stylesheet href=https://cdn.jsdelivr.net/npm/[email protected]/styles/atom-one-light.css><link rel=stylesheet href="https://fonts.googleapis.com/css2?family=Noto+Sans+TC:wght@500&display=swap&family=Inconsolata:wdth,[email protected],600"><link rel=stylesheet href=/css/default.css><style>body>.footer,body>.navbar,body>.section{opacity:0}</style><!--!--><link rel=stylesheet href=https://cdn.jsdelivr.net/npm/[email protected]/build/cookieconsent.min.css><link rel=stylesheet href=https://cdn.jsdelivr.net/npm/[email protected]/dist/css/lightgallery.min.css><link rel=stylesheet href=https://cdn.jsdelivr.net/npm/[email protected]/dist/css/justifiedGallery.min.css><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 e(){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")}e(),window.addEventListener("hashchange",e,!1)})()</script><meta name=generator content="Hexo 7.3.0"><link rel=alternate href=/atom.xml title=健忘工程師 type=application/atom+xml><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=/img/logo.svg alt=健忘工程師 height=28></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/Linux/ >Linux</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><a class=navbar-item href=/categories/Frontend/JQuery/ >JQuery</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/GitHub/ >GitHub</a><a class=navbar-item href=/categories/Other/VSCode/ >VSCode</a><a class=navbar-item href=/categories/Other/Hexo/ >Hexo</a><a class=navbar-item href=/categories/Other/NPM/ >NPM</a><a class=navbar-item href=/categories/Other/Tool/ >Tool</a></div></div></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=/Frontend/Html/Fixing-Scroll-Effect-Misalignment-Caused-by-Lazy-Loading/ >【HTML】解決 Lazy loading 導致滾動定位不準的問題</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=2025-04-14T02:08:16.000Z title="發表於2025/4/14 上午10:08:16">2025-04-14</time></span><span class="level-item is-hidden-phone"><i class="fa-regular fa-folder-open"></i><a class=link-muted href=/categories/Frontend/ >Frontend</a><span> / </span><a class=link-muted href=/categories/Frontend/Html/ >Html</a></span><span class="level-item copy" id=share style=cursor:pointer title=複製連結 data-clipboard-text=https://forgetfulengineer.github.io/Frontend/Html/Fixing-Scroll-Effect-Misalignment-Caused-by-Lazy-Loading/ ><i class="fa-solid fa-link"></i>分享</span></div></div><div class=card-image><a class=image href=/Frontend/Html/Fixing-Scroll-Effect-Misalignment-Caused-by-Lazy-Loading/ ><img class=fill src=/gallery/covers/Fixing-Scroll-Effect-Misalignment-Caused-by-Lazy-Loading.png alt="【HTML】解決 Lazy loading 導致滾動定位不準的問題" loading=lazy></a></div><div class=content><h2 id=本篇重點><a href=#本篇重點 class=headerlink title=本篇重點></a>本篇重點</h2><ul><li>解決 Lazy loading 導致 <code>.scrollIntoView()</code> 滾動定位不準的問題</li><li>檢查目標元素是否進入視窗的方式</li><li><code>.getBoundingClientRect()</code>、<code>window.innerHeight</code>、<code>.clientHeight</code> 的應用</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/frontend/ ># frontend</a><a class="link-muted mr-2" rel=tag href=/tags/html/ ># html</a><a class="link-muted mr-2" rel=tag href=/tags/javascript/ ># javascript</a></div><a class="article-more button is-small is-size-7" href=/Frontend/Html/Fixing-Scroll-Effect-Misalignment-Caused-by-Lazy-Loading/ ><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/MySQL/Execution-Order-and-Performance-Optimization-of-DQL-Commands/ >【MySQL】DQL 指令的執行順序與效能優化</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=2025-03-25T05:33:40.000Z title="發表於2025/3/25 下午1:33:40">2025-03-25</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/MySQL/ >MySQL</a></span><span class="level-item copy" id=share style=cursor:pointer title=複製連結 data-clipboard-text=https://forgetfulengineer.github.io/Backend/MySQL/Execution-Order-and-Performance-Optimization-of-DQL-Commands/ ><i class="fa-solid fa-link"></i>分享</span></div></div><div class=card-image><a class=image href=/Backend/MySQL/Execution-Order-and-Performance-Optimization-of-DQL-Commands/ ><img class=fill src=/gallery/covers/Execution-Order-and-Performance-Optimization-of-DQL-Commands.png alt="【MySQL】DQL 指令的執行順序與效能優化" loading=lazy></a></div><div class=content><h2 id=本篇重點><a href=#本篇重點 class=headerlink title=本篇重點></a>本篇重點</h2><ul><li>了解 <code>DQL</code> 指令的執行順序,從 <code>FROM</code> 到 <code>LIMIT/OFFSET</code></li><li>每個步驟會產生一張虛擬表供下一步驟使用,透過執行順序,可以減少不必要的資料處理,提升查詢效能</li><li>各個 <code>DQL</code> 指令的使用重點</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/mysql/ ># mysql</a><a class="link-muted mr-2" rel=tag href=/tags/database/ ># database</a><a class="link-muted mr-2" rel=tag href=/tags/db/ ># db</a></div><a class="article-more button is-small is-size-7" href=/Backend/MySQL/Execution-Order-and-Performance-Optimization-of-DQL-Commands/ ><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=/Frontend/Html/Data-Attribute-Naming-Conventions-and-Retrieval-Methods/ >【Html】自定義屬性:data-* 的命名規則和取值方法</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=2025-03-13T00:18:33.000Z title="發表於2025/3/13 上午8:18:33">2025-03-13</time></span><span class="level-item is-hidden-phone"><i class="fa-regular fa-folder-open"></i><a class=link-muted href=/categories/Frontend/ >Frontend</a><span> / </span><a class=link-muted href=/categories/Frontend/Html/ >Html</a></span><span class="level-item copy" id=share style=cursor:pointer title=複製連結 data-clipboard-text=https://forgetfulengineer.github.io/Frontend/Html/Data-Attribute-Naming-Conventions-and-Retrieval-Methods/ ><i class="fa-solid fa-link"></i>分享</span></div></div><div class=card-image><a class=image href=/Frontend/Html/Data-Attribute-Naming-Conventions-and-Retrieval-Methods/ ><img class=fill src=/gallery/covers/Data-Attribute-Naming-Conventions-and-Retrieval-Methods.png alt="【Html】自定義屬性:data-* 的命名規則和取值方法" loading=lazy></a></div><div class=content><h2 id=本篇重點><a href=#本篇重點 class=headerlink title=本篇重點></a>本篇重點</h2><ul><li>屬性必須以 <code>data-</code> 為前綴</li><li>建議使用 kebab-case 命名</li><li><code>data-*</code> 的常見應用時機</li><li>JavaScript 使用 <code>dataset.</code> 取值</li><li>jQuery 使用 <code>.data()</code> 或是 <code>.attr()</code> 取值</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/jquery/ ># jquery</a><a class="link-muted mr-2" rel=tag href=/tags/frontend/ ># frontend</a><a class="link-muted mr-2" rel=tag href=/tags/html/ ># html</a><a class="link-muted mr-2" rel=tag href=/tags/javascript/ ># javascript</a></div><a class="article-more button is-small is-size-7" href=/Frontend/Html/Data-Attribute-Naming-Conventions-and-Retrieval-Methods/ ><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/PHP/Five-Useful-Date-and-Time-Functions/ >【PHP】五種實用的日期時間函數</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=2025-02-26T09:58:44.000Z title="發表於2025/2/26 下午5:58:44">2025-02-26</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/PHP/ >PHP</a></span><span class="level-item copy" id=share style=cursor:pointer title=複製連結 data-clipboard-text=https://forgetfulengineer.github.io/Backend/PHP/Five-Useful-Date-and-Time-Functions/ ><i class="fa-solid fa-link"></i>分享</span></div></div><div class=card-image><a class=image href=/Backend/PHP/Five-Useful-Date-and-Time-Functions/ ><img class=fill src=/gallery/covers/Five-Useful-Date-and-Time-Functions.png alt=【PHP】五種實用的日期時間函數 loading=lazy></a></div><div class=content><h2 id=本篇重點><a href=#本篇重點 class=headerlink title=本篇重點></a>本篇重點</h2><ul><li><code>time()</code> 取得當前時間戳記</li><li><code>date()</code> 格式化時間</li><li><code>strtotime()</code> 將字串轉換為時間戳記</li><li><code>mktime()</code> 建立時間戳記</li><li><code>checkdate()</code> 驗證日期是否有效</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/php/ ># php</a><a class="link-muted mr-2" rel=tag href=/tags/backend/ ># backend</a><a class="link-muted mr-2" rel=tag href=/tags/timestamp/ ># timestamp</a></div><a class="article-more button is-small is-size-7" href=/Backend/PHP/Five-Useful-Date-and-Time-Functions/ ><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/Git/Using-Git-Rebase-to-Organize-Commit-History/ >【Git】使用 git rebase 整理提交歷史</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=2025-02-14T05:34:06.000Z title="發表於2025/2/14 下午1:34:06">2025-02-14</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/Git/ >Git</a></span><span class="level-item copy" id=share style=cursor:pointer title=複製連結 data-clipboard-text=https://forgetfulengineer.github.io/Other/Git/Using-Git-Rebase-to-Organize-Commit-History/ ><i class="fa-solid fa-link"></i>分享</span></div></div><div class=card-image><a class=image href=/Other/Git/Using-Git-Rebase-to-Organize-Commit-History/ ><img class=fill src=/gallery/covers/Using-Git-Rebase-to-Organize-Commit-History.png alt="【Git】使用 git rebase 整理提交歷史" loading=lazy></a></div><div class=content><h2 id=本篇重點><a href=#本篇重點 class=headerlink title=本篇重點></a>本篇重點</h2><ul><li>如果有尚未提交的變更,無法使用 <code>git rebase</code></li><li><code>git rebase</code> 合併不會產生額外的合併提交,但是會變更原本的提交 ID</li><li><code>git rebase -i</code>(互動式 rebase)編輯功能</li><li>使用 <code>git rebase -i</code> 調整提交順序、修改提交訊息、修改提交內容、合併提交、刪除提交</li><li><code>git rebase</code> 的注意事項</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/terminal/ ># terminal</a><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></div><a class="article-more button is-small is-size-7" href=/Other/Git/Using-Git-Rebase-to-Organize-Commit-History/ ><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/6/ >6</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">[email protected]</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>27</p></a></div></div><div class="level-item has-text-centered is-marginless"><div><p class=heading>分類</p><a href=/categories/ ><p class=title>16</p></a></div></div><div class="level-item has-text-centered is-marginless"><div><p class=heading>標籤</p><a href=/tags/ ><p class=title>24</p></a></div></div></nav><div class=level><a class="level-item button is-primary is-rounded" href=https://github.com/forgetfulengineer 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/backend/ ><span class=tag>backend</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/frontend/ ><span class=tag>frontend</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/hexo/ ><span class=tag>hexo</span></a></div><div class=control><a class="tags has-addons" href=/tags/html/ ><span class=tag>html</span></a></div><div class=control><a class="tags has-addons" href=/tags/javascript/ ><span class=tag>javascript</span></a></div><div class=control><a class="tags has-addons" href=/tags/jquery/ ><span class=tag>jquery</span></a></div><div class=control><a class="tags has-addons" href=/tags/js/ ><span class=tag>js</span></a></div><div class=control><a class="tags has-addons" href=/tags/linux/ ><span class=tag>linux</span></a></div><div class=control><a class="tags has-addons" href=/tags/mysql/ ><span class=tag>mysql</span></a></div><div class=control><a class="tags has-addons" href=/tags/npm/ ><span class=tag>npm</span></a></div><div class=control><a class="tags has-addons" href=/tags/php/ ><span class=tag>php</span></a></div><div class=control><a class="tags has-addons" href=/tags/security/ ><span class=tag>security</span></a></div><div class=control><a class="tags has-addons" href=/tags/seo/ ><span class=tag>seo</span></a></div><div class=control><a class="tags has-addons" href=/tags/system/ ><span class=tag>system</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=/img/logo.svg alt=健忘工程師 height=28></a><p class=is-size-7><span>© 2025 健忘工程師</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></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="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/[email protected]/dist/jquery.min.js></script><script src=https://cdn.jsdelivr.net/npm/[email protected]/dist/clipboard.min.js defer=defer></script><script>var IcarusThemeSettings={article:{highlight:{clipboard:!0,fold:"unfolded"}}}</script><script data-pjax src=/js/column.js defer=defer></script><script data-pjax src=/js/animation.js></script><a id=back-to-top title=回到頁首 href=javascript:;><i class="fas fa-chevron-up"></i></a><script data-pjax src=/js/back_to_top.js defer=defer></script><script src=https://cdn.jsdelivr.net/npm/[email protected]/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/[email protected]/dist/js/lightgallery.min.js defer=defer></script><script src=https://cdn.jsdelivr.net/npm/[email protected]/dist/js/jquery.justifiedGallery.min.js defer=defer></script><script>window.addEventListener("load",()=>{"function"==typeof $.fn.lightGallery&&$(".article").lightGallery({selector:".gallery-item"}),"function"==typeof $.fn.justifiedGallery&&($(".justified-gallery > p > .gallery-item").length&&$(".justified-gallery > p > .gallery-item").unwrap(),$(".justified-gallery").justifiedGallery())})</script><!--!--><script data-pjax src=/js/main.js defer=defer></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/[email protected]/dist/algoliasearch-lite.umd.js crossorigin=anonymous defer=defer></script><script src=https://cdn.jsdelivr.net/npm/[email protected]/dist/instantsearch.production.min.js crossorigin=anonymous defer=defer></script><script src=/js/algolia.js defer=defer></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>