-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathindex.html
More file actions
85 lines (84 loc) · 99.6 KB
/
Copy pathindex.html
File metadata and controls
85 lines (84 loc) · 99.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<!doctype html><html itemscope itemtype=http://schema.org/WebPage lang=zh-CN><head><meta name=generator content="Hugo 0.160.1"><meta name=theme content='FixIt v0.4.4-20260308100717-fe7105a3'><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1,maximum-scale=2"><meta name=robots content="noodp"><title>毕少侠 - 也在江湖</title><meta name=author content="geekswg"><meta name=description content="博客:探索、发现、分享 By geekswg-[毕少侠]"><meta name=keywords content='geekswg,毕少侠,博客,Github,Hugo,LoveIt,FixIt'><meta itemprop=name content="毕少侠"><meta itemprop=description content="博客:探索、发现、分享 By geekswg-[毕少侠]"><meta itemprop=datePublished content="2026-03-07T15:01:09+08:00"><meta itemprop=dateModified content="2026-04-25T02:15:36+00:00"><meta itemprop=image content="https://geekswg.js.cool/images/avatar.png"><meta property="og:url" content="https://geekswg.js.cool/"><meta property="og:site_name" content="毕少侠"><meta property="og:title" content="毕少侠"><meta property="og:description" content="博客:探索、发现、分享 By geekswg-[毕少侠]"><meta property="og:locale" content="zh_CN"><meta property="og:type" content="website"><meta property="og:image" content="https://geekswg.js.cool/images/avatar.png"><meta name=twitter:card content="summary_large_image"><meta name=twitter:image content="https://geekswg.js.cool/images/avatar.png"><meta name=twitter:title content="毕少侠"><meta name=twitter:description content="博客:探索、发现、分享 By geekswg-[毕少侠]"><meta name=application-name content="毕少侠APP-Hugo"><meta name=apple-mobile-web-app-title content="毕少侠APP-Hugo"><meta name=theme-color data-light=#f8f8f8 data-dark=#252627 content="#f8f8f8"><meta name=msapplication-TileColor content="#da532c"><link rel=icon href=/favicon.svg><link rel=apple-touch-icon sizes=180x180 href=/apple-touch-icon.png><link rel=mask-icon href=/safari-pinned-tab.svg color=#5bbad5><link rel=manifest href=/site.webmanifest><link rel=canonical type=text/html href=https://geekswg.js.cool/ title=毕少侠><link rel=alternate type=application/rss+xml href=https://geekswg.js.cool/index.xml title=毕少侠><link rel=alternate type=text/html href=https://geekswg.js.cool/archives/ title=毕少侠><link rel=alternate type=text/html href=https://geekswg.js.cool/offline/ title=毕少侠><link rel=search type=application/json href=https://geekswg.js.cool/search.json title=毕少侠><link rel=stylesheet href=/css/config.min.css><link rel=stylesheet href=/css/style.min.css><link rel=preload href=https://unpkg.com/@fortawesome/fontawesome-free@7.1.0/css/all.min.css as=style onload='this.removeAttribute("onload"),this.rel="stylesheet"'><noscript><link rel=stylesheet href=https://unpkg.com/@fortawesome/fontawesome-free@7.1.0/css/all.min.css></noscript><link rel=preload href=https://unpkg.com/animate.css@4.1.1/animate.min.css as=style onload='this.removeAttribute("onload"),this.rel="stylesheet"'><noscript><link rel=stylesheet href=https://unpkg.com/animate.css@4.1.1/animate.min.css></noscript><meta name=msvalidate.01 content="A1131C8FE475E0378A8D237741CD7850"><meta name=baidu-site-verification content="codeva-ulAL77571o"><script type=application/ld+json>{"@context":"http://schema.org","@type":"WebSite","url":"https:\/\/geekswg.js.cool\/","inLanguage":"zh-CN","author":{"@type":"Person","name":"geekswg"},"description":"博客:探索、发现、分享 By geekswg-[毕少侠]","image":"https:\/\/geekswg.js.cool\/favicon.svg","thumbnailUrl":"https:\/\/geekswg.js.cool\/favicon.svg","license":"geekswg \u0026 毕少侠","name":"毕少侠"}</script><script src=/js/head/color-scheme.min.js></script><meta name=viewport content="width=device-width,initial-scale=1"><script defer src=https://cloud.umami.is/script.js data-website-id=9e48243d-f9ff-440f-9df5-b1c3f1efdb53></script><script>var _hmt=_hmt||[];(function(){var e,t=document.createElement("script");t.src="https://hm.baidu.com/hm.js?b9f505844079261e3c4cbca7b4f72b2c",e=document.getElementsByTagName("script")[0],e.parentNode.insertBefore(t,e)})()</script><script src=/plugins/js/sweetalert2-11.js></script><style>.swal2-popup{background:#fff;color:#000;text-align:left}.swal2-confirm{background-color:#3085d6;color:#fff}.swal2-popup.dark-theme{background:#333;color:#fff}.swal2-confirm.dark-theme{background-color:#444;color:#fff}</style><script>isDark=document.documentElement.getAttribute("data-theme")==="dark",window.addEventListener("load",function(){switchGiscusTheme(document.documentElement.getAttribute("data-theme"));const e=new MutationObserver(e=>{e.forEach(e=>{if(e.attributeName==="data-theme"){const e=document.documentElement.getAttribute("data-theme");console.log(`主题切换为: ${e}`),isDark=e==="dark",mySwal=Swal.mixin({title:"提示",icon:"warning",text:"",timer:5e3,timerProgressBar:!0,confirmButtonColor:"#3085d6",cancelButtonColor:"#d33",showConfirmButton:!0,confirmButtonText:"确定",showCancelButton:!0,cancelButtonText:"取消",allowOutsideClick:!1,customClass:{popup:isDark?"dark-theme":""}}),myToast=Swal.mixin({toast:!0,icon:"info",position:"top",showConfirmButton:!1,timer:1e3,timerProgressBar:!0,didOpen:e=>{e.onmouseenter=Swal.stopTimer,e.onmouseleave=Swal.resumeTimer},customClass:{popup:isDark?"dark-theme":""}}),myToast.fire(`主题切换为: ${e}`),giscusTheme=e==="dark",switchGiscusTheme(e)}})});e.observe(document.documentElement,{attributes:!0})});function switchGiscusTheme(e){giscusContainer=document.querySelector("iframe.giscus-frame"),giscusContainer&&giscusContainer.contentWindow.postMessage({giscus:{setConfig:{theme:e==="dark"?"dark_dimmed":"light"}}},"https://giscus.app")}mySwal=Swal.mixin({title:"提示",icon:"warning",text:"",timer:1e4,timerProgressBar:!0,confirmButtonColor:"#3085d6",cancelButtonColor:"#d33",showConfirmButton:!0,confirmButtonText:"确定",showCancelButton:!0,cancelButtonText:"取消",allowOutsideClick:!1,customClass:{popup:isDark?"dark-theme":""}}),myToast=Swal.mixin({toast:!0,icon:"info",position:"top",showConfirmButton:!1,timer:3e3,timerProgressBar:!0,didOpen:e=>{e.onmouseenter=Swal.stopTimer,e.onmouseleave=Swal.resumeTimer},customClass:{popup:isDark?"dark-theme":""}})</script><script></script><script>function printConsole(){console.log(`
_
| |
____ ____ ____ | | _ ___ _ _ _ ____
/ _ | / _ ) / _ )| | / ) /___)| | | | / _ |
( ( | |( (/ / ( (/ / | |< ( |___ || | | |( ( | |
\\_|| | \\____) \\____)|_| \\_)(___/ \\____| \\_|| |
(_____| (_____|`),console.log(`
%c 很抱歉看到这个信息,表示网站出现了严重Bug,请通过下面的联系方式,反馈问题!
`,"color: red; background: #4bffba; padding:5px 0; border-radius: 5px 5px 5px 5px;"),console.log(`%c 毕少侠 | https://geekswg.github.io %c mail: mailto://geekswg@qq.com %c
您好!
欢迎光顾我的博客,
请多多指教。
`,"color: #FF0000; background: #4bffba; padding:5px 0; border-radius: 5px 5px 5px 5px;","background: #fadfa3; padding:5px 0; border-radius: 5px 5px 5px 5px;","")}</script><script src=/js/greet.js></script><script>document.addEventListener("DOMContentLoaded",function(){myToast.fire({text:getTimeGreeting()}),initCustomALinks()});function initCustomALinks(){let t=function(e){const t=["https://geekswg","http://geekswg","https://github.com","https://gavinblog","https://cdn","https://jsd","javascript:","https://gavinwells","http://127.0.0.1","http://localhost","https://www.douyin.","tencent://","mailto:"],n=["geekswg","342901.xyz"];return t.some(t=>e.startsWith(t))||n.some(t=>e.includes(t))},n=function(){document.querySelectorAll("a[href]").forEach(e=>{if(nextUrl=e.href,t(nextUrl)||nextUrl==="")return;e.hasAttribute("data-pjax-ignore")||e.setAttribute("data-pjax-ignore","true"),e.removeEventListener("click",()=>{});let n="";e.addEventListener("click",t=>{try{if(n=e.href,mySwal===0[0]){console.log("mySwal is undefined");return}t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation(),mySwal.fire({title:"即将访问外部网站",icon:"warning",html:'<div style="font-size: clamp(6px, 5vw, 14px);">【 '+n+" 】<hr><br/><span style='color:red;'>5秒后即将离开本站,请注意账号财产安全</span></div>",showCancelButton:!0,confirmButtonText:"😨我已知晓风险😨立即访问",showCancelButton:!1,footer:'<a href="mailto:geekswg@qq.com?&subject=网站投诉[geekkswg.js.cool]&body=当前页面:'+location.href+",跳转网址"+e.href+'">网址有问题,我要投诉</a>'}).then(e=>{window.open(n)})}catch(e){console.log(e)}})})};n();var e=window.location.href;e.startsWith("http://127.0.0.1")||e.startsWith("http://localhost")||disable_Copy_Debug_F12()}function disable_Copy_Debug_F12(){document.onmousedown=click,document.oncontextmenu=new Function("return false;"),document.onkeydown=document.onkeyup=document.onkeypress=function(){if(window.event.keyCode==123)return mySwal.fire({title:"你想做什么?",icon:"question",text:"小朋友,你发现了什么?",showCancelButton:!0,confirmButtonText:"😭我错了",cancelButtonText:"再也不敢了😭",footer:'<a href="mailto:geekswg@qq.com?&subject=网站问题反馈[geekkswg.js.cool]&body=当前访问页面:'+location.href+',我想F12你的网站"> 有问题联系站长 </a>'}).then(e=>{}),window.event.returnValue=!1,!1}}function click(e){document.all&&(event.button==2||event.button==3)&&(oncontextmenu="return false"),document.layers&&e.which==3&&(oncontextmenu="return false"),document.layers&&document.captureEvents(Event.MOUSEDOWN)}</script></head><body data-instant-intensity=viewport data-header-desktop=sticky data-header-mobile=auto><div class=wrapper data-page-style=wide><header class="desktop animate__faster" id=header-desktop><div class=header-wrapper data-github-corner=left><div class=header-title><a href=/ title=毕少侠><img class=logo src=/images/avatar.png alt=毕少侠 height=32 width=32><span class=header-title-text>毕少侠</span></a><span class=header-subtitle>也在江湖</span></div><nav><ul class=menu><li class="menu-item has-children"><a class=menu-link href=/posts/ title=我的博客><i class="fa-solid fa-blog fa-sm" aria-hidden=true></i> 博客</a><i class="dropdown-icon fa-solid fa-chevron-down" aria-hidden=true></i><ul class=sub-menu><li class=menu-item><a class=menu-link href=/dlogs/ title=我的日常记录><i class="fa-solid fa-calendar-days fa-sm" aria-hidden=true></i> 日常</a></li><li class=menu-item><a class=menu-link href=/categories/><i class="fa-solid fa-th fa-sm" aria-hidden=true></i> 分类</a></li><li class=menu-item><a class=menu-link href=/tags/><i class="fa-solid fa-tags fa-sm" aria-hidden=true></i> 标签</a></li><li class=menu-item><a class=menu-link href=/collections/><i class="fa-solid fa-folder-tree fa-sm" aria-hidden=true></i> 集合</a></li><li class=menu-item><a class=menu-link href=/gallery/><i class="fa-regular fa-images fa-beat fa-sm" aria-hidden=true></i> 相册</a></li><li class=menu-item><a class=menu-link href=https://libretv.geekswg.dpdns.org/ title=在线影视资源LibreTV rel="noopener noreferrer" target=_blank><i class="fas fa-film fa-beat fa-sm" aria-hidden=true></i> 影视</a></li></ul></li><li class="menu-item has-children"><a class=menu-link href=javascript:void(0); title=毕少侠所有站点><i class="fa-solid fa-book fa-sm" aria-hidden=true></i> 文档</a><i class="dropdown-icon fa-solid fa-chevron-down" aria-hidden=true></i><ul class=sub-menu><li class=menu-item><a class=menu-link href=/posts/2023/hugo-admonition/ title=shortcode-admonition><i class="fa-brands fa-readme fa-sm" aria-hidden=true></i> Fixit-Admonition</a></li><li class=menu-item><a class=menu-link href=/posts/2023/fixit-beautification/ title="Hugo Fixit主题个性化美化记录"><i class="fa-brands fa-readme fa-sm" aria-hidden=true></i> Fixit-主题美化指南</a></li><li class=menu-item><a class=menu-link href=/posts/2023/demo/ title="Hugo 提供了多个内置的 Shortcodes, 以方便作者保持 Markdown 内容的整洁。"><i class="fa-brands fa-readme fa-sm" aria-hidden=true></i> Fixit-常用示例</a></li><li class=menu-item><a class=menu-link href=/posts/2023/hugo-guideline/ title=快速上手Hugo-blog指引。记录常用命令,方便查阅。><i class="fa-brands fa-readme fa-sm" aria-hidden=true></i> Fixit-快速开始</a></li></ul></li><li class="menu-item has-children"><a class=menu-link href=/about/ title=我社交信息><i class="fa-solid fa-id-card fa-sm" aria-hidden=true></i> 社交</a><i class="dropdown-icon fa-solid fa-chevron-down" aria-hidden=true></i><ul class=sub-menu><li class=menu-item><a class=menu-link href=/about/><i class="fa-solid fa-user fa-sm" aria-hidden=true></i> 1.关于</a></li><li class=menu-item><a class=menu-link href=/notepad/><i class="fa-solid fa-comments fa-sm" aria-hidden=true></i> 2.留言</a></li><li class=menu-item><a class=menu-link href=/friends/><i class="fa-solid fa-users fa-sm" aria-hidden=true></i> 3.友链</a></li><li class=menu-item><a class=menu-link href=https://travellings.cn/go-by-clouds.html rel="noopener noreferrer" target=_blank><i class="fa-solid fa-train-subway fa-sm" aria-hidden=true></i> 4.开往</a></li><li class=menu-item><a class=menu-link href=https://www.foreverblog.cn/go.html rel="noopener noreferrer" target=_blank><i class="fa-brands fa-blogger fa-sm" aria-hidden=true></i> 5.黑洞</a></li></ul></li><li class="menu-item has-children"><a class=menu-link href=/website/ title=毕少侠旗下所有站点><i class="fa-solid fa-globe fa-sm" aria-hidden=true></i> 站点</a><i class="dropdown-icon fa-solid fa-chevron-down" aria-hidden=true></i><ul class=sub-menu><li class=menu-item><a class=menu-link href=https://home.geekswg.dpdns.org rel="noopener noreferrer" target=_blank><i class="fa-solid fa-home fa-sm" aria-hidden=true></i> 主页</a></li><li class=menu-item><a class=menu-link href=/stats/ title=我的博客数据统计><i class="fas fa-chart-bar fa-sm" aria-hidden=true></i> 统计</a></li><li class=menu-item><a class=menu-link href=https://blog.342901.xyz rel="noopener noreferrer" target=_blank><i class="fa-solid fa-blog fa-sm" aria-hidden=true></i> Blog-342901.xyz</a></li><li class=menu-item><a class=menu-link href=https://astro.342901.xyz/ title="Atro博客, Mizuki主题" rel="noopener noreferrer" target=_blank><i class="fa-solid fa-circle-down fa-sm" aria-hidden=true></i> Blog-Astro-Mizuki</a></li><li class=menu-item><a class=menu-link href=https://geekswg.pages.dev/ title=geekswg.pages.dev加速Github-Pages rel="noopener noreferrer" target=_blank><i class="fab fa-cloudflare fa-sm" aria-hidden=true></i> Blog-CloudFlare</a></li><li class=menu-item><a class=menu-link href=https://hexo.geekswg.dpdns.org rel="noopener noreferrer" target=_blank><i class="far fa-grin-alt fa-sm" aria-hidden=true></i> Blog-Hexo-Anzhiyu</a></li><li class=menu-item><a class=menu-link href=https://geekswg.netlify.app/ title=geekswg-netlify.app,加速Github-Pages rel="noopener noreferrer" target=_blank><i class="fas fa-blog fa-sm" aria-hidden=true></i> Blog-Netlify</a></li><li class=menu-item><a class=menu-link href=https://gavinblog.github.io/stellar/ rel="noopener noreferrer" target=_blank><i class="fa-solid fa-blog fa-sm" aria-hidden=true></i> Blog-stellar</a></li><li class=menu-item><a class=menu-link href=https://cloud.umami.is/share/FLnT7nP7X3IXiB0C title=umami-网站流量统计 rel="noopener noreferrer" target=_blank><i class="fas fa-eye fa-sm" aria-hidden=true></i> umami</a></li><li class=menu-item><a class=menu-link href=https://status.geekswg.dpdns.org/ title="站点监测 - uptimeFlare" rel="noopener noreferrer" target=_blank><i class="fas fa-eye fa-sm" aria-hidden=true></i> 站点监测</a></li></ul></li><li class=menu-item><a class=menu-link href=/funs/ title=有趣的小玩意>Funs</a></li><li class="menu-item delimiter"></li><li class="menu-item search" id=search-desktop><input type=text placeholder=输入关键词搜索 id=search-input-desktop>
<a href=javascript:void(0); class="search-button search-toggle" id=search-toggle-desktop title=搜索><i class="fa-solid fa-search" aria-hidden=true></i>
</a><a href=javascript:void(0); class="search-button search-clear" id=search-clear-desktop title=清空><i class="fa-solid fa-times-circle" aria-hidden=true></i>
</a><span class="search-button search-loading" id=search-loading-desktop><i class="fa-solid fa-spinner fa-spin" aria-hidden=true></i></span></li><li class="menu-item theme-switch" role=button aria-label=切换主题 title=切换主题><i class="fa-solid fa-adjust" aria-hidden=true></i></li><li class="menu-item menu-system" style=text-align:center;cursor:pointer><a class=menu-link href=https://www.travellings.cn/go-by-clouds.html target=_blank title=开往><i class="fa-solid fa-train-subway"></i>
</a>
<a class=menu-link onclick=randomPost() title=随机文章><i class="fa-solid fa-shuffle fa-beat"></i>
</a>
<a class=menu-link title=全屏/退出全屏 id=fullscreen><i class="fa fa-arrows-alt fa-fade" aria-hidden=true onclick=toggleFullscreen()></i></a></li><li class=menu-item><div style=margin-top:-12px;text-align:center><iframe allowtransparency=true frameborder=0 height=64 scrolling=no src=about:blank data-src-base="//tianqi.2345.com/plugin/widget/index.htm?s=2&z=1&t=0&v=0&d=2&bd=0&k=000000&f=<f=009944&htf=cc0000&q=1&e=1&a=1&c=54511&w=290&h=70&align=center" class=weather-iframe style="background:0 0!important"></iframe></div></li><style>.weather-iframe{background:0 0!important;color-scheme:light dark}.weather-iframe.weather-dark{filter:invert(1)hue-rotate(180deg);color-scheme:dark}.weather-iframe.weather-light{color-scheme:light}</style><script>(function(){function e(e,t,n){try{const s=new URL(e,window.location.origin);return s.searchParams.set(t,n),s.href}catch{const s=new RegExp("([?&]"+t+"=)([^&]*)");if(s.test(e))return e.replace(s,"$1"+n);const o=e.includes("?")?"&":"?";return e+o+t+"="+n}}function t(t){const s=document.querySelector(".weather-iframe");if(!s)return;const o=t==="dark",i=s.dataset.srcBase||s.getAttribute("src")||"";let n=i||"about:blank";n=e(n,"k",o?"000000":"000000"),n=e(n,"ltf",o?"66cc66":"009944"),n=e(n,"htf",o?"ff6666":"cc0000"),s.getAttribute("src")!==n&&s.setAttribute("src",n),s.classList.remove("weather-dark","weather-light"),s.classList.add(o?"weather-dark":"weather-light")}function n(){const s=document.documentElement,e=typeof window!="undefined"&&window.fixit?window.fixit:typeof window!="undefined"&&window.FixIt?window.FixIt:null;let t=null;if(e&&typeof e.isDark=="function")try{t=e.isDark()}catch{t=null}else e&&typeof e.isDark=="boolean"?t=e.isDark:e&&typeof e.isDark=="string"&&(e.isDark==="true"&&(t=!0),e.isDark==="false"&&(t=!1));if(t!==null)return{theme:t?"dark":"light",reliable:!0,source:"fixit.isDark"};const o=s.getAttribute("data-theme")||s.dataset.theme||s.dataset.scheme;if(o==="dark"||o==="light")return{theme:o,reliable:!0,source:"data-theme"};let n;try{n=localStorage.getItem("FixItColorScheme")||localStorage.getItem("color-scheme")||localStorage.getItem("theme")}catch{}if(n==="dark"||n==="light")return{theme:n,reliable:!0,source:"localStorage"};if(n==="auto"){const e=window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches;return{theme:e?"dark":"light",reliable:!1,source:"localStorage:auto"}}const i=window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches;return{theme:i?"dark":"light",reliable:!1,source:"prefers-color-scheme"}}document.addEventListener("DOMContentLoaded",function(){let e=0;const s=10,o=()=>{const i=n(),a=i.reliable||document.documentElement.hasAttribute("data-theme")||e>=s;a&&t(i.theme),!a&&e<s&&(e+=1,setTimeout(o,80+e*80))};o();const i=new MutationObserver(function(e){for(const n of e)if(n.type==="attributes"&&n.attributeName==="data-theme"){const e=document.documentElement.getAttribute("data-theme");t(e)}});if(i.observe(document.documentElement,{attributes:!0}),window.matchMedia){const e=window.matchMedia("(prefers-color-scheme: dark)"),s=()=>{const e=n();t(e.theme)};e.addEventListener?e.addEventListener("change",s):e.addListener&&e.addListener(s)}})})()</script><script>function randomPost(){fetch("/sitemap.xml").then(e=>e.text()).then(e=>(new window.DOMParser).parseFromString(e,"text/xml")).then(e=>{let s=e.querySelectorAll("url loc"),n,t;do n=s[Math.floor(Math.random()*s.length)].innerHTML,t=n.split("/")[3]||"";while(t==""||t=="tags"||t=="offline"||t=="categories"||t=="friends"||t=="collections"||t=="about")let o=`https://geekswg.js.cool/`;n="/"+n.replace(`https://geekswg.js.cool/`,""),pjax.load(n).catch(()=>{}),myToast.fire({title:"正在访问随机文章",timer:3e3})})}function toggleFullscreen(){try{let e=document.documentElement,t=!!(document.fullscreen||document.mozFullScreen||document.webkitIsFullScreen||document.webkitFullScreen||document.msFullScreen);typeof t=="undefined"||!t?document.requestFullscreen?e.requestFullscreen():e.mozRequestFullScreen?e.mozRequestFullScreen():e.webkitRequestFullscreen?e.webkitRequestFullscreen():e.msRequestFullscreen&&e.msRequestFullscreen():document.exitFullscreen?document.exitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen&&document.webkitExitFullscreen()}catch(e){console.log(e)}}</script></ul></nav></div></header><header class="mobile animate__faster" id=header-mobile><div class=header-container><div class=header-wrapper><div class=header-title><a href=/ title=毕少侠><img class=logo src=/images/avatar.png alt=毕少侠 height=26 width=26><span class=header-title-text>毕少侠</span></a><span class=header-subtitle>也在江湖</span></div><div class=theme-switch role=button aria-label=切换主题><i class="fa-solid fa-adjust" aria-hidden=true></i></div><div class=menu-toggle id=menu-toggle-mobile role=button aria-labelledby=menu-mobile><span></span><span></span><span></span></div></div><nav><ul class=menu id=menu-mobile><li class=search-wrapper><div class="search mobile" id=search-mobile><input type=text placeholder=输入关键词搜索 id=search-input-mobile>
<a href=javascript:void(0); class="search-button search-toggle" id=search-toggle-mobile title=搜索><i class="fa-solid fa-search" aria-hidden=true></i>
</a><a href=javascript:void(0); class="search-button search-clear" id=search-clear-mobile title=清空><i class="fa-solid fa-times-circle" aria-hidden=true></i>
</a><span class="search-button search-loading" id=search-loading-mobile><i class="fa-solid fa-spinner fa-spin" aria-hidden=true></i></span></div><a href=javascript:void(0); class=search-cancel id=search-cancel-mobile>取消</a></li><li class=menu-item><span class=nested-item><a class=menu-link href=/posts/ title=我的博客><i class="fa-solid fa-blog fa-sm" aria-hidden=true></i> 博客</a>
<i class="dropdown-icon fa-solid fa-chevron-right" aria-hidden=true></i></span><ul class=sub-menu><li class=menu-item><a class=menu-link href=/dlogs/ title=我的日常记录><i class="fa-solid fa-calendar-days fa-sm" aria-hidden=true></i> 日常</a></li><li class=menu-item><a class=menu-link href=/categories/><i class="fa-solid fa-th fa-sm" aria-hidden=true></i> 分类</a></li><li class=menu-item><a class=menu-link href=/tags/><i class="fa-solid fa-tags fa-sm" aria-hidden=true></i> 标签</a></li><li class=menu-item><a class=menu-link href=/collections/><i class="fa-solid fa-folder-tree fa-sm" aria-hidden=true></i> 集合</a></li><li class=menu-item><a class=menu-link href=/gallery/><i class="fa-regular fa-images fa-beat fa-sm" aria-hidden=true></i> 相册</a></li><li class=menu-item><a class=menu-link href=https://libretv.geekswg.dpdns.org/ title=在线影视资源LibreTV rel="noopener noreferrer" target=_blank><i class="fas fa-film fa-beat fa-sm" aria-hidden=true></i> 影视</a></li></ul></li><li class=menu-item><span class=nested-item><a class=menu-link href=javascript:void(0); title=毕少侠所有站点><i class="fa-solid fa-book fa-sm" aria-hidden=true></i> 文档</a>
<i class="dropdown-icon fa-solid fa-chevron-right" aria-hidden=true></i></span><ul class=sub-menu><li class=menu-item><a class=menu-link href=/posts/2023/hugo-admonition/ title=shortcode-admonition><i class="fa-brands fa-readme fa-sm" aria-hidden=true></i> Fixit-Admonition</a></li><li class=menu-item><a class=menu-link href=/posts/2023/fixit-beautification/ title="Hugo Fixit主题个性化美化记录"><i class="fa-brands fa-readme fa-sm" aria-hidden=true></i> Fixit-主题美化指南</a></li><li class=menu-item><a class=menu-link href=/posts/2023/demo/ title="Hugo 提供了多个内置的 Shortcodes, 以方便作者保持 Markdown 内容的整洁。"><i class="fa-brands fa-readme fa-sm" aria-hidden=true></i> Fixit-常用示例</a></li><li class=menu-item><a class=menu-link href=/posts/2023/hugo-guideline/ title=快速上手Hugo-blog指引。记录常用命令,方便查阅。><i class="fa-brands fa-readme fa-sm" aria-hidden=true></i> Fixit-快速开始</a></li></ul></li><li class=menu-item><span class=nested-item><a class=menu-link href=/about/ title=我社交信息><i class="fa-solid fa-id-card fa-sm" aria-hidden=true></i> 社交</a>
<i class="dropdown-icon fa-solid fa-chevron-right" aria-hidden=true></i></span><ul class=sub-menu><li class=menu-item><a class=menu-link href=/about/><i class="fa-solid fa-user fa-sm" aria-hidden=true></i> 1.关于</a></li><li class=menu-item><a class=menu-link href=/notepad/><i class="fa-solid fa-comments fa-sm" aria-hidden=true></i> 2.留言</a></li><li class=menu-item><a class=menu-link href=/friends/><i class="fa-solid fa-users fa-sm" aria-hidden=true></i> 3.友链</a></li><li class=menu-item><a class=menu-link href=https://travellings.cn/go-by-clouds.html rel="noopener noreferrer" target=_blank><i class="fa-solid fa-train-subway fa-sm" aria-hidden=true></i> 4.开往</a></li><li class=menu-item><a class=menu-link href=https://www.foreverblog.cn/go.html rel="noopener noreferrer" target=_blank><i class="fa-brands fa-blogger fa-sm" aria-hidden=true></i> 5.黑洞</a></li></ul></li><li class=menu-item><span class=nested-item><a class=menu-link href=/website/ title=毕少侠旗下所有站点><i class="fa-solid fa-globe fa-sm" aria-hidden=true></i> 站点</a>
<i class="dropdown-icon fa-solid fa-chevron-right" aria-hidden=true></i></span><ul class=sub-menu><li class=menu-item><a class=menu-link href=https://home.geekswg.dpdns.org rel="noopener noreferrer" target=_blank><i class="fa-solid fa-home fa-sm" aria-hidden=true></i> 主页</a></li><li class=menu-item><a class=menu-link href=/stats/ title=我的博客数据统计><i class="fas fa-chart-bar fa-sm" aria-hidden=true></i> 统计</a></li><li class=menu-item><a class=menu-link href=https://blog.342901.xyz rel="noopener noreferrer" target=_blank><i class="fa-solid fa-blog fa-sm" aria-hidden=true></i> Blog-342901.xyz</a></li><li class=menu-item><a class=menu-link href=https://astro.342901.xyz/ title="Atro博客, Mizuki主题" rel="noopener noreferrer" target=_blank><i class="fa-solid fa-circle-down fa-sm" aria-hidden=true></i> Blog-Astro-Mizuki</a></li><li class=menu-item><a class=menu-link href=https://geekswg.pages.dev/ title=geekswg.pages.dev加速Github-Pages rel="noopener noreferrer" target=_blank><i class="fab fa-cloudflare fa-sm" aria-hidden=true></i> Blog-CloudFlare</a></li><li class=menu-item><a class=menu-link href=https://hexo.geekswg.dpdns.org rel="noopener noreferrer" target=_blank><i class="far fa-grin-alt fa-sm" aria-hidden=true></i> Blog-Hexo-Anzhiyu</a></li><li class=menu-item><a class=menu-link href=https://geekswg.netlify.app/ title=geekswg-netlify.app,加速Github-Pages rel="noopener noreferrer" target=_blank><i class="fas fa-blog fa-sm" aria-hidden=true></i> Blog-Netlify</a></li><li class=menu-item><a class=menu-link href=https://gavinblog.github.io/stellar/ rel="noopener noreferrer" target=_blank><i class="fa-solid fa-blog fa-sm" aria-hidden=true></i> Blog-stellar</a></li><li class=menu-item><a class=menu-link href=https://cloud.umami.is/share/FLnT7nP7X3IXiB0C title=umami-网站流量统计 rel="noopener noreferrer" target=_blank><i class="fas fa-eye fa-sm" aria-hidden=true></i> umami</a></li><li class=menu-item><a class=menu-link href=https://status.geekswg.dpdns.org/ title="站点监测 - uptimeFlare" rel="noopener noreferrer" target=_blank><i class="fas fa-eye fa-sm" aria-hidden=true></i> 站点监测</a></li></ul></li><li class=menu-item><a class=menu-link href=/funs/ title=有趣的小玩意>Funs</a></li><li class="menu-item menu-system"><li class="menu-item menu-system" style=text-align:center;cursor:pointer><a class=menu-link href=https://www.travellings.cn/go-by-clouds.html target=_blank title=开往><i class="fa-solid fa-train-subway"></i>
</a>
<a class=menu-link onclick=randomPost() title=随机文章><i class="fa-solid fa-shuffle fa-beat"></i>
</a>
<a class=menu-link title=全屏/退出全屏 id=fullscreen><i class="fa fa-arrows-alt fa-fade" aria-hidden=true onclick=toggleFullscreen()></i></a></li><li class=menu-item><div style=margin-top:-12px;text-align:center><iframe allowtransparency=true frameborder=0 height=64 scrolling=no src=about:blank data-src-base="//tianqi.2345.com/plugin/widget/index.htm?s=2&z=1&t=0&v=0&d=2&bd=0&k=000000&f=<f=009944&htf=cc0000&q=1&e=1&a=1&c=54511&w=290&h=70&align=center" class=weather-iframe style="background:0 0!important"></iframe></div></li><style>.weather-iframe{background:0 0!important;color-scheme:light dark}.weather-iframe.weather-dark{filter:invert(1)hue-rotate(180deg);color-scheme:dark}.weather-iframe.weather-light{color-scheme:light}</style><script>(function(){function e(e,t,n){try{const s=new URL(e,window.location.origin);return s.searchParams.set(t,n),s.href}catch{const s=new RegExp("([?&]"+t+"=)([^&]*)");if(s.test(e))return e.replace(s,"$1"+n);const o=e.includes("?")?"&":"?";return e+o+t+"="+n}}function t(t){const s=document.querySelector(".weather-iframe");if(!s)return;const o=t==="dark",i=s.dataset.srcBase||s.getAttribute("src")||"";let n=i||"about:blank";n=e(n,"k",o?"000000":"000000"),n=e(n,"ltf",o?"66cc66":"009944"),n=e(n,"htf",o?"ff6666":"cc0000"),s.getAttribute("src")!==n&&s.setAttribute("src",n),s.classList.remove("weather-dark","weather-light"),s.classList.add(o?"weather-dark":"weather-light")}function n(){const s=document.documentElement,e=typeof window!="undefined"&&window.fixit?window.fixit:typeof window!="undefined"&&window.FixIt?window.FixIt:null;let t=null;if(e&&typeof e.isDark=="function")try{t=e.isDark()}catch{t=null}else e&&typeof e.isDark=="boolean"?t=e.isDark:e&&typeof e.isDark=="string"&&(e.isDark==="true"&&(t=!0),e.isDark==="false"&&(t=!1));if(t!==null)return{theme:t?"dark":"light",reliable:!0,source:"fixit.isDark"};const o=s.getAttribute("data-theme")||s.dataset.theme||s.dataset.scheme;if(o==="dark"||o==="light")return{theme:o,reliable:!0,source:"data-theme"};let n;try{n=localStorage.getItem("FixItColorScheme")||localStorage.getItem("color-scheme")||localStorage.getItem("theme")}catch{}if(n==="dark"||n==="light")return{theme:n,reliable:!0,source:"localStorage"};if(n==="auto"){const e=window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches;return{theme:e?"dark":"light",reliable:!1,source:"localStorage:auto"}}const i=window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches;return{theme:i?"dark":"light",reliable:!1,source:"prefers-color-scheme"}}document.addEventListener("DOMContentLoaded",function(){let e=0;const s=10,o=()=>{const i=n(),a=i.reliable||document.documentElement.hasAttribute("data-theme")||e>=s;a&&t(i.theme),!a&&e<s&&(e+=1,setTimeout(o,80+e*80))};o();const i=new MutationObserver(function(e){for(const n of e)if(n.type==="attributes"&&n.attributeName==="data-theme"){const e=document.documentElement.getAttribute("data-theme");t(e)}});if(i.observe(document.documentElement,{attributes:!0}),window.matchMedia){const e=window.matchMedia("(prefers-color-scheme: dark)"),s=()=>{const e=n();t(e.theme)};e.addEventListener?e.addEventListener("change",s):e.addListener&&e.addListener(s)}})})()</script><script>function randomPost(){fetch("/sitemap.xml").then(e=>e.text()).then(e=>(new window.DOMParser).parseFromString(e,"text/xml")).then(e=>{let s=e.querySelectorAll("url loc"),n,t;do n=s[Math.floor(Math.random()*s.length)].innerHTML,t=n.split("/")[3]||"";while(t==""||t=="tags"||t=="offline"||t=="categories"||t=="friends"||t=="collections"||t=="about")let o=`https://geekswg.js.cool/`;n="/"+n.replace(`https://geekswg.js.cool/`,""),pjax.load(n).catch(()=>{}),myToast.fire({title:"正在访问随机文章",timer:3e3})})}function toggleFullscreen(){try{let e=document.documentElement,t=!!(document.fullscreen||document.mozFullScreen||document.webkitIsFullScreen||document.webkitFullScreen||document.msFullScreen);typeof t=="undefined"||!t?document.requestFullscreen?e.requestFullscreen():e.mozRequestFullScreen?e.mozRequestFullScreen():e.webkitRequestFullscreen?e.webkitRequestFullscreen():e.msRequestFullscreen&&e.msRequestFullscreen():document.exitFullscreen?document.exitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen&&document.webkitExitFullscreen()}catch(e){console.log(e)}}</script></li></ul></nav></div></header><div class="search-dropdown desktop"><div id=search-dropdown-desktop></div></div><div class="search-dropdown mobile"><div id=search-dropdown-mobile></div></div><main class=fi-container><div class="page home posts"><div class=home-profile><div class=home-avatar><a href=/about/ title=我社交信息><img src=/images/avatar.webp alt="Home avatar" height=96 width=96></a></div><h1 class=home-title>Every day is beautiful if you choose to see it.</h1><p class=home-subtitle><span class=d-none>如果你愿意去发现,其实每一天都很美</span><span class=typeit><template>如果你愿意去发现,其实每一天都很美</template></span></p><div class=links><a href=/dlogs/ title=我的日常 rel=me><i class="fa-solid fa-book-open-reader" aria-hidden=true></i>
</a><a href=https://github.com/geekswg title=GitHub target=_blank rel="external nofollow noopener noreferrer me"><i class="fa-brands fa-github fa-fw" aria-hidden=true></i>
</a><a href="tencent://message/?uin=1101303970" title=QQ target=_blank rel="external nofollow noopener noreferrer me"><i data-svg-src=https://unpkg.com/simple-icons@9.19.0/icons/tencentqq.svg aria-hidden=true></i>
</a><a href=https://astro.342901.xyz/ title=博客 target=_blank rel="external nofollow noopener noreferrer me"><svg class="icon" t="1709981229582" class="icon" viewBox="0 0 1024 1024" p-id="5290" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M384 64c0 35.4 28.6 64 64 64 247.4.0 448 200.6 448 448 0 35.4 28.6 64 64 64s64-28.6 64-64C1024 257.8 766.2.0 448 0c-35.4.0-64 28.6-64 64zm0 192c0 35.4 28.6 64 64 64 141.4.0 256 114.6 256 256 0 35.4 28.6 64 64 64s64-28.6 64-64c0-212-172-384-384-384-35.4.0-64 28.6-64 64zm-192 32c0-53-43-96-96-96S0 235 0 288v448c0 159 129 288 288 288s288-129 288-288-129-288-288-288h-32v192h32c53 0 96 43 96 96s-43 96-96 96-96-43-96-96V288z" p-id="5291"/></svg>
</a><a href=https://www.cnblogs.com/geekswg title=CNBlog-博客园 target=_blank rel="external nofollow noopener noreferrer me"><svg class="icon" t="1709981025865" class="icon" viewBox="0 0 1024 1024" p-id="4263" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M478.71488 33.88416c-75.76064 36.6592-123.11552 117.31456-114.82624 194.82624 8.28416 67.03616 43.8016 120.45824 104.17152 156.06784C655.09888 494.76096 887.1168 305.17248 784.128 126.05952 722.57536 20.26496 591.17568-19.53792 478.71488 33.88416zm187.03872 67.03616c85.23264 52.37248 80.49664 188.53888-9.472 229.39136-104.17152 48.18432-213.07904-15.71328-213.07904-125.696.0-41.89696 5.91872-54.46656 40.24832-84.84352s48.5376-35.61472 98.2528-35.61472c33.14688.00512 68.6592 7.33696 84.04992 16.76288z" fill="#2c2c2c" p-id="4264"/><path d="M797.15328 340.7872c-63.9232 115.22048-89.96864 148.736-164.54656 217.87136-75.76064 71.22432-105.35424 90.08128-209.53088 135.12192-67.47648 29.32736-132.5824 50.2784-147.97312 48.18432-22.49216-2.09408-36.69504-25.1392-88.78592-139.31008C120.02816 458.10176 53.73952 333.45536 25.32864 298.89024 8.7552 278.9888 7.57248 280.0384 13.4912 309.36576 40.71424 465.4336 133.05344 774.43072 161.46432 803.75808c15.39072 17.80736 295.94624 18.85184 456.93952 2.09408 190.58688-19.90144 170.46528-27.23328-121.92768-47.13472l-106.54208-7.33184 102.9888-24.0896c114.82624-27.23328 177.56672-52.37248 261.61664-105.79456C786.50368 601.6 817.28 586.93632 824.38144 589.0304c5.91872 2.09408 49.72032 98.46272 94.70464 212.6336 46.16704 115.22048 86.41536 212.6336 91.15136 216.82176 11.83744 11.52-8.28416-233.57952-28.41088-358.22592-10.65472-60.75392-39.0656-187.4944-63.9232-282.81344l-44.98432-172.83072-75.76576 136.17152z" fill="#2c2c2c" p-id="4265"/></svg>
</a><a href=https://www.douyin.com/user/MS4wLjABAAAA7wEzz2PEAVqUc8bQxcCPGOV9r1zmjMooBHGKcVuP1Es title=抖音 target=_blank rel="external nofollow noopener noreferrer me"><i class="fa-brands fa-tiktok" aria-hidden=true></i>
</a><a href=mailto:geekswg@qq.com title=Email target=_blank rel="external nofollow noopener noreferrer me"><i class="fa-regular fa-envelope fa-fw" aria-hidden=true></i>
</a><a href=/index.xml title=RSS target=_blank rel="external nofollow noopener noreferrer me"><i class="fa-solid fa-rss fa-fw" aria-hidden=true></i></a></div><div class="w-full text-center"><script src=//cdn.busuanzi.cc/busuanzi/3.6.9/busuanzi.min.js defer></script>本页: <i class="fas fa-eye"></i> <span id=busuanzi_page_pv><i class="fas fa-spinner fa-spin"></i></span>,
<i class="fas fa-user"></i> <span id=busuanzi_page_uv><i class="fas fa-spinner fa-spin"></i></span>
|
今日: <i class="fas fa-eye"></i> <span id=busuanzi_today_pv><i class="fas fa-spinner fa-spin"></i></span>,
<i class="fas fa-user"></i> <span id=busuanzi_today_uv><i class="fas fa-spinner fa-spin"></i></span>
|
总计: <i class="fas fa-eye"></i> <span id=busuanzi_site_pv><i class="fas fa-spinner fa-spin"></i></span>,
<i class="fas fa-user"></i> <span id=busuanzi_site_uv><i class="fas fa-spinner fa-spin"></i></span></div><canvas style=margin-top:10px;width:80vw id=canvasTime>当前浏览器不支持canvas,请更换浏览器后再试</canvas>
<script src=/js/canvasTime.js></script><div class=scroll-down-arrow onclick=scrollToContent(event)><i class="fas fa-chevron-down"></i></div><script>(function(){let e=!1,t=null;function s(n){n&&(n.preventDefault(),n.stopPropagation());const s=document.querySelector(".scroll-down-arrow");s&&(s.classList.add("hidden"),e=!0,t&&clearTimeout(t),t=setTimeout(()=>e=!1,3e3));const o=document.querySelector("#header-desktop")||document.querySelector("header"),a=o?o.offsetHeight:0,i=document.querySelector(".single.summary")||document.querySelector("main.fi-container");if(i){const e=i.getBoundingClientRect().top+window.scrollY-a-20;window.scrollTo({top:e,behavior:"smooth"});return}window.scrollBy({top:window.innerHeight*.8,behavior:"smooth"})}function o(){const t=document.querySelector(".scroll-down-arrow");if(!t||t.dataset.bound==="1")return;t.dataset.bound="1",t.addEventListener("click",s,{passive:!1}),t.addEventListener("touchend",s,{passive:!1});const n=()=>{if(e)return;window.scrollY<=50?t.classList.remove("hidden"):t.classList.add("hidden")};window.addEventListener("scroll",n,{passive:!0}),n()}const n=()=>o();document.readyState==="loading"?document.addEventListener("DOMContentLoaded",n,{once:!0}):n(),["pjax:success","pjax:complete"].forEach(e=>{document.addEventListener(e,n)})})()</script><style>.scroll-down-arrow{position:fixed;bottom:60px;left:50%;transform:translateX(-50%);width:50px;height:50px;cursor:pointer;z-index:1000;opacity:.5;transition:all .3s ease;background:rgba(255,255,255,.1);border-radius:50%;backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.2);display:flex;align-items:center;justify-content:center;font-size:64px;color:#333;animation:bounce-arrow 2s infinite;pointer-events:auto}.scroll-down-arrow.hidden{opacity:0;pointer-events:none;transform:translateX(-50%)translateY(20px)}.scroll-down-arrow:hover{opacity:1;transform:translateX(-50%)translateY(-5px);background:rgba(255,255,255,.2)}.scroll-down-arrow:active{transform:translateX(-50%)translateY(2px);transition:transform .1s ease}[data-theme=dark] .scroll-down-arrow{background:rgba(0,0,0,.3);border:1px solid rgba(255,255,255,.1);color:#fff}@keyframes bounce-arrow{0%,20%,50%,80%,100%{transform:translateX(-50%)translateY(0)}40%{transform:translateX(-50%)translateY(-10px)}60%{transform:translateX(-50%)translateY(-5px)}}</style><script src=https://cdn.tailwindcss.com></script><style>@layer base{img:no([src]){display:unset!important}.cell-watermark-container img{display:unset!important}.post-author img{display:unset!important}img:not([style*=display],.fixit-decryptor-loading){display:unset!important}.content ul{padding-inline-start:30px!important}.content ol{list-style-type:decimal!important;padding-inline-start:30px!important}.blur{--tw-blur:unset !important}.container{max-width:100%!important}.single ul.fi-timeline[data-animation] .fi-timeline-item::before{box-sizing:unset!important}}</style></div><article class="single summary" itemscope itemtype=http://schema.org/Article><h2 class=single-title itemprop="name headline"><a href=/posts/2026/comm-note/>Notes/常用笔记</a></h2><div class=post-meta><span class=post-author><a href=https://github.com/geekswg title=作者 target=_blank rel="external nofollow noopener noreferrer author" class=author><img class=avatar src=/images/avatar.webp alt=geekswg height=16 width=16> geekswg</a></span> <span class=post-publish title='2026-03-07 15:01:09'>发布于 <time datetime=2026-03-07>2026-03-07</time></span><span class=post-included-in> 收录于 <a href=/categories/notes/ class=post-category title="分类 - Notes"><i class="fa-regular fa-folder" aria-hidden=true></i> Notes</a></span></div><div class=content><h3 class=heading-element id=git><span>git</span>
<a href=#git class=heading-mark><svg class="octicon octicon-link" viewBox="0 0 16 16" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5.0 114.95 4.95l-2.5 2.5a3.5 3.5.0 01-4.95.0.751.751.0 01.018-1.042.751.751.0 011.042-.018 1.998 1.998.0 002.83.0l2.5-2.5a2.002 2.002.0 00-2.83-2.83l-1.25 1.25a.751.751.0 01-1.042-.018.751.751.0 01-.018-1.042zm-4.69 9.64a1.998 1.998.0 002.83.0l1.25-1.25a.751.751.0 011.042.018.751.751.0 01.018 1.042l-1.25 1.25a3.5 3.5.0 11-4.95-4.95l2.5-2.5a3.5 3.5.0 014.95.0.751.751.0 01-.018 1.042.751.751.0 01-1.042.018 1.998 1.998.0 00-2.83.0l-2.5 2.5a1.998 1.998.0 000 2.83z"/></svg></a></h3><div class="code-block highlight" data-mode=classic data-copyable=true><div class=chroma><div class="code-header language-bash"><span class=code-title><i class="arrow fa-solid fa-chevron-down" aria-hidden=true></i></span><span class=ellipses-btn aria-label="Show more options" role=button><i class="fa-solid fa-ellipsis-h" aria-hidden=true></i></span><span class="action-btn line-nos-btn" aria-label=切换行号 role=button title=切换行号 data-ct-tooltip><i class="fa-solid fa-list-ol" aria-hidden=true></i></span><span class="action-btn line-wrap-btn" aria-label=切换自动换行 role=button title=切换自动换行 data-ct-tooltip><i class="fa-solid fa-right-left" aria-hidden=true></i></span><span class="action-btn copy-btn" aria-label=复制到剪贴板 role=button title=复制到剪贴板 data-ct-tooltip><i class="fa-regular fa-clone" aria-hidden=true></i></span><span class="action-btn fullscreen-btn" aria-label=切换代码块全屏 role=button title=切换代码块全屏 data-ct-tooltip><i class="fa-solid fa-expand" aria-hidden=true></i></span></div><div class=code-wrapper data-max=8 data-line-digit=1 style=--fi-max-shown-lines:8;--fi-line-digit:1;--fi-line-start:1><table class=lntable><tr><td class=lntd><pre tabindex=0 class=chroma><code><span class=lnt>1
</span><span class=lnt>2
</span><span class=lnt>3
</span></code></pre></td><td class=lntd><pre tabindex=0 class=chroma><code class=language-bash data-lang=bash><span class=line><span class=cl>git clone --recursive https://github.com/geekswg/blog-fixit.git
</span></span><span class=line><span class=cl><span class=c1># 如果已经克隆了仓库但没有初始化子模块,可以使用以下命令:</span>
</span></span><span class=line><span class=cl>git submodule update --init</span></span></code></pre></td></tr></table></div></div></div><h3 class=heading-element id=hugo><span>hugo</span>
<a href=#hugo class=heading-mark><svg class="octicon octicon-link" viewBox="0 0 16 16" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5.0 114.95 4.95l-2.5 2.5a3.5 3.5.0 01-4.95.0.751.751.0 01.018-1.042.751.751.0 011.042-.018 1.998 1.998.0 002.83.0l2.5-2.5a2.002 2.002.0 00-2.83-2.83l-1.25 1.25a.751.751.0 01-1.042-.018.751.751.0 01-.018-1.042zm-4.69 9.64a1.998 1.998.0 002.83.0l1.25-1.25a.751.751.0 011.042.018.751.751.0 01.018 1.042l-1.25 1.25a3.5 3.5.0 11-4.95-4.95l2.5-2.5a3.5 3.5.0 014.95.0.751.751.0 01-.018 1.042.751.751.0 01-1.042.018 1.998 1.998.0 00-2.83.0l-2.5 2.5a1.998 1.998.0 000 2.83z"/></svg></a></h3><p>新建文章</p></div><div class=post-footer><a href=/posts/2026/comm-note/>阅读全文</a><div class=post-tags><i class="fa-solid fa-tags me-1" aria-hidden=true></i><a href=/tags/%E7%AC%94%E8%AE%B0/ class=post-tag>笔记</a><a href=/tags/%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4/ class=post-tag>常用命令</a></div></div></article><article class="single summary" itemscope itemtype=http://schema.org/Article><h2 class=single-title itemprop="name headline"><a href=/posts/2026/hugo-add-author-statement/>Hugo博客添加作者声明</a></h2><div class=post-meta><span class=post-author><a href=https://github.com/geekswg title=作者 target=_blank rel="external nofollow noopener noreferrer author" class=author><img class=avatar src=/images/avatar.webp alt=geekswg height=16 width=16> geekswg</a></span> <span class=post-publish title='2026-03-03 18:14:12'>发布于 <time datetime=2026-03-03>2026-03-03</time></span><span class=post-included-in> 收录于 <a href=/categories/dev/ class=post-category title="分类 - 开发"><i class="fa-regular fa-folder" aria-hidden=true></i> 开发</a></span></div><div class=content><p>给你的博客添加一个作者声明,类似抖音上,发布作品时添加的一声明类似的功能,告诉读者这是原创作品,转载时需要注明出处,或者声明是AI共创,或者声明内容来源网络。</p></div><div class=post-footer><a href=/posts/2026/hugo-add-author-statement/>阅读全文</a><div class=post-tags><i class="fa-solid fa-tags me-1" aria-hidden=true></i><a href=/tags/hugo/ class=post-tag>hugo</a><a href=/tags/ai%E5%85%B1%E5%88%9B/ class=post-tag>ai共创</a></div></div></article><article class="single summary" itemscope itemtype=http://schema.org/Article><h2 class=single-title itemprop="name headline"><a href=/posts/2026/codeblock-demo/>代码块功能增强</a></h2><div class=post-meta><span class=post-author><a href=https://github.com/geekswg title=作者 target=_blank rel="external nofollow noopener noreferrer author" class=author><img class=avatar src=/images/avatar.webp alt=geekswg height=16 width=16> geekswg</a></span> <span class=post-publish title='2026-01-25 16:18:21'>发布于 <time datetime=2026-01-25>2026-01-25</time></span><span class=post-included-in> 收录于 <a href=/categories/theme/ class=post-category title="分类 - theme"><i class="fa-regular fa-folder" aria-hidden=true></i> theme</a></span></div><div class=content><p>测试 codeblock 代码块增强功能。参考主题的 render-codeblock-timeline,编写一个 render-codeblock-fromfile 功能,支持从文件中加载代码片段并高亮显示,自动检测语言类型。</p><h3 class=heading-element id=基本语法><span>基本语法</span>
<a href=#%e5%9f%ba%e6%9c%ac%e8%af%ad%e6%b3%95 class=heading-mark><svg class="octicon octicon-link" viewBox="0 0 16 16" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5.0 114.95 4.95l-2.5 2.5a3.5 3.5.0 01-4.95.0.751.751.0 01.018-1.042.751.751.0 011.042-.018 1.998 1.998.0 002.83.0l2.5-2.5a2.002 2.002.0 00-2.83-2.83l-1.25 1.25a.751.751.0 01-1.042-.018.751.751.0 01-.018-1.042zm-4.69 9.64a1.998 1.998.0 002.83.0l1.25-1.25a.751.751.0 011.042.018.751.751.0 01.018 1.042l-1.25 1.25a3.5 3.5.0 11-4.95-4.95l2.5-2.5a3.5 3.5.0 014.95.0.751.751.0 01-.018 1.042.751.751.0 01-1.042.018 1.998 1.998.0 00-2.83.0l-2.5 2.5a1.998 1.998.0 000 2.83z"/></svg></a></h3><p>在 Markdown 中插入 fromfile 代码块(推荐格式):</p><p>用法 1(属性列表写法yml格式):</p><div class="code-block highlight" data-mode=classic data-copyable=true><div class=chroma><div class="code-header language-fallback"><span class=code-title><i class="arrow fa-solid fa-chevron-down" aria-hidden=true></i></span><span class=ellipses-btn aria-label="Show more options" role=button><i class="fa-solid fa-ellipsis-h" aria-hidden=true></i></span><span class="action-btn line-nos-btn" aria-label=切换行号 role=button title=切换行号 data-ct-tooltip><i class="fa-solid fa-list-ol" aria-hidden=true></i></span><span class="action-btn line-wrap-btn" aria-label=切换自动换行 role=button title=切换自动换行 data-ct-tooltip><i class="fa-solid fa-right-left" aria-hidden=true></i></span><span class="action-btn copy-btn" aria-label=复制到剪贴板 role=button title=复制到剪贴板 data-ct-tooltip><i class="fa-regular fa-clone" aria-hidden=true></i></span><span class="action-btn fullscreen-btn" aria-label=切换代码块全屏 role=button title=切换代码块全屏 data-ct-tooltip><i class="fa-solid fa-expand" aria-hidden=true></i></span></div><div class=code-wrapper data-max=8 data-line-digit=1 style=--fi-max-shown-lines:8;--fi-line-digit:1;--fi-line-start:1><table class=lntable><tr><td class=lntd><pre tabindex=0 class=chroma><code><span class=lnt>1
</span><span class=lnt>2
</span><span class=lnt>3
</span><span class=lnt>4
</span><span class=lnt>5
</span></code></pre></td><td class=lntd><pre tabindex=0 class=chroma><code class=language-fallback data-lang=fallback><span class=line><span class=cl>```fromfile
</span></span><span class=line><span class=cl>file: "/js/flyfish.js"
</span></span><span class=line><span class=cl>lines: "1-12"
</span></span><span class=line><span class=cl>lang: "javascript"
</span></span><span class=line><span class=cl>```</span></span></code></pre></td></tr></table></div></div></div></div><div class=post-footer><a href=/posts/2026/codeblock-demo/>阅读全文</a><div class=post-tags><i class="fa-solid fa-tags me-1" aria-hidden=true></i><a href=/tags/fixit/ class=post-tag>fixit</a><a href=/tags/codeblock/ class=post-tag>codeblock</a></div></div></article><article class="single summary" itemscope itemtype=http://schema.org/Article><h2 class=single-title itemprop="name headline"><a href=/posts/2026/blog-stats/>Hugo博客添加数据统计页面</a></h2><div class=post-meta><span class=post-author><a href=https://github.com/geekswg title=作者 target=_blank rel="external nofollow noopener noreferrer author" class=author><img class=avatar src=/images/avatar.webp alt=geekswg height=16 width=16> geekswg</a></span> <span class=post-publish title='2026-01-24 15:22:51'>发布于 <time datetime=2026-01-24>2026-01-24</time></span><span class=post-included-in> 收录于 <a href=/categories/theme/ class=post-category title="分类 - theme"><i class="fa-regular fa-folder" aria-hidden=true></i> theme</a></span></div><div class=content><p>给你的博客添加统计页面,展示你的博客数据统计信息。<a href=https://geekswg.js.cool/stats/ target=_blank rel="external nofollow noopener noreferrer">点击这里<i class="fa-solid fa-external-link-alt fa-xs ms-1 text-secondary" aria-hidden=true></i></a>预览效果。</p><div class="alert alert-important"><p class=alert-title><svg class="icon" viewBox="0 0 16 16" width="16" height="16"><path d="M0 1.75C0 .784.784.0 1.75.0h12.5C15.216.0 16 .784 16 1.75v9.5A1.75 1.75.0 0114.25 13H8.06l-2.573 2.573A1.458 1.458.0 013 14.543V13H1.75A1.75 1.75.0 010 11.25zm1.75-.25a.25.25.0 00-.25.25v9.5c0 .138.112.25.25.25h2a.75.75.0 01.75.75v2.19l2.72-2.72a.749.749.0 01.53-.22h6.5a.25.25.0 00.25-.25v-9.5a.25.25.0 00-.25-.25zm7 2.25v2.5a.75.75.0 01-1.5.0v-2.5a.75.75.0 011.5.0zM9 9A1 1 0 117 9a1 1 0 012 0z"/></svg>重要</p><p>理论上该方法适用于所有hugo博客,但由于每个博客的配置和主题结构不同,可能会存在兼容性问题,请自己适配!已在<a href=https://fixit.lruihao.cn/zh-cn/ target=_blank rel="external nofollow noopener noreferrer">Fixit主题<i class="fa-solid fa-external-link-alt fa-xs ms-1 text-secondary" aria-hidden=true></i></a>下测试通过。</p></div></div><div class=post-footer><a href=/posts/2026/blog-stats/>阅读全文</a><div class=post-tags><i class="fa-solid fa-tags me-1" aria-hidden=true></i><a href=/tags/hugo/ class=post-tag>hugo</a><a href=/tags/fixit/ class=post-tag>fixit</a></div></div></article><article class="single summary" itemscope itemtype=http://schema.org/Article><h2 class=single-title itemprop="name headline"><a href=/posts/2026/js-magic/>Js的魔法特效</a></h2><div class=post-meta><span class=post-author><a href=https://github.com/geekswg title=作者 target=_blank rel="external nofollow noopener noreferrer author" class=author><img class=avatar src=/images/avatar.webp alt=geekswg height=16 width=16> geekswg</a></span> <span class=post-publish title='2026-01-19 18:51:00'>发布于 <time datetime=2026-01-19>2026-01-19</time></span><span class=post-included-in> 收录于 <a href=/categories/dev/ class=post-category title="分类 - 开发"><i class="fa-regular fa-folder" aria-hidden=true></i> 开发</a></span></div><div class=content><p>记录一些神奇且实用的JavaScript特效,源码来自互联网,部分经过修改和优化。可以直接在博客中使用,无需引入其他库。主要使用javascript和canvas特性实现。</p></div><div class=post-footer><a href=/posts/2026/js-magic/>阅读全文</a><div class=post-tags><i class="fa-solid fa-tags me-1" aria-hidden=true></i><a href=/tags/js/ class=post-tag>js</a><a href=/tags/javascript/ class=post-tag>JavaScript</a></div></div></article><article class="single summary" itemscope itemtype=http://schema.org/Article><h2 class=single-title itemprop="name headline"><a href=/posts/2026/cf-new/>Cloudflare部署CFnew终端</a></h2><div class=post-meta><span class=post-author><a href=https://github.com/geekswg title=作者 target=_blank rel="external nofollow noopener noreferrer author" class=author><img class=avatar src=/images/avatar.webp alt=geekswg height=16 width=16> geekswg</a></span> <span class=post-publish title='2026-01-11 16:40:02'>发布于 <time datetime=2026-01-11>2026-01-11</time></span><span class=post-included-in> 收录于 <a href=/categories/tutorial/ class=post-category title="分类 - tutorial"><i class="fa-regular fa-folder" aria-hidden=true></i> tutorial</a></span></div><div class=content><p><a href=https://github.com/byJoey/cfnew target=_blank rel="external nofollow noopener noreferrer">CFnew<i class="fa-solid fa-external-link-alt fa-xs ms-1 text-secondary" aria-hidden=true></i></a> - 终端 v2.9</p><h3 class=heading-element id=介绍><span>介绍</span>
<a href=#%e4%bb%8b%e7%bb%8d class=heading-mark><svg class="octicon octicon-link" viewBox="0 0 16 16" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5.0 114.95 4.95l-2.5 2.5a3.5 3.5.0 01-4.95.0.751.751.0 01.018-1.042.751.751.0 011.042-.018 1.998 1.998.0 002.83.0l2.5-2.5a2.002 2.002.0 00-2.83-2.83l-1.25 1.25a.751.751.0 01-1.042-.018.751.751.0 01-.018-1.042zm-4.69 9.64a1.998 1.998.0 002.83.0l1.25-1.25a.751.751.0 011.042.018.751.751.0 01.018 1.042l-1.25 1.25a3.5 3.5.0 11-4.95-4.95l2.5-2.5a3.5 3.5.0 014.95.0.751.751.0 01-.018 1.042.751.751.0 01-1.042.018 1.998 1.998.0 00-2.83.0l-2.5 2.5a1.998 1.998.0 000 2.83z"/></svg></a></h3><ul><li>🎭 多协议支持 - VLESS + Trojan + xhttp,自由切换</li><li>🛤️ 自定义路径 - 告别UUID路径,自定义访问地址,支持多级路径</li><li>⚡ 延迟测试 - 内置IP延迟测试,自动获取机场码,多线程并发测试</li><li>🔄 订阅转换 - 自定义转换服务,优选类型细粒度控制</li><li>🎯 图形化管理 - KV存储,实时配置,无需重新部署</li><li>🚀 API管理 - RESTful API,批量操作,动态更新</li><li>📱 多客户端支持 - CLASH、SURGE、SING-BOX、LOON、QUANTUMULT X、- V2RAY、Shadowrocket、STASH、NEKORAY、V2RAYNG</li><li>🚀 应用唤醒 - 点击按钮自动唤醒对应客户端应用</li><li>🔍 自动识别 - 根据User-Agent自动识别并返回对应格式</li><li>🌐 多语言支持 - 支持中文和波斯语(伊朗语),根据浏览器语言自动切换</li></ul><h3 class=heading-element id=部署><span>部署</span>
<a href=#%e9%83%a8%e7%bd%b2 class=heading-mark><svg class="octicon octicon-link" viewBox="0 0 16 16" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5.0 114.95 4.95l-2.5 2.5a3.5 3.5.0 01-4.95.0.751.751.0 01.018-1.042.751.751.0 011.042-.018 1.998 1.998.0 002.83.0l2.5-2.5a2.002 2.002.0 00-2.83-2.83l-1.25 1.25a.751.751.0 01-1.042-.018.751.751.0 01-.018-1.042zm-4.69 9.64a1.998 1.998.0 002.83.0l1.25-1.25a.751.751.0 011.042.018.751.751.0 01.018 1.042l-1.25 1.25a3.5 3.5.0 11-4.95-4.95l2.5-2.5a3.5 3.5.0 014.95.0.751.751.0 01-.018 1.042.751.751.0 01-1.042.018 1.998 1.998.0 00-2.83.0l-2.5 2.5a1.998 1.998.0 000 2.83z"/></svg></a></h3><p>利用Cloudflare Pages部署CFnew终端,无需服务器,无需域名,无需配置,即可在Cloudflare Pages上部署CFnew终端。</p></div><div class=post-footer><a href=/posts/2026/cf-new/>阅读全文</a><div class=post-tags><i class="fa-solid fa-tags me-1" aria-hidden=true></i><a href=/tags/cloudflare/ class=post-tag>CloudFlare</a><a href=/tags/%E9%A3%9E%E7%89%9Bnas/ class=post-tag>飞牛NAS</a></div></div></article><article class="single summary" itemscope itemtype=http://schema.org/Article><h2 class=single-title itemprop="name headline"><a href=/posts/2026/cf-tunnel-speedup/>Cloudflare隧道加速</a></h2><div class=post-meta><span class=post-author><a href=https://github.com/geekswg title=作者 target=_blank rel="external nofollow noopener noreferrer author" class=author><img class=avatar src=/images/avatar.webp alt=geekswg height=16 width=16> geekswg</a></span> <span class=post-publish title='2026-01-09 00:26:47'>发布于 <time datetime=2026-01-09>2026-01-09</time></span><span class=post-included-in> 收录于 <a href=/categories/nas/ class=post-category title="分类 - NAS"><i class="fa-regular fa-folder" aria-hidden=true></i> NAS</a></span></div><div class=content><p>记录Cloudflare隧道加速配置过程中的一些细节和注意事项。我们都知道赛博活佛Cloudflare隧道是一个非常好用且操作简单的内外穿透工具,但是由于隧道线路在国内访问速度极慢,Cloudflare隧道加速(国内优选IP)可以帮助我们提高网站的访问速度和稳定性。</p></div><div class=post-footer><a href=/posts/2026/cf-tunnel-speedup/>阅读全文</a><div class=post-tags><i class="fa-solid fa-tags me-1" aria-hidden=true></i><a href=/tags/cloudflare/ class=post-tag>CloudFlare</a></div></div></article><article class="single summary" itemscope itemtype=http://schema.org/Article><h2 class=single-title itemprop="name headline"><a href=/posts/2025/fn-docker/>飞牛NAS之Docker</a></h2><div class=post-meta><span class=post-author><a href=https://github.com/geekswg title=作者 target=_blank rel="external nofollow noopener noreferrer author" class=author><img class=avatar src=/images/avatar.webp alt=geekswg height=16 width=16> geekswg</a></span> <span class=post-publish title='2025-12-26 20:01:24'>发布于 <time datetime=2025-12-26>2025-12-26</time></span><span class=post-included-in> 收录于 <a href=/categories/nas/ class=post-category title="分类 - NAS"><i class="fa-regular fa-folder" aria-hidden=true></i> NAS</a></span></div><div class=content><p>最近飞牛NAS发布了正式版系统,经过一段时间的使用,发现飞牛NAS的Docker功能还是很强大的,支持Docker和Docker-compose两种方式来部署应用。本文将分享一些我在飞牛NAS上使用Docker的经验和技巧。</p></div><div class=post-footer><a href=/posts/2025/fn-docker/>阅读全文</a><div class=post-tags><i class="fa-solid fa-tags me-1" aria-hidden=true></i><a href=/tags/%E9%A3%9E%E7%89%9Bnas/ class=post-tag>飞牛NAS</a><a href=/tags/docker/ class=post-tag>Docker</a></div></div></article><article class="single summary" itemscope itemtype=http://schema.org/Article><h2 class=single-title itemprop="name headline"><a href=/posts/2025/share-lxmusic/>LX-Music洛雪音乐助手</a></h2><div class=post-meta><span class=post-author><a href=https://github.com/geekswg title=作者 target=_blank rel="external nofollow noopener noreferrer author" class=author><img class=avatar src=/images/avatar.webp alt=geekswg height=16 width=16> geekswg</a></span> <span class=post-publish title='2025-04-06 16:45:38'>发布于 <time datetime=2025-04-06>2025-04-06</time></span><span class=post-included-in> 收录于 <a href=/categories/tools/ class=post-category title="分类 - 工具"><i class="fa-regular fa-folder" aria-hidden=true></i> 工具</a></span></div><div class=content><h3 class=heading-element id=什么是-lx-music><span>什么是 LX-Music?</span>
<a href=#%e4%bb%80%e4%b9%88%e6%98%af-lx-music class=heading-mark><svg class="octicon octicon-link" viewBox="0 0 16 16" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5.0 114.95 4.95l-2.5 2.5a3.5 3.5.0 01-4.95.0.751.751.0 01.018-1.042.751.751.0 011.042-.018 1.998 1.998.0 002.83.0l2.5-2.5a2.002 2.002.0 00-2.83-2.83l-1.25 1.25a.751.751.0 01-1.042-.018.751.751.0 01-.018-1.042zm-4.69 9.64a1.998 1.998.0 002.83.0l1.25-1.25a.751.751.0 011.042.018.751.751.0 01.018 1.042l-1.25 1.25a3.5 3.5.0 11-4.95-4.95l2.5-2.5a3.5 3.5.0 014.95.0.751.751.0 01-.018 1.042.751.751.0 01-1.042.018 1.998 1.998.0 00-2.83.0l-2.5 2.5a1.998 1.998.0 000 2.83z"/></svg></a></h3><p>LX-Music(<a href=https://lxmusic.toside.cn/download target=_blank rel="external nofollow noopener noreferrer">洛雪音乐助手<i class="fa-solid fa-external-link-alt fa-xs ms-1 text-secondary" aria-hidden=true></i></a>)是一款免费且开源的音乐查找工具,支持多平台使用。它可以帮助用户快速搜索和下载来自多个音乐平台的歌曲,提供高质量的音乐体验。</p></div><div class=post-footer><a href=/posts/2025/share-lxmusic/>阅读全文</a><div class=post-tags><i class="fa-solid fa-tags me-1" aria-hidden=true></i><a href=/tags/%E5%BC%80%E6%BA%90/ class=post-tag>开源</a><a href=/tags/lxmusic/ class=post-tag>LXMusic</a></div></div></article><article class="single summary" itemscope itemtype=http://schema.org/Article><h2 class=single-title itemprop="name headline"><span title=转载 class=icon-repost><i class="fa-solid fa-share" aria-hidden=true></i></span><a href=/posts/2024/md-basic/>Markdown基本语法</a></h2><div class=post-meta><span class=post-author><a href=https://github.com/geekswg title=作者 target=_blank rel="external nofollow noopener noreferrer author" class=author><img class=avatar src=/images/avatar.webp alt=geekswg height=16 width=16> geekswg</a></span> <span class=post-publish title='2024-12-07 08:52:46'>发布于 <time datetime=2024-12-07>2024-12-07</time></span><span class=post-included-in> 收录于 <a href=/categories/docs/ class=post-category title="分类 - 文档"><i class="fa-regular fa-folder" aria-hidden=true></i> 文档</a></span></div><div class=content><p>这篇文章提供了可以在 Hugo 的文章中使用的基本 Markdown 语法示例。</p></div><div class=post-footer><a href=/posts/2024/md-basic/>阅读全文</a><div class=post-tags><i class="fa-solid fa-tags me-1" aria-hidden=true></i><a href=/tags/markdown/ class=post-tag>Markdown</a><a href=/tags/%E8%BD%AC%E8%BD%BD/ class=post-tag>转载</a></div></div></article><article class="single summary" itemscope itemtype=http://schema.org/Article><h2 class=single-title itemprop="name headline"><a href=/posts/2024/ai-summary/>给你的网站添加AI摘要功能</a></h2><div class=post-meta><span class=post-author><a href=https://github.com/geekswg title=作者 target=_blank rel="external nofollow noopener noreferrer author" class=author><img class=avatar src=/images/avatar.webp alt=geekswg height=16 width=16> geekswg</a></span> <span class=post-publish title='2024-12-07 08:52:46'>发布于 <time datetime=2024-12-07>2024-12-07</time></span><span class=post-included-in> 收录于 <a href=/categories/dev/ class=post-category title="分类 - 开发"><i class="fa-regular fa-folder" aria-hidden=true></i> 开发</a></span></div><div class=content><h3 class=heading-element id=功能实现><span>功能实现</span>
<a href=#%e5%8a%9f%e8%83%bd%e5%ae%9e%e7%8e%b0 class=heading-mark><svg class="octicon octicon-link" viewBox="0 0 16 16" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5.0 114.95 4.95l-2.5 2.5a3.5 3.5.0 01-4.95.0.751.751.0 01.018-1.042.751.751.0 011.042-.018 1.998 1.998.0 002.83.0l2.5-2.5a2.002 2.002.0 00-2.83-2.83l-1.25 1.25a.751.751.0 01-1.042-.018.751.751.0 01-.018-1.042zm-4.69 9.64a1.998 1.998.0 002.83.0l1.25-1.25a.751.751.0 011.042.018.751.751.0 01.018 1.042l-1.25 1.25a3.5 3.5.0 11-4.95-4.95l2.5-2.5a3.5 3.5.0 014.95.0.751.751.0 01-.018 1.042.751.751.0 01-1.042.018 1.998 1.998.0 00-2.83.0l-2.5 2.5a1.998 1.998.0 000 2.83z"/></svg></a></h3><p>主要是获取当前网站文章内容,然后通过Cloudflare Workers调用qwen1.5-14b-chat-awq模型生成摘要,最后将摘要显示在网站中。
网上找到一个<code>FloatSheep</code>大佬编写的项目<a href=https://github.com/FloatSheep/Qwen-Post-Summary/ target=_blank rel="external nofollow noopener noreferrer">FloatSheep/Qwen-Post-Summary<i class="fa-solid fa-external-link-alt fa-xs ms-1 text-secondary" aria-hidden=true></i></a>正好可以满足我的需求,于是我就直接使用了。</p></div><div class=post-footer><a href=/posts/2024/ai-summary/>阅读全文</a><div class=post-tags><i class="fa-solid fa-tags me-1" aria-hidden=true></i><a href=/tags/ai/ class=post-tag>AI</a><a href=/tags/ai%E6%91%98%E8%A6%81/ class=post-tag>AI摘要</a><a href=/tags/cloudflare-workers/ class=post-tag>Cloudflare Workers</a></div></div></article><article class="single summary" itemscope itemtype=http://schema.org/Article><h2 class=single-title itemprop="name headline"><a href=/posts/2024/ai-summary/>给你的网站添加AI摘要功能</a></h2><div class=post-meta><span class=post-author><a href=https://github.com/geekswg title=作者 target=_blank rel="external nofollow noopener noreferrer author" class=author><img class=avatar src=/images/avatar.webp alt=geekswg height=16 width=16> geekswg</a></span> <span class=post-publish title='2024-12-07 08:52:46'>发布于 <time datetime=2024-12-07>2024-12-07</time></span><span class=post-included-in> 收录于 <a href=/categories/theme/ class=post-category title="分类 - theme"><i class="fa-regular fa-folder" aria-hidden=true></i> theme</a></span></div><div class=content><h3 class=heading-element id=功能实现><span>功能实现</span>
<a href=#%e5%8a%9f%e8%83%bd%e5%ae%9e%e7%8e%b0 class=heading-mark><svg class="octicon octicon-link" viewBox="0 0 16 16" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5.0 114.95 4.95l-2.5 2.5a3.5 3.5.0 01-4.95.0.751.751.0 01.018-1.042.751.751.0 011.042-.018 1.998 1.998.0 002.83.0l2.5-2.5a2.002 2.002.0 00-2.83-2.83l-1.25 1.25a.751.751.0 01-1.042-.018.751.751.0 01-.018-1.042zm-4.69 9.64a1.998 1.998.0 002.83.0l1.25-1.25a.751.751.0 011.042.018.751.751.0 01.018 1.042l-1.25 1.25a3.5 3.5.0 11-4.95-4.95l2.5-2.5a3.5 3.5.0 014.95.0.751.751.0 01-.018 1.042.751.751.0 01-1.042.018 1.998 1.998.0 00-2.83.0l-2.5 2.5a1.998 1.998.0 000 2.83z"/></svg></a></h3><p>主要是获取当前网站文章内容,然后通过Cloudflare Workers调用qwen1.5-14b-chat-awq模型生成摘要,最后将摘要显示在网站中。
网上找到一个<code>FloatSheep</code>大佬编写的项目<a href=https://github.com/FloatSheep/Qwen-Post-Summary/ target=_blank rel="external nofollow noopener noreferrer">FloatSheep/Qwen-Post-Summary<i class="fa-solid fa-external-link-alt fa-xs ms-1 text-secondary" aria-hidden=true></i></a>正好可以满足我的需求,于是我就直接使用了。</p></div><div class=post-footer><a href=/posts/2024/ai-summary/>阅读全文</a><div class=post-tags><i class="fa-solid fa-tags me-1" aria-hidden=true></i><a href=/tags/ai/ class=post-tag>AI</a><a href=/tags/ai%E6%91%98%E8%A6%81/ class=post-tag>AI摘要</a><a href=/tags/cloudflare-workers/ class=post-tag>Cloudflare Workers</a></div></div></article><ul class=pagination><li class="page-item active"><span class=page-link><a href=/>1</a></span></li><li class=page-item><span class=page-link><a href=/page/2/>2</a></span></li><li class=page-item><span class=page-link><a href=/page/3/>3</a></span></li><li class=page-item><span class=page-link aria-hidden=true>…</span></li><li class=page-item><span class=page-link><a href=/page/10/>10</a></span></li></ul></div></main><footer class=footer><div class=footer-container><script src=https://cdn.tailwindcss.com></script><style>@layer base{img:no([src]){display:unset!important}.cell-watermark-container img{display:unset!important}.post-author img{display:unset!important}img:not([style*=display],.fixit-decryptor-loading){display:unset!important}.content ul{padding-inline-start:30px!important}.content ol{list-style-type:decimal!important;padding-inline-start:30px!important}.blur{--tw-blur:unset !important}.container{max-width:100%!important}.single ul.fi-timeline[data-animation] .fi-timeline-item::before{box-sizing:unset!important}}</style><style>.translateSelectLanguage{border:none;cursor:pointer;background:0 0; [data-theme='dark'] & { color: #b1b1ba; background: #292a2e; }}#translate{cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0 .5rem;transition:opacity .2s}#translate:hover{opacity:.7}.translate-icon{font-size:1.1rem;line-height:1}[data-theme=dark] #translate{color:#b1b1ba}[data-theme=light] #translate{color:#5c6b7f}</style><script src=/js/translate.js></script><script>translate.selectLanguageTag.show=!1,translate.selectLanguageTag.languages="chinese_simplified,chinese_traditional,english",translate.language.setLocal("chinese_simplified"),translate.service.use("client.edge"),translate.enterprise.use();const languages={chinese_simplified:{name:"简体中文",icon:"🇨🇳"},chinese_traditional:{name:"繁體中文",icon:"🇭🇰"},english:{name:"English",icon:"🇺🇸"}};let currentLangIndex=0;const langKeys=Object.keys(languages);document.addEventListener("DOMContentLoaded",function(){const e=localStorage.getItem("preferredLanguage");e&&languages[e]&&(currentLangIndex=langKeys.indexOf(e)),translatInit()});let resizeTimer;window.addEventListener("resize",function(){clearTimeout(resizeTimer),resizeTimer=setTimeout(()=>{const e=document.getElementById("translate");e&&e.remove(),translatInit()},250)});function translatInit(){const e=document.querySelector("#header-mobile"),n=document.querySelector("#header-desktop"),t=e&&window.getComputedStyle(e).display!=="none";if(t){{const e=document.querySelector("#header-mobile .theme-switch");if(e){const t=document.getElementById("translate");if(!t){const t=languages[langKeys[currentLangIndex]];e.insertAdjacentHTML("afterend",`
<span class="menu-system-item" id="translate" title="${t.name}">
<span class="translate-icon">${t.icon}</span>
</span>
`),document.getElementById("translate").addEventListener("click",switchLanguage)}}}}else{const e=document.querySelector("#fullscreen");if(e){const t=document.getElementById("translate");if(!t){const t=languages[langKeys[currentLangIndex]];e.insertAdjacentHTML("afterend",`
<span id="translate" title="${t.name}">
<span class="translate-icon">${t.icon}</span>
</span>
`),document.getElementById("translate").addEventListener("click",switchLanguage)}}}translate.execute()}function switchLanguage(){currentLangIndex=(currentLangIndex+1)%langKeys.length;const e=langKeys[currentLangIndex],n=languages[e];translate.changeLanguage(e),localStorage.setItem("preferredLanguage",e);const t=document.getElementById("translate");if(t){const e=t.querySelector(".translate-icon");e&&(e.textContent=n.icon),t.title=n.name}}</script><script defer src=https://cloud.umami.is/script.js data-website-id=9e48243d-f9ff-440f-9df5-b1c3f1efdb53></script><script>var _hmt=_hmt||[];(function(){var e,t=document.createElement("script");t.src="https://hm.baidu.com/hm.js?b9f505844079261e3c4cbca7b4f72b2c",e=document.getElementsByTagName("script")[0],e.parentNode.insertBefore(t,e)})()</script><script src=/live2d-widget/autoload.js></script><script type=text/javascript src=/js/ribbons.js></script><script src=/js/activate-power-mode.js></script><script>document.addEventListener("DOMContentLoaded",function(){POWERMODE.colorful=!0,POWERMODE.shake=!0,POWERMODE.shakeSize=5,document.body.addEventListener("input",POWERMODE),document.body.addEventListener("textarea",POWERMODE),document.body.addEventListener("text",POWERMODE),document.body.addEventListener("url",POWERMODE)})</script><style>.denglong{display:none;pointer-events:none}@media only screen and (max-width:768px){.deng-box{right:-40px;top:8px;z-index:-1}.deng-box1{left:-40px;top:8px;z-index:-1}.deng-box .deng,.deng-box1 .deng{position:relative;width:80px;height:60px;margin:25px;background:#d8000f;background:rgba(216,0,15,.8);border-radius:50% 50%;-webkit-transform-origin:50% -80px;-webkit-animation:swing 5s infinite ease-in-out;box-shadow:-5px 5px 30px 4px #fc903d}.deng-box1 .deng{-webkit-animation:swing 3s infinite ease-in-out;box-shadow:5px 5px 30px 4px #fa6c00}.deng-a{position:relative;width:65px;height:60px;background:#d8000f;background:rgba(216,0,15,.1);margin:8px 5px 5px 6px;border-radius:50% 50%;border:2px solid #dc8f03}.deng-b{position:relative;width:30px;height:60px;background:#d8000f;background:rgba(216,0,15,.1);margin:-3px 5px 5px 17px;border-radius:50% 50%;border:2px solid #dc8f03}.xian{position:absolute;top:-55px;left:40px;width:1.5px;height:55px;background:#dc8f03;z-index:-1}.shui-a{position:relative;width:4px;height:15px;margin:-4px 0 0 38px;-webkit-animation:swing 4s infinite ease-in-out;-webkit-transform-origin:50% -35px;background:orange;border-radius:0 0 5px 5px}.deng:before{top:-5px;left:19px;width:40px;height:10px;z-index:-1}.deng:after{bottom:-5px;left:7px;width:40px;height:10px;margin-left:13px;z-index:-1}.deng-t{font-size:18px;line-height:30px}}@media only screen and (min-width:769px) and (max-width:1024px){.deng-box{right:-25px;z-index:-1}.deng-box1{left:-25px;z-index:-1}.deng-box .deng,.deng-box1 .deng{position:relative;width:100px;height:75px;margin:40px;background:#d8000f;background:rgba(216,0,15,.8);border-radius:50% 50%;-webkit-transform-origin:50% -100px;-webkit-animation:swing 5s infinite ease-in-out;box-shadow:-5px 5px 30px 4px #fc903d}.deng-box1 .deng{-webkit-animation:swing 3s infinite ease-in-out;box-shadow:5px 5px 30px 4px #fa6c00}.deng-a{position:relative;width:85px;height:75px;background:#d8000f;background:rgba(216,0,15,.1);margin:10px 6px 6px 8px;border-radius:50% 50%;border:2px solid #dc8f03}.deng-b{position:relative;width:38px;height:75px;background:#d8000f;background:rgba(216,0,15,.1);margin:-4px 6px 6px 23px;border-radius:50% 50%;border:2px solid #dc8f03}.xian{position:absolute;top:-62px;left:50px;width:1.8px;height:62px;background:#dc8f03;z-index:-1}.shui-a{position:relative;width:4px;height:18px;margin:-4px 0 0 48px;-webkit-animation:swing 4s infinite ease-in-out;-webkit-transform-origin:50% -45px;background:orange;border-radius:0 0 5px 5px}.deng-t{font-size:22px;line-height:38px}}.deng-box{position:fixed;top:13px;right:-20px;z-index:-1}.deng-box1{position:fixed;top:13px;left:-20px;z-index:-1}.deng-box .deng{position:relative;width:120px;height:90px;margin:50px;background:#d8000f;background:rgba(216,0,15,.8);border-radius:50% 50%;-webkit-transform-origin:50% -100px;-webkit-animation:swing 5s infinite ease-in-out;box-shadow:-5px 5px 30px 4px #fc903d}.deng-box1 .deng{position:relative;width:120px;height:90px;margin:50px;background:#d8000f;background:rgba(216,0,15,.8);border-radius:50% 50%;-webkit-transform-origin:50% -100px;-webkit-animation:swing 3s infinite ease-in-out;box-shadow:5px 5px 50px 4px #fa6c00}.deng-a{width:100px;height:90px;background:#d8000f;background:rgba(216,0,15,.1);margin:12px 8px 8px 10px;border-radius:50% 50%;border:2px solid #dc8f03}.deng-b{width:45px;height:90px;background:#d8000f;background:rgba(216,0,15,.1);margin:-4px 8px 8px 26px;border-radius:50% 50%;border:2px solid #dc8f03}.xian{position:absolute;top:-69px;left:60px;width:2px;height:70px;background:#dc8f03;z-index:-1}.shui-a{position:relative;width:5px;height:20px;margin:-5px 0 0 59px;-webkit-animation:swing 4s infinite ease-in-out;-webkit-transform-origin:50% -45px;background:orange;border-radius:0 0 5px 5px}.shui-b{position:absolute;top:14px;left:-2px;width:10px;height:10px;background:#dc8f03;border-radius:50%}.shui-c{position:absolute;top:18px;left:-2px;width:10px;height:35px;background:orange;border-radius:0 0 0 5px}.deng:before{position:absolute;top:-7px;left:29px;height:12px;width:60px;content:" ";display:block;z-index:-1;border-radius:5px 5px 0 0;border:solid 1px #dc8f03;background:orange;background:linear-gradient(to right,#dc8f03,#ffa500,#dc8f03,#ffa500,#dc8f03)}.deng:after{position:absolute;bottom:-7px;left:10px;height:12px;width:60px;content:" ";display:block;margin-left:20px;z-index:-1;border-radius:0 0 5px 5px;border:solid 1px #dc8f03;background:orange;background:linear-gradient(to right,#dc8f03,#ffa500,#dc8f03,#ffa500,#dc8f03)}.deng-t{font-size:26px;color:#dc8f03;font-weight:700;line-height:44px;text-align:center}.night .deng-t,.night .deng-box,.night .deng-box1{background:0 0!important}@-moz-keyframes swing{0%{-moz-transform:rotate(-10deg)}50%{-moz-transform:rotate(10deg)}100%{-moz-transform:rotate(-10deg)}}@-webkit-keyframes swing{0%{-webkit-transform:rotate(-10deg)}50%{-webkit-transform:rotate(10deg)}100%{-webkit-transform:rotate(-10deg)}}</style><div class=denglong id=chunjie><div class=deng-box><div class=deng><div class=xian></div><div class=deng-a><div class=deng-b><div class=deng-t>春节</div></div></div><div class="shui shui-a"><div class=shui-c></div><div class=shui-b></div></div></div></div><div class=deng-box1><div class=deng><div class=xian></div><div class=deng-a><div class=deng-b><div class=deng-t>喜迎</div></div></div><div class="shui shui-a"><div class=shui-c></div><div class=shui-b></div></div></div></div></div><script src=/html/lunar/lunar.js></script><script>var i,eles=document.getElementsByClassName("denglong");function shouldShowLanterns(){try{var o=Solar.fromDate(new Date),e=o.getLunar(),s=e.getYear(),t=e.getMonth(),n=e.getDay();return console.log("当前是农历 "+s+"年"+t+"月"+n+"日"),t===12&&n>=15||t===1&&n<=15}catch(e){return console.error("lunar.js 错误:",e),!1}}if(shouldShowLanterns())for(i=0;i<eles.length;i++)eles[i].style.display="block";else for(i=0;i<eles.length;i++)eles[i].style.display="none";setTimeout(function(){for(var t=document.getElementsByClassName("denglong"),e=0;e<t.length;e++)t[e].style.display="none"},60*1e3)</script><script type=text/javascript src=/js/flyfish.js></script><script src=/plugins/day-events/dayEvents.js></script><script src=/js/ai-summary.js></script><script>aiConfig.aiApi="https://qw.geekswg.dpdns.org",aiConfig.aiSelector="#content",aiConfig.reportUrl="mailto:geekswg@qq.cn?subject=文章摘要投诉&body=投诉网址:="+location.href,aiConfig.enableAIPathRegex=/^\/(posts|mydocs)\//,aiConfig.enableType=!1,aiConfig.aiGPTName="AI-CloudFlare",aiConfig.aiGPTDesc="我是一个使用AI大模型的AI摘要助手,可以帮助您快速生成文章摘要,提高阅读体验。",document.addEventListener("DOMContentLoaded",()=>{AISmmary.init(aiConfig),addScrollListener()})</script><script src=/js/link-preview.js></script><link rel=stylesheet href=https://unpkg.com/@waline/client@v3/dist/waline-meta.css><style>.pjax-loading{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;z-index:9999;opacity:0;visibility:hidden;transition:opacity .2s ease,visibility .2s ease;background:0 0;overflow:hidden}.pjax-loading::before{content:"";position:absolute;inset:0;background:rgba(0,0,0,6%);backdrop-filter:blur(1px);opacity:0;transition:opacity .2s ease;pointer-events:none}.pjax-loading.active{opacity:1;visibility:visible}.pjax-loading.active::before{opacity:1}.pjax-box{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:0;border-radius:0;background:0 0;backdrop-filter:none;box-shadow:none;z-index:1}.pjax-ring{position:relative;width:96px;height:96px}.pjax-ring .pjax-logo{position:relative;width:100%;height:100%;border-radius:50%;object-fit:cover;display:block;box-shadow:0 2px 10px rgba(0,0,0,.15);transform-origin:50% 50%;animation:pjax-logo-tone 1.6s ease-in-out infinite,pjax-logo-beat 1.4s ease-in-out infinite}.pjax-ring .pjax-spinner{position:absolute;inset:0;width:100%;height:100%;border:5px solid rgba(0,0,0,.18);border-top-color:var(--color-primary,#3b82f6);border-radius:50%;animation:pjax-spin .8s linear infinite;box-sizing:border-box}@keyframes pjax-logo-beat{0%,100%{transform:scale(1)}50%{transform:scale(1.06)}}@keyframes pjax-logo-tone{0%{filter:brightness(1.15)saturate(1.05)}50%{filter:brightness(.9)saturate(1.2)}100%{filter:brightness(1.15)saturate(1.05)}}@keyframes pjax-spin{to{transform:rotate(360deg)}}@media(prefers-color-scheme:dark){.pjax-loading{background:0 0}.pjax-loading::before{background:rgba(0,0,0,.25)}.pjax-box{background:0 0;box-shadow:none}.pjax-ring .pjax-spinner{border-color:rgba(255,255,255,.22);border-top-color:var(--color-primary,#60a5fa)}}#page-load-time{position:fixed;right:2px;bottom:2px;padding:2px;font-size:14px;line-height:1;border-radius:6px;z-index:2147483647;pointer-events:none;opacity:.6;background:rgba(255,255,255,.92);color:#111;border:1px solid rgba(0,0,0,6%);box-shadow:0 8px 22px rgba(11,22,33,6%);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}#page-load-time .plt-text{display:inline-block}#page-load-time.pjax-active{opacity:.4;transition:opacity .12s ease}#page-load-time .page-load-refresh{pointer-events:auto;background:0 0;border:0;color:inherit;cursor:pointer;border-radius:4px;display:inline-flex;justify-content:center}#page-load-time .page-load-refresh:focus{outline:2px solid rgba(255,255,255,.15)}#page-load-time .page-load-refresh:hover{background:rgba(255,255,255,4%)}#page-load-time{[data-theme='dark'] & {background: rgba(0,0,0,0.56);color:#fff;}}</style><div id=pjax-loading class=pjax-loading aria-hidden=true data-logo=/images/avatar.png><div class=pjax-box><div class=pjax-ring><img class=pjax-logo src=/images/avatar.png alt="site logo" loading=eager><div class=pjax-spinner role=progressbar aria-label=Loading></div></div></div></div><div id=page-load-time aria-hidden=true><button onclick=window.location.reload() id=page-load-refresh class=page-load-refresh title=如果页面加载异常,点击刷新重新加载 aria-label=刷新加载时间>
<i class="fa-solid fa-arrows-rotate"></i>
</button>
<span class=plt-text>load:0.000s</span></div><script src=/js/pjax.min.js></script><script>var pjax,__navStart=performance&&performance.timing&&performance.timing.navigationStart?performance.timing.navigationStart:Date.now(),__pjaxStartTime=0;window.addEventListener("load",function(){try{var e,t=document.getElementById("page-load-time");t&&(e=(Date.now()-__navStart)/1e3,setLoadTimeText(e))}catch(e){console.log(e)}}),document.addEventListener("DOMContentLoaded",function(){ensurePjaxOverlay()}),pjax=new Pjax({defaultTrigger:{exclude:"a[href^='blob'],a[href*='/friends'],a[href*='/dlogs'],a[href*='/notepad'],a[href*='/funs']"},selectors:["main","head title","meta[name=keywords]"],hooks:{document:function(e){configReload(e),loadDiffResource(window.document,e)}}});function configReload(e){e.querySelectorAll("script").forEach(e=>{!e.src&&e.textContent.indexOf("window.config")==0&&(new Function(e.textContent)(),fixit.config=window.config)})}let pjaxResourcePromise=null;const loadingScripts=new Set;function loadDiffResource(e,t){const n={stylesheets:getResourceUrls(e,'link[rel="stylesheet"]'),scripts:getResourceUrls(e,"script[src]")},s={stylesheets:getResourceUrls(t,'link[rel="stylesheet"]'),scripts:getResourceUrls(t,"script[src]")},o=s.stylesheets.filter(e=>!n.stylesheets.includes(e)),i=s.scripts.filter(e=>!n.scripts.includes(e));console.log("pjax 增量加载: 样式 %d 个,脚本 %d 个",o.length,i.length);const a=t.querySelector("#waline")!==null;if(a){const e=document.querySelector('link[href*="waline.css"]')||n.stylesheets.some(e=>e.includes("waline")),t=document.querySelector('script[src*="waline.umd.js"]')||n.scripts.some(e=>e.includes("waline"));if(!e){const e=s.stylesheets.find(e=>e.includes("waline"));e&&o.push(e)}if(!t){const e=s.scripts.find(e=>e.includes("waline"));e&&i.push(e)}}const r=loadStylesheets(o).then(()=>{console.log("CSS资源加载完成")}),c=loadScripts(i).then(()=>{console.log("JS资源加载完成")});return pjaxResourcePromise=Promise.all([r,c]),pjaxResourcePromise}function getResourceUrls(e,t){return Array.from(e.querySelectorAll(t)).map(e=>e.href?e.href:e.src?e.src:null).filter(e=>e!==null)}function loadStylesheets(e){const t=e.map(e=>new Promise((t)=>{if(document.querySelector(`link[href="${e}"]`)){t();return}const s=document.createElement("link");s.rel="stylesheet",s.href=e,s.onload=()=>t(),s.onerror=()=>{console.error(`加载CSS失败: ${e}`),t()},document.head.appendChild(s)}));return Promise.all(t)}function loadScripts(e){return e.reduce((e,t)=>e.then(()=>loadSingleScript(t)),Promise.resolve())}function loadSingleScript(e){return new Promise((t)=>{if(document.querySelector(`script[src="${e}"]`)){console.log(`脚本已存在,跳过加载: ${e}`),t();return}if(loadingScripts.has(e)){console.log(`脚本正在加载中,跳过: ${e}`),t();return}loadingScripts.add(e);const s=document.createElement("script");s.src=e,s.async=!1,s.defer=!1,s.onload=()=>{console.log(`加载JS成功: ${e}`),loadingScripts.delete(e),t()},s.onerror=()=>{console.error(`加载JS失败: ${e}`),loadingScripts.delete(e),t()},document.body.appendChild(s)})}function ensurePjaxOverlay(){var t,n,s,o,e=document.getElementById("pjax-loading");if(e)return;e=document.createElement("div"),e.id="pjax-loading",e.className="pjax-loading",e.setAttribute("aria-hidden","true"),e.setAttribute("data-logo","/images/avatar.png"),o=document.createElement("div"),o.className="pjax-box",n=document.createElement("div"),n.className="pjax-ring",t=document.createElement("img"),t.className="pjax-logo",t.src="/images/avatar.png",t.alt="site logo",t.loading="eager",s=document.createElement("div"),s.className="pjax-spinner",s.setAttribute("role","progressbar"),s.setAttribute("aria-label","Loading"),n.appendChild(t),n.appendChild(s),o.appendChild(n),e.appendChild(o),document.body.appendChild(e)}function setPjaxOverlayActive(e){var t=document.getElementById("pjax-loading");if(!t)return;e?t.classList.add("active"):t.classList.remove("active")}function setLoadTimeActive(e){var t=document.getElementById("page-load-time");if(!t)return;e?t.classList.add("pjax-active"):t.classList.remove("pjax-active")}function finishPjax(){setTimeout(function(){setPjaxOverlayActive(!1)},50),setTimeout(function(){typeof showPjaxDuration=="function"&&showPjaxDuration()},80),setLoadTimeActive(!1)}document.addEventListener("pjax:send",function(){console.log("pjax:send");try{__pjaxStartTime=Date.now()}catch{}try{setPjaxOverlayActive(!0),setLoadTimeActive(!0)}catch(e){console.log(e)}try{typeof fixit.destroyTocListener=="function"&&fixit.destroyTocListener()}catch(e){console.log("清理 TOC 监听器失败:",e)}}),document.addEventListener("pjax:complete",function(){console.log("pjax:complete"),pjaxResourcePromise?pjaxResourcePromise.then(()=>{console.log("所有资源加载完成,开始执行 pjax_reload"),pjax_reload(),pjaxResourcePromise=null,finishPjax()}).catch(e=>{console.error("资源加载失败:",e),pjax_reload(),pjaxResourcePromise=null,finishPjax()}):(pjax_reload(),finishPjax())}),document.addEventListener("pjax:error",function(){try{setPjaxOverlayActive(!1),setLoadTimeActive(!1)}catch(e){console.log(e)}});function pjax_reload(){try{window.config&&window.fixit&&(fixit.config=window.config)}catch(e){console.log(e)}setTimeout(()=>{pjax_fixit_reload()},10);try{AISmmary.pjaxInit&&AISmmary.pjaxInit(aiConfig),setTimeout(function(){typeof switchGiscusTheme=="function"&&switchGiscusTheme(document.documentElement.getAttribute("data-theme"))},3e3)}catch(e){console.log(e)}try{let e=document.getElementsByClassName("la-widget la-data-widget__container");e.length>0&&(e[0].style="background:transparent")}catch(e){console.log(e)}busanzi_reload()}function busanzi_reload(){try{window.busuanziRequestSent=!1;let e=document.querySelector('script[src*="busuanzi/3.6.9/busuanzi.min.js"]'),t=document.createElement("script");t.src=e.src,e.remove(),document.body.appendChild(t)}catch(e){console.log(e)}}function pjax_fixit_reload(){const e=document.querySelector(".view-comments"),s=document.querySelector("div#comments")!==null;e&&(s?(e.classList.remove("d-none"),initViewCommentsButton()):e.classList.add("d-none"));const t=document.querySelector(".toc-drawer-button"),o=document.querySelector("#toc-auto")!==null;if(t)if(o){t.classList.remove("d-none");try{fixit.initTocDialog()}catch(e){console.log("TOC 对话框初始化失败,使用备用方法:",e),initTocDrawerButton()}}else t.classList.add("d-none");try{initCustomALinks(),translate.execute()}catch(e){console.log(e)}setTimeout(()=>{const e=document.querySelector("#toc-auto");if(e)try{const e=document.querySelector(".toc");e&&e.offsetHeight!==0[0]?(typeof fixit.destroyTocListener=="function"&&fixit.destroyTocListener(),fixit.initToc(),document.querySelector(".toc ul")?fixit.initTocListener():console.log("TOC ul 元素不存在,跳过监听器初始化"),fixit.initTocDialog()):(console.log("TOC 内容元素未就绪,延迟重试"),setTimeout(()=>{try{typeof fixit.destroyTocListener=="function"&&fixit.destroyTocListener(),fixit.initToc(),document.querySelector(".toc ul")?fixit.initTocListener():console.log("TOC ul 元素不存在,跳过监听器初始化"),fixit.initTocDialog()}catch(e){console.log("TOC 延迟初始化失败:",e)}},100))}catch(e){console.log("TOC 初始化失败:",e)}try{fixit.initDetails()}catch(e){console.log(e)}try{fixit.initCodeWrapper()}catch(e){console.log(e)}},200);try{fixit.config&&fixit.config.encryption&&window.fixit.initFixItDecryptor()}catch(e){console.log(e)}const n=document.querySelector("div#comments"),i=document.querySelector("#waline");if(n&&i)initWalineComment();else if(n)try{fixit.initComment()}catch(e){console.log("评论初始化失败:",e)}setTimeout(()=>{pjax_reload_lightGallery()},100),pjax_js_reload("https://vercount.one/js")}function initWalineComment(){if(typeof Waline!="undefined"){console.log("Waline 对象已加载,开始初始化");try{fixit.initComment()}catch(e){console.log("Waline 初始化失败:",e)}}else{console.log("Waline 对象未加载,等待加载完成");let e=0;const n=10,t=setInterval(()=>{if(e++,typeof Waline!="undefined"){console.log("Waline 对象已加载,开始初始化"),clearInterval(t);try{fixit.initComment()}catch(e){console.log("Waline 初始化失败:",e)}}else if(e>=n){console.warn("Waline 加载超时,尝试直接初始化"),clearInterval(t);try{fixit.initComment()}catch(e){console.log("Waline 初始化失败:",e)}}},500)}}function initViewCommentsButton(){const e=document.querySelector(".view-comments");if(!e)return;const t=e.cloneNode(!0);e.parentNode.replaceChild(t,e),t.addEventListener("click",()=>{console.log("点击查看评论按钮");const e=document.querySelector("#comments");e?e.scrollIntoView({behavior:"smooth",block:"start"}):console.warn("未找到评论区域")})}function initTocDrawerButton(){const e=document.querySelector(".toc-drawer-button");if(!e)return;if(!e.parentNode){console.warn("TOC 抽屉按钮没有父节点,跳过事件绑定");return}const t=e.cloneNode(!0);e.parentNode.replaceChild(t,e),t.addEventListener("click",()=>{console.log("点击 TOC 抽屉按钮")})}function pjax_reload_lightGallery(){try{lightGallery(document.getElementById("content"),{plugins:[lgThumbnail,lgZoom],selector:".lightgallery",speed:400,hideBarsDelay:2e3,allowMediaOverlap:!0,exThumbImage:"data-thumbnail",toggleThumb:!0,thumbWidth:80,thumbHeight:"60px",actualSize:!1,showZoomInOutIcons:!0,licenseKey:"none"})}catch(e){console.log(e)}}function pjax_js_reload(e){var t,n=document.createElement("script");n.src=e,t=document.getElementsByTagName("script")[0],t.parentNode.insertBefore(n,t)}function ensureLoadTimeElement(){try{var t,n,s,e=document.getElementById("page-load-time");return e||(e=document.createElement("div"),e.id="page-load-time",e.setAttribute("aria-hidden","true"),n=document.createElement("span"),n.className="plt-text",n.textContent="加载 0.000 s",t=document.createElement("button"),t.id="page-load-refresh",t.className="page-load-refresh",t.title="页面加载异常,点击刷新重新加载",t.setAttribute("aria-label","页面加载异常,点击刷新重新加载"),s=document.createElement("i"),s.className="aswon aswon-refresh",s.setAttribute("aria-hidden","true"),t.appendChild(s),t.addEventListener("click",function(e){e.stopPropagation();try{refreshLoadTime()}catch(e){console.log(e)}}),e.appendChild(n),e.appendChild(t),document.body.appendChild(e)),e}catch(e){console.log(e)}}function setLoadTimeText(e,t){try{var o=ensureLoadTimeElement(),n=Number(e||0).toFixed(3),s=o.querySelector(".plt-text")||o;t==="pjax"?s.textContent="PJAX:"+n+"s":s.textContent="load:"+n+"s"}catch(e){console.log(e)}}function showPjaxDuration(){try{if(typeof __pjaxStartTime!="undefined"&&__pjaxStartTime){var e=(Date.now()-__pjaxStartTime)/1e3;setLoadTimeText(e,"pjax"),__pjaxStartTime=0}}catch(e){console.log(e)}}</script><div class="footer-line powered order-last">由 <a href=https://gohugo.io/ target=_blank rel="external nofollow noopener noreferrer" title="Hugo 0.160.1"><img class=hugo-icon src=/images/hugo.min.svg alt="Hugo logo"> Hugo</a> 强力驱动 | 主题 - <a href=https://github.com/hugo-fixit/FixIt target=_blank rel=external title="FixIt v0.4.4-20260308100717-fe7105a3"><img class=fixit-icon src=/images/fixit.min.svg alt="FixIt logo"> FixIt</a></div><div class="footer-line copyright order-3" itemscope itemtype=http://schema.org/CreativeWork><i class="fa-regular fa-copyright" aria-hidden=true></i>
<span itemprop=copyrightYear>2006 - 2026</span><span class=author itemprop=copyrightHolder>
<a href=https://github.com/geekswg target=_blank rel="external nofollow noopener noreferrer">geekswg</a></span><span class="license footer-divider"><a rel="license external nofollow noopener noreferrer" href=https://creativecommons.org/licenses/by-nc-sa/4.0/ target=_blank>CC BY-NC-SA 4.0</a></span></div><div class="footer-line statistics order-4"><span class=site-time title=网站运行中……><i class="fa-solid fa-heartbeat fa-fw animate-icon animate-icon" aria-hidden=true></i><span class="ms-1 d-none">本站已运行</span><span class="run-times variant-numeric ms-1">网站运行中……</span></span></div><div class="footer-line visitor order-1"><span id=busuanzi_container_site_uv title=总访客数><i class="fa-regular fa-user me-1" aria-hidden=true></i><span id=busuanzi_value_site_uv><i class="fa-solid fa-spinner fa-spin" aria-hidden=true></i></span></span><span id=busuanzi_container_site_pv class=footer-divider title=总访问量><i class="fa-regular fa-eye me-1" aria-hidden=true></i><span id=busuanzi_value_site_pv><i class="fa-solid fa-spinner fa-spin" aria-hidden=true></i></span></span></div><div class="footer-line beian order-2"><span class="icp footer-divider"><a href="https://icp.gov.moe/?keyword=20231992" target=_blank><img style=height:16px;line-height:14px;display:inline-block src=https://icp.gov.moe/images/ico64.png>萌ICP备20231992号</a> <a href=https://www.travellings.cn/go-by-clouds.html target=_blank rel=noopener title=开往-友链接力><img src=https://www.travellings.cn/assets/logo.gif alt=开往-友链接力 style=width:auto;height:16px></a> <a href=https://www.foreverblog.cn/go.html target=_blank> <img src=https://foreverblog.cn/assets/logo/wormhole_3_tp.gif alt style=width:auto;height:16px title=穿梭虫洞-随机访问十年之约友链博客></a></span></div></div></footer></div><div class=widgets><div class=fixed-buttons><div class="fixed-button back-to-top animate__faster d-none" role=button aria-label=回到顶部><i class="fa-solid fa-arrow-up" aria-hidden=true></i><svg viewBox="0 0 100 100"><circle class="bg" cx="50" cy="50" r="50"/><circle class="progress" cx="50" cy="50" r="50"/></svg></div><div class="fixed-button view-comments d-none" role=button aria-label=查看评论><i class="fa-solid fa-comment" aria-hidden=true></i></div></div><a href=https://github.com/geekswg/blog-fixit/ title="在 GitHub 查看代码" target=_blank rel="external nofollow" class="github-corner left d-none-mobile"><svg viewBox="0 0 250 250" aria-hidden="true" width="56" height="56"><path d="M0 0 115 115h15l12 27L250 250V0z"/><path d="M128.3 109C113.8 99.7 119 89.6 119 89.6 122 82.7 120.5 78.6 120.5 78.6 119.2 72 123.4 76.3 123.4 76.3 127.3 80.9 125.5 87.3 125.5 87.3 122.9 97.6 130.6 101.9 134.4 103.2" fill="currentColor" style="transform-origin:130px 106px" class="octo-arm"/><path d="M115 115C114.9 115.1 118.7 116.5 119.8 115.4l13.9-13.8C136.9 99.2 139.9 98.4 142.2 98.6 133.8 88 127.5 74.4 143.8 58 148.5 53.4 154 51.2 159.7 51 160.3 49.4 163.2 43.6 171.4 40.1 171.4 40.1 176.1 42.5 178.8 56.2 183.1 58.6 187.2 61.8 190.9 65.4 194.5 69 197.7 73.2 200.1 77.6 213.8 80.2 216.3 84.9 216.3 84.9 212.7 93.1 206.9 96 205.4 96.6 205.1 102.4 203 107.8 198.3 112.5 181.9 128.9 168.3 122.5 157.7 114.1 157.9 116.9 156.7 120.9 152.7 124.9L141 136.5C139.8 137.7 141.6 141.9 141.8 141.8z" fill="currentColor" class="octo-body"/></svg></a><div id=mask></div><div class=reading-progress-bar style=left:0;top:0;--fi-bg-progress:#0076ff;--fi-bg-progress-dark:#fff></div><noscript><div class=noscript-warning>该网站在启用 JavaScript 的情况下效果最佳。</div></noscript></div><link rel=stylesheet href=https://unpkg.com/lightgallery@2.7.2/css/lightgallery-bundle.min.css><link rel=stylesheet href=https://unpkg.com/cookieconsent@3.1.1/build/cookieconsent.min.css><link rel=stylesheet href=https://unpkg.com/pace-js@1.2.4/themes/purple/pace-theme-minimal.css><script src=https://unpkg.com/autocomplete.js@0.38.1/dist/autocomplete.min.js defer></script><script src=https://unpkg.com/fuse.js@6.6.2/dist/fuse.min.js defer></script><script src=https://unpkg.com/instant.page@5.2.0/instantpage.js async defer type=module></script><script src=https://unpkg.com/lightgallery@2.7.2/lightgallery.min.js defer></script><script src=https://unpkg.com/lightgallery@2.7.2/plugins/thumbnail/lg-thumbnail.min.js defer></script><script src=https://unpkg.com/lightgallery@2.7.2/plugins/zoom/lg-zoom.min.js defer></script><script src=https://unpkg.com/typeit@8.8.4/dist/index.umd.js defer></script><script src=https://unpkg.com/cookieconsent@3.1.1/build/cookieconsent.min.js defer></script><script src=https://unpkg.com/pangu@4.0.7/dist/browser/pangu.min.js defer></script><script src=https://unpkg.com/cell-tooltip@0.1.2/dist/cell-tooltip.umd.cjs defer></script><script src=https://unpkg.com/cell-watermark@1.0.3/src/watermark.min.js defer></script><script src=https://vercount.one/js async defer></script><script src=https://unpkg.com/pace-js@1.2.4/pace.min.js async defer></script><script>window.config={cookieconsent:{content:{dismiss:"同意",link:"了解更多",message:"本网站使用 Cookies 来改善您的浏览体验。"},enable:!0,palette:{button:{background:"#f0f0f0"},popup:{background:"#1aa3ff"}},theme:"edgeless"},enablePWA:!0,lightgallery:!0,pangu:{enable:!0,selector:"article"},search:{distance:100,findAllMatches:!1,fuseIndexURL:"/search.json",highlightTag:"em",ignoreFieldNorm:!0,ignoreLocation:!0,isCaseSensitive:!1,location:0,maxResultLength:10,minMatchCharLength:2,noResultsFound:"没有找到结果",snippetLength:30,threshold:.3,type:"fuse",useExtendedSearch:!0},siteTime:"2006-01-02T15:04:05+08:00",tooltip:!0,typeit:{cursorChar:"_",cursorSpeed:1e3,duration:-1,loop:!0,speed:100},version:"v0.4.4-20260308100717-fe7105a3",watermark:{appendTo:".widgets",colSpacing:100,content:'<div><img style="height: 2rem;" src="/images/avatar.webp" alt="logo" /><span>毕少侠</span></div>',enable:!0,fontFamily:"inherit",fontSize:2,height:50,opacity:.2,rotate:30,rowSpacing:256,width:512}}</script><script src=/js/theme.min.js defer></script><script src=/js/custom.min.js defer></script></body></html>