PageSourceSearch

https://yunyoujun.cn/assets/index.BnX-I_2Q.js

js yunyoujun.cn collected 2026-10-01 13:13:46 UTC 197,753 bytes, 554 lines download raw bytes

1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/theme.ngPZD3Uu.js","assets/rolldown-runtime.hePW80VL.js","assets/framework.DrrZC3KU.js","assets/chunks/vue-i18n.CmeJj5pI.js","assets/chunks/vue-router.96uMG9TU.js","assets/chunks/dayjs.Ds-6csIR.js","assets/chunks/pinia.BkVavgHI.js","assets/chunks/@vueuse/motion.CbDkNvXH.js","assets/a-story-about-coc-22.DXeJYkVw.js","assets/add-web-notification-for-blog.BWyAHtPY.js","assets/go-far-away.CKNTudKl.js","assets/how-to-migrate-element-plus-var.Bs7u4Ly4.js","assets/how-to-write-a-bezier-curve-sketch-pad.EZ58ckxQ.js","assets/i-and-game.Dt-j4vCz.js","assets/imitate-2048-game.cdsAnlaZ.js","assets/make-ak-ui.DAglFVN2.js","assets/minecraft-survival-diary.DcQtbFBs.js","assets/my-first-internship-and-work.Cda8ga6U.js","assets/my-next-blog.BvxrD1jr.js","assets/my-youth-is-over.AA4arzII.js","assets/happy-fool-day.CXCFHj9Z.js","assets/README.CsRB5fzX.js","assets/re0-to-be-a-vtuber.CDH8TXGj.js","assets/README.B1Pwp7Qe.js","assets/today-let-us-cook.CijPjHyy.js","assets/what-i-do-for-element-plus-style-system.CUHXquoh.js","assets/_...path_.Dwg_ROco.js","assets/404.BKN-0y48.js","assets/about.DtxpXQXD.js","assets/advertise.DDtGlXIe.js","assets/site.BkwN13Ip.js","assets/air-conditioner-room.1akxcKRz.js","assets/archives.Vcm8gI8C.js","assets/categories.ilhqcjPu.js","assets/collections.BoXbPeen.js","assets/xiaoyun.CpOvL9do.js","assets/StudioVideo.D42BfDtY.js","assets/girls.Dyb4dA46.js","assets/links.Dq_aM2-L.js","assets/music.B6FUKK6d.js","assets/online-dating.BpEG4UIW.js","assets/2020-summary.C6mm90SK.js","assets/a-blessing-in-disguise.BOjW4UdB.js","assets/a-story-about-coc-0.DYvY9epJ.js","assets/a-story-about-coc-1.CYm7Ihme.js","assets/a-story-about-coc-2.Dzu6kNWJ.js","assets/a-story-about-fantasy-star.DbVgpoub.js","assets/a-trip-to-nanjing-10th-contest.B_h51VW-.js","assets/a-try-about-watercolor-portrait.3NvmB3Ec.js","assets/after-2nd-graduate-exam.BV95sZtL.js","assets/after-2nd-postgraduate-re-exam.Cdc0-IjW.js","assets/after-entering-cuc.CJZO6fuB.js","assets/after-graduate-exam.CPpm6kNJ.js","assets/ai-sfc.B-IUW8FZ.js","assets/air-conditioner.CVtOC66T.js","assets/always-like-this.DrYm_U4O.js","assets/as-summer-flowers.C748Roag.js","assets/baidu-seo-about-github-pages.DhDab3kJ.js","assets/blender-learn-note.2Fs2vOuU.js","assets/choose-your-testing-framework.Bb0-6bkF.js","assets/coc-dragon-boat-incident.COQjPT20.js","assets/coding-webide-dev-env.BuLyrHlq.js","assets/coolq-use-note.C2rP6rAX.js","assets/css-trap-note.Cib2Nowr.js","assets/death-and-rebirth-of-open-source-projects.CHB65_P0.js","assets/deepin-use-note.RFuzsFe_.js","assets/discourse-forum.BwPEIA4d.js","assets/draw-a-fool-goddess.5IntEl0h.js","assets/eat-hot-pot-together.DHxwcQbl.js","assets/echo.DKh2-qkp.js","assets/everyday-auto-xuexiqiangguo.DKs4G8wH.js","assets/export-nideriji-and-import-1diary.DJGLbp8o.js","assets/find-npy-social-account.B97gzuPZ.js","assets/gaussian-blur-for-image.Fs2Q3jNd.js","assets/git-learn-note.CaQtPxo9.js","assets/give-me-money.D32XWTOn.js","assets/hamster.L4-cxLSa.js","assets/hana-saku-iroha-weiwei-bonboru.A9Yz3Xcu.js","assets/hexo-build-note.BLtMEMic.js","assets/hexo-theme-yun-strato.DjP4NpT5.js","assets/home-firework-red-bag.B9b5O1yA.js","assets/how-much-3d-format.BptIJKbH.js","assets/how-to-build-your-site.D_lTOlGd.js","assets/how-to-realize-badge-rotation.cxwUj90D.js","assets/how-to-write-a-web-component.BgmtUl-I.js","assets/html5-canvas-nest-js.DeqH-rgs.js","assets/i-am-er-ci-yuan-and-try-to-prove.DFZD1eam.js","assets/i-and-town-and-home.BX02Y4BZ.js","assets/laravel-use-note.Cu_B5FUf.js","assets/latex-use-note.CwYOt6Ti.js","assets/life-and-work.BDQNVlUA.js","assets/life-is-not-a-marathon.BZlT7ZG_.js","assets/make-an-avg-engine.Ban5oqNL.js","assets/make-el-bot.DYmFPASP.js","assets/make-hexo-theme-yun.t4kfyPEM.js","assets/memory-about-summer-camp.C0NIxSd2.js","assets/methods-for-inverse-kinematics.DOZVAvGc.js","assets/migrate-from-valine-to-disqus.D3D0KUyg.js","assets/my-total-war-the-fairy-road.CTXK27yf.js","assets/nnrm-new-nrm.BmLjk9Jl.js","assets/npm-and-yarn.60jw_LrP.js","assets/opengl-with-macos.CB1DMpBm.js","assets/outer-space.DnUMg_5C.js","assets/planet-of-aqua.Bgv2-5DJ.js","assets/proof-of-love.wePo0Zyr.js","assets/quaternion-and-spatial-rotation.mY_zDw4p.js","assets/responsive-canvas-with-vue.DkHCM2y1.js","assets/set-up-my-minecraft-server.Dwu5iDJo.js","assets/stop-motion-animation-exchange.n0UigpdV.js","assets/that-is-w
1hat-life-should-be.BVzYyZU8.js","assets/the-birth-of-yunlefun.MEDXzbAj.js","assets/the-common-hamster.CCl_awvb.js","assets/the-moonlight-is-beautiful.BeCQ6VO1.js","assets/the-shape-of-voice.BzTiCWBC.js","assets/third-party-comment-system.C7n1OgtV.js","assets/to-lovely-junior.FE4AGjxc.js","assets/trans-learn-latex-in-30-minutes.BLSHqtSp.js","assets/try-to-become-a-teacher.D1ts5KAD.js","assets/use-cdn-speed-up-site.BAqg8B3d.js","assets/use-travis-to-deploy.DlHp3mO7.js","assets/valaxy-best-practice.CAizN_FU.js","assets/vscode-config-note.C61aV6nD.js","assets/vue-d3-demo.ua1gamDb.js","assets/vue-learn-note.CJFbNlR9.js","assets/vue-parcel-demo.DqdMIlAk.js","assets/want-more-do-less.g5zHt8Yg.js","assets/wechat-and-chinese-chess.B4nSD_Ll.js","assets/why-i-use-upyun-cdn.6Y4cwjb-.js","assets/why-make-char-dust.CQh4rRJl.js","assets/wordpress-plugins-themes.CikpT-Ae.js","assets/xiaoyun-studio-01-ak-ui.DO_QJ1Gi.js","assets/yunyoujun-meme.CZvjNPgE.js","assets/yunzhan-desktop-acceptance-2026-09-24.DwzjxT04.js","assets/projects.Buhh_scK.js","assets/README.WEIqyRX3.js","assets/sites.CIaNrwBe.js","assets/slides.C-ixssht.js","assets/sponsors.DJvXb1cv.js","assets/tags.qTr0ofVG.js","assets/client.DMBCLPP5.js"])))=>i.map(i=>d[i]);
2import{r as e}from"./rolldown-runtime.hePW80VL.js";import{Dt as t,Ft as n,G as r,Gn as i,K as a,N as o,Ot as s,Qn as c,Tr as l,U as u,Un as d,Vt as f,W as p,Yt as m,Zt as h,et as g,hn as _,n as v,nt as y,o as b,pt as x,q as S,qt as C,s as w,t as T,tr as E}from"./framework.DrrZC3KU.js";import{A as ee,B as te,C as D,D as ne,H as re,P as ie,S as ae,T as oe,U as se,W as ce,_ as le,b as ue,c as de,f as fe,g as pe,h as me,j as he,k as ge,l as _e,m as ve,p as ye,q as be,s as xe,u as Se,v as Ce,w as we,x as Te,y as Ee,z as De}from"./theme.ngPZD3Uu.js";import{n as Oe,t as ke}from"./chunks/vue-i18n.CmeJj5pI.js";import{n as Ae,r as je}from"./chunks/vue-router.96uMG9TU.js";import{t as Me}from"./chunks/pinia.BkVavgHI.js";import{n as Ne}from"./chunks/@vueuse/motion.CbDkNvXH.js";/* empty css                    */import{t as Pe}from"./chunks/nprogress.Dew4DlVv.js";var Fe={class:`va-main w-full h-screen`,text:`center`,flex:`~ col`,justify:`center`,items:`center`},Ie=[`title`],Le=T(y({__name:`404`,setup(e){let{t}=Oe(),{back:n}=De();return(e,r)=>{let i=m(`RouterView`);return f(),S(`main`,Fe,[r[1]||=p(`div`,{class:`not-found`,title:`404`,font:`mono`},` 404 `,-1),g(i),p(`div`,null,[p(`button`,{class:`btn rounded-full`,p:`x-6 y-2`,text:`sm`,m:`3 t8`,title:E(t)(`button.back`),onClick:r[0]||=(...e)=>E(n)&&E(n)(...e)},l(E(t)(`button.back`)),9,Ie)])])}}}),[[`__scopeId`,`data-v-af6a464b`]]),Re={};function ze(e,t){let n=m(`RouterView`);return f(),r(n)}var Be=T(Re,[[`render`,ze]]),Ve={};function He(e,t){let n=m(`RouterView`);return f(),r(n)}var Ue=T(Ve,[[`render`,He]]),We={};function Ge(e,t){let n=m(`RouterView`);return f(),r(n)}var Ke={404:Le,default:Be,empty:Ue,post:T(We,[[`render`,Ge]]),404:ge,albums:oe,archives:we,categories:D,collection:ae,collections:Te,default:ue,docs:Ee,gallery:Ce,home:le,moments:pe,post:me,posts:ve,projects:ye,tags:fe};function qe(e){function t(e,n=!0){return e.map(e=>{if(e.children?.length>0&&(e.children=t(e.children,!1)),n){if(!e.component&&e.children?.find(e=>(e.path===``||e.path===`/`)&&e.meta?.isLayout))return e;if(e.meta?.layout!==!1)return{path:e.path,component:Ke[e.meta?.layout||`default`],children:e.path===`/`?[e]:[{...e,path:``}],meta:{isLayout:!0}}}return e.meta?.layout?{path:e.path,component:Ke[e.meta?.layout],children:[{...e,path:``}],meta:{isLayout:!0}}:e})}return t(e)}var Je=[{path:`/`,name:`/`,component:()=>v(()=>import(`./theme.ngPZD3Uu.js`).then(e=>e.a),__vite__mapDeps([0,1,2,3,4,5,6,7])),meta:{layout:`home`,frontmatter:{time_warning:15552e6}}},{path:`/_drafts`,children:[{path:`a-story-about-coc-22`,name:`/_drafts/a-story-about-coc-22`,component:()=>v(()=>import(`./a-story-about-coc-22.DXeJYkVw.js`),__vite__mapDeps([8,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`关于部落冲突的二三事儿-22`,tags:[`时光`,`部落`],categories:[`云游的小回忆`,`关于部落冲突的二三事儿`],date:`2018-03-16 20:12:43`,updated:`2018-03-16 20:12:43`,wordCount:`81`,readingTime:1},excerpt:``}},{path:`abandon`,children:[{path:`add-web-notification-for-blog`,name:`/_drafts/abandon/add-web-notification-for-blog`,component:()=>v(()=>import(`./add-web-notification-for-blog.BWyAHtPY.js`),__vite__mapDeps([9,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`Web Notification 为博客推送通知(咕了)`,date:`2020-05-30 03:02:13`,updated:`2020-05-30 03:02:13`,tags:null,categories:null,wordCount:`354`,readingTime:2},excerpt:``}}],meta:{frontmatter:{time_warning:15552e6}}},{path:`go-far-away`,name:`/_drafts/go-far-away`,component:()=>v(()=>import(`./go-far-away.CKNTudKl.js`),__vite__mapDeps([10,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`go-far-away`,date:`2020-04-14 18:07:36`,updated:`2020-04-14 18:07:36`,tags:null,categories:null,wordCount:`261`,readingTime:2},excerpt:``}}
2,{path:`how-to-migrate-element-plus-var`,name:`/_drafts/how-to-migrate-element-plus-var`,component:()=>v(()=>import(`./how-to-migrate-element-plus-var.Bs7u4Ly4.js`),__vite__mapDeps([11,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`Element Plus 的主题系统改造了哪些`,date:`2021-07-13 21:47:46`,updated:`2021-07-13 21:47:46`,tags:null,categories:null,wordCount:`1.7k`,readingTime:10},excerpt:``}},{path:`how-to-write-a-bezier-curve-sketch-pad`,name:`/_drafts/how-to-write-a-bezier-curve-sketch-pad`,component:()=>v(()=>import(`./how-to-write-a-bezier-curve-sketch-pad.EZ58ckxQ.js`),__vite__mapDeps([12,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`如何写一个贝塞尔曲线画板`,date:`2019-12-10 16:39:16`,updated:`2019-12-10 16:39:16`,tags:[`Bezier`,`计算机图形学`,`教程`,`分享`],categories:[`云游的小笔记`],wordCount:`64`,readingTime:1},excerpt:`<p>开门见山,如何写一个贝塞尔曲线。</p>
3`}},{path:`i-and-game`,name:`/_drafts/i-and-game`,component:()=>v(()=>import(`./i-and-game.Dt-j4vCz.js`),__vite__mapDeps([13,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`i-and-game`,tags:[`随笔`],categories:[`云游的小随笔`],aplayer:!0,date:`2026-09-25T08:12:17.115Z`,updated:`2026-09-25T08:12:17.115Z`,wordCount:`181`,readingTime:1},excerpt:``}},{path:`imitate-2048-game`,name:`/_drafts/imitate-2048-game`,component:()=>v(()=>import(`./imitate-2048-game.cdsAnlaZ.js`),__vite__mapDeps([14,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`仿2048文字小游戏`,tags:[`JavaScript`,`前端`,`学习`],categories:[`云游的小项目`],date:`2017-03-04 23:33:23`,updated:`2017-03-04 23:33:23`,wordCount:`84`,readingTime:1},excerpt:``}},{path:`make-ak-ui`,name:`/_drafts/make-ak-ui`,component:()=>v(()=>import(`./make-ak-ui.DAglFVN2.js`),__vite__mapDeps([15,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`make-ak-ui`,date:`2020-04-01 01:19:19`,updated:`2020-04-01 01:19:19`,tags:null,categories:null,wordCount:`79`,readingTime:1},excerpt:``}},{path:`minecraft-survival-diary`,name:`/_drafts/minecraft-survival-diary`,component:()=>v(()=>import(`./minecraft-survival-diary.DcQtbFBs.js`),__vite__mapDeps([16,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`Minecraft 生存日记`,date:`2020-03-25 14:45:58`,updated:`2020-03-25 14:45:58`,tags:[`Minecraft`,`日记`],categories:[`云游的小日记`],wordCount:`68`,readingTime:1},excerpt:`<p>其实这得从很久前的 <a href="https://www.yunyoujun.cn/posts/set-up-my-minecraft-server/" target="_blank" rel="noreferrer">搭建自己的 Minecraft 服务器</a> 说起。</p>
4`}},{path:`my-first-internship-and-work`,name:`/_drafts/my-first-internship-and-work`,component:()=>v(()=>import(`./my-first-internship-and-work.Cda8ga6U.js`),__vite__mapDeps([17,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`缓慢受锤的牛`,date:`2021-04-08 18:19:28`,updated:`2021-04-08 18:19:28`,tags:[`前端`,`实习`,`工作`],categories:[`云游的小日记`],end:!1,wordCount:`4.9k`,readingTime:21},excerpt:`<blockquote>
5<p>那一天我二十一岁,在我一生的黄金时代。
6我有好多奢望。我想爱,想吃,还想在一瞬间变成天上半明半暗的云。
7我来我才知道,生活就是个缓慢受锤的过程,人一天天老下去,奢望也一天天消失,最后变得像挨了锤的牛一样。
8可是我过二十一岁生日时没有预见到这一点。我觉得自己会永远生猛下去,什么也锤不了我。
9—— 王小波「黄金时代」</p>
10</blockquote>
11<p>许久不见,见字如面。</p>
12<p>作为虎年的第一篇博文,我决定讲讲自去年实习以来与工作相关的故事。</p>
13<p>只不过,我是属牛的。</p>
14<p>在过去的几年,虽然多有波折,但也许也是我一生的黄金时代。
15我有着很多的奢望,并以为自己会生猛下去。
16与此同时,我也预见过一些被锤的自己,但不愿相信。</p>
17`}},{path:`my-next-blog`,name:`/_drafts/my-next-blog`,component:()=>v(()=>import(`./my-next-blog.BvxrD1jr.js`),__vite__mapDeps([18,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`你的下一个博客何必是 Hexo`,date:`2021-11-28 00:34:01`,updated:`2021-11-28 00:34:01`,tags:null,categories:null,wordCount:`60`,readingTime:1},excerpt:``}},{path:`my-youth-is-over`,name:`/_drafts/my-youth-is-over`,component:()=>v(()=>import(`./my-youth-is-over.AA4arzII.js`),__vite__mapDeps([19,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`我的青春恋爱物语-完`,date:`2021-03-09 01:52:41`,updated:`2021-03-09 01:52:41`,tags:null,categories:null,wordCount:`92`,readingTime:1},excerpt:``}},{path:`old`,children:[{path:`happy-fool-day`,name:`/_drafts/old/happy-fool-day`,component:()=>v(()=>import(`./happy-fool-day.CXCFHj9Z.js`),__vite__mapDeps([20,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`本站将停止一切更新`,date:`2020-04-01 08:56:08`,updated:`2020-04-01 08:56:08`,type:`bilibili`,url:`https://baike.baidu.com/item/%E6%84%9A%E4%BA%BA%E8%8A%82/114199`,aplayer:!0,wordCount:`88`,readingTime:1},excerpt:`<p><meting-js
18 id="26830207"
19 server="netease"
20 type="song"
21 theme="#C20C0C">
22</meting-js></p>
23<p>对不起,再见了各位,我要前往二次元了。</p>
24<figure><img src="https://i.loli.net/2020/04/01/8GNoYTAU2JbK75s.jpg" alt="go-to-er-ci-yuan.jpg" loading="lazy" decoding="async"></figure>
25`}},{path:`README`,name:`/_drafts/old/README`,component:()=>v(()=>import(`./README.CsRB5fzX.js`),__vite__mapDeps([21,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,date:`2026-09-25T08:12:17.115Z`,updated:`2026-09-25T08:12:17.115Z`,wordCount:`7`,readingTime:1},excerpt:``}}],meta:{frontmatter:{time_warning:15552e6}}},{path:`re0-to-be-a-vtuber`,name:`/_drafts/re0-to-be-a-vtuber`,component:()=>v(()=>import(`./re0-to-be-a-vtuber.CDH8TXGj.js`),__vite__mapDeps([22,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`从一开始成为 VTuber`,date:`2020-08-16 16:58:23`,updated:`2020-08-16 16:58:23`,tags:null,categories:null,wordCount:`35`,readingTime:1},excerpt:``}},{path:`README`,name:`/_drafts/README`,component:()=>v(()=>import(`./README.B1Pwp7Qe.js`),__vite__mapDeps([23,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,date:`2026-09-25T08:12:17.115Z`,updated:`2026-09-25T08:12:17.115Z`,wordCount:`61`,readingTime:1},excerpt:``}},{path:`today-let-us-cook`,name:`/_drafts/today-let-us-cook`,component:()=>v(()=>import(`./today-let-us-cook.CijPjHyy.js`),__vite__mapDeps([24,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`好的,今天我们来做菜!`,date:`2022-04-17 22:38:11`,updated:`2022-04-17 22:38:11`,tags:null,categories:null,wordCount:`33`,readingTime:1},excerpt:``}},{path:`what-i-do-for-element-plus-style-system`,name:`/_drafts/what-i-do-for-element-plus-style-system`,component:()=>v(()=>import(`./what-i-do-for-element-plus-style-system.CUHXquoh.js`),__vite__mapDeps([25,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`what-i-do-for-element-plus-style-system`,date:`2021-09-20 00:34:01`,updated:`2021-09-20 00:34:01`,tags:null,categories:null,wordCount:`92`,readingTime:1},excerpt:``}}],meta:{frontmatter:{time_warning:15552e6}}}
25,{path:`/:path(.*)`,name:`/[...path]`,component:()=>v(()=>import(`./_...path_.Dwg_ROco.js`),__vite__mapDeps([26,2,1,0,3,4,5,6,7])),meta:{layout:404,frontmatter:{time_warning:15552e6}}},{path:`/404`,name:`/404`,component:()=>v(()=>import(`./404.BKN-0y48.js`),__vite__mapDeps([27,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,layout:404,title:`未曾触及的未来`,permalink:`/404.html`,reward:!1,date:`2026-09-25T08:12:17.115Z`,updated:`2026-09-25T08:12:17.115Z`,wordCount:`15`,readingTime:1},excerpt:``,layout:404}},{path:`/about`,children:[{path:``,name:`/about/`,component:()=>v(()=>import(`./about.DtxpXQXD.js`),__vite__mapDeps([28,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`关于我`,date:`2017-10-12 10:48:25`,type:`about`,updated:`2021-01-24 15:10:32`,aplayer:!0,reward:!0,icon:`icon-cloud-line`,iconify:!0,wordCount:`1.9k`,readingTime:11},excerpt:``}},{path:`advertise`,name:`/about/advertise`,component:()=>v(()=>import(`./advertise.DDtGlXIe.js`),__vite__mapDeps([29,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`推广合作`,description:`在云游君的小站展示你的项目、产品或创作。`,comment:!1,date:`2026-09-25T08:12:17.116Z`,updated:`2026-09-25T08:12:17.116Z`,wordCount:`277`,readingTime:2},excerpt:``}},{path:`site`,name:`/about/site`,component:()=>v(()=>import(`./site.BkwN13Ip.js`),__vite__mapDeps([30,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`关于站点`,date:`2017-10-12 10:48:25`,type:`about`,updated:`2021-01-24 15:10:32`,aplayer:!0,reward:!0,icon:`icon-home-4-line`,wordCount:`2.7k`,readingTime:15},excerpt:``}}],meta:{frontmatter:{time_warning:15552e6}}},{path:`/air-conditioner-room`,children:[{path:``,name:`/air-conditioner-room/`,component:()=>v(()=>import(`./air-conditioner-room.1akxcKRz.js`),__vite__mapDeps([31,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`空调房`,icon:`i-ri-home-gear-line`,date:`2020-12-06 02:02:15`,updated:`2020-12-06 17:46:15`,reward:!0,wordCount:`105`,readingTime:1},excerpt:``}}],meta:{frontmatter:{time_warning:15552e6}}},{path:`/archives`,children:[{path:``,name:`/archives/`,component:()=>v(()=>import(`./archives.Vcm8gI8C.js`),__vite__mapDeps([32,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`归档`,layout:`archives`,comment:!1,nav:!1,toc:!1,aside:!1,date:`2026-09-25T08:12:17.116Z`,updated:`2026-09-25T08:12:17.116Z`,wordCount:`24`,readingTime:1},excerpt:``,layout:`archives`}}],meta:{frontmatter:{time_warning:15552e6}}},{path:`/categories`,children:[{path:``,name:`/categories/`,component:()=>v(()=>import(`./categories.ilhqcjPu.js`),__vite__mapDeps([33,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,layout:`categories`,nav:!1,toc:!1,icon:`i-ri-folder-2-line`,title:`云游的小分类`,aside:!1,date:`2026-09-25T08:12:17.116Z`,updated:`2026-09-25T08:12:17.116Z`,wordCount:`23`,readingTime:1},excerpt:``,layout:`categories`}}],meta:{frontmatter:{time_warning:15552e6}}},{path:`/collections`,children:[{path:``,name:`/collections/`,component:()=>v(()=>import(`./collections.BoXbPeen.js`),__vite__mapDeps([34,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,layout:`collections`,title:`合集`,icon:`i-ri-gallery-view`,toc:!1,comment:!1,date:`2026-09-25T08:12:17.116Z`,updated:`2026-09-25T08:12:17.116Z`,wordCount:`14`,readingTime:1},excerpt:``,layout:`collections`}},{path:`xiaoyun`,children:[{path:``,name:`/collections/xiaoyun/`,component:()=>v(()=>import(`./xiaoyun.CpOvL9do.js`),__vite__mapDeps([35,2,1,0,3,4,5,6,7,36])),meta:{frontmatter:{time_warning:15552e6,layout:`collection`,from:[`/studio/`,`/studio`],title:`小云梦工坊`,description:`用视频记录开源项目的故事,收集从想法变成作品的瞬间。`,icon:`i-ri-film-line`,toc:!1,comment:!1,aside:!1,date:`2026-09-25T08:12:17.116Z`,updated:`2026-09-25T08:12:17.116Z`,wordCount:`48`,readingTime:1},excerpt:``,layout:`collection`}}],meta:{frontmatter:{time_warning:15552e6}}}],meta:{frontmatter:{time_warning:15552e6}}},{path:`/girls`,children:[{path:``,name:`/girls/`,component:()=>v(()=>import(`./girls.Dyb4dA46.js`),__vite__mapDeps([37,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`Lovely Girls`,date:`2019-01-07 11:17:35`,updated:`2026-08-10 00:00:00`,icon:`i-ri-women-line`,random:!0,aside:!1,wordCount:`262`,readingTime:2},excerpt:``}}],meta:{frontmatter:{time_warning:15552e6}}},{path:`/links`,children:[{path:``,name:`/links/`,component:()=>v(()=>import(`./links.Dq_aM2-L.js`),__vite__mapDeps([38,1,2,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`我的小伙伴们`,date:`2019-06-21 13:06:06`,keywords:`链接`,description:`云游的小伙伴们`,comments:!0,updated:`2019-06-21 13:06:06`,wordCount:`113`,readingTime:1},excerpt:``}}],meta:{frontmatter:{time_warning:15552e6}}},{path:`/music`,children:[{path:``,name:`/music/`,component:()=>v(()=>import(`./music.B6FUKK6d.js`),__vite__mapDeps([39,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`音乐`,date:`2017-08-21 12:28:28`,updated:`2017-08-21 12:28:28`,tags:[`分享`],categories:[`云游的小安利`],aplayer:!0,wordCount:`267`,readingTime:2},excerpt:``}}],meta:{frontmatter:{time_warning:15552e6}}},{path:`/notes`,children:[{path:`online-dating`,name:`/notes/online-dating`,component:()=>v(()=>import(`./online-dating.BpEG4UIW.js`),__vite__mapDeps([40,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`大云在线征婚`,password_hint:`ID`,date:`2026-09-25T08:12:17.116Z`,updated:`2026-09-25T08:12:17.116Z`,wordCount:`469`,readingTime:2},excerpt:``}}],meta:{frontmatter:{time_warning:15552e6}}},{path:`/page`,children:[{path:`:page`,name:`/page/[page]`,component:()=>v(()=>import(`./theme.ngPZD3Uu.js`).then(e=>e.i),__vite__mapDeps([0,1,2,3,4,5,6,7])),meta:{layout:`home`,frontmatter:{time_warning:15552e6}}}],meta:{frontmatter:{time_warning:15552e6},layout:`home`}},{path:`/posts`,children:[{path:``,name:`/posts/`,component:()=>v(()=>import(`./theme.ngPZD3Uu.js`).then(e=>e.r),__vite__mapDeps([0,1,2,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6},layout:`posts`}},{path:`2020-summary`,name:`/posts/2020-summary`,component:()=>v(()=>import(`./2020-summary.C6mm90SK.js`),__vite__mapDeps([41,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`做猪呢,最重要的是开心`,date:`2021-02-12 21:42:43`,updated:`2021-03-02 21:42:43`,tags:[`年终总结`,`养猪`],
25categories:[`云游的小日记`],aplayer:!0,wordCount:`10.2k`,readingTime:43},layout:`post`,excerpt:`<figure><img src="https://cos.yunle.fun/images/how-to-raise-pigs.jpg" alt="如何养猪" loading="lazy" decoding="async"></figure>
26<blockquote>
27<p><a href="https://zh.wikihow.com/%E5%85%BB%E7%8C%AA" target="_blank" rel="noreferrer">如何养猪 | wikiHow</a></p>
28</blockquote>
29<p>养猪指南?不对,是猪的成长日志。</p>
30`}},{path:`a-blessing-in-disguise`,name:`/posts/a-blessing-in-disguise`,component:()=>v(()=>import(`./a-blessing-in-disguise.BOjW4UdB.js`),__vite__mapDeps([42,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`塞翁失马焉知非福`,date:`2019-04-28 15:48:00`,updated:`2019-05-06 21:32:00`,tags:[`日记`,`时光`],categories:[`云游的小日记`],aplayer:!0,wordCount:`3.6k`,readingTime:14},layout:`post`,excerpt:`<p><meting-js
31 id="26270008"
32 server="netease"
33 type="song"
34 theme="#C20C0C">
35</meting-js></p>
36`}},{path:`a-story-about-coc-0`,name:`/posts/a-story-about-coc-0`,component:()=>v(()=>import(`./a-story-about-coc-0.DYvY9epJ.js`),__vite__mapDeps([43,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`关于部落冲突的二三事儿-序`,tags:[`时光`,`部落`],categories:[`云游的小回忆`,`关于部落冲突的二三事儿`],date:`2016-05-12 15:31:35`,updated:`2016-05-12 15:31:35`,wordCount:`559`,readingTime:3},layout:`post`,excerpt:`<p>大概是因为作为少数一直玩了将尽两年这么久的游戏,又或者是因为恰巧从大学开始陪伴了我大部分光阴的游戏,已经开始进入为生活的一部分了。即便有时它的趣味不再吸引我,甚至一度想过弃游,但一想到在这里我遇到过那么多人那么多事,便不舍得放下这份回忆。想来如今它更多吸引我的大概已经不是其本身的趣味了,而是其中的种种人与事的联系。</p>
37`}},{path:`a-story-about-coc-1`,name:`/posts/a-story-about-coc-1`,component:()=>v(()=>import(`./a-story-about-coc-1.CYm7Ihme.js`),__vite__mapDeps([44,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`关于部落冲突的二三事儿-1`,tags:[`时光`,`部落`],categories:[`云游的小回忆`,`关于部落冲突的二三事儿`],date:`2016-05-12 17:56:43`,updated:`2017-01-22 16:55:32`,aplayer:!0,wordCount:`16.1k`,readingTime:57},layout:`post`,excerpt:``}},{path:`a-story-about-coc-2`,name:`/posts/a-story-about-coc-2`,component:()=>v(()=>import(`./a-story-about-coc-2.Dzu6kNWJ.js`),__vite__mapDeps([45,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`关于部落冲突的二三事儿-2`,date:`2016-05-26 15:09:20`,updated:`2018-03-16 15:09:20`,tags:[`时光`,`部落`],categories:[`云游的小回忆`,`关于部落冲突的二三事儿`],wordCount:`6.7k`,readingTime:23},layout:`post`,excerpt:`<h2 id="终点" tabindex="-1">终点 <a class="header-anchor" href="#终点" aria-label="Permalink to &quot;终点&quot;">&ZeroWidthSpace;</a></h2>
38<p>上回说到,我们中的一些人,出来发展分部。我预感到,这大概也是我们残存的激情的终点了。</p>
39`}},{path:`a-story-about-fantasy-star`,name:`/posts/a-story-about-fantasy-star`,component:()=>v(()=>import(`./a-story-about-fantasy-star.DbVgpoub.js`),__vite__mapDeps([46,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`我与幻星的故事`,tags:[`时光`,`社团`],categories:[`云游的小回忆`],date:`2017-07-21 23:40:46`,updated:`2017-07-21 23:40:46`,aplayer:!0,wordCount:`2.7k`,readingTime:11},layout:`post`,excerpt:``}},{path:`a-trip-to-nanjing-10th-contest`,name:`/posts/a-trip-to-nanjing-10th-contest`,component:()=>v(()=>import(`./a-trip-to-nanjing-10th-contest.B_h51VW-.js`),__vite__mapDeps([47,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`南京之旅-记10th计算机设计大赛`,tags:[`日记`,`时光`],categories:[`云游的小日记`],date:`2017-08-21 22:41:12`,updated:`2017-08-21 22:41:12`,wordCount:`1.4k`,readingTime:5},layout:`post`,excerpt:`<p>当踏上回程的G7053次高铁,我就知道这为期三天的南京之旅终于算落下帷幕了。</p>
40<p>总感觉大学三年去过的地方,比自己从小到大去过的地儿加起来还要多啊。</p>
41<p>此行自然不是为着旅游而去,虽说中途还是去了些景点,比如南京博物馆、中山陵什么的,但最终目的还是去参加那所谓的比赛了。</p>
42`}},{path:`a-try-about-watercolor-portrait`,name:`/posts/a-try-about-watercolor-portrait`,component:()=>v(()=>import(`./a-try-about-watercolor-portrait.3NvmB3Ec.js`),__vite__mapDeps([48,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`水彩原创头像尝试`,tags:[`作品`,`瞎鸡儿画`],categories:[`云游的小画册`],date:`2017-07-12 21:15:06`,updated:`2017-07-12 21:15:06`,wordCount:`111`,readingTime:1},layout:`post`,excerpt:``}},{path:`after-2nd-graduate-exam`,name:`/posts/after-2nd-graduate-exam`,component:()=>v(()=>import(`./after-2nd-graduate-exam.BV95sZtL.js`),__vite__mapDeps([49,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`卷土重来未可知`,date:`2018-12-24 16:52:24`,updated:`2018-12-24 16:52:24`,tags:[`日记`,`时光`,`中传`],categories:[`云游的小日记`],aplayer:!0,wordCount:`961`,readingTime:4},layout:`post`,excerpt:`<p><meting-js
43 id="668479"
44 server="netease"
45 type="song"
46 theme="#C20C0C">
47</meting-js></p>
48<blockquote>
49<p>
49永远相信美好的事情即将发生</p>
50</blockquote>
51`}},{path:`after-2nd-postgraduate-re-exam`,name:`/posts/after-2nd-postgraduate-re-exam`,component:()=>v(()=>import(`./after-2nd-postgraduate-re-exam.Cdc0-IjW.js`),__vite__mapDeps([50,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`北线无战事`,date:`2019-04-03 13:12:25`,updated:`2019-04-16 13:12:25`,tags:[`日记`,`时光`,`中传`],categories:[`云游的小日记`],aplayer:!0,wordCount:`1.5k`,readingTime:6},layout:`post`,excerpt:`<p><meting-js
52 id="520459951"
53 server="netease"
54 type="song"
55 theme="#C20C0C">
56</meting-js></p>
57<h2 id="前言" tabindex="-1">前言 <a class="header-anchor" href="#前言" aria-label="Permalink to &quot;前言&quot;">&ZeroWidthSpace;</a></h2>
58<p>垂死挣扎、孤注一掷、苟延残喘、困兽犹斗、破釜沉舟,亦或背水一战。
59我试图想了许多成语来形容本次的进京赶考,但终究略显偏颇。</p>
60<p>所有事由结束时,我如同《少女终末旅行》中千户和尤莉,终于爬到了城市的顶端,
61吃完了所剩的食物,喝完了全部的水,所能见到的却只是除了积雪外空空如也的世界。</p>
62<p>千户和尤莉没心没肺地打起雪仗来。
63自己则回想起,最后一次与朋友打雪仗或许是小学六年级的寒假。</p>
64<blockquote>
65<p>呐,这之后怎么办?
66总而言之,先吃吧……
67稍微睡一觉……
68这之后再考虑吧。</p>
69</blockquote>
70<p>说着这样的话,便依偎着睡去。</p>
71<p>所有的一切都显得微不足道,相对北京的人来人往与日出日落。
72然后不知名的文员与行人在报告与日记中写上,今天也是和平的一天。</p>
73<p>本周,北平无战事。</p>
74`}},{path:`after-entering-cuc`,name:`/posts/after-entering-cuc`,component:()=>v(()=>import(`./after-entering-cuc.CJZO6fuB.js`),__vite__mapDeps([51,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`路漫漫其修远兮`,date:`2019-09-18 20:16:08`,updated:`2019-10-02 00:55:08`,tags:[`日记`,`时光`,`中传`],categories:[`云游的小日记`],aplayer:!0,wordCount:`2.4k`,readingTime:9},layout:`post`,excerpt:`<p>不知不觉已入学研究生生涯仅一个月,期间自然又有许多波折,但随着时间也似乎淡忘了许多。
75在此回顾,引以为鉴。</p>
76<p><meting-js
77 id="2324438"
78 server="netease"
79 type="song"
80 theme="#C20C0C">
81</meting-js></p>
82`}},{path:`after-graduate-exam`,name:`/posts/after-graduate-exam`,component:()=>v(()=>import(`./after-graduate-exam.CPpm6kNJ.js`),__vite__mapDeps([52,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`永远相信美好的事情即将
82发生`,date:`2017-12-25 22:14:56`,updated:`2017-12-25 22:14:56`,tags:[`日记`,`时光`,`中传`],categories:[`云游的小日记`],wordCount:`1.1k`,readingTime:4},layout:`post`,excerpt:`<blockquote>
83<p>永远相信美好的事情即将发生</p>
84</blockquote>
85<p>最初看到这句话的时候,是在<a href="https://www.mi.com/" target="_blank" rel="noreferrer">小米</a>的宣传标语上,也就此让我形成了对小米的第一印象了。
86当然这句话最先是不是小米说出来的,尚不可考。但就我个人感受来说,我是很喜欢这句话的。</p>
87`}},{path:`ai-sfc`,name:`/posts/ai-sfc`,component:()=>v(()=>import(`./ai-sfc.B-IUW8FZ.js`),__vite__mapDeps([53,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`没有红包封面,但是 AI 春联……`,date:`2024-02-09 23:35:00`,updated:`2024-02-09 23:35:00`,tags:[`AI`,`项目`,`春联`],categories:[`项目`],wordCount:`1.1k`,readingTime:5},layout:`post`,excerpt:`<h2 id="ai-春联" tabindex="-1">AI 春联 <a class="header-anchor" href="#ai-春联" aria-label="Permalink to &quot;AI 春联&quot;">&ZeroWidthSpace;</a></h2>
88<p>开门见山,今年的整活是「AI 春联」~</p>
89<ul>
90<li>站点:<a href="https://ai-sfc.yunyoujun.cn/" target="_blank" rel="noreferrer">https://ai-sfc.yunyoujun.cn/</a></li>
91</ul>
92<blockquote>
93<p>根据你的提示词,自由地定制属于你的春联!</p>
94</blockquote>
95<div class="language-txt"><button title="Copy code" class="copy"></button><span class="lang">txt</span><pre class="shiki shiki-themes github-light github-dark vp-code" v-pre=""><code><span class="line"><span>    好运迎门</span></span>
96<span class="line"><span></span></span>
97<span class="line"><span>旧           新</span></span>
98<span class="line"><span>岁     口     年</span></span>
99<span class="line"><span>辞    口 口    喜</span></span>
100<span class="line"><span>别   口 乐 口   迎</span></span>
101<span class="line"><span>成    口 口    福</span></span>
102<span class="line"><span>绩     口     气</span></span>
103<span class="line"><span>斐           多</span></span></code></pre>
104<button class="code-block-unfold-btn"></button></div>`}},{path:`air-conditioner`,name:`/posts/air-conditioner`,component:()=>v(()=>import(`./air-conditioner.CVtOC66T.js`),__vite__mapDeps([54,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`云空调,便携小空调`,date:`2021-04-17 17:18:47`,updated:`2021-04-21 17:18:47`,tags:[`玩具`,`前端`,`React`],categories:[`云游的小项目`],wordCount:`1.3k`,readingTime:6},layout:`post`,excerpt:`<figure><a href="https://github.com/YunYouJun/air-conditioner/" target="_blank" rel="noreferrer"><img src="https://img.shields.io/github/stars/YunYouJun/air-conditioner?style=social" alt="GitHub Repo stars" loading="lazy" decoding="async"></a></figure>
105<h2 id="简介" tabindex="-1">简介 <a class="header-anchor" href="#简介" aria-label="Permalink to &quot;简介&quot;">&ZeroWidthSpace;</a></h2>
106<blockquote>
107<p>❄️ 云空调,便携小空调,为你的夏日带去清凉!</p>
108</blockquote>
109<p>这又是一个差不多两年前的坑。</p>
110<p>那么它能做什么呢?没错,<strong>随时随地</strong>打开空调。唯一的缺憾是,没有<strong>风</strong>。但我们也许可以「望空调止热」。</p>
111<ul>
112<li>GitHub: <a href="https://github.com/YunYouJun/air-conditioner/" target="_blank" rel="noreferrer">air-conditioner</a></li>
113<li>裸机: <a href="https://ac.yunyoujun.cn" target="_blank" rel="noreferrer">云空调</a></li>
114<li>样板房: <a href="https://www.yunyoujun.cn/air-conditioner-room/" target="_blank" rel="noreferrer">空调间</a></li>
115</ul>
116<p>遵从最宽松的 MIT 协议,你可以自行 <code>clone</code> 本项目,并自定义地构建它。当然也可以通过 <code>iframe</code> 的方式直接嵌入你的网站。</p>
117<div class="language-html"><button title="Copy code" class="copy"></button><span class="lang">html</span>
117<pre class="shiki shiki-themes github-light github-dark vp-code" v-pre=""><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">&#x3C;</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D">iframe</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0"> height</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">"700"</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0"> src</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">"https://ac.yunyoujun.cn"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">>&#x3C;/</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D">iframe</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">></span></span></code></pre>
118<button class="code-block-unfold-btn"></button></div><blockquote>
119<p>对了,最近因为小空调又火了起来。浮现出了许多去除页脚、售卖源码和冒名顶替的情况。</p>
120</blockquote>
121<p>MIT 协议虽然允许你以任何方式使用,但仍然规定署名作者,且原作者不承担代码使用后的风险。</p>
122<p>当然,国内并无法律承认开源协议,所以这更像是君子协定,各自问心无愧即可。</p>
123`}},{path:`always-like-this`,name:`/posts/always-like-this`,component:()=>v(()=>import(`./always-like-this.DrYm_U4O.js`),__vite__mapDeps([55,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`从来如此`,date:`2018-12-24 17:41:51`,updated:`2018-12-24 17:41:51`,tags:[`作品`,`小说`,`科幻`],categories:[`云游的小小说`,`短`],wordCount:`3.3k`,readingTime:12},layout:`post`,excerpt:`<blockquote>
124<p>无趣的草率之作</p>
125</blockquote>
126`}},{path:`as-summer-flowers`,name:`/posts/as-summer-flowers`,component:()=>v(()=>import(`./as-summer-flowers.C748Roag.js`),__vite__mapDeps([56,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`像夏花一样绚烂`,tags:[`日记`,`时光`,`中传`],categories:[`云游的小日记`],date:`2017-09-23 21:36:48`,updated:`2017-09-23 21:36:48`,aplayer:!0,wordCount:`825`,readingTime:4},layout:`post`,excerpt:`<!-- [网易云音乐 《生如夏花》 - 朴树](https://music.163.com/#/song?id=139357) -->
127<p><meting-js
128 id="5265370"
129 server="netease"
130 type="song"
131 theme="#C20C0C">
132</meting-js></p>
133`}},{path:`baidu-seo-about-github-pages`,name:`/posts/baidu-seo-about-github-pages`,component:()=>v(()=>import(`./baidu-seo-about-github-pages.DhDab3kJ.js`),__vite__mapDeps([57,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`让百度收录你的 GitHub Pages 博客`,date:`2019-03-03 21:52:57`,updated:`2019-03-03 21:52:57`,tags:[`GitHub`,`SEO`,`笔记`],categories:[`云游的小笔记`],wordCount:`563`,readingTime:3},layout:`post`,excerpt:`<h2 id="前言" tabindex="-1">前言 <a class="header-anchor" href="#前言" aria-label="Permalink to &quot;前言&quot;">&ZeroWidthSpace;</a></h2>
134<p>因为一些历史缘故,GitHub 拒绝了百度的爬虫检索。
135而这也导致托管在 GitHub 之上的博客无法被百度检索到。</p>
136<p>虽然标题是让百度收录你的 GitHub Pages 博客,但终究还是走了取巧的措施。</p>
137`}},{path:`blender-learn-note`,name:`/posts/blender-learn-note`,component:()=>v(()=>import(`./blender-learn-note.2Fs2vOuU.js`),__vite__mapDeps([58,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`Blender 学习笔记`,date:`2019-06-26 10:49:33`,updated:`2019-08-11 10:49:33`,tags:[`学习`,`笔记`,`Blender`],categories:[`云游的小笔记`],type:`yuque`,url:`https://www.yuque.com/yunyoujun/notes/blender`,wordCount:`43`,readingTime:1},layout:`post`,excerpt:``}},{path:`choose-your-testing-framework`,name:`/posts/choose-your-testing-framework`,component:()=>v(()=>import(`./choose-your-testing-framework.Bb0-6bkF.js`),__vite__mapDeps([59,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`2025年,如何选择你的测试框架?`,draft:!0,date:`2026-09-25T08:12:17.117Z`,updated:`2026-09-25T08:12:17.117Z`,wordCount:`18`,readingTime:1},layout:`post`,excerpt:``}},{path:`coc-dragon-boat-incident`,name:`/posts/coc-dragon-boat-incident`,component:()=>v(()=>import(`./coc-dragon-boat-incident.COQjPT20.js`),__vite__mapDeps([60,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`关于部落冲突的二三事儿(番外)-端午事变`,date:`2018-06-22 23:05:24`,updated:`2018-06-22 23:05:24`,tags:[`时光`,`部落`,`番外`],categories:[`云游的小回忆`,`关于部落冲突的二三事儿`],wordCount:`1.8k`,readingTime:7},layout:`post`,excerpt:`<p>回游已有不少时日,期间也发生过不少事情,虽然总裁也有在怂恿我去再写些什么,但却始终没有下定决心敲起键盘。</p>
138<p>但我想,这一次,大概不得不说了。</p>
139`}},{path:`coding-webide-dev-env`,name:`/posts/coding-webide-dev-env`,component:()=>v(()=>import(`./coding-webide-dev-env.BuLyrHlq.js`),__vite__mapDeps([61,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`Coding WebIDE 云端开发实验室`,tags:[`Web`,`分享`,`学习`],categories:[`云游的小安利`],date:`2017-10-11 16:21:12`,updated:`2017-10-11 16:21:12`,wordCount:`843`,readingTime:5},layout:`post`,excerpt:`<h2 id="intro" tabindex="-1">Intro <a class="header-anchor" href="#intro" aria-label="Permalink to &quot;Intro&quot;">&ZeroWidthSpace;</a></h2>
140<p>之前就有听说过 WebIDE , 不过一直没有去用。毕竟本地的开发也有许多便利,平时写写前端、php 之类的环境也挺方便配置,空间也不大。</p>
141`}},{path:`coolq-use-note`,name:`/posts/coolq-use-note`,component:()=>v(()=>import(`./coolq-use-note.C2rP6rAX.js`),__vite__mapDeps([62,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`酷 Q 使用笔记`,date:`2019-05-15 19:45:31`,updated:`2019-05-15 19:45:31`,tags:[`学习`,`笔记`,`CoolQ`],categories:[`云游的小笔记`],wordCount:`1.1k`,readingTime:7},layout:`post`,excerpt:`<blockquote>
142<p>2020-07-19
143因为 CoolQ 的繁琐和诸多限制,我已经弃用。所以该篇文章内容不会再更新。
144如果你有兴趣,可以尝试使用 <a href="https://github.com/mamoe/mirai" target="_blank" rel="noreferrer">mirai</a> (一个跨平台且轻量的 QQ 机器人库)。
145此外,我使用 JS/TS 编写了一个基于 mirai 的机器人框架 <a href="https://github.com/ElpsyCN/el-bot" target="_blank" rel="noreferrer">el-bot</a>,使其更易于使用与扩展,正处于持续开发维护中。
146More Info: <a href="https://www.yunyoujun.cn/posts/make-el-bot/" target="_blank" rel="noreferrer">el-bot &amp; mirai-ts 制作笔记</a></p>
147</blockquote>
148<h2 id="intro" tabindex="-1">Intro <a class="header-anchor" href="#intro" aria-label="Permalink to &quot;Intro&quot;">&ZeroWidthSpace;</a></h2>
149<p><a href="https://web2.qq.com/" target="_blank" rel="noreferrer">Webqq</a> 早已于 2019-01-01 起正式停止服务。</p>
150<p>那么以此为基础的 qq 机器人便全部失效。以前折腾的也已作废。</p>
151<ul>
152<li><a href="https://github.com/pandolia/qqbot" target="_blank" rel="noreferrer">qqbot</a></li>
153</ul>
154<p>因此,所剩的尚跨可靠的选择似乎只有 <a href="https://cqp.cc/" target="_blank" rel="noreferrer">酷 Q</a> 还说得过去。</p>
155<p>本文便用于记录配置过程中的坑。</p>
156`}},{path:`css-trap-note`,name:`/posts/css-trap-note`,component:()=>v(()=>import(`./css-trap-note.Cib2Nowr.js`),__vite__mapDeps([63,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`CSS 陷阱`,date:`2019-06-27 18:32:55`,updated:`2020-02-03 18:32:55`,tags:[`学习`,`笔记`,`CSS`],categories:[`云游的小笔记`],wordCount:`498`,readingTime:4},layout:`post`,excerpt:`<p>CSS 的奇妙 Bug</p>
157`}},{path:`death-and-rebirth-of-open-source-projects`,name:`/posts/death-and-rebirth-of-open-source-projects`,component:()=>v(()=>import(`./death-and-rebirth-of-open-source-projects.CHB65_P0.js`),__vite__mapDeps([64,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`开源项目的「死与新生」`,date:`2025-05-20`,updated:`2025-08-11`,categories:[`云游的小分享`],tags:[`开源`],wordCount:`7.6k`,readingTime:28},layout:`post`,excerpt:`<div  class="tip custom-block"><p class="custom-block-title">背景</p>
158<p>这是几个月前受司内开源办公室邀请所撰写的一篇关于开源的文章。</p>
159<p>
159近来也收到了一些咨询开源的邮件,特在此发出,也希望能为大家参与社区/公司开源提供一些帮助。</p>
160<p>其中包含了一些个人观点,可按需参考。如有谬误,欢迎指正。</p>
161</div>
162<h2 id="导语" tabindex="-1">导语 <a class="header-anchor" href="#导语" aria-label="Permalink to &quot;导语&quot;">&ZeroWidthSpace;</a></h2>
163<p>「<strong>生存还是毁灭?</strong>」这对开源项目来说也是个问题。</p>
164<blockquote>
165<p>「我曾见过那些你们人类不会置信的事。我曾目睹战舰在猎户座的边缘燃起烈火,我看过 C 射线在唐怀瑟之门边际的黑暗中明灭闪耀。所有这些瞬间,都会消逝在时间之中,一如眼泪消失在雨中。正是死期。」</p>
166</blockquote>
167<p>许多开发者早期带着一腔热血,加入到开源社区,无私地贡献代码。
168只是随着时间的流逝,政治、人员变更、技术迭代等种种因素接踵而至,许多开源项目最终逃脱不了的命运便是死亡。而我们所能做的便是尽可能地延缓它的死期。</p>
169<p>本文主要从作者自身视野出发,总结了一些关于项目开始与维护过程中,尽可能延长项目生命周期的个人经验。</p>
170`}},{path:`deepin-use-note`,name:`/posts/deepin-use-note`,component:()=>v(()=>import(`./deepin-use-note.RFuzsFe_.js`),__vite__mapDeps([65,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`Deepin 使用笔记`,date:`2019-04-29 18:23:47`,updated:`2019-04-29 18:23:47`,tags:[`学习`,`笔记`,`Linux`],categories:[`云游的小笔记`],wordCount:`710`,readingTime:4},layout:`post`,excerpt:`<p><a href="https://www.deepin.org/" target="_blank" rel="noreferrer">Deepin</a></p>
171<p>深度操作系统 - Linux 发行版</p>
172`}},{path:`discourse-forum`,name:`/posts/discourse-forum`,component:()=>v(()=>import(`./discourse-forum.BwPEIA4d.js`),__vite__mapDeps([66,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`Discourse 新一代开源论坛`,tags:[`分享`,`论坛`],categories:[`云游的小安利`],date:`2017-10-15 17:38:06`,updated:`2017-10-15 17:38:06`,wordCount:`598`,readingTime:3},layout:`post`,excerpt:`<p>平时搭建 xx 网站时,总会想添加个可供讨论的论坛,随后便是按着自己想要的功能瞎写,和真正全面实用的论坛功能要差很多。</p>
173<p>也查了查知道有诸如 <a href="http://www.discuz.net/forum.php" target="_blank" rel="noreferrer">Discuz</a> 、<a href="http://www.phpwind.net/" target="_blank" rel="noreferrer">phpwind</a> 之类的开源论坛可以使用,但是界面以及一些看着繁琐的功能着实不是自己喜欢的。</p>
174`}},{path:`draw-a-fool-goddess`,name:`/posts/draw-a-fool-goddess`,component:()=>v(()=>import(`./draw-a-fool-goddess.5IntEl0h.js`),__vite__mapDeps([67,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`临摹一只智障女神∠( ᐛ 」∠)_`,tags:[`作品`,`瞎鸡儿画`],categories:[`云游的小画册`],date:`2017-08-25 15:05:26`,updated:`2017-08-25 15:05:26`,wordCount:`102`,readingTime:1},layout:`post`,excerpt:`<h2 id="aqua" tabindex="-1">Aqua <a class="header-anchor" href="#aqua" aria-label="Permalink to &quot;Aqua&quot;">&ZeroWidthSpace;</a></h2>
175<p>断断续续画了好久,一开始临摹时画的是黑白色,后来用了颜色模式图层,进行了魔改上色…(2333)</p>
176<figure><img src="https://cdn.yunyoujun.cn/img/draw/konosuba-aqua.jpg" alt="阿库娅" loading="lazy" decoding="async"></figure>
177`}},{path:`eat-hot-pot-together`,name:`/posts/eat-hot-pot-together`,component:()=>v(()=>import(`./eat-hot-pot-together.DHxwcQbl.js`),__vite__mapDeps([68,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`大家一起吃火锅吧`,date:`2018-03-25 08:31:11`,updated:`2018-03-25 08:31:11`,tags:[`日记`,`时光`,`中传`],categories:[`云游的小日记`],wordCount:`1.4k`,readingTime:5},layout:`post`,excerpt:`<blockquote>
178<p>我讨厌「命运」这一个词
179出生 相遇 离别
180成功与失败
181人生之幸与不幸
182如果这是预先被命运所决定好的话
183我们究竟是为何而出生
184在富裕家庭里出生的孩子
185美丽的母亲所生的孩子
186在饥饿和战争中所出生的孩子
187如果这一切被称之为「命运」的话
188那所谓的神明真是蛮不讲理而又残酷
189从那时起我们便失去了所谓的未来
190我们只是清楚地明了我们将会一事无成这一件事
191-- <a href="https://movie.douban.com/subject/6085356/" target="_blank" rel="noreferrer">《回转企鹅罐》</a></p>
192</blockquote>
193`}},{path:`echo`,name:`/posts/echo`,component:()=>v(()=>import(`./echo.DKh2-qkp.js`),__vite__mapDeps([69,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`回声`,tags:[`作品`,`小说`,`科幻`],categories:[`云游的小小说`,`短`],date:`2017-02-04 16:09:11`,updated:`2017-02-04 16:09:11`,wordCount:`12k`,readingTime:41},layout:`post`,excerpt:``}},{path:`everyday-auto-xuexiqiangguo`,name:`/posts/everyday-auto-xuexiqiangguo`,component:()=>v(()=>import(`./everyday-auto-xuexiqiangguo.DKs4G8wH.js`),__vite__mapDeps([70,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`Everyday Auto Xuexiqiangguo`,date:`2019-05-16 21:
19351:55`,updated:`2019-05-16 21:51:55`,tags:[`学习`,`笔记`],categories:[`云游的小笔记`],wordCount:`362`,readingTime:3},layout:`post`,excerpt:`<p>You know what I mean.</p>
194`}},{path:`export-nideriji-and-import-1diary`,name:`/posts/export-nideriji-and-import-1diary`,component:()=>v(()=>import(`./export-nideriji-and-import-1diary.DJGLbp8o.js`),__vite__mapDeps([71,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`导出「你的日记」与导入「一本日记」`,date:`2019-01-31 16:38:03`,updated:`2020-08-05 16:38:03`,tags:[`笔记`],categories:[`云游的小笔记`],wordCount:`1.1k`,readingTime:7},layout:`post`,excerpt:`<h2 id="前言" tabindex="-1">前言 <a class="header-anchor" href="#前言" aria-label="Permalink to &quot;前言&quot;">&ZeroWidthSpace;</a></h2>
195<blockquote>
196<p>因为「你的日记」开发不是很活跃,且经常出现无法连接等 BUG,而本身也未提供导出功能,所以我写了该<a href="https://github.com/YunYouJun/export-nideriji/archive/master.zip" target="_blank" rel="noreferrer">工具</a>用于迁移至其他日记软件。
197此外因为我之后选择的是「一本日记」,所以也可以转换为「一本日记」的数据格式用于导入。
198我自己也已经成功迁移,所以该项目不会再维护,但如果你也有此需要,希望能对你有所帮助。</p>
199</blockquote>
200<p>GitHub: <a href="https://github.com/YunYouJun/export-nideriji" target="_blank" rel="noreferrer">export-nideriji</a></p>
201<p>具体使用方法见项目地址 README。</p>
202<p>原本我是想记录下整个导出思路的具体过程,然后跑去写脚本,打算写好再把文章补完,自己用完就咕咕咕了。</p>
203<p>所以这里大概只是一半的内容,阁下需要的话直接使用即可,文章应该也就此不会再更新了,</p>
204<p>差不多 2019 年 2 月便干了这事,今天终于决定彻底卸载。</p>
205`}},{path:`find-npy-social-account`,name:`/posts/find-npy-social-account`,component:()=>v(()=>import(`./find-npy-social-account.B97gzuPZ.js`),__vite__mapDeps([72,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`如何找到你朋友的社交账号`,date:`2020-11-12 11:46:38`,updated:`2020-12-12 00:03:00`,tags:[`爬虫`,`目标检测`,`脚本`,`朋友`],categories:[`云游的小日记`],aplayer:!0,wordCount:`4.9k`,readingTime:24},layout:`post`,excerpt:`<blockquote>
206<p><a href="https://zh.wikipedia.org/wiki/A%E9%9D%A2%E8%88%87B%E9%9D%A2" target="_blank" rel="noreferrer">A 面与 B 面</a>(英语:A-side 和 B-side)是流行音乐业界术语,于 1950 年代开始常用,原本指出版的 7 英寸黑胶唱片(必须是单曲)的两面。现在 A 面和 B 面通常用来辨别歌曲的重要度——放在 A 面的歌曲为主打歌,歌手会期望这些歌经常在电台等传媒渠道曝光;放在 B 面的歌曲则属于次要或附加歌目。</p>
207</blockquote>
208<h2 id="前奏" tabindex="-1">前奏 <a class="header-anchor" href="#前奏" aria-label="Permalink to &quot;前奏&quot;">&ZeroWidthSpace;</a></h2>
209<p>前些日子,其实就是咱考完教师证(10.31)的第二天,便要前往出差。</p>
210<blockquote>
211<p><a href="https://www.yunyoujun.cn/posts/try-to-become-a-teacher/" target="_blank" rel="noreferrer">关于我打算当老师并报考教师资格证这件事</a></p>
212</blockquote>
213<p>晚间也成功地错过了万圣节。但想来这种现充的节日,也本就与我无缘。故也无从惋惜。</p>
214<p>尽管是流水账,但勉强作为日记记录下来,以作为引入正题的前言。</p>
215<blockquote>
216<p>「<a href="https://movie.douban.com/subject/26935251/" target="_blank" rel="noreferrer">春宵苦短,少女前进吧!</a>」</p>
217</blockquote>
218`}},{path:`gaussian-blur-for-image`,name:`/posts/gaussian-blur-for-image`,component:()=>v(()=>import(`./gaussian-blur-for-image.Fs2Q3jNd.js`),__vite__mapDeps([73,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`写写高斯模糊——从 CSS 模糊滤镜的白边说起`,date:`2020-10-18 22:04:45`,updated:`2020-10-22 22:04:45`,katex:!0,tags:[`高斯模糊`,`Canvas`,`CSS`],categories:[`云游的小笔记`],wordCount:`3.7k`,readingTime:20},layout:`post`,excerpt:`<h2 id="前言" tabindex="-1">前言 <a class="header-anchor" href="#前言" aria-label="Permalink to &quot;前言&quot;">&ZeroWidthSpace;</a></h2>
219<p>通常我们可以很容易地使用 PhotoShop 中的「高斯模糊」来模糊图片。</p>
220<p>这也是一种很好的艺术效果,苹果惯用的毛玻璃效果本质便是高斯模糊,而我们将图片模糊后作为网站背景,既减小了图片的体积,也能别有一番风味。(譬如咱站点的背景也是高斯模糊后的产物。)</p>
221<figure><img src="https://cos.yunle.fun/images/photoshop-gaussian-blur.jpg" alt="Gaussian Blur | Photoshop" loading="lazy" decoding="async"></figure>
222<p>而 CSS3 提供了滤镜 <a href="https://developer.mozilla.org/zh-CN/docs/Web/CSS/filter" target="_blank" rel="noreferrer">filter</a>/<a href="https://developer.mozilla.org/zh-CN/docs/Web/CSS/backdrop-filter" target="_blank" rel="noreferrer">backdrop-filter</a>,其中的模糊功能同样也是高斯模糊。(Canvas 中的 <a href="https://developer.mozilla.org/zh-CN/docs/Web/API/CanvasRenderingContext2D/filter" target="_blank" rel="noreferrer">filter</a> 亦是如此。)</p>
223<p>只是当我们为图片背景添加 CSS 滤镜时,便会出现不和谐的白边。</p>
224<p>虽然有一些奇技淫巧(比如放大图片再截去模糊的边)去解决,但皆治标不治本,我们不妨借此机会探究一下高斯模糊,并尝试自己实现它。</p>
225<p>正文<strong>多图预警</strong></p>
226`}},{path:`git-learn-note`,name:`/posts/git-learn-note`,component:()=>v(()=>import(`./git-learn-note.CaQtPxo9.js`),__vite__mapDeps([74,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`Git 学习笔è
226®°`,tags:[`学习`,`笔记`,`Git`],categories:[`云游的小笔记`],date:`2017-08-21 16:46:13`,updated:`2020-02-03 16:46:13`,type:`yuque`,url:`https://www.yuque.com/yunyoujun/notes/git-learn-note`,wordCount:`45`,readingTime:1},layout:`post`,excerpt:``}},{path:`give-me-money`,name:`/posts/give-me-money`,component:()=>v(()=>import(`./give-me-money.D32XWTOn.js`),__vite__mapDeps([75,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`YunYouJun/give-me-money`,date:`2017-12-26 18:22:28`,updated:`2020-04-14 18:22:28`,tags:[`GitHub`,`沙雕`,`分享`],categories:[`云游的小项目`],type:`github`,url:`https://github.com/YunYouJun/give-me-money`,wordCount:`259`,readingTime:2},layout:`post`,excerpt:`<h2 id="一个沙雕钓鱼网站" tabindex="-1"><a href="https://gmm.yunyoujun.cn/" target="_blank" rel="noreferrer">一个沙雕钓鱼网站</a> <a class="header-anchor" href="#一个沙雕钓鱼网站" aria-label="Permalink to &quot;[一个沙雕钓鱼网站](https://gmm.yunyoujun.cn/)&quot;">&ZeroWidthSpace;</a></h2>
227<p>该项目<strong>仅作娱乐</strong>,博君一笑,您<strong>无须填写任何相关真实信息</strong>。
228如果您不能理解笑点,不必强求。(网页声音预警,以防社会性死亡。)</p>
229<hr>
230<p>这是自己几年前 Parcel 刚出的时候,写<a href="https://yunyoujun.cn/posts/vue-parcel-demo/" target="_blank" rel="noreferrer">「Parcel.js + Vue 搭建笔记」</a>,拿来练手的小玩意儿。
231所以代码很丑,也没做啥后端校验。 因为之前 API 次数被人恶意刷完了,所以重置了数据,现在加了邮箱验证才能提交。</p>
232<p>大家乐呵乐呵完事了,我本身也是白嫖的 <a href="https://www.leancloud.cn/" target="_blank" rel="noreferrer">LeanCloud</a> 的开发版,刷数据最多也就到 LeanCloud 的每日上限。</p>
233<p>如果你真的心动,并想要打钱,可以考虑捐给 <a href="https://www.unicef.cn/" target="_blank" rel="noreferrer">联合国儿童基金会</a>。</p>
234`}},{path:`hamster`,name:`/posts/hamster`,component:()=>v(()=>import(`./hamster.L4-cxLSa.js`),__vite__mapDeps([76,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`仓鼠`,tags:[`作品`,`小说`,`科幻`],categories:[`云游的小小说`,`短`],date:`2017-02-11 23:10:10`,updated:`2017-02-11 23:10:10`,wordCount:`5.2k`,readingTime:18},layout:`post`,excerpt:``}},{path:`hana-saku-iroha-weiwei-bonboru`,name:`/posts/hana-saku-iroha-weiwei-bonboru`,component:()=>v(()=>import(`./hana-saku-iroha-weiwei-bonboru.A9Yz3Xcu.js`),__vite__mapDeps([77,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`【花开物语|MAD】幹物女(WeiWei)-Bonboru!`,tags:[`MAD`,`动画`,`分享`],categories:[`云游的小视频`],date:`2017-01-22 18:24:48`,updated:`2020-02-9 18:24:48`,type:`bilibili`,url:`https://www.bilibili.com/video/av8153395/`,wordCount:`48`,readingTime:1},layout:`post`,excerpt:``}},{path:`hexo-build-note`,name:`/posts/hexo-build-note`,component:()=>v(()=>import(`./hexo-build-note.BLtMEMic.js`),__vite__mapDeps([78,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`Hexo 静态博客搭建笔记`,tags:[`分享`,`学习`,`笔记`],categories:[`云游的小笔记`],date:`2017-10-13 12:40:32`,updated:`2017-02-02 12:40:32`,wordCount:`809`,readingTime:5},layout:`post`,excerpt:`<blockquote>
235<p>2022.12.15 抛弃 Hexo,转向了 <a href="https://github.com/YunYouJun/valaxy" target="_blank" rel="noreferrer">valaxy</a>。</p>
236</blockquote>
237<blockquote>
238<p>Wordpress 你放心,我暂时是不会抛弃你的。
2392017.12.11 正式抛弃 2333</p>
240</blockquote>
241<hr>
242<h2 id="intro" tabindex="-1">Intro <a class="header-anchor" href="#intro" aria-label="Permalink to &quot;Intro&quot;">&ZeroWidthSpace;</a></h2>
243<p><a href="https://hexo.io/" target="_blank" rel="noreferrer">Hexo</a>:快速、简洁且高效的博客框架</p>
244`}},{path:`hexo-theme-yun-strato`,name:`/posts/hexo-theme-yun-strato`,component:()=>v(()=>import(`./hexo-theme-yun-strato.DjP4NpT5.js`),__vite__mapDeps([79,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`Strato - Hexo 主题「Yun」版本宣传 PV`,date:`2020-08-28 22:00:00`,updated:`2020-08-28 22:00:00`,tags:[`分享`,`Hexo`,`主题`],categories:[`云游的小安利`],type:`bilibili`,url:`https://www.bilibili.com/video/BV17t4y1S7tz`,wordCount:`262`,readingTime:2},layout:`post`,excerpt:`<p>为主题 <a href="https://github.com/YunYouJun/hexo-theme-yun" target="_blank" rel="noreferrer">hexo-theme-yun</a> v1.0 Strato 做的宣传 PV ~(<s>也许是第一个有 PV 的 Hexo 主题?</s>)</p>
245<blockquote>
246<p>谢谢你喜欢我的主题!</p>
247</blockquote>
248<p>当我第一次听说要做主题的宣传 PV 我是拒绝的,因为,不能你让我发 1.0,我就马上去发,第一我要试一下,因为我不愿意做完了以后再加一些特技上去,主题 Duang 一下,很亮、很柔,这样用户一定会骂我,根本没有这样的主题,就证明上面那个是假的。</p>
249<p>
249后来我也不断在修 BUG,我自己用了大概一年左右,感觉还不错,后来我在做 PV 的时候也尽量不加特技,因为我要让用户看到,我用完之后是这个样子,你们用完之后也会是这个样子!</p>
250`}},{path:`home-firework-red-bag`,name:`/posts/home-firework-red-bag`,component:()=>v(()=>import(`./home-firework-red-bag.B9b5O1yA.js`),__vite__mapDeps([80,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`家·烟花·红包封面`,date:`2023-01-21 06:08:46`,updated:`2023-01-22 22:51:46`,categories:[`云游的小日记`],tags:[`小云`],wordCount:`2.3k`,readingTime:9},layout:`post`,excerpt:`<blockquote>
251<p>🏠家,🎆烟花和🧧红包封面
252原文:<a href="https://mp.weixin.qq.com/s/XwyrAQ0cQBPaLSgQQLfXWw" target="_blank" rel="noreferrer">https://mp.weixin.qq.com/s/XwyrAQ0cQBPaLSgQQLfXWw</a></p>
253</blockquote>
254<p>新的一年即将到来。</p>
255<blockquote>
256<p>但是……很不幸,时间的流逝永远不会停止。
257时光如箭,你的过去在不停增多,你的未来在不断减少,未知的可能性只会越来越少,而无法改变的后悔在累积如山。
258你明白了吗?</p>
259</blockquote>
260`}},{path:`how-much-3d-format`,name:`/posts/how-much-3d-format`,component:()=>v(()=>import(`./how-much-3d-format.BptIJKbH.js`),__vite__mapDeps([81,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`【转】三维文件格式知多少`,date:`2019-10-30 16:01:46`,updated:`2019-10-30 16:01:46`,tags:[`3D`,`分享`,`转载`],categories:[`云游的小安利`],wordCount:`2.9k`,readingTime:13},layout:`post`,excerpt:`<p>三维文件格式知多少 | abc、glTF、fbx、obj、dae、stl、3ds...</p>
261<blockquote>
262<p>文章来源: 饼干教育
263原文链接: <a href="https://www.bgteach.com/article/132" target="_blank" rel="noreferrer">https://www.bgteach.com/article/132</a></p>
264</blockquote>
265`}},{path:`how-to-build-your-site`,name:`/posts/how-to-build-your-site`,component:()=>v(()=>import(`./how-to-build-your-site.D_lTOlGd.js`),__vite__mapDeps([82,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`教你如何从零开始搭建一个属于自己的网站`,date:`2020-03-05 01:31:08`,updated:`2021-07-14 16:31:00`,tags:[`教程`,`Hexo`,`分享`],categories:[`云游的小安利`],wordCount:`7.9k`,readingTime:36},layout:`post`,excerpt:`<blockquote>
266<p>写给想要拥有一个自己的网站但没有资金成本的小白与曾经的自己。</p>
267</blockquote>
268<h2 id="前言" tabindex="-1">前言 <a class="header-anchor" href="#前言" aria-label="Permalink to &quot;前言&quot;">&ZeroWidthSpace;</a></h2>
269<p>虽说是网站,对于个人来说,或许一般叫作博客。
270但我不希望它仅仅是一个博客,而是能够成为一个处于自己现实生活之外、自由、实验、不用畏惧他人眼光甚至可以独断专行的地方。</p>
271`}},{path:`how-to-realize-badge-rotation`,name:`/posts/how-to-realize-badge-rotation`,component:()=>v(()=>import(`./how-to-realize-badge-rotation.cxwUj90D.js`),__vite__mapDeps([83,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`旋转吧!徽章!`,date:`2021-09-05 21:46:11`,updated:`2021-09-19 21:46:11`,tags:[`蚂蚁森林`,`徽章`,`动画`],categories:[`云游的小笔记`],katex:!0,wordCount:`3.6k`,readingTime:16},layout:`post`,excerpt:`<p>如何实现一个徽章惯性旋转动画?</p>
272<blockquote>
273<p>标题我只能说:懂得都懂。<a href="https://www.zhihu.com/question/393670234" target="_blank" rel="noreferrer">如何评价「懂的都懂」这句话?|知乎</a></p>
274</blockquote>
275<h2 id="前言" tabindex="-1">前言 <a class="header-anchor" href="#前言" aria-label="Permalink to &quot;前言&quot;">&ZeroWidthSpace;</a></h2>
276<p>距离上一次写技术文章过去了多久呢?大概已经屈指不可数了。
277与此前相比,无论心境还是境遇也都变化了许多,而我本打算记录的实习生涯还未动笔,便已接近尾声。但愿还有机会一叙。</p>
278<p>在家中慵懒地躺了数日,自觉不应继续如此,方翻了个身,决定将此文修整完,以略表奋发之意。
279总之,也由衷地希望大家能从中学习到什么或是给我一些更好的改进建议。</p>
280<p>那么,……,先旋转起来吧?</p>
281`}},{path:`how-to-write-a-web-component`,name:`/posts/how-to-write-a-web-component`,component:()=>v(()=>import(`./how-to-write-a-web-component.BgmtUl-I.js`),__vite__mapDeps([84,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`从零开始写一个 Web Component - GitHub Corners`,date:`2021-09-25 18:27:37`,updated:`2021-11-11 18:27:37`,tags:[`Web Components`,`lit`,`GitHub`],categories:[`云游的小教程`],wordCount:`3.5k`,readingTime:18},layout:`post`,excerpt:`<h2 id="web-components" tabindex="-1">Web Components <a class="header-anchor" href="#web-components" aria-label="Permalink to &quot;Web Components&quot;">&ZeroWidthSpace;</a></h2>
282<p>什么是 Web Components?</p>
283<blockquote>
284<p>Web Components 是一套不同的技术,允许您创建可重用的定制元素(它们的功能封装在您的代码之外)并且在您的 web 应用中使用它们。</p>
285</blockquote>
286<p>Web Components 实际上和现在 React/Vue 等前端框架的组件概念十分相似,或者倒不如说 Vue 的 SFC(单文件ç
286»„件)其实正是借鉴自 Web Components 的概念。
287它本身 Shadow DOM 的方案做了 CSS 隔离,很好地解决了 CSS 命名污染等问题,但 Web Components 除了规范推进缓慢,也还有很多开发(效率、生态、兼容等)上的不足。</p>
288<p>简单来说 Web Components 其实就好比给予你一些浏览器的 API 权限,去定义一个 HTML 标签来自己使用。
289更多的介绍其实看 MDN 的介绍即可,也无需在这听我这二手的长篇大论。</p>
290<blockquote>
291<p><a href="https://developer.mozilla.org/zh-CN/docs/Web/Web_Components" target="_blank" rel="noreferrer">Web Components | MDN</a></p>
292</blockquote>
293<p>我自己本身也向来讨厌<strong>通篇</strong>理论,而热衷实践,所以我们不妨动手一试,写一个<strong>真正实用</strong>的 Web Component - <code>github-corners</code>。(成果请到文章末尾取用)</p>
294`}},{path:`html5-canvas-nest-js`,name:`/posts/html5-canvas-nest-js`,component:()=>v(()=>import(`./html5-canvas-nest-js.DeqH-rgs.js`),__vite__mapDeps([85,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`【分享】网页背景效果插件 Canvas-Nest.js`,tags:[`分享`,`前端`],categories:[`云游的小安利`],date:`2017-01-23 21:04:48`,updated:`2017-01-23 21:04:48`,wordCount:`261`,readingTime:2},layout:`post`,excerpt:`<p>一个基于 HTML5 Canvas 绘制的网页背景效果。</p>
295<h2 id="github" tabindex="-1">Github <a class="header-anchor" href="#github" aria-label="Permalink to &quot;Github&quot;">&ZeroWidthSpace;</a></h2>
296<ul>
297<li><a href="https://github.com/hustcc/canvas-nest.js" target="_blank" rel="noreferrer">canvas-nest.js</a></li>
298<li><a href="https://git.hust.cc/canvas-nest.js" target="_blank" rel="noreferrer">预览效果</a></li>
299</ul>
300`}},{path:`i-am-er-ci-yuan-and-try-to-prove`,name:`/posts/i-am-er-ci-yuan-and-try-to-prove`,component:()=>v(()=>import(`./i-am-er-ci-yuan-and-try-to-prove.DFZD1eam.js`),__vite__mapDeps([86,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`👴就是二次元,故尝试证明。`,date:`2020-03-06 23:12:37`,updated:`2020-03-06 23:12:37`,tags:[`分享`,`动画`,`漫画`,`随笔`],categories:[`云游的小安利`],wordCount:`2k`,readingTime:8},layout:`post`,excerpt:`<h2 id="引言" tabindex="-1">引言 <a class="header-anchor" href="#引言" aria-label="Permalink to &quot;引言&quot;">&ZeroWidthSpace;</a></h2>
301<p>两口气看完「<a href="https://www.bilibili.com/bangumi/play/ep307476" target="_blank" rel="noreferrer">理科生坠入情网,故尝试证明。</a>」这部番时,我便想着写个观后感吧。添加到 Todo 列表后,便因为各种杂事和惰性,一拖再拖,抛之脑后。
302导致现在回过头来,当初的回味几乎所剩无几。</p>
303`}},{path:`i-and-town-and-home`,name:`/posts/i-and-town-and-home`,component:()=>v(()=>import(`./i-and-town-and-home.BX02Y4BZ.js`),__vite__mapDeps([87,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`我与小镇与家`,date:`2020-08-15 06:00:00`,updated:`2020-09-06 05:00:00`,tags:[`回忆`,`小镇`,`家`],categories:[`云游的小随笔`],katex:!0,wordCount:`6k`,readingTime:22},layout:`post`,excerpt:`<blockquote>
304<p>2013-05-14
305今日一位同学过生日,收到了很多礼物。想一想,要是我的话,也没有同学会知道我的生日吧。就像我也不知道他们的生日。
306—— 我的一位朋友的青春~~疼痛(中二)~~日记</p>
307</blockquote>
308<p>正如标题,我决定在鄙人生日这天(<s>实为早便想写,却拖到现今,甚至于鸽了自己</s>),写一写自己与我生活的小镇与我的家,并试图回首 23 年与之相伴的人生,揣度未来。</p>
309<p>但到真强逼着自己去写时,反倒无感而发,一停下来,便又浮想联翩。所以最终估摸也只是毫无章法的碎碎念。</p>
310`}},{path:`laravel-use-note`,name:`/posts/laravel-use-note`,component:()=>v(()=>import(`./laravel-use-note.Cu_B5FUf.js`),__vite__mapDeps([88,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`Laravel 使用笔记`,tags:[`PHP`,`学习`,`Laravel`],categories:[`云游的小笔记`],date:`2017-08-21 16:26:58`,updated:`2017-08-21 16:26:58`,wordCount:`613`,readingTime:4},layout:`post`,excerpt:`<p>Laravel 框架使用过程中的一些笔记。</p>
311`}},{path:`latex-use-note`,name:`/posts/latex-use-note`,component:()=>v(()=>import(`./latex-use-note.CwYOt6Ti.js`),__vite__mapDeps([89,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`LaTeX 使用笔记`,date:`2019-10-21 14:16:18`,updated:`2019-10-21 14:16:18`,tags:[`LaTeX`,`笔记`,`学习`],categories:[`云游的小笔记`],type:`yuque`,url:`https://www.yuque.com/yunyoujun/notes/latex-use-note`,wordCount:`45`,readingTime:1},layout:`post`,excerpt:``}},{path:`life-and-work`,name:`/posts/life-and-work`,component:()=>v(()=>import(`./life-and-work.BDQNVlUA.js`),__vite__mapDeps([90,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`鱼与熊掌`,tags:[`随笔`,`中传`],categories:[`云游的小随笔`],date:`2017-12-11 13:10:05`,updated:`2017-12-11 13:10:05`,wordCount:`1.4k`,readingTime:6},layout:`post`,excerpt:`<blockquote>
312<p>鱼,我所欲也,熊掌亦我所欲也;二者不可得兼,舍鱼而取熊掌者也。 ——孟子《鱼我所欲也》</p>
313</blockquote>
314<p>有时候生活与工作也许就像鱼和熊掌一般,(来自一名没有丝毫工作经验的普通学生感慨),但我仿佛看得到未来某一刻的自己埋头在漫无边际的代码里,抓耳挠腮,捶胸顿足,做着自己并非完全喜欢的工作。</p>
315`}},{path:`life-is-not-a-marathon`,name:`/posts/life-is-not-a-marathon`,component:()=>v(()=>import(`./life-is-not-a-marathon.BZlT7ZG_.js`),__vite__mapDeps([91,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`人生不是一场马拉松`,date:`2020-04-04 14:59:58`,updated:`2020-04-04 14:59:58`,tags:[`日记`,`随笔`],categories:[`云游的小日记`],wordCount:`4.4k`,readingTime:17},layout:`post`,excerpt:`<blockquote>
316<p>
316今天也继续跑着,每个人都是跑者,时钟无法暂停,时间往前不停流逝,这是一场不能回头的马拉松比赛。
317边跟对手竞争着,边在时间洪流这条直路上跑着,想比别人跑得更快,相信前方有美好未来,相信一定有终点,人生是一场马拉松。
318……
319但真是如此吗?</p>
320</blockquote>
321`}},{path:`make-an-avg-engine`,name:`/posts/make-an-avg-engine`,component:()=>v(()=>import(`./make-an-avg-engine.Ban5oqNL.js`),__vite__mapDeps([92,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`ADV 游戏引擎计划`,date:`2020-09-28 19:33:17`,updated:`2020-09-28 19:33:17`,tags:[`前端`,`Vue`,`ADV`,`AVG`],categories:[`云游的小项目`],wordCount:`3.2k`,readingTime:15},layout:`post`,excerpt:`<p>ADV.JS 又一个遥遥无期的大坑。</p>
322<blockquote>
323<p>GitHub: <a href="https://github.com/YunYouJun/advjs" target="_blank" rel="noreferrer">https://github.com/YunYouJun/advjs</a>
324Demo: <a href="https://advjs.elpsy.cn" target="_blank" rel="noreferrer">https://advjs.elpsy.cn</a></p>
325</blockquote>
326<h2 id="前言" tabindex="-1">前言 <a class="header-anchor" href="#前言" aria-label="Permalink to &quot;前言&quot;">&ZeroWidthSpace;</a></h2>
327<p>按照惯例,开坑前先来三问。是什么?为什么?怎么做?</p>
328`}},{path:`make-el-bot`,name:`/posts/make-el-bot`,component:()=>v(()=>import(`./make-el-bot.DYmFPASP.js`),__vite__mapDeps([93,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`el-bot & mirai-ts 制作笔记`,date:`2020-06-22 02:16:53`,updated:`2020-08-20 20:16:53`,tags:[`项目`,`笔记`,`分享`,`GitHub`],categories:`云游的小笔记`,wordCount:`3.6k`,readingTime:16},layout:`post`,excerpt:`<p><a href="https://github.com/YunYouJun/mirai-ts" target="_blank" rel="noreferrer">mirai-ts</a> 是 <a href="https://github.com/mamoe/mirai-api-http" target="_blank" rel="noreferrer">mirai-api-http</a> 的 TypeScript/JavaScript SDK。
329<a href="https://github.com/ElpsyCN/el-bot" target="_blank" rel="noreferrer">el-bot</a> 是一个基于 <a href="https://github.com/YunYouJun/mirai-ts" target="_blank" rel="noreferrer">mirai-ts</a> 使用 TypeScript/JavaScript 编写,可配置、可自定义插件的 QQ 机器人。</p>
330<ul>
331<li>GitHub: <a href="https://github.com/YunYouJun/mirai-ts" target="_blank" rel="noreferrer">mirai-ts</a></li>
332<li>GitHub: <a href="https://github.com/ElpsyCN/el-bot" target="_blank" rel="noreferrer">el-bot</a></li>
333<li>Docs: <a href="https://yunyoujun.github.io/mirai-ts/" target="_blank" rel="noreferrer">mirai-ts API 文档</a></li>
334<li>Docs: <a href="https://docs.bot.elpsy.cn/" target="_blank" rel="noreferrer">el-bot 文档</a></li>
335</ul>
336<p>el-bot 展示了整个 mirai-ts 的使用流程,并内置了一些如自动应答、转发、命令行、RSS 等常用功能(默认插件),开箱即用。
337你只需要一些自定义的配置,而不再需要编写繁琐的脚本内容。
338但这并不是束缚,在插件系统中你仍然可以调用机器人所有的上下文,并通过编写插件的形式快速实现你想要的功能。</p>
339<p>照例只是非正经开发日志的历程记录。</p>
340`}},{path:`make-hexo-theme-yun`,name:`/posts/make-hexo-theme-yun`,component:()=>v(()=>import(`./make-hexo-theme-yun.t4kfyPEM.js`),__vite__mapDeps([94,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`hexo-theme-yun 制作笔记`,date:`2019-04-27 12:00:00`,updated:`2020-09-01 20:00:00`,tags:[`项目`,`笔记`,`分享`,`GitHub`],categories:[`云游的小笔记`],wordCount:`3.7k`,readingTime:18},layout:`post`,excerpt:`<p>Hexo-Theme-Yun 绝赞开发中~</p>
341<!-- ![GitHub stars](https://img.shields.io/github/stars/YunYouJun/hexo-theme-yun?style=social) -->
342<ul>
343<li>GitHub: <a href="https://github.com/YunYouJun/hexo-theme-yun" target="_blank" rel="noreferrer">https://github.com/YunYouJun/hexo-theme-yun</a></li>
344<li>Docs: <a href="https://yun.yunyoujun.cn" target="_blank" rel="noreferrer">https://yun.yunyoujun.cn</a></li>
345<li>Example: <a href="https://www.yunyoujun.cn" target="_blank" rel="noreferrer">https://www.yunyoujun.cn</a></li>
346<li>
346PV: <a href="https://www.bilibili.com/video/BV17t4y1S7tz" target="_blank" rel="noreferrer">Strato - Hexo 主题「Yun」版本宣传 PV</a></li>
347</ul>
348<h2 id="前言" tabindex="-1">前言 <a class="header-anchor" href="#前言" aria-label="Permalink to &quot;前言&quot;">&ZeroWidthSpace;</a></h2>
349<p>还在用 <code>WordPress</code> 的时候,总是喜新厌旧,经常换主题。且装了一堆插件,速度慢还容易崩。
350而迁移到 <code>Hexo</code> 之后(小水管服务器太慢,拿去挂 MC 了。<s>根本原因是没钱</s>),光是 <code>hexo-theme-next</code> 的配置项,便让我花了好一番功夫。
351导致觉得自己不一直用下去,感到十分对不起仔细一个一个配置过来的自己。</p>
352<p>当然,还是改不了喜新厌旧的毛病。加之 next 主题过于广泛,显得自己泯然众人。心中颇有愤懑。(<s>虽然本就如此</s>)</p>
353<p>而如今,诸事已毕,终于腾出空来。
354便决定开发一款属于自己的主题。</p>
355`}},{path:`memory-about-summer-camp`,name:`/posts/memory-about-summer-camp`,component:()=>v(()=>import(`./memory-about-summer-camp.C0NIxSd2.js`),__vite__mapDeps([95,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`来自某夏令营的回忆`,tags:[`中传`,`日记`,`时光`],categories:[`云游的小日记`],date:`2017-07-18 21:01:30`,updated:`2017-07-18 21:01:30`,wordCount:`3.5k`,readingTime:13},layout:`post`,excerpt:``}},{path:`methods-for-inverse-kinematics`,name:`/posts/methods-for-inverse-kinematics`,component:()=>v(()=>import(`./methods-for-inverse-kinematics.DOZVAvGc.js`),__vite__mapDeps([96,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`使用 CCDIK 或 FABRIK 实现逆向动力学`,date:`2020-01-14 22:16:27`,updated:`2020-01-14 22:16:27`,tags:[`学习`,`笔记`,`计算机图形学`],categories:[`云游的小笔记`],wordCount:`662`,readingTime:5},layout:`post`,excerpt:``}},{path:`migrate-from-valine-to-disqus`,name:`/posts/migrate-from-valine-to-disqus`,component:()=>v(()=>import(`./migrate-from-valine-to-disqus.D3D0KUyg.js`),__vite__mapDeps([97,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`如何从 Valine 迁移至 Disqus`,date:`2020-10-03 15:09:13`,updated:`2020-10-06 15:09:13`,tags:[`Disqus`,`Valine`],categories:[`云游的小笔记`],wordCount:`1.2k`,readingTime:6},layout:`post`,excerpt:`<p>此前我在 <a href="https://www.yunyoujun.cn/posts/third-party-comment-system/" target="_blank" rel="noreferrer">第三方评论系统之我见</a> 中简要对比了使用过的一些评论系统,但仍旧没有得出一个尽善尽美的方案。</p>
356<p>我很长一段时间评论系统都是使用的 Valine,但因为后来博客第一次收到了一些<a href="https://twitter.com/YunYouJun/status/1310547458997415936" target="_blank" rel="noreferrer">不友好的评论</a>,以至于我有一瞬间地冲动想要从 Valine 彻底迁移到 Disqus。</p>
357<p>但是 Valine 本身加载速度确实很快,用着也挺好,且文章的访问量统计也依赖于此。又实在没有办法下定决心切换至 Disqus。</p>
358<blockquote>
359<p>「任何可以用 JavaScript 编写的应用程序最终都将用 JavaScript 编写。」
360In 2007, Jeff Atwood made the quote that was popularly referred to as Atwood's Law: “Any application that can be written in JavaScript, will eventually be written in JavaScript.”</p>
361</blockquote>
362<p>看到许多小伙伴们最终都选择了 Disqus。</p>
363<blockquote>
364<p>任何带有评论系统的独立博客最终都将使用 Disqus 评论。
365——我瞎说的</p>
366</blockquote>
367<p>也许终有一天,我确实会彻底从 Valine 切换至 Disqus,那么过去大家留下的评论便就此抛弃吗?又着实有些不忍心。</p>
368<p>若能将 Valine 中的评论导出并很方便地将其导入 Disqus,那么在决定切换至 Disqus 之前,我都可以放心地使用 Valine。</p>
369<figure><img src="https://cos.yunle.fun/images/make-one-for-me-too.jpg" alt="给我也整一个!" loading="lazy" decoding="async"></figure>
370`}},{path:`my-total-war-the-fairy-road`,name:`/posts/my-total-war-the-fairy-road`,component:()=>v(()=>import(`./my-total-war-the-fairy-road.CTXK27yf.js`),__vite__mapDeps([98,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`我的全面战争`,draft:!0,date:`2024-12-24 07:00`,categories:[`云游的小日记`],tags:[`战争`],updated:`2024-12-24 07:00`,wordCount:`766`,readingTime:3},layout:`post`,excerpt:`<p>第一次踏入高考考场,已经是近十年前的依稀往事了。
371在我十几岁的记忆里,除了英语考试的懊悔,已几乎没有什么留下。</p>
372<p>多年以后,躺在出租屋中,我总会想起初中时父亲骑着电动车载我去上晚自习的那个傍晚。
373那时的我刚吃完晚饭,天色稍显阴沉,我默数着道路上水泥板之间的缝隙,任由流动的风从耳边划过。</p>
374<p>
374我在心中想着,当我数完这条路,当我重新睁开眼睑,我是否会突然身处在另一个时空,作为未来的自己回想起此刻的我?</p>
375`}},{path:`nnrm-new-nrm`,name:`/posts/nnrm-new-nrm`,component:()=>v(()=>import(`./nnrm-new-nrm.BmLjk9Jl.js`),__vite__mapDeps([99,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`nnrm - 一个极简的 npm/yarn registry 切换管理器`,date:`2021-03-05 17:57:17`,updated:`2021-03-05 17:57:17`,tags:[`npm`,`镜像源`,`工具`],categories:[`云游的小项目`],type:`github`,url:`https://github.com/YunYouJun/nnrm/`,readmore:!0,wordCount:`353`,readingTime:2},layout:`post`,excerpt:`<h2 id="简介" tabindex="-1">简介 <a class="header-anchor" href="#简介" aria-label="Permalink to &quot;简介&quot;">&ZeroWidthSpace;</a></h2>
376<p>nnrm 即 new nrm。</p>
377<p>GitHub: <a href="https://github.com/YunYouJun/nnrm/" target="_blank" rel="noreferrer">https://github.com/YunYouJun/nnrm/</a></p>
378<p><a href="https://www.v2ex.com/t/758624" target="_blank" rel="noreferrer">nnrm - 一个极简的 npm/yarn registry 切换管理器 | V2EX</a></p>
379<p>一个简单的 npm/yarn registry (镜像源)切换工具</p>
380<blockquote>
381<p><a href="https://github.com/YunYouJun/nnrm/blob/main/README.zh-CN.md" target="_blank" rel="noreferrer">中文使用文档</a></p>
382</blockquote>
383<h2 id="why-new-nrm-nnrm" tabindex="-1">Why new nrm - nnrm? <a class="header-anchor" href="#why-new-nrm-nnrm" aria-label="Permalink to &quot;Why new nrm - nnrm?&quot;">&ZeroWidthSpace;</a></h2>
384<p>首先,我赞成重复造轮子是不好的行为。</p>
385<p>nrm 的确使得切换更加方便,譬如我们可以简单地使用 <code>nrm use taobao</code> 的方式切换镜像。
386但是在切换镜像前,安装 nrm 本身也是一件很慢的事情,nrm 依赖了已 deprecated 的且包体较大的 <code>request</code>,<code>npm</code> 包,以及一些其他依赖。</p>
387<p>而我自身至今使用过的实际只有 <code>nrm ls</code> 与 <code>nrm use</code> 命令而已。(偶尔可能尝试一下 nrm test 进行测速)。当然它现在也支持了自定义源的操作。</p>
388<p>此外因为经常需要在不同的机器上操作,所以我希望它足够简洁,安装迅速,并且我不想总是看到依赖的包已 deprecated 的提示(强迫症?)。这便是它诞生的原因。</p>
389<p>好!就是这样!更多就请见 <a href="https://github.com/YunYouJun/nnrm/" target="_blank" rel="noreferrer">项目 README</a> 吧!</p>
390`}},{path:`npm-and-yarn`,name:`/posts/npm-and-yarn`,component:()=>v(()=>import(`./npm-and-yarn.60jw_LrP.js`),__vite__mapDeps([100,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`npm & yarn 常用包与命令`,tags:[`Node.js`,`分享`,`笔记`],categories:[`云游的小笔记`],date:`2017-10-06 15:56:20`,updated:`2020-01-29 15:04:44`,type:`yuque`,url:`https://www.yuque.com/yunyoujun/notes/npm-and-yarn`,wordCount:`49`,readingTime:1},layout:`post`,excerpt:``}},{path:`opengl-with-macos`,name:`/posts/opengl-with-macos`,component:()=>v(()=>import(`./opengl-with-macos.CB1DMpBm.js`),__vite__mapDeps([101,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`在 macOS 下配置 OpenGL`,date:`2019-10-01 22:08:22`,updated:`2019-10-01 22:08:22`,tags:[`macOS`,`CLion`,`OpenGL`,`笔记`],categories:[`云游的小笔记`],wordCount:`609`,readingTime:5},layout:`post`,excerpt:`<p>More info in <a href="https://www.yuque.com/docs/share/a32e7cdc-bee8-44ab-9704-84ebb574e809" target="_blank" rel="noreferrer">从零开始的 WebGL</a>.</p>
391`}},{path:`outer-space`,name:`/posts/outer-space`,component:()=>v(()=>import(`./outer-space.DnUMg_5C.js`),__vite__mapDeps([102,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`太空`,tags:[`作品`,`小说`],categories:[`云游的小小说`,`å¾®`],date:`2016-09-20 13:55:05`,updated:`2016-09-20 13:55:05`,wordCount:`505`,readingTime:2},layout:`post`,excerpt:``}},{path:`planet-of-aqua`,name:`/posts/planet-of-aqua`,component:()=>v(()=>import(`./planet-of-aqua.Bgv2-5DJ.js`),__vite__mapDeps([103,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`小说连载初å°
391è¯•-《阿庫娅的星球》`,tags:[`作品`,`小说`],categories:[`云游的小小说`,`连`],date:`2017-07-10 10:36:24`,updated:`2017-07-10 10:36:24`,wordCount:`147`,readingTime:1},layout:`post`,excerpt:``}},{path:`proof-of-love`,name:`/posts/proof-of-love`,component:()=>v(()=>import(`./proof-of-love.wePo0Zyr.js`),__vite__mapDeps([104,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`恋爱证明记`,date:`2018-10-06 22:14:21`,updated:`2018-10-31 22:14:21`,tags:[`作品`,`小说`,`科幻`],categories:[`云游的小小说`,`短`],wordCount:`13.9k`,readingTime:47},layout:`post`,excerpt:`<h2 id="摘要" tabindex="-1">摘要 <a class="header-anchor" href="#摘要" aria-label="Permalink to &quot;摘要&quot;">&ZeroWidthSpace;</a></h2>
392<blockquote>
393<p>对于某位只会与数学打交道并孤苦伶仃至今的理科生来说,恋爱毫无疑问是可望而不可及的世界级数学难题。求之不得,弃之可惜。于是他提出自己的恋爱猜想,并决心证明出解的存在,在所不惜,然世事难料。凄惨之境恋爱之神亦不忍直视,出手相助。</p>
394</blockquote>
395<h2 id="正文" tabindex="-1">正文 <a class="header-anchor" href="#正文" aria-label="Permalink to &quot;正文&quot;">&ZeroWidthSpace;</a></h2>
396<p>古有爱莲说,吾独爱狗尾草。吾之爱,春牡丹,夏青莲,秋紫菊,冬腊梅,均不可及。
397其无牡丹之富贵,亦无莲之君子,更无菊之隐逸,梅之高洁。</p>
398<p>但卿可知狗尾草的花语为何?默默无闻之爱矣。随风飘摇,落地即生,唯生命之坚韧不拔。</p>
399`}},{path:`quaternion-and-spatial-rotation`,name:`/posts/quaternion-and-spatial-rotation`,component:()=>v(()=>import(`./quaternion-and-spatial-rotation.mY_zDw4p.js`),__vite__mapDeps([105,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`聊聊四元数与万向锁及其实际意义`,date:`2022-01-16 01:59:12`,updated:`2022-01-16 01:59:12`,tags:[`四元数`,`万向锁`],categories:[`云游的小笔记`],type:`yuque`,url:`https://www.yuque.com/yunyoujun/blog/quaternion-and-spatial-rotation`,wordCount:`250`,readingTime:2},layout:`post`,excerpt:`<p>在使用 Babylon 写 <a href="https://vrm.advjs.org/" target="_blank" rel="noreferrer">ADV.JS VRM 模型编辑器</a> 的人物骨骼旋转动画的时候,我发现几乎所有的骨骼旋转均使用四元数(Quaternion)实现。</p>
400<p>于是我便打算好好了解一下相关的内容,但是网上搜到的不少帖子比如 Unity 欧拉角的旋转顺序都是互相矛盾的,导致自己也不知道相信哪个为好,决定还是自己实验下。</p>
401<p>同时写了下自己对四元数和万向锁的直观理解,希望能对有兴趣了解这方面的后来者有所帮助。</p>
402<p>因为有不少随手的截图和公式,所以就先放在了语雀上。也欢迎随时勘误!</p>
403`}},{path:`responsive-canvas-with-vue`,name:`/posts/responsive-canvas-with-vue`,component:()=>v(()=>import(`./responsive-canvas-with-vue.DkHCM2y1.js`),__vite__mapDeps([106,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`Vue 中 canvas 的自适应`,tags:[`Canvas`,`Web`,`Vue`,`笔记`,`学习`],categories:[`云游的小笔记`],date:`2018-03-27 11:44
403:33`,updated:`2018-03-27 11:44:33`,wordCount:`336`,readingTime:3},layout:`post`,excerpt:`<blockquote>
404<p>最近又在写一些没什么用的小玩意儿。
405ref: <a href="https://github.com/YunYouJun/star-timer/blob/master/docs/.vuepress/components/StarMap.vue" target="_blank" rel="noreferrer">https://github.com/YunYouJun/star-timer/blob/master/docs/.vuepress/components/StarMap.vue</a></p>
406</blockquote>
407<p>在过程中尝试使用 Vue 来实现 Html5 中 <code>Canvas</code> 标签的自适应。</p>
408`}},{path:`set-up-my-minecraft-server`,name:`/posts/set-up-my-minecraft-server`,component:()=>v(()=>import(`./set-up-my-minecraft-server.Dwu5iDJo.js`),__vite__mapDeps([107,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`搭建自己的 Minecraft 服务器`,date:`2019-02-21 15:27:40`,updated:`2019-03-01 15:27:40`,tags:[`Minecraft`,`笔记`],categories:[`云游的小笔记`],wordCount:`1.5k`,readingTime:9},layout:`post`,excerpt:`<h2 id="闲话" tabindex="-1">闲话 <a class="header-anchor" href="#闲话" aria-label="Permalink to &quot;闲话&quot;">&ZeroWidthSpace;</a></h2>
409<p>腾讯云的学生机其实续费了几年,也没怎么使用它。
410阿里云的学生机更是到前几个月,干脆让它过期了。</p>
411<p>如今,既别无他用,有想到群内的小伙伴们之前一起在玩 MC ,便索性用来搭建一个私服。
412记录下过程,以便看官参考,或自己日后复现。</p>
413`}},{path:`stop-motion-animation-exchange`,name:`/posts/stop-motion-animation-exchange`,component:()=>v(()=>import(`./stop-motion-animation-exchange.n0UigpdV.js`),__vite__mapDeps([108,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`【定格动画】交换/EXchange`,tags:[`作品`,`动画`,`定格`],categories:[`云游的小视频`],date:`2017-07-24 18:04:34`,updated:`2017-07-24 18:04:34`,wordCount:`448`,readingTime:3},layout:`post`,excerpt:`<blockquote>
414<p>视频:<a href="https://www.bilibili.com/video/av11903797/" target="_blank" rel="noreferrer">https://www.bilibili.com/video/av11903797/</a></p>
415</blockquote>
416<hr>
417<blockquote>
418<p>相关</p>
419</blockquote>
420<ul>
421<li>人物角色参考自<a href="https://www.bilibili.com/video/av9251412" target="_blank" rel="noreferrer">《kaiba》</a></li>
422<li><strong>BGM</strong> : 吉田潔 - Initialize Me、吉田潔 - The Tree Song</li>
423<li><strong>导演/剧本/后期</strong> : 云游君</li>
424<li><strong>鸣谢</strong> : LRQ</li>
425</ul>
426`}},{path:`that-is-what-life-should-be`,name:`/posts/that-is-what-life-should-be`,component:()=>v(()=>import(`./that-is-what-life-should-be.BVzYyZU8.js`),__vite__mapDeps([109,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`人生本该如此。`,date:`2017-11-11 20:29:46`,updated:`2017-11-11 20:29:46`,categories:[`云游的小日记`],tags:[`随笔`,`时光`,`中传`],wordCount:`1k`,readingTime:4},layout:`post`,excerpt:`<p>今日便是所谓的双十一了。</p>
427<p>本来明明说好是属于单身狗的节日,现在反倒是购物的狂欢了。</p>
428<p>又难道说,此节日诞生的目的本便如此。</p>
429`}},{path:`the-birth-of-yunlefun`,name:`/posts/the-birth-of-yunlefun`,component:()=>v(()=>import(`./the-birth-of-yunlefun.MEDXzbAj.js`),__vite__mapDeps([110,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`云乐坊工作室的成立与缘起与有关的话`,date:`2022-11-09 23:59:59`,updated:`2022-11-09 23:59:59`,tags:[`分享`],categories:[`云游的小分享`],wordCount:`4.9k`,readingTime:18},layout:`post`,excerpt:`<h2 id="起因" tabindex="-1">起因 <a class="header-anchor" href="#起因" aria-label="Permalink to &quot;起因&quot;">&ZeroWidthSpace;</a></h2>
430<p>18 年春天的某个午后,我突发奇想买下了 <a href="https://yunle.fun" target="_blank" rel="noreferrer">yunle.fun</a> 这个域名。
431并在站点编年史中如下记载:</p>
432<blockquote>
433<p>又注册了个新域名:yunle.fun(云乐坊),以后要是能开工作室就用这个名字吧(笑)。</p>
434</blockquote>
435<p>也就是说从很久以前,我的脑海中便充斥着一些不切实际的幻想,比如希望拥有一个属于自己的工作室。</p>
436<p>而究其根本原因,无非是想要不用上班、财富自由之类的老生常谈。</p>
437<blockquote>
438<p>亦与诸君共勉。</p>
439</blockquote>
440<p>仔细想来,当初决定搭建博客,也无外乎此。
441「超自然9人组」动画中的我闻优太,用奇怪的网名经营着一个超自然博客,并一心想着靠联盟行销致富。
442于是,伴随动画播出的 16 年年底,「云游君的小站」诞生了。</p>
443<p>只是时至今日,虽然博客逐渐有了一些访问量,但与最初的动机似乎仍然有着道难以逾越的鸿沟。</p>
444`}},{path:`the-common-hamster`,name:`/posts/the-common-hamster`,component:()=>v(()=>import(`./the-common-hamster.CCl_awvb.js`),__vite__mapDeps([111,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`仓生`,date:`2018-01-15 22:40:11`,updated:`2019-04-10 22:40:11`,tags:[`作品`,`小说`,`科幻`],categories:[`云游的小小说`,`中`],wordCount:`19.2k`,readingTime:65},layout:`post`,excerpt:`<h2 id="前言" tabindex="-1">前言 <a class="header-anchor" href="#前言" aria-label="Permalink to &quot;前言&quot;">&ZeroWidthSpace;</a></h2>
445<blockquote>
446<p>此作为<a href="https://www.yunyoujun.cn/posts/hamster" target="_blank" rel="noreferrer">仓鼠</a>的续写。参加<a href="http://sci.kpcswa.org.cn/index/catalog/tid/89" target="_blank" rel="noreferrer">某比赛</a>的第二轮产物。</p>
447</blockquote>
448<p>实际最初第一作完成时,根本没有考虑过会有什么后续。所以内容根本是临时抱佛脚,想到什么写什么。故事大概也不堪卒读。但这终究是自己连续花费几个整天所赶出来的东西,直接丢掉这种事情也绝对做不到。</p>
449<p>我还是拿到这里展示了出来,虽然也不会有什么人看到就是了。</p>
450<p>顺带一提,我深刻感悟到了 <code>Deadline 是第一生产力</code> 这一真理。</p>
451<p>
451自己还画了乱七八糟的插画,色彩一塌糊涂。( 2018-01-19 )</p>
452`}},{path:`the-moonlight-is-beautiful`,name:`/posts/the-moonlight-is-beautiful`,component:()=>v(()=>import(`./the-moonlight-is-beautiful.BeCQ6VO1.js`),__vite__mapDeps([112,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`【番剧】《月色真美》(老夫的少女心啊)`,tags:[`分享`,`动画`],categories:[`云游的小安利`],date:`2017-09-05 19:07:45`,updated:`2017-09-05 19:07:45`,wordCount:`525`,readingTime:3},layout:`post`,excerpt:``}},{path:`the-shape-of-voice`,name:`/posts/the-shape-of-voice`,component:()=>v(()=>import(`./the-shape-of-voice.BzTiCWBC.js`),__vite__mapDeps([113,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`【动画电影】《声之形》观后感`,date:`2018-02-03 19:40:18`,updated:`2018-02-03 19:40:18`,tags:[`分享`,`动画`,`电影`,`中传`],categories:[`云游的小安利`],wordCount:`1.9k`,readingTime:7},layout:`post`,excerpt:`<h2 id="前言" tabindex="-1">前言 <a class="header-anchor" href="#前言" aria-label="Permalink to &quot;前言&quot;">&ZeroWidthSpace;</a></h2>
453<p>今天下午在家里坐立不安地等成绩,加之身体不大舒服,也不怎么想敲代码。便看了看电视。
454起初看得是<a href="https://movie.douban.com/subject/26527993/" target="_blank" rel="noreferrer">《哆啦A梦:新·大雄的日本诞生》</a>。</p>
455<p>旧漫画与老剧场版都有看过,所以剧情基本一目了然。每部剧场版里进入冲突前总有一段无忧无虑的半冒险生活,一直是我最喜欢的部分。
456小时候缠着老爸买帐篷,这里差不多就是源头了。</p>
457<blockquote>
458<p>虚假的历史永远不可能战胜真正的历史</p>
459</blockquote>
460<p>哆啦A梦喊出这句话后,掷出货真价实的石矛击败了来自 23 世纪的反派。</p>
461`}},{path:`third-party-comment-system`,name:`/posts/third-party-comment-system`,component:()=>v(()=>import(`./third-party-comment-system.C7n1OgtV.js`),__vite__mapDeps([114,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`第三方评论系统之我见`,date:`2020-05-17 13:30:40`,updated:`2021-07-08 13:30:40`,tags:[`评测`,`Disqus`,`Gitalk`,`Valine`],categories:[`云游的小分享`],wordCount:`3.4k`,readingTime:16},layout:`post`,excerpt:`<p>静态博客纵有万般好,但不得不承认其常常需要很多奇技淫巧,方能实现<s>甚至无法实现</s>动态网站仅需数行代码便可实现的功能。</p>
462<p>评论系统便是其代表之一。</p>
463<p>我尝试过数种第三方评论系统(Disqus/Gitalk/Valine/LiveRe(来必力)/畅言/utterance/giscus),并在其中反复横跳,丢失了不少可爱的评论,也很遗憾未能找到一款真正百无挑剔的评论系统。</p>
464<blockquote>
465<p>一个事物的发展往往是一个波浪式前进、循环往复式上升的过程。</p>
466</blockquote>
467<p>我将简单对我使用过的评论系统之利弊进行对比分析(可能包含许多个人色彩),以便各位看官参考。</p>
468`}},{path:`to-lovely-junior`,name:`/posts/to-lovely-junior`,component:()=>v(()=>import(`./to-lovely-junior.FE4AGjxc.js`),__vite__mapDeps([115,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`写给可爱的学弟学妹们`,date:`2019-04-16 10:36:53`,updated:`2019-06-06 10:36:53`,tags:[`分享`,`中传`],categories:`云游的小分享`,wordCount:`4k`,readingTime:16},layout:`post`,excerpt:`<p>梦想还是要有的,万一实现了呢?</p>
469<p>没有了梦想的咸鱼,和咸鱼有什么区别。</p>
470`}},{path:`trans-learn-latex-in-30-minutes`,name:`/posts/trans-learn-latex-in-30-minutes`,component:()=>v(()=>import(`./trans-learn-latex-in-30-minutes.BLSHqtSp.js`),__vite__mapDeps([116,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`【译】30 分钟学会 LaTeX`,date:`2019-10-28 16:02:36`,updated:`2019-11-05 16:09:36`,tags:[`LaTeX`,`译文`,`教程`,`分享`],categories:[`云游的小安利`],wordCount:`6.4k`,readingTime:36},layout:`post`,excerpt:`<blockquote>
471<p>译自 <a href="https://cn.overleaf.com/learn/latex/Learn_LaTeX_in_30_minutes" target="_blank" rel="noreferrer">Overleaf - Learn LaTeX in 30 minutes</a>
472云游君 (YunYouJun) <a href="mailto:[email protected]" target="_blank" rel="noreferrer">[email protected]</a></p>
473</blockquote>
474<p>在本指南中,我们希望为您初步介绍一下 LaTeX 。
475该指南不需要您具有任何 LaTeX 的<a href="https://baike.baidu.com/item/%E5%85%88%E9%AA%8C%E7%9F%A5%E8%AF%86" target="_blank" rel="noreferrer">先验知识</a>,
476不过到您完成时,您将会已经编写出您的第一个 LaTeX 文档,并且如果顺利的话,您将能够对 LaTeX 提供的一些基本功能有很好地了解。</p>
477`}},{path:`try-to-become-a-teacher`,name:`/posts/try-to-become-a-teacher`,component:()=>v(()=>import(`./try-to-become-a-teacher.D1ts5KAD.js`),__vite__mapDeps([117,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`关于我打算当老师并报考教师资格证这件事`,date:`2020-09-11 23:59:23`,updated:`2021-07-16 23:59:23`,tags:[`轻小说`,`日记`,`教师`],categories:[`云游的小日记`],aplayer:!0,wordCount:`6.8k`,readingTime:28},layout:`post`,excerpt:`<blockquote>
478<p>「关于加个引号就能变成轻小说标题这件事」</p>
479</blockquote>
480<p>嘛,正如 <a href="https://www.yunyoujun.cn/posts/i-and-town-and-home/" target="_blank" rel="noreferrer">前文</a> 所言,我确实准备报考教师证。</p>
481<p>并立此文章为证,(<s>那没考上岂不是贻笑大方</s>),记录一些过程(<s>破事水</s>)。</p>
482<p>因为标题拟的很像轻小说,并且这件事本身其实并不是什么有趣的事(<s>但我希望它能有趣些</s>),所以我决定用我的死宅文风以轻小说的方式来记录一下。(<s>欢迎吐槽,但别太伤人。</s>)</p>
483<figure><img src="https://cos.yunle.fun/images/dont-scold-me.jpg" alt="别骂了别骂了再骂人要傻了" loading="lazy" decoding="async"></figure>
484<h2 id="内容简介" tabindex="-1">内容简介 <a class="header-anchor" href="#内容简介" aria-label="Permalink to &quot;内容简介&quot;">&ZeroWidthSpace;</a></h2>
485<p>成长的苦涩,日常的迷惘。
486唯有长大方能看见的真相,让「死宅少年」偏移人生轨迹的事件……</p>
487<blockquote>
488<p>家里蹲死宅少年 —— 云游君,本作的男主角。
489可爱女主角 —— 暂无(<s>欢迎参演</s>)</p>
490</blockquote>
491<p>云游君与并不存在的朋友们开始转动命运的齿轮。
492未来又是否将就此改变。</p>
493<p>……</p>
494<p>成年人的青春物语开幕。</p>
495`}},{path:`use-cdn-speed-up-site`,name:`/posts/use-cdn-speed-up-site`,component:()=>v(()=>import(`./use-cdn-speed-up-site.BAqg8B3d.js`),__vite__mapDeps([118,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`使用 CDN 加速你的 GitHub Pages 网站`,date:`2020-02-05 20:28:57`,updated:`2024-10-06 20:28:57`,tags:[`CDN`,`笔记`,`GitHub Pages`],categories:[`云游的小笔记`],wordCount:`2.8k`,readingTime:14},layout:`post`,excerpt:`<p>内容分发网络 Content Delivery Network</p>
496`}},{path:`use-travis-to-deploy`,name:`/posts/use-travis-to-deploy`,component:()=>v(()=>import(`./use-travis-to-deploy.DlHp3mO7.js`),__vite__mapDeps([119,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`Travis-CI 持续集成部署`,date:`2018-05-24 15:04:42`,updated:`2018-06-10 15:04:42`,tags:[`笔记`],categories:[`云游的小笔记`],wordCount:`325`,readingTime:3},layout:`post`,excerpt:`<blockquote>
497<p>Travis CI - Test and Deploy Your Code with Confidence</p>
498</blockquote>
499<p><a href="https://www.travis-ci.org/" target="_blank" rel="noreferrer">travis-ci.org</a></p>
500`}},{path:`valaxy-best-practice`,name:`/posts/valaxy-best-practice`,component:()=>v(()=>import(`./valaxy-best-practice.CAizN_FU.js`),__vite__mapDeps([120,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`Valaxy - 又一个博客框架暨我的最佳实践`,date:`2023-04-24 20:18:53`,updated:`2023-04-24 20:18:53`,tags:[`Valaxy`,`Blog`],categories:[`云游的小分享`],end:!1,draft:!0,wordCount:`45`,readingTime:1},layout:`post`,excerpt:``}},{path:`vscode-config-note`,name:`/posts/vscode-config-note`,component:()=>v(()=>import(`./vscode-config-note.C61aV6nD.js`),__vite__mapDeps([121,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`VS Code 配置笔记`,date:`2018-01-29 15:39:20`,updated:`2018-01-29 15:39:20`,tags:[`VS Code`,`笔记`],categories:[`云游的小笔记`],wordCount:`428`,readingTime:3},layout:`post`,excerpt:`<h2 id="intro" tabindex="-1">Intro <a class="header-anchor" href="#intro" aria-label="Permalink to &quot;Intro&quot;">&ZeroWidthSpace;</a></h2>
501<p>记录一些 <code>VS Code</code> 的一些常用配置。</p>
502`}},{path:`vue-d3-demo`,name:`/posts/vue-d3-demo`,component:()=>v(()=>import(`./vue-d3-demo.ua1gamDb.js`),__vite__mapDeps([122,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`从 Vite 与 Vue 开始的 D3 数据可视化之旅`,date:`2020-11-21 19:56:09`,updated:`2020-11-21 19:56:09`,tags:[`Vite`,`Vue`,`D3`],categories:[`云游的小教程`],wordCount:`4.5k`,readingTime:25},layout:`post`,excerpt:`<p>这是一个极其简单的并尽可能面向未来的新手教程,它将指导你简单地使用 Vite 启动 Vue 的脚手架,并开始 D3 数据可视化的相关开发。而你无需 Vue 相关的前置使用知识,你只需跟随教程简单地使用它。
503在课后如果你仍有兴趣,那么你可以继续地深入了解它。</p>
504<p><s>「简单」是不是用的太多了</s></p>
505`}},{path:`vue-learn-note`,name:`/posts/vue-learn-note`,component:()=>v(()=>import(`./vue-learn-note.CJFbNlR9.js`),__vite__mapDeps([123,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`Vue 学习笔è
505®°`,date:`2018-02-20 21:00:24`,updated:`2019-01-28 17:58:24`,tags:[`Vue`,`笔记`,`学习`],categories:[`云游的小笔记`],wordCount:`473`,readingTime:3},layout:`post`,excerpt:`<p>使用 <a href="https://cn.vuejs.org" target="_blank" rel="noreferrer">Vue.js</a> 过程中的一些笔记。</p>
506`}},{path:`vue-parcel-demo`,name:`/posts/vue-parcel-demo`,component:()=>v(()=>import(`./vue-parcel-demo.DqdMIlAk.js`),__vite__mapDeps([124,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`Parcel.js + Vue 搭建笔记`,date:`2018-02-20 21:13:42`,updated:`2020-02-26 04:05:00`,tags:[`Vue`,`Parcel`,`笔记`,`学习`],categories:[`云游的小笔记`],wordCount:`1.7k`,readingTime:12},layout:`post`,excerpt:`<div class="danger">
507<blockquote>
508<p><strong>2021-06-08</strong>
509时至今日,该篇文章的内容已有所过时。
510Parcel 的地位也似乎一直有些尴尬。
511零配置的确是一个亮点,但是到真正编写复杂庞大的项目,我们还真的需要零配置吗?
512而谈起配置,似乎又难与悠久历史生态的 Webpack 同台竞技。
513至于速度,则难以与新诞生的基于 ES 打包的 Vite 相匹敌。
514现今的我基本已经转向使用 <a href="https://github.com/vitejs/vite" target="_blank" rel="noreferrer">Vite</a>,而并未再尝试 Parcel 的使用。</p>
515</blockquote>
516</div>
517<p>去年(已经是三年前了!)年末便听得新一代打包工具 Parcel.js 的风风火火,今日(两年前的某一天)也终于得以静下心来试一试。</p>
518`}},{path:`want-more-do-less`,name:`/posts/want-more-do-less`,component:()=>v(()=>import(`./want-more-do-less.g5zHt8Yg.js`),__vite__mapDeps([125,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`年终回顾-想的太多,做的太少`,date:`2023-01-26 20:45:58`,updated:`2023-01-26 20:45:58`,tags:null,categories:null,draft:!0,end:!1,wordCount:`34`,readingTime:1},layout:`post`,excerpt:``}},{path:`wechat-and-chinese-chess`,name:`/posts/wechat-and-chinese-chess`,component:()=>v(()=>import(`./wechat-and-chinese-chess.B4nSD_Ll.js`),__vite__mapDeps([126,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`微信与象棋`,date:`2018-09-03 22:38:37`,updated:`2018-09-03 22:38:37`,tags:[`日记`,`时光`],categories:[`云游的小日记`],wordCount:`505`,readingTime:2},layout:`post`,excerpt:`<p>楼上的邻居今日敲门求助,原因是要发东西给别人,但苦于微信的发照片等种种功能摸索不透。期间并不断感叹着自己老了老了。</p>
519`}},{path:`why-i-use-upyun-cdn`,name:`/posts/why-i-use-upyun-cdn`,component:()=>v(()=>import(`./why-i-use-upyun-cdn.6Y4cwjb-.js`),__vite__mapDeps([127,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`又拍云—年轻人的第一个 CDN`,date:`2021-05-27 21:29:35`,updated:`2021-06-28 01:29:35`,tags:[`CDN`,`又拍云`],categories:[`云游的小安利`],wordCount:`3.6k`,readingTime:15},layout:`post`,excerpt:`<h2 id="前言" tabindex="-1">前言 <a class="header-anchor" href="#前言" aria-label="Permalink to &quot;前言&quot;">&ZeroWidthSpace;</a></h2>
520<p>距离上一次更新似乎又过去了很久,而我也成为了无聊的大人,被实习的工作压的喘不过气来。(此中又有不少波折,待尘埃落定,我再找机会记录它吧。)</p>
521<p>我的青春更是早在不知何时已经结束了。</p>
522<blockquote>
523<p>看,简单吧,谁也没有受伤的世界,达成了。</p>
524</blockquote>
525<a href="https://console.upyun.com/register/?invite=SyeQw09Bz" title="又拍云" target="_blank">
526  <img class="shadow-none!" src="https://cdn.yunyoujun.cn/img/logo/upyun-logo.png" alt="upyun">
527</a>
528<p>故<a href="https://www.upyun.com/" target="_blank" rel="noreferrer">又拍云</a>并非我的第一个 CDN,但它的确是我截至今日使用最久的 CDN。</p>
529<p>而我相信它也是新站长值得一试的服务。</p>
530<p>此中玄机,我们不妨先从 CDN 说起。</p>
531`}},{path:`why-make-char-dust`,name:`/posts/why-make-char-dust`,component:()=>v(()=>import(`./why-make-char-dust.CQh4rRJl.js`),__vite__mapDeps([128,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`char-dust 一个图片转字符画的 npm 包与示例站点`,date:`2021-03-13 01:08:46`,updated:`2021-03-14 02:51:46`,tags:[`npm`,`ascii`],categories:[`云游的小项目`],katex:!0,wordCount:`1.9k`,readingTime:10},layout:`post`,excerpt:`<figure><img src="https://cos.yunle.fun/images/char-dust-jashin.jpg" alt="夹心酱" loading="lazy" decoding="async"></figure>
532<p>如题,它的全部作用就是将图片变成字符画(又称 <a href="https://zh.wikipedia.org/wiki/ASCII%E8%89%BA%E6%9C%AF" target="_blank" rel="noreferrer">ASCII 艺术</a>)。</p>
533<ul>
534<li>GitHub: <a href="https://github.com/YunYouJun/char-dust/" target="_blank" rel="noreferrer">https://github.com/YunYouJun/char-dust/</a></li>
535<li>示例站点: <a href="https://yunyoujun.github.io/char-dust/" target="_blank" rel="noreferrer">https://yunyoujun.github.io/char-dust/</a></li>
536</ul>
537<p>似乎有些老生常谈,那么为什么会有它的诞生呢?</p>
538`}},{path:`wordpress-plugins-themes`,name:`/posts/wordpress-plugins-themes`,component:()=>v(()=>import(`./wordpress-plugins-themes.CikpT-Ae.js`),__vite__mapDeps([129,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`Wordpress 的实用插件与主题推荐`,tags:[`分享`],categories:[`云游的小安利`],date:`2017-08-04 10:56:26`,updated:`2017-08-04 10:56:26`,wordCount:`810`,readingTime:5},layout:`post`,excerpt:`<p>自己使用的一些关于 Wordpress 的插件与主题推荐。(以前爱折腾这些,现在已经转投 <a href="https://hexo.io" target="_blank" rel="noreferrer">Hexo</a> 啦。)</p>
539`}}
539,{path:`xiaoyun-studio-01-ak-ui`,name:`/posts/xiaoyun-studio-01-ak-ui`,component:()=>v(()=>import(`./xiaoyun-studio-01-ak-ui.DO_QJ1Gi.js`),__vite__mapDeps([130,2,1,0,3,4,5,6,7,36])),meta:{frontmatter:{time_warning:15552e6,title:`小云梦工坊 #01:用 AI 复活七年前的 ak-ui`,date:`2026-09-12`,updated:`2026-09-12`,description:`小云梦工坊第一期,从七年前的 ak-ui 出发,聊聊一个停更项目的重新启动。`,categories:[`小云梦工坊`],tags:[`开源`,`AI`,`ak-ui`,`视频`],ai:{mode:`generated`,reviewed:!1,note:`本文由 AI 根据作者已发布的视频简介与 ak-ui 公开文档整理撰写;视频的 AI 参与方式另见文末说明。`},wordCount:`862`,readingTime:4},layout:`post`,excerpt:`<p>小云梦工坊的第一期视频发布了:<strong>我用 AI 复活了七年前咕掉的明日方舟风格 UI</strong>。</p>
540<p>2019 年,《明日方舟》开服,ak-ui 也在那时开始。七年后,这个停更的个人项目借助 AI 重新启动,成为这次视频的主角。</p>
541<p>博客也为这个系列留了一个位置:<a href="/collections/xiaoyun/">小云梦工坊视频专栏</a>。视频展示界面和变化,文章则留下项目入口与补充资料,方便看完后继续探索。</p>
542`}},{path:`yunyoujun-meme`,name:`/posts/yunyoujun-meme`,component:()=>v(()=>import(`./yunyoujun-meme.CZvjNPgE.js`),__vite__mapDeps([131,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`云游君表情包制作计划`,tags:[`云游君`,`作品`,`表情包`],categories:[`云游的小画册`],date:`2017-07-10 10:41:37`,updated:`2017-07-10 10:41:37`,wordCount:`227`,readingTime:2},layout:`post`,excerpt:`<blockquote>
543<p>大概算是自己人设的表情包制作吧。</p>
544</blockquote>
545`}},{path:`yunzhan-desktop-acceptance-2026-09-24`,name:`/posts/yunzhan-desktop-acceptance-2026-09-24`,component:()=>v(()=>import(`./yunzhan-desktop-acceptance-2026-09-24.DwzjxT04.js`),__vite__mapDeps([132,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`云栈桌面跨端验收(2026-09-24)`,draft:!0,date:`2026-09-24`,updated:`2026-09-24`,wordCount:`35`,readingTime:1},layout:`post`,excerpt:``}}],meta:{frontmatter:{time_warning:15552e6},layout:`posts`}},{path:`/projects`,children:[{path:``,name:`/projects/`,component:()=>v(()=>import(`./projects.Buhh_scK.js`),__vite__mapDeps([133,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`云游的小项目们`,tags:[`项目`],categories:[`云游的小项目`],date:`2016-01-01 00:00:00`,updated:`2024-10-06 00:00:00`,layout:`projects`,projects:{interesting:{title:`整活`,emoji:`🤣`,collection:[{name:`air-conditioner`,emoji:`❄️`,color:`#4ea5f5`,desc:`云空调,便携小空调!其实是个冷笑话,随身携带的毫无制冷效果的仿真小空调,使用纯 CSS 编写节能。`,textColor:`white`,github:`YunYouJun/air-conditioner`,url:`https://ac.yunyoujun.cn`,docs:`https://www.yunyoujun.cn/air-conditioner-room/`},{name:`give-me-money`,emoji:`🎣`,desc:`我很可爱,请给我钱!直白的绅士钓鱼网站!`,color:`#8a91d0`,textColor:`white`,github:`YunYouJun/give-me-money`,url:`https://gmm.yunyoujun.cn`,hideInBeian:!0},{name:`electric-fan`,emoji:`♻️`,desc:`电风扇,便携夏日小风扇!纯 CSS 编写,小空调的前辈。`,color:`#20c077`,textColor:`white`,github:`ElpsyCN/electric-fan`,url:`https://fan.elpsy.cn`},{name:`fc`,emoji:`🎮`,desc:`基于 JSNES 与 Vue 实现的红白机 FC`,color:`red`,textColor:`white`,github:`ElpsyCN/fc`,url:`https://fc.elpsy.cn`},{name:`chat-generator`,emoji:`💬`,desc:`经典聊天记录橱窗,生成聊天记录,小丑模拟器。`,color:`#f7f7f7`,github:`YunYouJun/chat-generator`,url:`https://chat.yunyoujun.cn`}]},applets:{title:`应用`,emoji:`📱`,collection:[{name:`cook`,emoji:`🥘`,desc:`好的,今天我们来做菜!(可以根据所选食材筛选菜谱)`,color:`#16a34a`,url:`https://cook.yunyoujun.cn`},{name:`ai-sfc`,emoji:`🧧`,desc:`AI 春联`,color:`#ff4444`,textColor:`white`,gradient:!1,github:`YunYouJun/ai-sfc`,url:`https://ai-sfc.yunyoujun.cn`}
545,{name:`color-dust`,emoji:`🎨`,desc:`基于 K-Means 色彩聚类提取主题色`,color:`#bff2d3`,github:`YunYouJun/color-dust`,url:`https://color-dust.yunyoujun.cn`},{name:`char-dust`,desc:`在线图片转字符画`,emoji:`📝`,color:`gray`,textColor:`white`,github:`YunYouJun/char-dust`,url:`https://yunyoujun.github.io/char-dust/`,docs:`https://www.yunyoujun.cn/posts/why-make-char-dust/`},{name:`go-far-away`,desc:`去往这个世界上最遥远的地方。此后,不管你如何前进,都在回家的路上。`,emoji:`🧭`,color:`pink`,github:`YunYouJun/go-far-away`,url:`https://yunyoujun.github.io/go-far-away/`},{name:`birthday`,desc:`祝你生日快乐!(可以改链接 params 参数来替换寿星名称~)`,emoji:`🎂`,color:`#b8c5d7`,textColor:`#563b62`,github:`YunYouJun/birthday`,url:`https://birthday.yunyoujun.cn/`},{name:`nasa-vis`,desc:`NASA API 的一些乱七八糟数据的可视化(其实没什么用)`,emoji:`🪐`,color:`#5387b1`,github:`YunYouJun/nasa-vis`,url:`https://nasa.yunyoujun.cn/`},{name:`vtuber`,desc:`从一开始的 Vtuber 实现(WIP)`,emoji:`👻`,color:`#ff9da4`,github:`YunYouJun/vtuber`,url:`https://vtuber.yunyoujun.cn/`,docs:`https://docs.vtuber.yunyoujun.cn/`},{name:`advjs`,desc:`面向未来与前端的 ADV 文字冒险游戏引擎(WIP)`,emoji:`🎮`,color:`#2562ea`,github:`YunYouJun/advjs`,url:`https://advjs.org/`},{name:`kotodama`,desc:`掌控言灵的魔法,一个优雅的纯静态评论管理后台(WIP)`,emoji:`💬`,color:`#ddeeff`,url:`https://kotodama.yunyoujun.cn/`},{name:`valaxy`,emoji:`🌌`,desc:`Static Blog Framework 新一代静态博客框架`,color:`#0078e7`,url:`https://valaxy.yyj.moe`},{name:`sese-engine-ui`,emoji:`🔍`,desc:`色色搜索引擎 UI(允许用户自建搜索引擎)`,color:`#2b57d4`,url:`https://sese.yyj.moe`},{name:`uncolor`,emoji:`🎨`,desc:`统一色彩空间`,color:`#2b57d4`,url:`https://uncolor.yunyoujun.cn`}]},tools:{title:`工具`,emoji:`🔧`,collection:[{name:`git-geass`,emoji:`⚙️`,desc:`基于 git 提供更多交互式快捷操作。`,color:`#f1e05a`,github:`YunYouJun/git-geass`,npm:`git-geass`},{name:`pixi-painter`,emoji:`🎨`,desc:`基于 Pixi.js 的绘图工具 + AI LCM`,color:`#667788`,github:`YunYouJun/pixi-painter`,url:`https://pixi-painter.pages.dev`},{name:`mirai-ts`,emoji:`🔧`,color:`#2b7489`,desc:`Mirai(QQ 机器人)TypeScript SDK,简单来说 mirai-ts 是零件包,可以用来自由地搭建你想要的机器人。`,github:`YunYouJun/mirai-ts`,docs:`https://yunyoujun.github.io/mirai-ts/`},{name:`el-bot`,emoji:`🤖️`,desc:`使用 mirai-ts 构建的 Node 端机器人框架,可以自定义插件,封装了更多内容。el-bot 则是自行车,可以加装各类插件装饰。`,color:`steelblue`,github:`YunYouJun/el-bot`,docs:`https://docs.bot.elpsy.cn`},{name:`cocos-creator-joystick`,emoji:`🕹`,desc:`基于 Cocos Creator 的虚拟摇杆实现,咱较早期开源作品。`,github:`YunYouJun/cocos-creator-joystick`,url:`https://yunyoujun.github.io/cocos-creator-joystick/`},{name:`web-resume`,desc:`可在线编辑的 Web 简历,斩获 BAT Offer 未尝败绩!`,emoji:`📄`,color:`#222`,github:`YunYouJun/web-resume`,url:`https://resume.elpsy.cn`},{name:`nnrm`,desc:`最小依赖的 NPM 源管理器,譬如切换 NPM 淘宝镜像等。`,emoji:`🔧`,color:`#f1e05a`,github:`YunYouJun/nnrm`,url:`https://www.npmjs.com/package/nnrm`,docs:`https://www.yunyoujun.cn/posts/nnrm-new-nrm/`},{name:`baidu-image-spider`,desc:`百度图片爬虫小工具 By Node.js.`,emoji:`🕷️`,color:`#e41c13`},{name:`export-nideriji`,emoji:`📒`,desc:`导出《你的日记》JSON 格式`,color:`#92a3b4`,github:`YunYouJun/export-nideriji`,url:`https://fan.elpsy.cn`},{name:`valine-to-disqus`,emoji:`⏩`,desc:`将 Valine 评论数据转换为 Disqus 可导入的格式。`,color:`blue`,docs:`https://www.yunyoujun.cn/posts/migrate-from-valine-to-disqus/`},{name:`ais.js`,emoji:`⚓️`,desc:`船舶自动识别系统(Automatic Identification System),船舶报文(船位报告与安全确认信息)的串口读取与解析。`,color:`#2b7489`,github:`YunYouJun/ais.js`,npm:`ais-json`}]},design:{title:`设计`,emoji:`🎨`,collection:[{name:`hexo-theme-yun`,desc:`我的博客主题,也就是 yunyoujun.cn 你所看到的样式和各类功能,它本质是被抽象可复用的。`,color:`#0078E7`,github:`YunYouJun/hexo-theme-yun`,emoji:`☁️`,url:`https://www.yunyoujun.cn`,docs:`https://yun.yunyoujun.cn`,status:`maintained`},{name:`ak-ui`,desc:`明日方舟 UI 组件库(WIP)`,emoji:`🎮`,color:`#22bbff`,textColor:`white`,github:`YunYouJun/ak-ui`,url:`https://ak-ui.yunyoujun.cn`},{name:`augma`,desc:`刀剑神域-序列之争 AUGMA AR UI 组件库(WIP)`,emoji:`🎮`,color:`#4682b4`,textColor:`white`,github:`YunYouJun/augma`,url:`https://augma.elpsy.
545cn/`,docs:`https://docs.augma.elpsy.cn/`},{name:`element-theme-ink`,desc:`Element 极简主题(WIP)`,emoji:`🪄`,color:`black`,github:`YunYouJun/element-theme-ink`,docs:`https://ink.elpsy.cn/`},{name:`star-markdown-css`,desc:`纯 Markdown CSS,支持多种主题`,emoji:`✨`,color:`#70b7fd`,textColor:`white`,github:`YunYouJun/star-markdown-css`,url:`https://yunyoujun.github.io/star-markdown-css/`},{name:`explosions`,desc:`爆裂吧!取名自惠惠的爆裂魔法,放一些前端动效的实现。`,emoji:`💥`,color:`#e41c13`,github:`YunYouJun/explosions`,url:`https://explosions.yunyoujun.cn/`}]},plugins:{title:`插件`,emoji:`🔌`,collection:[{name:`unplugin-glsl`,emoji:`🎨`,desc:`Unplugin 插件,加载 GLSL 语法,支持 Webpack/Vite/Rollup/Rspack`,color:`#2b7489`,github:`YunYouJun/unplugin-glsl`,url:`https://unplugin-glsl.pages.dev`},{name:`unplugin-mockery`,emoji:`🤡`,desc:`可视化 Mock 数据管理,支持 TS 热更新,支持 Webpack/Vite/Vue CLI`,color:`#f35543`,gradient:!1,textColor:`white`,github:`YunYouJun/unplugin-mockery`,npm:`unplugin-mockery`},{name:`hexo-widget-tree`,emoji:`🌲`,desc:`Hexo 文章树状菜单预览插件(Hexo 插件不再维护,推荐使用 Valaxy)`,color:`green`,github:`YunYouJun/hexo-widget-tree`,url:`https://hexo.yunyoujun.cn/yun/widget-tree.html`},{name:`hexo-tag-common`,emoji:`🏷️`,desc:`Hexo 通用标签实现(Hexo 插件不再维护,推荐使用 Valaxy)`,color:`#f8d0a0`,github:`YunYouJun/hexo-tag-common`,url:`https://hexo.yunyoujun.cn/yun/tag-common.html`},{name:`wc-github-corners`,emoji:`ℹ︎`,desc:`可以在任意地方(框架)使用的 GitHub Corner 挂件(基于 Web Components 实现)`,color:`black`,url:`https://yunyoujun.github.io/wc-github-corners/`},{name:`vuepress-plugin-google-adsense`,emoji:`🪧`,desc:`Vuepress v1 谷歌广告插件`,color:`#1565c0`}]},lab:{title:`实验`,emoji:`🧪`,collection:[{name:`webgl-radiosity`,emoji:`💡`,desc:`WebGL 辐射度渲染实现`,color:`#face87`,github:`YunYouJun/webgl-radiosity`,url:`https://yunyoujun.github.io/webgl-radiosity/`},{name:`gaussian-blur`,emoji:`✍️`,desc:`手写一个高斯模糊`,color:`#2b7489`,url:`https://yunyoujun.github.io/gaussian-blur/`,docs:`https://yunyoujun.github.io/gaussian-blur/`}]},open_source:{title:`参与`,emoji:`👥`,collection:[{name:`element-plus`,emoji:`➕`,desc:`Vue 3 最流行的组件库之一,Core Team Member,主要负责样式系统、文档、BUG 修复,以及周边项目模板示例的开发。`,github:`element-plus/element-plus`,docs:`https://element-plus.org/`,color:`#409eff`,textColor:`white`},{name:`其他开源项目`,emoji:`🏠`,desc:`当然目前我也为其他社区开源项目贡献过代码,也许你还可以在 vitesse 等其他项目中看到我的身影。`,github:`YunYouJun`,color:`black`}]},other:{title:`其他`,emoji:`📁`,collection:[{name:`yun`,emoji:`☁️`,desc:`小云设定资源大公开`},{name:`yunyoujun.github.io`,emoji:`📖`,desc:`我的博客`,url:`https://www.yunyoujun.cn`},{name:`YunYouJun`,emoji:`☁️`,desc:`哼哼,还有很多下次再整理!<br/> <del>我已经一滴也没有了。</del>`}]}},wordCount:`2k`,readingTime:15},excerpt:``,layout:`projects`}}],meta:{frontmatter:{time_warning:15552e6}}},{path:`/README`,name:`/README`,component:()=>v(()=>import(`./README.WEIqyRX3.js`),__vite__mapDeps([134,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,date:`2026-09-25T08:12:17.115Z`,updated:`2026-09-25T08:12:17.115Z`,wordCount:`64`,readingTime:1},excerpt:``}},{path:`/sites`,children:[{path:``,name:`/sites/`,component:()=>v(()=>import(`./sites.CIaNrwBe.js`),__vite__mapDeps([135,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`云游星图`,description:`云游君所有站点、项目、文档与实验的导航地图。`,icon:`i-ri-planet-line`,toc:!1,comment:!1,aside:!1,pageTitleClass:`site-galaxy-page-title`,date:`2026-09-25T08:12:17.119Z`,updated:`2026-09-25T08:12:17.119Z`,wordCount:`42`,readingTime:1},excerpt:``}}],meta:{frontmatter:{time_warning:15552e6}}},{path:`/slides`,children:[{path:``,name:`/slides/`,component:()=>v(()=>import(`./slides.C-ixssht.js`),__vite__mapDeps([136,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`Slides`,date:`2026-09-25T08:12:17.119Z`,updated:`2026-09-25T08:12:17.119Z`,wordCount:`11`,readingTime:1},excerpt:``}}],meta:{frontmatter:{time_warning:15552e6}}},{path:`/sponsors`,children:[{path:``,name:`/sponsors/`,component:()=>v(()=>import(`./sponsors.DJvXb1cv.js`),__vite__mapDeps([137,1,2,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,title:`Sponsors`,date:`2026-09-25T08:12:17.119Z`,updated:`2026-09-25T08:12:17.119Z`,wordCount:`671`,readingTime:4},excerpt:``}}],meta:{frontmatter:{time_warning:15552e6}}},{path:`/tags`,children:[{path:``,name:`/tags/`,component:()=>v(()=>import(`./tags.qTr0ofVG.js`),__vite__mapDeps([138,2,1,0,3,4,5,6,7])),meta:{frontmatter:{time_warning:15552e6,layout:`tags`,title:`云游的小标签`,icon:`i-ri-price-tag-3-line`,nav:!1,toc:!1,aside:!1,date:`2026-09-25T08:12:17.119Z`,updated:`2026-09-25T08:12:17.119Z`,wordCount:`24`,readingTime:1},excerpt:``,layout:`tags`}}],meta:{frontmatter:{time_warning:15552e6}}}],Ye=[],Xe=y({__name:`ValaxyAddons`,setup(e){return(e,n)=>(f(!0),S(o,null,C(E(Ye),({component:e,props:n},i)=>(f(),r(h(e),t({ref_for:!0},n,{key:i}),null,16))),128))}}),Ze=Se,Qe=y({render:()=>null}),$e=y({__name:`ValaxyApp`,setup(e){let t=he();return t.value!==`empty`&&te(),(e,n)=>{let r=m(`router-view`);return f(),S(o,null,[E(t)===`empty`?a(`v-if`,!0):(f(),S(o,{key:0},[g(E(Ze)),g(Xe),g(E(Qe))],64)),g(r)],64)}}}),et=y({__name:`App`,setup(e){return(e,t)=>{let n=$e;return f(),r(n)}}});function tt(e){return{page:u(()=>e.currentRoute.value.data),frontmatter:u(()=>e.currentRoute.value.meta.frontmatter)}}var nt=y({name:`ClientOnly`,setup(e,{slots:t}){let r=i(!1);return n(()=>{r.value=!0}),()=>r.value?t.default?.():t.fallback?.()??null}}),rt=function(){return typeof document<`u`&&typeof window<`u`},it=function(e,t){return new Promise(function(n,r){var i=document.head||document.getElementsByTagName(`head`)[0],a=document.createElement(`script`);if(a.async=!0,a.src=e,a.charset=`utf-8`,t){var o=document.createElement(`link`);o.href=t,o.rel=`preconnect`,i.appendChild(o)}i.appendChild(a),a.onload=n,a.onerror=r})},at=function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};Object.keys(t).forEach(function(n){e[n]=t[n]})},ot=d({property:null,isEnabled:!0,disableScriptLoader:!1,useDebugger:!1,globalObjectName:`gtag`,dataLayerName:`dataLayer`,resourceURL:`https://www.googletagmanager.com/gtag/js`,preconnectOrigin:`https://www.googletagmanager.com`,customResource:null,appName:null,appId:null,appVersion:null}),O=function(){return c(ot)},st=u(function(){var e=O().property;if(e.value)return Array.isArray(e.value)?e.value.find(function(e){return e.default===!0}
545)||e.value[0]:e.value}),ct=u(function(){var e=O().property;return!!(e.value&&e.value.id!==null)}),lt=u(function(){var e=O().property;return Array.isArray(e.value)?e.value:[e.value]}),ut=u(function(){var e=O().isEnabled,t=st.value;return!!(t&&t.id&&e.value)}),dt=(function(){var e;if(rt()){var t=O(),n=t.globalObjectName,r=t.useDebugger,i=[...arguments];r.value&&console.warn(`[vue-gtag] Debugger:`,i),(e=window)[n.value].apply(e,i)}}),ft=(function(){var e=[...arguments];lt.value.forEach(function(t){dt.apply(void 0,[`config`,t.id].concat(e))})}),pt=(function(e){ft({custom_map:e})}),mt=(function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;rt()&&lt.value.forEach(function(t){window[`ga-disable-${t.id}`]=e})}),k=(function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=Object.assign({},t);!n.send_to&&lt.value.length>1&&(n.send_to=lt.value.map(function(e){return e.id})),dt(`event`,e,n)}),ht=(function(){var e=[...arguments];k.apply(void 0,[`exception`].concat(e))}),gt=(function(){var e=[...arguments];ft.apply(void 0,[`linker`].concat(e))}),_t=(function(e){var t={};t=typeof e==`string`?{page_path:e,page_location:window.location.href}:e,t.send_page_view===void 0&&(t.send_page_view=!0),k(`page_view`,t)}),vt=(function(){var e=[...arguments];k.apply(void 0,[`purchase`].concat(e))}),yt=(function(){var e=[...arguments];k.apply(void 0,[`refund`].concat(e))}),bt=(function(){var e=O(),t=e.appName,n=e.appId,r=e.appVersion,i=[...arguments][0],a={};a=typeof i==`string`?{screen_name:i}:i,a.app_name==null&&t.value!=null&&(a.app_name=t.value),a.app_id==null&&n.value!=null&&(a.app_id=n.value),a.app_version==null&&r.value!=null&&(a.app_version=r.value),k(`screen_view`,a)}),xt=Object.freeze({__proto__:null,config:ft,customMap:pt,disable:mt,event:k,exception:ht,linker:gt,pageview:_t,purchase:vt,query:dt,refund:yt,screenview:bt,set:(function(){var e=[...arguments];dt.apply(void 0,[`set`].concat(e))}),time:(function(){var e=[...arguments];k.apply(void 0,[`timing_complete`].concat(e))})}),St=i(!1),Ct=i(!1),wt=function(){var e=O(),t=e.disableScriptLoader,n=e.preconnectOrigin,r=e.resourceURL,i=e.dataLayerName;if(rt()&&ct.value&&!Ct.value){if(Ct.value=!0,lt.value.forEach(function(e){var t=Object.assign({send_page_view:!1},e.params);dt(`config`,e.id,t)}),t.value){St.value=!0;return}it(`${r.value}?id=${st.value.id}&l=${i.value}`,n.value).then(function(){St.value=!0})}},Tt=function(){_(function(){return ut.value},function(e){return e&&wt()},{immediate:!0})},Et=(function(){if(rt()){var e=O(),t=e.globalObjectName,n=e.dataLayerName;window[t.value]??(window[n.value]=window[n.value]||[],window[t.value]=function(){window[n.value].push(arguments)}),window[t.value](`js`,new Date)}}),Dt=d({template:null,useScreenview:!1,skipSamePath:!0}),Ot=function(){return c(Dt)},kt=function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=Ot(),r=n.template,i=n.useScreenview;return(r.value?r.value(e,t):null)||(i.value?{screen_name:e.name}:{page_title:e.name,page_path:e.path,page_location:window.location.href})},At=function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=Ot(),r=n.useScreenview;if(!(n.skipSamePath.value&&e.path===t.path)){var i=kt(e,t);r.value?bt(i):_t(i)}},jt=function(e){at(Dt,arguments.length>1&&arguments[1]!==void 0?arguments[1]:{}),_(function(){return ut.value},function(t){t&&e.isReady().then(function(){s(function(){At(e.currentRoute.value)}),e.afterEach(function(e,t){s(function(){At(e,t)})})})},{immediate:!0})},Mt={install:function(e){at(ot,arguments.length>1&&arguments[1]!==void 0?arguments[1]:{}),Et(),Tt(),e.config.globalProperties.$gtag=xt}},Nt=({isClient:e,app:t,router:n})=>{e&&(t.use(Mt,{property:{id:`G-1LL0D86CY9`}}),jt(n))},Pt=ee(e=>{Nt(e)}),A={silent:-1/0,fatal:0,error:0,warn:1,log:2,info:3,success:3,fail:3,ready:3,start:3,box:3,debug:4,trace:5,verbose
545:1/0},Ft={silent:{level:-1},fatal:{level:A.fatal},error:{level:A.error},warn:{level:A.warn},log:{level:A.log},info:{level:A.info},success:{level:A.success},fail:{level:A.fail},ready:{level:A.info},start:{level:A.info},box:{level:A.info},debug:{level:A.debug},trace:{level:A.trace},verbose:{level:A.verbose}};function It(e){if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return t!==null&&t!==Object.prototype&&Object.getPrototypeOf(t)!==null||Symbol.iterator in e?!1:Symbol.toStringTag in e?Object.prototype.toString.call(e)===`[object Module]`:!0}function Lt(e,t,n=`.`,r){if(!It(t))return Lt(e,{},n,r);let i=Object.assign({},t);for(let t in e){if(t===`__proto__`||t===`constructor`)continue;let a=e[t];a!=null&&(r&&r(i,t,a,n)||(i[t]=Array.isArray(a)&&Array.isArray(i[t])?[...a,...i[t]]:It(a)&&It(i[t])?Lt(a,i[t],(n?`${n}.`:``)+t.toString(),r):a))}return i}function Rt(e){return(...t)=>t.reduce((t,n)=>Lt(t,n,``,e),{})}var zt=Rt();function Bt(e){return Object.prototype.toString.call(e)===`[object Object]`}function Vt(e){return!(!Bt(e)||!e.message&&!e.args||e.stack)}var Ht=!1,Ut=[],j=class e{options;_lastLog;_mockFn;constructor(e={}){let t=e.types||Ft;this.options=zt({...e,defaults:{...e.defaults},level:Wt(e.level,t),reporters:[...e.reporters||[]]},{types:Ft,throttle:1e3,throttleMin:5,formatOptions:{date:!0,colors:!1,compact:!0}});for(let e in t){let n={type:e,...this.options.defaults,...t[e]};this[e]=this._wrapLogFn(n),this[e].raw=this._wrapLogFn(n,!0)}this.options.mockFn&&this.mockTypes(),this._lastLog={}}get level(){return this.options.level}set level(e){this.options.level=Wt(e,this.options.types,this.options.level)}prompt(e,t){if(!this.options.prompt)throw Error(`prompt is not supported!`);return this.options.prompt(e,t)}create(t){let n=new e({...this.options,...t});return this._mockFn&&n.mockTypes(this._mockFn),n}withDefaults(e){return this.create({...this.options,defaults:{...this.options.defaults,...e}})}withTag(e){return this.withDefaults({tag:this.options.defaults.tag?this.options.defaults.tag+`:`+e:e})}addReporter(e){return this.options.reporters.push(e),this}removeReporter(e){if(e){let t=this.options.reporters.indexOf(e);if(t!==-1)return this.options.reporters.splice(t,1)}else this.options.reporters.splice(0);return this}setReporters(e){return this.options.reporters=Array.isArray(e)?e:[e],this}wrapAll(){this.wrapConsole(),this.wrapStd()}restoreAll(){this.restoreConsole(),this.restoreStd()}wrapConsole(){for(let e in this.options.types)console[`__`+e]||(console[`__`+e]=console[e]),console[e]=this[e].raw}restoreConsole(){for(let e in this.options.types)console[`__`+e]&&(console[e]=console[`__`+e],delete console[`__`+e])}wrapStd(){this._wrapStream(this.options.stdout,`log`),this._wrapStream(this.options.stderr,`log`)}_wrapStream(e,t){e&&(e.__write||=e.write,e.write=e=>{this[t].raw(String(e).trim())})}restoreStd(){this._restoreStream(this.options.stdout),this._restoreStream(this.options.stderr)}_restoreStream(e){e&&e.__write&&(e.write=e.__write,delete e.__write)}pauseLogs(){Ht=!0}resumeLogs(){Ht=!1;let e=Ut.splice(0);for(let t of e)t[0]._logFn(t[1],t[2])}mockTypes(e){let t=e||this.options.mockFn;if(this._mockFn=t,typeof t==`function`)for(let e in this.options.types)this[e]=t(e,this.options.types[e])||this[e],this[e].raw=this[e]}_wrapLogFn(e,t){return(...n)=>{if(Ht){Ut.push([this,e,n,t]);return}return this._logFn(e,n,t)}}_logFn(e,t,n){if((e.level||0)>this.level)return!1;let r={date:new Date,args:[],...e,level:Wt(e.level,this.options.types)};!n&&t.length===1&&Vt(t[0])?Object.assign(r,t[0]):r.args=[...t],r.message&&(r.args.unshift(r.message),delete r.message),r.additional&&(Array.isArray(r.additional)||(r.additional=r.additional.split(`
546`)),r.args.push(`
547`+r.additional.join(`
548`)),delete r.additional),r.type=typeof r.type==`string`?r.type.toLowerCase():`log`,r.tag=typeof r.tag==`string`?r.tag:``;let i=(e=!1)=>{let t=(this._lastLog.count||0)-this.options.throttleMin;if(this._lastLog.object&&t>0){let e=[...this._lastLog.object.args];t>1&&e.push(`(repeated ${t} times)`),this._log({...this._lastLog.object,args:e}),this._lastLog.count=1}e&&(this._lastLog.object=r,this._log(r))};clearTimeout(this._lastLog.timeout);let a=this._lastLog.time&&r.date?r.date.getTime()-this._lastLog.time.getTime():0;if(this._lastLog.time=r.date,a<this.options.throttle)try{let e=JSON.stringify([r.type,r.tag,r.args]),t=this._lastLog.serialized===e;if(this._lastLog.serialized=e,t&&(this._lastLog.count=(this._lastLog.count||0)+1,this._lastLog.count>this.options.throttleMin)){this._lastLog.timeout=setTimeout(i,this.options.throttle);return}}catch{}i(!0)}_log(e){for(let t of this.options.reporters)t.log(e,{options:this.options})}};function Wt(e,t={},n=3){return e===void 0?n:typeof e==`number`?e:t[e]&&t[e].level!==void 0?t[e].level:n}j.prototype.add=j.prototype.addReporter,j.prototype.remove=j.prototype.removeReporter,j.prototype.clear=j.prototype.removeReporter,j.prototype.withScope=j.prototype.withTag,j.prototype.mock=j.prototype.mockTypes,j.prototype.pause=j.prototype.pauseLogs,j.prototype.resume=j.prototype.resumeLogs;function Gt(e={}){return new j(e)}var Kt=class{options;defaultColor;levelColorMap;typeColorMap;constructor(e){this.options={...e},this.defaultColor=`#7f8c8d`,this.levelColorMap={0:`#c0392b`,1:`#f39c12`,3:`#00BCD4`},this.typeColorMap={success:`#2ecc71`}}_getLogFn(e){return e<1?console.__error||console.error:e===1?console.__warn||console.warn:console.__log||console.log}log(e){let t=this._getLogFn(e.level),n=e.type===`log`?``:e.type,r=e.tag||``,i=`
549      background: ${this.typeColorMap[e.type]||this.levelColorMap[e.level]||this.defaultColor};
550      border-radius: 0.5em;
551      color: white;
552      font-weight: bold;
553      padding: 2px 0.5em;
554    `,a=`%c${[r,n].filter(Boolean).join(`:`)}`;typeof e.args[0]==`string`?t(`${a}%c ${e.args[0]}`,i,``,...e.args.slice(1)):t(a,i,...e.args)}};function qt(e={}){return Gt({reporters:e.reporters||[new Kt({})],prompt(e,t={}){return t.type===`confirm`?Promise.resolve(confirm(e)):Promise.resolve(prompt(e))},...e})}qt();var Jt=y({__name:`ValaxyTranslate`,props:{content:{}},setup(e){let{t}=Oe();return(n,r)=>l(E(t)(e.content))}});function Yt(e){e.app.component(`AppLink`,ne),e.app.component(`VT`,Jt)}var Xt=[`top`,`right`,`bottom`,`left`],Zt=[`start`,`end`],Qt=Xt.reduce((e,t)=>e.concat(t,t+`-`+Zt[0],t+`-`+Zt[1]),[]),M=Math.min,N=Math.max,$t=Math.round,P=e=>({x:e,y:e}),en={left:`right`,right:`left`,bottom:`top`,top:`bottom`};function tn(e,t,n){return N(e,M(t,n))}function F(e,t){return typeof e==`function`?e(t):e}function I(e){return e.split(`-`)[0]}function L(e){return e.split(`-`)[1]}function nn(e){return e===`x`?`y`:`x`}function rn(e){return e===`y`?`height`:`width`}function R(e){let t=e[0];return t===`t`||t===`b`?`y`:`x`}function an(e){return nn(R(e))}function on(e,t,n){n===void 0&&(n=!1);let r=L(e),i=an(e),a=rn(i),o=i===`x`?r===(n?`end`:`start`)?`right`:`left`:r===`start`?`bottom`:`top`;return t.reference[a]>t.floating[a]&&(o=hn(o)),[o,hn(o)]}function sn(e){let t=hn(e);return[cn(e),t,cn(t)]}function cn(e){return e.includes(`start`)?e.replace(`start`,`end`):e.replace(`end`,`start`)}var ln=[`left`,`right`],un=[`right`,`left`],dn=[`top`,`bottom`],fn=[`bottom`,`top`];function pn(e,t,n){switch(e){case`top`:case`bottom`:return n?t?un:ln:t?ln:un;case`left`:case`right`:return t?dn:fn;default:return[]}}function mn(e,t,n,r){let i=L(e),a=pn(I(e),n===`start`,r);return i&&(a=a.map(e=>
vendor: 4,369 bytes, line 554
554e+`-`+i),t&&(a=a.concat(a.map(cn)))),a}function hn(e){let t=I(e);return en[t]+e.slice(t.length)}function gn(e){return{top:e.top??0,right:e.right??0,bottom:e.bottom??0,left:e.left??0}}function _n(e){return typeof e==`number`?{top:e,right:e,bottom:e,left:e}:gn(e)}function vn(e){let{x:t,y:n,width:r,height:i}=e;return{width:r,height:i,top:n,left:t,right:t+r,bottom:n+i,x:t,y:n}}function yn(e,t,n){let{reference:r,floating:i}=e,a=R(t),o=an(t),s=rn(o),c=I(t),l=a===`y`,u=r.x+r.width/2-i.width/2,d=r.y+r.height/2-i.height/2,f=r[s]/2-i[s]/2,p;switch(c){case`top`:p={x:u,y:r.y-i.height};break;case`bottom`:p={x:u,y:r.y+r.height};break;case`right`:p={x:r.x+r.width,y:d};break;case`left`:p={x:r.x-i.width,y:d};break;default:p={x:r.x,y:r.y}}let m=L(t);return m&&(p[o]+=f*(m===`end`?1:-1)*(n&&l?-1:1)),p}async function bn(e,t){t===void 0&&(t={});let{x:n,y:r,platform:i,rects:a,elements:o,strategy:s}=e,{boundary:c=`clippingAncestors`,rootBoundary:l=`viewport`,elementContext:u=`floating`,altBoundary:d=!1,padding:f=0}=F(t,e),p=_n(f),m=o[d?u===`floating`?`reference`:`floating`:u],h=vn(await i.getClippingRect({element:await(i.isElement==null?void 0:i.isElement(m))??!0?m:m.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(o.floating)),boundary:c,rootBoundary:l,strategy:s})),g=u===`floating`?{x:n,y:r,width:a.floating.width,height:a.floating.height}:a.reference,_=await(i.getOffsetParent==null?void 0:i.getOffsetParent(o.floating)),v=await(i.isElement==null?void 0:i.isElement(_))&&await(i.getScale==null?void 0:i.getScale(_))||{x:1,y:1},y=vn(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:o,rect:g,offsetParent:_,strategy:s}):g);return{top:(h.top-y.top+p.top)/v.y,bottom:(y.bottom-h.bottom+p.bottom)/v.y,left:(h.left-y.left+p.left)/v.x,right:(y.right-h.right+p.right)/v.x}}var xn=50,Sn=async(e,t,n)=>{let{placement:r=`bottom`,strategy:i=`absolute`,middleware:a=[],platform:o}=n,s=o.detectOverflow?o:{...o,detectOverflow:bn},c=await(o.isRTL==null?void 0:o.isRTL(t)),l=await o.getElementRects({reference:e,floating:t,strategy:i}),{x:u,y:d}=yn(l,r,c),f=r,p=0,m={};for(let n=0;n<a.length;n++){let h=a[n];if(!h)continue;let{name:g,fn:_}=h,{x:v,y,data:b,reset:x}=await _({x:u,y:d,initialPlacement:r,placement:f,strategy:i,middlewareData:m,rects:l,platform:s,elements:{reference:e,floating:t}});u=v??u,d=y??d,m[g]={...m[g],...b},x&&p<xn&&(p++,typeof x==`object`&&(x.placement&&(f=x.placement),x.rects&&(l=x.rects===!0?await o.getElementRects({reference:e,floating:t,strategy:i}):x.rects),{x:u,y:d}=yn(l,f,c)),n=-1)}return{x:u,y:d,placement:f,strategy:i,middlewareData:m}},Cn=e=>({name:`arrow`,options:e,async fn(t){let{x:n,y:r,placement:i,rects:a,platform:o,elements:s,middlewareData:c}=t,{element:l,padding:u=0}=F(e,t)||{};if(l==null)return{};let d=_n(u),f={x:n,y:r},p=an(i),m=rn(p),h=await o.getDimensions(l),g=p===`y`,_=g?`top`:`left`,v=g?`bottom`:`right`,y=g?`clientHeight`:`clientWidth`,b=a.reference[m]+a.reference[p]-f[p]-a.floating[m],x=f[p]-a.reference[p],S=await(o.getOffsetParent==null?void 0:o.getOffsetParent(l)),C=S?S[y]:0;(!C||!await(o.isElement==null?void 0:o.isElement(S)))&&(C=s.floating[y]||a.floating[m]);let w=b/2-x/2,T=C/2-h[m]/2-1,E=M(d[_],T),ee=M(d[v],T),te=C-h[m]-ee,D=C/2-h[m]/2+w,ne=tn(E,D,te),re=!c.arrow&&L(i)!=null&&D!==ne&&a.reference[m]/2-(D<E?E:ee)-h[m]/2<0,ie=re?D<E?D-E:D-te:0;return{[p]:f[p]+ie,data:{[p]:ne,centerOffset:D-ne-ie,...re&&{alignmentOffset:ie}},reset:re}}});function wn(e,t,n){return(e?[...n.filter(t=>L(t)===e),...n.filter(t=>L(t)!==e)]:n.filter(e=>I(e)===e)).filter(n=>!e||L(n)===e||(t?cn(n)!==n:!1))}var Tn=function(e){return e===void 0&&(e={}),{name:`autoPlacement`,options:e,async fn(t){let{rects:n,middlewareData:r,placement:i,platform:a,elements:o}=t,{crossAxis:s=!1,alignment:c,allowedPlacements:l=Qt,autoAlignment:u=!0,...d}=F(e,t),f=c!==void 0||l===Qt?wn(c||null,u,l):l,p=r.autoPlacement?.index||0,m=f[p];if(m==null)return{};if(i!==m)return{reset:{placement:f[0]}};let h=await a.detectOverflow(t,d),g=on(m,n,await(a.isRTL==null?void 0:a.isRTL(o.floating))),_=[h[I(m)],h[g[0]],h[g[1]]],v=[...r.autoPlacement?.overflows||[],{placement:m,overflows:_}],y=f[p+1];if(y)return{data:{index:p+1,overflows:v},reset:{placement:y}};let b=v.map(e=>{let t=L(e.placement);return[e.placement,t&&s?e.overflows.slice(0,2).reduce((e,t)=>
554e+t,0):e.overflows[0],e.overflows]}).sort((e,t)=>e[1]-t[1]),x=b.filter(e=>e[2].slice(0,L(e[0])?2:3).every(e=>e<=0))[0]?.[0]||b[0][0];return x===i?{}:{data:{index:p+1,overflows:v},reset:{placement:x}}}}},En=function(e){return e===void 0&&(e={}),{name:`flip`,options:e,async fn(t){var n;let{placement:r,middlewareData:i,rects:a,initialPlacement:o,platform:s,elements:c}=t,{mainAxis:l=!0,crossAxis:u=!0,fallbackPlacements:d,fallbackStrategy:f=`bestFit`,fallbackAxisSideDirection:p=`none`,flipAlignment:m=!0,...h}=F(e,t);if((n=i.arrow)!=null&&n.alignmentOffset)return{};let g=I(r),_=R(o),v=I(o)===o,y=await(s.isRTL==null?void 0:s.isRTL(c.floating)),b=d||(v||!m?[hn(o)]:sn(o)),x=p!==`none`;!d&&x&&b.push(...mn(o,m,p,y));let S=[o,...b],C=await s.detectOverflow(t,h),w=[],T=i.flip?.overflows||[];if(l&&w.push(C[g]),u){let e=on(r,a,y);w.push(C[e[0]],C[e[1]])}if(T=[...T,{placement:r,overflows:w}],!w.every(e=>e<=0)){let e=(i.flip?.index||0)+1,t=S[e];if(t&&(u!==`alignment`||_===R(t)||T.every(e=>R(e.placement)!==_||e.overflows[0]>0)))return{data:{index:e,overflows:T},reset:{placement:t}};let n=T.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0]?.placement;if(!n)switch(f){case`bestFit`:{let e=T.filter(e=>{if(x){let t=R(e.placement);return t===_||t===`y`}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0]?.[0];e&&(n=e);break}case`initialPlacement`:n=o}if(r!==n)return{reset:{placement:n}}}return{}}}},Dn=new Set([`left`,`top`]);async function On(e,t){let{placement:n,platform:r,elements:i}=e,a=await(r.isRTL==null?void 0:r.isRTL(i.floating)),o=I(n),s=L(n),c=R(n)===`y`,l=Dn.has(o)?-1:1,u=a&&c?-1:1,d=F(t,e),{mainAxis:f,crossAxis:p,alignmentAxis:m}=typeof d==`number`?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return s&&typeof m==`number`&&(p=s===`end`?m*-1:m),c?{x:p*u,y:f*l}:{x:f*l,y:p*u}}var kn=function(e){return e===void 0&&(e=0),{name:`offset`,options:e,async fn(t){var n;let{x:r,y:i,placement:a,middlewareData:o}=t,s=await On(t,e);return a===o.offset?.placement&&(n=o.arrow)!=null&&n.alignmentOffset?{}:{x:r+s.x,y:i+s.y,data:{...s,placement:a}}}}},An=function(e){return e===void 0&&(e={}),{name:`shift`,options:e,async fn(t){let{x:n,y:r,placement:i,platform:a}=t,{mainAxis:o=!0,crossAxis:s=!1,limiter:c={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...l}=F(e,t),u={x:n,y:r},d=await a.detectOverflow(t,l),f=R(i),p=nn(f),m=u[p],h=u[f],g=(e,t)=>tn(t+d[e===`y`?`top`:`left`],t,t-d[e===`y`?`bottom`:`right`]);o&&(m=g(p,m)),s&&(h=g(f,h));let _=c.fn({...t,[p]:m,[f]:h});return{..._,data:{x:_.x-n,y:_.y-r,enabled:{[p]:o,[f]:s}}}}}},jn=function(e){return e===void 0&&(e={}),{name:`size`,options:e,async fn(t){let{placement:n,rects:r,platform:i,elements:a}=t,{apply:o=()=>{},...s}=F(e,t),c=await i.detectOverflow(t,s),l=I(n),u=L(n),d=R(n)===`y`,{width:f,height:p}=r.floating,m,h;l===`top`||l===`bottom`?(m=l,h=u===(await(i.isRTL==null?void 0:i.isRTL(a.floating))?`start`:`end`)?`left`:`right`):(h=l,m=u===`end`?`top`:`bottom`);let g=p-c.top-c.bottom,_=f-c.left-c.right,v=M(p-c[m],g),y=M(f-c[h],_),b=t.middlewareData.shift,x=!b,S=v,C=y;b!=null&&b.enabled.x&&(C=_),b!=null&&b.enabled.y&&(S=g),x&&!u&&(d?C=f-2*N(c.left,c.right):S=p-2*N(c.top,c.bottom)),await o({...t,availableWidth:C,availableHeight:S});let w=await i.getDimensions(a.floating);return f!==w.width||p!==w.height?{reset:{rects:!0}}:{}}}};function Mn(){return typeof window<`u`}function Nn(e){return Pn(e)?(e.nodeName||``).toLowerCase():`#document`}function z(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function B(e){return((Pn(e)?e.ownerDocument:e.document)||window.document)?.documentElement}function Pn(e){return Mn()?e instanceof Node||e instanceof z(e).Node:!1}function V(e){return Mn()?e instanceof Element||e instanceof z(e).Element:!1}function H(e){return Mn()?e instanceof HTMLElement||e instanceof z(e).HTMLElement:!1}function Fn(e){return!Mn()||typeof ShadowRoot>`u`?!1:e instanceof ShadowRoot||e instanceof z(e).ShadowRoot}function In(e){let{overflow:t,overflowX:n,overflowY:r,display:i}=W(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&i!==`inline`&&i!==`contents`}function Ln(e){return/^(table|td|th)$/.test(Nn(e))}function Rn(e){try{if(e.matches(`:popover-open`))return!0}catch{}try{return e.matches(`:modal`)}catch{return!1}}var zn=/transform|translate|scale|rotate|perspective|filter/,Bn=/paint|layout|strict|content/,U=e=>!!e&&e!==`none`,Vn;function Hn(e){let t=V(e)?W(e):e;return U(t.transform)||U(t.translate)||U(t.scale)||U(t.rotate)||U(t.perspective)||!Wn()&&(U(t.backdropFilter)||U(t.filter))||zn.test(t.willChange||``)||Bn.test(t.contain||``)}function Un(e){let t=G(e);for(;H(t)&&!Gn(t);){if(Hn(t))return t;if(Rn(t))return null;t=G(t)}return null}function Wn(){return Vn??=typeof CSS<`u`&&CSS.supports&&CSS.supports(`-webkit-backdrop-filter`,`none`),Vn}function Gn(e){return/^(html|body|#document)$/.test(Nn(e))}function W(e){return z(e).getComputedStyle(e)}function Kn(e){return V(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function G(e){if(Nn(e)===`html`)return e;let t=e.assignedSlot||e.parentNode||Fn(e)&&e.host||B(e);return Fn(t)?t.host:t}function qn(e){let t=G(e);return Gn(t)?(e.ownerDocument||e).body:H(t)&&In(t)?t:qn(t)}
vendor: 4,319 bytes, line 554
554function Jn(e,t,n){t===void 0&&(t=[]),n===void 0&&(n=!0);let r=qn(e),i=r===e.ownerDocument?.body,a=z(r);if(i){let e=Yn(a);return t.concat(a,a.visualViewport||[],In(r)?r:[],e&&n?Jn(e):[])}return t.concat(r,Jn(r,[],n))}function Yn(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function Xn(e){let t=W(e),n=parseFloat(t.width)||0,r=parseFloat(t.height)||0,i=H(e),a=i?e.offsetWidth:n,o=i?e.offsetHeight:r,s=$t(n)!==a||$t(r)!==o;return s&&(n=a,r=o),{width:n,height:r,$:s}}function Zn(e){return V(e)?e:e.contextElement}function Qn(e){let t=Zn(e);if(!H(t))return P(1);let n=t.getBoundingClientRect(),{width:r,height:i,$:a}=Xn(t),o=(a?$t(n.width):n.width)/r,s=(a?$t(n.height):n.height)/i;return(!o||!Number.isFinite(o))&&(o=1),(!s||!Number.isFinite(s))&&(s=1),{x:o,y:s}}var $n=P(0);function er(e){let t=z(e);return!Wn()||!t.visualViewport?$n:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function tr(e,t,n){return t===void 0&&(t=!1),!!n&&t&&n===z(e)}function nr(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);let i=e.getBoundingClientRect(),a=Zn(e),o=P(1);t&&(r?V(r)&&(o=Qn(r)):o=Qn(e));let s=tr(a,n,r)?er(a):P(0),c=(i.left+s.x)/o.x,l=(i.top+s.y)/o.y,u=i.width/o.x,d=i.height/o.y;if(a&&r){let e=z(a),t=V(r)?z(r):r,n=e,i=Yn(n);for(;i&&t!==n;){let e=Qn(i),t=i.getBoundingClientRect(),r=W(i),a=t.left+(i.clientLeft+parseFloat(r.paddingLeft))*e.x,o=t.top+(i.clientTop+parseFloat(r.paddingTop))*e.y;c*=e.x,l*=e.y,u*=e.x,d*=e.y,c+=a,l+=o,n=z(i),i=Yn(n)}}return vn({width:u,height:d,x:c,y:l})}function rr(e,t){let n=Kn(e).scrollLeft;return t?t.left+n:nr(B(e)).left+n}function ir(e,t){let n=e.getBoundingClientRect();return{x:n.left+t.scrollLeft-rr(e,n),y:n.top+t.scrollTop}}function ar(e){let{elements:t,rect:n,offsetParent:r,strategy:i}=e,a=i===`fixed`,o=B(r),s=t?Rn(t.floating):!1;if(r===o||s&&a)return n;let c={scrollLeft:0,scrollTop:0},l=P(1),u=P(0),d=H(r);if((d||!a)&&((Nn(r)!==`body`||In(o))&&(c=Kn(r)),d)){let e=nr(r);l=Qn(r),u.x=e.x+r.clientLeft,u.y=e.y+r.clientTop}let f=o&&!d&&!a?ir(o,c):P(0);return{width:n.width*l.x,height:n.height*l.y,x:n.x*l.x-c.scrollLeft*l.x+u.x+f.x,y:n.y*l.y-c.scrollTop*l.y+u.y+f.y}}function or(e){return e.getClientRects?Array.from(e.getClientRects()):[]}function sr(e){let t=Kn(e),n=e.ownerDocument.body,r=N(e.scrollWidth,e.clientWidth,n.scrollWidth,n.clientWidth),i=N(e.scrollHeight,e.clientHeight,n.scrollHeight,n.clientHeight),a=-t.scrollLeft+rr(e),o=-t.scrollTop;return W(n).direction===`rtl`&&(a+=N(e.clientWidth,n.clientWidth)-r),{width:r,height:i,x:a,y:o}}var cr=25;function lr(e,t,n){n===void 0&&(n=`viewport`);let r=n===`layoutViewport`,i=z(e),a=B(e),o=i.visualViewport,s=a.clientWidth,c=a.clientHeight,l=0,u=0;if(o){let e=!Wn()||t===`fixed`;r?e||(l=-o.offsetLeft,u=-o.offsetTop):(s=o.width,c=o.height,e&&(l=o.offsetLeft,u=o.offsetTop))}if(rr(a)<=0){let e=a.ownerDocument,t=e.body,n=getComputedStyle(t),r=e.compatMode===`CSS1Compat`&&parseFloat(n.marginLeft)+parseFloat(n.marginRight)||0,i=Math.abs(a.clientWidth-t.clientWidth-r),o=getComputedStyle(a).scrollbarGutter===`stable both-edges`?i/2:i;o<=cr&&(s-=o)}return{width:s,height:c,x:l,y:u}}function ur(e,t){let n=nr(e,!0,t===`fixed`),r=n.top+e.clientTop,i=n.left+e.clientLeft,a=Qn(e);return{width:e.clientWidth*a.x,height:e.clientHeight*a.y,x:i*a.x,y:r*a.y}}function dr(e,t,n){let r;if(t===`viewport`||t===`layoutViewport`)r=lr(e,n,t);else if(t===`document`)r=sr(B(e));else if(V(t))r=ur(t,n);else{let n=er(e);r={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return vn(r)}function fr(e,t){let n=t.get(e);if(n)return n;let r=Jn(e,[],!1).filter(e=>V(e)&&Nn(e)!==`body`),i=null,a=W(e).position===`fixed`,o=a?G(e):e;for(;V(o)&&!Gn(o);){let e=W(o),t=Hn(o),n=i?i.position:a?`fixed`:``;!t&&(n===`fixed`||n===`absolute`&&e.position===`static`)?r=r.filter(e=>e!==o):i=e,o=G(o)}return t.set(e,r),r}function pr(e){let{element:t,boundary:n,rootBoundary:r,strategy:i}=e,a=[...n===`clippingAncestors`?Rn(t)?[]:fr(t,this._c):[].concat(n),r],o=dr(t,a[0],i),s=o.top,c=o.right,l=o.bottom,u=o.left;for(let e=1;e<a.length;e++){let n=dr(t,a[e],i);s=N(n.top,s),c=M(n.right,c),l=M(n.bottom,l),u=N(n.left,u)}return{width:c-u,height:l-s,x:u,y:s}}function mr(e){let{width:t,height:n}=Xn(e);return{width:t,height:n}}function hr(e,t,n){let r=H(t),i=B(t),a=n===`fixed`,o=nr(e,!0,a,t),s={scrollLeft:0,scrollTop:0},c=P(0);
554if((r||!a)&&((Nn(t)!==`body`||In(i))&&(s=Kn(t)),r)){let e=nr(t,!0,a,t);c.x=e.x+t.clientLeft,c.y=e.y+t.clientTop}!r&&i&&(c.x=rr(i));let l=i&&!r&&!a?ir(i,s):P(0);return{x:o.left+s.scrollLeft-c.x-l.x,y:o.top+s.scrollTop-c.y-l.y,width:o.width,height:o.height}}function gr(e){return W(e).position===`static`}function _r(e,t){if(!H(e)||W(e).position===`fixed`)return null;if(t)return t(e);let n=e.offsetParent;return B(e)===n&&(n=n.ownerDocument.body),n}function vr(e,t){let n=z(e);if(Rn(e))return n;if(!H(e)){let t=G(e);for(;t&&!Gn(t);){if(V(t)&&!gr(t))return t;t=G(t)}return n}let r=_r(e,t);for(;r&&Ln(r)&&gr(r);)r=_r(r,t);return r&&Gn(r)&&gr(r)&&!Hn(r)?n:r||Un(e)||n}var yr=async function(e){let t=this.getOffsetParent||vr,n=this.getDimensions,r=await n(e.floating);return{reference:hr(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}};function br(e){return W(e).direction===`rtl`}var xr={convertOffsetParentRelativeRectToViewportRelativeRect:ar,getDocumentElement:B,getClippingRect:pr,getOffsetParent:vr,getElementRects:yr,getClientRects:or,getDimensions:mr,getScale:Qn,isElement:V,isRTL:br},Sr=kn,Cr=Tn,wr=An,Tr=En,Er=jn,Dr=Cn,Or=(e,t,n)=>{let r=new Map,i=n??{},a={...xr,...i.platform,_c:r};return Sn(e,t,{...i,platform:a})},kr=`5.4.0`;function Ar(e,t){for(let n in t)Object.hasOwn(t,n)&&(typeof t[n]==`object`&&e[n]?Ar(e[n],t[n]):e[n]=t[n])}var K={disabled:!1,distance:5,skidding:0,container:`body`,boundary:void 0,instantMove:!1,disposeTimeout:150,popperTriggers:[],strategy:`absolute`,preventOverflow:!0,flip:!0,shift:!0,overflowPadding:0,arrowPadding:0,arrowOverflow:!0,autoHideOnMousedown:!1,themes:{tooltip:{placement:`top`,triggers:[`hover`,`focus`,`touch`],hideTriggers:e=>[...e,`click`],delay:{show:200,hide:0},handleResize:!1,html:!1,loadingContent:`...`},dropdown:{placement:`bottom`,triggers:[`click`],delay:0,handleResize:!0,autoHide:!0},menu:{$extend:`dropdown`,triggers:[`hover`,`focus`],popperTriggers:[`hover`],delay:{show:0,hide:400}}}};function jr(e,t){let n=K.themes[e]||{},r;do r=n[t],r===void 0?n.$extend?n=K.themes[n.$extend]||{}:(n=null,r=K[t]):n=null;while(n);return r}function Mr(e){let t=[e],n=K.themes[e]||{};do n.$extend&&!n.$resetCss?(t.push(n.$extend),n=K.themes[n.$extend]||{}):n=null;while(n);return t.map(e=>`v-popper--theme-${e}`)}function Nr(e){let t=[e],n=K.themes[e]||{};do n.$extend?(t.push(n.$extend),n=K.themes[n.$extend]||{}):n=null;while(n);return t}var Pr=(()=>{if(typeof window>`u`)return!1;let e=!1;try{let t=Object.defineProperty({},"passive",{get(){e=!0}});window.addEventListener(`test`,null,t)}catch{}return e})(),Fr=typeof window<`u`&&typeof navigator<`u`&&/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream,Ir=[`auto`,`top`,`bottom`,`left`,`right`].reduce((e,t)=>e.concat([t,`${t}-start`,`${t}-end`]),[]),Lr={hover:`mouseenter`,focus:`focus`,click:`click`,touch:`touchstart`,pointer:`pointerdown`},Rr={hover:`mouseleave`,focus:`blur`,click:`click`,touch:`touchend`,pointer:`pointerup`};function zr(e,t){let n=e.indexOf(t);n!==-1&&e.splice(n,1)}function Br(){return new Promise(e=>requestAnimationFrame(()=>{requestAnimationFrame(e)}))}var q=[],J=null,Vr={};function Hr(e){let t=Vr[e];return t||=Vr[e]=[],t}var Ur=function(){};typeof window<`u`&&(Ur=window.Element);function Y(e){return function(t){return jr(t.theme,e)}}var Wr=`__floating-vue__popper`,Gr=()=>y({name:`VPopper`,provide(){return{[Wr]:{parentPopper:this}}},inject:{[Wr]:{default:null}},props:{theme:{type:String,required:!0},targetNodes:{type:Function,required:!0},referenceNode:{type:Function,default:null},popperNode:{type:Function,required:!0},shown:{type:Boolean,default:!1},showGroup:{type:String,default:null},ariaId:{default:null},disabled:{type:Boolean,default:Y(`disabled`)},positioningDisabled:{type:Boolean,default:Y(`positioningDisabled`)},placement:{type:String,default:Y(`placement`),validator:e=>Ir.includes(e)},delay:{type:[String,Number,Object],default:Y(`delay`)},distance:{type:[Number,String],default:Y(`distance`)},skidding:{type:[Number,String],default:Y(`skidding`)},triggers:{type:Array,default:Y(`triggers`)},showTriggers:{type:[Array,Function],default:Y(`showTriggers`)},hideTriggers:{type:[Array,Function],default:Y(`hideTriggers`)},popperTriggers:{type:Array,default:Y(`popperTriggers`)},popperShowTriggers:{type:[Array,Function],default:Y(`popperShowTriggers`)},popperHideTriggers:{type:[Array,Function],default:Y(`popperHideTriggers`)}
vendor: 11,555 bytes, line 554
554,container:{type:[String,Object,Ur,Boolean],default:Y(`container`)},boundary:{type:[String,Ur],default:Y(`boundary`)},strategy:{type:String,validator:e=>[`absolute`,`fixed`].includes(e),default:Y(`strategy`)},autoHide:{type:[Boolean,Function],default:Y(`autoHide`)},handleResize:{type:Boolean,default:Y(`handleResize`)},instantMove:{type:Boolean,default:Y(`instantMove`)},eagerMount:{type:Boolean,default:Y(`eagerMount`)},popperClass:{type:[String,Array,Object],default:Y(`popperClass`)},computeTransformOrigin:{type:Boolean,default:Y(`computeTransformOrigin`)},autoMinSize:{type:Boolean,default:Y(`autoMinSize`)},autoSize:{type:[Boolean,String],default:Y(`autoSize`)},autoMaxSize:{type:Boolean,default:Y(`autoMaxSize`)},autoBoundaryMaxSize:{type:Boolean,default:Y(`autoBoundaryMaxSize`)},preventOverflow:{type:Boolean,default:Y(`preventOverflow`)},overflowPadding:{type:[Number,String],default:Y(`overflowPadding`)},arrowPadding:{type:[Number,String],default:Y(`arrowPadding`)},arrowOverflow:{type:Boolean,default:Y(`arrowOverflow`)},flip:{type:Boolean,default:Y(`flip`)},shift:{type:Boolean,default:Y(`shift`)},shiftCrossAxis:{type:Boolean,default:Y(`shiftCrossAxis`)},noAutoFocus:{type:Boolean,default:Y(`noAutoFocus`)},disposeTimeout:{type:Number,default:Y(`disposeTimeout`)}},emits:{show:()=>!0,hide:()=>!0,"update:shown":e=>!0,"apply-show":()=>!0,"apply-hide":()=>!0,"close-group":()=>!0,"close-directive":()=>!0,"auto-hide":()=>!0,resize:()=>!0},data(){return{isShown:!1,isMounted:!1,skipTransition:!1,classes:{showFrom:!1,showTo:!1,hideFrom:!1,hideTo:!0},result:{x:0,y:0,placement:``,strategy:this.strategy,arrow:{x:0,y:0,centerOffset:0},transformOrigin:null},randomId:`popper_${[Math.random(),Date.now()].map(e=>e.toString(36).substring(2,10)).join(`_`)}`,shownChildren:new Set,lastAutoHide:!0,pendingHide:!1,containsGlobalTarget:!1,isDisposed:!0,mouseDownContains:!1}},computed:{popperId(){return this.ariaId??this.randomId},shouldMountContent(){return this.eagerMount||this.isMounted},slotData(){return{popperId:this.popperId,isShown:this.isShown,shouldMountContent:this.shouldMountContent,skipTransition:this.skipTransition,autoHide:typeof this.autoHide==`function`?this.lastAutoHide:this.autoHide,show:this.show,hide:this.hide,handleResize:this.handleResize,onResize:this.onResize,classes:{...this.classes,popperClass:this.popperClass},result:this.positioningDisabled?null:this.result,attrs:this.$attrs}},parentPopper(){return this[Wr]?.parentPopper},hasPopperShowTriggerHover(){return this.popperTriggers?.includes(`hover`)||this.popperShowTriggers?.includes(`hover`)}},watch:{shown:`$_autoShowHide`,disabled(e){e?this.dispose():this.init()},async container(){this.isShown&&(this.$_ensureTeleport(),await this.$_computePosition())},triggers:{handler:`$_refreshListeners`,deep:!0},positioningDisabled:`$_refreshListeners`,...[`placement`,`distance`,`skidding`,`boundary`,`strategy`,`overflowPadding`,`arrowPadding`,`preventOverflow`,`shift`,`shiftCrossAxis`,`flip`].reduce((e,t)=>(e[t]=`$_computePosition`,e),{})},created(){this.autoMinSize&&console.warn('[floating-vue] `autoMinSize` option is deprecated. Use `autoSize="min"` instead.'),this.autoMaxSize&&console.warn("[floating-vue] `autoMaxSize` option is deprecated. Use `autoBoundaryMaxSize` instead.")},mounted(){this.init(),this.$_detachPopperNode()},activated(){this.$_autoShowHide()},deactivated(){this.hide()},beforeUnmount(){this.dispose()},methods:{show({event:e=null,skipDelay:t=!1,force:n=!1}={}){this.parentPopper?.lockedChild&&this.parentPopper.lockedChild!==this||(this.pendingHide=!1,(n||!this.disabled)&&(this.parentPopper?.lockedChild===this&&(this.parentPopper.lockedChild=null),this.$_scheduleShow(e,t),this.$emit(`show`),this.$_showFrameLocked=!0,requestAnimationFrame(()=>{this.$_showFrameLocked=!1})),this.$emit(`update:shown`,!0))},hide({event:e=null,skipDelay:t=!1}={}){if(!this.$_hideInProgress){if(this.shownChildren.size>0){this.pendingHide=!0;return}if(this.hasPopperShowTriggerHover&&this.$_isAimingPopper()){this.parentPopper&&(this.parentPopper.lockedChild=this,this.parentPopper.lockedChildTimer&&clearTimeout(this.parentPopper.lockedChildTimer),this.parentPopper.lockedChildTimer=setTimeout(()=>{this.parentPopper.lockedChild===this&&(this.parentPopper.lockedChild.hide({skipDelay:t}),this.parentPopper.lockedChild=null)},1e3));return}this.parentPopper?.lockedChild===this&&(this.parentPopper.lockedChild=null),this.pendingHide=!1,this.$_scheduleHide(e,t),this.$emit(`hide`),this.$emit(`update:shown`,!1)}},init(){this.isDisposed&&(this.isDisposed=!1,this.isMounted=!1,this.$_events=[],this.$_preventShow=!1,this.$_referenceNode=this.referenceNode?.call(this)??this.$el,this.$_targetNodes=this.targetNodes().filter(e=>e.nodeType===e.ELEMENT_NODE),this.$_popperNode=this.popperNode(),this.$_innerNode=this.$_popperNode.querySelector(`.v-popper__inner`),this.$_arrowNode=this.$_popperNode.querySelector(`.v-popper__arrow-container`),this.$_swapTargetAttrs(`title`,`data-original-title`),this.$_detachPopperNode(),this.triggers.length&&this.$_addEventListeners(),this.shown&&this.show())},dispose(){this.isDisposed||(this.isDisposed=!0,this.$_removeEventListeners(),this.hide({skipDelay:!0}),this.$_detachPopperNode(),this.isMounted=!1,this.isShown=!1,this.$_updateParentShownChildren(!1),this.$_swapTargetAttrs(`data-original-title`,`title`))},async onResize(){this.isShown&&(await this.$_computePosition(),this.$emit(`resize`))},async $_computePosition(){if(this.isDisposed||this.positioningDisabled)return;let e={strategy:this.strategy,middleware:[]};(this.distance||this.skidding)&&e.middleware.push(Sr({mainAxis:this.distance,crossAxis:this.skidding}));let t=this.placement.startsWith(`auto`);if(t?e.middleware.push(Cr({alignment:this.placement.split(`-`)[1]??``})):e.placement=this.placement,this.preventOverflow&&(this.shift&&e.middleware.push(wr({padding:this.overflowPadding,boundary:this.boundary,crossAxis:this.shiftCrossAxis})),!t&&this.flip&&e.middleware.push(Tr({padding:this.overflowPadding,boundary:this.boundary}))),e.middleware.push(Dr({element:this.$_arrowNode,padding:this.arrowPadding})),this.arrowOverflow&&e.middleware.push({name:`arrowOverflow`,fn:({placement:e,rects:t,middlewareData:n})=>{let r,{centerOffset:i}=n.arrow;return r=e.startsWith(`top`)||e.startsWith(`bottom`)?Math.abs(i)>t.reference.width/2:Math.abs(i)>t.reference.height/2,{data:{overflow:r}}}}),this.autoMinSize||this.autoSize){let t=this.autoSize?this.autoSize:this.autoMinSize?`min`:null;e.middleware.push({name:`autoSize`,fn:({rects:e,placement:n,middlewareData:r})=>{if(r.autoSize?.skip)return{};let i,a;return n.startsWith(`top`)||n.startsWith(`bottom`)?i=e.reference.width:a=e.reference.height,this.$_innerNode.style[t===`min`?`minWidth`:t===`max`?`maxWidth`:`width`]=i==null?null:`${i}px`,this.$_innerNode.style[t===`min`?`minHeight`:t===`max`?`maxHeight`:`height`]=a==null?null:`${a}px`,{data:{skip:!0},reset:{rects:!0}}}})}(this.autoMaxSize||this.autoBoundaryMaxSize)&&(this.$_innerNode.style.maxWidth=null,this.$_innerNode.style.maxHeight=null,e.middleware.push(Er({boundary:this.boundary,padding:this.overflowPadding,apply:({availableWidth:e,availableHeight:t})=>{this.$_innerNode.style.maxWidth=e==null?null:`${e}px`,this.$_innerNode.style.maxHeight=t==null?null:`${t}px`}})));let n=await Or(this.$_referenceNode,this.$_popperNode,e);Object.assign(this.result,{x:n.x,y:n.y,placement:n.placement,strategy:n.strategy,arrow:{...n.middlewareData.arrow,...n.middlewareData.arrowOverflow}})},$_scheduleShow(e,t=!1){if(this.$_updateParentShownChildren(!0),this.$_hideInProgress=!1,clearTimeout(this.$_scheduleTimer),J&&this.instantMove&&J.instantMove&&J!==this.parentPopper){J.$_applyHide(!0),this.$_applyShow(!0);return}t?this.$_applyShow():this.$_scheduleTimer=setTimeout(this.$_applyShow.bind(this),this.$_computeDelay(`show`))},$_scheduleHide(e,t=!1){if(this.shownChildren.size>0){this.pendingHide=!0;return}this.$_updateParentShownChildren(!1),this.$_hideInProgress=!0,this.$_scheduleTimer&&clearTimeout(this.$_scheduleTimer),this.isShown&&(J=this),t?this.$_applyHide():this.$_scheduleTimer=setTimeout(this.$_applyHide.bind(this),this.$_computeDelay(`hide`))},$_computeDelay(e){let t=this.delay;return parseInt(t&&t[e]||t||0)},async $_applyShow(e=!1){this.$_disposeTimer&&clearTimeout(this.$_disposeTimer),this.$_scheduleTimer&&clearTimeout(this.$_scheduleTimer),this.skipTransition=e,!this.isShown&&(this.$_ensureTeleport(),await Br(),await this.$_computePosition(),await this.$_applyShowEffect(),this.positioningDisabled||this.$_registerEventListeners([...Jn(this.$_referenceNode),...Jn(this.$_popperNode)],`scroll`,()=>{this.$_computePosition()}))},async $_applyShowEffect(){if(this.$_hideInProgress)return;if(this.computeTransformOrigin){let e=this.$_referenceNode.getBoundingClientRect(),t=this.$_popperNode.querySelector(`.v-popper__wrapper`),n=t.parentNode.getBoundingClientRect(),r=e.x+e.width/2-(n.left+t.offsetLeft),i=e.y+e.height/2-(n.top+t.offsetTop);this.result.transformOrigin=`${r}px ${i}px`}this.isShown=!0,this.$_applyAttrsToTarget({"aria-describedby":this.popperId,"data-popper-shown":``});let e=this.showGroup;if(e){let t;for(let n=0;n<q.length;n++)t=q[n],t.showGroup!==e&&(t.hide(),t.$emit(`close-group`))}q.push(this),document.body.classList.add(`v-popper--some-open`);for(let e of Nr(this.theme))Hr(e).push(this),document.body.classList.add(`v-popper--some-open--${e}`);this.$emit(`apply-show`),this.classes.showFrom=!0,this.classes.showTo=!1,this.classes.hideFrom=!1,this.classes.hideTo=!1,await Br(),this.classes.showFrom=!1,this.classes.showTo=!0,this.noAutoFocus||this.$_popperNode.focus()},async $_applyHide(e=!1){if(this.shownChildren.size>0){this.pendingHide=!0,this.$_hideInProgress=!1;return}if(this.$_scheduleTimer&&clearTimeout(this.$_scheduleTimer),!this.isShown)return;this.skipTransition=e,zr(q,this),q.length===0&&document.body.classList.remove(`v-popper--some-open`);for(let e of Nr(this.theme)){let t=Hr(e);zr(t,this),t.length===0&&document.body.classList.remove(`v-popper--some-open--${e}`)}J===this&&(J=null),this.isShown=!1,this.$_applyAttrsToTarget({"aria-describedby":void 0,"data-popper-shown":void 0}),this.$_disposeTimer&&clearTimeout(this.$_disposeTimer);let t=this.disposeTimeout;t!==null&&(this.$_disposeTimer=setTimeout(()=>{this.$_popperNode&&(this.$_detachPopperNode(),this.isMounted=!1)},t)),this.$_removeEventListeners(`scroll`),this.$emit(`apply-hide`),this.classes.showFrom=!1,this.classes.showTo=!1,this.classes.hideFrom=!0,this.classes.hideTo=!1,await Br(),this.classes.hideFrom=!1,this.classes.hideTo=!0},$_autoShowHide(){this.shown?this.show():this.hide()},$_ensureTeleport(){if(this.isDisposed)return;let e=this.container;if(typeof e==`string`?e=window.document.querySelector(e):e===!1&&(e=this.$_targetNodes[0].parentNode),!e)throw Error(`No container for popover: ${this.container}`);e.appendChild(this.$_popperNode),this.isMounted=!0},$_addEventListeners(){let e=e=>{(!this.isShown||this.$_hideInProgress)&&(e.usedByTooltip=!0,!this.$_preventShow&&this.show({event:e}))};this.$_registerTriggerListeners(this.$_targetNodes,Lr,this.triggers,this.showTriggers,e),this.$_registerTriggerListeners([this.$_popperNode],Lr,this.popperTriggers,this.popperShowTriggers,e);let t=e=>{e.usedByTooltip||this.hide({event:e})};this.$_registerTriggerListeners(this.$_targetNodes,Rr,this.triggers,this.hideTriggers,t),this.$_registerTriggerListeners([this.$_popperNode],Rr,this.popperTriggers,this.popperHideTriggers,t)},$_registerEventListeners(e,t,n){this.$_events.push({targetNodes:e,eventType:t,handler:n}
554),e.forEach(e=>e.addEventListener(t,n,Pr?{passive:!0}:void 0))},$_registerTriggerListeners(e,t,n,r,i){let a=n;r!=null&&(a=typeof r==`function`?r(a):r),a.forEach(n=>{let r=t[n];r&&this.$_registerEventListeners(e,r,i)})},$_removeEventListeners(e){let t=[];this.$_events.forEach(n=>{let{targetNodes:r,eventType:i,handler:a}=n;!e||e===i?r.forEach(e=>e.removeEventListener(i,a)):t.push(n)}),this.$_events=t},$_refreshListeners(){this.isDisposed||(this.$_removeEventListeners(),this.$_addEventListeners())},$_handleGlobalClose(e,t=!1){this.$_showFrameLocked||(this.hide({event:e}),e.closePopover?this.$emit(`close-directive`):this.$emit(`auto-hide`),t&&(this.$_preventShow=!0,setTimeout(()=>{this.$_preventShow=!1},300)))},$_detachPopperNode(){this.$_popperNode.parentNode&&this.$_popperNode.parentNode.removeChild(this.$_popperNode)},$_swapTargetAttrs(e,t){for(let n of this.$_targetNodes){let r=n.getAttribute(e);r&&(n.removeAttribute(e),n.setAttribute(t,r))}},$_applyAttrsToTarget(e){for(let t of this.$_targetNodes)for(let n in e){let r=e[n];r==null?t.removeAttribute(n):t.setAttribute(n,r)}},$_updateParentShownChildren(e){let t=this.parentPopper;for(;t;)e?t.shownChildren.add(this.randomId):(t.shownChildren.delete(this.randomId),t.pendingHide&&t.hide()),t=t.parentPopper},$_isAimingPopper(){let e=this.$_referenceNode.getBoundingClientRect();if(Qr>=e.left&&Qr<=e.right&&$r>=e.top&&$r<=e.bottom){let e=this.$_popperNode.getBoundingClientRect(),t=Qr-X,n=$r-Z,r=e.left+e.width/2-X+(e.top+e.height/2)-Z+e.width+e.height,i=X+t*r,a=Z+n*r;return ei(X,Z,i,a,e.left,e.top,e.left,e.bottom)||ei(X,Z,i,a,e.left,e.top,e.right,e.top)||ei(X,Z,i,a,e.right,e.top,e.right,e.bottom)||ei(X,Z,i,a,e.left,e.bottom,e.right,e.bottom)}return!1}},render(){return this.$slots.default(this.slotData)}});if(typeof document<`u`&&typeof window<`u`){if(Fr){let e=!Pr||{passive:!0,capture:!0};document.addEventListener(`touchstart`,e=>Kr(e,!0),e),document.addEventListener(`touchend`,e=>qr(e,!0),e)}else window.addEventListener(`mousedown`,e=>Kr(e,!1),!0),window.addEventListener(`click`,e=>qr(e,!1),!0);window.addEventListener(`resize`,Zr)}function Kr(e,t){if(K.autoHideOnMousedown)Jr(e,t);else for(let t=0;t<q.length;t++){let n=q[t];try{n.mouseDownContains=n.popperNode().contains(e.target)}catch{}}}function qr(e,t){K.autoHideOnMousedown||Jr(e,t)}function Jr(e,t){let n={};for(let r=q.length-1;r>=0;r--){let i=q[r];try{let r=Array.from(i.shownChildren).some(t=>{let n=q.find(e=>e.randomId===t);return n&&n.popperNode().contains(e.target)}),a=i.containsGlobalTarget=i.mouseDownContains||i.popperNode().contains(e.target)||r;i.pendingHide=!1,requestAnimationFrame(()=>{if(i.pendingHide=!1,!n[i.randomId]&&Yr(i,a,e)){if(i.$_handleGlobalClose(e,t),!e.closeAllPopover&&e.closePopover&&a){let e=i.parentPopper;for(;e;)n[e.randomId]=!0,e=e.parentPopper;return}let r=i.parentPopper;for(;r&&Yr(r,r.containsGlobalTarget,e);)r.$_handleGlobalClose(e,t),r=r.parentPopper}})}catch{}}}function Yr(e,t,n){return n.closeAllPopover||n.closePopover&&t||Xr(e,n)&&!t}function Xr(e,t){if(typeof e.autoHide==`function`){let n=e.autoHide(t);return e.lastAutoHide=n,n}return e.autoHide}function Zr(){for(let e=0;e<q.length;e++)q[e].$_computePosition()}var X=0,Z=0,Qr=0,$r=0;typeof window<`u`&&window.addEventListener(`mousemove`,e=>{X=Qr,Z=$r,Qr=e.clientX,$r=e.clientY},Pr?{passive:!0}:void 0);function ei(e,t,n,r,i,a,o,s){let c=((o-i)*(t-a)-(s-a)*(e-i))/((s-a)*(n-e)-(o-i)*(r-t)),l=((n-e)*(t-a)-(r-t)*(e-i))/((s-a)*(n-e)-(o-i)*(r-t));return c>=0&&c<=1&&l>=0&&l<=1}var ti=y({extends:Gr(),render(){var e;return x(`div`,{ref:`reference`,class:[`v-popper`,{"v-popper--shown":this.slotData.isShown}]},(e=this.$slots).default?.call(e,this.slotData))}}),ni=(e=`theme`)=>({computed:{themeClass(){return Mr(this[e])}}}),ri=y({name:`VPopperContent`,mixins:[ni()],props:{popperId:String,theme:String,shown:Boolean,mounted:Boolean,skipTransition:Boolean,autoHide:Boolean,handleResize:Boolean,classes:Object,result:Object},emits:[`hide`,`resize`],mounted(){this.handleResize&&(this.$_resizeObserver=new ResizeObserver(()=>this.$emit(`resize`)),this.$_resizeObserver.observe(this.$refs.inner))},beforeUnmount(){var e;(e=this.$_resizeObserver)==null||e.disconnect()},methods:{toPx(e){return e!=null&&!Number.isNaN(e)?`${e}px`:null}},render(){var e;let{autoHide:t,classes:n,result:r,shown:i}=this;return x(`div`,{id:this.popperId,ref:`popover`,"data-allow-mismatch":``,class:[`v-popper__popper`,this.themeClass,n.popperClass,{"v-popper__popper--shown":i,"v-popper__popper--hidden":!i,"v-popper__popper--show-from":n.showFrom,"v-popper__popper--show-to":n.showTo,"v-popper__popper--hide-from":n.hideFrom,"v-popper__popper--hide-to":n.hideTo,"v-popper__popper--skip-transition":this.skipTransition,"v-popper__popper--arrow-overflow":r&&r.arrow.overflow,"v-popper__popper--no-positioning":!r}],style:r?{position:r.strategy,transform:`translate3d(${Math.round(r.x)}px,${Math.round(r.y)}px,0)`}:void 0,"aria-hidden":i||t?`false`:`true`,tabindex:t?0:void 0,"data-popper-placement":r?r.placement:void 0,onKeyup:e=>{e.key===`Escape`&&t&&this.$emit(`hide`)}},[x(`div`,{class:`v-popper__backdrop`,onClick:()=>t&&this.$emit(`hide`)}),x(`div`,{class:`v-popper__wrapper`,style:r?{transformOrigin:r.transformOrigin}:void 0},[x(`div`,{ref:`inner`,class:`v-popper__inner`},this.mounted?[x(`div`,(e=this.$slots).default?.call(e))]:void 0),x(`div`,{ref:`arrow`,class:`v-popper__arrow-container`,style:r?{left:this.toPx(r.arrow.x),top:this.toPx(r.arrow.y)}:void 0},[x(`div`,{class:`v-popper__arrow-outer`}),x(`div`,{class:`v-popper__arrow-inner`})])])])}}),ii={methods:{show(...e){return this.$refs.popper.show(...e)},hide(...e){return this.$refs.popper.hide(...e)},dispose(...e){return this.$refs.popper.dispose(...e)},onResize(...e){return this.$refs.popper.onResize(...e)}}},ai=function(){};typeof window<`u`&&(ai=window.Element);
554var oi=y({name:`VPopperWrapper`,mixins:[ii,ni(`finalTheme`)],props:{theme:{type:String,default:null},referenceNode:{type:Function,default:null},shown:{type:Boolean,default:!1},showGroup:{type:String,default:null},ariaId:{default:null},disabled:{type:Boolean,default:void 0},positioningDisabled:{type:Boolean,default:void 0},placement:{type:String,default:void 0},delay:{type:[String,Number,Object],default:void 0},distance:{type:[Number,String],default:void 0},skidding:{type:[Number,String],default:void 0},triggers:{type:Array,default:void 0},showTriggers:{type:[Array,Function],default:void 0},hideTriggers:{type:[Array,Function],default:void 0},popperTriggers:{type:Array,default:void 0},popperShowTriggers:{type:[Array,Function],default:void 0},popperHideTriggers:{type:[Array,Function],default:void 0},container:{type:[String,Object,ai,Boolean],default:void 0},boundary:{type:[String,ai],default:void 0},strategy:{type:String,default:void 0},autoHide:{type:[Boolean,Function],default:void 0},handleResize:{type:Boolean,default:void 0},instantMove:{type:Boolean,default:void 0},eagerMount:{type:Boolean,default:void 0},popperClass:{type:[String,Array,Object],default:void 0},computeTransformOrigin:{type:Boolean,default:void 0},autoMinSize:{type:Boolean,default:void 0},autoSize:{type:[Boolean,String],default:void 0},autoMaxSize:{type:Boolean,default:void 0},autoBoundaryMaxSize:{type:Boolean,default:void 0},preventOverflow:{type:Boolean,default:void 0},overflowPadding:{type:[Number,String],default:void 0},arrowPadding:{type:[Number,String],default:void 0},arrowOverflow:{type:Boolean,default:void 0},flip:{type:Boolean,default:void 0},shift:{type:Boolean,default:void 0},shiftCrossAxis:{type:Boolean,default:void 0},noAutoFocus:{type:Boolean,default:void 0},disposeTimeout:{type:Number,default:void 0}},emits:{show:()=>!0,hide:()=>!0,"update:shown":e=>!0,"apply-show":()=>!0,"apply-hide":()=>!0,"close-group":()=>!0,"close-directive":()=>!0,"auto-hide":()=>!0,resize:()=>!0},computed:{finalTheme(){return this.theme??this.$options.vPopperTheme}},methods:{getTargetNodes(){return Array.from(this.$el.children).filter(e=>e!==this.$refs.popperContent.$el)}},render(){return x(ti,{ref:`popper`,...this.$props,theme:this.finalTheme,targetNodes:this.getTargetNodes,popperNode:()=>this.$refs.popperContent.$el,class:[this.themeClass],onShow:()=>this.$emit(`show`),onHide:()=>this.$emit(`hide`),"onUpdate:shown":e=>this.$emit(`update:shown`,e),onApplyShow:()=>this.$emit(`apply-show`),onApplyHide:()=>this.$emit(`apply-hide`),onCloseGroup:()=>this.$emit(`close-group`),onCloseDirective:()=>this.$emit(`close-directive`),onAutoHide:()=>this.$emit(`auto-hide`),onResize:()=>this.$emit(`resize`)},{default:({popperId:e,isShown:t,shouldMountContent:n,skipTransition:r,autoHide:i,show:a,hide:o,handleResize:s,onResize:c,classes:l,result:u})=>{var d;return[(d=this.$slots).default?.call(d,{shown:t,show:a,hide:o}),x(ri,{ref:`popperContent`,popperId:e,theme:this.finalTheme,shown:t,mounted:n,skipTransition:r,autoHide:i,handleResize:s,classes:l,result:u,onHide:o,onResize:c},{default:()=>{var e;return(e=this.$slots).popper?.call(e,{shown:t,hide:o})}})]}})}});function si(e,t){return{...oi,name:e,vPopperTheme:t}}var ci=si(`VDropdown`,`dropdown`),li=si(`VMenu`,`menu`),ui=si(`VTooltip`,`tooltip`),di=Gr(),fi=y({name:`VTooltipDirective`,mixins:[ii],inheritAttrs:!1,props:{theme:{type:String,default:`tooltip`},html:{type:Boolean,default:e=>jr(e.theme,`html`)},content:{type:[String,Number,Function],default:null},loadingContent:{type:String,default:e=>jr(e.theme,`loadingContent`)},targetNodes:{type:Function,required:!0}},data(){return{asyncContent:null}},computed:{isContentAsync(){return typeof this.content==`function`},loading(){return this.isContentAsync&&this.asyncContent==null},finalContent(){return this.isContentAsync?this.loading?this.loadingContent:this.asyncContent:this.content}},watch:{content:{handler(){this.fetchContent(!0)},immediate:!0},async finalContent(){await this.$nextTick(),this.$refs.popper.onResize()}},created(){this.$_fetchId=0},methods:{fetchContent(e){if(typeof this.content==`function`&&this.$_isShown&&(e||!this.$_loading&&this.asyncContent==null)){this.asyncContent=null,this.$_loading=!0;let e=++this.$_fetchId,t=this.content(this);t.then?t.then(t=>this.onResult(e,t)):this.onResult(e,t)}},onResult(e,t){e===this.$_fetchId&&(this.$_loading=!1,this.asyncContent=t)},onShow(){this.$_isShown=!0,this.fetchContent()},onHide(){this.$_isShown=!1}},render(){return x(di,{ref:`popper`,...this.$attrs,theme:this.theme,targetNodes:this.targetNodes,popperNode:()=>this.$refs.popperContent.$el,onApplyShow:this.onShow,onApplyHide:this.onHide},{default:({popperId:e,isShown:t,shouldMountContent:n,skipTransition:r,autoHide:i,hide:a,handleResize:o,onResize:s,classes:c,result:l})=>x(ri,{ref:`popperContent`,class:{"v-popper--tooltip-loading":this.loading},popperId:e,theme:this.theme,shown:t,mounted:n,skipTransition:r,autoHide:i,handleResize:o,classes:c,result:l,onHide:a,onResize:s},{default:()=>this.html?x(`div`,{innerHTML:this.finalContent}):x(`div`,{textContent:this.finalContent})})})}}),pi=`v-popper--has-tooltip`;function mi(e,t){let n=e.placement;if(!n&&t)for(let e of Ir)t[e]&&(n=e);return n||=jr(e.theme||`tooltip`,`placement`),n}function hi(e,t,n){let r,i=typeof t;return r=i===`string`?{content:t}:t&&i===`object`?t:{content:!1},r.placement=mi(r,n),r.targetNodes=()=>[e],r.referenceNode=()=>e,r}var gi,_i,vi=0;function yi(){if(gi)return;_i=i([]),gi=b({name:`VTooltipDirectiveApp`,setup(){return{directives:_i}},render(){return this.directives.map(e=>x(fi,{...e.options,shown:e.shown||e.options.shown,key:e.id}))},devtools:{hide:!0}});let e=document.createElement(`div`);document.body.appendChild(e),gi.mount(e)}function bi(e,t,n){yi();let r=i(hi(e,t,n)),a=i(!1),o={id:vi++,options:r,shown:a};return _i.value.push(o),e.classList&&e.classList.add(pi),e.$_popper={options:r,item:o,show(){a.value=!0},hide(){a.value=!1}}}function xi(e){if(e.$_popper){let t=_i.value.indexOf(e.$_popper.item);t!==-1&&_i.value.splice(t,1),delete e.$_popper,delete e.$_popperOldShown,delete e.$_popperMountTarget}e.classList&&e.classList.remove(pi)}function Si(e,{value:t,modifiers:n}){let r=hi(e,t,n);if(!r.content||jr(r.theme||`tooltip`,`disabled`))xi(e);else{let i;
554e.$_popper?(i=e.$_popper,i.options.value=r):i=bi(e,t,n),t.shown!==void 0&&t.shown!==e.$_popperOldShown&&(e.$_popperOldShown=t.shown,t.shown?i.show():i.hide())}}var Ci={beforeMount:Si,updated:Si,beforeUnmount(e){xi(e)}};function wi(e){e.addEventListener(`mousedown`,Ei),e.addEventListener(`click`,Ei),e.addEventListener(`touchstart`,Di,Pr?{passive:!0}:!1)}function Ti(e){e.removeEventListener(`mousedown`,Ei),e.removeEventListener(`click`,Ei),e.removeEventListener(`touchstart`,Di),e.removeEventListener(`touchend`,Oi),e.removeEventListener(`touchcancel`,ki)}function Ei(e){let t=e.currentTarget;e.closePopover=!t.$_vclosepopover_touch,e.closeAllPopover=t.$_closePopoverModifiers&&!!t.$_closePopoverModifiers.all}function Di(e){if(e.changedTouches.length===1){let t=e.currentTarget;t.$_vclosepopover_touch=!0,t.$_vclosepopover_touchPoint=e.changedTouches[0],t.addEventListener(`touchend`,Oi),t.addEventListener(`touchcancel`,ki)}}function Oi(e){let t=e.currentTarget;if(t.$_vclosepopover_touch=!1,e.changedTouches.length===1){let n=e.changedTouches[0],r=t.$_vclosepopover_touchPoint;e.closePopover=Math.abs(n.screenY-r.screenY)<20&&Math.abs(n.screenX-r.screenX)<20,e.closeAllPopover=t.$_closePopoverModifiers&&!!t.$_closePopoverModifiers.all}}function ki(e){let t=e.currentTarget;t.$_vclosepopover_touch=!1}var Ai={beforeMount(e,{value:t,modifiers:n}){e.$_closePopoverModifiers=n,(t===void 0||t)&&wi(e)},updated(e,{value:t,oldValue:n,modifiers:r}){e.$_closePopoverModifiers=r,t!==n&&(t===void 0||t?wi(e):Ti(e))},beforeUnmount(e){Ti(e)}};function ji(e,t={}){if(!e.$_vTooltipInstalled){e.$_vTooltipInstalled=!0,Ar(K,t),e.directive(`tooltip`,Ci),e.directive(`close-popper`,Ai);for(let t of[ui,ci,li])e.component(t.name,t)}}var Mi={version:kr,install:ji,options:K};async function Ni({app:e},t){e.use(Mi,Object.assign({},t.value.siteConfig.floatingVue||{}))}var Pi=e(Pe(),1),Fi=({isClient:e,router:t})=>{e&&(t.beforeEach((e,t)=>{e.path!==t.path&&Pi.default.start()}),t.afterEach(()=>{Pi.default.done()}))},Ii=({isClient:e,initialState:t,app:n})=>{let r=Me();n.use(r),e?r.state.value=t.pinia||{}:t.pinia=r.state.value},Li=async({head:e,isClient:t})=>{t||e?.use(be())},Ri={site:{name:{t:0,b:{t:2,i:[{t:3}],s:`云游君的小站`}}},tooltip:{t:0,b:{t:2,i:[{t:3}],s:`祝你玩的开心!`}},message:{projects:{t:0,b:{t:2,i:[{t:3}],s:`要看看我别的项目吗?`}}},tab:{sponsor_list:{t:0,b:{t:2,i:[{t:3}],s:`经济赞助`}},other_sponsors:{t:0,b:{t:2,i:[{t:3}],s:`其他赞助`}},expense:{t:0,b:{t:2,i:[{t:3}],s:`当前支出`}}}},zi={site:{name:{t:0,b:{t:2,i:[{t:3}],s:`YunYouJun's Site`}}},tooltip:{t:0,b:{t:2,i:[{t:3}],s:`Have fun!`}},message:{projects:{t:0,b:{t:2,i:[{t:3}],s:`Would you like to see my other projects?`}}},tab:{sponsor_list:{t:0,b:{t:2,i:[{t:3}],s:`Sponsor List`}},other_sponsors:{t:0,b:{t:2,i:[{t:3}],s:`Other Sponsor`}},expense:{t:0,b:{t:2,i:[{t:3}],s:`Expense`}}}},Bi={addon:{girls:{label:{t:0,b:{t:2,i:[{t:3}],s:`角色收藏`}},loading:{t:0,b:{t:2,i:[{t:3}],s:`正在加载角色名单`}},error:{t:0,b:{t:2,i:[{t:3}],s:`名单暂时没有加载成功,请稍后再试。`}},retry:{t:0,b:{t:2,i:[{t:3}],s:`重新加载`}},empty:{t:0,b:{t:2,i:[{t:3}],s:`暂无角色`}},profile:{t:0,b:{t:2,i:[{t:3,v:`查看 `},{t:4,k:`name`},{t:3,v:` 的角色资料`}]}},select:{t:0,b:{t:2,i:[{t:3,v:`查看 `},{t:4,k:`name`}]}},expand:{t:0,b:{t:2,i:[{t:3,v:`展开其余 `},{t:4,k:`count`},{t:3,v:` 位`}]}},more:{t:0,b:{t:2,i:[{t:3,v:`再显示 `},{t:4,k:`count`},{t:3,v:` 位`}]}},scroll:{t:0,b:{t:2,i:[{t:3,v:`继续向下滚动,将自动显示 `},{t:4,k:`count`},{t:3,v:` 位`}]}},layout:{label:{t:0,b:{t:2,i:[{t:3}],s:`选择角色名册布局`}},grid:{t:0,b:{t:2,i:[{t:3}],s:`紧凑卡片`}},bubbles:{t:0,b:{t:2,i:[{t:3}],s:`圆球星团`}},orbit:{t:0,b:{t:2,i:[{t:3}],s:`心轨星座`}}}}}},Vi={addon:{girls:{label:{t:0,b:{t:2,i:[{t:3}],s:`Character gallery`}},loading:{t:0,b:{t:2,i:[{t:3}],s:`Loading character list`}},error:{t:0,b:{t:2,i:[{t:3}],s:`The list could not be loaded. Please try again later.`}},retry:{t:0,b:{t:2,i:[{t:3}],s:`Retry`}},empty:{t:0,b:{t:2,i:[{t:3}],s:`No characters yet`}},profile:{t:0,b:{t:2,i:[{t:3,v:`View `},{t:4,k:`name`},{t:3,v:`'s profile`}]}},select:{t:0,b:{t:2,i:[{t:3,v:`Show `},{t:4,k:`name`}]}},expand:{t:0,b:{t:2,i:[{t:3,v:`Show `},{t:4,k:`count`},{t:3,v:` more characters`}]}},more:{t:0,b:{t:2,i:[{t:3,v:`Load `},{t:4,k:`count`},{t:3,v:` more characters`}]}},scroll:{t:0,b:{t:2,i:[{t:3,v:`Scroll to automatically show `},{t:4,k:`count`},{t:3,v:` more characters`}]}},layout:{label:{t:0,b:{t:2,i:[{t:3}],s:`Choose character gallery layout`}},grid:{t:0,b:{t:2,i:[{t:3}],s:`Compact grid`}},bubbles:{t:0,b:{t:2,i:[{t:3}],s:`Packed bubbles`}},orbit:{t:0,b:{t:2,i:[{t:3}],s:`Heart orbit`}}}}}},Hi={button:{about:{t:0,b:{t:2,i:[{t:3}],s:`关于`}},back:{t:0,b:{t:2,i:[{t:3}],s:`返回`}},go:{t:0,b:{t:2,i:[{t:3}],s:`确定`}},home:{t:0,b:{t:2,i:[{t:3}],s:`首页`}},toggle_light:{t:0,b:{t:2,i:[{t:3}],s:`切换亮色模式`}},toggle_dark:{t:0,b:{t:2,i:[{t:3}],s:`切换深色模式`}},toggle_langs:{t:0,b:{t:2,i:[{t:3}],s:`切换语言`}},appearance:{t:0,b:{t:2,i:[{t:3}],s:`外观`}}}
554,intro:{desc:{t:0,b:{t:2,i:[{t:3}],s:`主题 Yun`}},hi:{t:0,b:{t:2,i:[{t:3,v:`你好,`},{t:4,k:`name`}]}}},"not-found":{t:0,b:{t:2,i:[{t:3}],s:`未找到页面`}},title:{archive:{t:0,b:{t:2,i:[{t:3}],s:`归档`}},category:{t:0,b:{t:2,i:[{t:3}],s:`分类`}},tag:{t:0,b:{t:2,i:[{t:3}],s:`标签`}},album:{t:0,b:{t:2,i:[{t:3}],s:`相册`}},gallery:{t:0,b:{t:2,i:[{t:3}],s:`图片库`}}},menu:{title:{t:0,b:{t:2,i:[{t:3}],s:`菜单`}},home:{t:0,b:{t:2,i:[{t:3}],s:`首页`}},archives:{t:0,b:{t:2,i:[{t:3}],s:`归档`}},categories:{t:0,b:{t:2,i:[{t:3}],s:`分类`}},tags:{t:0,b:{t:2,i:[{t:3}],s:`标签`}},posts:{t:0,b:{t:2,i:[{t:3}],s:`博客文章`}},collections:{t:0,b:{t:2,i:[{t:3}],s:`合集`}},about:{t:0,b:{t:2,i:[{t:3}],s:`关于`}},search:{t:0,b:{t:2,i:[{t:3}],s:`搜索`}}},sidebar:{overview:{t:0,b:{t:2,i:[{t:3}],s:`站点概览`}},toc:{t:0,b:{t:2,i:[{t:3}],s:`文章目录`}},return_top:{t:0,b:{t:2,i:[{t:3}],s:`返回顶部`}}},post:{decrypt:{t:0,b:{t:2,i:[{t:3}],s:`解密`}},posted:{t:0,b:{t:2,i:[{t:3}],s:`发表于`}},edited:{t:0,b:{t:2,i:[{t:3}],s:`更新于`}},created:{t:0,b:{t:2,i:[{t:3}],s:`创建时间`}},modified:{t:0,b:{t:2,i:[{t:3}],s:`修改时间`}},edit:{t:0,b:{t:2,i:[{t:3}],s:`编辑`}},more:{t:0,b:{t:2,i:[{t:3}],s:`更多`}},untitled:{t:0,b:{t:2,i:[{t:3}],s:`未命名`}},toc_empty:{t:0,b:{t:2,i:[{t:3}],s:`此文章未包含目录`}},pageview_count:{t:0,b:{t:2,i:[{t:3}],s:`阅读次数`}},comment_count:{t:0,b:{t:2,i:[{t:3}],s:`评论数`}},related_posts:{t:0,b:{t:2,i:[{t:3}],s:`相关文章`}},view_link:{t:0,b:{t:2,i:[{t:3}],s:`查看链接`}},read_more:{t:0,b:{t:2,i:[{t:3}],s:`阅读更多`}},copy_markdown:{t:0,b:{t:2,i:[{t:3}],s:`复制 Markdown`}},copy_markdown_link:{t:0,b:{t:2,i:[{t:3}],s:`复制 Markdown 链接`}},copy_page:{t:0,b:{t:2,i:[{t:3}],s:`复制页面`}},copied_markdown:{t:0,b:{t:2,i:[{t:3}],s:`已复制!`}},view_as_markdown:{t:0,b:{t:2,i:[{t:3}],s:`查看 Markdown`}},open_in_github:{t:0,b:{t:2,i:[{t:3}],s:`在 GitHub 中打开`}},open_in_chatgpt:{t:0,b:{t:2,i:[{t:3}],s:`在 ChatGPT 中打开`}},open_in_claude:{t:0,b:{t:2,i:[{t:3}],s:`在 Claude 中打开`}},cover:{t:0,b:{t:2,i:[{t:3}],s:`封面`}},time_warning:{t:0,b:{t:2,i:[{t:3,v:`本文最后更新于 `},{t:4,k:`ago`},{t:3,v:`,文中所描述的信息可能已发生改变。`}]}},copyright:{author:{t:0,b:{t:2,i:[{t:3}],s:`本文作者`}},link:{t:0,b:{t:2,i:[{t:3}],s:`本文链接`}},license_title:{t:0,b:{t:2,i:[{t:3}],s:`版权声明`}},license_content:{t:0,b:{t:2,i:[{t:3,v:`本博客所有文章除特别声明外,均默认采用 `},{t:5,i:0},{t:3,v:` 许可协议。`}]}}}},footer:{powered:{t:0,b:{t:2,i:[{t:3,v:`由 `},{t:5,i:0},{t:3,v:` 驱动`}]}},theme:{t:0,b:{t:2,i:[{t:3}],s:`主题`}},total_views:{t:0,b:{t:2,i:[{t:3}],s:`总访问量`}},total_visitors:{t:0,b:{t:2,i:[{t:3}],s:`总访客量`}}},collection:{badge:{t:0,b:{t:2,i:[{t:3}],s:`合集`}},empty:{t:0,b:{t:2,i:[{t:3}],s:`暂无内容`}}},counter:{archives:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:`暂无文章`},{t:2,i:[{t:3}],s:`共计 1 篇文章`},{t:2,i:[{t:3,v:`共计 `},{t:4,k:`count`},{t:3,v:` 篇文章`}]}]}},categories:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:`暂无分类`},{t:2,i:[{t:3}],s:`共计 1 个分类`},{t:2,i:[{t:3,v:`共计 `},{t:4,k:`count`},{t:3,v:` 个分类`}]}]}},tags:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:`暂无标签`},{t:2,i:[{t:3}],s:`共计 1 个标签`},{t:2,i:[{t:3,v:`共计 `},{t:4,k:`count`},{t:3,v:` 个标签`}]}]}},albums:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:`暂无相册`},{t:2,i:[{t:3}],s:`共计 1 个相册`},{t:2,i:[{t:3,v:`共计 `},{t:4,k:`count`},{t:3,v:` 个相册`}]}]}},photos:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:`暂无照片`},{t:2,i:[{t:3}],s:`共计 1 张照片`},{t:2,i:[{t:3,v:`共计 `},{t:4,k:`count`},{t:3,v:` 张照片`}]}]}}},category:{uncategorized:{t:0,b:{t:2,i:[{t:3}],s:`未分类`}}},search:{placeholder:{t:0,b:{t:2,i:[{t:3}],s:`搜索...`}},loading:{t:0,b:{t:2,i:[{t:3}],s:`加载中...`}},empty:{t:0,b:{t:2,i:[{t:3,v:`找不到您查询的内容: `},{t:4,k:`query`}]}},hits_time:{t:0,b:{t:2,i:[{t:3,v:`找到 `},{t:4,k:`hits`},{t:3,v:` 条结果(用时 `},{t:4,k:`time`},{t:3,v:` 毫秒)`}]}},hits:{t:0,b:{t:2,i:[{t:3,v:`找到 `},{t:4,k:`count`},{t:3,v:` 条结果`}]}},no_results:{t:0,b:{t:2,i:[{t:3}],s:`未找到相关结果`}},no_results_hint:{t:0,b:{t:2,i:[{t:3}],s:`请尝试调整搜索关键词`}}},symbol:{comma:{t:0,b:{t:2,i:[{t:3}],s:`,`}},period:{t:0,b:{t:2,i:[{t:3}],s:`。`}}
554,colon:{t:0,b:{t:2,i:[{t:3}],s:`:`}}},reward:{donate:{t:0,b:{t:2,i:[{t:3}],s:`打赏`}}},accessibility:{back:{t:0,b:{t:2,i:[{t:3}],s:`返回`}}},statistics:{word:{t:0,b:{t:2,i:[{t:3}],s:`本文字数`}},word_total:{t:0,b:{t:2,i:[{t:3}],s:`站点总字数`}},time:{t:0,b:{t:2,i:[{t:3}],s:`阅读时长`}},time_total:{t:0,b:{t:2,i:[{t:3}],s:`站点总阅读时长`}}},time:{day:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:`1 天`},{t:2,i:[{t:4,k:`count`},{t:3,v:` 天`}]}]}},hour:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:`1 小时`},{t:2,i:[{t:4,k:`count`},{t:3,v:` 小时`}]}]}},minute:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:`1 分`},{t:2,i:[{t:4,k:`count`},{t:3,v:` 分`}]}]}},second:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:`1 秒`},{t:2,i:[{t:4,k:`count`},{t:3,v:` 秒`}]}]}}},tooltip:{last_updated:{t:0,b:{t:2,i:[{t:3}],s:`最后更新于`}}},blocks:{tip:{t:0,b:{t:2,i:[{t:3}],s:`提示`}},warning:{t:0,b:{t:2,i:[{t:3}],s:`注意`}},danger:{t:0,b:{t:2,i:[{t:3}],s:`警告`}},info:{t:0,b:{t:2,i:[{t:3}],s:`信息`}},details:{t:0,b:{t:2,i:[{t:3}],s:`详情`}}}},Ui={button:{about:{t:0,b:{t:2,i:[{t:3}],s:`About`}},back:{t:0,b:{t:2,i:[{t:3}],s:`Back`}},go:{t:0,b:{t:2,i:[{t:3}],s:`GO`}},home:{t:0,b:{t:2,i:[{t:3}],s:`Home`}},toggle_light:{t:0,b:{t:2,i:[{t:3}],s:`Switch to light mode`}},toggle_dark:{t:0,b:{t:2,i:[{t:3}],s:`Switch to dark mode`}},toggle_langs:{t:0,b:{t:2,i:[{t:3}],s:`Change languages`}},appearance:{t:0,b:{t:2,i:[{t:3}],s:`Appearance`}}},intro:{desc:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:`Theme Yun`},{t:2,i:[{t:3}],s:`Valaxy`}]}},hi:{t:0,b:{t:2,i:[{t:3,v:`Hi, `},{t:4,k:`name`},{t:3,v:`!`}]}}},"not-found":{t:0,b:{t:2,i:[{t:3}],s:`Oops! Space collapsed!`}},title:{archive:{t:0,b:{t:2,i:[{t:3}],s:`Archive`}},category:{t:0,b:{t:2,i:[{t:3}],s:`Category`}},tag:{t:0,b:{t:2,i:[{t:3}],s:`Tag`}},album:{t:0,b:{t:2,i:[{t:3}],s:`Album`}},gallery:{t:0,b:{t:2,i:[{t:3}],s:`Gallery`}}},menu:{title:{t:0,b:{t:2,i:[{t:3}],s:`Menu`}},home:{t:0,b:{t:2,i:[{t:3}],s:`Home`}},archives:{t:0,b:{t:2,i:[{t:3}],s:`Archives`}},categories:{t:0,b:{t:2,i:[{t:3}],s:`Categories`}},tags:{t:0,b:{t:2,i:[{t:3}],s:`Tags`}},posts:{t:0,b:{t:2,i:[{t:3}],s:`Posts`}},collections:{t:0,b:{t:2,i:[{t:3}],s:`Collections`}},about:{t:0,b:{t:2,i:[{t:3}],s:`About`}},search:{t:0,b:{t:2,i:[{t:3}],s:`Search`}}},sidebar:{overview:{t:0,b:{t:2,i:[{t:3}],s:`Overview`}},toc:{t:0,b:{t:2,i:[{t:3}],s:`Table of Contents`}},return_top:{t:0,b:{t:2,i:[{t:3}],s:`Return to top`}}},post:{decrypt:{t:0,b:{t:2,i:[{t:3}],s:`DECRYPT`}},posted:{t:0,b:{t:2,i:[{t:3}],s:`Posted on `}},edited:{t:0,b:{t:2,i:[{t:3}],s:`Edited on `}},created:{t:0,b:{t:2,i:[{t:3}],s:`Created`}},modified:{t:0,b:{t:2,i:[{t:3}],s:`Modified`}},edit:{t:0,b:{t:2,i:[{t:3}],s:`Edit this post`}},more:{t:0,b:{t:2,i:[{t:3}],s:`more`}},untitled:{t:0,b:{t:2,i:[{t:3}],s:`Untitled`}},toc_empty:{t:0,b:{t:2,i:[{t:3}],s:`This post does not have a Table of Contents`}},pageview_count:{t:0,b:{t:2,i:[{t:3}],s:`Views`}},comment_count:{t:0,b:{t:2,i:[{t:3}],s:`Comments`}},related_posts:{t:0,b:{t:2,i:[{t:3}],s:`Related posts`}},view_link:{t:0,b:{t:2,i:[{t:3}],s:`View link`}},read_more:{t:0,b:{t:2,i:[{t:3}],s:`READ MORE`}},copy_markdown:{t:0,b:{t:2,i:[{t:3}],s:`Copy Markdown`}},copy_markdown_link:{t:0,b:{t:2,i:[{t:3}],s:`Copy Markdown Link`}},copy_page:{t:0,b:{t:2,i:[{t:3}],s:`Copy page`}},copied_markdown:{t:0,b:{t:2,i:[{t:3}],s:`Copied!`}},view_as_markdown:{t:0,b:{t:2,i:[{t:3}],s:`View as Markdown`}},open_in_github:{t:0,b:{t:2,i:[{t:3}],s:`Open in GitHub`}},open_in_chatgpt:{t:0,b:{t:2,i:[{t:3}],s:`Open in ChatGPT`}},open_in_claude:{t:0,b:{t:2,i:[{t:3}],s:`Open in Claude`}},cover:{t:0,b:{t:2,i:[{t:3}],s:`Cover`}},time_warning:{t:0,b:{t:2,i:[{t:3,v:`This article was last updated `},{t:4,k:`ago`},{t:3,v:`. The information described in this article may have changed.`}]}},copyright:{author:{t:0,b:{t:2,i:[{t:3}],s:`Post author`}},link:{t:0,b:{t:2,i:[{t:3}],s:`Post link`}},license_title:{t:0,b:{t:2,i:[{t:3}],s:`Copyright Notice`}},license_content:{t:0,b:{t:2,i:[{t:3,v:`All articles in this blog are licensed under `},{t:5,i:0},{t:3,v:` unless otherwise stated.`}]}}}},footer:{powered:{t:0,b:{t:2,i:[{t:3,v:`Powered by `},{t:5,i:0}]}},theme:{t:0,b:{t:2,i:[{t:3}],s:`Theme`}},total_views:{t:0,b:{t:2,i:[{t:3}],s:`Total Views`}},total_visitors:{t:0,b:{t:2,i:[{t:3}],s:`Total Visitors`}}},collection:{badge:{t:0,b:{t:2,i:[{t:3}],s:`Collection`}},empty:{t:0,b:{t:2,i:[{t:3}],s:`No items yet`}}},counter:{archives:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:`No posts`},{t:2,i:[{t:3}],s:`1 post`},{t:2,i:[{t:4,k:`count`},{t:3,v:` posts`}]}]}},categories:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:`No categories`},{t:2,i:[{t:3}],s:`1 category`},{t:2,i:[{t:4,k:`count`},{t:3,v:` categories`}]}]}},tags:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:`No tags`},{t:2,i:[{t:3}],s:`1 tag`},{t:2,i:[{t:4,k:`count`},{t:3,v:` tags`}]}]}},albums:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:`No album`},{t:2,i:[{t:3}],s:`1 album`},{t:2,i:[{t:4,k:`count`},{t:3,v:` albums`}]}]}},photos:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:`No photo`},{t:2,i:[{t:3}],s:`1 photo`},{t:2,i:[{t:4,k:`count`},{t:3,v:` photos`}]}]}}},category:{uncategorized:{t:0,b:{t:2,i:[{t:3}],s:`Uncategorized`}}},search:{placeholder:{t:0,b:{t:2,i:[{t:3}],s:`Searching...`}},loading:{t:0,b:{t:2,i:[{t:3}],s:`Loading...`}},empty:{t:0,b:{t:2,i:[{t:3,v:`We could not find any results for the search: `},{t:4,k:`query`},{t:3,v:`.`}]}},hits_time:{t:0,b:{t:2,i:[{t:4,k:`hits`},{t:3,v:` results found in `},{t:4,k:`time`},{t:3,v:` ms`}]}},hits:{t:0,b:{t:2,i:[{t:4,k:`count`},{t:3,v:` results found`}]}},no_results:{t:0,b:{t:2,i:[{t:3}],s:`No results found`}}
554,no_results_hint:{t:0,b:{t:2,i:[{t:3}],s:`Try adjusting your search terms`}}},symbol:{comma:{t:0,b:{t:2,i:[{t:3}],s:`, `}},period:{t:0,b:{t:2,i:[{t:3}],s:`. `}},colon:{t:0,b:{t:2,i:[{t:3}],s:`: `}}},reward:{donate:{t:0,b:{t:2,i:[{t:3}],s:`Donate`}}},accessibility:{back:{t:0,b:{t:2,i:[{t:3}],s:`Back`}}},statistics:{word:{t:0,b:{t:2,i:[{t:3}],s:`Word count in article`}},word_total:{t:0,b:{t:2,i:[{t:3}],s:`Total words`}},time:{t:0,b:{t:2,i:[{t:3}],s:`Reading time`}},time_total:{t:0,b:{t:2,i:[{t:3}],s:`Total reading time`}}},time:{day:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:`1 Day`},{t:2,i:[{t:4,k:`count`},{t:3,v:` Days`}]}]}},hour:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:`1 Hour`},{t:2,i:[{t:4,k:`count`},{t:3,v:` Hours`}]}]}},minute:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:`1 Minute`},{t:2,i:[{t:4,k:`count`},{t:3,v:` Minutes`}]}]}},second:{t:0,b:{t:1,c:[{t:2,i:[{t:3}],s:`1 Second`},{t:2,i:[{t:4,k:`count`},{t:3,v:` Seconds`}]}]}}},tooltip:{last_updated:{t:0,b:{t:2,i:[{t:3}],s:`Last updated`}}},blocks:{tip:{t:0,b:{t:2,i:[{t:3}],s:`TIP`}},warning:{t:0,b:{t:2,i:[{t:3}],s:`WARNING`}},danger:{t:0,b:{t:2,i:[{t:3}],s:`DANGER`}},info:{t:0,b:{t:2,i:[{t:3}],s:`INFO`}},details:{t:0,b:{t:2,i:[{t:3}],s:`DETAILS`}}}},Q={"zh-CN":{},en:{}},$=Ne((e,t,n)=>{if(t&&e[t]&&Array.isArray(e[t])&&Array.isArray(n))return e[t]=n,!0});Q.en=$(Ui,Q.en),Q[`zh-CN`]=$(Hi,Q[`zh-CN`]),Q.en=$(xe,Q.en),Q[`zh-CN`]=$(de,Q[`zh-CN`]),Q.en=$(Vi,Q.en),Q[`zh-CN`]=$(Bi,Q[`zh-CN`]),Q.en=$(zi,Q.en),Q[`zh-CN`]=$(Ri,Q[`zh-CN`]);var Wi=ke({legacy:!1,locale:``,messages:Q,missingWarn:!1});async function Gi({app:e,router:t},n){let r=n?.value.siteConfig.lang||`en`;Wi.global.locale.value=r,e.use(Wi),t.isReady().then(async()=>{await s();let e=ie(`valaxy-locale`,r);e.value&&e.value!==Wi.global.locale.value&&(Wi.global.locale.value=e.value),_(e,e=>{e&&(Wi.global.locale.value=e)})})}function Ki(e,t){let n=e;Yt(e),Gi(e,t),Li(e),Ii(e),Fi(e),Ni(e,t),_e(n),Pt(n)}var qi=se(),Ji=[...Je],{redirectRoutes:Yi,useVueRouter:Xi}=qi.value.runtimeConfig.redirects;
554Xi&&Ji.push(...Yi),Ji.forEach(e=>{e?.children?.forEach(e=>{e.path=encodeURI(e.path)})});function Zi(e){let t=[];function n(e,r){let i=r?`${r.replace(/\/$/,``)}/${e.path.replace(/^\//,``)}`:e.path;if((e.component||e.components||e.redirect)&&t.push({...e,path:i,children:void 0}),e.children)for(let t of e.children)n(t,i)}for(let t of e)n(t,``);return t}function Qi(e){return e.filter(e=>(e.children&&=Qi(e.children),!e.meta?.frontmatter?.draft))}var $i=qe(Qi(Zi(Ji)));function ea(e={}){let{routePath:t,createHead:n,hydrate:r}=e,i=r?w(et):b(et),a=je(`/`),o=Ae({history:a,routes:$i,scrollBehavior(e,t){if(e.path!==t.path)return{top:0}}}),s=n?n():void 0;i.use(o),s&&i.use(s),i.component(`ClientOnly`,nt);let c=[],l={app:i,router:o,head:s,routes:$i,isClient:!0,initialState:{},onSSRAppRendered:()=>{},triggerOnSSRAppRendered:()=>Promise.all(c.map(e=>e())),routePath:t};typeof window<`u`&&window.__INITIAL_STATE__&&(l.initialState=JSON.parse(window.__INITIAL_STATE__));let u=tt(o);return i.provide(re,u),i.provide(ce,qi),Ki(l,qi),l}(async()=>{let{createHead:e}=await v(async()=>{let{createHead:e}=await import(`./client.DMBCLPP5.js`);return{createHead:e}},__vite__mapDeps([139,0,1,2,3,4,5,6,7])),t=document.getElementById(`app`),n=!!(t&&t.innerHTML.trim()),{app:r,router:i}=ea({createHead:e,hydrate:n});await i.isReady(),r.mount(`#app`,n)})();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.