1<!doctype html><html lang="zh-CN"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="theme-color" media="(prefers-color-scheme: light)" content="#f7f7f7"><meta name="theme-color" media="(prefers-color-scheme: dark)" content="#1b1b1e"><meta name="viewport" content="width=device-width, user-scalable=no initial-scale=1, shrink-to-fit=no, viewport-fit=cover" ><meta name="generator" content="Jekyll v4.4.1" /><meta property="og:title" content="ä¸ç§ç¿æ¥åæ¨ï¼å½»å¤é¾ç ï¼é¶è½æ è¨ï¼æ²ç欲ç»ï¼æ
使¤ç¯ã离å«èµã" /><meta property="og:locale" content="zh_CN" /><meta name="description" content="乿æ¸
ç§ï¼ç½é²ä¸ºéï¼ç¸æåå¿§ï¼ä¸å¤å½·å¾¨ã ä¸¾æ¯æ¬²éï¼éä¸ææ¬¢ï¼ä¸´å²æ è¨ï¼æ¨å°å«ç¦»ã éæ³¢æ»¡åºï¼å浦波åï¼å¤éå³äºï¼å¯èå½éã" /><meta name="twitter:description" property="og:description" content="乿æ¸
ç§ï¼ç½é²ä¸ºéï¼ç¸æåå¿§ï¼ä¸å¤å½·å¾¨ã ä¸¾æ¯æ¬²éï¼éä¸ææ¬¢ï¼ä¸´å²æ è¨ï¼æ¨å°å«ç¦»ã éæ³¢æ»¡åºï¼å浦波åï¼å¤éå³äºï¼å¯èå½éã" /><link rel="canonical" href="https://exyon.ee/posts/sorrow-and-farewell/" /><meta property="og:url" content="https://exyon.ee/posts/sorrow-and-farewell/" /><meta property="og:site_name" content="Exyoneâs Blog" /><meta property="og:type" content="article" /><meta property="article:published_time" content="2026-09-26T08:00:00+08:00" /><meta property="article:modified_time" content="2026-09-26T08:00:00+08:00" /><meta name="twitter:card" content="summary" /><meta name="twitter:title" content="ä¸ç§ç¿æ¥åæ¨ï¼å½»å¤é¾ç ï¼é¶è½æ è¨ï¼æ²ç欲ç»ï¼æ
使¤ç¯ã离å«èµã" /><meta name="twitter:site" content="@exyone_t3a" /><meta name="google-site-verification" content="kBZNtZYwiUvmQLdeBYw3KVii7WNN8MEFG3yZlizKv08" />
1<script type="application/ld+json"> {"@context":"https://schema.org","@type":"BlogPosting","dateModified":"2026-09-26T08:00:00+08:00","datePublished":"2026-09-26T08:00:00+08:00","description":"乿æ¸
ç§ï¼ç½é²ä¸ºéï¼ç¸æåå¿§ï¼ä¸å¤å½·å¾¨ã ä¸¾æ¯æ¬²éï¼éä¸ææ¬¢ï¼ä¸´å²æ è¨ï¼æ¨å°å«ç¦»ã éæ³¢æ»¡åºï¼å浦波åï¼å¤éå³äºï¼å¯èå½éã","headline":"ä¸ç§ç¿æ¥åæ¨ï¼å½»å¤é¾ç ï¼é¶è½æ è¨ï¼æ²ç欲ç»ï¼æ
使¤ç¯ã离å«èµã","mainEntityOfPage":{"@type":"WebPage","@id":"https://exyon.ee/posts/sorrow-and-farewell/"},"url":"https://exyon.ee/posts/sorrow-and-farewell/"}</script>
1<title>ä¸ç§ç¿æ¥åæ¨ï¼å½»å¤é¾ç ï¼é¶è½æ è¨ï¼æ²ç欲ç»ï¼æ
使¤ç¯ã离å«èµã | Exyone's Blog</title><link rel="apple-touch-icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' class='bi bi-cloud-drizzle' viewBox='0 0 16 16'%3E%3Cpath d='M4.158 12.025a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 0 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317m6 0a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 0 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317m-3.5 1.5a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 0 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317m6 0a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317m.747-8.498a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 11H13a3 3 0 0 0 .405-5.973M8.5 2a4 4 0 0 1 3.976 3.555.5.5 0 0 0 .5.445H13a2 2 0 0 1 0 4H3.5a2.5 2.5 0 1 1 .605-4.926.5.5 0 0 0 .596-.329A4 4 0 0 1 8.5 2'/%3E%3C/svg%3E"><link rel="apple-touch-icon-precomposed" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' class='bi bi-cloud-drizzle' viewBox='0 0 16 16'%3E%3Cpath d='M4.158 12.025a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 0 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317m6 0a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 0 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317m-3.5 1.5a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 0 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317m6 0a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317m.747-8.498a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 11H13a3 3 0 0 0 .405-5.973M8.5 2a4 4 0 0 1 3.976 3.555.5.5 0 0 0 .5.445H13a2 2 0 0 1 0 4H3.5a2.5 2.5 0 1 1 .605-4.926.5.5 0 0 0 .596-.329A4 4 0 0 1 8.5 2'/%3E%3C/svg%3E"><link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' class='bi bi-cloud-drizzle' viewBox='0 0 16 16'%3E%3Cpath d='M4.158 12.025a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 0 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317m6 0a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 0 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317m-3.5 1.5a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 0 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317m6 0a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317m.747-8.498a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 11H13a3 3 0 0 0 .405-5.973M8.5 2a4 4 0 0 1 3.976 3.555.5.5 0 0 0 .5.445H13a2 2 0 0 1 0 4H3.5a2.5 2.5 0 1 1 .605-4.926.5.5 0 0 0 .596-.329A4 4 0 0 1 8.5 2'/%3E%3C/svg%3E"><link rel="shortcut icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' class='bi bi-cloud-drizzle' viewBox='0 0 16 16'%3E%3Cpath d='M4.158 12.025a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 0 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317m6 0a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 0 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317m-3.5 1.5a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 0 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317m6 0a.5.5 0 0 1 .316.633l-.5 1.5a.5.5 0 1 1-.948-.316l.5-1.5a.5.5 0 0 1 .632-.317m.747-8.498a5.001 5.001 0 0 0-9.499-1.004A3.5 3.5 0 1 0 3.5 11H13a3 3 0 0 0 .405-5.973M8.5 2a4 4 0 0 1 3.976 3.555.5.5 0 0 0 .5.445H13a2 2 0 0 1 0 4H3.5a2.5 2.5 0 1 1 .605-4.926.5.5 0 0 0 .596-.329A4 4 0 0 1 8.5 2'/%3E%3C/svg%3E"><meta name="apple-mobile-web-app-title" content="Exyone's Blog"><meta name="application-name" content="Exyone's Blog"><meta name="theme-color" content="#ffffff"><link rel="preconnect" href="https://fonts.loli.net" ><link rel="dns-prefetch" href="https://fonts.loli.net" ><link rel="preconnect" href="https://gstatic.loli.net" crossorigin><link rel="dns-prefetch" href="https://gstatic.loli.net" ><link rel="preconnect" href="https://cdn.jsdelivr.net" ><link rel="dns-prefetch" href="https://cdn.jsdelivr.net" ><link rel="stylesheet" href="/assets/css/jekyll-theme-chirpy.css"><link rel="stylesheet" href="https://fonts.loli.net/css2?family=Lato:wght@300;400&family=Noto+Sans+SC:wght@400;500;700&family=Source+Sans+Pro:wght@400;600;700;900&display=swap"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@7/css/all.min.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/tocbot@4/dist/tocbot.min.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/loading-attribute-polyfill@2/dist/loading-attribute-polyfill.min.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/glightbox@3/dist/css/glightbox.min.css">
1<script src="/assets/js/dist/theme.min.js"></script>
1
1<script defer src="https://cdn.jsdelivr.net/combine/npm/simple-jekyll-search@1/dest/simple-jekyll-search.min.js,npm/loading-attribute-polyfill@2/dist/loading-attribute-polyfill.umd.min.js,npm/glightbox@3/dist/js/glightbox.min.js,npm/clipboard@2/dist/clipboard.min.js,npm/dayjs@1/dayjs.min.js,npm/dayjs@1/locale/zh.js,npm/dayjs@1/plugin/relativeTime.js,npm/dayjs@1/plugin/localizedFormat.js"></script>
1
1<script defer src="/assets/js/dist/post.min.js"></script>
1
1<script defer src="/app.min.js?baseurl=®ister=true" ></script>
1<link rel="preconnect" href="https://cdn.jsdelivr.net" crossorigin><link rel="preconnect" href="https://epigram.exyon.ee" crossorigin><link rel="dns-prefetch" href="https://unpkg.com">
1<script> window.SITE_ENHANCE = { /* Simplified â Traditional Chinese toggle, Alt+Z or context menu. */ zhConvert: { enabled: true, autoDetect: true /* infer the initial mode from navigator.language */ }, /* Background music card; APlayer is used purely as an audio engine. */ player: { enabled: true, lazy: true, /* defer loading APlayer until the card is opened */ order: 'random', /* list | random */ preload: 'metadata', volume: 0.7, mediaSession: true, /* expose transport controls to the OS */ playlist: { server: 'netease', type: 'playlist', id: '60198' }, /* Meting-compatible endpoints, probed in order; the first success is cached. */ endpoints: [ 'https://music.3e0.cn/?server=:server&type=:type&id=:id&r=:r', 'https://api.injahow.cn/meting/?server=:server&type=:type&id=:id&r=:r', 'https://meting-api.u2sb.com/?server=:server&type=:type&id=:id&r=:r' ] }, /* Floating daily quote card. */ quotes: { enabled: true, endpoints: ['https://epigram.exyon.ee/api/quotes'] }, /* Reading progress bar. */ reading: { enabled: true }, /* Custom context menu. groups accepts true / false, or an object to hide single commands: link: { enabled: true, items: { 'copy-html-link': false } } Set submenu: false to inline every command into the first level. */ menu: { enabled: true, searchEngine: 'bing', /* google | bing | baidu */ submenu: true, groups: { selection: true, link: true, image: true, code: true, page: true } }, /* Click decoration: word | ripple | confetti | none. */ clickEffect: { mode: 'word', throttle: 80, max: 6 } }; </script>
1<div id="reading-progress" aria-hidden="true"></div><div id="tool-cards" aria-live="polite" aria-atomic="false"><section id="player-card" class="tool-card h-card" hidden aria-label="èæ¯é³ä¹"><div class="enh-card-header" data-drag-handle> <i class="fa-fw fas fa-music enh-card-icon" aria-hidden="true"></i> <span class="enh-card-title" id="vplayer-title">èæ¯é³ä¹</span> <button type="button" class="enh-card-close" data-close aria-label="å
³éé³ä¹ææ¾å¨" title="å
³é">Ã</button></div><div class="enh-card-body"> <span class="player-ctrl"> <button type="button" data-pctl="prev" aria-label="ä¸ä¸é¦" title="ä¸ä¸é¦"> <i class="fas fa-backward-step" aria-hidden="true"></i> </button> <button type="button" data-pctl="toggle" aria-label="ææ¾ææå" title="ææ¾ / æå"> <i class="fas fa-play" aria-hidden="true"></i> </button> <button type="button" data-pctl="next" aria-label="ä¸ä¸é¦" title="ä¸ä¸é¦"> <i class="fas fa-forward-step" aria-hidden="true"></i> </button> </span> <span class="enh-card-hint" id="vplayer-hint">ç¹å»ææ¾</span> <span class="player-progress" aria-hidden="true"><i id="vplayer-progress"></i></span></div><div id="player-mount" class="enh-card-engine" aria-hidden="true"></div></section><section id="epigram-card" class="tool-card h-card epigram-card" hidden aria-label="é½è¯" role="button" tabindex="0" title="ç¹å»å¡çæ¢ä¸å¥"><div class="enh-card-header" data-drag-handle> <i class="fa-fw fas fa-quote-left enh-card-icon" aria-hidden="true"></i> <span class="enh-card-title">é½è¯</span> <button type="button" class="enh-card-close" data-close aria-label="å
³éé½è¯" title="å
³é">Ã</button></div><div class="enh-card-body"> <span class="enh-card-hint">ç¹å»æ¢ä¸å¥</span> <span class="epigram-content epigram-loading">æ£å¨å è½½é½è¯â¦</span> <span class="epigram-meta"></span></div></section></div><div id="custom-context-menu" class="ctx-menu" role="menu" aria-label="ä¸ä¸æèå" hidden></div><div id="toast-host" aria-live="polite" aria-atomic="false"></div><div id="shortcuts-modal" class="sc-modal" role="dialog" aria-modal="true" aria-label="é®çå¿«æ·é®" hidden><div class="sc-modal-backdrop" data-close></div><div class="sc-modal-body" role="document"><header class="sc-modal-header"><h3>é®çå¿«æ·é®</h3><button type="button" class="sc-modal-close" data-close aria-label="å
³é">Ã</button></header><ul class="sc-list"><li><kbd>Alt</kbd> + <kbd>Z</kbd><span>ç®ç¹è½¬æ¢</span><li><kbd>Alt</kbd> + <kbd>ç©ºæ ¼</kbd><span>ææ¾ / æåé³ä¹</span><li><kbd>Shift</kbd> + <kbd>å³é®</kbd><span>æ¢å¤æµè§å¨èå</span><li><kbd>Esc</kbd><span>å
³éå½åå¼¹å±</span><li><kbd>?</kbd><span>æ¾ç¤ºæ¬å¸®å©</span></ul></div></div>
1<script defer src="/assets/js/core.js"></script>
1
1<script defer src="/assets/js/card.js"></script>
1
1<script defer src="/assets/js/zh-convert.js"></script>
1
1<script defer src="/assets/js/player.js"></script>
1
1<script defer src="/assets/js/quotes.js"></script>
1
1<script defer src="/assets/js/reading.js"></script>
1
1<script defer src="/assets/js/effects.js"></script>
1
1<script defer src="/assets/js/menu.js"></script>
1
1<script defer src="/assets/js/main.js"></script>
1<style> .page-sticker { position: fixed; bottom: 5rem; right: 0; z-index: 50; opacity: 0.5; pointer-events: none; line-height: 0; transition: opacity 0.2s ease; width: 15vw; } .page-sticker img { display: block; width: 100%; height: auto; user-select: none; -webkit-user-drag: none; } .page-sticker:hover { opacity: 0.8; } @media (max-width: 768px) { .page-sticker { display: none; } }</style><div class="page-sticker" aria-hidden="true"> <img src="/assets/img/sticker.png" alt="" loading="lazy"></div><body><aside aria-label="Sidebar" id="sidebar" class="d-flex flex-column align-items-end"><header class="profile-wrapper"> <a href="/" id="avatar" class="rounded-circle"><img src="/assets/img/avatar-v1.png" width="112" height="112" alt="avatar" onerror="this.style.display='none'"></a> <a class="site-title d-block" href="/">Exyone's Blog</a><p class="site-subtitle fst-italic mb-0">æ ç ç¬èªåéå¹²ï¼äººå»æ¥¼ç©ºææç
§æ è¨</p></header><nav class="flex-column flex-grow-1 w-100 ps-0"><ul class="nav"><li class="nav-item"> <a href="/" class="nav-link"> <i class="fa-fw fas fa-home"></i> <span>é¦é¡µ</span> </a><li class="nav-item"> <a href="/categories/" class="nav-link"> <i class="fa-fw fas fa-stream"></i> <span>åç±»</span> </a><li class="nav-item"> <a href="/tags/" class="nav-link"> <i class="fa-fw fas fa-tags"></i> <span>æ ç¾</span> </a><li class="nav-item"> <a href="/archives/" class="nav-link"> <i class="fa-fw fas fa-archive"></i> <span>彿¡£</span> </a><li class="nav-item"> <a href="/about/" class="nav-link"> <i class="fa-fw fas fa-info-circle"></i> <span>å
³äº</span> </a><li class="nav-item"> <a href="/friends/" class="nav-link"> <i class="fa-fw fas fa-link"></i> <span>åé¾</span> </a><li class="nav-item"> <a href="/guestbook/" class="nav-link"> <i class="fa-fw fas fa-comments"></i> <span>çè¨</span> </a></ul></nav><div class="sidebar-bottom d-flex flex-wrap align-items-center w-100"><div class="btn-group dropup"> <button type="button" class="btn btn-link nav-link" aria-label="Switch Mode" id="mode-toggle" data-bs-toggle="dropdown" ><i class="fa-regular fa-sun" data-theme-mode="light"></i><i class="fa-regular fa-moon" data-theme-mode="dark"></i><i class="fa-solid fa-display" data-theme-mode="system"></i></button><ul class="dropdown-menu rounded-3 mb-1 p-1"><li> <button class="dropdown-item d-flex align-items-center" type="button" data-theme-mode="light"><i class="fa-regular fa-sun" data-theme-mode="light"></i>æµ
è²</button><li> <button class="dropdown-item d-flex align-items-center" type="button" data-theme-mode="dark"><i class="fa-regular fa-moon" data-theme-mode="dark"></i>æ·±è²</button><li> <button class="dropdown-item d-flex align-items-center" type="button" data-theme-mode="system"><i class="fa-solid fa-display" data-theme-mode="system"></i>è·éç³»ç»</button></ul></div><span class="icon-border"></span> <a href="https://github.com/exyone-js" aria-label="github" target="_blank" rel="noopener noreferrer" > <i class="fab fa-github"></i> </a> <a href="https://codeberg.org/exyone" aria-label="codeberg" target="_blank" rel="noopener noreferrer" > <i class="fas fa-code-branch"></i> </a> <a href="https://twitter.com/exyone_t3a" aria-label="twitter" target="_blank" rel="noopener noreferrer" > <i class="fa-brands fa-x-twitter"></i> </a> <a href="https://exyone.bsky.social" aria-label="bluesky" target="_blank" rel="noopener noreferrer" > <i class="fa-brands fa-bluesky"></i> </a> <a href="https://space.bilibili.com/3706949002595300" aria-label="bilibili" target="_blank" rel="noopener noreferrer" > <i class="fa-brands fa-bilibili"></i> </a> <a href="https://www.youtube.com/@exyone-t3a" aria-label="youtube" target="_blank" rel="noopener noreferrer" > <i class="fa-brands fa-youtube"></i> </a> <a href="https://qm.qq.com/q/57r61ihRMs" aria-label="qq" target="_blank" rel="noopener noreferrer" > <i class="fab fa-qq"></i> </a> <a href="javascript:void(location.href = 'mailto:' + ['exyone.dev','icloud.com'].join('@'))" aria-label="email" > <i class="fas fa-envelope"></i> </a> <a href="/feed.xml" aria-label="rss" > <i class="fas fa-rss"></i> </a></div></aside><div id="main-wrapper" class="d-flex justify-content-center"><div class="container d-flex flex-column px-xxl-5"><header id="topbar-wrapper" class="flex-shrink-0" aria-label="Top Bar"><div id="topbar" class="d-flex align-items-center justify-content-between px-lg-3 h-100" ><nav id="breadcrumb" aria-label="Breadcrumb"> <span> <a href="/">é¦é¡µ</a> </span> <span>ä¸ç§ç¿æ¥åæ¨ï¼å½»å¤é¾ç ï¼é¶è½æ è¨ï¼æ²ç欲ç»ï¼æ
使¤ç¯ã离å«èµã</span></nav>
1<button type="button" id="sidebar-trigger" class="btn btn-link" aria-label="Sidebar"> <i class="fas fa-bars fa-fw"></i> </button><div id="topbar-title"> æç« </div><button type="button" id="search-trigger" class="btn btn-link" aria-label="Search"> <i class="fas fa-search fa-fw"></i> </button> <search id="search" class="align-items-center ms-3 ms-lg-0"> <i class="fas fa-search fa-fw"></i> <input class="form-control" id="search-input" type="search" aria-label="search" autocomplete="off" placeholder="æç´¢..." > </search> <button type="button" class="btn btn-link text-decoration-none" id="search-cancel">åæ¶</button></div></header><div class="row flex-grow-1"><main aria-label="Main Content" class="col-12 col-lg-11 col-xl-9 px-md-4"><article class="px-1" data-toc="false"><header><h1 data-toc-skip>ä¸ç§ç¿æ¥åæ¨ï¼å½»å¤é¾ç ï¼é¶è½æ è¨ï¼æ²ç欲ç»ï¼æ
使¤ç¯ã离å«èµã</h1><div class="post-meta text-muted"> <span> åè¡¨äº <time data-ts="1790380800" data-df="YYYY/MM/DD" data-bs-toggle="tooltip" data-bs-placement="bottom" > 2026/09/26 </time> </span><div class="d-flex justify-content-between"> <span> ä½è
<em> <a href="https://twitter.com/exyone_t3a">exyone</a> </em> </span><div> <span class="readtime" data-bs-toggle="tooltip" data-bs-placement="bottom" title="735 å" > <em>4 åé</em>é
读</span></div></div></div></header><div class="content"><p>乿æ¸
ç§ï¼ç½é²ä¸ºéï¼ç¸æåå¿§ï¼ä¸å¤å½·å¾¨ã<br /> ä¸¾æ¯æ¬²éï¼éä¸ææ¬¢ï¼ä¸´å²æ è¨ï¼æ¨å°å«ç¦»ã<br /> éæ³¢æ»¡åºï¼å浦波åï¼å¤éå³äºï¼å¯èå½éã</p><p>æææ®æ³ï¼è¾è½¬ä¸è ï¼æ¥å¤æ¶æ³£ï¼æ²¾æè¡£è£³ã<br /> æå¿å¦å
°ï¼å«è³æªå¤®ï¼åæå¦æµï¼æ±¤æ±¤å
¶åã<br /> è½è±è¾æï¼ç©ºå§éæï¼ææç
§å½±ï¼åæ å¤åºã</p><p>书çåä¹ï¼æ ææ å¾·ï¼å¯æä¸çè¯å¿ã<br /> è天å¯é´ï¼æªå°è´åï¼ä½æ
å·è½è³æ¤ï¼</p><p>æ¬æ¬²ä¸åç¼ ç»µå
®ï¼ç»å
°è·ä»¥ä¸ºè£³ï¼<br /> åè§æå¦èè¥å
®ï¼å¼æäºé¡éæã<br /> æ¬æ¬²å
±åº¦ä½çå
®ï¼æ§æåèï¼<br /> åè´æç¸ææå
®ï¼æææè ã<br /> ç¸æå使æ¨å
®ï¼æ¨åèæ
ï¼</p><p>é¨ééå
®é£é£é£ï¼äºå¥å¥å
®å¤èèã<br /> 徿åå
®ç©ºåæ³ªï¼æä¸æ¥å
®ç¬å½·å¾¨ã<br /> è±é¨è½å
®ææ¬²æï¼çç¬å¯å
®ææ å
ã<br /> å¿æ¬²ç¢å
®éå·²æï¼æ±æ°´æµå
®æ¨æ´é¿ã</p><p>å¿ä¸åä¹äº¤æ
å
®ï¼ä¸æé¶å
妿¢¦éï¼<br /> åè¯åä¹å®¹è²å
®ï¼éæ¸éå¨ä¸è½å·²ã<br /> åé¢çè¥ä¸ç§æå
®ï¼çé»å¼¯å¦æ¡å½±æï¼<br /> ç¸å«çé²ä¹æ¸
å
å
®ï¼é¬æéé£ä¹ç´ 纱ã<br /> åç¹ä¸¹æ¡ä¹å¾®éå
®ï¼ç§æ³¢ççæ¬²è¯è¿ã</p><p>åä¹ç¸å¦ç§æ°´å
®ï¼ä¸é¡¾ä»¤äººå¿æå¤ï¼<br /> åä¹ç¬å¦æ¥é£å
®ï¼å顾令人失ééã<br /> æ¬åºç½é¦åå½å
®ï¼ä½æ¥è¯¯ä¼æ¨ªçï¼<br /> æ¬åºå¦è¯ç¸ç
§å
®ï¼ä½æ
çäºæè¦ï¼<br /> æ¬æ éä¹å¯ä¹å
®ï¼è°è¨ä½ç±èå
¥ï¼<br /> æ¬æ å«ä¹å¯çå
®ï¼æµè¨ä½æ
èç»ï¼</p><p>æå¿ææå¦æ¥æå
®ï¼æªå°æè´äºåï¼<br /> ææåè´å¦éç³å
®ï¼æªå°ææ§äºå¿ã<br /> ä¸ç丹å¿å¯é´å
®ï¼è天å¨ä¸ä¸ºè¯ï¼<br /> 满æèµ¤è¯å¯è¡¨å
®ï¼ååå¨ä¸ä¸ºåã<br /> 鿢æ±åä¹å
¨ä¿¡å
®ï¼ä½æ±åä¹ä¸é¡¾ï¼<br /> 鿢æåä¹å¿
çå
®ï¼ä½æ±åä¹å°æã</p><p>误ä¼å¦é¾å
®ç»é¡»æ£ï¼çå¿å¦æå
®ç»é¡»æã<br /> æ¿ååé¦å
®å¯ææï¼è«ä½¿è¯ç¼å
®åæµ®èã</p><p>ç§èèèå
®ç½é²æï¼æ
人ä¸å»å
®æ 彿ã<br /> æ¿ä¸ºéé¸å
®ï¼è¡ä¹¦è³åä¾§ï¼<br /> åæé鍿·±éå
®ï¼ç¿
æç©ºåã<br /> æ¿ä¸ºææå
®ï¼ç
§åç½å¸·ï¼<br /> åæåå¿æå«å
®ï¼å
å·æç°ã <br /> ä»ä»å«åå
®ï¼åå¨å¤©æ¶¯ï¼<br /> å¯å°æ®æ¢¦å
®ï¼ä»ä¸æ²§æµªã</p><p>æ·«é¨åæ¶å
®æçª¥å¸·ï¼æå¿é¡å®å
®åä¸ç¥ã<br /> æåä¸è§å
®æ³ªæ²¾è¡£ï¼æ¿ååé¦å
®è«ç¸è¿ã<br /> æ¤æ
å·²ç£å
®ä¸å¯è¿½ï¼æå°ææå
®ç
§ææ²ã</p></div><div class="post-tail-wrapper text-muted"><div class="d-flex justify-content-between align-items-center gap-3 mb-3"><div class="post-meta"> <i class="far fa-folder-open fa-fw me-1"></i>
1 <a href="/categories/%E7%AC%94%E8%80%95%E9%97%AE%E9%81%93/">ç¬èé®é</a></div><div class="post-edit"> <a href="https://github.com/exyone-js/exyone-js.github.io/edit/main/_posts/2026-09-26-sorrow-and-farewell.md" target="_blank" rel="noopener" > <i class="fa fa-pen fa-fw me-1"></i> <span>ç¼è¾æ¤æ</span> </a></div></div><div class="post-tags"> <i class="fa fa-tags fa-fw me-1"></i> <a href="/tags/%E8%AF%97%E8%AF%8D/" class="post-tag no-text-decoration" >è¯è¯</a> <a href="/tags/%E7%94%9F%E6%B4%BB/" class="post-tag no-text-decoration" >çæ´»</a></div><div class=" post-tail-bottom d-flex justify-content-between align-items-center mt-5 pb-2 " ><div class="license-wrapper"> æ¬æç±ä½è
æç
§ <a href="https://creativecommons.org/licenses/by/4.0/"> CC BY 4.0 </a> è¿è¡ææ</div><div class="share-wrapper d-flex align-items-center"> <span class="share-label text-muted">å享</span> <span class="share-icons"> <a href="https://twitter.com/intent/tweet?text=%E4%B8%AD%E7%A7%8B%E7%BF%8C%E6%97%A5%E5%87%8C%E6%99%A8%EF%BC%8C%E5%BD%BB%E5%A4%9C%E9%9A%BE%E7%9C%A0%EF%BC%8C%E9%9B%B6%E8%90%BD%E6%97%A0%E8%A8%80%EF%BC%8C%E6%82%B2%E7%97%9B%E6%AC%B2%E7%BB%9D%EF%BC%8C%E6%95%85%E4%BD%9C%E6%AD%A4%E7%AF%87%E3%80%8A%E7%A6%BB%E5%88%AB%E8%B5%8B%E3%80%8B%20-%20Exyone's%20Blog&url=https%3A%2F%2Fexyon.ee%2Fposts%2Fsorrow-and-farewell%2F" target="_blank" rel="noopener" data-bs-toggle="tooltip" data-bs-placement="top" title="Twitter" aria-label="Twitter"> <i class="fa-fw fa-brands fa-square-x-twitter"></i> </a> <a href="https://www.facebook.com/sharer/sharer.php?title=%E4%B8%AD%E7%A7%8B%E7%BF%8C%E6%97%A5%E5%87%8C%E6%99%A8%EF%BC%8C%E5%BD%BB%E5%A4%9C%E9%9A%BE%E7%9C%A0%EF%BC%8C%E9%9B%B6%E8%90%BD%E6%97%A0%E8%A8%80%EF%BC%8C%E6%82%B2%E7%97%9B%E6%AC%B2%E7%BB%9D%EF%BC%8C%E6%95%85%E4%BD%9C%E6%AD%A4%E7%AF%87%E3%80%8A%E7%A6%BB%E5%88%AB%E8%B5%8B%E3%80%8B%20-%20Exyone's%20Blog&u=https%3A%2F%2Fexyon.ee%2Fposts%2Fsorrow-and-farewell%2F" target="_blank" rel="noopener" data-bs-toggle="tooltip" data-bs-placement="top" title="Facebook" aria-label="Facebook"> <i class="fa-fw fab fa-facebook-square"></i> </a> <a href="https://t.me/share/url?url=https%3A%2F%2Fexyon.ee%2Fposts%2Fsorrow-and-farewell%2F&text=%E4%B8%AD%E7%A7%8B%E7%BF%8C%E6%97%A5%E5%87%8C%E6%99%A8%EF%BC%8C%E5%BD%BB%E5%A4%9C%E9%9A%BE%E7%9C%A0%EF%BC%8C%E9%9B%B6%E8%90%BD%E6%97%A0%E8%A8%80%EF%BC%8C%E6%82%B2%E7%97%9B%E6%AC%B2%E7%BB%9D%EF%BC%8C%E6%95%85%E4%BD%9C%E6%AD%A4%E7%AF%87%E3%80%8A%E7%A6%BB%E5%88%AB%E8%B5%8B%E3%80%8B%20-%20Exyone's%20Blog" target="_blank" rel="noopener" data-bs-toggle="tooltip" data-bs-placement="top" title="Telegram" aria-label="Telegram"> <i class="fa-fw fab fa-telegram"></i> </a> <a href="https://www.linkedin.com/feed/?shareActive=true&shareUrl=https%3A%2F%2Fexyon.ee%2Fposts%2Fsorrow-and-farewell%2F" target="_blank" rel="noopener" data-bs-toggle="tooltip" data-bs-placement="top" title="Linkedin" aria-label="Linkedin"> <i class="fa-fw fab fa-linkedin"></i> </a> <a href="https://service.weibo.com/share/share.php?title=%E4%B8%AD%E7%A7%8B%E7%BF%8C%E6%97%A5%E5%87%8C%E6%99%A8%EF%BC%8C%E5%BD%BB%E5%A4%9C%E9%9A%BE%E7%9C%A0%EF%BC%8C%E9%9B%B6%E8%90%BD%E6%97%A0%E8%A8%80%EF%BC%8C%E6%82%B2%E7%97%9B%E6%AC%B2%E7%BB%9D%EF%BC%8C%E6%95%85%E4%BD%9C%E6%AD%A4%E7%AF%87%E3%80%8A%E7%A6%BB%E5%88%AB%E8%B5%8B%E3%80%8B%20-%20Exyone's%20Blog&url=https%3A%2F%2Fexyon.ee%2Fposts%2Fsorrow-and-farewell%2F" target="_blank" rel="noopener" data-bs-toggle="tooltip" data-bs-placement="top" title="Weibo" aria-label="Weibo"> <i class="fa-fw fab fa-weibo"></i> </a>
1<script defer type="module" src="https://cdn.jsdelivr.net/npm/@justinribeiro/share-to-mastodon/+esm"></script>
1 <button class="btn text-start" data-bs-toggle="tooltip" data-bs-placement="top" title="Mastodon" aria-label="Mastodon"> <share-to-mastodon class="share-mastodon" message="%E4%B8%AD%E7%A7%8B%E7%BF%8C%E6%97%A5%E5%87%8C%E6%99%A8%EF%BC%8C%E5%BD%BB%E5%A4%9C%E9%9A%BE%E7%9C%A0%EF%BC%8C%E9%9B%B6%E8%90%BD%E6%97%A0%E8%A8%80%EF%BC%8C%E6%82%B2%E7%97%9B%E6%AC%B2%E7%BB%9D%EF%BC%8C%E6%95%85%E4%BD%9C%E6%AD%A4%E7%AF%87%E3%80%8A%E7%A6%BB%E5%88%AB%E8%B5%8B%E3%80%8B%20-%20Exyone's%20Blog" url="https%3A%2F%2Fexyon.ee%2Fposts%2Fsorrow-and-farewell%2F"customInstanceList="[{"label":"mastodon.social","link":"https://mastodon.social/"},{"label":"mastodon.online","link":"https://mastodon.online/"},{"label":"fosstodon.org","link":"https://fosstodon.org/"},{"label":"photog.social","link":"https://photog.social/"}]" > <i class="fa-fw fa-brands fa-mastodon"></i> </share-to-mastodon> </button> <a href="https://bsky.app/intent/compose?text=%E4%B8%AD%E7%A7%8B%E7%BF%8C%E6%97%A5%E5%87%8C%E6%99%A8%EF%BC%8C%E5%BD%BB%E5%A4%9C%E9%9A%BE%E7%9C%A0%EF%BC%8C%E9%9B%B6%E8%90%BD%E6%97%A0%E8%A8%80%EF%BC%8C%E6%82%B2%E7%97%9B%E6%AC%B2%E7%BB%9D%EF%BC%8C%E6%95%85%E4%BD%9C%E6%AD%A4%E7%AF%87%E3%80%8A%E7%A6%BB%E5%88%AB%E8%B5%8B%E3%80%8B%20-%20Exyone's%20Blog%20https%3A%2F%2Fexyon.ee%2Fposts%2Fsorrow-and-farewell%2F" target="_blank" rel="noopener" data-bs-toggle="tooltip" data-bs-placement="top" title="Bluesky" aria-label="Bluesky"> <i class="fa-fw fa-brands fa-bluesky"></i> </a> <a href="https://www.reddit.com/submit?url=https%3A%2F%2Fexyon.ee%2Fposts%2Fsorrow-and-farewell%2F&title=%E4%B8%AD%E7%A7%8B%E7%BF%8C%E6%97%A5%E5%87%8C%E6%99%A8%EF%BC%8C%E5%BD%BB%E5%A4%9C%E9%9A%BE%E7%9C%A0%EF%BC%8C%E9%9B%B6%E8%90%BD%E6%97%A0%E8%A8%80%EF%BC%8C%E6%82%B2%E7%97%9B%E6%AC%B2%E7%BB%9D%EF%BC%8C%E6%95%85%E4%BD%9C%E6%AD%A4%E7%AF%87%E3%80%8A%E7%A6%BB%E5%88%AB%E8%B5%8B%E3%80%8B%20-%20Exyone's%20Blog" target="_blank" rel="noopener" data-bs-toggle="tooltip" data-bs-placement="top" title="Reddit" aria-label="Reddit"> <i class="fa-fw fa-brands fa-square-reddit"></i> </a> <a href="https://www.threads.net/intent/post?text=%E4%B8%AD%E7%A7%8B%E7%BF%8C%E6%97%A5%E5%87%8C%E6%99%A8%EF%BC%8C%E5%BD%BB%E5%A4%9C%E9%9A%BE%E7%9C%A0%EF%BC%8C%E9%9B%B6%E8%90%BD%E6%97%A0%E8%A8%80%EF%BC%8C%E6%82%B2%E7%97%9B%E6%AC%B2%E7%BB%9D%EF%BC%8C%E6%95%85%E4%BD%9C%E6%AD%A4%E7%AF%87%E3%80%8A%E7%A6%BB%E5%88%AB%E8%B5%8B%E3%80%8B%20-%20Exyone's%20Blog%20https%3A%2F%2Fexyon.ee%2Fposts%2Fsorrow-and-farewell%2F" target="_blank" rel="noopener" data-bs-toggle="tooltip" data-bs-placement="top" title="Threads" aria-label="Threads"> <i class="fa-fw fa-brands fa-square-threads"></i> </a> <button id="copy-link" aria-label="Copy link" class="btn small" data-bs-toggle="tooltip" data-bs-placement="top" title="åäº«é¾æ¥" data-title-succeed="龿¥å·²å¤å¶ï¼" > <i class="fa-fw fas fa-link pe-none fs-6"></i> </button> </span></div></div></div></article></main><aside aria-label="Panel" id="panel-wrapper" class="col-xl-3 ps-2 text-muted"><div class="access"><section id="access-lastmod"><h2 class="panel-heading">æè¿æ´æ°</h2><ul class="content list-unstyled ps-0 pb-1 ms-1 mt-2"><li class="text-truncate lh-lg"> <a href="/posts/sorrow-and-farewell/">ä¸ç§ç¿æ¥åæ¨ï¼å½»å¤é¾ç ï¼é¶è½æ è¨ï¼æ²ç欲ç»ï¼æ
使¤ç¯ã离å«èµã</a><li class="text-truncate lh-lg"> <a href="/posts/poems-of-love-and-loss/">ä¹æç¦»å«ï¼æ ç ç¬èªåéå¹²ï¼äººå»æ¥¼ç©ºææç
§æ è¨</a><li class="text-truncate lh-lg"> <a href="/posts/blog-migration-and-waline-comments/">å客忬¡æ¬å®¶ï¼åå½ Jekyllï¼å¹¶ä¸º Chirpy æ¥å
¥ Waline</a><li class="text-truncate lh-lg"> <a href="/posts/english-spatial-coordinates/">åæ ç³»å³ä¸çè§ï¼ä¸ºä»ä¹ `at / on / in` è½è¯ææ¯è¯çº§è±è¯çæ¬è´¨æ¯è®¤ç¥è¿ç§»</a><li class="text-truncate lh-lg"> <a href="/posts/recent-tinkering-and-miscellaneous-notes/">å
ææè®°ï¼å 个å°é¡¹ç®åä¸äºçæ´»ä¸ççäº</a></ul></section><section><h2 class="panel-heading">ç鍿 ç¾</h2><div class="d-flex flex-wrap mt-3 mb-1 me-3"> <a class="post-tag btn btn-outline-primary" href="/tags/%E6%95%99%E7%A8%8B/">æç¨</a> <a class="post-tag btn btn-outline-primary" href="/tags/%E5%BC%80%E6%BA%90%E9%A1%B9%E7%9B%AE/">弿ºé¡¹ç®</a> <a class="post-tag btn btn-outline-primary" href="/tags/%E7%94%9F%E6%B4%BB/">çæ´»</a> <a class="post-tag btn btn-outline-primary" href="/tags/%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91/">软件å¼å</a> <a class="post-tag btn btn-outline-primary" href="/tags/%E5%8D%9A%E5%AE%A2/">å客</a> <a class="post-tag btn btn-outline-primary" href="/tags/%E5%93%B2%E5%AD%A6/">å²å¦</a> <a class="post-tag btn btn-outline-primary" href="/tags/%E8%AF%84%E6%B5%8B/">è¯æµ</a> <a class="post-tag btn btn-outline-primary" href="/tags/%E8%AF%97%E8%AF%8D/">è¯è¯</a> <a class="post-tag btn btn-outline-primary" href="/tags/jekyll/">Jekyll</a> <a class="post-tag btn btn-outline-primary" href="/tags/onedev/">OneDev</a></div></section></div></aside></div><div class="row"><div id="tail-wrapper" class="col-12 col-lg-11 col-xl-9 px-md-4"><aside id="related-posts" aria-labelledby="related-label"><h3 class="mb-4" id="related-label">ç¸å
³æç« </h3><nav class="row row-cols-1 row-cols-md-2 row-cols-xl-3 g-4 mb-4"><article class="col"> <a href="/posts/poems-of-love-and-loss/" class="post-preview card h-100"><div class="card-body"> <time data-ts="1790294400" data-df="YYYY/MM/DD" >
1 2026/09/25 </time><h4 class="pt-0 my-2">ä¹æç¦»å«ï¼æ ç ç¬èªåéå¹²ï¼äººå»æ¥¼ç©ºææç
§æ è¨</h4><div class="text-muted"><p>ãç¸è§æ¬¢Â·ç¦»å«ã ï¼è¯ææ£éµï¼ éé£å·å°½æ¸
ç§ï¼éç头ãä¸çº¸ç¸æé¾å¯ãæ¨æ æ ã 彿¶è¯ï¼æä»è¯¯ï¼å æ¶ä¼ï¼å¿ä¼¼å¯æ±å¤æãç
§ç©ºæ¥¼ã æç±ä¸äºä¸ä¸ªäººï¼ä¹æ¨ä¸äºä¸ä¸ªäººï¼æä¼ç±å¥¹ä¸è¾åï¼ä¹ä¼æ¨å¥¹ä¸è¾åã æççä¸ç¥éï¼æå°åºåªé对ä¸èµ·å¥¹ãæèªä»éå°å¥¹å¼å§ï¼æ²¡æä¸ä¸åç¹çæ æ
¢ãæ 论æ¯å¥¹å¶ç¶æå°çï¼ææ¯åå«äººè天æ¶å¬å°çï¼äº¦æè
å«äººåè¯æçï¼æ»ä¹ï¼å¥¹å欢çä¸åäºç©ï¼æé½è®°å¾ä¸æ¸
äºæ¥ï¼çè³å¥¹æ¾ç»å¶...</p></div></div></a></article><article class="col"> <a href="/posts/recent-tinkering-and-miscellaneous-notes/" class="post-preview card h-100"><div class="card-body"> <time data-ts="1782518400" data-df="YYYY/MM/DD" > 2026/06/27 </time><h4 class="pt-0 my-2">å
ææè®°ï¼å 个å°é¡¹ç®åä¸äºçæ´»ä¸ççäº</h4><div class="text-muted"><p>æè¿æè
¾äºä¸å°ä¸è¥¿ãæèªå·±åç项ç®ï¼æå客çå夿¬å®¶ï¼æåä½åæçä¸çå¾®è°ï¼ä¹æå¯¹ä»£ç æç®¡å¹³å°çä¸äºæ´çãä¸é´è¿å¤¹æçé«ä¸çæ´»å¼å§åçæ¶é´ç´§å¼ ï¼ä»¥åå·é²é±¼æ¶çå°çåç§éå¹»ç°å®ãé¶é¶æ£æ£ï¼å¹²èåå¨ä¸èµ·åç¯æè®°ã ä¸ãèªå·±åäºä¸ªéæç½ç«çæå¨ 项ç®å« Zest SSGï¼å
¨ç§° Zealous Efficient Static Toolkitï¼çæ
髿çéæå·¥å
·å
ï¼ï¼æ°å
¨ç§°ï¼Zest: Easy...</p></div></div></a></article><article class="col"> <a href="/posts/english-spatial-coordinates/" class="post-preview card h-100"><div class="card-body"> <time data-ts="1783468800" data-df="YYYY/MM/DD" > 2026/07/08 </time><h4 class="pt-0 my-2">åæ ç³»å³ä¸çè§ï¼ä¸ºä»ä¹ `at / on / in` è½è¯ææ¯è¯çº§è±è¯çæ¬è´¨æ¯è®¤ç¥è¿ç§»</h4><div class="text-muted"><p>åæå¯åï¼æ¯è¯çº§è±è¯çæ¬è´¨ï¼ä¸æ¯è±è¯ 妿æ³è¦æè±è¯å¦å°æ¯è¯çº§æ°´å¹³ï¼é£ä¹ä»è¯ï¼Prepositionsï¼å¾å¾æ¯æåä¸éã乿¯æååºç马å¥è¯ºé²çº¿ã å¨è¯å¯ä»¥é èï¼æ¶æå¯ä»¥é ç»ï¼ä»è¯ä¸è¡ãæ°éå°ã个头å°ãå«ä¹èï¼ä½æ¯ä¸ªä»è¯èå齿¯ä¸æ´å¥å¯¹ç©ºé´åä¸ççåç±»æ¹å¼ãç»å¤§å¤æ°ä¸å½å¦ä¹ è
ç»å
¶ä¸çï¼é½å¨ç¨ä¸å¥â䏿é»è¾â强è¡ç¿»è¯è±è¯ãå½ä»ä»¬é¢å¯¹ at the bus stopãon the ceili...</p></div></div></a></article></nav></aside><nav class="post-navigation d-flex justify-content-between" aria-label="Post Navigation"> <a href="/posts/poems-of-love-and-loss/" class="btn btn-outline-primary" aria-label="ä¸ä¸ç¯" ><p>ä¹æç¦»å«ï¼æ ç ç¬èªåéå¹²ï¼äººå»æ¥¼ç©ºææç
§æ è¨</p></a><div class="btn btn-outline-primary disabled" aria-label="ä¸ä¸ç¯"><p>-</p></div></nav><footer aria-label="Site Info" class="d-flex flex-column justify-content-center text-muted flex-lg-row justify-content-lg-between align-items-lg-center pb-lg-3" ><p class="mb-0 copyright"> © <span id="year"></span> · <em class="fst-normal">exyone</em> <i class="fas fa-heartbeat heartbeat-icon"></i> 13 posts · 17 tags</p><p class="mb-0"> Built with <a href="https://jekyllrb.com" target="_blank" rel="noopener">Jekyll</a> & <a href="https://github.com/cotes2020/jekyll-theme-chirpy" target="_blank" rel="noopener">Chirpy</a> · Hosted on <a href="https://pages.github.com" target="_blank" rel="noopener">GitHub Pages</a> · <a href="https://www.cloudflare.com" target="_blank" rel="noopener">Cloudflare CDN</a></p></footer><style> #sidebar .site-title { font-size: 1.5rem; } .heartbeat-icon { color: #ff6b6b; animation: heartbeat 1.5s ease-in-out infinite; display: inline-block; margin: 0 0.3em; } @keyframes heartbeat { 0%, 100% { transform: scale(1); } 14% { transform: scale(1.15); } 28% { transform: scale(1); } 42% { transform: scale(1.15); } 70% { transform: scale(1); } } .heartbeat-icon:hover { color: #ff4757; animation: heartbeat-hover 1s ease-in-out infinite; cursor: pointer; } @keyframes heartbeat-hover { 0%, 100% { transform: scale(1); } 14% { transform: scale(1.2); } 28% { transform: scale(1); } 42% { transform: scale(1.2); } 70% { transform: scale(1); } } [data-mode="dark"] .heartbeat-icon { color: #ff6b6b; } [data-mode="dark"] .heartbeat-icon:hover { color: #ff4757; }</style>
1<script> (function() { var year = new Date().getFullYear(); document.getElementById('year').textContent = year; })(); </script>
1</div></div><div id="search-result-wrapper" class="d-flex justify-content-center d-none"><div class="col-11 content"><div id="search-hints"><section><h2 class="panel-heading">ç鍿 ç¾</h2><div class="d-flex flex-wrap mt-3 mb-1 me-3"> <a class="post-tag btn btn-outline-primary" href="/tags/%E6%95%99%E7%A8%8B/">æç¨</a> <a class="post-tag btn btn-outline-primary" href="/tags/%E5%BC%80%E6%BA%90%E9%A1%B9%E7%9B%AE/">弿ºé¡¹ç®</a> <a class="post-tag btn btn-outline-primary" href="/tags/%E7%94%9F%E6%B4%BB/">çæ´»</a> <a class="post-tag btn btn-outline-primary" href="/tags/%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91/">软件å¼å</a> <a class="post-tag btn btn-outline-primary" href="/tags/%E5%8D%9A%E5%AE%A2/">å客</a> <a class="post-tag btn btn-outline-primary" href="/tags/%E5%93%B2%E5%AD%A6/">å²å¦</a> <a class="post-tag btn btn-outline-primary" href="/tags/%E8%AF%84%E6%B5%8B/">è¯æµ</a> <a class="post-tag btn btn-outline-primary" href="/tags/%E8%AF%97%E8%AF%8D/">è¯è¯</a> <a class="post-tag btn btn-outline-primary" href="/tags/jekyll/">Jekyll</a> <a class="post-tag btn btn-outline-primary" href="/tags/onedev/">OneDev</a></div></section></div><div id="search-results" class="d-flex flex-wrap justify-content-center text-muted mt-3"></div></div></div></div><aside aria-label="Scroll to Top"> <button id="back-to-top" type="button" class="btn btn-lg btn-box-shadow"> <i class="fas fa-angle-up"></i> </button></aside></div><div id="mask" class="d-none position-fixed w-100 h-100 z-1"></div><aside id="notification" class="toast w-auto rounded-5 text-nowrap" role="alert" aria-live="assertive" aria-atomic="true" data-bs-animation="true" data-bs-autohide="false" ><div class="d-flex align-items-center"><div class="toast-body ps-3">åç°æ°å
容</div><button type="button" class="btn btn-primary btn-sm rounded-2 py-0" aria-label="Update" >æ´æ°</button> <button type="button" class="btn-close mx-3 ms-2" data-bs-dismiss="toast" aria-label="Close" ></button></div></aside><noscript><p style="margin: 2.5rem 0; color: #757575;">Comments require JavaScript.</p></noscript><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@waline/[email protected]/dist/waline.css" media="print" onload="this.media='all'" onerror="this.onerror=null;this.href='https://unpkg.com/@waline/[email protected]/dist/waline.css'" > <noscript><link rel="stylesheet" href="https://unpkg.com/@waline/[email protected]/dist/waline.css"> </noscript><style> #comments-wrapper { margin-top: 2.5rem; } #comments-divider { display: flex; align-items: center; gap: 0.75rem; margin: 2rem 0 1rem; } #comments-divider::before, #comments-divider::after { content: ''; flex: 1; height: 1px; background: var(--main-border-color, var(--bs-border-color, #ddd)); opacity: 0.7; } #cd-toggle { display: inline-flex; align-items: center; gap: 0.4rem; padding: 0.35rem 1rem; border: 1px solid var(--main-border-color, var(--bs-border-color, #ddd)); border-radius: 999px; background: transparent; color: var(--text-muted-color, var(--bs-secondary-color, #757575)); font-size: 0.8rem; line-height: 1.5; cursor: pointer; transition: color 0.15s ease, background-color 0.15s ease, border-color 0.15s ease; } #cd-toggle:hover { background: var(--bs-secondary-bg, #f8f8f8); color: var(--text-color, var(--bs-body-color, #34343c)); } #cd-toggle svg { width: 0.95em; height: 0.95em; fill: currentColor; } #cd-toggle .cd-chevron { transition: transform 0.25s ease; } #cd-toggle[aria-expanded='true'] { color: var(--text-color, var(--bs-body-color, #34343c)); } #cd-toggle[aria-expanded='true'] .cd-chevron { transform: rotate(180deg); } #giscus-box { margin-top: 2.5rem; animation: cd-reveal 0.25s ease both; } @keyframes cd-reveal { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: none; } } [hidden] { display: none !important; }</style>
1<script type="module"> (function () { const footer = document.querySelector('footer'); if (!footer) return; /* ---------------- config ---------------- */ const VER = '2.15.8'; const CDNS = [ `https://cdn.jsdelivr.net/npm/@waline/client@${VER}/dist`, `https://unpkg.com/@waline/client@${VER}/dist` ]; const GISCUS_READY = Boolean( "exyone-js/exyone-js.github.io" && "R_kgDOSzU8GA" ); const GISCUS_ATTRS = { 'data-repo': "exyone-js/exyone-js.github.io", 'data-repo-id': "R_kgDOSzU8GA", 'data-category': "Comments", 'data-category-id': "DIC_kwDOSzU8GM4C_2T_", 'data-mapping': "pathname", 'data-strict': 0, 'data-input-position': "top", 'data-lang': "zh-CN", 'data-reactions-enabled': true ? '1' : '0', 'data-loading': 'lazy' }; const walineConfig = { el: null, /* assigned below */ serverURL: "https://waline.exyon.ee/.netlify/functions/comment", /* Chirpy 7.x signals dark mode via `data-bs-theme` on<html>. */ dark: "html[data-bs-theme=\"dark\"]", lang: "zh-CN", emoji: ["https://cdn.jsdelivr.net/npm/@waline/[email protected]/weibo","https://cdn.jsdelivr.net/npm/@waline/[email protected]/tieba","https://cdn.jsdelivr.net/npm/@waline/[email protected]/bilibili","https://cdn.jsdelivr.net/npm/@waline/[email protected]/qq"], meta: ["nick","mail","link"], requiredMeta: ["nick"], login: "disable", pageview: false }; /* ---------------- dom ---------------- */ const wrapper = document.createElement('div'); wrapper.id = 'comments-wrapper'; const walineBox = document.createElement('div'); walineBox.id = 'waline'; walineConfig.el = walineBox; const giscusBox = document.createElement('div'); giscusBox.id = 'giscus-box'; giscusBox.setAttribute('hidden', ''); footer.insertAdjacentElement('beforebegin', wrapper); wrapper.appendChild(walineBox); /* ---------------- divider ---------------- */ const STORE_KEY = 'comments-giscus-open'; let toggler = null; let label = null; let expanded = false; if (GISCUS_READY) { try { expanded = localStorage.getItem(STORE_KEY) === '1'; } catch (e) {} const divider = document.createElement('div'); divider.id = 'comments-divider'; toggler = document.createElement('button'); toggler.id = 'cd-toggle'; toggler.type = 'button'; toggler.setAttribute('aria-expanded', 'false'); toggler.innerHTML = '<svg viewBox="0 0 16 16" aria-hidden="true"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27s1.36.09 2 .27c1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.012 8.012 0 0 0 16 8c0-4.42-3.58-8-8-8z"/></svg>' + '<span class="cd-label"></span>' + '<svg class="cd-chevron" viewBox="0 0 16 16" aria-hidden="true"><path d="M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z"/></svg>'; label = toggler.querySelector('.cd-label'); toggler.addEventListener('click', () => setExpanded(!expanded)); divider.appendChild(toggler); wrapper.appendChild(divider); wrapper.appendChild(giscusBox); applyState(); } /* ---------------- state ---------------- */ function applyState() { toggler.setAttribute('aria-expanded', expanded ? 'true' : 'false'); label.textContent = expanded ? 'æ¶èµ· GitHub 讨论åº' : 'å±å¼ GitHub 讨论åº'; toggler.setAttribute( 'aria-label', expanded ? 'æ¶èµ· GitHub 讨论åº' : 'å±å¼ GitHub 讨论åº' ); if (expanded) giscusBox.removeAttribute('hidden'); else giscusBox.setAttribute('hidden', ''); } function setExpanded(value) { expanded = value; applyState(); try { localStorage.setItem(STORE_KEY, expanded ? '1' : '0'); } catch (e) {} if (expanded) loadGiscus(); } /* ---------------- waline ---------------- */ let walineLoaded = false; /* Try each CDN in order; return null if all fail (stay silent). */ async function loadModule() { for (const base of CDNS) { try { return await import(`${base}/waline.mjs`); } catch (e) { /* try next */ } } return null; } function loadWaline() { if (walineLoaded) return; walineLoaded = true;
1 loadModule().then((m) => { if (!m) return; m.init(walineConfig); }); } /* ---------------- giscus ---------------- */ function isDark() { return Boolean(document.querySelector('html[data-bs-theme="dark"]')); } let giscusLoaded = false; function loadGiscus() { if (!GISCUS_READY || giscusLoaded) { syncGiscusTheme(); return; } giscusLoaded = true; const script = document.createElement('script'); script.src = 'https://giscus.app/client.js'; /* giscus mounts its iframe next to the script element it was loaded from. */ script.async = false; Object.entries(GISCUS_ATTRS).forEach(([key, value]) => { if (value !== '' && value !== null && value !== undefined) { script.setAttribute(key, value); } }); script.setAttribute('data-theme', isDark() ? 'dark' : 'light'); giscusBox.appendChild(script); /* Sync theme as soon as the iframe lands. */ new MutationObserver((_, observer) => { if (giscusBox.querySelector('iframe.giscus-frame')) { observer.disconnect(); syncGiscusTheme(); } }).observe(giscusBox, { childList: true, subtree: true }); } function syncGiscusTheme() { const frame = giscusBox.querySelector('iframe.giscus-frame'); if (!frame || !frame.contentWindow) return; frame.contentWindow.postMessage( { giscus: { setConfig: { theme: isDark() ? 'dark' : 'light' } } }, 'https://giscus.app' ); } /* Follow Chirpy's light/dark toggle. */ new MutationObserver(() => syncGiscusTheme()).observe( document.documentElement, { attributes: true, attributeFilter: ['data-bs-theme'] } ); /* ---------------- lazy load ---------------- */ let armed = false; const observer = new IntersectionObserver( (entries) => { if (!armed && entries[0].isIntersecting) { armed = true; observer.disconnect(); loadWaline(); if (expanded) loadGiscus(); } }, { rootMargin: '400px 0px' } ); if (toggler) { toggler.addEventListener('click', () => { armed = true; observer.disconnect(); loadWaline(); }); } observer.observe(wrapper); })(); </script>
1
1<script> document.addEventListener('DOMContentLoaded', () => { SimpleJekyllSearch({ searchInput: document.getElementById('search-input'), resultsContainer: document.getElementById('search-results'), json: '/assets/js/data/search.json', searchResultTemplate: '<article class="px-1 px-sm-2 px-lg-4 px-xl-0"><header><h2><a href="{url}">{title}</a></h2><div class="post-meta d-flex flex-column flex-sm-row text-muted mt-1 mb-1"> {categories} {tags}</div></header><p>{content}</p></article>', noResultsText: '<p class="mt-5">æç´¢ç»æä¸ºç©º</p>', templateMiddleware: function(prop, value, template) { if (prop === 'categories') { if (value === '') { return `${value}`; } else { return `<div class="me-sm-4"><i class="far fa-folder fa-fw"></i>${value}</div>`; } } if (prop === 'tags') { if (value === '') { return `${value}`; } else { return `<div><i class="fa fa-tag fa-fw"></i>${value}</div>`; } } } }); }); </script>
vendor: 1 bytes, line 1
1
2<script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a42afd807ab210dc',t:'MTc5MDY4NDkzMw=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>
2<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"32f93e9ce8f0445a85fbc7431c9a8541","r":1,"spa":2}' crossorigin="anonymous"></script>
vendor: 1 bytes, line 2
2
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.