<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Mdreame</title><description>百龄影徂，千载心在。</description><link>https://blog.mdreame.space/</link><item><title>kindle 2024</title><link>https://blog.mdreame.space/blog/2026-05-14-kindle-2024/</link><guid isPermaLink="true">https://blog.mdreame.space/blog/2026-05-14-kindle-2024/</guid><description>看到了 kindle 2024 的小绿非常心动，花费 816 元买了一台日版无广告的。</description><pubDate>Thu, 14 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;看到了 kindle 2024 的小绿非常心动，花费 816 元买了一台日版无广告的。&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://img.mdreame.space/0a0d3cdbbc3e3ac0848e289b6e01f23b-1778773756758.webp&quot; alt=&quot; kindle 2024 VS KPW4&quot;&gt;&lt;figcaption&gt;kindle 2024 VS KPW4&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;旧的是 Kindle Paperwhite（KPW4）第十代，现在用起来速度变得好慢。阅读时翻页的速度还行，但是只要切换界面就得等个三四秒，令人非常痛苦。其次是打不开网页浏览器。一直有用网页登录微信读书，现在也带不动了。&lt;/p&gt;
&lt;p&gt;原以为小绿和 KPW4 大小一样，拿到手后发现屏幕尺寸是一样的，但是长宽竟然都比 KPW4 还要小一点！我试了一下放在牛仔裤的口袋，KPW4 有点勉强，小绿无论前面还是后面的口袋都是很轻松的。这一点是没有预料到的惊喜。不过两者虽然大小不同，拿在手上的重量却没有明显差异。&lt;/p&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://img.mdreame.space/be299001cb10d46b25db822bb933ef31-1778773798308.webp&quot; alt=&quot;正面&quot;&gt;&lt;figcaption&gt;正面&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://img.mdreame.space/2084309608471e7a92b02f4338d3a16b-1778773808388.webp&quot; alt=&quot;背面&quot;&gt;&lt;figcaption&gt;背面&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;其次让我满意的是运行速度，界面点击和键盘打字的延迟都很小，预览书籍进度的时候也是即点即跳转。终于舒坦了，不然总是要等个几秒，心里膈应得慌。还有好评的一点就是数据线终于用上了 Type-C 接口。&lt;/p&gt;
&lt;p&gt;不过也有两点感到有些遗憾。一是小绿采用的是凹屏设计，点击屏幕底部时有点费劲，我还是更喜欢平面设计。第二点就是在翻页的时候，文字会有一点残影。相比 KPW4 的过渡效果就更加干净清爽，像是整个屏幕同步刷新了，小绿就显得有点拖泥带水。在白天看着 KPW4 的质感像克数高的白纸，而小绿像轻型纸，翻页的时候好像能隐隐看到背后的字。也许是没看习惯吧。&lt;/p&gt;
&lt;p&gt;总的来说还算满意，希望后面能多看几本小说。&lt;/p&gt;</content:encoded></item><item><title>枇杷熟了</title><link>https://blog.mdreame.space/blog/2026-05-12-%E6%9E%87%E6%9D%B7%E7%86%9F%E4%BA%86/</link><guid isPermaLink="true">https://blog.mdreame.space/blog/2026-05-12-%E6%9E%87%E6%9D%B7%E7%86%9F%E4%BA%86/</guid><description>买到品质一般的枇杷，想起了记忆中的味道。</description><pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;昨天买了一盒枇杷，6 个 13 块。吃起来既不酸也不甜，只有水分尚可。蹲在垃圾桶前剥皮，想起了昔年往事，更觉得口中味同嚼蜡。&lt;/p&gt;
&lt;p&gt;那棵枇杷树很老，我记事时就在那了。长得很好看，枝干分明。主干黑油油的，墨绿的枝叶往外展，伸出院墙外。院墙上面是水泥里夹着各色玻璃碎片，上面附着离离的青苔，稀疏的缝隙里有吊兰冒出来，垂到镂空的窗口。窗口往外望去是一条国道，我放学就从那头来了。&lt;/p&gt;
&lt;p&gt;我常常走到院墙边，踩在墙角堆着的废瓦上，伸手去够最外边的枇杷。结果是酸得挤眉弄眼，到吃饭的时候竟然咬不动豆腐。即便如此，我还是喜欢吃，爱吃酸味估计与这脱不了关系。等到泥土地上一堆皮和核，我又摘了几个便停下。捡起几颗核，插在院墙角落的小沙堆里。沙子上面有堆仙人掌，似乎一直在那生长，有时会遇见它开花。我拨弄着花朵，喊着奶奶来给我开院墙上的小铁门。转身拴好铁门后，将摘的枇杷揣进裤兜，走去树下的水井拉上来一小桶水，问奶奶要不要用。通常是没什么用，但我每次还是会打一桶，扔在水井旁边，感到自己帮了大忙。&lt;/p&gt;
&lt;p&gt;偶尔会蹲下身子看嵌在井壁砖缝里的蕨类植物，有的竟然在水下也能生长，真稀奇！奶奶呼唤后，我就扣上生锈了的井盖，穿过厨房和侧房，来到堂间。爷爷在那看电视，背对着大门，一只胳膊搭在桌子上，手指掸着烟。我从裤兜里掏出来那几颗枇杷砸在桌上，要爷爷吃。他好奇我不酸吗，吃这许多。我是的真喜欢吃，又酸又甜，说不出的滋味。&lt;/p&gt;
&lt;p&gt;后来树是真的老了。开始有虫子，风一吹就要倒的样子，合计将它放了。我是突然有一天回来才知道的，一时怅然，正如我多年后接到妈妈的电话，让我快些赶回去，爷爷突然一口气上不来了。我在深圳北等高铁，点了一碗重庆小面。我好像吃了几口，不记得是什么味道，只知道有两个小朋友看着我抹眼泪。他们摸摸自己的儿童手表，又把目光挪向妈妈。我真想躲起来。&lt;/p&gt;
&lt;p&gt;房子没人住，没有了生气，东西就开始腐败。我想在门前种些野菊花，更想在院里再栽一棵枇杷树。我问妈，哪里能买到枇杷树苗。她应付含糊过去了。我也是有点笨。通常农村去别人家树下借个树种就好了，只需要打个招呼。关键是种在那里谁来管呢？我后来也没提过，默默意识到有种距离将我与我的过去拉得越来越开。&lt;/p&gt;
&lt;p&gt;归有光的那棵枇杷树亭亭如盖，我的枇杷树只剩老根埋在土里，慢慢腐朽。&lt;/p&gt;</content:encoded></item><item><title>焦虑和耐心</title><link>https://blog.mdreame.space/blog/2026-05-11-%E7%84%A6%E8%99%91%E5%92%8C%E8%80%90%E5%BF%83/</link><guid isPermaLink="true">https://blog.mdreame.space/blog/2026-05-11-%E7%84%A6%E8%99%91%E5%92%8C%E8%80%90%E5%BF%83/</guid><description>焦虑的原因是有欲望没能力，有耐心的方法是知道确定的结果。</description><pubDate>Mon, 11 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;读周岭的《认知觉醒》看到他给焦虑分类：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;完成焦虑：很多事情没有做&lt;/li&gt;
&lt;li&gt;定位焦虑：错位的比较让人觉得来不及&lt;/li&gt;
&lt;li&gt;选择焦虑：选择焦虑&lt;/li&gt;
&lt;li&gt;环境焦虑：面对周围的不得不&lt;/li&gt;
&lt;li&gt;难度焦虑：只有直面，无法回避&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;我也在 Joplin 中搜索自己写的有关焦虑的笔记，发现了两条：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;战胜焦虑和恐惧的手段就是直面他。&lt;strong&gt;不要再费力的折腾工具了&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;容易感到焦虑和无聊的原因：一方面是注意力的分散，另一个重要的原因是缺失了上下文。没有了过去的轨迹、未来的向往，只沉迷在当下的情绪和感受中。所以我们需要长期的目标和渴望。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;第一条的背景是我在尝试不同的记账软件，在各个 App 和 自部署的服务间犹豫不定。最终是因为快到了截止日，图快用了 Excel 整理了。结果发现效果还行，而且自己做完还有一点点的满足感。完事才发现自己好像并不需要某个具体的 App。&lt;/p&gt;
&lt;p&gt;第二条我觉得说的很对，所有的焦虑都是因为急于求成。可以说焦虑是因为预期太高，而现实自己无法做到。&lt;/p&gt;
&lt;p&gt;耐心是由焦虑通向平静的桥梁。如何拥有耐心呢？关键是学会延迟满足。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;接受自己没有耐心的事实。将浮躁的自己当成是爱吵闹的孩子，理解他的任性。&lt;/li&gt;
&lt;li&gt;知道行动起来的意义和好处。自己亲身体会过，尝到甜头，所以愿意为之忍耐。或者看见他人的亮点、拥有自己想要的东西，从而为自己构造一个想象中的完美图景，这样也会有动力。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;了解规律&lt;/strong&gt;。既然没耐心是因为看不到结果，那么有必然结果的规律就提供了一根稻草。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;快十二点了，困得很，意识有些模糊，不知所云。&lt;/p&gt;</content:encoded></item><item><title>我 Vibe Coding 了一个 Joplin 习惯打卡插件</title><link>https://blog.mdreame.space/blog/2026-05-10-%E6%88%91-vibe-coding-%E4%BA%86%E4%B8%80%E4%B8%AA-joplin-%E4%B9%A0%E6%83%AF%E6%89%93%E5%8D%A1%E6%8F%92%E4%BB%B6/</link><guid isPermaLink="true">https://blog.mdreame.space/blog/2026-05-10-%E6%88%91-vibe-coding-%E4%BA%86%E4%B8%80%E4%B8%AA-joplin-%E4%B9%A0%E6%83%AF%E6%89%93%E5%8D%A1%E6%8F%92%E4%BB%B6/</guid><description>短代码插入渲染，支持年月周视图。</description><pubDate>Sun, 10 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;昨天在 &lt;a href=&quot;/blog/2026-05-09-joplin-%E7%9A%84%E6%96%B0%E5%8A%9F%E8%83%BD&quot;&gt;Joplin 的新功能&lt;/a&gt;中提到不能直观地察觉计划的完成情况。所以立马用 Claude Code 生成了这个习惯打卡插件，用来配合任务管理的流程。&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://img.mdreame.space/t4m1f-9wpcy.gif&quot; alt=&quot;示意&quot;&gt;&lt;figcaption&gt;示意&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;使用非常简单，在笔记任意地方插入以下代码即可：&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;style&gt;.expressive-code{font-family:var(--ec-uiFontFml);font-size:var(--ec-uiFontSize);font-weight:var(--ec-uiFontWg);line-height:var(--ec-uiLineHt);text-size-adjust:none;-webkit-text-size-adjust:none}.expressive-code *:not(:is(svg, svg *)){all:revert;box-sizing:border-box}.expressive-code pre{display:flex;margin:0;padding:0;border:var(--ec-brdWd) solid var(--ec-brdCol);border-radius:calc(var(--ec-brdRad) + var(--ec-brdWd));background:var(--ec-codeBg)}.expressive-code pre:focus-visible{outline:3px solid var(--ec-focusBrd);outline-offset:-3px}.expressive-code pre &gt; code{all:unset;display:block;flex:1 0 100%;padding:var(--ec-codePadBlk) 0;color:var(--ec-codeFg);font-family:var(--ec-codeFontFml);font-size:var(--ec-codeFontSize);font-weight:var(--ec-codeFontWg);line-height:var(--ec-codeLineHt)}.expressive-code pre{overflow-x:auto}.expressive-code pre.wrap .ec-line .code{white-space:pre-wrap;overflow-wrap:break-word;min-width:min(20ch, var(--ecMaxLine, 20ch))}.expressive-code pre.wrap .ec-line .code span.indent{white-space:pre}.expressive-code pre::-webkit-scrollbar,.expressive-code pre::-webkit-scrollbar-track{background-color:inherit;border-radius:calc(var(--ec-brdRad) + var(--ec-brdWd));border-top-left-radius:0;border-top-right-radius:0}.expressive-code pre::-webkit-scrollbar-thumb{background-color:var(--ec-sbThumbCol);border:4px solid transparent;background-clip:content-box;border-radius:10px}.expressive-code pre::-webkit-scrollbar-thumb:hover{background-color:var(--ec-sbThumbHoverCol)}.expressive-code .ec-line{direction:ltr;unicode-bidi:isolate;display:grid;grid-template-areas:&apos;gutter code&apos;;grid-template-columns:auto 1fr;position:relative}.expressive-code .ec-line .gutter{grid-area:gutter;color:var(--ec-gtrFg)}.expressive-code .ec-line .gutter &gt; *{pointer-events:none;user-select:none;-webkit-user-select:none}.expressive-code .ec-line .gutter ~ .code{--ecLineBrdCol:var(--ec-gtrBrdCol)}.expressive-code .ec-line.highlight .gutter{color:var(--ec-gtrHlFg)}.expressive-code .ec-line .code{grid-area:code;position:relative;box-sizing:content-box;padding-inline-start:calc(var(--ecIndent, 0ch) + var(--ec-codePadInl) - var(--ecGtrBrdWd));padding-inline-end:var(--ec-codePadInl);text-indent:calc(var(--ecIndent, 0ch) * -1)}.expressive-code .ec-line .code::before,.expressive-code .ec-line .code::after,.expressive-code .ec-line .code :where(*){text-indent:0}.expressive-code .ec-line .code{--ecGtrBrdWd:var(--ec-gtrBrdWd);border-inline-start:var(--ecGtrBrdWd) solid var(--ecLineBrdCol, transparent)}.expressive-code .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}.expressive-code .ec-line.mark{--tmLineBgCol:var(--ec-tm-markBg)}.expressive-code .ec-line.mark .code{--ecLineBrdCol:var(--ec-tm-markBrdCol)}.expressive-code .ec-line.ins{--tmLineBgCol:var(--ec-tm-insBg);--tmLabel:var(--ec-tm-insDiffIndContent)}.expressive-code .ec-line.ins .code{--ecLineBrdCol:var(--ec-tm-insBrdCol)}.expressive-code .ec-line.ins .code::before{color:var(--ec-tm-insDiffIndCol)}.expressive-code .ec-line.del{--tmLineBgCol:var(--ec-tm-delBg);--tmLabel:var(--ec-tm-delDiffIndContent)}.expressive-code .ec-line.del .code{--ecLineBrdCol:var(--ec-tm-delBrdCol)}.expressive-code .ec-line.del .code::before{color:var(--ec-tm-delDiffIndCol)}.expressive-code .ec-line.mark,.expressive-code .ec-line.ins,.expressive-code .ec-line.del{background:var(--tmLineBgCol)}.expressive-code .ec-line.mark .code,.expressive-code .ec-line.ins .code,.expressive-code .ec-line.del .code{--ecGtrBrdWd:var(--ec-tm-lineMarkerAccentWd)}.expressive-code .ec-line.mark .code::before,.expressive-code .ec-line.ins .code::before,.expressive-code .ec-line.del .code::before{display:block;position:absolute;left:0;box-sizing:border-box;content:var(--tmLabel, &apos; &apos;);padding-inline-start:var(--ec-tm-lineDiffIndMargLeft);text-align:center;white-space:pre}.expressive-code .ec-line.mark.tm-label .code::before,.expressive-code .ec-line.ins.tm-label .code::before,.expressive-code .ec-line.del.tm-label .code::before{background:var(--ecLineBrdCol);padding:0 calc(var(--ec-tm-lineMarkerLabelPadInl) + var(--ec-tm-lineMarkerAccentWd)) 0 var(--ec-tm-lineMarkerLabelPadInl);color:var(--ec-tm-lineMarkerLabelCol)}.expressive-code .ec-line mark{--tmInlineBgCol:var(--ec-tm-markBg);--tmInlineBrdCol:var(--ec-tm-markBrdCol)}.expressive-code .ec-line ins{--tmInlineBgCol:var(--ec-tm-insBg);--tmInlineBrdCol:var(--ec-tm-insBrdCol)}.expressive-code .ec-line del{--tmInlineBgCol:var(--ec-tm-delBg);--tmInlineBrdCol:var(--ec-tm-delBrdCol)}.expressive-code .ec-line mark,.expressive-code .ec-line ins,.expressive-code .ec-line del{all:unset;display:inline-block;position:relative;--tmBrdL:var(--ec-tm-inlMarkerBrdWd);--tmBrdR:var(--ec-tm-inlMarkerBrdWd);--tmRadL:var(--ec-tm-inlMarkerBrdRad);--tmRadR:var(--ec-tm-inlMarkerBrdRad);margin-inline:0.025rem;padding-inline:var(--ec-tm-inlMarkerPad);border-radius:var(--tmRadL) var(--tmRadR) var(--tmRadR) var(--tmRadL);background:var(--tmInlineBgCol);background-clip:padding-box}.expressive-code .ec-line mark.open-start,.expressive-code .ec-line ins.open-start,.expressive-code .ec-line del.open-start{margin-inline-start:0;padding-inline-start:0;--tmBrdL:0px;--tmRadL:0}.expressive-code .ec-line mark.open-end,.expressive-code .ec-line ins.open-end,.expressive-code .ec-line del.open-end{margin-inline-end:0;padding-inline-end:0;--tmBrdR:0px;--tmRadR:0}.expressive-code .ec-line mark::before,.expressive-code .ec-line ins::before,.expressive-code .ec-line del::before{content:&apos;&apos;;position:absolute;pointer-events:none;display:inline-block;inset:0;border-radius:var(--tmRadL) var(--tmRadR) var(--tmRadR) var(--tmRadL);border:var(--ec-tm-inlMarkerBrdWd) solid var(--tmInlineBrdCol);border-inline-width:var(--tmBrdL) var(--tmBrdR)}.expressive-code .frame{all:unset;position:relative;display:block;--header-border-radius:calc(var(--ec-brdRad) + var(--ec-brdWd));--tab-border-radius:calc(var(--ec-frm-edTabBrdRad) + var(--ec-brdWd));--button-spacing:0.4rem;--code-background:var(--ec-frm-edBg);border-radius:var(--header-border-radius);box-shadow:var(--ec-frm-frameBoxShdCssVal)}.expressive-code .frame .header{display:none;z-index:1;position:relative;border-radius:var(--header-border-radius) var(--header-border-radius) 0 0}.expressive-code .frame.has-title pre,.expressive-code .frame.has-title code,.expressive-code .frame.is-terminal pre,.expressive-code .frame.is-terminal code{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.expressive-code .frame .title:empty:before{content:&apos;\a0&apos;}.expressive-code .frame.has-title:not(.is-terminal){--button-spacing:calc(1.9rem + 2 * (var(--ec-uiPadBlk) + var(--ec-frm-edActTabIndHt)))}.expressive-code .frame.has-title:not(.is-terminal) .title{position:relative;color:var(--ec-frm-edActTabFg);background:var(--ec-frm-edActTabBg);background-clip:padding-box;margin-block-start:var(--ec-frm-edTabsMargBlkStart);padding:calc(var(--ec-uiPadBlk) + var(--ec-frm-edActTabIndHt)) var(--ec-uiPadInl);border:var(--ec-brdWd) solid var(--ec-frm-edActTabBrdCol);border-radius:var(--tab-border-radius) var(--tab-border-radius) 0 0;border-bottom:none;overflow:hidden}.expressive-code .frame.has-title:not(.is-terminal) .title::after{content:&apos;&apos;;position:absolute;pointer-events:none;inset:0;border-top:var(--ec-frm-edActTabIndHt) solid var(--ec-frm-edActTabIndTopCol);border-bottom:var(--ec-frm-edActTabIndHt) solid var(--ec-frm-edActTabIndBtmCol)}.expressive-code .frame.has-title:not(.is-terminal) .header{display:flex;background:linear-gradient(to top, var(--ec-frm-edTabBarBrdBtmCol) var(--ec-brdWd), transparent var(--ec-brdWd)),linear-gradient(var(--ec-frm-edTabBarBg), var(--ec-frm-edTabBarBg));background-repeat:no-repeat;padding-inline-start:var(--ec-frm-edTabsMargInlStart)}.expressive-code .frame.has-title:not(.is-terminal) .header::before{content:&apos;&apos;;position:absolute;pointer-events:none;inset:0;border:var(--ec-brdWd) solid var(--ec-frm-edTabBarBrdCol);border-radius:inherit;border-bottom:none}.expressive-code .frame.is-terminal{--button-spacing:calc(1.9rem + var(--ec-brdWd) + 2 * var(--ec-uiPadBlk));--code-background:var(--ec-frm-trmBg)}.expressive-code .frame.is-terminal .header{display:flex;align-items:center;justify-content:center;padding-block:var(--ec-uiPadBlk);padding-block-end:calc(var(--ec-uiPadBlk) + var(--ec-brdWd));position:relative;font-weight:500;letter-spacing:0.025ch;color:var(--ec-frm-trmTtbFg);background:var(--ec-frm-trmTtbBg);border:var(--ec-brdWd) solid var(--ec-brdCol);border-bottom:none}.expressive-code .frame.is-terminal .header::before{content:&apos;&apos;;position:absolute;pointer-events:none;left:var(--ec-uiPadInl);width:2.1rem;height:0.56rem;line-height:0;background-color:var(--ec-frm-trmTtbDotsFg);opacity:var(--ec-frm-trmTtbDotsOpa);-webkit-mask-image:url(&quot;data:image/svg+xml,%3Csvg xmlns=&apos;http://www.w3.org/2000/svg&apos; viewBox=&apos;0 0 60 16&apos; preserveAspectRatio=&apos;xMidYMid meet&apos;%3E%3Ccircle cx=&apos;8&apos; cy=&apos;8&apos; r=&apos;8&apos;/%3E%3Ccircle cx=&apos;30&apos; cy=&apos;8&apos; r=&apos;8&apos;/%3E%3Ccircle cx=&apos;52&apos; cy=&apos;8&apos; r=&apos;8&apos;/%3E%3C/svg%3E&quot;);-webkit-mask-repeat:no-repeat;mask-image:url(&quot;data:image/svg+xml,%3Csvg xmlns=&apos;http://www.w3.org/2000/svg&apos; viewBox=&apos;0 0 60 16&apos; preserveAspectRatio=&apos;xMidYMid meet&apos;%3E%3Ccircle cx=&apos;8&apos; cy=&apos;8&apos; r=&apos;8&apos;/%3E%3Ccircle cx=&apos;30&apos; cy=&apos;8&apos; r=&apos;8&apos;/%3E%3Ccircle cx=&apos;52&apos; cy=&apos;8&apos; r=&apos;8&apos;/%3E%3C/svg%3E&quot;);mask-repeat:no-repeat}.expressive-code .frame.is-terminal .header::after{content:&apos;&apos;;position:absolute;pointer-events:none;inset:0;border-bottom:var(--ec-brdWd) solid var(--ec-frm-trmTtbBrdBtmCol)}.expressive-code .frame pre{background:var(--code-background)}.expressive-code .copy{display:flex;gap:0.25rem;flex-direction:row;position:absolute;inset-block-start:calc(var(--ec-brdWd) + var(--button-spacing));inset-inline-end:calc(var(--ec-brdWd) + var(--ec-uiPadInl) / 2)}@media (scripting: none){.expressive-code .copy{display:none}}.expressive-code .copy{direction:ltr;unicode-bidi:isolate}.expressive-code .copy button{position:relative;align-self:flex-end;margin:0;padding:0;border:none;border-radius:0.2rem;z-index:1;cursor:pointer;transition-property:opacity, background, border-color;transition-duration:0.2s;transition-timing-function:cubic-bezier(0.25, 0.46, 0.45, 0.94);width:2.5rem;height:2.5rem;background:var(--code-background);opacity:0.75}.expressive-code .copy button div{position:absolute;inset:0;border-radius:inherit;background:var(--ec-frm-inlBtnBg);opacity:var(--ec-frm-inlBtnBgIdleOpa);transition-property:inherit;transition-duration:inherit;transition-timing-function:inherit}.expressive-code .copy button::before{content:&apos;&apos;;position:absolute;pointer-events:none;inset:0;border-radius:inherit;border:var(--ec-brdWd) solid var(--ec-frm-inlBtnBrd);opacity:var(--ec-frm-inlBtnBrdOpa)}.expressive-code .copy button::after{content:&apos;&apos;;position:absolute;pointer-events:none;inset:0;background-color:var(--ec-frm-inlBtnFg);-webkit-mask-image:url(&quot;data:image/svg+xml,%3Csvg xmlns=&apos;http://www.w3.org/2000/svg&apos; viewBox=&apos;0 0 24 24&apos; fill=&apos;none&apos; stroke=&apos;black&apos; stroke-width=&apos;1.75&apos;%3E%3Cpath d=&apos;M3 19a2 2 0 0 1-1-2V2a2 2 0 0 1 1-1h13a2 2 0 0 1 2 1&apos;/%3E%3Crect x=&apos;6&apos; y=&apos;5&apos; width=&apos;16&apos; height=&apos;18&apos; rx=&apos;1.5&apos; ry=&apos;1.5&apos;/%3E%3C/svg%3E&quot;);-webkit-mask-repeat:no-repeat;mask-image:url(&quot;data:image/svg+xml,%3Csvg xmlns=&apos;http://www.w3.org/2000/svg&apos; viewBox=&apos;0 0 24 24&apos; fill=&apos;none&apos; stroke=&apos;black&apos; stroke-width=&apos;1.75&apos;%3E%3Cpath d=&apos;M3 19a2 2 0 0 1-1-2V2a2 2 0 0 1 1-1h13a2 2 0 0 1 2 1&apos;/%3E%3Crect x=&apos;6&apos; y=&apos;5&apos; width=&apos;16&apos; height=&apos;18&apos; rx=&apos;1.5&apos; ry=&apos;1.5&apos;/%3E%3C/svg%3E&quot;);mask-repeat:no-repeat;margin:0.475rem;line-height:0}.expressive-code .copy button:hover,.expressive-code .copy button:focus:focus-visible{opacity:1}.expressive-code .copy button:hover div,.expressive-code .copy button:focus:focus-visible div{opacity:var(--ec-frm-inlBtnBgHoverOrFocusOpa)}.expressive-code .copy button:active{opacity:1}.expressive-code .copy button:active div{opacity:var(--ec-frm-inlBtnBgActOpa)}.expressive-code .copy .feedback{--tooltip-arrow-size:0.35rem;--tooltip-bg:var(--ec-frm-tooltipSuccessBg);color:var(--ec-frm-tooltipSuccessFg);pointer-events:none;user-select:none;-webkit-user-select:none;position:relative;align-self:center;background-color:var(--tooltip-bg);z-index:99;padding:0.125rem 0.75rem;border-radius:0.2rem;margin-inline-end:var(--tooltip-arrow-size);opacity:0;transition-property:opacity, transform;transition-duration:0.2s;transition-timing-function:ease-in-out;transform:translate3d(0, 0.25rem, 0)}.expressive-code .copy .feedback::after{content:&apos;&apos;;position:absolute;pointer-events:none;top:calc(50% - var(--tooltip-arrow-size));inset-inline-end:calc(-2 * (var(--tooltip-arrow-size) - 0.5px));border:var(--tooltip-arrow-size) solid transparent;border-inline-start-color:var(--tooltip-bg)}.expressive-code .copy .feedback.show{opacity:1;transform:translate3d(0, 0, 0)}@media (hover: hover){.expressive-code{}.expressive-code .copy button{opacity:0;width:2rem;height:2rem}.expressive-code .frame:hover .copy button:not(:hover),.expressive-code .frame:focus-within :focus-visible ~ .copy button:not(:hover),.expressive-code .frame .copy .feedback.show ~ button:not(:hover){opacity:0.75}}.expressive-code :nth-child(1 of .ec-line) .code{padding-inline-end:calc(2rem + var(--ec-codePadInl))}.expressive-code .ec-section{position:relative}.expressive-code .ec-section summary{position:relative;font-family:var(--ec-cs-closedFontFml);font-size:var(--ec-cs-closedFontSize);line-height:var(--ec-cs-closedLineHt);user-select:none;-webkit-user-select:none;cursor:pointer;color:var(--ec-cs-closedTextCol);background-color:var(--ec-cs-closedBgCol);--border-color:var(--ec-cs-closedBrdCol);--border-width:var(--ec-cs-closedBrdWd);box-shadow:inset 0 calc(-1 * var(--border-width)) var(--border-color), inset 0 var(--border-width) var(--border-color);margin:var(--ec-cs-closedMarg);padding:0}.expressive-code .ec-section summary::marker{display:inline-block;content:&quot;&quot;;width:16px;height:16px}.expressive-code .ec-section summary::-webkit-details-marker{display:none}.expressive-code .ec-section summary :is(.expand, .collapse){position:relative;display:inline-block;width:16px;height:16px;vertical-align:text-bottom;opacity:0.75}.expressive-code .ec-section summary :is(.expand, .collapse)::after{content:&apos;&apos;;position:absolute;pointer-events:none;inset:0;background-color:var(--ec-cs-closedTextCol);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;line-height:0}.expressive-code .ec-section summary .expand::after{-webkit-mask-image:url(&quot;data:image/svg+xml,%3Csvg xmlns=&apos;http://www.w3.org/2000/svg&apos; viewBox=&apos;0 0 16 16&apos;%3E%3Cpath d=&apos;m8.177.677 2.896 2.896a.25.25 0 0 1-.177.427H8.75v1.25a.75.75 0 0 1-1.5 0V4H5.104a.25.25 0 0 1-.177-.427L7.823.677a.25.25 0 0 1 .354 0ZM7.25 10.75a.75.75 0 0 1 1.5 0V12h2.146a.25.25 0 0 1 .177.427l-2.896 2.896a.25.25 0 0 1-.354 0l-2.896-2.896A.25.25 0 0 1 5.104 12H7.25v-1.25Zm-5-2a.75.75 0 0 0 0-1.5h-.5a.75.75 0 0 0 0 1.5h.5ZM6 8a.75.75 0 0 1-.75.75h-.5a.75.75 0 0 1 0-1.5h.5A.75.75 0 0 1 6 8Zm2.25.75a.75.75 0 0 0 0-1.5h-.5a.75.75 0 0 0 0 1.5h.5ZM12 8a.75.75 0 0 1-.75.75h-.5a.75.75 0 0 1 0-1.5h.5A.75.75 0 0 1 12 8Zm2.25.75a.75.75 0 0 0 0-1.5h-.5a.75.75 0 0 0 0 1.5h.5Z&apos;/%3E%3C/svg%3E&quot;);mask-image:url(&quot;data:image/svg+xml,%3Csvg xmlns=&apos;http://www.w3.org/2000/svg&apos; viewBox=&apos;0 0 16 16&apos;%3E%3Cpath d=&apos;m8.177.677 2.896 2.896a.25.25 0 0 1-.177.427H8.75v1.25a.75.75 0 0 1-1.5 0V4H5.104a.25.25 0 0 1-.177-.427L7.823.677a.25.25 0 0 1 .354 0ZM7.25 10.75a.75.75 0 0 1 1.5 0V12h2.146a.25.25 0 0 1 .177.427l-2.896 2.896a.25.25 0 0 1-.354 0l-2.896-2.896A.25.25 0 0 1 5.104 12H7.25v-1.25Zm-5-2a.75.75 0 0 0 0-1.5h-.5a.75.75 0 0 0 0 1.5h.5ZM6 8a.75.75 0 0 1-.75.75h-.5a.75.75 0 0 1 0-1.5h.5A.75.75 0 0 1 6 8Zm2.25.75a.75.75 0 0 0 0-1.5h-.5a.75.75 0 0 0 0 1.5h.5ZM12 8a.75.75 0 0 1-.75.75h-.5a.75.75 0 0 1 0-1.5h.5A.75.75 0 0 1 12 8Zm2.25.75a.75.75 0 0 0 0-1.5h-.5a.75.75 0 0 0 0 1.5h.5Z&apos;/%3E%3C/svg%3E&quot;);-webkit-print-color-adjust:exact;print-color-adjust:exact}.expressive-code .ec-section summary .collapse{display:none}.expressive-code .ec-section summary .collapse::after{-webkit-mask-image:url(&quot;data:image/svg+xml,%3Csvg xmlns=&apos;http://www.w3.org/2000/svg&apos; viewBox=&apos;0 0 16 16&apos;%3E%3Cpath d=&apos;M10.896 2H8.75V.75a.75.75 0 0 0-1.5 0V2H5.104a.25.25 0 0 0-.177.427l2.896 2.896a.25.25 0 0 0 .354 0l2.896-2.896A.25.25 0 0 0 10.896 2ZM8.75 15.25a.75.75 0 0 1-1.5 0V14H5.104a.25.25 0 0 1-.177-.427l2.896-2.896a.25.25 0 0 1 .354 0l2.896 2.896a.25.25 0 0 1-.177.427H8.75v1.25Zm-6.5-6.5a.75.75 0 0 0 0-1.5h-.5a.75.75 0 0 0 0 1.5h.5ZM6 8a.75.75 0 0 1-.75.75h-.5a.75.75 0 0 1 0-1.5h.5A.75.75 0 0 1 6 8Zm2.25.75a.75.75 0 0 0 0-1.5h-.5a.75.75 0 0 0 0 1.5h.5ZM12 8a.75.75 0 0 1-.75.75h-.5a.75.75 0 0 1 0-1.5h.5A.75.75 0 0 1 12 8Zm2.25.75a.75.75 0 0 0 0-1.5h-.5a.75.75 0 0 0 0 1.5h.5Z&apos;/%3E%3C/svg%3E&quot;);mask-image:url(&quot;data:image/svg+xml,%3Csvg xmlns=&apos;http://www.w3.org/2000/svg&apos; viewBox=&apos;0 0 16 16&apos;%3E%3Cpath d=&apos;M10.896 2H8.75V.75a.75.75 0 0 0-1.5 0V2H5.104a.25.25 0 0 0-.177.427l2.896 2.896a.25.25 0 0 0 .354 0l2.896-2.896A.25.25 0 0 0 10.896 2ZM8.75 15.25a.75.75 0 0 1-1.5 0V14H5.104a.25.25 0 0 1-.177-.427l2.896-2.896a.25.25 0 0 1 .354 0l2.896 2.896a.25.25 0 0 1-.177.427H8.75v1.25Zm-6.5-6.5a.75.75 0 0 0 0-1.5h-.5a.75.75 0 0 0 0 1.5h.5ZM6 8a.75.75 0 0 1-.75.75h-.5a.75.75 0 0 1 0-1.5h.5A.75.75 0 0 1 6 8Zm2.25.75a.75.75 0 0 0 0-1.5h-.5a.75.75 0 0 0 0 1.5h.5ZM12 8a.75.75 0 0 1-.75.75h-.5a.75.75 0 0 1 0-1.5h.5A.75.75 0 0 1 12 8Zm2.25.75a.75.75 0 0 0 0-1.5h-.5a.75.75 0 0 0 0 1.5h.5Z&apos;/%3E%3C/svg%3E&quot;)}.expressive-code .ec-section summary .text{margin-left:1em}.expressive-code .ec-section summary .ec-line .code{padding-block:var(--ec-cs-closedPadBlk);text-indent:0}.expressive-code .ec-section[open],.expressive-code .ec-section details[open] + .content-lines{--border-color:var(--ec-cs-openBrdCol);--border-width:var(--ec-cs-openBrdWd);box-shadow:inset 0 calc(-1 * var(--border-width)) var(--border-color), inset 0 var(--border-width) var(--border-color);padding-inline:var(--ec-cs-openPad);margin-inline:var(--ec-cs-openMarg)}.expressive-code .ec-section.github[open] summary{display:none}.expressive-code .ec-section.github[open]{background-color:var(--ec-cs-openBgCol)}.expressive-code .ec-section:is(.collapsible-start, .collapsible-end){display:flex;flex-direction:column}.expressive-code .ec-section:is(.collapsible-start, .collapsible-end) .content-lines{display:none}.expressive-code .ec-section:is(.collapsible-start, .collapsible-end) details[open] .collapse{display:inline-block}.expressive-code .ec-section:is(.collapsible-start, .collapsible-end) details[open] :is(.expand, .text){display:none}.expressive-code .ec-section:is(.collapsible-start, .collapsible-end) details[open] + .content-lines{display:block;background-color:var(--ec-cs-openBgColCollapsible)}@media print{.expressive-code .ec-section:is(.collapsible-start, .collapsible-end) details[open]{display:none}}.expressive-code .ec-section.collapsible-end{flex-direction:column-reverse}.expressive-code .gutter .ln{display:inline-flex;justify-content:flex-end;align-items:flex-start;box-sizing:content-box;min-width:var(--lnWidth, 2ch);padding-inline:2ch;color:var(--ec-lineNumbers-fg)}.highlight .expressive-code .gutter .ln{color:var(--ec-lineNumbers-hlFg)}:root,:root:not([data-theme=&quot;light&quot;]) .expressive-code[data-theme=&quot;light&quot;]{--ec-brdRad:0.3rem;--ec-brdWd:1.5px;--ec-brdCol:var(--border);--ec-codeFontFml:var(--font-mono);--ec-codeFontSize:0.75rem;--ec-codeFontWg:400;--ec-codeLineHt:1.65;--ec-codePadBlk:1rem;--ec-codePadInl:1.35rem;--ec-codeBg:color-mix(in oklab, var(--muted) 25%, transparent);--ec-codeFg:#24292e;--ec-codeSelBg:#0366d625;--ec-gtrFg:#1b1f234d;--ec-gtrBrdCol:#1b1f2333;--ec-gtrBrdWd:1.5px;--ec-gtrHlFg:#24292e;--ec-uiFontFml:var(--font-sans);--ec-uiFontSize:0.9rem;--ec-uiFontWg:400;--ec-uiLineHt:1.65;--ec-uiPadBlk:0.25rem;--ec-uiPadInl:1rem;--ec-uiSelBg:#e2e5e9;--ec-uiSelFg:#2f363d;--ec-focusBrd:#2188ff;--ec-sbThumbCol:#959da533;--ec-sbThumbHoverCol:#959da544;--ec-tm-lineMarkerAccentMarg:0rem;--ec-tm-lineMarkerAccentWd:0.15rem;--ec-tm-lineMarkerLabelPadInl:0.2rem;--ec-tm-lineMarkerLabelCol:white;--ec-tm-lineDiffIndMargLeft:0.3rem;--ec-tm-inlMarkerBrdWd:1.5px;--ec-tm-inlMarkerBrdRad:0.2rem;--ec-tm-inlMarkerPad:0.15rem;--ec-tm-insDiffIndContent:&apos;+&apos;;--ec-tm-delDiffIndContent:&apos;-&apos;;--ec-tm-markBg:#9fb6ff80;--ec-tm-markBrdCol:#5570b3d0;--ec-tm-insBg:#94c68480;--ec-tm-insBrdCol:#4e7e41d0;--ec-tm-insDiffIndCol:#3a692fd0;--ec-tm-delBg:#fea09280;--ec-tm-delBrdCol:#ae594fd0;--ec-tm-delDiffIndCol:#97453dd0;--ec-frm-shdCol:#00000028;--ec-frm-frameBoxShdCssVal:none;--ec-frm-edActTabBg:color-mix(in oklab, var(--muted) 25%, transparent);--ec-frm-edActTabFg:var(--muted-foreground);--ec-frm-edActTabBrdCol:transparent;--ec-frm-edActTabIndHt:1.5px;--ec-frm-edActTabIndTopCol:transparent;--ec-frm-edActTabIndBtmCol:transparent;--ec-frm-edTabsMargInlStart:0;--ec-frm-edTabsMargBlkStart:0;--ec-frm-edTabBrdRad:0;--ec-frm-edTabBarBg:transparent;--ec-frm-edTabBarBrdCol:var(--border);--ec-frm-edTabBarBrdBtmCol:transparent;--ec-frm-edBg:color-mix(in oklab, var(--muted) 25%, transparent);--ec-frm-trmTtbFg:var(--muted-foreground);--ec-frm-trmTtbDotsFg:var(--muted-foreground);--ec-frm-trmTtbDotsOpa:0.15;--ec-frm-trmTtbBg:transparent;--ec-frm-trmTtbBrdBtmCol:transparent;--ec-frm-trmBg:color-mix(in oklab, var(--muted) 25%, transparent);--ec-frm-inlBtnFg:#24292e;--ec-frm-inlBtnBg:#24292e;--ec-frm-inlBtnBgIdleOpa:0;--ec-frm-inlBtnBgHoverOrFocusOpa:0.2;--ec-frm-inlBtnBgActOpa:0.3;--ec-frm-inlBtnBrd:#24292e;--ec-frm-inlBtnBrdOpa:0.4;--ec-frm-tooltipSuccessBg:#208638;--ec-frm-tooltipSuccessFg:white;--ec-cs-closedBrdWd:0;--ec-cs-closedPadBlk:4px;--ec-cs-closedMarg:0;--ec-cs-closedFontFml:inherit;--ec-cs-closedFontSize:inherit;--ec-cs-closedLineHt:inherit;--ec-cs-closedTextCol:#24292e;--ec-cs-closedBgCol:#d1d5da33;--ec-cs-closedBrdCol:#d1d5da80;--ec-cs-openBrdWd:1px;--ec-cs-openPad:0;--ec-cs-openMarg:0;--ec-cs-openBgCol:transparent;--ec-cs-openBgColCollapsible:#d1d5da1a;--ec-cs-openBrdCol:transparent;--ec-lineNumbers-fg:var(--muted-foreground);--ec-lineNumbers-hlFg:inherit}.expressive-code .ec-line :where(span[style^=&apos;--&apos;]:not([class])),:root:not([data-theme=&quot;light&quot;]) .expressive-code[data-theme=&quot;light&quot;] .ec-line :where(span[style^=&apos;--&apos;]:not([class])){color:var(--0, inherit);font-style:var(--0fs, inherit);font-weight:var(--0fw, inherit);text-decoration:var(--0td, inherit)}:root[data-theme=&quot;dark&quot;] .expressive-code:not([data-theme=&quot;light&quot;]),.expressive-code[data-theme=&quot;dark&quot;]{--ec-codeFg:#e1e4e8;--ec-codeSelBg:#3392ff44;--ec-gtrFg:#444d56;--ec-gtrBrdCol:#444d5633;--ec-gtrHlFg:#e1e4e8;--ec-uiSelBg:#39414a;--ec-uiSelFg:#e1e4e8;--ec-focusBrd:#005cc5;--ec-sbThumbCol:#6a737d33;--ec-sbThumbHoverCol:#6a737d44;--ec-tm-markBg:#264a8980;--ec-tm-insBg:#26561c80;--ec-tm-insDiffIndCol:#7eb070d0;--ec-tm-delBg:#81322b80;--ec-tm-delDiffIndCol:#e68a7ed0;--ec-frm-shdCol:#0000005b;--ec-frm-inlBtnFg:#e1e4e8;--ec-frm-inlBtnBg:#e1e4e8;--ec-frm-inlBtnBrd:#e1e4e8;--ec-frm-tooltipSuccessBg:#228739;--ec-cs-closedTextCol:#e1e4e8;--ec-cs-closedBgCol:#58606933;--ec-cs-closedBrdCol:#58606980;--ec-cs-openBgColCollapsible:#5860691a}:root[data-theme=&quot;dark&quot;] .expressive-code:not([data-theme=&quot;light&quot;]) .ec-line :where(span[style^=&apos;--&apos;]:not([class])),.expressive-code[data-theme=&quot;dark&quot;] .ec-line :where(span[style^=&apos;--&apos;]:not([class])){color:var(--1, inherit);font-style:var(--1fs, inherit);font-weight:var(--1fw, inherit);text-decoration:var(--1td, inherit)}&lt;/style&gt;&lt;script type=&quot;module&quot;&gt;try{(()=&gt;{function a(e){if(!e)return;let t=e.getAttribute(&quot;tabindex&quot;)!==null,n=e.scrollWidth&gt;e.clientWidth;n&amp;&amp;!t?e.setAttribute(&quot;tabindex&quot;,&quot;0&quot;):!n&amp;&amp;t&amp;&amp;e.removeAttribute(&quot;tabindex&quot;)}var u=window.requestIdleCallback||(e=&gt;setTimeout(e,1)),i=window.cancelIdleCallback||clearTimeout;function l(e){let t=new Set,n,r;return new ResizeObserver(c=&gt;{c.forEach(o=&gt;t.add(o.target)),n&amp;&amp;clearTimeout(n),r&amp;&amp;i(r),n=setTimeout(()=&gt;{r&amp;&amp;i(r),r=u(()=&gt;{t.forEach(o=&gt;e(o)),t.clear()})},250)})}function d(e,t){e.querySelectorAll?.(&quot;.expressive-code pre &gt; code&quot;).forEach(n=&gt;{let r=n.parentElement;r&amp;&amp;t.observe(r)})}var s=l(a);d(document,s);var b=new MutationObserver(e=&gt;e.forEach(t=&gt;t.addedNodes.forEach(n=&gt;{d(n,s)})));b.observe(document.body,{childList:!0,subtree:!0});document.addEventListener(&quot;astro:page-load&quot;,()=&gt;{d(document,s)});})();}catch(e){console.error(&quot;[EC] tabindex-js-module failed:&quot;,e)}&lt;/script&gt;&lt;script type=&quot;module&quot;&gt;try{(()=&gt;{function i(o){let e=document.createElement(&quot;pre&quot;);Object.assign(e.style,{opacity:&quot;0&quot;,pointerEvents:&quot;none&quot;,position:&quot;absolute&quot;,overflow:&quot;hidden&quot;,left:&quot;0&quot;,top:&quot;0&quot;,width:&quot;20px&quot;,height:&quot;20px&quot;,webkitUserSelect:&quot;auto&quot;,userSelect:&quot;all&quot;}),e.ariaHidden=&quot;true&quot;,e.textContent=o,document.body.appendChild(e);let a=document.createRange();a.selectNode(e);let n=getSelection();if(!n)return!1;n.removeAllRanges(),n.addRange(a);let r=!1;try{r=document.execCommand(&quot;copy&quot;)}finally{n.removeAllRanges(),document.body.removeChild(e)}return r}async function l(o){let e=o.currentTarget,a=e.dataset,n=!1,r=a.code.replace(/\u007f/g,`
`);try{await navigator.clipboard.writeText(r),n=!0}catch{n=i(r)}if(!n||e.parentNode?.querySelector(&quot;.feedback&quot;))return;let t=document.createElement(&quot;div&quot;);t.classList.add(&quot;feedback&quot;),t.append(a.copied),e.before(t),t.offsetWidth,requestAnimationFrame(()=&gt;t?.classList.add(&quot;show&quot;));let c=()=&gt;!t||t.classList.remove(&quot;show&quot;),d=()=&gt;{!t||parseFloat(getComputedStyle(t).opacity)&gt;0||(t.remove(),t=void 0)};setTimeout(c,1500),setTimeout(d,2500),e.addEventListener(&quot;blur&quot;,c),t.addEventListener(&quot;transitioncancel&quot;,d),t.addEventListener(&quot;transitionend&quot;,d)}function s(o){o.querySelectorAll?.(&quot;.expressive-code .copy button&quot;).forEach(e=&gt;e.addEventListener(&quot;click&quot;,l))}s(document);var u=new MutationObserver(o=&gt;o.forEach(e=&gt;e.addedNodes.forEach(a=&gt;{s(a)})));u.observe(document.body,{childList:!0,subtree:!0});document.addEventListener(&quot;astro:page-load&quot;,()=&gt;{s(document)});})();}catch(e){console.error(&quot;[EC] copy-js-module failed:&quot;,e)}&lt;/script&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;markdown&quot; class=&quot;wrap&quot; style=&quot;--ecMaxLine:11ch&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#24292E;--1:#E1E4E8&quot;&gt;```habitmap&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#24292E;--1:#E1E4E8&quot;&gt;habit: 运动&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#24292E;--1:#E1E4E8&quot;&gt;year: 2026&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#24292E;--1:#E1E4E8&quot;&gt;```&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;&amp;#x60;&amp;#x60;&amp;#x60;habitmaphabit: 运动year: 2026&amp;#x60;&amp;#x60;&amp;#x60;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;以下是可选字段：&lt;/p&gt;















































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;字段&lt;/th&gt;&lt;th&gt;必填&lt;/th&gt;&lt;th&gt;说明&lt;/th&gt;&lt;th&gt;示例&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;habit&lt;/code&gt;&lt;/td&gt;&lt;td&gt;是&lt;/td&gt;&lt;td&gt;习惯名称，作为数据存储的唯一 key&lt;/td&gt;&lt;td&gt;&lt;code&gt;habit: 运动&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;view&lt;/code&gt;&lt;/td&gt;&lt;td&gt;否&lt;/td&gt;&lt;td&gt;视图类型：&lt;code&gt;year&lt;/code&gt; / &lt;code&gt;month&lt;/code&gt; / &lt;code&gt;week&lt;/code&gt;，默认 &lt;code&gt;year&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;view: month&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;year&lt;/code&gt;&lt;/td&gt;&lt;td&gt;否&lt;/td&gt;&lt;td&gt;年份，默认当前年&lt;/td&gt;&lt;td&gt;&lt;code&gt;year: 2026&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;month&lt;/code&gt;&lt;/td&gt;&lt;td&gt;否&lt;/td&gt;&lt;td&gt;月份 1–12，仅 &lt;code&gt;month&lt;/code&gt; 视图使用，默认当前月&lt;/td&gt;&lt;td&gt;&lt;code&gt;month: 5&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;week&lt;/code&gt;&lt;/td&gt;&lt;td&gt;否&lt;/td&gt;&lt;td&gt;ISO 周数，仅 &lt;code&gt;week&lt;/code&gt; 视图使用，默认当前周&lt;/td&gt;&lt;td&gt;&lt;code&gt;week: 19&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;title&lt;/code&gt;&lt;/td&gt;&lt;td&gt;否&lt;/td&gt;&lt;td&gt;显示标题，不填则使用 habit 名称&lt;/td&gt;&lt;td&gt;&lt;code&gt;title: 每日跑步&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;功能特色&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在任意笔记中嵌入 &lt;code&gt;habitmap&lt;/code&gt; 代码块，渲染为交互式热力图&lt;/li&gt;
&lt;li&gt;支持年视图（全年热力图）、月视图（日历网格）、周视图（横排单周）&lt;/li&gt;
&lt;li&gt;点击任意格子切换打卡状态，再次点击取消&lt;/li&gt;
&lt;li&gt;多习惯独立追踪，互不干扰&lt;/li&gt;
&lt;li&gt;支持语言切换（English / 中文）&lt;/li&gt;
&lt;li&gt;支持每周起始日设置（周日 / 周一）&lt;/li&gt;
&lt;li&gt;数据存储在专用 Joplin 笔记中，随 Joplin 同步到所有设备&lt;/li&gt;
&lt;li&gt;支持亮色/深色主题&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;
&lt;p&gt;下载地址&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/Mdreame/Joplin-Habit-Tracker&quot; rel=&quot;nofollow noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Github&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://joplinapp.org/plugins/plugin/io.github.mdreame.habit-tracker/&quot; rel=&quot;nofollow noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Joplin 插件市场&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content:encoded></item><item><title>Joplin 的新功能</title><link>https://blog.mdreame.space/blog/2026-05-09-joplin-%E7%9A%84%E6%96%B0%E5%8A%9F%E8%83%BD/</link><guid isPermaLink="true">https://blog.mdreame.space/blog/2026-05-09-joplin-%E7%9A%84%E6%96%B0%E5%8A%9F%E8%83%BD/</guid><description>Joplin 支持显示待办进度和所见即所得编辑。</description><pubDate>Sat, 09 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;今早 Joplin 弹窗提醒有新版本可用，于是更新了。之前好像没在意更新的情况，应该跳过了好多个版本。这次更新有几个新功能比较好。&lt;/p&gt;
&lt;p&gt;第一个新增功能是在标题右侧显示笔记内所有任务的总进度。这一点我非常喜欢。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/2126c656b8778326fdfbd8f159540fd4-1778289500975.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;因为我的日志和待办任务都是通过 Joplin 来记录的。通常是写日志的过程中理清有哪些待办，列在每天记录的开头。但因为有些不是紧急任务，随着日志积累通常会沉没。我有用 &lt;a href=&quot;https://joplinapp.org/plugins/plugin/plugin.calebjohn.todo/&quot; rel=&quot;nofollow noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Inline TODO&lt;/a&gt; 这个插件来统计所有待办的完成情况。使用方法是创建一个 TODO Summary 笔记，只要内容包含 ”@&amp;#x3C;分类&gt;” 的未完成待办都会出现在这个笔记中，效果如下。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/6cc8e07e2b1d990af9f981cf9fb74d66-1778289897182.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;可以看到我每月都有很多任务没有完成，因为我的这个日志系统还没有熟悉，另外感到缺憾的就是没办法看到细节和进度。现在有了进度图示，我的每月待办完成情况一目了然。配合 TODO Summary 可以更细化拆解任务，而不是通过 Joplin 的待办笔记来提醒。&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://img.mdreame.space/cf9086a19b57750312820409cd6ce555-1778291157124.webp&quot; alt=&quot;汗颜😅&quot;&gt;&lt;figcaption&gt;汗颜😅&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;接下来需要摸索一段时间，届时再分享体会。&lt;/p&gt;
&lt;p&gt;第二个新功能是支持所见即所得编辑器，不过效果没有 Typora 那样完善。比如 mermaid 语法不能显示，目前只支持 markdown 语法和图片。即便如此已经能满足我的需求了，不用再体会分栏或窗口编辑器的分裂感。值得一提的是手机端在 3.6 版本后也支持了! 以往在手机端看着长长的 markdown 文本丝毫没有编辑的欲望，只能干瞪眼。这下可以让我随时修改，增加我记录的频率。&lt;/p&gt;
&lt;p&gt;其次是支持聚焦，能突出显示光标所在的段落。可以说这两个功能基本上是将 &lt;a href=&quot;https://joplinapp.org/plugins/plugin/plugin.calebjohn.rich-markdown/&quot; rel=&quot;nofollow noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Rich Markdown&lt;/a&gt; 这个插件的功能移植了。&lt;/p&gt;
&lt;p&gt;第三个就是左下角同步详情能折叠了。之前这块区域挡住了笔记本，看起来非常膈应，现在舒服多了。&lt;/p&gt;
&lt;p&gt;其余功能比如支持渲染 frontmatter 字段、指定音视频的播放起点、PDF 的开始页数等等细节功能我不常使用，也就不赘述了。&lt;/p&gt;
&lt;p&gt;最后希望 Joplin 越做越好，感谢贡献者们。&lt;/p&gt;</content:encoded></item><item><title>通过 Github Actions 推送 The Economist 到个人邮箱</title><link>https://blog.mdreame.space/blog/2026-05-08-%E9%80%9A%E8%BF%87-github-actions-%E6%8E%A8%E9%80%81-the-economist-%E5%88%B0%E9%82%AE%E7%AE%B1/</link><guid isPermaLink="true">https://blog.mdreame.space/blog/2026-05-08-%E9%80%9A%E8%BF%87-github-actions-%E6%8E%A8%E9%80%81-the-economist-%E5%88%B0%E9%82%AE%E7%AE%B1/</guid><description>通过 Github Actions 将新增文件推送到自己的邮箱。</description><pubDate>Fri, 08 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;感谢 &lt;a href=&quot;https://github.com/hehonghui/awesome-english-ebooks&quot; rel=&quot;nofollow noreferrer noopener&quot; target=&quot;_blank&quot;&gt;awesome-english-ebooks&lt;/a&gt; 项目作者，感谢 Claude Code 老师。&lt;/p&gt;
&lt;h2 id=&quot;获取邮箱密授权码&quot;&gt;获取邮箱密授权码&lt;/h2&gt;
&lt;p&gt;我用 QQ 邮箱，需要使用授权码代替邮箱密码。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;登录 QQ 邮箱 → 设置 → 账号与安全&lt;/li&gt;
&lt;li&gt;下滑找到 “POP3/IMAP/SMTP/Exchange/CardDAV 服务”，开启&lt;/li&gt;
&lt;li&gt;按提示发短信验证，获得授权码，保存好&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;创建-github-仓库并添加密钥&quot;&gt;创建 Github 仓库并添加密钥&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;在 GitHub 新建一个仓库（随意命名，如 ebook-sync）&lt;/li&gt;
&lt;li&gt;进入仓库 → Settings → Secrets and variables → Actions → New repository secret&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;添加两项：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;QQ_EMAIL 你的 QQ 邮箱地址&lt;/li&gt;
&lt;li&gt;QQ_AUTH_CODE 第一步获取的授权码&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;设置-github-actions&quot;&gt;设置 Github Actions&lt;/h2&gt;
&lt;p&gt;在本地 git 初始化一个空文件夹，然后添加 .github/workflows/send-epub.yml 文件，内容如下。完成后推送到 ebook-sync 仓库。&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;style&gt;.expressive-code{font-family:var(--ec-uiFontFml);font-size:var(--ec-uiFontSize);font-weight:var(--ec-uiFontWg);line-height:var(--ec-uiLineHt);text-size-adjust:none;-webkit-text-size-adjust:none}.expressive-code *:not(:is(svg, svg *)){all:revert;box-sizing:border-box}.expressive-code pre{display:flex;margin:0;padding:0;border:var(--ec-brdWd) solid var(--ec-brdCol);border-radius:calc(var(--ec-brdRad) + var(--ec-brdWd));background:var(--ec-codeBg)}.expressive-code pre:focus-visible{outline:3px solid var(--ec-focusBrd);outline-offset:-3px}.expressive-code pre &gt; code{all:unset;display:block;flex:1 0 100%;padding:var(--ec-codePadBlk) 0;color:var(--ec-codeFg);font-family:var(--ec-codeFontFml);font-size:var(--ec-codeFontSize);font-weight:var(--ec-codeFontWg);line-height:var(--ec-codeLineHt)}.expressive-code pre{overflow-x:auto}.expressive-code pre.wrap .ec-line .code{white-space:pre-wrap;overflow-wrap:break-word;min-width:min(20ch, var(--ecMaxLine, 20ch))}.expressive-code pre.wrap .ec-line .code span.indent{white-space:pre}.expressive-code pre::-webkit-scrollbar,.expressive-code pre::-webkit-scrollbar-track{background-color:inherit;border-radius:calc(var(--ec-brdRad) + var(--ec-brdWd));border-top-left-radius:0;border-top-right-radius:0}.expressive-code pre::-webkit-scrollbar-thumb{background-color:var(--ec-sbThumbCol);border:4px solid transparent;background-clip:content-box;border-radius:10px}.expressive-code pre::-webkit-scrollbar-thumb:hover{background-color:var(--ec-sbThumbHoverCol)}.expressive-code .ec-line{direction:ltr;unicode-bidi:isolate;display:grid;grid-template-areas:&apos;gutter code&apos;;grid-template-columns:auto 1fr;position:relative}.expressive-code .ec-line .gutter{grid-area:gutter;color:var(--ec-gtrFg)}.expressive-code .ec-line .gutter &gt; *{pointer-events:none;user-select:none;-webkit-user-select:none}.expressive-code .ec-line .gutter ~ .code{--ecLineBrdCol:var(--ec-gtrBrdCol)}.expressive-code .ec-line.highlight .gutter{color:var(--ec-gtrHlFg)}.expressive-code .ec-line .code{grid-area:code;position:relative;box-sizing:content-box;padding-inline-start:calc(var(--ecIndent, 0ch) + var(--ec-codePadInl) - var(--ecGtrBrdWd));padding-inline-end:var(--ec-codePadInl);text-indent:calc(var(--ecIndent, 0ch) * -1)}.expressive-code .ec-line .code::before,.expressive-code .ec-line .code::after,.expressive-code .ec-line .code :where(*){text-indent:0}.expressive-code .ec-line .code{--ecGtrBrdWd:var(--ec-gtrBrdWd);border-inline-start:var(--ecGtrBrdWd) solid var(--ecLineBrdCol, transparent)}.expressive-code .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}.expressive-code .ec-line.mark{--tmLineBgCol:var(--ec-tm-markBg)}.expressive-code .ec-line.mark .code{--ecLineBrdCol:var(--ec-tm-markBrdCol)}.expressive-code .ec-line.ins{--tmLineBgCol:var(--ec-tm-insBg);--tmLabel:var(--ec-tm-insDiffIndContent)}.expressive-code .ec-line.ins .code{--ecLineBrdCol:var(--ec-tm-insBrdCol)}.expressive-code .ec-line.ins .code::before{color:var(--ec-tm-insDiffIndCol)}.expressive-code .ec-line.del{--tmLineBgCol:var(--ec-tm-delBg);--tmLabel:var(--ec-tm-delDiffIndContent)}.expressive-code .ec-line.del .code{--ecLineBrdCol:var(--ec-tm-delBrdCol)}.expressive-code .ec-line.del .code::before{color:var(--ec-tm-delDiffIndCol)}.expressive-code .ec-line.mark,.expressive-code .ec-line.ins,.expressive-code .ec-line.del{background:var(--tmLineBgCol)}.expressive-code .ec-line.mark .code,.expressive-code .ec-line.ins .code,.expressive-code .ec-line.del .code{--ecGtrBrdWd:var(--ec-tm-lineMarkerAccentWd)}.expressive-code .ec-line.mark .code::before,.expressive-code .ec-line.ins .code::before,.expressive-code .ec-line.del .code::before{display:block;position:absolute;left:0;box-sizing:border-box;content:var(--tmLabel, &apos; &apos;);padding-inline-start:var(--ec-tm-lineDiffIndMargLeft);text-align:center;white-space:pre}.expressive-code .ec-line.mark.tm-label .code::before,.expressive-code .ec-line.ins.tm-label .code::before,.expressive-code .ec-line.del.tm-label .code::before{background:var(--ecLineBrdCol);padding:0 calc(var(--ec-tm-lineMarkerLabelPadInl) + var(--ec-tm-lineMarkerAccentWd)) 0 var(--ec-tm-lineMarkerLabelPadInl);color:var(--ec-tm-lineMarkerLabelCol)}.expressive-code .ec-line mark{--tmInlineBgCol:var(--ec-tm-markBg);--tmInlineBrdCol:var(--ec-tm-markBrdCol)}.expressive-code .ec-line ins{--tmInlineBgCol:var(--ec-tm-insBg);--tmInlineBrdCol:var(--ec-tm-insBrdCol)}.expressive-code .ec-line del{--tmInlineBgCol:var(--ec-tm-delBg);--tmInlineBrdCol:var(--ec-tm-delBrdCol)}.expressive-code .ec-line mark,.expressive-code .ec-line ins,.expressive-code .ec-line del{all:unset;display:inline-block;position:relative;--tmBrdL:var(--ec-tm-inlMarkerBrdWd);--tmBrdR:var(--ec-tm-inlMarkerBrdWd);--tmRadL:var(--ec-tm-inlMarkerBrdRad);--tmRadR:var(--ec-tm-inlMarkerBrdRad);margin-inline:0.025rem;padding-inline:var(--ec-tm-inlMarkerPad);border-radius:var(--tmRadL) var(--tmRadR) var(--tmRadR) var(--tmRadL);background:var(--tmInlineBgCol);background-clip:padding-box}.expressive-code .ec-line mark.open-start,.expressive-code .ec-line ins.open-start,.expressive-code .ec-line del.open-start{margin-inline-start:0;padding-inline-start:0;--tmBrdL:0px;--tmRadL:0}.expressive-code .ec-line mark.open-end,.expressive-code .ec-line ins.open-end,.expressive-code .ec-line del.open-end{margin-inline-end:0;padding-inline-end:0;--tmBrdR:0px;--tmRadR:0}.expressive-code .ec-line mark::before,.expressive-code .ec-line ins::before,.expressive-code .ec-line del::before{content:&apos;&apos;;position:absolute;pointer-events:none;display:inline-block;inset:0;border-radius:var(--tmRadL) var(--tmRadR) var(--tmRadR) var(--tmRadL);border:var(--ec-tm-inlMarkerBrdWd) solid var(--tmInlineBrdCol);border-inline-width:var(--tmBrdL) var(--tmBrdR)}.expressive-code .frame{all:unset;position:relative;display:block;--header-border-radius:calc(var(--ec-brdRad) + var(--ec-brdWd));--tab-border-radius:calc(var(--ec-frm-edTabBrdRad) + var(--ec-brdWd));--button-spacing:0.4rem;--code-background:var(--ec-frm-edBg);border-radius:var(--header-border-radius);box-shadow:var(--ec-frm-frameBoxShdCssVal)}.expressive-code .frame .header{display:none;z-index:1;position:relative;border-radius:var(--header-border-radius) var(--header-border-radius) 0 0}.expressive-code .frame.has-title pre,.expressive-code .frame.has-title code,.expressive-code .frame.is-terminal pre,.expressive-code .frame.is-terminal code{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.expressive-code .frame .title:empty:before{content:&apos;\a0&apos;}.expressive-code .frame.has-title:not(.is-terminal){--button-spacing:calc(1.9rem + 2 * (var(--ec-uiPadBlk) + var(--ec-frm-edActTabIndHt)))}.expressive-code .frame.has-title:not(.is-terminal) .title{position:relative;color:var(--ec-frm-edActTabFg);background:var(--ec-frm-edActTabBg);background-clip:padding-box;margin-block-start:var(--ec-frm-edTabsMargBlkStart);padding:calc(var(--ec-uiPadBlk) + var(--ec-frm-edActTabIndHt)) var(--ec-uiPadInl);border:var(--ec-brdWd) solid var(--ec-frm-edActTabBrdCol);border-radius:var(--tab-border-radius) var(--tab-border-radius) 0 0;border-bottom:none;overflow:hidden}.expressive-code .frame.has-title:not(.is-terminal) .title::after{content:&apos;&apos;;position:absolute;pointer-events:none;inset:0;border-top:var(--ec-frm-edActTabIndHt) solid var(--ec-frm-edActTabIndTopCol);border-bottom:var(--ec-frm-edActTabIndHt) solid var(--ec-frm-edActTabIndBtmCol)}.expressive-code .frame.has-title:not(.is-terminal) .header{display:flex;background:linear-gradient(to top, var(--ec-frm-edTabBarBrdBtmCol) var(--ec-brdWd), transparent var(--ec-brdWd)),linear-gradient(var(--ec-frm-edTabBarBg), var(--ec-frm-edTabBarBg));background-repeat:no-repeat;padding-inline-start:var(--ec-frm-edTabsMargInlStart)}.expressive-code .frame.has-title:not(.is-terminal) .header::before{content:&apos;&apos;;position:absolute;pointer-events:none;inset:0;border:var(--ec-brdWd) solid var(--ec-frm-edTabBarBrdCol);border-radius:inherit;border-bottom:none}.expressive-code .frame.is-terminal{--button-spacing:calc(1.9rem + var(--ec-brdWd) + 2 * var(--ec-uiPadBlk));--code-background:var(--ec-frm-trmBg)}.expressive-code .frame.is-terminal .header{display:flex;align-items:center;justify-content:center;padding-block:var(--ec-uiPadBlk);padding-block-end:calc(var(--ec-uiPadBlk) + var(--ec-brdWd));position:relative;font-weight:500;letter-spacing:0.025ch;color:var(--ec-frm-trmTtbFg);background:var(--ec-frm-trmTtbBg);border:var(--ec-brdWd) solid var(--ec-brdCol);border-bottom:none}.expressive-code .frame.is-terminal .header::before{content:&apos;&apos;;position:absolute;pointer-events:none;left:var(--ec-uiPadInl);width:2.1rem;height:0.56rem;line-height:0;background-color:var(--ec-frm-trmTtbDotsFg);opacity:var(--ec-frm-trmTtbDotsOpa);-webkit-mask-image:url(&quot;data:image/svg+xml,%3Csvg xmlns=&apos;http://www.w3.org/2000/svg&apos; viewBox=&apos;0 0 60 16&apos; preserveAspectRatio=&apos;xMidYMid meet&apos;%3E%3Ccircle cx=&apos;8&apos; cy=&apos;8&apos; r=&apos;8&apos;/%3E%3Ccircle cx=&apos;30&apos; cy=&apos;8&apos; r=&apos;8&apos;/%3E%3Ccircle cx=&apos;52&apos; cy=&apos;8&apos; r=&apos;8&apos;/%3E%3C/svg%3E&quot;);-webkit-mask-repeat:no-repeat;mask-image:url(&quot;data:image/svg+xml,%3Csvg xmlns=&apos;http://www.w3.org/2000/svg&apos; viewBox=&apos;0 0 60 16&apos; preserveAspectRatio=&apos;xMidYMid meet&apos;%3E%3Ccircle cx=&apos;8&apos; cy=&apos;8&apos; r=&apos;8&apos;/%3E%3Ccircle cx=&apos;30&apos; cy=&apos;8&apos; r=&apos;8&apos;/%3E%3Ccircle cx=&apos;52&apos; cy=&apos;8&apos; r=&apos;8&apos;/%3E%3C/svg%3E&quot;);mask-repeat:no-repeat}.expressive-code .frame.is-terminal .header::after{content:&apos;&apos;;position:absolute;pointer-events:none;inset:0;border-bottom:var(--ec-brdWd) solid var(--ec-frm-trmTtbBrdBtmCol)}.expressive-code .frame pre{background:var(--code-background)}.expressive-code .copy{display:flex;gap:0.25rem;flex-direction:row;position:absolute;inset-block-start:calc(var(--ec-brdWd) + var(--button-spacing));inset-inline-end:calc(var(--ec-brdWd) + var(--ec-uiPadInl) / 2)}@media (scripting: none){.expressive-code .copy{display:none}}.expressive-code .copy{direction:ltr;unicode-bidi:isolate}.expressive-code .copy button{position:relative;align-self:flex-end;margin:0;padding:0;border:none;border-radius:0.2rem;z-index:1;cursor:pointer;transition-property:opacity, background, border-color;transition-duration:0.2s;transition-timing-function:cubic-bezier(0.25, 0.46, 0.45, 0.94);width:2.5rem;height:2.5rem;background:var(--code-background);opacity:0.75}.expressive-code .copy button div{position:absolute;inset:0;border-radius:inherit;background:var(--ec-frm-inlBtnBg);opacity:var(--ec-frm-inlBtnBgIdleOpa);transition-property:inherit;transition-duration:inherit;transition-timing-function:inherit}.expressive-code .copy button::before{content:&apos;&apos;;position:absolute;pointer-events:none;inset:0;border-radius:inherit;border:var(--ec-brdWd) solid var(--ec-frm-inlBtnBrd);opacity:var(--ec-frm-inlBtnBrdOpa)}.expressive-code .copy button::after{content:&apos;&apos;;position:absolute;pointer-events:none;inset:0;background-color:var(--ec-frm-inlBtnFg);-webkit-mask-image:url(&quot;data:image/svg+xml,%3Csvg xmlns=&apos;http://www.w3.org/2000/svg&apos; viewBox=&apos;0 0 24 24&apos; fill=&apos;none&apos; stroke=&apos;black&apos; stroke-width=&apos;1.75&apos;%3E%3Cpath d=&apos;M3 19a2 2 0 0 1-1-2V2a2 2 0 0 1 1-1h13a2 2 0 0 1 2 1&apos;/%3E%3Crect x=&apos;6&apos; y=&apos;5&apos; width=&apos;16&apos; height=&apos;18&apos; rx=&apos;1.5&apos; ry=&apos;1.5&apos;/%3E%3C/svg%3E&quot;);-webkit-mask-repeat:no-repeat;mask-image:url(&quot;data:image/svg+xml,%3Csvg xmlns=&apos;http://www.w3.org/2000/svg&apos; viewBox=&apos;0 0 24 24&apos; fill=&apos;none&apos; stroke=&apos;black&apos; stroke-width=&apos;1.75&apos;%3E%3Cpath d=&apos;M3 19a2 2 0 0 1-1-2V2a2 2 0 0 1 1-1h13a2 2 0 0 1 2 1&apos;/%3E%3Crect x=&apos;6&apos; y=&apos;5&apos; width=&apos;16&apos; height=&apos;18&apos; rx=&apos;1.5&apos; ry=&apos;1.5&apos;/%3E%3C/svg%3E&quot;);mask-repeat:no-repeat;margin:0.475rem;line-height:0}.expressive-code .copy button:hover,.expressive-code .copy button:focus:focus-visible{opacity:1}.expressive-code .copy button:hover div,.expressive-code .copy button:focus:focus-visible div{opacity:var(--ec-frm-inlBtnBgHoverOrFocusOpa)}.expressive-code .copy button:active{opacity:1}.expressive-code .copy button:active div{opacity:var(--ec-frm-inlBtnBgActOpa)}.expressive-code .copy .feedback{--tooltip-arrow-size:0.35rem;--tooltip-bg:var(--ec-frm-tooltipSuccessBg);color:var(--ec-frm-tooltipSuccessFg);pointer-events:none;user-select:none;-webkit-user-select:none;position:relative;align-self:center;background-color:var(--tooltip-bg);z-index:99;padding:0.125rem 0.75rem;border-radius:0.2rem;margin-inline-end:var(--tooltip-arrow-size);opacity:0;transition-property:opacity, transform;transition-duration:0.2s;transition-timing-function:ease-in-out;transform:translate3d(0, 0.25rem, 0)}.expressive-code .copy .feedback::after{content:&apos;&apos;;position:absolute;pointer-events:none;top:calc(50% - var(--tooltip-arrow-size));inset-inline-end:calc(-2 * (var(--tooltip-arrow-size) - 0.5px));border:var(--tooltip-arrow-size) solid transparent;border-inline-start-color:var(--tooltip-bg)}.expressive-code .copy .feedback.show{opacity:1;transform:translate3d(0, 0, 0)}@media (hover: hover){.expressive-code{}.expressive-code .copy button{opacity:0;width:2rem;height:2rem}.expressive-code .frame:hover .copy button:not(:hover),.expressive-code .frame:focus-within :focus-visible ~ .copy button:not(:hover),.expressive-code .frame .copy .feedback.show ~ button:not(:hover){opacity:0.75}}.expressive-code :nth-child(1 of .ec-line) .code{padding-inline-end:calc(2rem + var(--ec-codePadInl))}.expressive-code .ec-section{position:relative}.expressive-code .ec-section summary{position:relative;font-family:var(--ec-cs-closedFontFml);font-size:var(--ec-cs-closedFontSize);line-height:var(--ec-cs-closedLineHt);user-select:none;-webkit-user-select:none;cursor:pointer;color:var(--ec-cs-closedTextCol);background-color:var(--ec-cs-closedBgCol);--border-color:var(--ec-cs-closedBrdCol);--border-width:var(--ec-cs-closedBrdWd);box-shadow:inset 0 calc(-1 * var(--border-width)) var(--border-color), inset 0 var(--border-width) var(--border-color);margin:var(--ec-cs-closedMarg);padding:0}.expressive-code .ec-section summary::marker{display:inline-block;content:&quot;&quot;;width:16px;height:16px}.expressive-code .ec-section summary::-webkit-details-marker{display:none}.expressive-code .ec-section summary :is(.expand, .collapse){position:relative;display:inline-block;width:16px;height:16px;vertical-align:text-bottom;opacity:0.75}.expressive-code .ec-section summary :is(.expand, .collapse)::after{content:&apos;&apos;;position:absolute;pointer-events:none;inset:0;background-color:var(--ec-cs-closedTextCol);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;line-height:0}.expressive-code .ec-section summary .expand::after{-webkit-mask-image:url(&quot;data:image/svg+xml,%3Csvg xmlns=&apos;http://www.w3.org/2000/svg&apos; viewBox=&apos;0 0 16 16&apos;%3E%3Cpath d=&apos;m8.177.677 2.896 2.896a.25.25 0 0 1-.177.427H8.75v1.25a.75.75 0 0 1-1.5 0V4H5.104a.25.25 0 0 1-.177-.427L7.823.677a.25.25 0 0 1 .354 0ZM7.25 10.75a.75.75 0 0 1 1.5 0V12h2.146a.25.25 0 0 1 .177.427l-2.896 2.896a.25.25 0 0 1-.354 0l-2.896-2.896A.25.25 0 0 1 5.104 12H7.25v-1.25Zm-5-2a.75.75 0 0 0 0-1.5h-.5a.75.75 0 0 0 0 1.5h.5ZM6 8a.75.75 0 0 1-.75.75h-.5a.75.75 0 0 1 0-1.5h.5A.75.75 0 0 1 6 8Zm2.25.75a.75.75 0 0 0 0-1.5h-.5a.75.75 0 0 0 0 1.5h.5ZM12 8a.75.75 0 0 1-.75.75h-.5a.75.75 0 0 1 0-1.5h.5A.75.75 0 0 1 12 8Zm2.25.75a.75.75 0 0 0 0-1.5h-.5a.75.75 0 0 0 0 1.5h.5Z&apos;/%3E%3C/svg%3E&quot;);mask-image:url(&quot;data:image/svg+xml,%3Csvg xmlns=&apos;http://www.w3.org/2000/svg&apos; viewBox=&apos;0 0 16 16&apos;%3E%3Cpath d=&apos;m8.177.677 2.896 2.896a.25.25 0 0 1-.177.427H8.75v1.25a.75.75 0 0 1-1.5 0V4H5.104a.25.25 0 0 1-.177-.427L7.823.677a.25.25 0 0 1 .354 0ZM7.25 10.75a.75.75 0 0 1 1.5 0V12h2.146a.25.25 0 0 1 .177.427l-2.896 2.896a.25.25 0 0 1-.354 0l-2.896-2.896A.25.25 0 0 1 5.104 12H7.25v-1.25Zm-5-2a.75.75 0 0 0 0-1.5h-.5a.75.75 0 0 0 0 1.5h.5ZM6 8a.75.75 0 0 1-.75.75h-.5a.75.75 0 0 1 0-1.5h.5A.75.75 0 0 1 6 8Zm2.25.75a.75.75 0 0 0 0-1.5h-.5a.75.75 0 0 0 0 1.5h.5ZM12 8a.75.75 0 0 1-.75.75h-.5a.75.75 0 0 1 0-1.5h.5A.75.75 0 0 1 12 8Zm2.25.75a.75.75 0 0 0 0-1.5h-.5a.75.75 0 0 0 0 1.5h.5Z&apos;/%3E%3C/svg%3E&quot;);-webkit-print-color-adjust:exact;print-color-adjust:exact}.expressive-code .ec-section summary .collapse{display:none}.expressive-code .ec-section summary .collapse::after{-webkit-mask-image:url(&quot;data:image/svg+xml,%3Csvg xmlns=&apos;http://www.w3.org/2000/svg&apos; viewBox=&apos;0 0 16 16&apos;%3E%3Cpath d=&apos;M10.896 2H8.75V.75a.75.75 0 0 0-1.5 0V2H5.104a.25.25 0 0 0-.177.427l2.896 2.896a.25.25 0 0 0 .354 0l2.896-2.896A.25.25 0 0 0 10.896 2ZM8.75 15.25a.75.75 0 0 1-1.5 0V14H5.104a.25.25 0 0 1-.177-.427l2.896-2.896a.25.25 0 0 1 .354 0l2.896 2.896a.25.25 0 0 1-.177.427H8.75v1.25Zm-6.5-6.5a.75.75 0 0 0 0-1.5h-.5a.75.75 0 0 0 0 1.5h.5ZM6 8a.75.75 0 0 1-.75.75h-.5a.75.75 0 0 1 0-1.5h.5A.75.75 0 0 1 6 8Zm2.25.75a.75.75 0 0 0 0-1.5h-.5a.75.75 0 0 0 0 1.5h.5ZM12 8a.75.75 0 0 1-.75.75h-.5a.75.75 0 0 1 0-1.5h.5A.75.75 0 0 1 12 8Zm2.25.75a.75.75 0 0 0 0-1.5h-.5a.75.75 0 0 0 0 1.5h.5Z&apos;/%3E%3C/svg%3E&quot;);mask-image:url(&quot;data:image/svg+xml,%3Csvg xmlns=&apos;http://www.w3.org/2000/svg&apos; viewBox=&apos;0 0 16 16&apos;%3E%3Cpath d=&apos;M10.896 2H8.75V.75a.75.75 0 0 0-1.5 0V2H5.104a.25.25 0 0 0-.177.427l2.896 2.896a.25.25 0 0 0 .354 0l2.896-2.896A.25.25 0 0 0 10.896 2ZM8.75 15.25a.75.75 0 0 1-1.5 0V14H5.104a.25.25 0 0 1-.177-.427l2.896-2.896a.25.25 0 0 1 .354 0l2.896 2.896a.25.25 0 0 1-.177.427H8.75v1.25Zm-6.5-6.5a.75.75 0 0 0 0-1.5h-.5a.75.75 0 0 0 0 1.5h.5ZM6 8a.75.75 0 0 1-.75.75h-.5a.75.75 0 0 1 0-1.5h.5A.75.75 0 0 1 6 8Zm2.25.75a.75.75 0 0 0 0-1.5h-.5a.75.75 0 0 0 0 1.5h.5ZM12 8a.75.75 0 0 1-.75.75h-.5a.75.75 0 0 1 0-1.5h.5A.75.75 0 0 1 12 8Zm2.25.75a.75.75 0 0 0 0-1.5h-.5a.75.75 0 0 0 0 1.5h.5Z&apos;/%3E%3C/svg%3E&quot;)}.expressive-code .ec-section summary .text{margin-left:1em}.expressive-code .ec-section summary .ec-line .code{padding-block:var(--ec-cs-closedPadBlk);text-indent:0}.expressive-code .ec-section[open],.expressive-code .ec-section details[open] + .content-lines{--border-color:var(--ec-cs-openBrdCol);--border-width:var(--ec-cs-openBrdWd);box-shadow:inset 0 calc(-1 * var(--border-width)) var(--border-color), inset 0 var(--border-width) var(--border-color);padding-inline:var(--ec-cs-openPad);margin-inline:var(--ec-cs-openMarg)}.expressive-code .ec-section.github[open] summary{display:none}.expressive-code .ec-section.github[open]{background-color:var(--ec-cs-openBgCol)}.expressive-code .ec-section:is(.collapsible-start, .collapsible-end){display:flex;flex-direction:column}.expressive-code .ec-section:is(.collapsible-start, .collapsible-end) .content-lines{display:none}.expressive-code .ec-section:is(.collapsible-start, .collapsible-end) details[open] .collapse{display:inline-block}.expressive-code .ec-section:is(.collapsible-start, .collapsible-end) details[open] :is(.expand, .text){display:none}.expressive-code .ec-section:is(.collapsible-start, .collapsible-end) details[open] + .content-lines{display:block;background-color:var(--ec-cs-openBgColCollapsible)}@media print{.expressive-code .ec-section:is(.collapsible-start, .collapsible-end) details[open]{display:none}}.expressive-code .ec-section.collapsible-end{flex-direction:column-reverse}.expressive-code .gutter .ln{display:inline-flex;justify-content:flex-end;align-items:flex-start;box-sizing:content-box;min-width:var(--lnWidth, 2ch);padding-inline:2ch;color:var(--ec-lineNumbers-fg)}.highlight .expressive-code .gutter .ln{color:var(--ec-lineNumbers-hlFg)}:root,:root:not([data-theme=&quot;light&quot;]) .expressive-code[data-theme=&quot;light&quot;]{--ec-brdRad:0.3rem;--ec-brdWd:1.5px;--ec-brdCol:var(--border);--ec-codeFontFml:var(--font-mono);--ec-codeFontSize:0.75rem;--ec-codeFontWg:400;--ec-codeLineHt:1.65;--ec-codePadBlk:1rem;--ec-codePadInl:1.35rem;--ec-codeBg:color-mix(in oklab, var(--muted) 25%, transparent);--ec-codeFg:#24292e;--ec-codeSelBg:#0366d625;--ec-gtrFg:#1b1f234d;--ec-gtrBrdCol:#1b1f2333;--ec-gtrBrdWd:1.5px;--ec-gtrHlFg:#24292e;--ec-uiFontFml:var(--font-sans);--ec-uiFontSize:0.9rem;--ec-uiFontWg:400;--ec-uiLineHt:1.65;--ec-uiPadBlk:0.25rem;--ec-uiPadInl:1rem;--ec-uiSelBg:#e2e5e9;--ec-uiSelFg:#2f363d;--ec-focusBrd:#2188ff;--ec-sbThumbCol:#959da533;--ec-sbThumbHoverCol:#959da544;--ec-tm-lineMarkerAccentMarg:0rem;--ec-tm-lineMarkerAccentWd:0.15rem;--ec-tm-lineMarkerLabelPadInl:0.2rem;--ec-tm-lineMarkerLabelCol:white;--ec-tm-lineDiffIndMargLeft:0.3rem;--ec-tm-inlMarkerBrdWd:1.5px;--ec-tm-inlMarkerBrdRad:0.2rem;--ec-tm-inlMarkerPad:0.15rem;--ec-tm-insDiffIndContent:&apos;+&apos;;--ec-tm-delDiffIndContent:&apos;-&apos;;--ec-tm-markBg:#9fb6ff80;--ec-tm-markBrdCol:#5570b3d0;--ec-tm-insBg:#94c68480;--ec-tm-insBrdCol:#4e7e41d0;--ec-tm-insDiffIndCol:#3a692fd0;--ec-tm-delBg:#fea09280;--ec-tm-delBrdCol:#ae594fd0;--ec-tm-delDiffIndCol:#97453dd0;--ec-frm-shdCol:#00000028;--ec-frm-frameBoxShdCssVal:none;--ec-frm-edActTabBg:color-mix(in oklab, var(--muted) 25%, transparent);--ec-frm-edActTabFg:var(--muted-foreground);--ec-frm-edActTabBrdCol:transparent;--ec-frm-edActTabIndHt:1.5px;--ec-frm-edActTabIndTopCol:transparent;--ec-frm-edActTabIndBtmCol:transparent;--ec-frm-edTabsMargInlStart:0;--ec-frm-edTabsMargBlkStart:0;--ec-frm-edTabBrdRad:0;--ec-frm-edTabBarBg:transparent;--ec-frm-edTabBarBrdCol:var(--border);--ec-frm-edTabBarBrdBtmCol:transparent;--ec-frm-edBg:color-mix(in oklab, var(--muted) 25%, transparent);--ec-frm-trmTtbFg:var(--muted-foreground);--ec-frm-trmTtbDotsFg:var(--muted-foreground);--ec-frm-trmTtbDotsOpa:0.15;--ec-frm-trmTtbBg:transparent;--ec-frm-trmTtbBrdBtmCol:transparent;--ec-frm-trmBg:color-mix(in oklab, var(--muted) 25%, transparent);--ec-frm-inlBtnFg:#24292e;--ec-frm-inlBtnBg:#24292e;--ec-frm-inlBtnBgIdleOpa:0;--ec-frm-inlBtnBgHoverOrFocusOpa:0.2;--ec-frm-inlBtnBgActOpa:0.3;--ec-frm-inlBtnBrd:#24292e;--ec-frm-inlBtnBrdOpa:0.4;--ec-frm-tooltipSuccessBg:#208638;--ec-frm-tooltipSuccessFg:white;--ec-cs-closedBrdWd:0;--ec-cs-closedPadBlk:4px;--ec-cs-closedMarg:0;--ec-cs-closedFontFml:inherit;--ec-cs-closedFontSize:inherit;--ec-cs-closedLineHt:inherit;--ec-cs-closedTextCol:#24292e;--ec-cs-closedBgCol:#d1d5da33;--ec-cs-closedBrdCol:#d1d5da80;--ec-cs-openBrdWd:1px;--ec-cs-openPad:0;--ec-cs-openMarg:0;--ec-cs-openBgCol:transparent;--ec-cs-openBgColCollapsible:#d1d5da1a;--ec-cs-openBrdCol:transparent;--ec-lineNumbers-fg:var(--muted-foreground);--ec-lineNumbers-hlFg:inherit}.expressive-code .ec-line :where(span[style^=&apos;--&apos;]:not([class])),:root:not([data-theme=&quot;light&quot;]) .expressive-code[data-theme=&quot;light&quot;] .ec-line :where(span[style^=&apos;--&apos;]:not([class])){color:var(--0, inherit);font-style:var(--0fs, inherit);font-weight:var(--0fw, inherit);text-decoration:var(--0td, inherit)}:root[data-theme=&quot;dark&quot;] .expressive-code:not([data-theme=&quot;light&quot;]),.expressive-code[data-theme=&quot;dark&quot;]{--ec-codeFg:#e1e4e8;--ec-codeSelBg:#3392ff44;--ec-gtrFg:#444d56;--ec-gtrBrdCol:#444d5633;--ec-gtrHlFg:#e1e4e8;--ec-uiSelBg:#39414a;--ec-uiSelFg:#e1e4e8;--ec-focusBrd:#005cc5;--ec-sbThumbCol:#6a737d33;--ec-sbThumbHoverCol:#6a737d44;--ec-tm-markBg:#264a8980;--ec-tm-insBg:#26561c80;--ec-tm-insDiffIndCol:#7eb070d0;--ec-tm-delBg:#81322b80;--ec-tm-delDiffIndCol:#e68a7ed0;--ec-frm-shdCol:#0000005b;--ec-frm-inlBtnFg:#e1e4e8;--ec-frm-inlBtnBg:#e1e4e8;--ec-frm-inlBtnBrd:#e1e4e8;--ec-frm-tooltipSuccessBg:#228739;--ec-cs-closedTextCol:#e1e4e8;--ec-cs-closedBgCol:#58606933;--ec-cs-closedBrdCol:#58606980;--ec-cs-openBgColCollapsible:#5860691a}:root[data-theme=&quot;dark&quot;] .expressive-code:not([data-theme=&quot;light&quot;]) .ec-line :where(span[style^=&apos;--&apos;]:not([class])),.expressive-code[data-theme=&quot;dark&quot;] .ec-line :where(span[style^=&apos;--&apos;]:not([class])){color:var(--1, inherit);font-style:var(--1fs, inherit);font-weight:var(--1fw, inherit);text-decoration:var(--1td, inherit)}&lt;/style&gt;&lt;script type=&quot;module&quot;&gt;try{(()=&gt;{function a(e){if(!e)return;let t=e.getAttribute(&quot;tabindex&quot;)!==null,n=e.scrollWidth&gt;e.clientWidth;n&amp;&amp;!t?e.setAttribute(&quot;tabindex&quot;,&quot;0&quot;):!n&amp;&amp;t&amp;&amp;e.removeAttribute(&quot;tabindex&quot;)}var u=window.requestIdleCallback||(e=&gt;setTimeout(e,1)),i=window.cancelIdleCallback||clearTimeout;function l(e){let t=new Set,n,r;return new ResizeObserver(c=&gt;{c.forEach(o=&gt;t.add(o.target)),n&amp;&amp;clearTimeout(n),r&amp;&amp;i(r),n=setTimeout(()=&gt;{r&amp;&amp;i(r),r=u(()=&gt;{t.forEach(o=&gt;e(o)),t.clear()})},250)})}function d(e,t){e.querySelectorAll?.(&quot;.expressive-code pre &gt; code&quot;).forEach(n=&gt;{let r=n.parentElement;r&amp;&amp;t.observe(r)})}var s=l(a);d(document,s);var b=new MutationObserver(e=&gt;e.forEach(t=&gt;t.addedNodes.forEach(n=&gt;{d(n,s)})));b.observe(document.body,{childList:!0,subtree:!0});document.addEventListener(&quot;astro:page-load&quot;,()=&gt;{d(document,s)});})();}catch(e){console.error(&quot;[EC] tabindex-js-module failed:&quot;,e)}&lt;/script&gt;&lt;script type=&quot;module&quot;&gt;try{(()=&gt;{function i(o){let e=document.createElement(&quot;pre&quot;);Object.assign(e.style,{opacity:&quot;0&quot;,pointerEvents:&quot;none&quot;,position:&quot;absolute&quot;,overflow:&quot;hidden&quot;,left:&quot;0&quot;,top:&quot;0&quot;,width:&quot;20px&quot;,height:&quot;20px&quot;,webkitUserSelect:&quot;auto&quot;,userSelect:&quot;all&quot;}),e.ariaHidden=&quot;true&quot;,e.textContent=o,document.body.appendChild(e);let a=document.createRange();a.selectNode(e);let n=getSelection();if(!n)return!1;n.removeAllRanges(),n.addRange(a);let r=!1;try{r=document.execCommand(&quot;copy&quot;)}finally{n.removeAllRanges(),document.body.removeChild(e)}return r}async function l(o){let e=o.currentTarget,a=e.dataset,n=!1,r=a.code.replace(/\u007f/g,`
`);try{await navigator.clipboard.writeText(r),n=!0}catch{n=i(r)}if(!n||e.parentNode?.querySelector(&quot;.feedback&quot;))return;let t=document.createElement(&quot;div&quot;);t.classList.add(&quot;feedback&quot;),t.append(a.copied),e.before(t),t.offsetWidth,requestAnimationFrame(()=&gt;t?.classList.add(&quot;show&quot;));let c=()=&gt;!t||t.classList.remove(&quot;show&quot;),d=()=&gt;{!t||parseFloat(getComputedStyle(t).opacity)&gt;0||(t.remove(),t=void 0)};setTimeout(c,1500),setTimeout(d,2500),e.addEventListener(&quot;blur&quot;,c),t.addEventListener(&quot;transitioncancel&quot;,d),t.addEventListener(&quot;transitionend&quot;,d)}function s(o){o.querySelectorAll?.(&quot;.expressive-code .copy button&quot;).forEach(e=&gt;e.addEventListener(&quot;click&quot;,l))}s(document);var u=new MutationObserver(o=&gt;o.forEach(e=&gt;e.addedNodes.forEach(a=&gt;{s(a)})));u.observe(document.body,{childList:!0,subtree:!0});document.addEventListener(&quot;astro:page-load&quot;,()=&gt;{s(document)});})();}catch(e){console.error(&quot;[EC] copy-js-module failed:&quot;,e)}&lt;/script&gt;&lt;figure class=&quot;frame&quot; style=&quot;--lnWidth:3ch&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;yml&quot; class=&quot;wrap&quot; style=&quot;--ecMaxLine:150ch&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#1E7734;--1:#85E89D&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#24292E;--1:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;Send New EPUBs to Email&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#005CC5;--1:#79B8FF&quot;&gt;on&lt;/span&gt;&lt;span style=&quot;--0:#24292E;--1:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:2ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#1E7734;--1:#85E89D&quot;&gt;schedule&lt;/span&gt;&lt;span style=&quot;--0:#24292E;--1:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#24292E;--1:#E1E4E8&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#24292E;--1:#E1E4E8&quot;&gt;- &lt;/span&gt;&lt;span style=&quot;--0:#1E7734;--1:#85E89D&quot;&gt;cron&lt;/span&gt;&lt;span style=&quot;--0:#24292E;--1:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;&apos;0 22 * * 5&apos;&lt;/span&gt;&lt;span style=&quot;--0:#24292E;--1:#E1E4E8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;--0:#616972;--1:#99A0A6&quot;&gt;# 每周六 06:00 北京时间&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:2ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#1E7734;--1:#85E89D&quot;&gt;workflow_dispatch&lt;/span&gt;&lt;span style=&quot;--0:#24292E;--1:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#1E7734;--1:#85E89D&quot;&gt;permissions&lt;/span&gt;&lt;span style=&quot;--0:#24292E;--1:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:2ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#1E7734;--1:#85E89D&quot;&gt;contents&lt;/span&gt;&lt;span style=&quot;--0:#24292E;--1:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;write&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#1E7734;--1:#85E89D&quot;&gt;jobs&lt;/span&gt;&lt;span style=&quot;--0:#24292E;--1:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:2ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;--0:#1E7734;--1:#85E89D&quot;&gt;send-epub&lt;/span&gt;&lt;span style=&quot;--0:#24292E;--1:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#1E7734;--1:#85E89D&quot;&gt;runs-on&lt;/span&gt;&lt;span style=&quot;--0:#24292E;--1:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;ubuntu-latest&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;--0:#1E7734;--1:#85E89D&quot;&gt;steps&lt;/span&gt;&lt;span style=&quot;--0:#24292E;--1:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:6ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#24292E;--1:#E1E4E8&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#24292E;--1:#E1E4E8&quot;&gt;- &lt;/span&gt;&lt;span style=&quot;--0:#1E7734;--1:#85E89D&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#24292E;--1:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;Checkout magz repo&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#1E7734;--1:#85E89D&quot;&gt;uses&lt;/span&gt;&lt;span style=&quot;--0:#24292E;--1:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;actions/checkout@v4&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#1E7734;--1:#85E89D&quot;&gt;with&lt;/span&gt;&lt;span style=&quot;--0:#24292E;--1:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:10ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;          &lt;/span&gt;&lt;span style=&quot;--0:#1E7734;--1:#85E89D&quot;&gt;token&lt;/span&gt;&lt;span style=&quot;--0:#24292E;--1:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;${{ secrets.GITHUB_TOKEN }}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:6ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#24292E;--1:#E1E4E8&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#24292E;--1:#E1E4E8&quot;&gt;- &lt;/span&gt;&lt;span style=&quot;--0:#1E7734;--1:#85E89D&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#24292E;--1:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;Find and download new epub files&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#1E7734;--1:#85E89D&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;--0:#24292E;--1:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;find_epubs&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#1E7734;--1:#85E89D&quot;&gt;run&lt;/span&gt;&lt;span style=&quot;--0:#24292E;--1:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--0:#BF3441;--1:#F97583&quot;&gt;|&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:10ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;# 读取上次处理的 commit SHA&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:10ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;LAST_SHA=&quot;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:10ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;if [ -f .last_commit ]; then&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:12ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;LAST_SHA=$(cat .last_commit)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:10ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;fi&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:10ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;# 获取源仓库最新的 commit SHA&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:10ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;LATEST_SHA=$(curl -s \&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:12ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;&quot;https://api.github.com/repos/hehonghui/awesome-english-ebooks/commits?per_page=1&quot; \&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:12ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;| jq -r &apos;.[0].sha&apos;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:10ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;# 没有新 commit，直接结束&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:10ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;if [ &quot;$LAST_SHA&quot; = &quot;$LATEST_SHA&quot; ]; then&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:12ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;echo &quot;没有新的 commit，无需处理&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:12ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;38&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;echo &quot;has_files=false&quot; &gt;&gt; $GITHUB_OUTPUT&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:12ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;39&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;exit 0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:10ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;40&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;fi&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;41&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:10ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;42&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;# 获取新增的 commits&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:10ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;43&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;if [ -z &quot;$LAST_SHA&quot; ]; then&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:12ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;44&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;# 首次运行：取最近 7 天&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:12ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;45&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;SINCE=$(date -u -d &apos;7 days ago&apos; +%Y-%m-%dT%H:%M:%SZ 2&gt;/dev/null || \&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:20ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;46&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;                    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;date -u -v-7d +%Y-%m-%dT%H:%M:%SZ)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:12ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;47&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;COMMITS=$(curl -s \&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:14ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;48&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;&quot;https://api.github.com/repos/hehonghui/awesome-english-ebooks/commits?since=${SINCE}&amp;#x26;per_page=100&quot; \&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:14ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;49&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;| jq -r &apos;.[].sha&apos;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:10ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;50&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;else&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:12ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;51&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;# 后续运行：取 LAST_SHA 之后的所有 commits&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:12ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;52&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;COMMITS=$(curl -s \&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:14ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;53&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;&quot;https://api.github.com/repos/hehonghui/awesome-english-ebooks/compare/${LAST_SHA}...${LATEST_SHA}&quot; \&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:14ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;54&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;| jq -r &apos;.commits[].sha&apos;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:10ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;55&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;fi&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;56&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:10ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;57&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;# 保存最新 SHA，供后续步骤提交&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:10ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;58&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;echo &quot;$LATEST_SHA&quot; &gt; .last_commit&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;59&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:10ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;60&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;mkdir -p downloads&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:10ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;61&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;HAS_ANY=false&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;62&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:10ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;63&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;for SHA in $COMMITS; do&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:12ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;64&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;FILES_JSON=$(curl -s \&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:14ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;65&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;&quot;https://api.github.com/repos/hehonghui/awesome-english-ebooks/commits/${SHA}&quot; \&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:14ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;66&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;| jq -r &apos;.files[] | select(.status == &quot;added&quot;) | select(.filename | ascii_downcase | endswith(&quot;.epub&quot;)) | [.filename, .raw_url] | @tsv&apos;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;67&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:12ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;68&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;while IFS=$&apos;\t&apos; read -r FILENAME RAW_URL; do&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:14ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;69&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;[ -z &quot;$FILENAME&quot; ] &amp;#x26;&amp;#x26; continue&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:14ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;70&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;DIR=$(echo &quot;$FILENAME&quot; | cut -d&apos;/&apos; -f1)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:14ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;71&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;BASENAME=$(basename &quot;$FILENAME&quot;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:14ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;72&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;SAVE_PATH=&quot;downloads/${DIR}___${BASENAME}&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;73&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:14ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;74&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;[ -f &quot;$SAVE_PATH&quot; ] &amp;#x26;&amp;#x26; continue&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;75&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:14ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;76&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;echo &quot;下载: $BASENAME&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:14ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;77&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;curl -sL &quot;$RAW_URL&quot; -o &quot;$SAVE_PATH&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:14ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;78&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;HAS_ANY=true&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:12ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;79&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;done &amp;#x3C;&amp;#x3C;&amp;#x3C; &quot;$FILES_JSON&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:10ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;80&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;done&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;81&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:10ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;82&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;if [ &quot;$HAS_ANY&quot; = true ]; then&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:12ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;83&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;echo &quot;has_files=true&quot; &gt;&gt; $GITHUB_OUTPUT&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:10ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;84&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;else&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:12ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;85&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;echo &quot;has_files=false&quot; &gt;&gt; $GITHUB_OUTPUT&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:10ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;86&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;fi&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;87&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:6ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;88&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#24292E;--1:#E1E4E8&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#24292E;--1:#E1E4E8&quot;&gt;- &lt;/span&gt;&lt;span style=&quot;--0:#1E7734;--1:#85E89D&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#24292E;--1:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;Send one email per magazine&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;89&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#1E7734;--1:#85E89D&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--0:#24292E;--1:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;steps.find_epubs.outputs.has_files == &apos;true&apos;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;90&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#1E7734;--1:#85E89D&quot;&gt;env&lt;/span&gt;&lt;span style=&quot;--0:#24292E;--1:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:10ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;91&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;          &lt;/span&gt;&lt;span style=&quot;--0:#1E7734;--1:#85E89D&quot;&gt;QQ_EMAIL&lt;/span&gt;&lt;span style=&quot;--0:#24292E;--1:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;${{ secrets.QQ_EMAIL }}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:10ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;92&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;          &lt;/span&gt;&lt;span style=&quot;--0:#1E7734;--1:#85E89D&quot;&gt;QQ_AUTH_CODE&lt;/span&gt;&lt;span style=&quot;--0:#24292E;--1:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;${{ secrets.QQ_AUTH_CODE }}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;93&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#1E7734;--1:#85E89D&quot;&gt;run&lt;/span&gt;&lt;span style=&quot;--0:#24292E;--1:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--0:#BF3441;--1:#F97583&quot;&gt;|&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:10ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;94&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;python3 &amp;#x3C;&amp;#x3C; &apos;EOF&apos;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:10ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;95&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;import smtplib&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:10ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;96&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;import os&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:10ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;97&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;import glob&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:10ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;98&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;import zipfile&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:10ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;99&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;from email.mime.multipart import MIMEMultipart&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:10ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;100&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;from email.mime.text import MIMEText&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:10ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;101&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;from email.mime.base import MIMEBase&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:10ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;102&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;from email import encoders&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:10ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;103&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;from collections import defaultdict&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;104&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:10ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;105&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;MAG_NAMES = {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:14ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;106&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;&quot;01_economist&quot;: &quot;The Economist&quot;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:14ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;107&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;&quot;02_new_yorker&quot;: &quot;The New Yorker&quot;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:14ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;108&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;&quot;04_atlantic&quot;: &quot;The Atlantic&quot;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:14ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;109&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;&quot;05_wired&quot;: &quot;Wired&quot;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:10ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;110&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;111&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:10ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;112&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;SIZE_LIMIT = 50 * 1024 * 1024  # 50MB&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;113&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:10ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;114&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;email = os.environ[&quot;QQ_EMAIL&quot;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:10ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;115&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;password = os.environ[&quot;QQ_AUTH_CODE&quot;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;116&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:10ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;117&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;magazines = defaultdict(list)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:10ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;118&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;for filepath in glob.glob(&quot;downloads/*___*.epub&quot;):&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:14ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;119&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;filename = os.path.basename(filepath)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:14ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;120&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;dir_key, basename = filename.split(&quot;___&quot;, 1)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:14ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;121&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;magazines[dir_key].append((basename, filepath))&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;122&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:10ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;123&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;for dir_key, files in magazines.items():&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:14ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;124&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;mag_name = MAG_NAMES.get(dir_key, dir_key)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;125&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:14ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;126&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;msg = MIMEMultipart()&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:14ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;127&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;msg[&quot;Subject&quot;] = f&quot;本周新增 EPUB - {mag_name}&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:14ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;128&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;msg[&quot;From&quot;] = email&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:14ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;129&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;msg[&quot;To&quot;] = email&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;130&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:14ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;131&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;body_lines = [f&quot;你好，\n\n本周《{mag_name}》新增了以下 EPUB 文件：\n&quot;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:14ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;132&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;oversized = []&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;133&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:14ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;134&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;for basename, filepath in files:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:18ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;135&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;                  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;size = os.path.getsize(filepath)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:18ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;136&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;                  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;if size &amp;#x3C;= SIZE_LIMIT:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:22ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;137&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;                      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;zip_name = basename.replace(&quot;.epub&quot;, &quot;.zip&quot;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:22ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;138&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;                      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;zip_path = filepath.replace(&quot;.epub&quot;, &quot;.zip&quot;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:22ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;139&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;                      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;with zipfile.ZipFile(zip_path, &quot;w&quot;, zipfile.ZIP_DEFLATED) as zf:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:26ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;140&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;                          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;zf.write(filepath, basename)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:22ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;141&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;                      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;with open(zip_path, &quot;rb&quot;) as f:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:26ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;142&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;                          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;part = MIMEBase(&quot;application&quot;, &quot;octet-stream&quot;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:26ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;143&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;                          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;part.set_payload(f.read())&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:22ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;144&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;                      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;encoders.encode_base64(part)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:22ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;145&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;                      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;part.add_header(&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:26ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;146&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;                          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;&quot;Content-Disposition&quot;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:26ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;147&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;                          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;f&apos;attachment; filename=&quot;{zip_name}&quot;&apos;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:22ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;148&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;                      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:22ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;149&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;                      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;msg.attach(part)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:22ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;150&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;                      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;body_lines.append(f&quot;- {basename}（附件，zip 格式，解压后即可阅读）&quot;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:18ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;151&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;                  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;else:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:22ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;152&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;                      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;size_mb = size / 1024 / 1024&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:22ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;153&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;                      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;url = f&quot;https://github.com/hehonghui/awesome-english-ebooks/raw/master/{dir_key}/{basename}&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:22ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;154&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;                      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;oversized.append(f&quot;- {basename}（{size_mb:.1f}MB，超过 50MB）\n  下载链接：{url}&quot;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;155&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:14ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;156&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;if oversized:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:18ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;157&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;                  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;body_lines.append(&quot;\n以下文件超过 50MB，以链接形式发送：\n&quot;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:18ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;158&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;                  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;body_lines.extend(oversized)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;159&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:14ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;160&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;body_lines.append(&quot;\n仓库地址：https://github.com/hehonghui/awesome-english-ebooks&quot;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:14ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;161&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;msg.attach(MIMEText(&quot;\n&quot;.join(body_lines), &quot;plain&quot;, &quot;utf-8&quot;))&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;162&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:14ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;163&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;with smtplib.SMTP_SSL(&quot;smtp.qq.com&quot;, 465) as server:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:18ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;164&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;                  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;server.login(email, password)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:18ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;165&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;                  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;server.send_message(msg)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:18ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;166&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;                  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;print(f&quot;已发送：{mag_name}&quot;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:10ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;167&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;EOF&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;168&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:6ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;169&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#24292E;--1:#E1E4E8&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#24292E;--1:#E1E4E8&quot;&gt;- &lt;/span&gt;&lt;span style=&quot;--0:#1E7734;--1:#85E89D&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#24292E;--1:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;Save last processed commit SHA&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;170&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#1E7734;--1:#85E89D&quot;&gt;run&lt;/span&gt;&lt;span style=&quot;--0:#24292E;--1:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--0:#BF3441;--1:#F97583&quot;&gt;|&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:10ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;171&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;git config user.email &quot;41898282+github-actions[bot]@users.noreply.github.com&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:10ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;172&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;git config user.name &quot;github-actions[bot]&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:10ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;173&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;git add .last_commit&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:10ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;174&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;git diff --staged --quiet || git commit -m &quot;chore: update last commit SHA [skip ci]&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:10ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;175&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;git push&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;176&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:6ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;177&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#24292E;--1:#E1E4E8&quot;&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#24292E;--1:#E1E4E8&quot;&gt;- &lt;/span&gt;&lt;span style=&quot;--0:#1E7734;--1:#85E89D&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;--0:#24292E;--1:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;No new epub this week&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;178&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#1E7734;--1:#85E89D&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;--0:#24292E;--1:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;steps.find_epubs.outputs.has_files == &apos;false&apos;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:8ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;179&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;--0:#1E7734;--1:#85E89D&quot;&gt;run&lt;/span&gt;&lt;span style=&quot;--0:#24292E;--1:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--0:#032F62;--1:#9ECBFF&quot;&gt;echo &quot;没有新增 epub 文件，无需发送邮件&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;name: Send New EPUBs to Emailon:  schedule:    - cron: &amp;#x27;0 22 * * 5&amp;#x27; # 每周六 06:00 北京时间  workflow_dispatch:permissions:  contents: writejobs:  send-epub:    runs-on: ubuntu-latest    steps:      - name: Checkout magz repo        uses: actions/checkout@v4        with:          token: ${{ secrets.GITHUB_TOKEN }}      - name: Find and download new epub files        id: find_epubs        run: |          # 读取上次处理的 commit SHA          LAST_SHA=&amp;#x22;&amp;#x22;          if [ -f .last_commit ]; then            LAST_SHA=$(cat .last_commit)          fi          # 获取源仓库最新的 commit SHA          LATEST_SHA=$(curl -s \            &amp;#x22;https://api.github.com/repos/hehonghui/awesome-english-ebooks/commits?per_page=1&amp;#x22; \            | jq -r &amp;#x27;.[0].sha&amp;#x27;)          # 没有新 commit，直接结束          if [ &amp;#x22;$LAST_SHA&amp;#x22; = &amp;#x22;$LATEST_SHA&amp;#x22; ]; then            echo &amp;#x22;没有新的 commit，无需处理&amp;#x22;            echo &amp;#x22;has_files=false&amp;#x22; &gt;&gt; $GITHUB_OUTPUT            exit 0          fi          # 获取新增的 commits          if [ -z &amp;#x22;$LAST_SHA&amp;#x22; ]; then            # 首次运行：取最近 7 天            SINCE=$(date -u -d &amp;#x27;7 days ago&amp;#x27; +%Y-%m-%dT%H:%M:%SZ 2&gt;/dev/null || \                    date -u -v-7d +%Y-%m-%dT%H:%M:%SZ)            COMMITS=$(curl -s \              &amp;#x22;https://api.github.com/repos/hehonghui/awesome-english-ebooks/commits?since=${SINCE}&amp;#x26;per_page=100&amp;#x22; \              | jq -r &amp;#x27;.[].sha&amp;#x27;)          else            # 后续运行：取 LAST_SHA 之后的所有 commits            COMMITS=$(curl -s \              &amp;#x22;https://api.github.com/repos/hehonghui/awesome-english-ebooks/compare/${LAST_SHA}...${LATEST_SHA}&amp;#x22; \              | jq -r &amp;#x27;.commits[].sha&amp;#x27;)          fi          # 保存最新 SHA，供后续步骤提交          echo &amp;#x22;$LATEST_SHA&amp;#x22; &gt; .last_commit          mkdir -p downloads          HAS_ANY=false          for SHA in $COMMITS; do            FILES_JSON=$(curl -s \              &amp;#x22;https://api.github.com/repos/hehonghui/awesome-english-ebooks/commits/${SHA}&amp;#x22; \              | jq -r &amp;#x27;.files[] | select(.status == &amp;#x22;added&amp;#x22;) | select(.filename | ascii_downcase | endswith(&amp;#x22;.epub&amp;#x22;)) | [.filename, .raw_url] | @tsv&amp;#x27;)            while IFS=$&amp;#x27;\t&amp;#x27; read -r FILENAME RAW_URL; do              [ -z &amp;#x22;$FILENAME&amp;#x22; ] &amp;#x26;&amp;#x26; continue              DIR=$(echo &amp;#x22;$FILENAME&amp;#x22; | cut -d&amp;#x27;/&amp;#x27; -f1)              BASENAME=$(basename &amp;#x22;$FILENAME&amp;#x22;)              SAVE_PATH=&amp;#x22;downloads/${DIR}___${BASENAME}&amp;#x22;              [ -f &amp;#x22;$SAVE_PATH&amp;#x22; ] &amp;#x26;&amp;#x26; continue              echo &amp;#x22;下载: $BASENAME&amp;#x22;              curl -sL &amp;#x22;$RAW_URL&amp;#x22; -o &amp;#x22;$SAVE_PATH&amp;#x22;              HAS_ANY=true            done &lt;&lt;&lt; &amp;#x22;$FILES_JSON&amp;#x22;          done          if [ &amp;#x22;$HAS_ANY&amp;#x22; = true ]; then            echo &amp;#x22;has_files=true&amp;#x22; &gt;&gt; $GITHUB_OUTPUT          else            echo &amp;#x22;has_files=false&amp;#x22; &gt;&gt; $GITHUB_OUTPUT          fi      - name: Send one email per magazine        if: steps.find_epubs.outputs.has_files == &amp;#x27;true&amp;#x27;        env:          QQ_EMAIL: ${{ secrets.QQ_EMAIL }}          QQ_AUTH_CODE: ${{ secrets.QQ_AUTH_CODE }}        run: |          python3 &lt;&lt; &amp;#x27;EOF&amp;#x27;          import smtplib          import os          import glob          import zipfile          from email.mime.multipart import MIMEMultipart          from email.mime.text import MIMEText          from email.mime.base import MIMEBase          from email import encoders          from collections import defaultdict          MAG_NAMES = {              &amp;#x22;01_economist&amp;#x22;: &amp;#x22;The Economist&amp;#x22;,              &amp;#x22;02_new_yorker&amp;#x22;: &amp;#x22;The New Yorker&amp;#x22;,              &amp;#x22;04_atlantic&amp;#x22;: &amp;#x22;The Atlantic&amp;#x22;,              &amp;#x22;05_wired&amp;#x22;: &amp;#x22;Wired&amp;#x22;,          }          SIZE_LIMIT = 50 * 1024 * 1024  # 50MB          email = os.environ[&amp;#x22;QQ_EMAIL&amp;#x22;]          password = os.environ[&amp;#x22;QQ_AUTH_CODE&amp;#x22;]          magazines = defaultdict(list)          for filepath in glob.glob(&amp;#x22;downloads/*___*.epub&amp;#x22;):              filename = os.path.basename(filepath)              dir_key, basename = filename.split(&amp;#x22;___&amp;#x22;, 1)              magazines[dir_key].append((basename, filepath))          for dir_key, files in magazines.items():              mag_name = MAG_NAMES.get(dir_key, dir_key)              msg = MIMEMultipart()              msg[&amp;#x22;Subject&amp;#x22;] = f&amp;#x22;本周新增 EPUB - {mag_name}&amp;#x22;              msg[&amp;#x22;From&amp;#x22;] = email              msg[&amp;#x22;To&amp;#x22;] = email              body_lines = [f&amp;#x22;你好，\n\n本周《{mag_name}》新增了以下 EPUB 文件：\n&amp;#x22;]              oversized = []              for basename, filepath in files:                  size = os.path.getsize(filepath)                  if size &lt;= SIZE_LIMIT:                      zip_name = basename.replace(&amp;#x22;.epub&amp;#x22;, &amp;#x22;.zip&amp;#x22;)                      zip_path = filepath.replace(&amp;#x22;.epub&amp;#x22;, &amp;#x22;.zip&amp;#x22;)                      with zipfile.ZipFile(zip_path, &amp;#x22;w&amp;#x22;, zipfile.ZIP_DEFLATED) as zf:                          zf.write(filepath, basename)                      with open(zip_path, &amp;#x22;rb&amp;#x22;) as f:                          part = MIMEBase(&amp;#x22;application&amp;#x22;, &amp;#x22;octet-stream&amp;#x22;)                          part.set_payload(f.read())                      encoders.encode_base64(part)                      part.add_header(                          &amp;#x22;Content-Disposition&amp;#x22;,                          f&amp;#x27;attachment; filename=&amp;#x22;{zip_name}&amp;#x22;&amp;#x27;                      )                      msg.attach(part)                      body_lines.append(f&amp;#x22;- {basename}（附件，zip 格式，解压后即可阅读）&amp;#x22;)                  else:                      size_mb = size / 1024 / 1024                      url = f&amp;#x22;https://github.com/hehonghui/awesome-english-ebooks/raw/master/{dir_key}/{basename}&amp;#x22;                      oversized.append(f&amp;#x22;- {basename}（{size_mb:.1f}MB，超过 50MB）\n  下载链接：{url}&amp;#x22;)              if oversized:                  body_lines.append(&amp;#x22;\n以下文件超过 50MB，以链接形式发送：\n&amp;#x22;)                  body_lines.extend(oversized)              body_lines.append(&amp;#x22;\n仓库地址：https://github.com/hehonghui/awesome-english-ebooks&amp;#x22;)              msg.attach(MIMEText(&amp;#x22;\n&amp;#x22;.join(body_lines), &amp;#x22;plain&amp;#x22;, &amp;#x22;utf-8&amp;#x22;))              with smtplib.SMTP_SSL(&amp;#x22;smtp.qq.com&amp;#x22;, 465) as server:                  server.login(email, password)                  server.send_message(msg)                  print(f&amp;#x22;已发送：{mag_name}&amp;#x22;)          EOF      - name: Save last processed commit SHA        run: |          git config user.email &amp;#x22;41898282+github-actions[bot]@users.noreply.github.com&amp;#x22;          git config user.name &amp;#x22;github-actions[bot]&amp;#x22;          git add .last_commit          git diff --staged --quiet || git commit -m &amp;#x22;chore: update last commit SHA [skip ci]&amp;#x22;          git push      - name: No new epub this week        if: steps.find_epubs.outputs.has_files == &amp;#x27;false&amp;#x27;        run: echo &amp;#x22;没有新增 epub 文件，无需发送邮件&amp;#x22;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;h2 id=&quot;验证&quot;&gt;验证&lt;/h2&gt;
&lt;p&gt;在该仓库的 Actions 页的左侧点击 Send New EPUBs to Email，然后点击右侧的 Run workflow。&lt;/p&gt;
&lt;p&gt;测试运行正常的话你会收到四封邮件，内容分别为原杂志仓库各杂志的最新一期提醒，杂志内容打包成 zip 文件&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;以附件形式附在其中。&lt;/p&gt;
&lt;p&gt;后续每周六早晨六点会自动检查新文件并发送。&lt;/p&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;脚注&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;QQ 邮箱会对附件内容做审查，发送 Epub 文件会被拦截，打包成 zip 文件可行。 &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded></item><item><title>📚 如何写出一篇好文章</title><link>https://blog.mdreame.space/blog/2026-05-07-%E5%A6%82%E4%BD%95%E5%86%99%E5%87%BA%E4%B8%80%E7%AF%87%E5%A5%BD%E6%96%87%E7%AB%A0/</link><guid isPermaLink="true">https://blog.mdreame.space/blog/2026-05-07-%E5%A6%82%E4%BD%95%E5%86%99%E5%87%BA%E4%B8%80%E7%AF%87%E5%A5%BD%E6%96%87%E7%AB%A0/</guid><description>热情地书写，冷静地删减；具体的画面，准确的表达。</description><pubDate>Thu, 07 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;div class=&quot;book-card not-prose&quot;&gt;&lt;img src=&quot;https://img.mdreame.space/30977a5cee7f44d3cd0bc202e6f2460d-1778036467993.webp&quot; alt=&quot;&quot; class=&quot;book-card-cover&quot; loading=&quot;lazy&quot;&gt;&lt;div class=&quot;book-card-body&quot;&gt;&lt;div class=&quot;book-card-title&quot;&gt;&lt;a href=&quot;/blog/2026-05-07-如何写出一篇好文章&quot; class=&quot;book-card-title-link&quot;&gt;如何写出一篇好文章&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;14&quot; height=&quot;14&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 0 3-3h7z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;book-card-author&quot;&gt;[日] 山口拓朗 / 中国青年出版社 / 2019&lt;/div&gt;&lt;span class=&quot;book-card-category&quot;&gt;工具&lt;/span&gt;&lt;span class=&quot;book-card-desc&quot;&gt;与一般日本人写的技能书不一样，不怎么啰嗦。不会千叮咛万嘱咐的，完事其中还掺着一点得意。对于写作心态和技巧上的建议是中肯的。学会欣赏他人才能诚实地面对自己，从而能自信地表达。可以一读。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;我读这本书的目的即学习写作，提高书面表达能力。这本书成了我整个计划的起点。虽然写作不需要什么契机，写就行了。但我确实在这本书中得到几点启发，总结如下。&lt;/p&gt;
&lt;h2 id=&quot;写文章要有立场&quot;&gt;写文章要有立场&lt;/h2&gt;
&lt;p&gt;写文章最关键的是要摆明立场，给出判断和结论，最终影响现实中的决策。&lt;/p&gt;
&lt;p&gt;意图含糊不清则说明思维是混沌的。为什么无法清楚地表明对一件事情的看法呢？因为没有&lt;strong&gt;一套清晰的判断标准&lt;/strong&gt;。这样的标准不是一刀切，但最关键是要有不可逾越的底线。&lt;/p&gt;
&lt;p&gt;比如什么样的书不值得读？如今我可能会列以下的判断条件：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;目录结构不清晰：说明作者理不清思路或者不具备良好表达的能力。&lt;/li&gt;
&lt;li&gt;内容是岁月静好类、网文：没有学习和借鉴的意义&lt;/li&gt;
&lt;li&gt;热点畅销书：跟风和成功学质量不高&lt;/li&gt;
&lt;li&gt;某领域的专业书：现阶段或不远的将来能否用得上&lt;/li&gt;
&lt;li&gt;特殊历史背景下或极小众群体的书：无法提供正向的影响&lt;/li&gt;
&lt;li&gt;内容过时（06 年之前）：内容不具备参考价值或者已有重版&lt;/li&gt;
&lt;li&gt;推荐度不到60%：这是底线。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以当我在犹豫要不要读一本书的时候，最直接的方式是去查它的目录和评分。好评率不超过 60%，那立马放下这本书。&lt;/p&gt;
&lt;p&gt;当建立起一条条的标准并且持续地执行和验证，我会变得愈加果断、自信，会想到要为自己的观点负责任。这种积极的反馈会反哺到写作，我会更有动力，更乐意主动写作。&lt;/p&gt;
&lt;h2 id=&quot;发现躲在文字背后的我&quot;&gt;发现躲在文字背后的“我”&lt;/h2&gt;
&lt;p&gt;只要写作，其文字背后都有一个预设的身份，反映了对自己当下的认识。我们可以通过对这个自我形象建立预期，以此来改变自己在写作时的心态，从而建立微妙的反馈机制。&lt;/p&gt;
&lt;p&gt;作者提出了“未来简历”的方法——写出五年后理想中的自己。这是一种自我暗示的手段，同时也为自己提供了一个努力的图景。我觉得可以尝试。&lt;/p&gt;
&lt;h2 id=&quot;认可他人有助于诚实地表达自我&quot;&gt;认可他人有助于诚实地表达自我&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;不敢诚实表达的人，通常有“容易产生恐惧心理”的倾向，他们害怕因为诚实表达而被别人否定、轻视、厌恶。
…
当你对所有人的所有价值观都能表示尊重时，那么，对于表达自己的价值观的“恐惧”就会逐渐消除，也就是说，越做这项训练，就会变得越自信。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;过度在乎别人的看法是一种偏见。这是不了解他人，对自己也缺乏了解的表现。人与花样百般红，见识到人与人的差异后才能懂得换位思考，才能开始理解自己。&lt;/p&gt;
&lt;iframe allow=&quot;autoplay *; encrypted-media *;&quot; frameborder=&quot;0&quot; height=&quot;150&quot; style=&quot;width:100%;max-width:660px;overflow:hidden;background:transparent;&quot; sandbox=&quot;allow-forms allow-popups allow-same-origin allow-scripts allow-storage-access-by-user-activation allow-top-navigation-by-user-activation&quot; src=&quot;https://embed.music.apple.com/cn/album/%E6%88%91%E5%92%8C%E6%88%91%E8%87%AA%E5%B7%B1%E7%9A%84%E5%BD%B1%E5%AD%90/202968653?i=202968798&quot;&gt;&lt;/iframe&gt;
&lt;p&gt;我想起蔡琴的《我和我自己的影子》，其中一句歌词是这样唱的：&lt;q class=&quot;quote-inline&quot;&gt;这个世界本来就这样，你可能还没有学会怎样去欣赏&lt;/q&gt;。理解他人的处境，然后了解他人的想法，这样参照可以平实地面对自己想法，自然能心无挂碍地写作。&lt;/p&gt;
&lt;h2 id=&quot;选择写作主题&quot;&gt;选择写作主题&lt;/h2&gt;
&lt;p&gt;对于写作的主题，我觉得任何事物都可写，关键是要能察觉不同对象的共同点。这是需要练习的，比如作者提到的出租车与晚霞有什么相通的地方？我想不出，问了 DeepSeek，回答如下：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;出租车与晚霞，两者似乎分属城市与天空，但细品之下，可以提炼出不少充满诗意或哲理的共通点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;暖色调的光影：传统出租车（尤其是纽约黄色出租车、不少城市的橙色或红色出租车）与晚霞的主色调都是暖色系——金黄、橙红、橘粉。两者都像流动的光，一个照亮街道，一个染遍天际。&lt;/li&gt;
&lt;li&gt;“载人向终点”与“送日入暮”：出租车把疲惫的乘客送回家，晚霞则把白昼送进夜晚。两者都扮演着“摆渡者”的角色——出租车摆渡行人，晚霞摆渡时间。在黄昏时分，出租车行驶在霞光中，仿佛变成了一辆驶向黑夜的“落日专车”。&lt;/li&gt;
&lt;li&gt;短暂相遇，即刻消散：招手即停的出租车与乘客共处一段旅程后便分道扬镳；晚霞也只在日落前后存在十几到几十分钟，随即被暮色吞没。两者都是易逝的、无法挽留的“此刻”。&lt;/li&gt;
&lt;li&gt;城市上空与街道地面的“倒影”：晚霞是天空的画卷，而出租车车顶的顶灯、反光镜或玻璃车身可以倒映晚霞——此时出租车成了地面的“晚霞容器”。反过来，出租车橙黄的车身与晚霞颜色一致，仿佛是天上的颜色滴落到了街道上。&lt;/li&gt;
&lt;li&gt;轨迹的随机与流动：晚霞的形状没有定式，随云、风、光的角度千变万化；出租车的路线也随乘客的目的地而随机转弯、停靠。两者都不走重复的线条，每一趟行程（每一片晚霞）都是独一无二的。&lt;/li&gt;
&lt;li&gt;载情感与故事：出租车里常发生离别、重逢、深夜倾诉、归家的安心；晚霞则常被赋予浪漫、怀旧、惆怅、希望等情感。两者都是城市中“情绪的背景”——在晚霞映照下坐进出租车，本身就是一种电影感的画面。&lt;/li&gt;
&lt;li&gt;“渐隐的灯”：出租车亮着顶灯在黄昏中穿行，那盏灯是白色的或黄色的；晚霞则像天空的“灯”，随着天黑逐渐熄灭。一个是地面移动的灯，一个是天空弥散的灯。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;点睛一句：晚霞是天空的“出租车”——它载着最后一抹日光，驶向黑夜的停车场&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;我要将这么一大段话完整不动地放进来，原因是我深愧不如，于是我沉默。&lt;/p&gt;
&lt;h2 id=&quot;练习写作技巧&quot;&gt;练习写作技巧&lt;/h2&gt;
&lt;p&gt;作者还提到的一些写作技巧，主要分为两点，如何准确和如何具体。&lt;/p&gt;
&lt;h3 id=&quot;如何准确&quot;&gt;如何准确&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;所写是什么体裁？写给什么人看？&lt;/li&gt;
&lt;li&gt;建立个人语料库：如何描写各类事物？同一事物有怎样不同的描写？措辞要准确，可以用近义词扩充表达。主题式阅读也是积累语料的快速方式。&lt;/li&gt;
&lt;li&gt;不使用模棱两可的词语：可能、应该…&lt;/li&gt;
&lt;li&gt;找参照对象、限定范围。&lt;/li&gt;
&lt;li&gt;区分事实与判断。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;如何具体&quot;&gt;如何具体&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;最关键的比喻。引用成语、歇后语都能使描述生动，强调观点。&lt;/li&gt;
&lt;li&gt;5W2H：Who？When？Where？What？Why？谁？什么时间？在哪里？做了什么事？为什么做？How？How Good？分别强调方式和效果。&lt;/li&gt;
&lt;li&gt;多个维度，不同视角。&lt;/li&gt;
&lt;li&gt;追问自己为什么？&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;其他帮助写作的-tips&quot;&gt;其他帮助写作的 tips&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;保持专注：养成习惯，营造紧迫感。&lt;/li&gt;
&lt;li&gt;广告文案练习&lt;/li&gt;
&lt;li&gt;联系自己的体验&lt;/li&gt;
&lt;li&gt;故事化的表达：流动的时间、起伏的情节和亮点。&lt;/li&gt;
&lt;li&gt;借鉴：找出自己喜欢的文章和作者，分析自己喜欢哪一点？能否模仿？&lt;/li&gt;
&lt;/ul&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;脚注&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;由 DeepSeek 生成，提示词为“为了在写作时写出独具魅力的观点，我会磨炼找到事物之间的共同点这项能力。帮我分析出租车与晚霞有什么共通的地方“。 &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded></item><item><title>网站 2022 版</title><link>https://blog.mdreame.space/blog/2026-05-01-%E7%BD%91%E7%AB%99-2022/</link><guid isPermaLink="true">https://blog.mdreame.space/blog/2026-05-01-%E7%BD%91%E7%AB%99-2022/</guid><description>旧网站留念。</description><pubDate>Fri, 01 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;当初似乎用 Gatsby 渲染的，具体细节已经记不清了。&lt;/p&gt;
&lt;h2 id=&quot;电脑端&quot;&gt;电脑端&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/34c544ae2a7dcbbaf91f35d31030789c-1777605142969.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/bdc07be2ee758635e362598eac2aeb55-1777605192250.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/f91240a581531fb0be5cd8f847ff434f-1777605204378.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/7fb379337fba70cb7329cdc3d9b53347-1777605215880.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/c99561c9d723be044836069671a222b5-1777605235686.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/a835e4befc428a05c4ecf7da962d09cb-1777605265564.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;移动端&quot;&gt;移动端&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/bf8c55a491f83518c7434f71dd1c2fb0-1777605303316.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/6f8a351668c423483a323ce50b96fa1d-1777605344854.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/da1e0376ce03fdad79d040c26f2c88cf-1777605372716.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/36ad58354cd6b1a08d58f9d1ef21f1ad-1777605382603.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/ad9f326a446fbfa2c7a6a81b24bd40a6-1777605393017.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/11fd9cb87aeef7414de415cf5edd4531-1777605411055.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/a3d2bfab1a400734675919169dcbabf9-1777605436614.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/aeba081a2371a0eae7fade348cb3dd00-1777605446089.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/88115f74d544b529dbc863fb8b8c4e1d-1777605459864.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/1262ed1e7b1eabffd37376b55bce5e3d-1777605474193.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;</content:encoded></item><item><title>博客 Changelog</title><link>https://blog.mdreame.space/blog/2026-04-27-changelog/</link><guid isPermaLink="true">https://blog.mdreame.space/blog/2026-04-27-changelog/</guid><description>记录这个博客的功能演进，只列出比较大的变动。</description><pubDate>Mon, 27 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;本博客在 &lt;a href=&quot;https://github.com/jktrn/astro-erudite&quot; rel=&quot;nofollow noreferrer noopener&quot; target=&quot;_blank&quot;&gt;astro-erudite&lt;/a&gt; 基础上通过 Vibe Coding 生成，托管在 EdgeOne Pages。以下是改动历史：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2026-05-12：新增 Artalk 评论系统支持，可通过配置切换至 Artalk。&lt;/li&gt;
&lt;li&gt;2026-05-10：新增 /projects 项目展示页，并在首页博客内容区域加入入口。&lt;/li&gt;
&lt;li&gt;2026-05-09：新增 &lt;code&gt;::audio&lt;/code&gt; 自定义音频播放器，支持标题、描述、进度条、音量调节、下载。&lt;/li&gt;
&lt;li&gt;2026-05-08：主页新增「近况」区块，自动展示最近在读的书、在听的音乐、在看的电影，游戏支持手动配置。&lt;/li&gt;
&lt;li&gt;2026-05-05：footer 新增 newsletter 订阅表单，输入邮箱跳转 Substack 完成订阅。&lt;/li&gt;
&lt;li&gt;2026-05-05：文章页新增桌面端阅读进度条（顶部细线）；旅行页新增足迹统计（地点数 + 游记篇数）。&lt;/li&gt;
&lt;li&gt;2026-05-04：增加 twikoo 评论系统支持。&lt;/li&gt;
&lt;li&gt;2026-05-03：新增书影音卡片，通过脚本抓取自动填写。&lt;/li&gt;
&lt;li&gt;2026-05-02：新增 &lt;code&gt;::video&lt;/code&gt; 指令，支持视频嵌入。&lt;/li&gt;
&lt;li&gt;2026-05-01：旅行页面增加高德地图足迹展示。&lt;/li&gt;
&lt;li&gt;2026-05-01：增加旅行（/travel）、相册页面（/albums）。&lt;/li&gt;
&lt;li&gt;2026-04-30：增加 umami 统计。&lt;/li&gt;
&lt;li&gt;2026-04-28：增加说说页面（/mastodon）。&lt;/li&gt;
&lt;li&gt;2026-04-27：文末”相关文章”（标签重叠度推荐）；本篇 Changelog。&lt;/li&gt;
&lt;li&gt;2026-04-16：接入 Google Analytics；新增 &lt;code&gt;pnpm new &amp;#x3C;title&gt;&lt;/code&gt; 文章脚手架。&lt;/li&gt;
&lt;li&gt;2026-04-05：RSS 全文输出。&lt;/li&gt;
&lt;li&gt;2026-04-03：集成 Waline + Giscus 评论；Mermaid 流程图；新增 &lt;a href=&quot;/about&quot;&gt;关于&lt;/a&gt; 页面；加入全局视频背景。&lt;/li&gt;
&lt;li&gt;2026-04-02：归档页（热力图 + 年度归档）；YouTube / Bilibili / Spotify 嵌入支持。&lt;/li&gt;
&lt;li&gt;2026-03-27：增加画廊与图片 Lightbox。&lt;/li&gt;
&lt;li&gt;2026-03-26：完成全文搜索（Pagefind）。&lt;/li&gt;
&lt;li&gt;2026-03-25：博客上线，基于 Astro + Tailwind。&lt;/li&gt;
&lt;/ul&gt;</content:encoded></item><item><title>某应用申请“查找本地网络中的设备“是什么意思</title><link>https://blog.mdreame.space/blog/2026-04-25-%E6%9F%90%E5%BA%94%E7%94%A8%E7%94%B3%E8%AF%B7%E6%9F%A5%E6%89%BE%E6%9C%AC%E5%9C%B0%E7%BD%91%E7%BB%9C%E4%B8%AD%E7%9A%84%E8%AE%BE%E5%A4%87%E6%98%AF%E4%BB%80%E4%B9%88%E6%84%8F%E6%80%9D/</link><guid isPermaLink="true">https://blog.mdreame.space/blog/2026-04-25-%E6%9F%90%E5%BA%94%E7%94%A8%E7%94%B3%E8%AF%B7%E6%9F%A5%E6%89%BE%E6%9C%AC%E5%9C%B0%E7%BD%91%E7%BB%9C%E4%B8%AD%E7%9A%84%E8%AE%BE%E5%A4%87%E6%98%AF%E4%BB%80%E4%B9%88%E6%84%8F%E6%80%9D/</guid><description>要在意应用程序随意访问本地设备的行为，否则可能有隐私泄露的风险。</description><pubDate>Sat, 25 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;在使用 MacOS 过程中，经常遇到系统弹窗，提示某应用程序要求访问本地网络中的设备，询问用户是否允许。这通常在应用首次安装或者升级重新安装后尝试扫描本地网络时发生。&lt;/p&gt;
&lt;p&gt;那么什么是本地网络呢？简单来说，通常在家用场景下只需要一个路由器，那么连接到这个路由器上的设备就是处在本地网络，也可以说都在这个局域网（Local Area Network）中。&lt;/p&gt;
&lt;p&gt;这里首先需要明确路由器和 WiFi 的区别。&lt;/p&gt;
&lt;p&gt;路由器的功能是将一个网络电信号分发到多个网口，供给多个有线设备使用，只需要将网线插入路由器背后的网口就能联网。但家用的路由器同时也集成了无线 AP（Wireless Access Point） 功能，可以将有线信号转换为无线信号。通过无线信号连接的设备就都处在无线局域网（WLAN），我们日常称该无线网络为 WiFi。我们所说的连接到某 WiFi（如 xiaomi-wifi），实际指代的是该无线网络的名称，也就是 SSID（Service Set Identifier，服务集标识符）。而同一个路由器可以设置多个 SSID，比如 xiaomi-wifi-2.4G、xiaomi-wifi-5G。&lt;/p&gt;
&lt;div class=&quot;mermaid-diagram&quot;&gt;%%{init: {&apos;theme&apos;: &apos;neutral&apos;, &apos;themeVariables&apos;: { &apos;fontSize&apos;: &apos;24px&apos;}}}%%
flowchart TD
    A[互联网] --&gt; B[楼道光猫&amp;#x3C;br&gt;（光纤→网线）]
    B --&gt; C[小米路由器]

    C --&gt; D[主网络&amp;#x3C;br&gt;（本地网络权限生效范围）]
    C --&gt; E[访客网络&amp;#x3C;br&gt;（隔离区）]

    subgraph D [主网络：同一本地网络，可互相发现]
        D1[2.4G Wi-Fi&amp;#x3C;br&gt;智能插座 / 智能灯泡 / 扫地机器人]
        D2[5G Wi-Fi&amp;#x3C;br&gt;你的手机 / 你的电脑 / 电视]
        D3[有线 LAN&amp;#x3C;br&gt;台式机 / 电视 / NAS]
    end

    subgraph E [访客网络：可上网，看不见主网络]
        E1[访客 Wi-Fi&amp;#x3C;br&gt;客人手机 / 客人电脑]
    end

    D1 --- D2
    D2 --- D3
    D1 --- D3

    classDef firstClass fill:#b9b9b9,stroke:#2e7d32,stroke-width:2px
    class A,B,C,D,E firstClass

    classDef sameNetwork fill:#a1cba1,stroke:#2e7d32,stroke-width:2px
    class D1,D2,D3 sameNetwork

    classDef isolated fill:#eaa4a4,stroke:#c62828,stroke-width:2px
    class E1 isolated
&lt;/div&gt;
&lt;p&gt;2.4G 和 5G 是 WiFi 使用的不同的无线电频率。5G 信号传输速度快，但是穿墙能力不如 2.4G 信号。所以 5G 常用于手机电脑的连接，而 2.4G 信号常用于智能家居设备。两者虽然连接的不是同一个“WiFi”，但是连接到了同一路由器，属于同一本地网络。&lt;/p&gt;
&lt;p&gt;除此之外，路由器还可以设置访客模式，需要一个独立的 SSID。但是路由器限制了它的访问权限，将其与主网络隔离开来。访客 WiFi 连接到同一路由器，但是无法访问主网络的设备，所以属于不同的本地网络。日常没有特殊的需求使用不到这个功能的。&lt;/p&gt;
&lt;p&gt;所以没开启访客功能的情况下，连接到了同一路由器，连接到了同一 WiFi，这些设备就都在同一本地网络，可以互相访问。&lt;/p&gt;
&lt;p&gt;如此多的应用都在申请访问本地网络中的设备，那么访问后都可以做什么呢？&lt;/p&gt;
&lt;p&gt;首先是一些常见的办公娱乐设备，如传输文件给打印机、投屏到电视。其次是相互传输数据，如 Steam 游戏本地同乐，用 LocalSend 传输文件。还有一些自动化的场景，如智能家居，网盘同步。&lt;/p&gt;
&lt;p&gt;除了这些正常的功能，还有可能会有一些涉及用户隐私的行为：如可以通过联网情况推断出日常作息和活动轨迹；收集设备信息，绘制用户画像，来推送个性化广告。而更危险的情况，如窃取信息的行为一经发现立马会被审核下架。&lt;/p&gt;
&lt;p&gt;就我而言没有什么需要特别用到访问其他设备的场景，所以一律保持关闭，有需要的时候再临时打开一下。总之，个人隐私需要自己把控，要在便捷中探寻边界。&lt;/p&gt;</content:encoded></item><item><title>世界读书日</title><link>https://blog.mdreame.space/blog/2026-04-23-%E4%B8%96%E7%95%8C%E8%AF%BB%E4%B9%A6%E6%97%A5/</link><guid isPermaLink="true">https://blog.mdreame.space/blog/2026-04-23-%E4%B8%96%E7%95%8C%E8%AF%BB%E4%B9%A6%E6%97%A5/</guid><description>无论作为消遣还是提升自己的工具，都有必要认真对待读书这件事。</description><pubDate>Thu, 23 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;今天是世界读书日，我是从三联的公众号广告知道的。而朋友的动态、RSS 订阅的博客或者社交平台上都没有什么热度，鲜有人提及。这让我不禁诧异，是我陷入了信息茧房又或者确实没有人讨论。去抖音平台上搜了一下，发现雷军都在推荐书籍了，又好像这个节日挺受重视。这种预想与现实的差异让我感到有点荒谬。不得不承认，我的确很久没有静下心来读书了。&lt;/p&gt;
&lt;p&gt;以前看书内容以人文社科为主，其次是文学小说以及常翻的技术工具类书籍。如今社科方面的知识在生活和工作中用到的不多，而且经常能通过社媒的二手信息接触到，自己竟然也坦然接受了这种局面。而文学类的书作为消遣读起来更是奢侈，没有办法像大学或者刚毕业时候那样肆意沉浸其中。在功利心态的影响下，我已经有些难以消受这些细腻厚重的情感了。最常用的技术和工具类的书以往都是在微信读书里分门别类管理好，需要什么内容就直接搜索。而这一行为很快被 AI Chat 替代，因为 AI 在解释原理方面比躺在书里的知识点要生动和灵活太多，更别说我很喜欢这种互动式的交流。所以读书少看起来似乎理所当然。&lt;/p&gt;
&lt;p&gt;不过我愈发察觉到自己面临一个处境：一方面觉得自己信息闭塞，另一方面知识仿佛又唾手可得。对我个人来说，这种矛盾的处境怎么形成的呢？我想了一下，觉得这个问题又不太妥当，似乎不成立。对可能有用的知识感到有一种匮乏感，这是一种心理上的期望。而面对海量的信息缺少筛选和聚焦是我思维上的困境。这两者好像指向了同一个源头，我所匮乏的不是知识，而是一种平和的心态，一种冷静且成体系的思考方式。&lt;/p&gt;
&lt;p&gt;所以决定重新拿起书是必然的。与此同时脑中冒出了那句话，&lt;q class=&quot;quote-inline&quot;&gt;博学之，审问之，慎思之，明辨之，笃行之&lt;/q&gt;，今日记下此篇以提醒自己。&lt;/p&gt;</content:encoded></item><item><title>博客功能测试</title><link>https://blog.mdreame.space/blog/2026-04-02-%E5%8D%9A%E5%AE%A2%E5%8A%9F%E8%83%BD%E6%B5%8B%E8%AF%95/</link><guid isPermaLink="true">https://blog.mdreame.space/blog/2026-04-02-%E5%8D%9A%E5%AE%A2%E5%8A%9F%E8%83%BD%E6%B5%8B%E8%AF%95/</guid><description> </description><pubDate>Thu, 02 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;博客增加了图片描述、瀑布流排版、Youtube、Bilibili、Spotify嵌入等功能。&lt;/p&gt;
&lt;h2 id=&quot;图片&quot;&gt;图片&lt;/h2&gt;
&lt;h3 id=&quot;单张图片&quot;&gt;单张图片&lt;/h3&gt;
&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://img.mdreame.space/7fb8719a26b24b369b5cf67752e99834-1770520795842.webp&quot; alt=&quot;图片&quot;&gt;&lt;figcaption&gt;图片&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;h3 id=&quot;瀑布流&quot;&gt;瀑布流&lt;/h3&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;style&gt;.expressive-code{font-family:var(--ec-uiFontFml);font-size:var(--ec-uiFontSize);font-weight:var(--ec-uiFontWg);line-height:var(--ec-uiLineHt);text-size-adjust:none;-webkit-text-size-adjust:none}.expressive-code *:not(:is(svg, svg *)){all:revert;box-sizing:border-box}.expressive-code pre{display:flex;margin:0;padding:0;border:var(--ec-brdWd) solid var(--ec-brdCol);border-radius:calc(var(--ec-brdRad) + var(--ec-brdWd));background:var(--ec-codeBg)}.expressive-code pre:focus-visible{outline:3px solid var(--ec-focusBrd);outline-offset:-3px}.expressive-code pre &gt; code{all:unset;display:block;flex:1 0 100%;padding:var(--ec-codePadBlk) 0;color:var(--ec-codeFg);font-family:var(--ec-codeFontFml);font-size:var(--ec-codeFontSize);font-weight:var(--ec-codeFontWg);line-height:var(--ec-codeLineHt)}.expressive-code pre{overflow-x:auto}.expressive-code pre.wrap .ec-line .code{white-space:pre-wrap;overflow-wrap:break-word;min-width:min(20ch, var(--ecMaxLine, 20ch))}.expressive-code pre.wrap .ec-line .code span.indent{white-space:pre}.expressive-code pre::-webkit-scrollbar,.expressive-code pre::-webkit-scrollbar-track{background-color:inherit;border-radius:calc(var(--ec-brdRad) + var(--ec-brdWd));border-top-left-radius:0;border-top-right-radius:0}.expressive-code pre::-webkit-scrollbar-thumb{background-color:var(--ec-sbThumbCol);border:4px solid transparent;background-clip:content-box;border-radius:10px}.expressive-code pre::-webkit-scrollbar-thumb:hover{background-color:var(--ec-sbThumbHoverCol)}.expressive-code .ec-line{direction:ltr;unicode-bidi:isolate;display:grid;grid-template-areas:&apos;gutter code&apos;;grid-template-columns:auto 1fr;position:relative}.expressive-code .ec-line .gutter{grid-area:gutter;color:var(--ec-gtrFg)}.expressive-code .ec-line .gutter &gt; *{pointer-events:none;user-select:none;-webkit-user-select:none}.expressive-code .ec-line .gutter ~ .code{--ecLineBrdCol:var(--ec-gtrBrdCol)}.expressive-code .ec-line.highlight .gutter{color:var(--ec-gtrHlFg)}.expressive-code .ec-line .code{grid-area:code;position:relative;box-sizing:content-box;padding-inline-start:calc(var(--ecIndent, 0ch) + var(--ec-codePadInl) - var(--ecGtrBrdWd));padding-inline-end:var(--ec-codePadInl);text-indent:calc(var(--ecIndent, 0ch) * -1)}.expressive-code .ec-line .code::before,.expressive-code .ec-line .code::after,.expressive-code .ec-line .code :where(*){text-indent:0}.expressive-code .ec-line .code{--ecGtrBrdWd:var(--ec-gtrBrdWd);border-inline-start:var(--ecGtrBrdWd) solid var(--ecLineBrdCol, transparent)}.expressive-code .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}.expressive-code .ec-line.mark{--tmLineBgCol:var(--ec-tm-markBg)}.expressive-code .ec-line.mark .code{--ecLineBrdCol:var(--ec-tm-markBrdCol)}.expressive-code .ec-line.ins{--tmLineBgCol:var(--ec-tm-insBg);--tmLabel:var(--ec-tm-insDiffIndContent)}.expressive-code .ec-line.ins .code{--ecLineBrdCol:var(--ec-tm-insBrdCol)}.expressive-code .ec-line.ins .code::before{color:var(--ec-tm-insDiffIndCol)}.expressive-code .ec-line.del{--tmLineBgCol:var(--ec-tm-delBg);--tmLabel:var(--ec-tm-delDiffIndContent)}.expressive-code .ec-line.del .code{--ecLineBrdCol:var(--ec-tm-delBrdCol)}.expressive-code .ec-line.del .code::before{color:var(--ec-tm-delDiffIndCol)}.expressive-code .ec-line.mark,.expressive-code .ec-line.ins,.expressive-code .ec-line.del{background:var(--tmLineBgCol)}.expressive-code .ec-line.mark .code,.expressive-code .ec-line.ins .code,.expressive-code .ec-line.del .code{--ecGtrBrdWd:var(--ec-tm-lineMarkerAccentWd)}.expressive-code .ec-line.mark .code::before,.expressive-code .ec-line.ins .code::before,.expressive-code .ec-line.del .code::before{display:block;position:absolute;left:0;box-sizing:border-box;content:var(--tmLabel, &apos; &apos;);padding-inline-start:var(--ec-tm-lineDiffIndMargLeft);text-align:center;white-space:pre}.expressive-code .ec-line.mark.tm-label .code::before,.expressive-code .ec-line.ins.tm-label .code::before,.expressive-code .ec-line.del.tm-label .code::before{background:var(--ecLineBrdCol);padding:0 calc(var(--ec-tm-lineMarkerLabelPadInl) + var(--ec-tm-lineMarkerAccentWd)) 0 var(--ec-tm-lineMarkerLabelPadInl);color:var(--ec-tm-lineMarkerLabelCol)}.expressive-code .ec-line mark{--tmInlineBgCol:var(--ec-tm-markBg);--tmInlineBrdCol:var(--ec-tm-markBrdCol)}.expressive-code .ec-line ins{--tmInlineBgCol:var(--ec-tm-insBg);--tmInlineBrdCol:var(--ec-tm-insBrdCol)}.expressive-code .ec-line del{--tmInlineBgCol:var(--ec-tm-delBg);--tmInlineBrdCol:var(--ec-tm-delBrdCol)}.expressive-code .ec-line mark,.expressive-code .ec-line ins,.expressive-code .ec-line del{all:unset;display:inline-block;position:relative;--tmBrdL:var(--ec-tm-inlMarkerBrdWd);--tmBrdR:var(--ec-tm-inlMarkerBrdWd);--tmRadL:var(--ec-tm-inlMarkerBrdRad);--tmRadR:var(--ec-tm-inlMarkerBrdRad);margin-inline:0.025rem;padding-inline:var(--ec-tm-inlMarkerPad);border-radius:var(--tmRadL) var(--tmRadR) var(--tmRadR) var(--tmRadL);background:var(--tmInlineBgCol);background-clip:padding-box}.expressive-code .ec-line mark.open-start,.expressive-code .ec-line ins.open-start,.expressive-code .ec-line del.open-start{margin-inline-start:0;padding-inline-start:0;--tmBrdL:0px;--tmRadL:0}.expressive-code .ec-line mark.open-end,.expressive-code .ec-line ins.open-end,.expressive-code .ec-line del.open-end{margin-inline-end:0;padding-inline-end:0;--tmBrdR:0px;--tmRadR:0}.expressive-code .ec-line mark::before,.expressive-code .ec-line ins::before,.expressive-code .ec-line del::before{content:&apos;&apos;;position:absolute;pointer-events:none;display:inline-block;inset:0;border-radius:var(--tmRadL) var(--tmRadR) var(--tmRadR) var(--tmRadL);border:var(--ec-tm-inlMarkerBrdWd) solid var(--tmInlineBrdCol);border-inline-width:var(--tmBrdL) var(--tmBrdR)}.expressive-code .frame{all:unset;position:relative;display:block;--header-border-radius:calc(var(--ec-brdRad) + var(--ec-brdWd));--tab-border-radius:calc(var(--ec-frm-edTabBrdRad) + var(--ec-brdWd));--button-spacing:0.4rem;--code-background:var(--ec-frm-edBg);border-radius:var(--header-border-radius);box-shadow:var(--ec-frm-frameBoxShdCssVal)}.expressive-code .frame .header{display:none;z-index:1;position:relative;border-radius:var(--header-border-radius) var(--header-border-radius) 0 0}.expressive-code .frame.has-title pre,.expressive-code .frame.has-title code,.expressive-code .frame.is-terminal pre,.expressive-code .frame.is-terminal code{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.expressive-code .frame .title:empty:before{content:&apos;\a0&apos;}.expressive-code .frame.has-title:not(.is-terminal){--button-spacing:calc(1.9rem + 2 * (var(--ec-uiPadBlk) + var(--ec-frm-edActTabIndHt)))}.expressive-code .frame.has-title:not(.is-terminal) .title{position:relative;color:var(--ec-frm-edActTabFg);background:var(--ec-frm-edActTabBg);background-clip:padding-box;margin-block-start:var(--ec-frm-edTabsMargBlkStart);padding:calc(var(--ec-uiPadBlk) + var(--ec-frm-edActTabIndHt)) var(--ec-uiPadInl);border:var(--ec-brdWd) solid var(--ec-frm-edActTabBrdCol);border-radius:var(--tab-border-radius) var(--tab-border-radius) 0 0;border-bottom:none;overflow:hidden}.expressive-code .frame.has-title:not(.is-terminal) .title::after{content:&apos;&apos;;position:absolute;pointer-events:none;inset:0;border-top:var(--ec-frm-edActTabIndHt) solid var(--ec-frm-edActTabIndTopCol);border-bottom:var(--ec-frm-edActTabIndHt) solid var(--ec-frm-edActTabIndBtmCol)}.expressive-code .frame.has-title:not(.is-terminal) .header{display:flex;background:linear-gradient(to top, var(--ec-frm-edTabBarBrdBtmCol) var(--ec-brdWd), transparent var(--ec-brdWd)),linear-gradient(var(--ec-frm-edTabBarBg), var(--ec-frm-edTabBarBg));background-repeat:no-repeat;padding-inline-start:var(--ec-frm-edTabsMargInlStart)}.expressive-code .frame.has-title:not(.is-terminal) .header::before{content:&apos;&apos;;position:absolute;pointer-events:none;inset:0;border:var(--ec-brdWd) solid var(--ec-frm-edTabBarBrdCol);border-radius:inherit;border-bottom:none}.expressive-code .frame.is-terminal{--button-spacing:calc(1.9rem + var(--ec-brdWd) + 2 * var(--ec-uiPadBlk));--code-background:var(--ec-frm-trmBg)}.expressive-code .frame.is-terminal .header{display:flex;align-items:center;justify-content:center;padding-block:var(--ec-uiPadBlk);padding-block-end:calc(var(--ec-uiPadBlk) + var(--ec-brdWd));position:relative;font-weight:500;letter-spacing:0.025ch;color:var(--ec-frm-trmTtbFg);background:var(--ec-frm-trmTtbBg);border:var(--ec-brdWd) solid var(--ec-brdCol);border-bottom:none}.expressive-code .frame.is-terminal .header::before{content:&apos;&apos;;position:absolute;pointer-events:none;left:var(--ec-uiPadInl);width:2.1rem;height:0.56rem;line-height:0;background-color:var(--ec-frm-trmTtbDotsFg);opacity:var(--ec-frm-trmTtbDotsOpa);-webkit-mask-image:url(&quot;data:image/svg+xml,%3Csvg xmlns=&apos;http://www.w3.org/2000/svg&apos; viewBox=&apos;0 0 60 16&apos; preserveAspectRatio=&apos;xMidYMid meet&apos;%3E%3Ccircle cx=&apos;8&apos; cy=&apos;8&apos; r=&apos;8&apos;/%3E%3Ccircle cx=&apos;30&apos; cy=&apos;8&apos; r=&apos;8&apos;/%3E%3Ccircle cx=&apos;52&apos; cy=&apos;8&apos; r=&apos;8&apos;/%3E%3C/svg%3E&quot;);-webkit-mask-repeat:no-repeat;mask-image:url(&quot;data:image/svg+xml,%3Csvg xmlns=&apos;http://www.w3.org/2000/svg&apos; viewBox=&apos;0 0 60 16&apos; preserveAspectRatio=&apos;xMidYMid meet&apos;%3E%3Ccircle cx=&apos;8&apos; cy=&apos;8&apos; r=&apos;8&apos;/%3E%3Ccircle cx=&apos;30&apos; cy=&apos;8&apos; r=&apos;8&apos;/%3E%3Ccircle cx=&apos;52&apos; cy=&apos;8&apos; r=&apos;8&apos;/%3E%3C/svg%3E&quot;);mask-repeat:no-repeat}.expressive-code .frame.is-terminal .header::after{content:&apos;&apos;;position:absolute;pointer-events:none;inset:0;border-bottom:var(--ec-brdWd) solid var(--ec-frm-trmTtbBrdBtmCol)}.expressive-code .frame pre{background:var(--code-background)}.expressive-code .copy{display:flex;gap:0.25rem;flex-direction:row;position:absolute;inset-block-start:calc(var(--ec-brdWd) + var(--button-spacing));inset-inline-end:calc(var(--ec-brdWd) + var(--ec-uiPadInl) / 2)}@media (scripting: none){.expressive-code .copy{display:none}}.expressive-code .copy{direction:ltr;unicode-bidi:isolate}.expressive-code .copy button{position:relative;align-self:flex-end;margin:0;padding:0;border:none;border-radius:0.2rem;z-index:1;cursor:pointer;transition-property:opacity, background, border-color;transition-duration:0.2s;transition-timing-function:cubic-bezier(0.25, 0.46, 0.45, 0.94);width:2.5rem;height:2.5rem;background:var(--code-background);opacity:0.75}.expressive-code .copy button div{position:absolute;inset:0;border-radius:inherit;background:var(--ec-frm-inlBtnBg);opacity:var(--ec-frm-inlBtnBgIdleOpa);transition-property:inherit;transition-duration:inherit;transition-timing-function:inherit}.expressive-code .copy button::before{content:&apos;&apos;;position:absolute;pointer-events:none;inset:0;border-radius:inherit;border:var(--ec-brdWd) solid var(--ec-frm-inlBtnBrd);opacity:var(--ec-frm-inlBtnBrdOpa)}.expressive-code .copy button::after{content:&apos;&apos;;position:absolute;pointer-events:none;inset:0;background-color:var(--ec-frm-inlBtnFg);-webkit-mask-image:url(&quot;data:image/svg+xml,%3Csvg xmlns=&apos;http://www.w3.org/2000/svg&apos; viewBox=&apos;0 0 24 24&apos; fill=&apos;none&apos; stroke=&apos;black&apos; stroke-width=&apos;1.75&apos;%3E%3Cpath d=&apos;M3 19a2 2 0 0 1-1-2V2a2 2 0 0 1 1-1h13a2 2 0 0 1 2 1&apos;/%3E%3Crect x=&apos;6&apos; y=&apos;5&apos; width=&apos;16&apos; height=&apos;18&apos; rx=&apos;1.5&apos; ry=&apos;1.5&apos;/%3E%3C/svg%3E&quot;);-webkit-mask-repeat:no-repeat;mask-image:url(&quot;data:image/svg+xml,%3Csvg xmlns=&apos;http://www.w3.org/2000/svg&apos; viewBox=&apos;0 0 24 24&apos; fill=&apos;none&apos; stroke=&apos;black&apos; stroke-width=&apos;1.75&apos;%3E%3Cpath d=&apos;M3 19a2 2 0 0 1-1-2V2a2 2 0 0 1 1-1h13a2 2 0 0 1 2 1&apos;/%3E%3Crect x=&apos;6&apos; y=&apos;5&apos; width=&apos;16&apos; height=&apos;18&apos; rx=&apos;1.5&apos; ry=&apos;1.5&apos;/%3E%3C/svg%3E&quot;);mask-repeat:no-repeat;margin:0.475rem;line-height:0}.expressive-code .copy button:hover,.expressive-code .copy button:focus:focus-visible{opacity:1}.expressive-code .copy button:hover div,.expressive-code .copy button:focus:focus-visible div{opacity:var(--ec-frm-inlBtnBgHoverOrFocusOpa)}.expressive-code .copy button:active{opacity:1}.expressive-code .copy button:active div{opacity:var(--ec-frm-inlBtnBgActOpa)}.expressive-code .copy .feedback{--tooltip-arrow-size:0.35rem;--tooltip-bg:var(--ec-frm-tooltipSuccessBg);color:var(--ec-frm-tooltipSuccessFg);pointer-events:none;user-select:none;-webkit-user-select:none;position:relative;align-self:center;background-color:var(--tooltip-bg);z-index:99;padding:0.125rem 0.75rem;border-radius:0.2rem;margin-inline-end:var(--tooltip-arrow-size);opacity:0;transition-property:opacity, transform;transition-duration:0.2s;transition-timing-function:ease-in-out;transform:translate3d(0, 0.25rem, 0)}.expressive-code .copy .feedback::after{content:&apos;&apos;;position:absolute;pointer-events:none;top:calc(50% - var(--tooltip-arrow-size));inset-inline-end:calc(-2 * (var(--tooltip-arrow-size) - 0.5px));border:var(--tooltip-arrow-size) solid transparent;border-inline-start-color:var(--tooltip-bg)}.expressive-code .copy .feedback.show{opacity:1;transform:translate3d(0, 0, 0)}@media (hover: hover){.expressive-code{}.expressive-code .copy button{opacity:0;width:2rem;height:2rem}.expressive-code .frame:hover .copy button:not(:hover),.expressive-code .frame:focus-within :focus-visible ~ .copy button:not(:hover),.expressive-code .frame .copy .feedback.show ~ button:not(:hover){opacity:0.75}}.expressive-code :nth-child(1 of .ec-line) .code{padding-inline-end:calc(2rem + var(--ec-codePadInl))}.expressive-code .ec-section{position:relative}.expressive-code .ec-section summary{position:relative;font-family:var(--ec-cs-closedFontFml);font-size:var(--ec-cs-closedFontSize);line-height:var(--ec-cs-closedLineHt);user-select:none;-webkit-user-select:none;cursor:pointer;color:var(--ec-cs-closedTextCol);background-color:var(--ec-cs-closedBgCol);--border-color:var(--ec-cs-closedBrdCol);--border-width:var(--ec-cs-closedBrdWd);box-shadow:inset 0 calc(-1 * var(--border-width)) var(--border-color), inset 0 var(--border-width) var(--border-color);margin:var(--ec-cs-closedMarg);padding:0}.expressive-code .ec-section summary::marker{display:inline-block;content:&quot;&quot;;width:16px;height:16px}.expressive-code .ec-section summary::-webkit-details-marker{display:none}.expressive-code .ec-section summary :is(.expand, .collapse){position:relative;display:inline-block;width:16px;height:16px;vertical-align:text-bottom;opacity:0.75}.expressive-code .ec-section summary :is(.expand, .collapse)::after{content:&apos;&apos;;position:absolute;pointer-events:none;inset:0;background-color:var(--ec-cs-closedTextCol);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;line-height:0}.expressive-code .ec-section summary .expand::after{-webkit-mask-image:url(&quot;data:image/svg+xml,%3Csvg xmlns=&apos;http://www.w3.org/2000/svg&apos; viewBox=&apos;0 0 16 16&apos;%3E%3Cpath d=&apos;m8.177.677 2.896 2.896a.25.25 0 0 1-.177.427H8.75v1.25a.75.75 0 0 1-1.5 0V4H5.104a.25.25 0 0 1-.177-.427L7.823.677a.25.25 0 0 1 .354 0ZM7.25 10.75a.75.75 0 0 1 1.5 0V12h2.146a.25.25 0 0 1 .177.427l-2.896 2.896a.25.25 0 0 1-.354 0l-2.896-2.896A.25.25 0 0 1 5.104 12H7.25v-1.25Zm-5-2a.75.75 0 0 0 0-1.5h-.5a.75.75 0 0 0 0 1.5h.5ZM6 8a.75.75 0 0 1-.75.75h-.5a.75.75 0 0 1 0-1.5h.5A.75.75 0 0 1 6 8Zm2.25.75a.75.75 0 0 0 0-1.5h-.5a.75.75 0 0 0 0 1.5h.5ZM12 8a.75.75 0 0 1-.75.75h-.5a.75.75 0 0 1 0-1.5h.5A.75.75 0 0 1 12 8Zm2.25.75a.75.75 0 0 0 0-1.5h-.5a.75.75 0 0 0 0 1.5h.5Z&apos;/%3E%3C/svg%3E&quot;);mask-image:url(&quot;data:image/svg+xml,%3Csvg xmlns=&apos;http://www.w3.org/2000/svg&apos; viewBox=&apos;0 0 16 16&apos;%3E%3Cpath d=&apos;m8.177.677 2.896 2.896a.25.25 0 0 1-.177.427H8.75v1.25a.75.75 0 0 1-1.5 0V4H5.104a.25.25 0 0 1-.177-.427L7.823.677a.25.25 0 0 1 .354 0ZM7.25 10.75a.75.75 0 0 1 1.5 0V12h2.146a.25.25 0 0 1 .177.427l-2.896 2.896a.25.25 0 0 1-.354 0l-2.896-2.896A.25.25 0 0 1 5.104 12H7.25v-1.25Zm-5-2a.75.75 0 0 0 0-1.5h-.5a.75.75 0 0 0 0 1.5h.5ZM6 8a.75.75 0 0 1-.75.75h-.5a.75.75 0 0 1 0-1.5h.5A.75.75 0 0 1 6 8Zm2.25.75a.75.75 0 0 0 0-1.5h-.5a.75.75 0 0 0 0 1.5h.5ZM12 8a.75.75 0 0 1-.75.75h-.5a.75.75 0 0 1 0-1.5h.5A.75.75 0 0 1 12 8Zm2.25.75a.75.75 0 0 0 0-1.5h-.5a.75.75 0 0 0 0 1.5h.5Z&apos;/%3E%3C/svg%3E&quot;);-webkit-print-color-adjust:exact;print-color-adjust:exact}.expressive-code .ec-section summary .collapse{display:none}.expressive-code .ec-section summary .collapse::after{-webkit-mask-image:url(&quot;data:image/svg+xml,%3Csvg xmlns=&apos;http://www.w3.org/2000/svg&apos; viewBox=&apos;0 0 16 16&apos;%3E%3Cpath d=&apos;M10.896 2H8.75V.75a.75.75 0 0 0-1.5 0V2H5.104a.25.25 0 0 0-.177.427l2.896 2.896a.25.25 0 0 0 .354 0l2.896-2.896A.25.25 0 0 0 10.896 2ZM8.75 15.25a.75.75 0 0 1-1.5 0V14H5.104a.25.25 0 0 1-.177-.427l2.896-2.896a.25.25 0 0 1 .354 0l2.896 2.896a.25.25 0 0 1-.177.427H8.75v1.25Zm-6.5-6.5a.75.75 0 0 0 0-1.5h-.5a.75.75 0 0 0 0 1.5h.5ZM6 8a.75.75 0 0 1-.75.75h-.5a.75.75 0 0 1 0-1.5h.5A.75.75 0 0 1 6 8Zm2.25.75a.75.75 0 0 0 0-1.5h-.5a.75.75 0 0 0 0 1.5h.5ZM12 8a.75.75 0 0 1-.75.75h-.5a.75.75 0 0 1 0-1.5h.5A.75.75 0 0 1 12 8Zm2.25.75a.75.75 0 0 0 0-1.5h-.5a.75.75 0 0 0 0 1.5h.5Z&apos;/%3E%3C/svg%3E&quot;);mask-image:url(&quot;data:image/svg+xml,%3Csvg xmlns=&apos;http://www.w3.org/2000/svg&apos; viewBox=&apos;0 0 16 16&apos;%3E%3Cpath d=&apos;M10.896 2H8.75V.75a.75.75 0 0 0-1.5 0V2H5.104a.25.25 0 0 0-.177.427l2.896 2.896a.25.25 0 0 0 .354 0l2.896-2.896A.25.25 0 0 0 10.896 2ZM8.75 15.25a.75.75 0 0 1-1.5 0V14H5.104a.25.25 0 0 1-.177-.427l2.896-2.896a.25.25 0 0 1 .354 0l2.896 2.896a.25.25 0 0 1-.177.427H8.75v1.25Zm-6.5-6.5a.75.75 0 0 0 0-1.5h-.5a.75.75 0 0 0 0 1.5h.5ZM6 8a.75.75 0 0 1-.75.75h-.5a.75.75 0 0 1 0-1.5h.5A.75.75 0 0 1 6 8Zm2.25.75a.75.75 0 0 0 0-1.5h-.5a.75.75 0 0 0 0 1.5h.5ZM12 8a.75.75 0 0 1-.75.75h-.5a.75.75 0 0 1 0-1.5h.5A.75.75 0 0 1 12 8Zm2.25.75a.75.75 0 0 0 0-1.5h-.5a.75.75 0 0 0 0 1.5h.5Z&apos;/%3E%3C/svg%3E&quot;)}.expressive-code .ec-section summary .text{margin-left:1em}.expressive-code .ec-section summary .ec-line .code{padding-block:var(--ec-cs-closedPadBlk);text-indent:0}.expressive-code .ec-section[open],.expressive-code .ec-section details[open] + .content-lines{--border-color:var(--ec-cs-openBrdCol);--border-width:var(--ec-cs-openBrdWd);box-shadow:inset 0 calc(-1 * var(--border-width)) var(--border-color), inset 0 var(--border-width) var(--border-color);padding-inline:var(--ec-cs-openPad);margin-inline:var(--ec-cs-openMarg)}.expressive-code .ec-section.github[open] summary{display:none}.expressive-code .ec-section.github[open]{background-color:var(--ec-cs-openBgCol)}.expressive-code .ec-section:is(.collapsible-start, .collapsible-end){display:flex;flex-direction:column}.expressive-code .ec-section:is(.collapsible-start, .collapsible-end) .content-lines{display:none}.expressive-code .ec-section:is(.collapsible-start, .collapsible-end) details[open] .collapse{display:inline-block}.expressive-code .ec-section:is(.collapsible-start, .collapsible-end) details[open] :is(.expand, .text){display:none}.expressive-code .ec-section:is(.collapsible-start, .collapsible-end) details[open] + .content-lines{display:block;background-color:var(--ec-cs-openBgColCollapsible)}@media print{.expressive-code .ec-section:is(.collapsible-start, .collapsible-end) details[open]{display:none}}.expressive-code .ec-section.collapsible-end{flex-direction:column-reverse}.expressive-code .gutter .ln{display:inline-flex;justify-content:flex-end;align-items:flex-start;box-sizing:content-box;min-width:var(--lnWidth, 2ch);padding-inline:2ch;color:var(--ec-lineNumbers-fg)}.highlight .expressive-code .gutter .ln{color:var(--ec-lineNumbers-hlFg)}:root,:root:not([data-theme=&quot;light&quot;]) .expressive-code[data-theme=&quot;light&quot;]{--ec-brdRad:0.3rem;--ec-brdWd:1.5px;--ec-brdCol:var(--border);--ec-codeFontFml:var(--font-mono);--ec-codeFontSize:0.75rem;--ec-codeFontWg:400;--ec-codeLineHt:1.65;--ec-codePadBlk:1rem;--ec-codePadInl:1.35rem;--ec-codeBg:color-mix(in oklab, var(--muted) 25%, transparent);--ec-codeFg:#24292e;--ec-codeSelBg:#0366d625;--ec-gtrFg:#1b1f234d;--ec-gtrBrdCol:#1b1f2333;--ec-gtrBrdWd:1.5px;--ec-gtrHlFg:#24292e;--ec-uiFontFml:var(--font-sans);--ec-uiFontSize:0.9rem;--ec-uiFontWg:400;--ec-uiLineHt:1.65;--ec-uiPadBlk:0.25rem;--ec-uiPadInl:1rem;--ec-uiSelBg:#e2e5e9;--ec-uiSelFg:#2f363d;--ec-focusBrd:#2188ff;--ec-sbThumbCol:#959da533;--ec-sbThumbHoverCol:#959da544;--ec-tm-lineMarkerAccentMarg:0rem;--ec-tm-lineMarkerAccentWd:0.15rem;--ec-tm-lineMarkerLabelPadInl:0.2rem;--ec-tm-lineMarkerLabelCol:white;--ec-tm-lineDiffIndMargLeft:0.3rem;--ec-tm-inlMarkerBrdWd:1.5px;--ec-tm-inlMarkerBrdRad:0.2rem;--ec-tm-inlMarkerPad:0.15rem;--ec-tm-insDiffIndContent:&apos;+&apos;;--ec-tm-delDiffIndContent:&apos;-&apos;;--ec-tm-markBg:#9fb6ff80;--ec-tm-markBrdCol:#5570b3d0;--ec-tm-insBg:#94c68480;--ec-tm-insBrdCol:#4e7e41d0;--ec-tm-insDiffIndCol:#3a692fd0;--ec-tm-delBg:#fea09280;--ec-tm-delBrdCol:#ae594fd0;--ec-tm-delDiffIndCol:#97453dd0;--ec-frm-shdCol:#00000028;--ec-frm-frameBoxShdCssVal:none;--ec-frm-edActTabBg:color-mix(in oklab, var(--muted) 25%, transparent);--ec-frm-edActTabFg:var(--muted-foreground);--ec-frm-edActTabBrdCol:transparent;--ec-frm-edActTabIndHt:1.5px;--ec-frm-edActTabIndTopCol:transparent;--ec-frm-edActTabIndBtmCol:transparent;--ec-frm-edTabsMargInlStart:0;--ec-frm-edTabsMargBlkStart:0;--ec-frm-edTabBrdRad:0;--ec-frm-edTabBarBg:transparent;--ec-frm-edTabBarBrdCol:var(--border);--ec-frm-edTabBarBrdBtmCol:transparent;--ec-frm-edBg:color-mix(in oklab, var(--muted) 25%, transparent);--ec-frm-trmTtbFg:var(--muted-foreground);--ec-frm-trmTtbDotsFg:var(--muted-foreground);--ec-frm-trmTtbDotsOpa:0.15;--ec-frm-trmTtbBg:transparent;--ec-frm-trmTtbBrdBtmCol:transparent;--ec-frm-trmBg:color-mix(in oklab, var(--muted) 25%, transparent);--ec-frm-inlBtnFg:#24292e;--ec-frm-inlBtnBg:#24292e;--ec-frm-inlBtnBgIdleOpa:0;--ec-frm-inlBtnBgHoverOrFocusOpa:0.2;--ec-frm-inlBtnBgActOpa:0.3;--ec-frm-inlBtnBrd:#24292e;--ec-frm-inlBtnBrdOpa:0.4;--ec-frm-tooltipSuccessBg:#208638;--ec-frm-tooltipSuccessFg:white;--ec-cs-closedBrdWd:0;--ec-cs-closedPadBlk:4px;--ec-cs-closedMarg:0;--ec-cs-closedFontFml:inherit;--ec-cs-closedFontSize:inherit;--ec-cs-closedLineHt:inherit;--ec-cs-closedTextCol:#24292e;--ec-cs-closedBgCol:#d1d5da33;--ec-cs-closedBrdCol:#d1d5da80;--ec-cs-openBrdWd:1px;--ec-cs-openPad:0;--ec-cs-openMarg:0;--ec-cs-openBgCol:transparent;--ec-cs-openBgColCollapsible:#d1d5da1a;--ec-cs-openBrdCol:transparent;--ec-lineNumbers-fg:var(--muted-foreground);--ec-lineNumbers-hlFg:inherit}.expressive-code .ec-line :where(span[style^=&apos;--&apos;]:not([class])),:root:not([data-theme=&quot;light&quot;]) .expressive-code[data-theme=&quot;light&quot;] .ec-line :where(span[style^=&apos;--&apos;]:not([class])){color:var(--0, inherit);font-style:var(--0fs, inherit);font-weight:var(--0fw, inherit);text-decoration:var(--0td, inherit)}:root[data-theme=&quot;dark&quot;] .expressive-code:not([data-theme=&quot;light&quot;]),.expressive-code[data-theme=&quot;dark&quot;]{--ec-codeFg:#e1e4e8;--ec-codeSelBg:#3392ff44;--ec-gtrFg:#444d56;--ec-gtrBrdCol:#444d5633;--ec-gtrHlFg:#e1e4e8;--ec-uiSelBg:#39414a;--ec-uiSelFg:#e1e4e8;--ec-focusBrd:#005cc5;--ec-sbThumbCol:#6a737d33;--ec-sbThumbHoverCol:#6a737d44;--ec-tm-markBg:#264a8980;--ec-tm-insBg:#26561c80;--ec-tm-insDiffIndCol:#7eb070d0;--ec-tm-delBg:#81322b80;--ec-tm-delDiffIndCol:#e68a7ed0;--ec-frm-shdCol:#0000005b;--ec-frm-inlBtnFg:#e1e4e8;--ec-frm-inlBtnBg:#e1e4e8;--ec-frm-inlBtnBrd:#e1e4e8;--ec-frm-tooltipSuccessBg:#228739;--ec-cs-closedTextCol:#e1e4e8;--ec-cs-closedBgCol:#58606933;--ec-cs-closedBrdCol:#58606980;--ec-cs-openBgColCollapsible:#5860691a}:root[data-theme=&quot;dark&quot;] .expressive-code:not([data-theme=&quot;light&quot;]) .ec-line :where(span[style^=&apos;--&apos;]:not([class])),.expressive-code[data-theme=&quot;dark&quot;] .ec-line :where(span[style^=&apos;--&apos;]:not([class])){color:var(--1, inherit);font-style:var(--1fs, inherit);font-weight:var(--1fw, inherit);text-decoration:var(--1td, inherit)}&lt;/style&gt;&lt;script type=&quot;module&quot;&gt;try{(()=&gt;{function a(e){if(!e)return;let t=e.getAttribute(&quot;tabindex&quot;)!==null,n=e.scrollWidth&gt;e.clientWidth;n&amp;&amp;!t?e.setAttribute(&quot;tabindex&quot;,&quot;0&quot;):!n&amp;&amp;t&amp;&amp;e.removeAttribute(&quot;tabindex&quot;)}var u=window.requestIdleCallback||(e=&gt;setTimeout(e,1)),i=window.cancelIdleCallback||clearTimeout;function l(e){let t=new Set,n,r;return new ResizeObserver(c=&gt;{c.forEach(o=&gt;t.add(o.target)),n&amp;&amp;clearTimeout(n),r&amp;&amp;i(r),n=setTimeout(()=&gt;{r&amp;&amp;i(r),r=u(()=&gt;{t.forEach(o=&gt;e(o)),t.clear()})},250)})}function d(e,t){e.querySelectorAll?.(&quot;.expressive-code pre &gt; code&quot;).forEach(n=&gt;{let r=n.parentElement;r&amp;&amp;t.observe(r)})}var s=l(a);d(document,s);var b=new MutationObserver(e=&gt;e.forEach(t=&gt;t.addedNodes.forEach(n=&gt;{d(n,s)})));b.observe(document.body,{childList:!0,subtree:!0});document.addEventListener(&quot;astro:page-load&quot;,()=&gt;{d(document,s)});})();}catch(e){console.error(&quot;[EC] tabindex-js-module failed:&quot;,e)}&lt;/script&gt;&lt;script type=&quot;module&quot;&gt;try{(()=&gt;{function i(o){let e=document.createElement(&quot;pre&quot;);Object.assign(e.style,{opacity:&quot;0&quot;,pointerEvents:&quot;none&quot;,position:&quot;absolute&quot;,overflow:&quot;hidden&quot;,left:&quot;0&quot;,top:&quot;0&quot;,width:&quot;20px&quot;,height:&quot;20px&quot;,webkitUserSelect:&quot;auto&quot;,userSelect:&quot;all&quot;}),e.ariaHidden=&quot;true&quot;,e.textContent=o,document.body.appendChild(e);let a=document.createRange();a.selectNode(e);let n=getSelection();if(!n)return!1;n.removeAllRanges(),n.addRange(a);let r=!1;try{r=document.execCommand(&quot;copy&quot;)}finally{n.removeAllRanges(),document.body.removeChild(e)}return r}async function l(o){let e=o.currentTarget,a=e.dataset,n=!1,r=a.code.replace(/\u007f/g,`
`);try{await navigator.clipboard.writeText(r),n=!0}catch{n=i(r)}if(!n||e.parentNode?.querySelector(&quot;.feedback&quot;))return;let t=document.createElement(&quot;div&quot;);t.classList.add(&quot;feedback&quot;),t.append(a.copied),e.before(t),t.offsetWidth,requestAnimationFrame(()=&gt;t?.classList.add(&quot;show&quot;));let c=()=&gt;!t||t.classList.remove(&quot;show&quot;),d=()=&gt;{!t||parseFloat(getComputedStyle(t).opacity)&gt;0||(t.remove(),t=void 0)};setTimeout(c,1500),setTimeout(d,2500),e.addEventListener(&quot;blur&quot;,c),t.addEventListener(&quot;transitioncancel&quot;,d),t.addEventListener(&quot;transitionend&quot;,d)}function s(o){o.querySelectorAll?.(&quot;.expressive-code .copy button&quot;).forEach(e=&gt;e.addEventListener(&quot;click&quot;,l))}s(document);var u=new MutationObserver(o=&gt;o.forEach(e=&gt;e.addedNodes.forEach(a=&gt;{s(a)})));u.observe(document.body,{childList:!0,subtree:!0});document.addEventListener(&quot;astro:page-load&quot;,()=&gt;{s(document)});})();}catch(e){console.error(&quot;[EC] copy-js-module failed:&quot;,e)}&lt;/script&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;plaintext&quot; class=&quot;wrap&quot; style=&quot;--ecMaxLine:13ch&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#24292e;--1:#e1e4e8&quot;&gt;:::gallery&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#24292e;--1:#e1e4e8&quot;&gt;![img1](url1)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#24292e;--1:#e1e4e8&quot;&gt;![img2](url2)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#24292e;--1:#e1e4e8&quot;&gt;![img3](url3)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#24292e;--1:#e1e4e8&quot;&gt;![img4](url4)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#24292e;--1:#e1e4e8&quot;&gt;:::&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;:::gallery![img1](url1)![img2](url2)![img3](url3)![img4](url4):::&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://img.mdreame.space/7fb8719a26b24b369b5cf67752e99834-1770520795842.webp&quot; alt=&quot;电影《春天的故事》（1990）截图&quot;&gt;&lt;figcaption&gt;电影《春天的故事》（1990）截图&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://img.mdreame.space/7fb8719a26b24b369b5cf67752e99834-1770520795842.webp&quot; alt=&quot;电影《春天的故事》（1990）截图&quot;&gt;&lt;figcaption&gt;电影《春天的故事》（1990）截图&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://img.mdreame.space/7fb8719a26b24b369b5cf67752e99834-1770520795842.webp&quot; alt=&quot;电影《春天的故事》（1990）截图&quot;&gt;&lt;figcaption&gt;电影《春天的故事》（1990）截图&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://img.mdreame.space/7fb8719a26b24b369b5cf67752e99834-1770520795842.webp&quot; alt=&quot;电影《春天的故事》（1990）截图&quot;&gt;&lt;figcaption&gt;电影《春天的故事》（1990）截图&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;
&lt;h2 id=&quot;视频&quot;&gt;视频&lt;/h2&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;plaintext&quot; class=&quot;wrap&quot; style=&quot;--ecMaxLine:29ch&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#24292e;--1:#e1e4e8&quot;&gt;::youtube{id=&quot;dQw4w9WgXcQ&quot;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#24292e;--1:#e1e4e8&quot;&gt;::bilibili{id=&quot;BV11T4y1i74n&quot;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;::youtube{id=&amp;#x22;dQw4w9WgXcQ&amp;#x22;}::bilibili{id=&amp;#x22;BV11T4y1i74n&amp;#x22;}&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;div class=&quot;video-embed not-prose&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/dQw4w9WgXcQ&quot; title=&quot;YouTube video player&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen loading=&quot;lazy&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;div class=&quot;video-embed not-prose&quot;&gt;&lt;iframe src=&quot;https://player.bilibili.com/player.html?bvid=BV11T4y1i74n&amp;#x26;autoplay=0&amp;#x26;high_quality=1&amp;#x26;danmaku=0&quot; title=&quot;Bilibili video player&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen loading=&quot;lazy&quot; scrolling=&quot;no&quot; frameborder=&quot;no&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;h2 id=&quot;spotify&quot;&gt;Spotify&lt;/h2&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;plaintext&quot; class=&quot;wrap&quot; style=&quot;--ecMaxLine:70ch&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#24292e;--1:#e1e4e8&quot;&gt;::spotify{url=&quot;https://open.spotify.com/track/7GhIk7Il098yCjg4BQjzvb&quot;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;::spotify{url=&amp;#x22;https://open.spotify.com/track/7GhIk7Il098yCjg4BQjzvb&amp;#x22;}&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;div class=&quot;spotify-embed not-prose&quot;&gt;&lt;iframe src=&quot;https://open.spotify.com/embed/track/7GhIk7Il098yCjg4BQjzvb&quot; title=&quot;Spotify player&quot; allow=&quot;autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture&quot; loading=&quot;lazy&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;h2 id=&quot;mermaid&quot;&gt;Mermaid&lt;/h2&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;plaintext&quot; class=&quot;wrap&quot; style=&quot;--ecMaxLine:16ch&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#24292e;--1:#e1e4e8&quot;&gt;pie&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#24292e;--1:#e1e4e8&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#24292e;--1:#e1e4e8&quot;&gt;title 时间分配统计&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#24292e;--1:#e1e4e8&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#24292e;--1:#e1e4e8&quot;&gt;&quot;前期准备&quot; : 90&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#24292e;--1:#e1e4e8&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#24292e;--1:#e1e4e8&quot;&gt;&quot;Boss战&quot; : 60&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot; style=&quot;--ecIndent:4ch&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;indent&quot;&gt;&lt;span style=&quot;--0:#24292e;--1:#e1e4e8&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;--0:#24292e;--1:#e1e4e8&quot;&gt;&quot;困难模式&quot; : 110&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;pie    title 时间分配统计    &amp;#x22;前期准备&amp;#x22; : 90    &amp;#x22;Boss战&amp;#x22; : 60    &amp;#x22;困难模式&amp;#x22; : 110&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;div class=&quot;mermaid-diagram&quot;&gt;pie
    title 时间分配统计
    &quot;前期准备&quot; : 90
    &quot;Boss战&quot; : 60
    &quot;困难模式&quot; : 110
&lt;/div&gt;
&lt;h2 id=&quot;中文引用&quot;&gt;中文引用&lt;/h2&gt;
&lt;h3 id=&quot;行内引用&quot;&gt;行内引用&lt;/h3&gt;
&lt;p&gt;使用 &lt;code&gt;:q[引用文本]&lt;/code&gt; 在文本中插入行内引用，会以楷体显示。&lt;/p&gt;
&lt;p&gt;这是一段包含行内引用的句子：&lt;q class=&quot;quote-inline&quot;&gt;生活中最伟大的发现之一，就是一个人可以做他认为他不能做的事情&lt;/q&gt;。&lt;/p&gt;
&lt;p&gt;再来一个例子：生活如同 &lt;q class=&quot;quote-inline&quot;&gt;一场漫长的旅程&lt;/q&gt;，我们需要不断前行。&lt;/p&gt;
&lt;h3 id=&quot;块级引用&quot;&gt;块级引用&lt;/h3&gt;
&lt;p&gt;使用以下语法创建块级引用块：&lt;/p&gt;
&lt;div class=&quot;expressive-code&quot;&gt;&lt;figure class=&quot;frame&quot;&gt;&lt;figcaption class=&quot;header&quot;&gt;&lt;/figcaption&gt;&lt;pre data-language=&quot;markdown&quot; class=&quot;wrap&quot; style=&quot;--ecMaxLine:12ch&quot;&gt;&lt;code&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#24292E;--1:#E1E4E8&quot;&gt;:::q&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#24292E;--1:#E1E4E8&quot;&gt;这是一个块级引用。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#24292E;--1:#E1E4E8&quot;&gt;可以包含多行内容。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#24292E;--1:#E1E4E8&quot;&gt;所有文字都会以楷体显示。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ec-line&quot;&gt;&lt;div class=&quot;gutter&quot;&gt;&lt;div class=&quot;ln&quot; aria-hidden=&quot;true&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code&quot;&gt;&lt;span style=&quot;--0:#24292E;--1:#E1E4E8&quot;&gt;:::&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;copy&quot;&gt;&lt;button title=&quot;Copy to clipboard&quot; data-copied=&quot;Copied!&quot; data-code=&quot;:::q这是一个块级引用。可以包含多行内容。所有文字都会以楷体显示。:::&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/button&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;效果如下：&lt;/p&gt;
&lt;blockquote class=&quot;quote-block&quot;&gt;&lt;p&gt;这是一个块级引用。
可以包含多行内容。
所有文字都会以楷体显示。&lt;/p&gt;&lt;/blockquote&gt;</content:encoded></item><item><title> 🎬 观影日历 </title><link>https://blog.mdreame.space/blog/00-%E8%A7%82%E5%BD%B1%E6%97%A5%E5%8E%86/</link><guid isPermaLink="true">https://blog.mdreame.space/blog/00-%E8%A7%82%E5%BD%B1%E6%97%A5%E5%8E%86/</guid><description>  电影极大程度地扩展了我们的人生。 </description><pubDate>Thu, 26 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://img.mdreame.space/7fb8719a26b24b369b5cf67752e99834-1770520795842.webp&quot; alt=&quot;电影《春天的故事》（1990）截图&quot;&gt;&lt;figcaption&gt;电影《春天的故事》（1990）截图&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;电影极大程度地扩展了我们的人生。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;00-%E8%A7%82%E5%BD%B1%E6%97%A5%E5%8E%86/2026&quot;&gt;2026&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content:encoded></item><item><title> 📚 阅历 </title><link>https://blog.mdreame.space/blog/01-%E9%98%85%E5%8E%86/</link><guid isPermaLink="true">https://blog.mdreame.space/blog/01-%E9%98%85%E5%8E%86/</guid><description> 每有会意，便欣然忘食。 </description><pubDate>Thu, 26 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://img.mdreame.space/20260129232656920.webp&quot; alt=&quot;南京图书馆一角&quot;&gt;&lt;figcaption&gt;南京图书馆一角&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;每有会意，便欣然忘食。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/blog/01-%E9%98%85%E5%8E%86/2026&quot;&gt;2026&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content:encoded></item><item><title> 🎵 红心歌单 </title><link>https://blog.mdreame.space/blog/02-%E7%BA%A2%E5%BF%83%E6%AD%8C%E5%8D%95/</link><guid isPermaLink="true">https://blog.mdreame.space/blog/02-%E7%BA%A2%E5%BF%83%E6%AD%8C%E5%8D%95/</guid><description> “歌“以咏志，乐以忘忧。 </description><pubDate>Thu, 26 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://img.mdreame.space/f383c5a0f5836b24ed9301ebcbf34f26-1774508044268.webp&quot; alt=&quot;2025 年度音乐专辑墙&quot;&gt;&lt;figcaption&gt;2025 年度音乐专辑墙&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;听歌记录。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/blog/02-%E7%BA%A2%E5%BF%83%E6%AD%8C%E5%8D%95/2026&quot;&gt;2026&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content:encoded></item><item><title> 🎮 游戏库 </title><link>https://blog.mdreame.space/blog/03-%E6%B8%B8%E6%88%8F%E5%BA%93/</link><guid isPermaLink="true">https://blog.mdreame.space/blog/03-%E6%B8%B8%E6%88%8F%E5%BA%93/</guid><description>收录玩过的游戏，留下简评。</description><pubDate>Thu, 26 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://img.mdreame.space/7d64c58afcf7c0e179af8218406c298a-1774507313135.webp&quot; alt=&quot;游戏库&quot;&gt;&lt;figcaption&gt;游戏库&lt;/figcaption&gt;&lt;/figure&gt;
game&lt;p&gt;&lt;/p&gt;</content:encoded></item><item><title>2026 春节小记</title><link>https://blog.mdreame.space/blog/2026-02-13-2026-%E6%98%A5%E8%8A%82%E5%B0%8F%E8%AE%B0/</link><guid isPermaLink="true">https://blog.mdreame.space/blog/2026-02-13-2026-%E6%98%A5%E8%8A%82%E5%B0%8F%E8%AE%B0/</guid><description>2026 年前小记</description><pubDate>Fri, 13 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/8cf98638aa4c1b9f7780a5b42a1c2702-1772376730727.webp&quot; alt=&quot;&quot;&gt;
很少回到老家来理发，这次选了一家十元理发店。墙壁上用蓝色颜料写的“十四年老店”也已经褪色了。老旧的桌椅、晾在树上的小鱼干使我嘴角轻提，心里感到一种恬静和谐的意趣。嗯，我是回家了。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/814938f3964835e32bc308badba99860-1772376483226.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;2023 年的时候与表哥表姐和弟弟妹妹们一起去娘娘树沙滩玩了一下。当天非常开心，因为兄弟姐妹很久没有聚的这么齐，尽管只是吹吹风一起散步，我便感到非常满足。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/ef246de0eed82b1cbc841442bb9ee6cc-1772375428391.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;兴头一到，写了一首小诗：&lt;/p&gt;
&lt;p&gt;日融沙暖与携游，轻履阔看玉带洲。 &lt;br&gt;
一线鸢牵无穷碧，西飞雁引水东流。 &lt;br&gt;
人生自是少称意，今日凭风洗旧愁。 &lt;br&gt;
便似万干共流水，宛转分合几碰头？&lt;/p&gt;
&lt;p&gt;当时没有发觉，念来颇有兴尽悲来之感。我想原因是对兄弟姐妹间感情的疏离感到失落，对大家族在爷爷身后的发展有些迷茫，还掺杂了自己对于故乡抽离的心态。看起来轻松释怀，实则多出于一时任性的心情。&lt;/p&gt;
&lt;p&gt;今年只有我和表姐带着两个小一辈的孩子来玩了一下。人比以往更多，显得更喧闹。&lt;/p&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://img.mdreame.space/c5c8e6d46948ad8daeedfb556911ed27-1772377877850.webp&quot; alt=&quot;带侄女入坑星露谷🤭&quot;&gt;&lt;figcaption&gt;带侄女入坑星露谷🤭&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://img.mdreame.space/311642bdbb9b97bd6c5c8d9253155ddf-1772377347563.webp&quot; alt=&quot;四姑家院外的麦田&quot;&gt;&lt;figcaption&gt;四姑家院外的麦田&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded></item><item><title>幻兽帕鲁</title><link>https://blog.mdreame.space/blog/2026-01-05-%E5%B9%BB%E5%85%BD%E5%B8%95%E9%B2%81/</link><guid isPermaLink="true">https://blog.mdreame.space/blog/2026-01-05-%E5%B9%BB%E5%85%BD%E5%B8%95%E9%B2%81/</guid><description>建造、作战和跑图都势必将玩家导向追求经验和数值的重复过程中去。</description><pubDate>Mon, 05 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;去年就半价买了，到最近才玩。最新版本是0.7，截至今日共玩了75个小时，然而实际游戏时间并没有这么长，因为我挂机时间将近两天。最初以为可以和游戏搭子一起合作经营，玩了之后发现玩家之间基本没有什么可以互动的内容。如今一个人已经没有打开这款游戏的欲望了。&lt;/p&gt;
&lt;p&gt;表面看帕鲁的内容很丰富，但是不可亵玩，因为它总会在这里或那里让你有一种滞碍的感觉，有点令人沮丧。帕鲁总的来说有三种玩法，即建造、作战和纯逛。但是三种玩法都和等级挂钩。&lt;/p&gt;
&lt;p&gt;建造玩法需要解锁基本的建筑组件和家具。建筑组件包括基本的地板、墙壁、柱子和屋顶。随着等级的提升会分别解锁木头、石头和玻璃材质的组件。三种组件形状和功能完全相同，只是材质不一样。家具是通过完成一系列的琐碎任务获得科技点来解锁的。在纯建家模式外，帕鲁还囊括了一点种地和放牧的内容。&lt;/p&gt;
&lt;p&gt;作战分为玩家武器、装备的升级和帕鲁属性、技能的的加强。武器从木棒、弓箭、枪械到火箭弹，这都不在话下，关键是帕鲁成长为最佳状态需要捕获或者孵化大量同类帕鲁进行浓缩，这点常容易令人感到乏味。但是游戏中最快升级的办法就是捕获同类帕鲁，前十二只提供大量的经验加成。我觉得这里游戏的平衡没有做好，或者说有点令人匪夷所思。为了尽快升级解锁科技，必然会导致玩家将重心放在捕获帕鲁上而无瑕顾及其他细节，从而使得游戏体验变得非常片面。我觉得这样粗暴的数值设计不合理，这完全是呆板的肝法，结果只会带来死板的玩法。如果不调整世界设置，攒资源和经验将会令人极其心累，调整世界设置又会缩短游戏的寿命。我感到有一种心理上压力，陷入了机械式的活动中。&lt;/p&gt;
&lt;p&gt;这在跑图的过程中也有体现。地图面积实在是太大，相比之下内容非常单薄。首先要找传送雕像并在第一时间激活，途中尽量收集翠叶鼠雕像。其次是找各个教会组织和BOSS的地点，最后有必要留意通缉犯和鉴赏家的位置。为什么说单薄呢，原因在于每次挑战教会组织可以看作一个节点，而后的内容不过是数值和感官上的变动，内容非常单一。打完三次我实在没有兴趣继续下去了，于是开始转向纯逛地图，骑不同的帕鲁坐骑看布景的的玩法，而不是一路升级打怪，实现自动化基地。解锁越多的内容使我感到越来越无聊，反而最简单的逛图，在坐骑跳跃飞翔的时候最能使我感到一丝满足的意味。&lt;/p&gt;
&lt;p&gt;除了这几种，还有一种速通走流程的玩法，就是通过死亡复活在新的刷新点来加速探图，然后捡高级的帕鲁球和帕鲁蛋来获得超越的发展。这在我看来更有经营的感觉，或许帕鲁官方也是保留了这样的一个可能性。&lt;/p&gt;
&lt;p&gt;最后说回来为什么帕鲁本身会让我感到乏味，这其中的关键原因或许就是玩法甚至任务系统都太依赖帕鲁了。以上的每一种玩法都和帕鲁绑定的死死的，不论建造、作战和跑图都势必将玩家导向追求经验和数值的重复过程中去。所谓成也帕鲁，败也帕鲁。如今来看不能说这游戏多好玩，只是初见有点新鲜。&lt;/p&gt;</content:encoded></item><item><title>给远程技术支持打赏</title><link>https://blog.mdreame.space/blog/2025-12-06-%E7%BB%99%E8%BF%9C%E7%A8%8B%E6%8A%80%E6%9C%AF%E6%94%AF%E6%8C%81%E6%89%93%E8%B5%8F/</link><guid isPermaLink="true">https://blog.mdreame.space/blog/2025-12-06-%E7%BB%99%E8%BF%9C%E7%A8%8B%E6%8A%80%E6%9C%AF%E6%94%AF%E6%8C%81%E6%89%93%E8%B5%8F/</guid><description>不像远程的，整天窝在电脑前面对着一个接一个的问题，简直令人奔溃。</description><pubDate>Sat, 06 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;最近买了一个新的域名，提交备案后腾讯云审核人员说原来的域名无法通过 www 访问了。绞尽脑汁想不通问题出在哪，没有耐心耗下去就找了腾讯云的售后支持，不到二十分钟解决了。好笑的是估计我这个问题也把人家整懵了。&lt;/p&gt;
&lt;p&gt;问题有点匪夷所思，主页以 example.com 的形式可以正常访问，但是通过 &lt;a href=&quot;http://www.example.com&quot; rel=&quot;nofollow noreferrer noopener&quot; target=&quot;_blank&quot;&gt;www.example.com&lt;/a&gt; 的形式访问就报 SSL 错误，提醒的是 authority invalid。我第一时间想到可能是证书出了问题，于是去后台检查，发现并没有问题。在网上一搜答案说原因可能很多，得一步步排查。&lt;/p&gt;
&lt;p&gt;还去检查了 ssl 证书的状态，结果又把我绕远了。DeepSeek 甚至建议我给 &lt;a href=&quot;http://www.example.com&quot; rel=&quot;nofollow noreferrer noopener&quot; target=&quot;_blank&quot;&gt;www.example.com&lt;/a&gt; 单独申请一个证书。最后还是聪明的售后想到我可能没有在 1panel 的 wordpress 域名列表中没有添加 www 前缀的主页网址，因为继续访问后显示 404 错误码。一看还真的是，一个小问题浪费了人家好多时间。恰恰周末晚上，我感到有些不好意思，跟他说明情况，给了好评，但还是有些过意不去。&lt;/p&gt;
&lt;p&gt;因为不像要到场的技术支持，即便出差也还能通过满足口腹之欲来消解旅途的奔波和心中疲惫，时间允许甚至可以悠游一番。不像远程的，整天窝在电脑前面对着一个接一个的问题，简直令人奔溃。即便平日里令人奔溃的 Bug 也是偶尔才能出现的，而远程支持这样的工作得需要多少心力才能继续下去，我是不敢想的。所以解决问题之后，我反馈提建议说增加打赏的选项，倒是一时真心。&lt;/p&gt;
&lt;p&gt;回头来看还是自己技术知识一知半解，只接触到一点皮毛。因为之前有几次在 1panel 重装 WordPress 时，没有在网址列表中添加 www 前缀的域名。因为平日只无需访问 www 域名才不记得有这一回事，误以为 www 域名地址和申请 SSL 证书一样是自动添加的。偏偏平时没有出错，到了关键时候一个小问题就卡住了，不知道从哪排查。哎，又菜又爱玩说的就是我了。&lt;/p&gt;</content:encoded></item><item><title>2025年十大流行语</title><link>https://blog.mdreame.space/blog/2025-12-02-2025%E5%B9%B4%E5%8D%81%E5%A4%A7%E6%B5%81%E8%A1%8C%E8%AF%AD/</link><guid isPermaLink="true">https://blog.mdreame.space/blog/2025-12-02-2025%E5%B9%B4%E5%8D%81%E5%A4%A7%E6%B5%81%E8%A1%8C%E8%AF%AD/</guid><description>《咬文嚼字》编辑部发布了2025年度流行语。</description><pubDate>Tue, 02 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/092282227544eb898badb4d4a5fa5d2b-1774438471474.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;《咬文嚼字》编辑部发布了2025年度流行语。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;韧性&lt;/li&gt;
&lt;li&gt;具身智能&lt;/li&gt;
&lt;li&gt;苏超&lt;/li&gt;
&lt;li&gt;赛博对账&lt;/li&gt;
&lt;li&gt;数字游民&lt;/li&gt;
&lt;li&gt;谷子&lt;/li&gt;
&lt;li&gt;预制XX&lt;/li&gt;
&lt;li&gt;活人感&lt;/li&gt;
&lt;li&gt;xx基础，xx不基础&lt;/li&gt;
&lt;li&gt;从从容容、游刃有余，匆匆忙忙、连滚带爬&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;除了“韧性”和“谷子”没有参与感外，其他词汇都是非常熟悉的。不过具身智能这个词似乎不是流行语，而是一种科技趋势。
脑中联想到的是稚晖君做的灵犀机器人，因为在情感偏向上我似乎更理所当然的认为宇树为代表的机器人是听指令的角色。&lt;/p&gt;
&lt;p&gt;数字游民这个词每隔几年就会小小地火一次，不过这两年感觉更频繁了？&lt;/p&gt;
&lt;p&gt;最令我意外的是“谷子”这个词。其本意是“goods”的音译，指的是二次元的周边产品，并且重点在二次元上，受众多数为年轻女性。
同样的词汇还有“吧唧”，英文badge，指的是徽章。想想也是自己“老了”，毕竟说到类似“谷子店”这样的业态印象还停留在无印良品这种传统周边店上，而徽章第一时间浮现的却是冰箱贴。&lt;/p&gt;
&lt;p&gt;又查了一下《咬文嚼字》选择流行语的标准，一是要反应政经要事，体现政策和经济上的导向；一是要体现人文价值，
反映人们的情感的诉求。再看往年的十大流行语，两个标准基本上两三个“官方词汇”，剩下的是“民间词汇”。&lt;/p&gt;</content:encoded></item><item><title>Bose QC Ultra 2 使用感受</title><link>https://blog.mdreame.space/blog/2025-12-01-bose-qc-ultra-2-%E4%BD%BF%E7%94%A8%E6%84%9F%E5%8F%97/</link><guid isPermaLink="true">https://blog.mdreame.space/blog/2025-12-01-bose-qc-ultra-2-%E4%BD%BF%E7%94%A8%E6%84%9F%E5%8F%97/</guid><description> 极致降噪，佩戴舒适，音质出色，适合追求安静空间的用户。</description><pubDate>Mon, 01 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://img.mdreame.space/20260122181412828.webp&quot; alt=&quot;Bose QC Ultra 2 包装盒与耳机包&quot;&gt;&lt;figcaption&gt;Bose QC Ultra 2 包装盒与耳机包&lt;/figcaption&gt;&lt;/figure&gt;
我之前只用过一个头戴耳机，即索尼的WH-H910N。买的第一年使用次数比较多，然而好景不长，耳罩的皮开始一点点剥落，有时会沾到衣服或脖颈上，很难看。加上夏天到了，戴起来闷耳朵，容易出汗，所以不怎么用了。再次拿起来时重新配了个耳罩，但是好像消噪效果损失了很多，加上重量沉，于是搁置了，换上了 AirPods 4 。如今有了久坐的时间就再次尝试头戴式消噪了。&lt;p&gt;&lt;/p&gt;
&lt;p&gt;这次选的是 Boss QC Ultra 2。在网上看测评这款与 AirPods Max 相比重量轻，戴起来不累。与索尼 WH- 1000XM4 相比更透气，不压耳。另外 Bose 的消噪效果似乎在这三者中是最好的，我很在意这点，因为周边晚上会有施工，噪音有些恼人。&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://img.mdreame.space/20260130111551792.webp&quot; alt=&quot;打开耳机听的第一首歌是刘文正的《绿色大地》。&quot;&gt;&lt;figcaption&gt;打开耳机听的第一首歌是刘文正的《绿色大地》。&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;体验了一天下来，让我惊喜的地方是消噪效果超出了我的预期。楼上咚咚的脚步声和工地当当的钻地声都听不见了，完全可以沉静在自己的世界里。其次是音质也比想象的好。测评中音质 AirPods Max 似乎是独一档的，尤其是人声的部分很自然。听完 Bose 发现并没有那么夸张，完全可以满足我的需求。&lt;/p&gt;
&lt;p&gt;不过也有一些瑕疵的地方。首先就是多设备切换不智能。比如从手机切换电脑时，按电脑媒体的播放键无法切换过去，必须先将手机的音频都暂停然后才可以换到电脑。若是按耳机的播放键时，电脑上所有暂停的媒体都会开始播放，这影响倒不是很大，可以习惯一下。另外耳机戴久了还是会有点热，但比索尼好多了，也没有要适应耳压的情况。&lt;/p&gt;
&lt;p&gt;总之，不到两千五的价格到手，满足了对安静空间的需要，我很满意。&lt;/p&gt;</content:encoded></item><item><title>赣南脐橙买中果</title><link>https://blog.mdreame.space/blog/2025-11-30-%E8%B5%A3%E5%8D%97%E8%84%90%E6%A9%99%E4%B9%B0%E4%B8%AD%E6%9E%9C/</link><guid isPermaLink="true">https://blog.mdreame.space/blog/2025-11-30-%E8%B5%A3%E5%8D%97%E8%84%90%E6%A9%99%E4%B9%B0%E4%B8%AD%E6%9E%9C/</guid><description>中果水分最多，口感最好，甜味足。</description><pubDate>Sun, 30 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;赣南脐橙正直上市的时候，我在京东上买了两箱给家里寄了过去。选择的是 230 克以上的大果，原以为这是品质最好的，结果看到在抖音上看到有人评论说中果最好，果皮最薄、果肉嫩汁水多，一时后悔。&lt;/p&gt;
&lt;p&gt;又觉得这些商家的套路是真的多。我在评论中找到去年的评论说钻石级脐橙的品质比铂金的要好。
然而却没法查到铂金和钻石的标准是什么，似乎每年衡量脐橙品质的标准说辞都不一样。
今年的是以克数来分级的。180-230 似乎是最佳品质，而 230 克以上的是特级果。
除了克数还有通过脐橙直径来分级的：70-80 是中果，80毫米以上的就是大果。不过这个标准应该不是固定死的，
每年脐橙的生长情况都可能不同，而且不同区域、品种的脐橙直径都可能有差异。&lt;/p&gt;
&lt;p&gt;果农介绍说 70-80 毫米左右的中果品质最佳。挑选的时候要注意颜色橙红、果皮粗糙、果脐越小的品质就越好。而大果往往是生长在树顶的，接受了阳光长时间的直射，果皮变厚，含水量和口感都不如中果。这次算是涨了个经验。&lt;/p&gt;
&lt;p&gt;看京东快递本来是今天送上门的，结果妈妈上午没有接快递员的电话。到了下午三点钟，我看到快递动态提示就发语音告诉她。到了五点半的时候，她才回消息过来，说去给菜地浇水。很久没有下雨，菜长得不好，有些人家地里的菜籽都发红。我原以为天气很冷，冬天不能浇水的，还好气温回升了一点。前阵子天气变冷，好些人感冒挂吊水，现在暖了情况好很多。&lt;/p&gt;
&lt;p&gt;我发现自己对家人没有及时回复消息这件事反应越来越大了。以前总是发完消息，就去忙自己的事情。现在却没法静下心来，总是有些担忧、有些烦躁。不能说我现在有了情感上的需要，而是在奶奶爷爷去世之后无法接受更多的变化了。&lt;/p&gt;</content:encoded></item><item><title> 我的数码生命线 </title><link>https://blog.mdreame.space/blog/2025-11-29-%E6%88%91%E7%9A%84%E6%95%B0%E7%A0%81%E7%94%9F%E5%91%BD%E7%BA%BF/</link><guid isPermaLink="true">https://blog.mdreame.space/blog/2025-11-29-%E6%88%91%E7%9A%84%E6%95%B0%E7%A0%81%E7%94%9F%E5%91%BD%E7%BA%BF/</guid><description> 记录陪伴我的物件。 </description><pubDate>Sat, 29 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;电脑&quot;&gt;电脑&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;del&gt;ASUS Y581L&lt;/del&gt;：印象最深是两秒开机&lt;/li&gt;
&lt;li&gt;&lt;del&gt;Matebook 13 (2021) i5 16+512G&lt;/del&gt;A&lt;/li&gt;
&lt;li&gt;&lt;del&gt;Macbook mini (2023) M2 8+256G&lt;/del&gt;A&lt;/li&gt;
&lt;li&gt;&lt;del&gt;Macbook Pro 13” (2020) i7 32+512G&lt;/del&gt;A&lt;/li&gt;
&lt;li&gt;&lt;del&gt;ASUS 天选6 Pro i7 RTX5060&lt;/del&gt;：噪音太太太大了&lt;/li&gt;
&lt;li&gt;Macbook Air M4 13” 16+256G&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;手机&quot;&gt;手机&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;del&gt;诺基亚/折叠&lt;/del&gt;：诺基亚和一部白色的折叠机陪我度过 QQ 时代&lt;/li&gt;
&lt;li&gt;&lt;del&gt;华为&lt;/del&gt;：第一部触屏机，微信开始流行&lt;/li&gt;
&lt;li&gt;&lt;del&gt;魅族&lt;/del&gt;：FlymeOS 超级丝滑&lt;/li&gt;
&lt;li&gt;&lt;del&gt;vivo&lt;/del&gt;：稳定小巧，一手掌握&lt;/li&gt;
&lt;li&gt;&lt;del&gt;iPhone6s&lt;/del&gt;：升级体验钉子户&lt;/li&gt;
&lt;li&gt;&lt;del&gt;锤子坚果 Pro&lt;/del&gt;：打开新世界&lt;/li&gt;
&lt;li&gt;&lt;del&gt;努比亚 Z17&lt;/del&gt;：平平无奇&lt;/li&gt;
&lt;li&gt;&lt;del&gt;iPhone 11&lt;/del&gt;：不如 6s&lt;/li&gt;
&lt;li&gt;&lt;del&gt;iPhone 14&lt;/del&gt;：有点带不动臃肿 app 了&lt;/li&gt;
&lt;li&gt;&lt;del&gt;荣耀 X50&lt;/del&gt;：屏幕舒服待机长&lt;/li&gt;
&lt;li&gt;&lt;del&gt;荣耀 Magic6&lt;/del&gt;：YOYO 很惊艳&lt;/li&gt;
&lt;li&gt;&lt;del&gt;iPhone 16&lt;/del&gt;：习惯了&lt;/li&gt;
&lt;li&gt;&lt;del&gt;荣耀 X70&lt;/del&gt;：备用机依然好用&lt;/li&gt;
&lt;li&gt;荣耀 Magic 7 Pro：四曲面屏，挺漂亮&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;耳机&quot;&gt;耳机&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;del&gt;Sony WH-H910N&lt;/del&gt;：马马虎虎&lt;/li&gt;
&lt;li&gt;荣耀亲选 TiinLab 开放式耳机：挂耳式，怎么甩都不会掉&lt;/li&gt;
&lt;li&gt;AirPods 4：临时和应急使用&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2025-12-01-bose-qc-ultra-2-%E4%BD%BF%E7%94%A8%E6%84%9F%E5%8F%97&quot;&gt;Bose QC Ultra 2&lt;/a&gt;：睡前必戴&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;其他&quot;&gt;其他&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Pico 4 Ultra：VR初体验，比较满意，可惜资源不是很多&lt;/li&gt;
&lt;li&gt;&lt;del&gt;iPad mini7&lt;/del&gt;：轻巧多了，使用频率大增&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2026-05-14-kindle-2024&quot;&gt;kindle 2024&lt;/a&gt;: 口袋书&lt;/li&gt;
&lt;li&gt;荣耀手表 5 Pro：有点重，不过 YOYO 是好用的。&lt;/li&gt;
&lt;/ol&gt;</content:encoded></item><item><title> 要男人做什么 </title><link>https://blog.mdreame.space/blog/2025-11-28-%E8%A6%81%E7%94%B7%E4%BA%BA%E5%81%9A%E4%BB%80%E4%B9%88/</link><guid isPermaLink="true">https://blog.mdreame.space/blog/2025-11-28-%E8%A6%81%E7%94%B7%E4%BA%BA%E5%81%9A%E4%BB%80%E4%B9%88/</guid><description> 这是一种主体性缺失的表现。 </description><pubDate>Fri, 28 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;最近又刷到了知乎，突然起意要回答问题，当做思维训练了。“女性经济独立、思想独立，那要男人来干什么？”这是知乎上的一个热门问题，有近五千个回答。看到这个问题的第一眼，脑子就变得混乱起来，肯定是哪里不对劲。&lt;/p&gt;
&lt;p&gt;先补充问题的描述：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;女性可以自己工作，自己养活自己，自己买房自己买车，自己带娃，完全活成了钢铁战士。那还要男人来干什么呢？亲爱的们，请你们来帮我想想。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这个提问令人费解的首先是两个主体不对称。一是女性，一个是男人。正常来说从生理特征有男人女人的称呼，而男性女性则涉及到社会地位和身份，其背后包含的是一种群体认同。一般而言，有男性女性出现的语境是与责任、利益等群体的权利与义务挂钩的。现在看这个问题的描述，提主认为女人可以做到一系列事情，这证明了女性这个群体的能力，所以用了女性这个词。这本身没有问题，但是后面做对比的词不是男性，而是男人。&lt;/p&gt;
&lt;p&gt;这里可以这样理解。一是提主的意图就是要通过这种对比贬低男性的身份，二是无意识中使用了这个具有文化隐喻的词。在传统的话语体系中，通常是用“男子汉”来暗示男人要有担当责任的意识，而没有符合这一期望就会被贬低为“算什么男人”，“不像个男人”。所以在这里用男人或许恰恰符合提主的意图。&lt;/p&gt;
&lt;p&gt;再回过头来看一下这两句话的内容。女性经济独立、思想独立，活成钢铁战士，在这种质疑的语气中与男性对比也是不成立的，因为男性同样可以做到经济独立、思想独立，在社会期待的压力下也会活成钢铁战士。这个问题就诡谲在用“男人”而非男性这个词，同时又恰恰巧妙在这。因为题主的心态是&lt;strong&gt;拒绝承认男性与女性有同样的能力，却又矛盾地希望男性担负起付出更多的角色&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这样混乱的思维不能说是期望获得理性的解答或建议，倒是在宣泄情绪。用一个怨字来概括这种行为就很好理解了。心里有更大的图景，眼下又看不到与你携手共进的希望，所以怨你。心态从看不上你所以忽视你，到觉得优越于你所以不再顾忌你。现在回想起来，前女友说的话与这无二异。&lt;/p&gt;
&lt;p&gt;俗话说好花不常开，好景不常在。事业有起有伏，健康时好时坏，在漫长的人生中一时的激情愤懑会慢慢归于平静。不同的状态，不同的阶段，人的想法都可能会发生改变。从恋爱到婚姻，要想走到最后，需要两个人都脱离出外界对自己施加的压力，彼此看见对方的需要。在己不困于情，对人不愧于心。&lt;/p&gt;</content:encoded></item><item><title> 父子关系的症结 </title><link>https://blog.mdreame.space/blog/2025-11-22-%E7%88%B6%E5%AD%90%E5%85%B3%E7%B3%BB%E7%9A%84%E7%97%87%E7%BB%93/</link><guid isPermaLink="true">https://blog.mdreame.space/blog/2025-11-22-%E7%88%B6%E5%AD%90%E5%85%B3%E7%B3%BB%E7%9A%84%E7%97%87%E7%BB%93/</guid><description> 用爱的表达来温暖责任和义务的沉重无声。 </description><pubDate>Sat, 22 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;在抖音上刷到一个视频，很有感触。内容讲的是一位老父亲感觉自己与博士儿子的情感越来越疏远，但是儿子却不以为意，由此展开了争论。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://music.163.com/#/song?id=109091&quot; rel=&quot;nofollow noreferrer noopener&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://img.mdreame.space/20260130122306099.webp&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;父亲认为父子关系疏远的理由从话语间透露出来的具体有三点。一件比较重要事情的是父亲有几十亩田地因年纪大了不种，希望通过儿子的自媒体平台转租出去，儿子拒绝。这件事情可能是视频中争论开启的“导火索”。&lt;/p&gt;
&lt;p&gt;父亲觉得儿子完全有能力帮助自己转租田地，但不理解为什么他不愿意。他说到这是家庭成员之间的义务，是儿子应该做的。儿子虽然解释了很多，但其实言不由衷，到底还是情绪上抵触去做这件事情。其次是父亲对于儿子一家回乡时选择在酒店住宿而不是老家有些介怀。他表达了自己的怀疑，是不是儿子嫌弃家庭条件差了。儿子说只是考虑到实际的需要这样做。最后父亲提到父子间的谈话越来越少，似乎没有家人间的感情。儿子说这是纯粹是主观的感受。&lt;/p&gt;
&lt;p&gt;博士儿子其实看的很明白，说得也很直白，父亲是老了，能力变弱，开始对儿子渐渐有了需要。但是儿子求学工作常年在外，习惯了一个人处理自己的事情，在生活和情感上与父母可以说是“不熟”。他与父母相处的模式并没有发生什么变化，只是将自己的精力和情感投入了自己的小家庭。&lt;/p&gt;
&lt;p&gt;他觉得自己博士不厉害，可能没有从父亲那里得到过正面的肯定。因为他提及了妈妈为他自豪，还特意指出不清楚父亲是否也为他感到高兴。另一个原因是为了自己的家庭，客观上没有能陪在父母身边，从而忽略了他们的需要。&lt;/p&gt;
&lt;p&gt;我认为父亲心理上面临几个矛盾地方。一是有没有意识到自己老了。这意味着自己做不到很多事情了，意味着在家庭中不再是主体角色，需要做出让步，放下姿态来平等沟通。他表示为了避免儿子不高兴，感觉自己说话可能都得小心翼翼。说话做事都需要考虑到儿子，这表明家庭中主体角色在悄然转移。只是我察觉到他言语间有几分难以置信的意思，似乎不肯承认这个事实。因此他说自己如果有足够的时间，是可以学会怎么使用互联网来发布消息，而不用向儿子求助。&lt;/p&gt;
&lt;p&gt;二是需要儿子的认可。儿子可以在平台上帮助别人却不愿意帮我，这是为什么？他回家宁愿住酒店是不是嫌弃我家条件差了？父亲重复说着对儿子与自己迥异想法的不理解，自己为人处事的方式怎么儿子就不承认呢？这里或许儿子没有采取合适的方式帮助父亲，但从情感上来说，父亲的主观意愿太强烈，以致于儿子在压力下产生了抵触的心理。而这样的互动的结果一定是一遍遍重复过的，所以儿子说不愿意像他父亲一样过同样的人生，不愿意将自己的开心快乐的感受建立在别人（乃至自己亲人）的看法上，或许指的就是这些事情。&lt;/p&gt;
&lt;p&gt;他要将自己与父亲这一代这种观念上的差异挡在身前，不让自己的孩子受其影响。从小孩想要化解爷爷与爸爸间紧张的局面就可以看出来，他是十分聪明伶俐的。而且他与自己的博士老爸有着良好的沟通氛围，说明自己博士爸爸清楚地意识到自己应该如何处理自己与孩子的关系。至于过去的他表示已经无能为力了。&lt;/p&gt;
&lt;p&gt;因为在父母身边缺少陪伴，也不能及时满足他们的需要，所以他感到愧疚。他或许是因此才贬低自己的博士身份。我注意到他提到母亲会为自己有个博士儿子感到骄傲，又特意指出自己不清楚父亲是否也会为他感到骄傲。我有点理解博士爸爸的心情，可能他只是需要认可，而父亲吝于表达认可。他认为自己培养了一个博士儿子，所以为他做点力所能及的事情是理所当然的。而这恰恰是芥蒂所在。&lt;/p&gt;
&lt;p&gt;这种理所当然的想法会忽略掉儿子的情绪，甚至否定掉他所付出的的努力。这是博士爸爸认为不能接受的，积怨已久所以他表示自己可能不会孝、顺、敬，甚至不确定自己（在他父亲观念的标准下）有没有尽孝。&lt;/p&gt;
&lt;p&gt;最后视频的结尾父亲想要与儿子争论一下，一个人应该为自己活，还是要”为别人而活”。儿子连忙说不不不，显然知道这只会没有结果。弹幕有人说儿子只是一心想与父亲划清界限，这其实并没有说错，儿子选择不接受过去那种标准是希望自己、孩子，甚至于父亲未来能以更从容的心态去生活。至于父亲是否会改变，这对博士儿子来说已经不重要了。只能说这里有时代的缩影，集体主义与现代个人主义在生活方式和思想观念上产生了碰撞。两代人在各自数十年的生活里已经建立起了不同的经验，这种思想上的烙印深深地影响着他们的言行，左右着彼此间的冲突。&lt;/p&gt;
&lt;p&gt;评论大多数人都在数落博士儿子，我其实觉得他并没有多大的问题。他未必没有在别的方式上照顾自己父亲，也未必不能理解他。只是中国传统的问询式的交流使他不能再忍受了，他需要的是平等的沟通交流，而父亲似乎无法接受自己与儿子这种关系的微妙改变。&lt;/p&gt;
&lt;p&gt;情感绑架式的说理，这是中国式亲子关系的症结所在。好比父亲，明明自己有情感上的需要，却依然摆出姿态，不肯说一句软话。儿子即便意识到了，面对这种生硬的沟通的氛围，如应激反应一般强烈地抵触，最终只是无果。知易行难，就是这样吧。&lt;/p&gt;
&lt;p&gt;在物质匮乏的年代，家庭教育的缺失留下了伤痛。好消息是如今人们日益意识到家庭教育的重要性，会在其中投入更多精力，相信未来会形成共识。&lt;/p&gt;</content:encoded></item><item><title> 隐私问题 </title><link>https://blog.mdreame.space/blog/2025-11-18-%E9%9A%90%E7%A7%81%E9%97%AE%E9%A2%98/</link><guid isPermaLink="true">https://blog.mdreame.space/blog/2025-11-18-%E9%9A%90%E7%A7%81%E9%97%AE%E9%A2%98/</guid><description> 个人隐私不由个人所控。 </description><pubDate>Tue, 18 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;在&lt;a href=&quot;/blog/2025-11-17-%E5%8D%96%E8%BD%A6%E7%9A%84%E5%B0%8F%E6%95%85%E4%BA%8B&quot;&gt;卖车&lt;/a&gt;几天后，不断地接到电话问询我是否需要卖车。令人纳闷的是，我只在某瓜和某帝保留过手机号码，而来电的除了一些车商竟还有58某城。我不胜其烦，请他们将我在他们的系统名单里备注一下已经没有卖车需求了，或者直接恳请他们将我拉黑。&lt;/p&gt;
&lt;p&gt;这件事情让我感到被冒犯了。平台对用户的信息不负任何保密和维护的责任，对他们来说反而是一种有交换价值可以用于牟利的资源。&lt;/p&gt;
&lt;p&gt;除了骚扰电话外，还有穿插在各类应用之间的广告，可以说是对用户的精神造成了最严重的污染。&lt;/p&gt;
&lt;p&gt;论广告毒瘤的存在，臭名昭著的百度是“当仁不让”的。时至今日，搜索结果的主页依然是竞价广告，没有任何改观。想到李彦宏所说国人愿意用隐私来换取便利，简直令人作呕，称其为李不群也不为过。一个如此庞大的企业，不愿承担起该有的责任，在隐私保护上做任何的努力，反而倒果为因，心安理得地搞信息垄断来牟利，遮遮掩掩，丑陋油腻至极。&lt;/p&gt;
&lt;p&gt;如今 AI 风头正劲，用户好像更愿意自主地交出自己的数据。以 flomo 为例，本来是一个轻量的笔记应用，现在接入了 AI 洞察功能后，化身成了一个见微知著的专家，洞悉人心的长者，说实话效果令人感到有些惊艳。有些方面是自己原来没有料想过的，确实可以给人启发。在我想将更多数据导入里面之前，我找到了他们的隐私政策，里面写的是：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;根据相关法律法规规定，以下情形中收集您的个人信息无需征得您的授权同意：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;与国家安全、国防安全有关的；&lt;/li&gt;
&lt;li&gt;与公共安全、公共卫生、重大公共利益有关的；&lt;/li&gt;
&lt;li&gt;与犯罪侦查、起诉、审判和判决执行等有关的；&lt;/li&gt;
&lt;li&gt;出于维护个人信息主体或其他个人的生命、财产等重大合法权益但又很难得到您本人同意的；&lt;/li&gt;
&lt;li&gt;所收集的个人信息是您自行向社会公众公开的；&lt;/li&gt;
&lt;li&gt;从合法公开披露的信息中收集个人信息的，如合法的新闻报道、政府信息公开等渠道；&lt;/li&gt;
&lt;li&gt;根据您的要求签订合同所必需的；&lt;/li&gt;
&lt;li&gt;用于维护 flomo 服务的安全稳定运行所必需的，例如发现、处置产品或服务的故障；&lt;/li&gt;
&lt;li&gt;为合法的新闻报道所必需的；&lt;/li&gt;
&lt;li&gt;法律法规规定的其他情形。&lt;/li&gt;
&lt;li&gt;您理解并同意，flomo 服务可能需要您在您的设备中开启特定的访问权限（例如您的位置信息 、摄像头、相册、麦克风、通讯录及/或日历），以实现这些权限所涉及个人信息的收集和使用。当您需要关闭该功能时，大多数移动设备都会支持您的这项需求，具体方法请参考或联系您移动设备的服务商或生产商。请您注意，您开启任一权限即代表您授权我们可以收集和使用相关个人信息来为您提供对应服务，您一旦关闭任一权限即代表您取消了授权，我们将不再基于对应权限继续收集和使用相关个人信息，也无法为您提供该权限所对应的服务。但是，您关闭权限的决定不会影响此前基于您的授权所进行的个人信息收集及使用。&lt;/li&gt;
&lt;li&gt;有关敏感个人信息的提示。&lt;/li&gt;
&lt;li&gt;以上由您提供或我们收集您的个人信息中，可能包含您的个人敏感信息，例如银行账号、交易和消费记录、虚拟财产信息、系统账号、邮箱地址及其有关的密码、电话号码、网页浏览记录、位置信息。请您谨慎并留意个人敏感信息，您同意您的个人敏感信息我们可以按本《隐私政策》所述的目的和方式来处理。&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;p&gt;我不清楚官方在什么情况下会获取用户的数据，也不知道这家公司和创始人是否值得信任。君子不立危墙之下，我不希望有朝一日牵涉到身份、性格、财物等等方面的信息为人所用，所以不愿意冒个人隐私泄露的风险。于是综合考虑又转成了端到端加密、支持离线的本地笔记。&lt;/p&gt;
&lt;p&gt;这不得不提及我国在隐私保护方面的措施做的实在不到位。比如用户注册一个新的账号，我不明白为何只能选择手机号而没有邮箱作为第二选项。仿佛看到大小企业借着实名的旗子大肆攫取用户的隐私，我感到被冒犯了。有种无力感，是我丧失了什么？是被剥夺的权利。&lt;/p&gt;
&lt;p&gt;在当下这样一个文化背景下，个人在面对公司企业所掌握的技术壁垒，我感到谈隐私显得十分的苍白。更甚者，当一个快递员在电话中说起你上周买过什么，可以准确地道出你家地址时，我内心充满惶恐。&lt;/p&gt;
&lt;p&gt;我所能做的只有两点，一是将这些广告和骚扰屏蔽，二是守卫好自己的数字资产。我用的是 iPhone，可以设置陌生号码拒接，效果不错。网上冲浪买了 Adguard 终身，加上 Safari 本身的隐私保护，基本上没有广告。如果不小心点到了隐藏的弹窗也可以被很好地拦截。&lt;/p&gt;
&lt;p&gt;至于自己日常的照片视频等数据都存在 iCloud 中，开启了高级加密。其余需要多平台同步的笔记和文件也放在了对象存储和个人网盘中，也开启了加密。&lt;/p&gt;
&lt;p&gt;经常在评论区看到一种观点，说一个名不见经传的人物，要他的数据有多大价值。这个观点可以很好地将混沌的野蛮和有秩序的文明区别开来。混淆个人与集体的边界的人，有一天他或许会做出伤害别人利益的事，而他自己也可能深受其害而不自知。&lt;/p&gt;</content:encoded></item><item><title> 卖车的小故事 </title><link>https://blog.mdreame.space/blog/2025-11-17-%E5%8D%96%E8%BD%A6%E7%9A%84%E5%B0%8F%E6%95%85%E4%BA%8B/</link><guid isPermaLink="true">https://blog.mdreame.space/blog/2025-11-17-%E5%8D%96%E8%BD%A6%E7%9A%84%E5%B0%8F%E6%95%85%E4%BA%8B/</guid><description> 二手车市场的水真的很深。 </description><pubDate>Mon, 17 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;决定把车卖掉，于是在网上查找渠道，发现大概有三种方式。一是直接卖给个人，好处是可以自己谈价，麻烦的在于要自己处理过户的一些手续；二是卖给二手车商，好处是车商可以直接将车收购到其名下，当场打款，不过价格会比直接卖给个人低一点。车商会负责后续过户的手续，不过周期可能长，在一个月以内，可能会出现意外的情况。三是卖给平台，好处与售给车商一样省时省力，当场打款且几天内便可过户。相比前两者，出售给平台最稳妥，不过价格可能是三者中最低的。&lt;/p&gt;
&lt;p&gt;出售给个人也得从平台上曝光，一般问询的二手车商居多，个人几乎不会考虑直接交易。于是我直接挂到相对较大的两个平台：某瓜和某帝。&lt;/p&gt;
&lt;p&gt;某瓜的模式是有两种，一是直拍模式，二是竞拍模式。流程是在将车辆提交估价申请后，某瓜派出工作人员现场检验，得出报告后上传到平台，系统评估出一个价格。这个价格一般就是直拍价格，卖家直接与买家、二手车商对接，成交周期可能需要半个月。竞拍模式是将估价压低，由全国的车商竞价，二十四小时后出竞拍结果。一般竞价期间前期压价很很凶，快结束的时候才会出真正合理一点的车商估价，不过这个价格距离预期可能有点远。&lt;/p&gt;
&lt;p&gt;某帝相对简单一点，今年开始成立了自己的收车平台，对比下来在某帝的系统估价是最高的。在现场验车过程中发现某帝验车人员相比某瓜要专业不少，检验的项目多而且标准高。一个小时验车，没有问题就可以当场打95%的款项，其余5%待过户流程走完后打出。在对比和与验车人员现场聊天了解到的情况来看，某帝更让人安心一点。所以最后走了某帝成交。&lt;/p&gt;
&lt;p&gt;这里要提一个插曲。在我将车辆信息挂到平台上后，不断地有车商问询，于是我将每个有意向验车的车商在时间上分开了。其中一个车商在下午来看的，给的价格比某瓜好的多，而且该工作人员也是蛮爽快，对我的车志在必得的样子，说不想再跑一趟了。不过我觉得某帝可能更理想，所以打算对比看看。原定晚上某帝来验车，结果来的时间提前了，两个人就碰在一起了。&lt;/p&gt;
&lt;p&gt;在一个小时后，某帝给出了一个价格，我要了一个比在场的那位车商更高的价格。然后某帝内部打电话过来与我商量，双方做了让步后的价格蛮符合我的预期，于是我示意某帝验车人员可以现场走流程了。但是车商问了我价格后，说可以加一点。这是我没有料想到的。于是场面一直争执不下，车价往上抬了很多，最后我和某帝人员都劝车商不要再加价了。他的状态明显是上头了，即便他收了车去不说亏本，肯定是赚不了钱的。&lt;/p&gt;
&lt;p&gt;按照原来的想法，在几家分别给价格后，从中挑一个最高的成交。现在意外出现了抬价的行为，我是不会处理这种情况的。争执中车商隐约意思是我要给他出点油费，不然他就白跑一趟了。若我与他成交，某帝工作人员不也是白跑一趟么，我很反感这样的道德绑架。某帝人员也指出了这点，两人相看言语越来越激烈，我怕场面升级，于是转了几百块钱给车商做油费。有点郁闷，明明我占了理还要出钱。不过车价到是比预期抬了很多，这也不能不说没有车商的功劳。&lt;/p&gt;
&lt;p&gt;现在看车价涨了当时到没有感到有多大的欢喜，而是想着尽快息事宁人。总之就这样稀里糊涂地捡了个便宜，蛮特别的。&lt;/p&gt;</content:encoded></item><item><title> App Defaults</title><link>https://blog.mdreame.space/blog/2025-11-10-app-defaults/</link><guid isPermaLink="true">https://blog.mdreame.space/blog/2025-11-10-app-defaults/</guid><description>常用应用和服务。 </description><pubDate>Mon, 10 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/900b2688cb00f57fe7b76adfaf8dcc82-1774487026772.webp&quot; alt=&quot;&quot;&gt;
Now I know it will be better to write this down annually rather than a dead post.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;2025-11-10-app-defaults/2025&quot;&gt;2025&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content:encoded></item><item><title> 记忆、联想和创造力 </title><link>https://blog.mdreame.space/blog/2024-08-02-%E8%AE%B0%E5%BF%86%E8%81%94%E6%83%B3%E5%92%8C%E5%88%9B%E9%80%A0%E5%8A%9B/</link><guid isPermaLink="true">https://blog.mdreame.space/blog/2024-08-02-%E8%AE%B0%E5%BF%86%E8%81%94%E6%83%B3%E5%92%8C%E5%88%9B%E9%80%A0%E5%8A%9B/</guid><description> 记忆的关键在于建立连接。 </description><pubDate>Fri, 02 Aug 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;所谓记忆，就是&lt;strong&gt;对陌生的东西用熟悉的事物进行编码重组&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;感觉自己记忆力有下降的趋势，于是在微信读书找了本《&lt;a href=&quot;https://book.douban.com/subject/6710983/&quot; rel=&quot;nofollow noreferrer noopener&quot; target=&quot;_blank&quot;&gt;我最想要的记忆魔法书&lt;/a&gt;》开始读。其中提到一个观点印象很深刻：提高记忆的关键在于想象和创意。简单说就是将所需记忆的东西尽可能地与其他事物通过图像联系成一个故事。&lt;/p&gt;
&lt;p&gt;在练习记忆的过程中，作者给自己定的一个小目标是记住一副扑克牌的顺序。他将每一个数字，花色都联系到他熟悉的人，事物和地点，然后编造出一个整体性的故事，最终完成这个小目标。&lt;/p&gt;
&lt;p&gt;在这个逐渐走向成功的过程中，他意识到通过&lt;strong&gt;对信息进行图像化编码&lt;/strong&gt;有助于记忆，而且想象越多，创意也会随着越来越多，记忆的过程也越轻松。原因可能是这种练习不仅提高了创意的能力，还激发了逻辑能力和空间感知能力。&lt;/p&gt;
&lt;p&gt;既然记忆与联想有关，那如何将两个无关的事物快速地联系在一起呢？比如怎么将猴子和计算机联系起来？我会想到猴子是齐天大圣的毫毛化身而来，而使我想到孙悟空的可能是被他大闹天宫时那份桀骜不屈和慷慨激昂的形象撼动所带来的感染力。而最近走红的 3A 游戏《黑神话：悟空》主角有关悟空的故事，画面非常精美。若想获得较好的游戏体验，那计算机的配置一定得好一点。&lt;/p&gt;
&lt;p&gt;所以快速联想有两个要素：一是情绪，一个是感受。如快乐、恐惧这种极端的情绪，会给人留下深刻的记忆，而且是下意识的。感受则是通过五官感知到环境的细节对自己产生的影响。相比之下，情绪在记忆提取时的优先级更高，且通常会主导感受。&lt;/p&gt;
&lt;p&gt;情绪和感受会影响记忆的强度。在对信息进行编码存储记忆的时候，是从旧的知识和经验中提取相关的部分，将当前所记的信息整合进去。如果情绪越强，感受越深，则新旧信息联系越紧密。而旧的知识和经验又与在其之前的相关。&lt;/p&gt;
&lt;p&gt;在接触具体的信息时，要从各方面建立细致的联想或者引起情绪上的共鸣，这在日后能帮助快速提取这类信息。&lt;/p&gt;
&lt;p&gt;那么联想是不是越多越好呢？想起见过培训机构教小孩英语单词尝尝会使用各种联想，比如 business说成公共汽车里，有一只鹅和两条蛇在做交易。然后认同词根词缀派为大道正统的人不免对此嗤之以鼻，说这是误人子弟。我觉得大可以宽容一些对待，不能以大人的标准去要求小孩，那未免太无趣。如果说这样联想记忆法是增加了不必要的负担，也好像说不通。人脑无时无刻不在接收信息，其中有用的又能有多少？况且等孩子真正运用英语阅读写作，他肯不会带着鹅和蛇上场的。所以我不反对这种联想记忆法，就全当练脑子了呗。&lt;/p&gt;
&lt;p&gt;此外作者建议联想要尽可能使用第一人称，用自己的视角来叙述故事，加深印象。而且故事要有逻辑，不能天花乱坠，一点不合理，那么联想的信息相去甚远，回溯起来难度很高。&lt;/p&gt;
&lt;p&gt;记忆的强度和提取的速度是相辅相成的。我们还可以通过缩短信息之间的链路来使记忆变得更高效。从九九乘法表到查理芒格所说的思维模型，都是通过归纳复用缩短了信息的关联的距离，减小了信息的使用成本。就好比编程中封装的函数，可以多次复用。组合概念，这不仅是高效记忆的窍门，更是通往哲学的幽径。&lt;/p&gt;
&lt;p&gt;附上一段&lt;a href=&quot;https://www.britannica.com/biography/John-Locke&quot; rel=&quot;nofollow noreferrer noopener&quot; target=&quot;_blank&quot;&gt;约翰·洛克&lt;/a&gt;经典的话。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The acts of the mind, wherein it exerts its power over simple ideas, are chiefly these three: 1. Combining several simple ideas into one compound one, and thus all complex ideas are made. 2. The second is bringing two ideas, whether simple or complex, together, and setting them by one another so as to take a view of them at once, without uniting them into one, by which it gets all its ideas of relations. 3. The third is separating them from all other ideas that accompany them in their real existence: this is called abstraction, and thus all its general ideas are made.&lt;/p&gt;
&lt;p&gt;John Locke, &lt;em&gt;An Essay Concerning Human Understanding (1690)&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded></item><item><title> 用 Libby 阅读英文原著 </title><link>https://blog.mdreame.space/blog/2024-08-01-%E7%94%A8libby%E9%98%85%E8%AF%BB%E8%8B%B1%E6%96%87%E5%8E%9F%E8%91%97/</link><guid isPermaLink="true">https://blog.mdreame.space/blog/2024-08-01-%E7%94%A8libby%E9%98%85%E8%AF%BB%E8%8B%B1%E6%96%87%E5%8E%9F%E8%91%97/</guid><description>Libby 可借阅图书馆电子书、有声书和杂志，免费且资源丰富，是阅读英文原著的好工具。</description><pubDate>Thu, 01 Aug 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Libby 是一款电子书阅读应用程序，能帮助你借阅并在线浏览世界各地图书馆的电子书、有声书和杂志，前提是你拥有或能申请到该图书馆的读者证。&lt;/p&gt;
&lt;p&gt;Libby 有网页版和 App，不过建议你在平板上使用，阅读体验将会比较好。&lt;/p&gt;
&lt;h2 id=&quot;如何申请读者证&quot;&gt;如何申请读者证&lt;/h2&gt;
&lt;p&gt;安装和注册好后，需要先添加图书馆然后才能借书。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/202408012229904.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;点击中间的图书馆列表页，然后点击添加图书馆。在弹出的搜索框中搜索想看的图书馆，然后申请读者证。&lt;/p&gt;
&lt;p&gt;部分支持免费或用手机号即可申请，其他的要求可能会比较严格。比如要求在当地有工作或者居住证明，又或者需要缴纳开卡费用。以上图中我选的几个都支持免费借阅。&lt;/p&gt;
&lt;h2 id=&quot;基本使用&quot;&gt;基本使用&lt;/h2&gt;
&lt;h3 id=&quot;搜书&quot;&gt;搜书&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/202408012233202.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;图书馆主页&quot;&gt;图书馆主页&lt;/h3&gt;
&lt;p&gt;图书馆主页会显示馆内可借阅的书目，以主题和系列的形式展示。
&lt;img src=&quot;https://img.mdreame.space/202408012235062.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;书架&quot;&gt;书架&lt;/h3&gt;
&lt;p&gt;书架中显示已经借阅或排队的资源。
&lt;img src=&quot;https://img.mdreame.space/202408012238055.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;标签&quot;&gt;标签&lt;/h3&gt;
&lt;p&gt;标签可用于自建书单。
&lt;img src=&quot;https://img.mdreame.space/202408012239113.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;常用图书馆资源简介&quot;&gt;常用图书馆资源简介&lt;/h2&gt;



































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;图书馆&lt;/th&gt;&lt;th&gt;书目数（k）&lt;/th&gt;&lt;th&gt;评价&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;浙江图书馆&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;资源丰富，包括很多经典和畅销书。系列推荐：I Can Read, Harry Potter。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;中山市中山图书馆&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;系列推荐：PAW Patrol!、Peppa Pig、Red Rocket Readers、Welcome to Disney。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;深圳图书馆&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;书目比较新。系列推荐：Magic Tree House、Dune。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;首都图书馆&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;科普、经典名著。系列推荐：迪士尼有声书、雨果奖系列、普利策奖系列。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Chicago Public Library&lt;/td&gt;&lt;td&gt;83&lt;/td&gt;&lt;td&gt;杂志很多，分类齐全，涉及几乎所有常见的门类。电子书:有声书:杂志比例为55:23&lt;div&gt;&lt;/div&gt;。杂志推荐：National Geographic Magazin、The New Yorker、Reader‘s Digest。&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;感谢互联网和各地图书馆提供了这么多珍贵的书籍让人免费借阅，知识宝贵而无价。&lt;/p&gt;</content:encoded></item><item><title>消散的笔记</title><link>https://blog.mdreame.space/blog/2024-07-31-%E6%B6%88%E6%95%A3%E7%9A%84%E7%AC%94%E8%AE%B0/</link><guid isPermaLink="true">https://blog.mdreame.space/blog/2024-07-31-%E6%B6%88%E6%95%A3%E7%9A%84%E7%AC%94%E8%AE%B0/</guid><description> 笔记软件选择第一要点是简单  </description><pubDate>Wed, 31 Jul 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;配齐苹果全家桶的一个原因是觉得 iCloud 同步实在是太舒服了，让人非常省心。在 Apple Notes 中手写笔记，可以实时显示在 Mac 端，体验也是很丝滑。不过缺点就是不方便导出。&lt;/p&gt;
&lt;p&gt;在这个不靠谱的年代，如果自己的笔记不能把握住，这可真让人受挫。所以我一直有种强迫症，想要将所有的笔记放在一处。在知道了第二大脑的概念之后，选择了 obsidian 作为搭建的工具。&lt;/p&gt;
&lt;p&gt;原因有：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;离线：数据可以自己多处备份。&lt;/li&gt;
&lt;li&gt;笔记格式简单：markdown 俨然是通用的笔记格式了，用其他软件也能打开。&lt;/li&gt;
&lt;li&gt;搜索能力强大：支持全文搜索，而且检索速度有保证。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;更不用说它的扩展能力十分强，而且社区非常活跃，几乎可以通过插件实现所有其他笔记软件具备的功能。&lt;/p&gt;
&lt;p&gt;而这样突出的优点反过来也是它的缺点，也就是说很容易让人分散注意力，不能专注于知识的积累和生产。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;易导入：通过各种扩展，可以一键将其他平台的笔记都导入到 obsidian 中。这样的过程让人沉迷，结果是海量笔记让人渐渐生畏。&lt;/li&gt;
&lt;li&gt;易捣鼓：插件实在是太强大了。定制主题，做日程规划，可视化交互，让人重于形式而非本质。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;有一天我受够了，感到自己很久没有静下心来记点东西了。脑中突发奇想，打开了 Microsoft Word，一边读英文书，一边记笔记。突然那种奇妙的感觉回来了。我似乎意识到自己是处在专注的状态。这个时候领悟到克制的妙处，也就是简单给人心理状态带来的好处。&lt;/p&gt;
&lt;p&gt;怎么才能长久的专注一件事情呢？&lt;strong&gt;Make it simple and stupid&lt;/strong&gt;. 珍惜注意力，减少不必要的工具，避免他物自扰，这样会使人由浮躁而笃定。大智不过若愚。&lt;/p&gt;</content:encoded></item><item><title> 《恋妻家宫本》 </title><link>https://blog.mdreame.space/blog/2024-07-30-%E6%81%8B%E5%A6%BB%E5%AE%B6%E5%AE%AB%E6%9C%AC/</link><guid isPermaLink="true">https://blog.mdreame.space/blog/2024-07-30-%E6%81%8B%E5%A6%BB%E5%AE%B6%E5%AE%AB%E6%9C%AC/</guid><description>家是说爱的地方。</description><pubDate>Tue, 30 Jul 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/20251207180036182.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;爱一个人永远也不要让他难堪，不要让他感到被嫌弃。多说积极肯定的话，不能逞意气。&lt;/p&gt;
&lt;p&gt;不要让他感到一个人, 或边界感太强，抑或过分客气。其实相处是需要两个人一起做决定，互相影响的。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;我会告诉 27 年前的那个她：“现在，你眼前的这个男人。领子老是只有一边翻出来。优柔寡断，你别指望他立马做决定。因为他总是拼命考虑自己到底该做什么，对自己身边的人会更好。这个人今后会成为一个优秀的教师，出色的父亲、好丈夫。所以呀，山下美代子，不要担心，你可以放心地扑进宫本阳平的怀里。”&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded></item><item><title>在台城城墙上</title><link>https://blog.mdreame.space/blog/2026-05-09-%E5%9C%A8%E5%8F%B0%E5%9F%8E%E5%9F%8E%E5%A2%99%E4%B8%8A/</link><guid isPermaLink="true">https://blog.mdreame.space/blog/2026-05-09-%E5%9C%A8%E5%8F%B0%E5%9F%8E%E5%9F%8E%E5%A2%99%E4%B8%8A/</guid><description> 在南京去鸡鸣寺后写的一首小诗。</description><pubDate>Sat, 19 Mar 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;这是一篇&lt;a href=&quot;/history/wechat-035.html&quot;&gt;旧文&lt;/a&gt;。&lt;/p&gt;
&lt;div class=&quot;audio-player not-prose&quot; data-src=&quot;https://img.mdreame.space/audios/%E4%BD%A0%E7%A6%BB%E5%BC%80%E4%BA%86%E5%8D%97%E4%BA%AC%EF%BC%8C%E4%BB%8E%E6%AD%A4%E6%B2%A1%E6%9C%89%E4%BA%BA%E8%B7%9F%E6%88%91%E8%AF%B4%E8%AF%9D.mp3&quot; data-title=&quot;你离开了南京 从此没有人跟我说话&quot;&gt;&lt;/div&gt;
&lt;p&gt;跫音跌宕 &lt;br&gt;
轻叩迷蒙中的古寺&lt;br&gt;
昨夜久候的雪&lt;br&gt;
白白费我心思&lt;br&gt;
就怀着漠漠心声&lt;br&gt;
等下一个姗姗来迟&lt;br&gt;&lt;/p&gt;
&lt;p&gt;山隐隐 在招我&lt;br&gt;
要我看那缱绻的样子&lt;br&gt;
水盈盈 来笑我&lt;br&gt;
给我念心口泛起的诗&lt;br&gt;
楼屋草树 都在漫步&lt;br&gt;
都在我心间错落 参差&lt;br&gt;
唯有沉默 欲言又止&lt;br&gt;
匆匆往每块砖上刻字&lt;br&gt;&lt;/p&gt;
&lt;p&gt;如此 你悄然踏过我&lt;br&gt;
依依近三里的心事&lt;br&gt;
听 临别潇潇的细雨里&lt;br&gt;
仍念念有词&lt;/p&gt;</content:encoded></item><item><title>她没有理我的时候</title><link>https://blog.mdreame.space/blog/2026-05-09-%E5%A5%B9%E6%B2%A1%E6%9C%89%E7%90%86%E6%88%91%E7%9A%84%E6%97%B6%E5%80%99/</link><guid isPermaLink="true">https://blog.mdreame.space/blog/2026-05-09-%E5%A5%B9%E6%B2%A1%E6%9C%89%E7%90%86%E6%88%91%E7%9A%84%E6%97%B6%E5%80%99/</guid><description>真遇见喜欢的人，谁不是舔狗呢？</description><pubDate>Fri, 04 Mar 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;她没有理我的时候&lt;br&gt;
心里啊&lt;br&gt;
像春方打了头&lt;br&gt;
夏紧跟着个秋&lt;br&gt;
才几添浮云弄日&lt;br&gt;
又一笔风雨满楼&lt;br&gt;
都是光阴记的好帐&lt;br&gt;
教我仔细消受&lt;br&gt;&lt;/p&gt;
&lt;p&gt;书里虽说&lt;br&gt;
青山不改绿水长流&lt;br&gt;
一路上弯弯绕绕&lt;br&gt;
可惹了人好些愁&lt;br&gt;
是理是剪&lt;br&gt;
心丝难收&lt;br&gt;
再牵出无端的烦乱&lt;br&gt;
也且体味成静默的温柔&lt;/p&gt;</content:encoded></item><item><title>小路</title><link>https://blog.mdreame.space/blog/2026-05-09-%E5%B0%8F%E8%B7%AF/</link><guid isPermaLink="true">https://blog.mdreame.space/blog/2026-05-09-%E5%B0%8F%E8%B7%AF/</guid><description>一次关于外婆家的梦</description><pubDate>Fri, 23 Aug 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;不知怎的，一连几天都在半夜醒来，三点左右，或前或后，但都是醒得没道理的，好像心思活动了好久后才察觉自己是醒了。有时醒来是伴着梦的，便往回溯。有时却没有，就深呼口气。但庆幸昨晚是有的。&lt;/p&gt;
&lt;p&gt;一开始我就走在路上了。那是一所白房子东面的小路，从河岸伸过来的，来外婆家的路。外婆家的房子朝南，但有道红砖围墙挡着我了，看不到里边。就往正门绕了过来，围墙只有斜躺下去的一半，那上面的部分很自然地消失了，好像一开始就不存在。我个头很小，猫着这墙往里看，有几棵桔子树，细长的新枝待剪。往那枝条的影影绰绰里看去有一扇木门，泛白的卡其色带有木纹。门带上了，里头的光景是无法触及的。&lt;/p&gt;
&lt;p&gt;我看着看着恍了神，像一下子被人提着衣领拉到远处，这下那白墙红院只能在丛丛白苇的招摇里依稀可见，但那氛围却是很和谐的。光线不像是自然光，烟岚一样在氤氲在四方。&lt;/p&gt;
&lt;p&gt;忽又一阵风吹散了样，我重新站在房子侧壁了。院内，下午三四点的夕晒照在墙壁上，投了高低的三个影子。中间的是我，高的是姐姐，低的是妹妹。几个人不知道在那搬弄着什么，总之，很是开心。西面院墙靠里有一排水杉树，羽状的叶子让风吹了下来，红色黄色在地面上扇动的样子极好看的。树干很粗，很多长条状的老皮附在上面，却不怎么好看，我站在荫里扯着一头往下撕。&lt;/p&gt;
&lt;p&gt;外婆的喊声在后面传来，我想躲起来，于是三人就跑开。此时穿了墙壁进了屋里，手里握着一只长鼻子，后面是红了脸的小象跟着我跑。“小江江哎，你这么个疯茄子，你看我个打你啊!”终于让她逮住，小象被夺去拍拍灰尘，也在她的呵斥下不敢动了。不过还好没打我，但自那以后我有三年不曾去外婆家拜年。这都是妈妈告诉我的，我想兴许是唬我的，那么小的人不会这么蛮不讲理，大人也不会遂了我的愿。外婆家似乎是停了电，妈妈在暗红的烛光下揉着我的脚，给我讲这事来着。她白天气冲冲的骑自行车回来，我在后座脚不知怎么伸进了钢圈，连人带车在下坡的时候摔倒了。我没觉着痛，但她立马爬过来左摸右看，让我感觉不得不痛起来的样子。外婆不见了踪影，她低着头不说话，我的脚泡在水里。红黄色烛光在水里曳动着，星星点点。那时候我感觉突然间大了好几岁，穿起鞋就想拉着她回家。结果天亮了，又是我一个人走在这条路上，好像一切都没发生。&lt;/p&gt;
&lt;p&gt;从外婆家到我家有三段路，一条是这在走的石土路。淡蓝和白色相间的石头镶嵌在地上，大大小小的，有高有低，有些石头的角被磨得很圆滑。要是有细雨打湿了，能映出左右青青草，看得见人来时光影的流转。我最欢喜这段路，不平，人走得不快。前面忽来了一个人，很面熟，笑嘻嘻的，张着嘴不知在自顾自地说话，但什么也听不见。&lt;/p&gt;
&lt;p&gt;这条路走到头是沙石路，沙石路走到头是柏油沥青的国道。在沙石路和柏油路交汇的地方有个坡道。好像一眼就能看得到头一样，也看到有个人在前面走着。那人在经过一个葡萄园时，有只系着锁链的大狗跳出来狂吠，他越走越快，最后跑了起来。渐渐的，狗吠声消失了，前后的路都成了水泥路，那人还在跑着，似乎路太长了怎么也跑不到头。&lt;/p&gt;
&lt;p&gt;这些零碎的影像，或许是真的，或许是假的。或许从前忘了的，我现在又记着。或许是本记着的，我却给忘了。所幸他们有些偶尔会在某时某刻，彼此跑来老友般相会，也所幸我是个临立在旁不动声色的观者，将这或远或近或大或小或整或碎的一幕幕，都在记忆的房子里安顿好，叫他们都舒服、熨帖。&lt;/p&gt;</content:encoded></item><item><title>四角号码法</title><link>https://blog.mdreame.space/blog/2026-05-09-%E5%9B%9B%E8%A7%92%E5%8F%B7%E7%A0%81%E6%B3%95/</link><guid isPermaLink="true">https://blog.mdreame.space/blog/2026-05-09-%E5%9B%9B%E8%A7%92%E5%8F%B7%E7%A0%81%E6%B3%95/</guid><pubDate>Thu, 15 Aug 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;方法：把汉字笔形分成十类，分别用0~9表示。每个汉字按左上、右上、左下、右下顺序取四角笔形代表的数字，连成一个号码。如乙：1771。当遇到两字号码相同时再取第四角上方一笔的数字。如识3678(0)、误3678(4)&lt;/p&gt;
&lt;p&gt;具体笔形和口诀如下图（图片来自&lt;a href=&quot;https://www.douban.com/link2/?url=http%3A%2F%2Fblog.sina.com.cn%2Fs%2Fblog_57de8ba40100s7vv.html&amp;#x26;link2key=b90f36fc3f&quot; rel=&quot;nofollow noreferrer noopener&quot; target=&quot;_blank&quot;&gt;尹冰的新浪博客&lt;/a&gt;）：&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://img.mdreame.space/695a92761aed681d03e4d1dcf0036002-1778297056544.webp&quot; alt=&quot;笔形示意&quot;&gt;&lt;figcaption&gt;笔形示意&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;补：中角充左右为零，下截无伴一次休。&lt;/p&gt;
&lt;p&gt;取角注意：&lt;/p&gt;
&lt;p&gt;1.打弯之笔可分。如：乙1771&lt;/p&gt;
&lt;p&gt;2.下截有伴可再。如：大4080&lt;/p&gt;
&lt;p&gt;3.下笔偏哪作哪。如：弓1702&lt;/p&gt;
&lt;p&gt;4.用过之笔作零。如：卜2300&lt;/p&gt;
&lt;p&gt;5.外围“口、门、門”，下角取里面。如：闭3724&lt;/p&gt;
&lt;p&gt;6.点下带横折，作三不作零。如：空3010,、户3020&lt;/p&gt;
&lt;p&gt;7.尽量取复笔。如：气8001&lt;/p&gt;
&lt;p&gt;8.平行之笔取左右不取上下。如：非1111&lt;/p&gt;
&lt;p&gt;9.交叉之笔取上下不取左右。如：中5000&lt;/p&gt;
&lt;p&gt;10.有两复笔，取最高、最低者。如功1412、也4471&lt;/p&gt;
&lt;p&gt;11.撇从当中起，他笔作下角。如：友4040、石1060、衣0073&lt;/p&gt;
&lt;p&gt;12.“附号”取靠近第四角上方之笔。如：识3678(0)、误3678(4)&lt;/p&gt;
&lt;p&gt;练习：&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://img.mdreame.space/2169080b1408f61e169bbe5c7f3add02-1778297111892.webp&quot; alt=&quot;汉子偏旁取码&quot;&gt;&lt;figcaption&gt;汉子偏旁取码&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://img.mdreame.space/05618d7a460e130ecfd7664e5d1af285-1778297133151.webp&quot; alt=&quot;练习&quot;&gt;&lt;figcaption&gt;练习&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;参考&lt;a href=&quot;https://book.douban.com/subject/25776357/&quot; rel=&quot;nofollow noreferrer noopener&quot; target=&quot;_blank&quot;&gt;讀書法與研究法&lt;/a&gt;。&lt;/p&gt;</content:encoded></item><item><title>【大理】飘飘何所似</title><link>https://blog.mdreame.space/blog/2026-05-05-%E9%A3%98%E9%A3%98%E4%BD%95%E6%89%80%E4%BC%BC/</link><guid isPermaLink="true">https://blog.mdreame.space/blog/2026-05-05-%E9%A3%98%E9%A3%98%E4%BD%95%E6%89%80%E4%BC%BC/</guid><description>重返洱海边喂海鸥，借候鸟的漂泊思索记录的意义，想让生活慢下来，多一点人情味。</description><pubDate>Sun, 24 Jun 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;这是一篇&lt;a href=&quot;/history/wechat-066.html&quot;&gt;旧文&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://img.mdreame.space/e84930a8a32a459b2978f130c143644a-1777942671268.webp&quot; alt=&quot;茫然在信里传来问候，言词用语也都似旧。但那情怀偏不似旧，字句中间多点哀愁。&quot;&gt;&lt;figcaption&gt;茫然在信里传来问候，言词用语也都似旧。但那情怀偏不似旧，字句中间多点哀愁。&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;又在绿皮火车里，窗外浮云袅袅，白色风车似转非转。越往西南，小山丘越发褪去了生机，露出黯淡的地皮，像是被太阳毒射结了痂。海拔高的好处就是能见度自然也高，空气很清爽，人慢慢地精神起来。&lt;/p&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/3e83467c148dc80df7d84814cf8259dc-1777942838875.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/3b2836a981ca0b2c700e00b490856aab-1777942843191.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/654c353dca7f062f041f5874568c2f6d-1777942846976.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/4183be802725ef83397ffefd36179176-1777942850408.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;这次特地去洱海边看了海鸥。一直觉得候鸟是带有悲壮色彩的，反正从诗里听来的是这样，“飘飘何所似，天地一沙鸥”。候鸟迁徙前得觅食以储备足够的脂肪，再在途中一点点地将自己饿瘦，这太可怜了，相比较人体态丰腴简直就是福气呀。&lt;/p&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/02299f81c917155759044fb8e4caece7-1777942884668.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/6947d394bd64df9343e25e91e8150511-1777942888750.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/140fb8f09639fef4f67e693b781a3034-1777942892601.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/10450e87349fd1e91cf999aff16903d7-1777942896911.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;还有一点是它们不用问路在何方，路线生来就刻在他们骨子里。每年只要等到了季节，它们便知是时候离开了。&lt;/p&gt;
&lt;p&gt;我想起来有个新闻大致说，老人救助了一只迁徙途中受伤的鸟，等到返程时又有一只鸟来找它。知道最后你还是会出现在面前或者说始终有人在等待，是件太美好的事。&lt;/p&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/028fc5d5e0df5aab222f61eb753ab65a-1777942949490.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/6b0869797fe1a82c30c16afa817a7096-1777942953134.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/1dadf3908211db60969faca00c3f60ea-1777942958493.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/d5172475605ee38bbee790734d2984be-1777942962612.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/8d0cf819d1b83878c26bbb29f04149fa-1777942966125.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/62e376f1bc869d8dbecf3a906e1605d5-1777942969959.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;就是因为太多东西需要时找不到，回忆不起来，所以才想记录更多。若是不记，说实话也没大要紧，忘了就忘了。但就怕越是这样，人越变得麻木。&lt;/p&gt;
&lt;p&gt;像以前看书就真的是看书，没有什么记录。如石上流水，悄无声息，也能勉强说是流进了血液，化作潜移默化地影响。&lt;/p&gt;
&lt;p&gt;我依稀想起看过萧伯纳论君子的一段话。他说人生来就得回馈社会，为自己还账。除了付账之外，若对社会尚有建树造益于人，那他便是一位gentleman。我现在就觉得人分为几类，有一类人是为自己活的，其中还有一类人是注定为他人而活。&lt;/p&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/1099736e6415f685f41da2f35bd46ecb-1777943011773.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/d881b510de8feda44488a0a16d386581-1777943015571.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/212d858ca16cc09a99ca3e78ada33f6d-1777943018930.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/2e842a5992b5cd66fdb07d0a53fcbfcd-1777943022777.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/ae3f36e25c01e0ee8c471b759b53a3bd-1777943026160.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/033bc806510e8e1f25d1064f68b26926-1777943084588.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;记录也有记录的好处，可以反观当时自己的状态，日后再校正，这有助于自己成为一个健全的人。我可以知道自己曾坐在海边听浪花拍岸，还有风声、鸟叫声、孩童欢笑声。&lt;/p&gt;
&lt;p&gt;节奏快，我更希望给自己留时间慢下来，我还想感受一下生活本身，只要是真真切切必定都是甜甜美美。&lt;/p&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/3d87ab1c022216a3290ea01cadf9bcd7-1777943067440.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/a4878337c3fa07875f37f5d56938b5f8-1777943072158.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/aceb39a2f4e99c0e092ea8dcbc5f4457-1777943075991.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/e53d5cb0a01410934f44ab6f65f065fb-1777943080053.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;人成各，今非昨。于是我还想让生活变得有人情味点，比如与朋友不时碰个面。可以这样，在他们的生日当天，叫他们说个不大不小可期许可实现的愿望，哪怕是当天见一面也好。这样花样多了，可能日子就会有盼头了。&lt;/p&gt;</content:encoded></item><item><title>【重庆】嘉陵江畔</title><link>https://blog.mdreame.space/blog/2026-05-05-%E5%98%89%E9%99%B5%E6%B1%9F%E7%95%94/</link><guid isPermaLink="true">https://blog.mdreame.space/blog/2026-05-05-%E5%98%89%E9%99%B5%E6%B1%9F%E7%95%94/</guid><description>在天台旅社吹风看夜景，坐轻轨穿楼而过，吃一人火锅，在洪崖洞迷路——重庆，迷得真实。</description><pubDate>Sat, 23 Jun 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;这是一篇&lt;a href=&quot;/history/wechat-033.html&quot;&gt;旧文&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;对重庆的印象不多，只知道是个几D城市，具体是几我也不知道。不过我从书里看过，以为街口都有很多公路牌。城中有一片森林，想到的人会是王菲。开车的话可以去到稻城，那里会有阵阵的麦浪，有一望无际的金黄，还有一棵树在小山坡顶上。&lt;/p&gt;
&lt;p&gt;于是我去找呀。有的。南山确实有一棵树呀，而且从这看下去是有一片片的璀璨的金黄，想到洪崖洞，人没道理不兴奋。&lt;/p&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/418e68845c252a18ec33e34fb729759d-1777941516307.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/5e1d80b651afe8183af50ad12627c5e9-1777941520567.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/d606839e839247c7b9c733f04a218da2-1777941524343.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/505e77624aff200fb2306290400b2784-1777941527209.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;其实刚到重庆是在床上躺了两天的，由于之前爬了山，腿是一点都不听使唤，还好有只猫咪乖乖地陪着我。住了几家都有猫咪，会在你睡觉时爬到床上窝在你腿弯里或者蜷在胸脯前，时不时张嘴打个大大的哈欠。&lt;/p&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/8f820819db0f53a1f46ef168391d7b38-1777941567367.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/b089fa07c73da30d2b1ea8abca1b0ae4-1777941571212.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/c30ccc3e1716153517017b285351576c-1777941575016.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/b0db47951295d428db8d9aae11611641-1777941578921.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/367163fd811b36d2af49c0f92dbb7fdc-1777941618873.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;有幸住到一家天台旅社，屋顶是花园，吹着风看夜景很惬意。视野很好，只是不知道多少层，坐电梯下楼到公路上恰恰是凯旋路电梯，往下还有10楼。没见过世面的孩子立马被唬住了，这有点意思。再者就是在楼宇间穿梭的轻轨，往下看是树，再往下是车和人。而且坐轻轨的时候，车身会随轨道弧度有一定程度的倾斜，往窗外看去，一栋栋房子像海草随风飘摇呢。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/2546e7b1bcbea946247d59b3533bb83b-1777941652762.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;夜晚终于来临，从八一路小吃街一路边走边逛。看到小孩在街边站着找妈妈，没有任何动作，倒是身边行人不断。我看着小孩，目光散开，也定格在那个瞬间。&lt;/p&gt;
&lt;p&gt;一路看了那么多吃的，嘴馋了，好不容易找到了一家一人火锅，虽然是改良过的，但还是让人上瘾呀。自从看了圆桌派的火锅江湖那期，心里就一直念念不忘。好像没有什么事情是一顿火锅解决不了的，如果有，那肯定是少了味，再添几勺料或再呼喊几个人。也有可能是心理作祟，觉得这相比平日里吃的很有口感上的辨识度，于是斗胆都想去尝试防空洞里的那种九宫格。当然，这只是说说而已，凭我的胃吃眼前的这个已经是极限了。&lt;/p&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/ef2736d1efea12843468444e21a2eb55-1777941682479.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/e0ff026d796992d314c9eeb879ac2c5e-1777941686521.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/b8312c1f09f2e2e7cf1c17b389f89832-1777941689793.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/f43b7676153b6ceb50078433b1783862-1777941693470.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;坐在椅子上晚风吹得发冷，很凉了，加上阴绵绵的天气有点催人倦，于是起身跟着人群走，到洪崖洞。一进这里边，我像个傻子一样找不着路，这还是头一回。电梯在这里永远到不了你想去的楼层，楼梯怎么也通不到公路。索性在里边晃荡，听听小女孩唱成都，真好听啊，让人想起《千与千寻》。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/f4d5e026bb7ddf791850712944629370-1777941737618.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;我想徜徉在眼前这童话故事般的世界里啊，然而一件事将我拉回现实里。一对母子迎面走过来。儿子在前边闹别扭，母亲跟在后边相劝。我只是看了一眼，儿子就被母亲拉到我跟前说他们的窘境。两人钱包丢了，而且手机里都没钱了，要赶到机场去做飞机，希望能借几十块打的。我防备心还是有的，但恻隐之心蠢蠢欲动，领着他们去换现金，最后给了一百。等我看到他们在路旁等车的背影，我就想给自己拍死，不过演技真的好好啊。&lt;/p&gt;
&lt;p&gt;果然人生如戏，偏偏我特别容易入迷。不对，我是被重庆，被其脾性迷住了。&lt;/p&gt;</content:encoded></item><item><title>【婺源】恰逢秋日胜春朝</title><link>https://blog.mdreame.space/blog/2026-05-04-%E6%81%B0%E9%80%A2%E7%A7%8B%E6%97%A5%E8%83%9C%E6%98%A5%E6%9C%9D/</link><guid isPermaLink="true">https://blog.mdreame.space/blog/2026-05-04-%E6%81%B0%E9%80%A2%E7%A7%8B%E6%97%A5%E8%83%9C%E6%98%A5%E6%9C%9D/</guid><description>深秋追至婺源，晓鳙村看日出，篁岭赏晒秋，白墙黑瓦间感受徽州民风，阳光、山茶花与烟火气。</description><pubDate>Thu, 01 Feb 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;这是一篇&lt;a href=&quot;/history/wechat-043.html&quot;&gt;旧文&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;继续南下追寻秋的脚步，与曾曾哥和车车姐来到婺源。由于马拉松封路，刚从高铁站出来找不到出租车，三人决定走五公里去与玲姐碰面。天气很好，马拉松圆满结束，玲姐也恰好回到酒店歇息。吃完午饭后，交通恢复通畅，打车去晓鳙村。&lt;/p&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/e7bf75e0837ff1cf5d587653f190eb4b-1777906161443.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/67d710c9f79397e2eb4f5a41f92e200e-1777906178949.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/87fa40f4fb4640cc80387a2fec2b511f-1777906186614.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/31cb40cc5d28858eda6e6a0bcb4742e0-1777906191761.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;途经月亮湾，觉得似曾相识，想起有张古风照片，上面画的就是，烟雨迷蒙的样子，好看。深秋看下去，水面蓝黑如镜，丛木叠影。引得不少路人驻足，我们也下车拍照。&lt;/p&gt;
&lt;p&gt;玲姐拍照有心得，教曾曾哥拍车车姐时怎么找角度，数落怎么会找个这样不会拍照的男朋友。我在一旁居安思危。&lt;/p&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/6aada67a04d57c273c7c3f7ac283978a-1777906246521.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/5615a531c7d0e606458edc8fc0d20734-1777906252053.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/fcbb8e17d94ebc6cd846a67fd5f4458b-1777906257846.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/ace012722f0bfa2b1126f3be10a12925-1777906263247.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;车行山里，晃晃悠悠，人一觉醒来到了晓鳙村。像是武陵人一梦到了桃花源一样。晓鳙的客栈都是当地民宿，没有什么古老的意韵，多的是些平实的气息。建筑少有砖土垒起来的，大都是钢筋水泥造的白墙和青瓦。但也有少数几家土木结构，白石灰已脱落八九，像被时光生生扯去塑膜的老照片。&lt;/p&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/46e76619e41f9485205764ed126a5416-1777906318646.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/31706e492b41b35c841a09842f213f55-1777906322323.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/e073272ad904a4cf0e9dc9c03ac01d60-1777906326521.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/ef4dd5910472f24bf936aeab0c0530ca-1777906330592.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/20ca5cfd162141873e6023af1d335b3a-1777906335970.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/ca881dd87980db6a10ee7218343d6808-1777906340067.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;汽车只能停在村口空地，进村里只有一二小巷。村里屋舍顺山势排下，中间是一条小溪流，水从山上淌下，两面是人家。四五棵老树，三两丛菊花。沿路上行，鸡犬相闻。有个小孩倚在门上，自顾吃着饼干，不说话，也不看来人。时不时两声叹息，眼睛看着远方，我只能说小小年纪，忧伤的质量就好高啊。&lt;/p&gt;
&lt;p&gt;山村的暮色很纯粹，安静，看得人心空空。晚风吹来，茅草晃动，渐渐有些凉意了。&lt;/p&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/b6249be4a7c0b29e4c8c8796de59bb97-1777906533373.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/fe13381ce88ae6a16b2e12c2e47573ba-1777906538755.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/2d46111cedd1cda348239666c0494873-1777906544923.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/9f4e9d3d25e2973d4ed7abc778d2c255-1777906549841.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/ba4e900217b5965c964e748908825986-1777906553709.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/155fdf16e189b8b268152e7b8886f756-1777906564052.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;晚上吃了烟熏肉和笋干，这可能就是早先烟火的味道。吃完，谈了会天，问候昨日走的小伙伴是否安全到家，便早早睡去。&lt;/p&gt;
&lt;p&gt;次日早起看日出，就在晓鳙村所在的山头上。山腰是盘山路，我与曾曾哥找了个好去处。眼下都是白色山茶花，再远一点的是山和山，雾还有雾。&lt;/p&gt;
&lt;p&gt;山头那边有金光射出，很柔和。等了片刻，似乎不见变化，看着那一点亮，人也恍惚了。风吹来，一阵寒战。山茶花越显得发白，天慢慢亮了。那一点亮光扩散出一道光晕，越来越大。终于一道红光从山头划出，宣布朝阳的到来。&lt;/p&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/8902f6fc56a30f38a390cf56a0717a8f-1777906629042.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/e60a5131b82c23c8fb6731a4eae48f07-1777906636726.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/a908a13bdfc66c8a3d5bfc1accdec5c2-1777906640881.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/937a8d46b0296eb197c2d07da9b00687-1777906644243.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/85e1b4280d69e31ceb9bf3b89a949443-1777906675310.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/f7b6e3556eb132f808bea1ead38befc5-1777906697136.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;告别山茶花，回晓鳙时太阳光正好透过薄雾洒下来，慢慢地沾在白墙上，洒在青草上。突然生平好像第一次领略了“阳春布德泽，万物生光辉”是怎番景象。也感觉日子在这是能看得见的，就像这样在眼前爬上这堵高墙，再流过那片山野。&lt;/p&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/8144bee39f3e8bc193c6a04061c8c277-1777906734218.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/97471ef8b01aec7f63fb326806b60655-1777906737473.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/8b22ef3074ab73283c785ea5faf5f0b3-1777906741552.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/27e68820f0dbf37ef5dfd73fd08cab4d-1777906745294.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/4da662302ad3c207e0307c973edc8901-1777906748617.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;随后四人来到垒心桥。从桥上可以看见一面山上是连绵的梯田，另一面山腰树林间冒出几十户人家，依然是白墙黑瓦。视野开阔了，心也就安静了。几人从山腰小路走过，拍完照就直奔篁岭看晒秋。&lt;/p&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/23f4ba3d5eaf5ce435941b00a3eff2cb-1777906785093.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/8842899d0b45a407d3273e8e1534bb85-1777906789685.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/bda786025f31bf2d4438b381d95bb642-1777906793974.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/3ecbb3a6cb7490e743eea3af6cd0f660-1777906798939.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/91560b03399a521e44d3a33c21e125a7-1777906803194.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/d21591bb3db48681a4def8f249174e98-1777906808062.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;刚好天街有画展，一路慢慢看过去。有家油坊，油香飘得很远，沁人心脾。遇见一位老者，拉着龙头高胡，表情平静认真。看着街上来来往往的人，时而微笑，正好阳光照得暖了。接着去了怪屋，很奇妙。本以为篁岭是个严肃沉静的地方，没想到会这样调皮。&lt;/p&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/d6453450c0bd8c32119399ac99fa0f6b-1777906852033.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/697dd93114b17aaca3e1f1a1ee6317d6-1777906855656.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/3aeed94e67df0784b0f8ad12a75ac8c0-1777906860638.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/773ef9b4cadc3f89282e5c2d896a8f84-1777906864600.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/75ccb27683277135151e96c3dec3f6bf-1777906879950.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;我觉得篁岭不算商业化，名俗民风都能从巷子里找到踪迹，而且如此大的房屋部落也几近完好地保存了下来。总有几个窗落，你能看见岁月静好的样子；总有几个转角，你抬头看见青山。你就能感觉这里很闲适，待着无纷扰。&lt;/p&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/9963165d2b25a423df88bd28231f3b75-1777906917487.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/38531265818773b416f97f357080b5f6-1777906923586.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/33de64ef7040aff90e22ebf7af74c04e-1777906927078.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/f240f7dda23629ae17823917bb425d36-1777906931582.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;我喜欢像这样的地方，不造作。有很多老旧的东西，你可以透过它们了解过去，人或者事总有一个联结。看见墙壁斑驳的房子和有着光泽色彩的木头，我就心生向往。记不起在哪看过，日本修建神社的木匠说：“树木里宿着生命，工作时必须倾听这生命发出的呼声。在使用千年树龄的木料时，我们工作的精湛，必须经得起千年日月的考验”。&lt;/p&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/d5fc3148a4c3842cfc8fa1893d1e81e5-1777906974900.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/beb123486a4eb1c0256af9d313239685-1777906985862.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/bacb36690dc41e769b8dbaee96592688-1777906991110.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/5c1761fc01017c0d03698d62e9a98963-1777906996733.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/72911dd79a927dfc2c2b4c692a980db2-1777907000990.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;先敬畏树，再敬畏人。人要多学习树，温润踏实，不骄不躁，遇困境更显刚毅。以前这样的人多，都是用心做事，用心度日。现在不少人的生活有点“乱花渐欲迷人眼”的意味了。&lt;/p&gt;
&lt;p&gt;我一直觉得日本人的观念里有种不需做作的谦卑和勤勉，在不少影视作品里至少是这样展现的。我喜欢是枝裕和的电影，仿佛在讲述他自己，像一只蝴蝶那么细小的事物对他来说总会有不同的意义。他将自己抽离出来，作为一个旁观者去对待事情，不分对错，具细地表现到他的电影里，带一点忧伤，但却从容安静而让人感到丝丝温暖。&lt;/p&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/5b622b68b52f57d714d8cd127c86764c-1777907069289.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/998bf3f041651e6dc5cc55b68c742ed9-1777907064236.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;傍晚回晓鳙，天上泛起了朵朵云，可能要变天了。玲姐下午三点赶去南昌，坐往桂林的飞机。我和曾曾哥、车车姐三人返程，即将也要告别。&lt;/p&gt;
&lt;p&gt;归途山下泛起烟波，树，牛，小屋，都在里边。&lt;/p&gt;</content:encoded></item><item><title>【宏村】白茶清欢无别事</title><link>https://blog.mdreame.space/blog/2026-05-02-%E7%99%BD%E8%8C%B6%E6%B8%85%E6%AC%A2%E6%97%A0%E5%88%AB%E4%BA%8B/</link><guid isPermaLink="true">https://blog.mdreame.space/blog/2026-05-02-%E7%99%BD%E8%8C%B6%E6%B8%85%E6%AC%A2%E6%97%A0%E5%88%AB%E4%BA%8B/</guid><description>独行至宏村，巧遇新婚队伍，在青旅结识五湖四海的旅人，月沼、南湖、光绘夜拍，两日欢声难尽言。</description><pubDate>Sun, 28 Jan 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;这是一篇&lt;a href=&quot;/history/wechat-057.html&quot;&gt;旧文&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;还在查济。&lt;/p&gt;
&lt;p&gt;沿着一条小巷子走，弯弯扭扭竟然绕过了景区售票处，直接出景区了。果然查济村内无死路呀（请自觉遵守游览秩序，购买门票入内）。问附近超市老板太平县怎么去，说只有包车去，300块。人少也拼不成车，又去询问售票处工作人员，告诉我说，走2.5公里左右可以到三保村，有公交车去太平县换乘站，2小时一班。&lt;/p&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/7b79fd91aa43a2ef67970aee0ab32a46-1777708252967.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/ee68de1f8f0391bcd91a4f547b253cd8-1777708257795.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/d1f4dfd5630b397464e3b42ddaca95ae-1777708262003.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/f7529c40f45073cadc448749412ba778-1777708265660.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;机智的我就上路啦。打开Keep，听着远走高飞，回头告别查济，2.5公里的路也走了差不多30分钟。脑子抽了地在背包里塞了个电脑，背得肩膀酸得不行。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/67d0a0fd6c601ee8679008e161ba6631-1777708364383.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;到三保等了一个半小时左右，车才来。期间吃了茶干和桃酥，味道真不错。上车往太平方向出发，经过太平湖，也蛮好看的。&lt;/p&gt;
&lt;p&gt;车上售票阿姨问我为什么一个人出来玩，花费高还不安全。我说，舒坦。我吃不了什么，住也一般都是青旅，一路上花费最高的就是交通了。我也没胆大到随手就搭车。一个人出来，我与外界可以说是暂时断绝了联系，短时间不会有人找我，我也不发任何暴露自己的动态。在既定路线的方向上有很大的调整空间，或者任性一下也不是不可以。不用迁就，不用担忧。这段时间里，你拥有了可选择的最大程度的自由。&lt;/p&gt;
&lt;p&gt;在太平换乘碰到一位阿姨，是个户外爱好者，穿着冲锋衣。昨天来太平，今天下午兴起决定去塔川看秋色。一路上给我说黄山有多美，让我一定要去西溪大峡谷，还将山脚饭店老板二维码分享了一下，就差打电话了。我就一直点头笑，整个人都懵了，其实内心是拒绝的，明明咱俩都是奔着宏村方向去的。客车绕过了半个黄山，真好呀，我的笑僵硬了半个黄山。晚秋黄山上的枫叶没有落完，配上绿竹，分外好看，只是盘山路很熬人。&lt;/p&gt;
&lt;p&gt;巧了，到了汤口只有阿姨和我下车，得拼车去宏村。也幸亏有阿姨在，磨价格这么有技术含量的活就交给她了，我一旁帮衬帮衬。谈妥之后出发，大概一个小时左右来到了心心念念的宏村。阿姨在临近宏村的塔川下车，与之告别，看看窗外红色几无。&lt;/p&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/5b29c823c2cf283ab138e9e7bf2e10e9-1777708401080.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/260666ec8aa0c30063c29458bc9a9bfc-1777708405440.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/2d1b39576e6984d5742f46d19ba6696f-1777708409680.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/d1bbe8933892ac45454110b85a5476be-1777708412608.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/3d0d960664cd1c647764ca19138a9176-1777708417360.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/04274821a9eb279138ade9c04c798b37-1777708421444.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/243ef82a483b0977d0d0f6a6713275b1-1777708425263.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/86026864a07351b3c0069d2ae85d5d72-1777708429313.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;如果说查济有的是两不相关的淡漠，那宏村露出的是不动声色的从容。无奈的是这从容体也体现在了游客的数量上。进村后先找安歇地方，这次照常住青旅，叫做清和月，平台和推广做的很好。位置在后街，不是太好找，但很有氛围。当天人很多，大家一起聚餐，围了一桌。叔叔做的饭很合口味，笋很香，吃了两碗饭。第一次和这么多陌生人一起吃饭，听他们聊天，挺有意思，而且大家都不知道接下来会一起结伴同游。&lt;/p&gt;
&lt;p&gt;下面这个图从左到右依次是成都的车车姐、内蒙古的学霸小霞、桂林的玲大姐姐、本人、四川哪的曾曾哥、舟山的李斌，还有祁门的丁伟。吃完饭坐下来聊聊天，听多才的义工姑娘弹钢琴，曾曾哥也在有模有样的拨弄吉他。清和月的这个阳光房有颗树生于中庭，上面挂了很多小葫芦。树下供人休息，写写字，烤烤火。最后的是素素姐，说义工小妹要走了，得赶着做一个手工笔袋给她当礼物，也是很有心很温情。&lt;/p&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/2fcc3416b0b1b227e1f82d615d85d406-1777708499053.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/859ebf4b653937d1d1bc11f30a808fde-1777708503083.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/9e0b2254d06a4bf34ab0478e076b229f-1777708506606.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/2257a8d136dd88763e9f042f7bc314c8-1777708510376.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/83f37699b5214a6c52aef6fbdb92009b-1777708514889.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/396336d2b49ff47c786591f7b65f4837-1777708518445.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/094ab0debc73852a09835ad10403e146-1777708522103.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/e7738c7f6413df9fe2524f95ddad81dd-1777708526134.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/f4649693ba3b907c6cf7e81850b3635d-1777708530070.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/d69bf484455f6dec743e5875534a06c6-1777708535931.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/711db563d807de3f7b5d256eaee97075-1777708539366.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/9974ef727100f94cf5499c3973b14489-1777708542913.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;大家能聚到一起是因为玲姐发起建议的。她与独行的小霞相遇甚欢，明明在卢村住，很随性的跟着小霞来清和月拼餐。熟络之后说想要个我这样的儿子，叫我认干妈😂，还拍了张“母子照”。随后玲姐带领我们逛宏村，恰好碰上新婚队伍，有两队。玲姐看到这样的场面欢喜的不行，跟着队伍绕着村子走，不见踪影。&lt;/p&gt;
&lt;p&gt;村口有两棵大树，一棵红杨树，一棵白果树，每有红白喜事都会来这。迎亲队伍先绕村一圈，经过南湖来到红杨树前，绕树三圈。男方是宏村里人，家有祖宅，条件尚好，排场颇大。随后玲姐就出现了，高兴地像个孩子，分给我们抢来的喜糖，人手一个。她穿的很喜庆，所以被当成迎亲队伍一员陪在新娘轿边莫名其妙就跟着走了一圈，乐得简直像她自己的婚事。&lt;/p&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/9dcd2a18ff9b86f4a34c93ed051ab9bb-1777708589180.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/1e5cf23cadb21e183c4e108e74c8217b-1777708594454.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/b310e7b71deaa98a8409c2cb58412160-1777708598585.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/6b7b30341d680fc734a4a06f0f4c9fac-1777708602375.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/57058358251cd53bc0ae104ce3628003-1777708605572.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/7fc1349fbf3db25ad63b8145b78e8e2c-1777708609256.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/5b071adba041024c6f7ffffbea85d747-1777708612235.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/edf201b08c2f576f579c1fbf0d24fde3-1777708615839.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;队伍散去，我们就去到月沼边。天朗气清，惠风和畅，人很多。月沼又称“牛胃”，源头是村中一泉水，冬夏不息。祖上请风水先生“遍阅山川，详审脉络”，划蓝图，屡修缮，方有月沼。于是“月沼水常年碧绿，塘面水平如镜，塘沼四周青石铺展，粉墙青瓦整齐有序分列四旁，蓝天白云跌落水中”。跌落水中的不止白云，还有曾曾哥。人多到将他挤了下去，一只脚入了水，无奈回去换鞋。&lt;/p&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/084543211b762c59158c6d2e1b3a46d5-1777708667500.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/3f0807b3858cc7a0521fa0e2ae8ceb77-1777708687541.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/914786a0fc5942a557bcbe73b234ee7c-1777708675545.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/03b7f6d6409709e4b093058d179d2f1b-1777708679374.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/502bcc5ab888581f2b52bec535c9eb5e-1777708683701.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/5fbd9ffa3b2fc8bda22c92c94ace29ec-1777708691110.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;看完月沼，穿梭在白墙黑瓦的巷子里也分外惬意。&lt;/p&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/989aaa2a6fa704ea73ce49c08832ade1-1777708817661.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/e21788e7f43e0e75f5e5e3b6524e10ba-1777708760708.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/611b9b370d7e902531599642e2ce4da5-1777708765755.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/8351838b9947334c3cfb0e63ae8804f5-1777708802411.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/4769d4ef08193dc038398b2b90ed654b-1777708808429.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/43d41173bfdf329b70ab0a06d7f4879d-1777708813717.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/4a39d76e93264756d056128b2447cc7c-1777708821978.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/13ef4e09740e0619569036e3d0c1e746-1777708830068.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;天色渐暗，李斌和车车姐带着三脚架来南湖拍夜景。最后剩下几个人玩起了光绘，不亦乐乎。&lt;/p&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/3d3f871a3f4f069093a6e1dd5a55e338-1777708898628.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/44352b94b57710199030889dcd07dac6-1777708902684.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/5fb3b71f83dfe2381b06acfacfd1696a-1777708906233.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/054a4c0ec5d31e5922ec919b63b011e6-1777708910279.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/a05c5682be6ae3ad1876338bf584089f-1777708914383.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/6e1693eab26b85f83f1c4829879022d2-1777708918723.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/df2865aec4c1766deb21eb460920c97d-1777708929702.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;次日临别，玲姐选了村中一家菜馆吃午饭，下午得赶到婺源，跑次日早晨马拉松。玲姐说她每天早晨六点起床跑步一小时再送小孩上学，而且有时间就从桂林赶往全国各地参加马拉松赛事顺便玩个几天。与我见过的人相比，至少岁月没有在她身上留下多少痕迹。我从她身上看见现实中的有节制的自由以及人与日常工作生活等不同模式的和谐。&lt;/p&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/f4a70053a188337e3ccbfa4fb5b3ca5c-1777709237017.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/51d9d20574cb0a52eded3c2be3b1ec11-1777709212584.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/6d693177f74bf03901201eb9429e0fd1-1777709217247.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/a24dee4ba00d069fb6f5c308c255e026-1777709222622.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/985696143ba2d45bd7310aeb669794d2-1777709227944.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/264466f211d2914648f909c9d634c87a-1777709232275.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;送走了玲姐，我们5人相约徒步去卢村观景台走走看看。红叶已凋落，只剩下竹杉青黄颜色。一路走走笑笑，看了老牛归，人方倦知返。&lt;/p&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/9f7d0c2b8c6f524d7739b23d4c731929-1777709283387.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/13021770008ded801a5b45a9bf68328e-1777709286892.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/efaac9d3cb1e4c3a8c61a3a78da5e0a1-1777709292082.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/8530aaa523b7b8f5817cab6c39ab32fa-1777709297640.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/010acacadf975db7728aeb89abfc29df-1777709301330.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/6fd71881650315e8321deab86062277d-1777709277426.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;两日欢声，不能尽言。散聚终有时，我们后会仍有期。&lt;/p&gt;</content:encoded></item><item><title>【查济】小村之行</title><link>https://blog.mdreame.space/blog/2026-05-01-%E5%B0%8F%E6%9D%91%E4%B9%8B%E8%A1%8C/</link><guid isPermaLink="true">https://blog.mdreame.space/blog/2026-05-01-%E5%B0%8F%E6%9D%91%E4%B9%8B%E8%A1%8C/</guid><description>皖南深处的查济古村，三条小河百座石桥，写生学生聚集的小巷，大雪将至，时光凝滞在白墙黑瓦间。</description><pubDate>Thu, 25 Jan 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;这是一篇&lt;a href=&quot;/history/wechat-041.html&quot;&gt;旧文&lt;/a&gt;，原发布于 2018 年 01 月 25 日。&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://img.mdreame.space/0b5b175189229b59660ce580c8ba5971-1777614040117.webp&quot; alt=&quot;我会望着天空 有时什么也不想 看着淡淡的云彩 悠悠地游&quot;&gt;&lt;figcaption&gt;我会望着天空 有时什么也不想 看着淡淡的云彩 悠悠地游&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;像发呆看天一样，远山是最适合坐在车里看了。车往厚岸的方向，目的地是查济。窗外的山不高，披着残阳给的金衣，向后躺下去。眼前是丛丛的竹子，天渐黑了，但还能看出是绿色。里外错落有致地排开，下方是看不见底的水，近乎黑色，水面死气沉沉。&lt;/p&gt;
&lt;p&gt;从泾县出发，坐公交大概两小时到总站，下车就是查济古建筑群，一条深巷突兀出现在眼前，两侧二层的楼房整齐排开，像是士兵等待检阅，但更像是沉寂了许久的一条大蛇张开了口。寒气逼人，原来天黑温度也骤降了，三四度左右。&lt;/p&gt;
&lt;p&gt;没有眼镜了，走路完全听高德地图里周星星的指挥。比如信号不好，不知路往何处时，就可以高举手机大喊一声般若波罗蜜，路就会出现在你眼前。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/4bb7afd8ecca4224b7b4307ee06e0f32-1777614103535.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;当晚住在一家青旅，叫过客旅人。进去时老板在画水彩，不忍打扰。&lt;/p&gt;
&lt;p&gt;晚饭过后，老板自弹自唱，三首原创歌曲。我喜欢其中两首，一首紫薇，一首夜萤。&lt;/p&gt;
&lt;p&gt;回来时经过大厅正在放映电影V字仇杀队。隐约听到躲在面具后的人说，只要是男子汉做的事，我都敢做，没有人比我更胆大。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/3370ff0be01172c87bb80e39a23526ce-1777614131889.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;次日吃碗混沌，开始逛小镇。很多桥，据说曾经有一百零八座。很多祠堂，据说曾经也有一百零八座。村里三条小河流过，人们来往都得过桥。有的桥不宽，一人过，一人等，你来我再往，这样日子就很慢了。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/ae075b476882f1a96db21af558f51017-1777614150735.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;这里小院多，门也多，门上上了锁。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/a1bd8dfc3cf73df33f50f7f95bed6521-1777614173014.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;来往的人在对岸，说一句是一句。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/965d0db247f23fca2fe5b79062af3c3a-1777614189970.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;巷子里少有人走。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/e0014090b95572be011a5ef17f216f14-1777614206188.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/a164c1be4d8cb69b905fc0eb0575e4bb-1777614228824.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/01697b86be006d9ffffef4e17a86f2db-1777614234266.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/28726809acc15dbad13a83751770bf3c-1777614240369.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/c3d9a9073cabf9d3025a47ce6f10742c-1777614245847.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;鲜红的灯笼挂上了，卸下了整千年的清古。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/0726008ec949918bdd840c986fbb0e0d-1777614302157.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/ab5e783cb1d47107d437ae5d25571d01-1777614310389.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/14ffd39b861c7b9815a15857f416ef33-1777614323857.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/3807b8c34bebdfaa6f079452438f3e9f-1777614332957.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/b9cf1c1af4a1165d853f7350ff9d58c4-1777614346388.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/9cc89e74911cf3b868eb568ad9024fb7-1777614355048.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;游客不多，大部分是写生的学生，三两个一群，在墙角，河边。&lt;/p&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/e0c9082b9c2911776d4d327a6e0664fa-1777614380644.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/926f0736a1e66a34ad17c1302d4d6dd6-1777614385137.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/2c15125517aeaa995d8af3829f06d2cb-1777614389973.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/3ee51b47280d8f1edbad7fd18617684a-1777614393518.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/fc51b547bc8be1a6d18befe80b20074f-1777614397532.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/f5fd209ad8633fa208e0244adbd2ff5d-1777614401309.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/05e1e2ef96913d1dd9c370ea0d81d6b5-1777614405795.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/7abfb61208ef2937a72253646e9da9b1-1777614410491.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/66457d347d5590947d89ee8b29bf8038-1777614414387.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/9a361f63ee6317a9e88e63c5deb9f856-1777614418817.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;小村路路相通，几乎没有死胡同。所以想找来时的路也难了，凑巧碰到了倒是有点“旧时茅店社林边，路转溪桥忽见”的意味了。&lt;/p&gt;
&lt;p&gt;早晨看了日出，雾迟迟不退去，小山坡上看下去，隐隐三两烟树。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/91395d1a8ba25ab4b777a1f459aaec00-1777614497452.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;暴雪降至，网上笑传等雪的心情就像一个初恋少女等待男友。怕他不来，又怕他乱来。呵呵，黑夜里大雪纷飞的不是情欲，是纷纷的心绪。&lt;/p&gt;</content:encoded></item><item><title>【大理】再见大理</title><link>https://blog.mdreame.space/blog/2026-05-02-%E5%A4%A7%E7%90%86%E5%86%8D%E8%A7%81%E5%A4%A7%E7%90%86/</link><guid isPermaLink="true">https://blog.mdreame.space/blog/2026-05-02-%E5%A4%A7%E7%90%86%E5%86%8D%E8%A7%81%E5%A4%A7%E7%90%86/</guid><description>骑行环洱海，穿越苍山，从昆明到大理再到丽江——在风花雪月里找故事，遇见有趣的人，慢慢认识自己。</description><pubDate>Wed, 08 Nov 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;这是一篇&lt;a href=&quot;/history/wechat-026.html&quot;&gt;旧文&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;思来想去还是写了这篇吧，不过不想写太多攻略。毕竟旅途不尽相同，路那么长，各人的关注点也不一样，难免被沿途风景迷了眼。&lt;/p&gt;
&lt;p&gt;起先有人问我为什么去大理，我也想为什么突然就来大理了，并且为什么是大理？看到有人这样解释：因为海拔高，缺氧，是以每天都会很嗨，然后成瘾，而拉萨更高所以更嗨，故人们愿意久居不肯离去。欸，这样说就比较皮。&lt;/p&gt;
&lt;p&gt;都说人是为了逃离才去的大理，不假。至于为何是大理，我想可能是与那句“下关风吹上关花，苍山雪映洱海月”有关。在人被现实压得喘不过来气的那刻，突然闻说有这么个地方，你看，一时间风花雪月都碰了面，多么好。古往今来的故事里，尤其失意时让人向往的，向来算风花雪月最虚。好似过眼云与烟，你根本无从追觅，说得清说不清也没人计较了，人们关注的只是其想知道的，其余都可以避之不谈。又有人说“所爱隔山海，山海不可平”，但你有机会站在海景房的天台上，面朝洱海，背负苍山，感受着下关往上关去的风轻抚着面，再苦大仇深的心事也会慢慢放下。所以现在你可以理所当然地告诉自己，所爱的就是这样的地方，而大理恰恰就是这样的地方。&lt;/p&gt;
&lt;h2 id=&quot;昆明至大理首日&quot;&gt;昆明至大理首日&lt;/h2&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/44b2bda4dec9c421e871b2b0fbe93b59-1777652390993.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/bf7b2e25c323ddff5d4026cf76858ca5-1777652395997.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/a23f2b7423e73b27959043c5c9cabe08-1777652399910.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/79f8410335ba7df653a3df08cf3499d8-1777652405267.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/3f4bf47d24095abd3dd310bb78cd5db4-1777652409460.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/a6860584b22970e0943ea271d5ee7d43-1777652413218.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/71eed8869bb93345cd6c819f6edf731b-1777652417043.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/151aa73fbe64ebbad5dbba35e4566a69-1777652420892.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;我们从昆明下飞机再坐近7个小时的绿皮火车赶来大理，很是激动。虽然是卧铺，但我一路基本趴着望窗外，没有困意。抵达大理时，正好碰见云南十八怪之一—一面下雨一面夕晒，雨下得冷，太阳晒得疼。初来选了一家尚可的客栈歇脚，在古城内博爱路南门的一个巷子里，为的是图个方便。&lt;/p&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/77c44cf45b9e1b8af28c5cdaf7fd4189-1777652548288.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/d22707c19f99f9e2e004f03541a5030c-1777652552572.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/49c2ee27de26b8ffc52ff264d08e10d2-1777652556333.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/545b422552f4cab266017b3145334e9b-1777652560102.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/28e12a876f4ba0d9cb647d1b8c7096a6-1777652563878.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/9e3bc78f7867c70fdd52bde75c9cdb55-1777652567730.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;次日早起，上到客栈的阳台，看看风景。刚下过雨，空气很清爽，苍山近在眼前，顶部的云仿佛就要漫过山头，淌下来一般，可惜没有赶上洱海的日出。随后在南门附近租了电动车环洱海。建议去玉洱路有家畅达车行，怕是价格最低，电量也有保障的了，老板好说话，可以免费接车。&lt;/p&gt;
&lt;p&gt;路线是从环海西路往环海东路到小普陀，海风吹在身上，忽冷忽热。一路上会有很多草莓园、花海和骑行客。虽然道路在整治，但游客仍然络绎不绝。从水泥小路走过，从田野穿过，在一阵阵风里吹过。白鹭在蓝色的海面上起舞，从这棵树跳到那棵树。头顶上飘过一大朵一大朵的棉花糖般的云，阳光透过云缝形成了特殊的“佛祖光”。&lt;/p&gt;
&lt;h2 id=&quot;海舌公园&quot;&gt;海舌公园&lt;/h2&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/58defa3cc9517ca10ba04d899743bfe7-1777652608457.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/38407f2a007289352412f67501fed0ae-1777652611955.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/b7ae18ea47cd0d3697a98ed027785f55-1777652616727.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/0c78a5717fc525b048563cf50dd79635-1777652620714.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/dd04206020019f280f30350681fd87fb-1777652624566.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/549258972d425127ad479e3a29ddde57-1777652628760.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/9bbb42845d98a544277ce46e0b30b606-1777652632471.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/b7a4abed70ca3e053bff2d2dbac699be-1777652636540.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/a7940dcbc85711c48e8d1c0f5d921e8f-1777652640548.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;才村是后来才去的，可能比较靠近古城的缘故，已经有很多建筑都不是本来面目了，一律的白墙黑瓦粉饰着别样的图纹，没有什么其他特色。若是想看日出可以选这里歇脚，离洱海非常近，走路就能到才村码头。沿环海西路顺时针方向走，得穿过民居小巷。老奶奶背着小背篓，背篓里站着孩子，可能宋祖英说的背篓就是这种吧。大爷荷着锄头，开着三轮小车慢悠悠地过，几位阿伯一并坐在田埂上，抽着烟，说我听不懂的话。这是我所喜欢的。&lt;/p&gt;
&lt;p&gt;海舍公园由其形状确实像条舌头而得名，这里是天然的270°观景台。坐在树凳上，放眼望去，青山绿水，同样是秋天，但不见“白草红叶黄花”。眼前，草着了春天的色，水映着天的蓝和白。山那边的风吹送着云过来，水面泛轻波，草儿也跟人似的晃起来。金风玉露也胜不过眼前这打翻了的水彩画。恰好有两位写生者，在树下挥舞着笔墨，我看得出神了。&lt;/p&gt;
&lt;p&gt;对面就是喜洲古镇，距离古城大概18公里，历史上是南诏国的军事重镇，文化和工商业比较发达。这里有明清以来保存最为完好的白族民居，较出名和具代表性的属严家大院。当天人很多，只是买了一块喜洲粑粑便没做过多停留。这里的扎染比较有名，后来特地跑去周城体验，真心喜欢蓝渐变色的亚麻布袋。&lt;/p&gt;
&lt;h2 id=&quot;环海西路&quot;&gt;环海西路&lt;/h2&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/4e4cb10db2f08717d281ca1806c17b24-1777652709230.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/5fafd208825df867365103ba0eab1b93-1777652713711.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/888314d0779c161e3bbdbf9c46a96c2a-1777652717908.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/10270af95db94d17cad14298c0e046ef-1777652721294.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/71d030a783dd7de5da3c646bcbec5a88-1777652725794.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/021c2f8100578d6bd244400fbbf81f19-1777652730067.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/10826210ac173b485fe9c6078c03c0f8-1777652734124.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;一路心情大好，看到如此蓝的天。我之前以为喜欢的是天蓝色，但天蓝到底是个什么颜色，我也分不清楚，毕竟我都看过好些种不同的蓝天了。在一个秋夜，抬头看十四五岁的天空，是深邃又空洞的蓝色。之后看过天蓝是泛了白的，抹了灰的。我知道&lt;/p&gt;
&lt;p&gt;我现在可喜欢头顶这片蓝了，是洒了水的，有厚度一样。&lt;/p&gt;
&lt;p&gt;苍山十九峰十八溪，名字各自好听。峰有云弄、沧浪、佛顶、斜阳等，溪名为霞移、万花、隐仙、清碧之类。前几日据说下了雪，玥姐还发了洗马潭的视频，加上云雾肯定又如仙境一般。等雪融化，水肯定又会汇入洱海。苍山绵延北至洱源，南及下关，与对面的鸡足山相望，将古城和洱海围在其中，又放了一个风口，那边是下关。所以顺时针到了环海东路基本上就是逆风而行了。中途碰见几个小孩儿，丢了衣服在水里游泳，钻到桥洞下面去抓鱼，一脸天真模样，放言让我别走。&lt;/p&gt;
&lt;h2 id=&quot;洱海上关段&quot;&gt;洱海上关段&lt;/h2&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/6dae7a0b5aad73b9b1af7c02ef2f2598-1777652796162.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/953c8ec4855951c78eacaf55bd604e9a-1777652800155.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/b37098d37104f2d9fc33ba14b23561e1-1777652807681.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/5a3de2845580614ccf3a40d4169939b6-1777652811709.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/a585e9b1813b02cb497c50602c1f3922-1777652816141.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/e1da2f178e48bbe2a0a2f3398df89adb-1777652819985.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/7413c8f7f53d35a4dcb13e9f91cf12c6-1777652823986.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/26fa71baa9ddf0492bff0c89e99f2b4f-1777652827400.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/bb30502361448b2fcb610ed6b0b0ae84-1777652831731.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/ff29d89437eb4846134552abf076f240-1777652836274.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/35a7eba7b9750f669fbd6f9cb10234aa-1777652840642.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;车速慢了，电量渐少，只得在红山庙停留充电。路边会有很多小吃摊，买的是鱼虾炸成的串，还有并不怎么好吃的烤乳扇。此时距双廊大概六公里，这六公里后的风景是择日看的。因为在海舍看得忘我了，天色渐渐暗了，准备返程。尴尬的是充了两次电也才勉强返到喜洲，最后不得已找店家拉车，结果又被坑了。也许是领悟到没货比三家的痛了，之后古城逛得就比较细。人民路和洋人街的东西真的就是用来看的，想买请三思，比如同样的一本手工东巴纸，在人民路和护国路上差价有15元，手鼓尤克里里更是不用说了。复兴路北门段主要是衣物服饰，护国路上学生用品比较多，玉洱路上的价格会比较便宜。&lt;/p&gt;
&lt;h2 id=&quot;双廊&quot;&gt;双廊&lt;/h2&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/788339818f6133c872aadb7d41907a12-1777652899823.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/7c27e1a0b8824e958a880402e1763328-1777652903475.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/b5bff0bae74dd7f31864604b2dfcfb94-1777652907303.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/7510c398cc1ba2926feee39cd6f87a25-1777652911634.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/7641b108527bece3db1a44c01362d46a-1777652915597.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/0d16c943e7b56e0df1dc232d63278ae0-1777652919555.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/940175c42d8ea89068acb1925fd45bce-1777652923846.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/0a0ab75a0cf7bf8ed24fe1ef2810966a-1777652930772.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/7543456ebea323f332d601adda5d5664-1777652934598.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/96ef225ec8b324ba435099a2a9e64826-1777652938896.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;双廊目前正在进行排污整治，很多客栈都关停，有的只允许开一间客房作营生。说来也巧，拍到这边的风景都是夕阳迟暮的景象。除了路不好走被堵，看了半小时的尘土飞扬外，其他没什么了，毕竟我的槽点是低于社会平均值的。往里走可以看到还是有很多店铺在营业，大爷大妈坐一块唠着嗑，绣着花，像什么事也未曾发生过一样，花依旧很漂亮，双廊还是很美。&lt;/p&gt;
&lt;h2 id=&quot;挖色-小普陀&quot;&gt;挖色-小普陀&lt;/h2&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/54c9039a0005942e44c2f0474b647ba6-1777652991108.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/e3dbc91cff7402683dd393c3772f1802-1777652995687.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/1d72955f7f7c491a78e17030728909eb-1777652999949.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/f06ed94c3612b782e66c2a175145459e-1777653004776.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/c6bcc638ab52fdc2594acd86218facb8-1777653008518.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/57fe8b987406813998bab8fffecff86f-1777653013095.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/1a3c3da65013434e311bd52f40588744-1777653016968.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/3a30cef593ff54069781d2dc0014a598-1777653020616.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/e110bb120281a1df281bafe6e3fd8645-1777653024848.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/6e316e50e53a901ca1c805bd8ef1d532-1777653028507.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/50abafc95e9330c3698860436930038d-1777653032560.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/b6238d5a3ae3138fa07a8c9678311533-1777653036054.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/f0440d63948e377282672a00d954a1e0-1777653039980.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/b39b6e4b4391a50e4a5bbd1383d4ab0a-1777653044003.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;相比双廊，挖色的风景要清爽一点。水面如镜，清可见底。碧绿的青苔从岸边一直铺到水底，这之上是水草在招摇。一路上偶尔见到当地人乘着小船划破水面，清理水面。情侣们摆着尴尬的姿势拍着婚纱照，徒步的人也拿起相机各种风景抓拍。到了小普陀，没有见到白鸽子，只有小岛在水面伫立，不时有小船载一两位游客往返。据说是观音扔了一块镇海印在这，化成小普陀，于是上面理所当然地建起了一座观音阁。&lt;/p&gt;
&lt;p&gt;现在这个季节返程最好赶在太阳落山以前，否则你会瑟瑟发抖的。我还见到了上午出发时的两位戴草帽的小哥，他们刚抵达，愣是从环海西路一直走过来了。少说也有百二十公里吧，我服，敢情人家这才是旅游啊。&lt;/p&gt;
&lt;p&gt;古城白天到10点才慢慢骚动起来，相对来说人比较少，晚上会热闹一点。热闹也只是在那几条街，其他的巷子里住的应该都是神仙。要选住处的话，苍山门往西是个不错的选择，离人民路洋人街近。北门安静，南门热闹，吃的多交通也方便一点。想找安静的去处就往古城外围逛，走街串巷是个好选择。苍坪街上的床单厂艺术街区下午可以去一下，提前看看活动安排。里面的海豚阿德书店应该是整个古城最有代表性的书店了，洱海门的书呆子也还可以吧，老板时常一个人坐在前台，和和气气的。你可以去阿德书店与同志者畅聊，点两杯奶茶，看会书，累了就出来阳台看看楼下的表演，听听音乐，值得你花费半个下午。&lt;/p&gt;
&lt;h2 id=&quot;221省道&quot;&gt;221省道&lt;/h2&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/b8e5b4c10c241507268556166548a4a7-1777653098388.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/d6dbf84ef03b107bd040f4e60fbc08c1-1777653102168.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/5dad475579c1e4cad02489c6703e9c06-1777653105506.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/9a3ec243875c42e4c486fcf3f7334c0c-1777653110064.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/08a933289c258dd0abe9864fb6f528c4-1777653114147.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/c5a4e1edb1469eba6fc0af3fdbd3e1d4-1777653118210.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/4a3b08e67571b1b47ee36b88b115a87a-1777653121767.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/171bb2dda97ac82e7e0e3bac3f8c89cb-1777653125405.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/b77ee52efd80a256f4265522ee70ad8f-1777653129264.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/ea2ab155775bb78f35b110512377f338-1777653133388.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/cc615a777ccf121a1e4fa77c4529a57f-1777653140421.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/0345e9092e03ba51fd0971b6994961df-1777653144024.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/0a6c7fb3da0eb2d1ed573e265d6cb8f5-1777653148009.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;随后租了辆车往束河出发，走的是221省道而非高速，最大的好处是可以随意停车啊。一路上的风景也是比较震撼的，两侧青山相对出，小车一辆云中去。得益于当日的好天气，像穿行在画里一般，在214国道看洱海，心想春暖花开大概就是这个样子吧。&lt;/p&gt;
&lt;p&gt;在经过一段山路十八弯的折磨之后，终于步上了正轨，到了丽江机场高速，晕车也有好转。头顶的飞机似乎抬手就可以摸到，一架跟着一架，可见来丽江旅游的人还是很多的。路两侧是不同的风景，一面是山忽明忽暗，乌云铺盖下来，一面是夕阳给云朵镶了金边。“生活不止眼前的苟且，还有诗和远方的田野”，乘着车速飘了出来。&lt;/p&gt;
&lt;h2 id=&quot;机场高速-束河&quot;&gt;机场高速-束河&lt;/h2&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/5d1c7333b636a9c135a349f9e1b6e707-1777653218841.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/3d65dc59cb1c5cbf2542a1c447febb93-1777653222571.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/f23d5d9f0bc2765eade464f28d72d63f-1777653227261.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/9443939c40c3be6879c92d3cb6f35504-1777653231461.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/ed01856d883df97cb3ab1cadce2a349d-1777653236532.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/ecdba4e31fdddf64b4bcbf7bda283736-1777653241387.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/c478332b47c9c697c2612c82ba25ecf5-1777653245784.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/4c4559e8e1aa582bc48d6c0c79aaf9b1-1777653250373.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/ae64eb2f9c76babc8cae8dd85d478ace-1777653254873.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;到了丽江，明显感觉气温降了，或许由于海拔高了，也可能是前两日玉龙雪山刚降过雪。从外面整体看上去，丽江相比大理给人感觉要清爽，建筑也多了新色。从古城外围逛过，往里看一条条街道，似乎没有什么新意。没有停留，直接抵达束河一家客栈。抵达后预定的房间没有了，老板升级成了三楼的三人间，可以直接看到雪山。尴尬的是当晚热水泵坏了，客栈抢修需要从我们房间往天台去，于是又给换了一个家庭套房，既然都这样了，只好接受了吧，哈哈。&lt;/p&gt;
&lt;p&gt;束河古城的客栈建筑基本上都是砖木结构，老式黑瓦，很有年代感。青石板铺成的街道，被一条小沟渠一分为二，数米一座小石桥，几棵老树。树下阴凉，人在打着三人麻将，织着十字绣，远处还时而传来欢快的手鼓声。找了一家乡村烤鱼，坐在小院子里，太阳晒得热了。看见老板拿炭放在烤架里，鱼翻弄着，味道还不错。在大理吃的烤鱼是用红辣椒酱裹上鱼，再包上锡纸放于炭上烤，不辣反而偏甜，不喜欢。&lt;/p&gt;
&lt;h2 id=&quot;蓝月谷&quot;&gt;蓝月谷&lt;/h2&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/5a441852ab93e0c8cbce93a6a3e21bd5-1777653304355.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/24f2a8816d8ce298a4129c2688c0f076-1777653307977.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/4d9fa616865388b6b0f2c0cffe32249c-1777653311459.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/4b7873f2d3c78cbe537fba2bdfa37295-1777653316428.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/5cccead6c41dc9a1dfd7fe79acc7fa29-1777653320216.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/401983bd3a5c2f9d0fd14d90509eaeb5-1777653324883.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/946cdb31ed5524c6d32dbc319b3151f8-1777653328701.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/578165b2728115c9a04d1b3d408c86d5-1777653332581.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/7b190277d61a66f34497c80b00663eca-1777653336674.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/4cae585686be66cb6efa343b362af4cc-1777653341209.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/5c00943c9b658f21869f4a1a137de4d1-1777653345222.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;当晚跟老板聊天，顺便定了玉龙雪山的团，后来一路问下来，我们是最便宜的。六人一个团，团长也还好说话，当晚叫我把学生证带上可以半票，结果第二天没想起来这事，蠢死了。来玉龙雪山第一个景点是山脚下的蓝月谷，又叫白水河。雪山上的雪融化成水汇聚成河，河床是白色石灰岩，所以水底成白色，水中含有铜离子不能饮用。这么漂亮的景色让同行的一对小夫妻激动不已，拍照嗨了。男士自个玩得乐了，于是女方不高兴了，一路闹着小矛盾。再往前会看到有人骑着牦牛淌在水里，慢悠悠的。这里的水被隔成几个小瀑布，每段就成了一个景点，走过牦牛坪，团长要我们洗手，说洗完三运亨通——官运财运桃花运。水很凉，但我没碰，这样就升不了官发不了财也走不了桃花运了。&lt;/p&gt;
&lt;h2 id=&quot;玉龙雪山&quot;&gt;玉龙雪山&lt;/h2&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/7701a4de5ac3598e3e405435b2f4ace5-1777653392248.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/9dcd9a8fa77e468f07f33519fa8dc3f2-1777653395940.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/207dee3a5d8e875bb53e28d9523beb49-1777653399407.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/25c20aa28f5ffc4a65c667a224cc6de8-1777653403383.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/c0410645c972e3d291eef84f5713879c-1777653409260.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/87f5127c80dd1f863d8022084e8d0757-1777653413098.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/dab72ba9c3c1ae79cd7cffa5cca7ba4d-1777653416837.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/906113339ea0ec0ba6c5520b1661c00a-1777653420577.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/35b0d7cae61b080525eb81f6e2bb2635-1777653424925.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/b7aa84670a452836a4ee4b64d9fbe22b-1777653429000.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;之后要求团长接我们去吃午饭，土鸡排骨米线火锅，六个人围在一起，吃着饭谈谈天，说说接下来的行程。我对吃的不怎么感兴趣，很久没有碰到让我食欲大开的食物了，不过大家一致认为雪桃干是很不错的。貌似只能在山上买到，大研城里不知有没有。吃完歇息会便领了红大衣和氧气瓶准备登山了，起先以为穿着羽绒服就不用大衣，后来山风一吹感觉还是很有必要带着的。先坐大索道上山，起先加速有点吓人，之后速度平稳就可以正常看风景了。尽管女士们在叫喊，八人缆车还是很安全的，不会像之前坐过的两人座的那种，遇风就晃，还偶尔上下颠簸。十多分钟就到达山顶，之后有五百米的登山梯。由于天气状况上面一半被封了，只能走到两百多米。庆幸也只走了两百多米，不然氧气都不够了。估计是走得太快了，我有点跟不上，心跳加速，自己的氧气已见底。她把原本人手一瓶的氧气给我，照样没事人一样，其实我挺担心她的，毕竟身体好的人耗氧量才会大点吧图片。&lt;/p&gt;
&lt;p&gt;山顶上就是云里雾里的，最惊艳的就是风吹开云雾，阳光照在顶峰的雪上，白茫茫的，人一阵阵惊呼。胆子比较大的会爬到山上碎石堆里站着要求拍照，部分人干脆就席地而坐。奈何不了人多，看个大概就下了山。回去找团长，几个人竟然在打牌，怪不得上山前交代玩尽兴，不限制时间呢。随后返程，一路的天空都是蓝得很透彻，沿着山脚下这条路两侧都是小池，说是珍珠泉，俯视的话会看到共九十九颗，像珍珠项链一样。拿手机竟然拍出了点移轴的感觉。&lt;/p&gt;
&lt;p&gt;你大可以将此些当作我此次大理之行的全部了，毕竟也没什么好说的了。来大理不能抱有偌大的期望，否则你要是看到了这两天的景象，你会失落不止。天没那么蓝了，云也不多，田野里在焚烧着秸秆，天空是灰蒙蒙的颜色。要是运气不好，车从你身旁过还让你吃一下灰尘。但这就是大理啊，本本真真平平实实，这里有着该有的生活的模样。但一路走下去，你就会发现越来越多的惊喜，一次又一次的诧异，啊，原来是这样，跟我想象的不一样。旅行或许就是这样吧，从自己呆腻了的地方去别人呆腻了的地方，带回满心的欢喜和温暖的考量，再去看你熟悉的一切，似乎也会许以别样的眼光。要是这样说来，你的运气是极好不过的。&lt;/p&gt;
&lt;p&gt;旅行最好住一次青旅，这样你认识人听故事的机会多得多。毕竟有人的地方就会有江湖，而在大理，来自五湖四海的各路英雄好汉都偃旗息鼓，一把乐器，一壶煮酒，相忘江湖。很幸运认识了百合青旅的安楠和玥颖，两位女老板都是英语达人。尤其玥姐，我跟她想法很有共同点，她给我讲她目前家庭的状况和来大理的原因，几句话便泪下，我最见不得别人流泪，也不会安抚。场面一度尴尬，还好安楠姐来解场。微信上给她道完歉，聊了很久。现在她每天早晨会做几个小时的瑜伽，白天打理客栈，利用剩下的时间做成人一对一的英语辅导。平常写写字，线上运营客栈，这是她所喜欢的生活的样子。不得不提的是刚来的阿姨做饭真的很好吃，她告诉我们这是今生第一份工作，好幸运。晚上时常会有家庭聚餐，客人和老板一起吃饭一起分享故事。John来自加拿大，晚饭前刚抵达于是一起进餐，讲他的故事。最初在沈阳呆，而后去南京工作了四年，才从德国来到大理，准备呆一阵子再去美国。一边说趣事种种，一边拿两出两本护照给玥姐核对。玥姐中途也叫我说话，我推辞，我说适合做个倾听的人。搪塞过去，安楠请我和John去酒吧，在苍山门入口不远，我走过数次都没发现这里有酒吧。后面了解到，有些酒吧晚上才开放，换了白天的面目。酒吧不大，有一个茶案，放两个火炉，人不多，刚好围案一半。我们三人听歌，其余人在打牌喝酒讲故事，仿佛热闹都是他们的。歌手有三位，先后献唱合奏，风格不同，也都精彩。玥姐要我克服恐惧心理，多开口说。那就说呗，跟John尬聊知道他以前也在酒吧唱过歌，不过不会吉他。每首歌毕，他鼓掌最卖力，听完《上海姑娘》扭头对我们说在上海酒吧碰到让他心动的女子……&lt;/p&gt;
&lt;p&gt;炉子上的茶壶烧得通红，茶水续了一杯又一杯，是时候告别了，告别今晚，告别明天，我跟安楠说还会再回来的，玥姐临走时又送了两个银饰手链说做纪念。我挥挥手，将百合徽章别在包上，忽又想起之前在这做义工的黄凯现应该到了虎跳峡了。&lt;/p&gt;
&lt;p&gt;我不习惯在别人面前表露自己的想法，比较讽刺的是我却时常能知道别人的内心活动，也常听人说出来，这真是有点不公平。以前有人说我比较能装，我现在大概明白一点了，我一方面满怀希冀嘴上云云，另一方面谨小慎微做出来的成效却不见得那么明显或者说词不达意，不入人心。可能现在也都不喜欢被说假之类的，哪怕是玩笑带过，毕竟大家那么忙，想走心一点。这里就顺带说一下我的这个名字吧，人木言若。可以理解成不会变通，口舌木讷。也可以作休诺解，这里又引出鲁迅先生的一句老话：大话不宜讲得太早, 否则, 倘有记性, 将来想到时会脸红。全当告诫自己了，玩笑也罢。&lt;/p&gt;
&lt;p&gt;另一种说法是我比较会敷衍人。我想了想，这种情形大都发生在对方要求我有个明确的表态，或者说他们希望得到肯定的答复的时候。以前我的内心戏估计是这样的：还未发生的事都是说不准的，何必苦苦纠缠于此，顺其自然就好了啊。我的看法有那么重要吗之类，但这背后不得不说的是当你做出一个选择，你就得面临一个问题：承担责任。不论这种责任是一种义务或是影响，你都得背负起它。但这种责任不足以重到让我做不出选择。实际情况是我没有真诚的面对自己，我一直在纠结别人会怎么想，有点荒谬。就像我不喜欢拍照，我做不出来很自然的表情，我不知道那头面对的会是什么样的人，也不喜欢在很多地方看见自己。人一直得面临选择，然后承担责任，不论结果好坏，你都得一直继续下去。但是与我来说做出选择没有想象的那么容易。我告诉自己大可以先尝试一下，不行立马重来便是。而我身体里住着一个完美主义的理想主义者，他告诉我：不行，你不行那样草率，再想想有没有其他方式，这样那样可能会更好。这个时候一直隐匿起来的差不多先生又晃悠出来，漫不经心地说：何苦呢，差不多就行了，没多大点事。此时我就像一个看客，看着他俩各说有理，这时候时间就纠缠一团了。&lt;/p&gt;
&lt;p&gt;我告诉自己要真诚点待己，如此才能及人。并常常将自己置于儿子，朋友，恋人一系列的身份上，去反思哪些是我应该去做的，哪些我做得不够好的。但每当这时我内心就开始隐隐抗拒了，这不是真的我，我的躯壳仿佛被抽离了，他们在那兀自地嘲笑我，懦弱的胆小鬼。我就会想到要逃避，想要一个人待着，大理就是这样一个能让你逃避，只要是待着就很舒服的地方。但是神奇的是她又让你从另一面开始慢慢认识自己，包容自己。&lt;/p&gt;
&lt;p&gt;对，大理是包容的，任何人任何事在这里都是合理的，讲起来都像一段故事。人们既可以有时间相互侃侃交谈，也可以不屑干涉。两人面对面坐着不说话不会尴尬，这已然是常态了，人们早已深谙于心。你不用去解释什么，也不需要担心接下来该说什么。空气突然安静下来，你就好好享受便是。或者你换个地方，随意钻进一家人少点的店，坐下来，对老板说我要一盘故事。侠客们本身就带着故事而来，那么多故事的交集不知又衍生出多少新鲜出炉的下酒菜。那么多有趣的人做着有趣的事，这是我喜欢的。&lt;/p&gt;
&lt;p&gt;倘使我有机会开一家客栈，那我门前得有一条很深的巷子。进门是一大开间，正中摆着书桌，铺陈笔墨纸砚。来的客人要为自己画张自画像或者写首小诗。客栈要能看到天空，只开三间客房，其中一间是我的。然后我可以睡懒觉，早餐由客人随意做，午餐晚餐到我亲自给客人料理。客栈有一个小院子，四季花开不断，我会提供种子，客人走的时候要种下，然后采一朵带走。这是我想到的客栈的样子。&lt;/p&gt;
&lt;p&gt;有机会我还会坐上昆明去大理的火车，但这次要买七小时的硬座，对面是叔叔或者大爷。&lt;/p&gt;
&lt;p&gt;“小伙子，你是去大理玩啊？”&lt;/p&gt;
&lt;p&gt;“嗯对的，我第一次来大理，是来这边找人，找故事的。”&lt;/p&gt;</content:encoded></item><item><title>【沙溪】印记沙溪</title><link>https://blog.mdreame.space/blog/2026-05-01-%E5%8D%B0%E8%AE%B0%E6%B2%99%E6%BA%AA/</link><guid isPermaLink="true">https://blog.mdreame.space/blog/2026-05-01-%E5%8D%B0%E8%AE%B0%E6%B2%99%E6%BA%AA/</guid><description>茶马古道上保存最完好的古镇，赶集日的热闹、多才的老板阿茂、英国骑行客 Steven，沙溪慢得像时间停住了。</description><pubDate>Mon, 30 Oct 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;这是一篇&lt;a href=&quot;/history/wechat-029.html&quot;&gt;旧文&lt;/a&gt;，原发布于 2017 年 10 月 30 日。觉得有价值，于是重新整理发布。
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://img.mdreame.space/37d7d3adde2663be9293658266d12b48-1777610766243.webp&quot; alt=&quot;《难忘今宵》&quot;&gt;&lt;figcaption&gt;《难忘今宵》&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;在沙溪古镇一家名为印迹沙溪的客栈内，看着电视节目《朗读者》系列，听到这首歌，心有不舍。有不舍之人，有不舍之地。&lt;/p&gt;
&lt;p&gt;沙溪古镇位于中国云南剑川西南部，地处金沙江、澜沧江、怒江三江并流自然保护区域东南部，地理位置在大理与丽江之间，比较出名的景点是石宝山。沙溪是茶马古道上唯一一座留存比较完好的古镇。古寺庙，古戏台，古商铺，马店，古老的红砂石板街道，百年古树、古巷道、古寨门，一切都披上了浓重的历史感。&lt;/p&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/0cf2e61899da897c95e4a365d39c8eb6-1777609285376.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/8e3b0a52fce9fa4f7d9a983e9fbcda84-1777609298942.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/b14c705482755d3693f56476f27b52cd-1777609309109.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/2b1e502ff0d418a303f2b7bd45070f84-1777609313642.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/939785bb2a70ca664c7bde992aa5e769-1777609318326.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/32d4b0875162d3855dee51f8ede13ada-1777609324761.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/105898d14664a404d13e25dac34d4e00-1777609329775.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;我昨天傍晚来到这里，第一眼感觉是平常的一个乡村。寺登村下车之后往客栈走，已是夕阳西下，落辉印在土墙上成了金黄色，一位老奶奶扛着锄头从巷子里出来，路旁草垛边有几只鸡。感觉在意料之外却又在意料之中。拖着行李箱在石板街上走，声音很不和谐，惊动了人家屋顶的鸽子。走了大概百五十米，导航截止，我一看目的地竟然是正在装修，心凉了半截，不过知道了高德的尿性，往前走还是在街角找到了。&lt;/p&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/b9763dbba20b51a8d6eddb8d80faf5f6-1777609569439.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/fcee535c08287fc21cff93214cf81155-1777609573696.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/045e7091e2335b1c9134b25ef55a4a98-1777609578719.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/f1d1cf81132331167874d8e589ebd9a1-1777609582566.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/009be1d16d616fcbc12936d352e27119-1777609586746.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;进了屋子，杰哥一个人在前台坐着，这是个沉迷农药的男人，长得很高，很精神。办完手续，帮我拿完行李就继续奋战青铜了。你若来了，不要以为没有人，往柜台里看看，肯定会有一枚奇男子在那玩手机。&lt;/p&gt;
&lt;p&gt;进了院子，整个是一片绿。半边水池，半边多肉绿植。常春藤就环绕四周，可以知道平常也是经过很细心打理的。客栈整个都是木结构的，房间没有门牌号，代之的是当地的乡村名，如燈塔、長樂、溪南。听说是阿茂在木牌上写好再挂在门侧，小隶，汉古秦风。山人阿茂是客栈的老板，听说也是镇上学历最高的人。在云南大学读完研究生回来开了客栈。遗憾的是一直没有见到他本人，有关故事都是从别人口里听说的。之后有机会加了微信了解到，他目前在另一处又开了家茶社，平日里常出没在屋头巷尾，为新建筑做彩绘。阿茂善书法、纂刻、音律、彩绘，真是“斯人若彩虹，遇上方知有”。值得这样说的，还有一位北京来的阿姐，真的是太客气了。凡出口都是“您”开头，带点北京味儿，热情而知趣。她在这已经待了两周，一边给我介绍这里的情况，让我尝试将这当成家，一边说她自己的感受。她在这做义工，即将返回北京，看着杰哥，语气有不舍。杰哥这个直男两句话就会急眼，而她会一直调和，从他俩一直一起去吃饭我就知道他俩肯定有故事，貌似八卦了，打住。&lt;/p&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/c3588aba175e30c4f5620a7f6f34454a-1777609720537.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/794ec379e466ce831ddc1f30c138e8c4-1777609724799.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/665ca5734de96cdcf52c14d800ff9230-1777609728932.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/3c304c8c40c5afd6cf5206bada463bea-1777609732936.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/f32d2e2ca8695e9b0969da234b75541b-1777609737254.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;当晚就出来逛逛，会看到从巷尾缓缓踱步出来的奶奶，才放学的孩童，立马觉得亲切而平静。沿着北古宗巷走，发现天空真的是格外的蓝，夕阳在土墙的映衬下多了一丝沧桑和庄重。&lt;/p&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/f557cd1cfb7dee26f5580d1b46fc7f45-1777609808460.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/15431d5f29aeaf009860577174887d6a-1777609812372.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/22cd7ddc0e5a94b85e536536a69a1862-1777609816040.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/6dd61f2c746a3e908c6e41a60f34e4b2-1777609819477.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/7f830f90c333108d51b2cdb724ece2cb-1777609824322.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;有的房屋墙体已经开裂，但是却照常住着人，没有要搬走的意思。沿路过来景色大同，没有翻新的痕迹，周边很安静，没有鸡鸣，没有犬吠。&lt;/p&gt;
&lt;p&gt;在寺登街边思云斋点了餐，阿姨拿着一只大陶碗上来，我纳闷做何用，原来只是给我盛冲餐具的水，还以为这边吃饭有什么特别的讲究，尴了一尬。之后阿姨就一直看着我吃，看着我笑。老板就坐在桌边看着屏幕投的电影，旁边躺着听话的淘淘。期间来了位客人，应该是熟客，打招呼的方式颇有些江湖中人的味道。老板是大理人，老板娘是池州人，是通过各自朋友介绍认识，然后三年前来此做了客栈。那时候人不多，也不像现在这样热闹，客栈几乎没有盈利。他说，两人经历的都比较多，想歇息歇息。&lt;/p&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/6c3757e1baad90bc0009898e0a14f791-1777609890327.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/380be34c752e4040e041b4d4c5520355-1777609894009.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/83b8d55d70c0aad52e8271b14b63ffc4-1777609897870.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/db1b5f7694c3e96a34860bd9d5e1eb4a-1777609902193.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;我想这边客栈或者手作的主人怕大都不是本地人，可能是想找到生活的另外一种可能，不用急急忙忙，走马观花。&lt;/p&gt;
&lt;p&gt;四方街在古镇算是处于核心位置，因其形状为长方形而得名，南侧是古戏台，北面是座庙。中间有棵大树，投影几乎占了一半的四方街，其余是些手作坊或者食店。这里是镇上最为重要的地点之一，火把节、集会都会在这举行，每隔一段时间还有“红军”归来。因此也吸引了很多学生结伴来此写生，同时这棵树也被当作衡量摄影者水平的一个参照。&lt;/p&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/419f7d261ff116040c6cda64c017514e-1777609953092.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/f629c766e0fdbd3381421b4d83c96297-1777609957137.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/d61e829ab49b96c941d581b7acca20e9-1777609960616.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/f8d62cc116c1b6cefb191edc3bb15db0-1777609966753.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/ca2328729156b44e5d314d13d1bef0f3-1777609971086.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/65e7ae25c54989d3a42a195a09501b98-1777609975232.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;我找了个手工铺钻了进去，参观了一下便跟issa聊了起来。她也同样不是本地人，两年前偶然走到沙溪，就留了下来。学的专业是计算机软件设计，然而之后却跑去东南亚做酒店，期间学习手工艺赚外快。她说话声音很轻柔，介绍饰品时也很坦诚直率，没有一点委婉或者圆滑之说。喜欢着蓝色，头发编了两个麻花辫，在我经过允许拍照时，她果然还是不能自然地看镜头，实在难以让人将其与之前的经历联系起来。此外，就生活方式来讲，自身也多了一种可能。&lt;/p&gt;
&lt;p&gt;不知觉天色已晚，处于顾虑还是不太敢在外面久留，毕竟“山高皇帝远”。与issa道别，就沿着原路返回了，路上没有几盏灯，更别说人了。灰黄色的灯光照不亮地面，我打开手电，播放音乐，加紧脚步。事后发现根本没必要，完全可以一个人慢慢从巷头踱步到巷尾，头可以不用抬一下，待闻到一阵桂花香便知已至客栈。而后阿姐又在打招呼，歇息片刻后要我写毛笔字，我不好推辞就临了起来。写着自己不由的发笑，阿姐与我拍了照后，帮杰哥摆好沙发，开始放映电影。&lt;/p&gt;
&lt;p&gt;约莫半小时后，一行广州人抵达客栈，办理入住。别问我怎么知道是广州人的，其实从他们过来看我写字，叫我第一声“靓仔”时，我就知道啦（haha）。一位大伯拿出半途摘的离子，去客栈厨房煮好了，分与众人吃，嗯，味道挺不错。&lt;/p&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/154c0330143ac0e15e20a45d4ea3f9e6-1777610025835.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/b34321405da31f2e57005622ad49a041-1777610029956.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/022e0a88dfa8dee43863463459c4d41d-1777610034182.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/1c4038c02f2bf1ca5377dee83194e5f8-1777610038584.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;这次来得实属巧，周五正好是每周赶集的时间，镇上人们在此时买好一周所需的东西，平日里就不需要再过多添置。集市一般9点开始了，不过得等到10点左右算是热闹了起来。这天我7点醒了，来到客栈前厅，大门是用根柱子撑的，没有拴起来。我开了门，看到大爷骑着电动车往田地里去。起得早的好处就是可以看到叔叔阿姨背着背篓，推着小车，赶着牛羊出发。集市分为三个地方，一个在古镇外东南面的黑潓江旁，主要是牲畜的交易，牛、马、羊、驴、猪等。一个是在古镇西北面，主要供人购置服饰、家电和日用品之类。最热闹的属镇中心寺登街，大概一公里，路两侧小摊上摆的是蔬果小吃零食之类食品，有向日葵、调味酱、刚才采来的松茸等等。&lt;/p&gt;
&lt;p&gt;这边早晨温度很低，而且大多数摊主是没有吃饭的，这倒也容易，直接叫唤不远的面馆端来碗热面，加点辣子喝下去，人就暖了。赶集的人各个年龄段都有，仿佛是每周一次的聚会，因为大家彼此都认识，见面都高高兴兴，客气地问好。让我印象最深刻的产品就是广播里喊的老鼠药：不怕你老鼠多，就怕你没老鼠。老鼠死得多，老鼠死得快。不用捞米，不用老面，老鼠就死在旁边。人都是用小车推着音响沿街走的，再配上史诗级的BGM，你可以想象当地人对老鼠有多深恶痛绝。在这么热闹的街上走着，你依然可以看到似乎不该有的平和：来往的人会停下走盘棋，年轻的年迈的依然坐着天能聊到一起。&lt;/p&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/66d3b6ca022139603c22e2064bb6b142-1777610095076.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/a4508ec20cc2c600fc7015772f2c1615-1777610100595.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/76a6727b14ccd84a95186165e5403e6d-1777610105119.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/8fbbfb1cc6e68e5bbaef2bd51e44a386-1777610108776.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/4ccd5a75eefc3a2e6c9f65530d9564fa-1777610112846.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/db1d5dd2128dfb45091dc7bd65308e91-1777610117951.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/82a050904e17533480055667c6c52507-1777610122877.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/193cc11d93a4dd56473c9ead9e885087-1777610127512.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/31b2f12e48ab0a2526fe898e69d903ab-1777610131469.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/a938f198b329e0b442d36443961d4786-1777610138373.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/a26aed10054eb91f84bc04c754fb3af4-1777610141283.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;赶集结束，我便在寺登街的邮局对面租了辆小毛驴，40元一天，押金100，可以骑40公里左右，跟老板若没电可以免费接回。相比大理，这算是很便宜的，而且经我实验能跑的路程远不止40公里，让我惊讶的是竟然能飚到60码，并且爬坡杠杠的。兴致冲冲骑了5公里到金树禾村找张师傅来体验竹编，听说这里可以邮递，结果电话那边应该是他妻子，说着云南话，一句不懂，结果就不了了之了……不过天气很好，微风不噪，沿途风景不错。随后来到沙登箐—石宝山的后园，有少量石窟。一路上无人，倒是有很多蜘蛛，还有黄的、白的、橙黑相间的蝴蝶。寺庙没有开门，也没有人来过的痕迹。20分钟登了顶，上得太急了，呼吸不太顺畅。山顶视野很不错，就是有点晕，也不敢继续往其他山头去了，否则返程太远，我担心小毛驴丢了。&lt;/p&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/09ac2448559eca380603ea24a08d3b2b-1777610266940.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/c62f55ed70d9b5a151d9694e8517c6a4-1777610270870.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/7b65f365e308200ed6acf3811a738c94-1777610276013.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/4dbced921df0e30396182799663cbe7c-1777610280568.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/dca7d76a65af660f209afd33694d1732-1777610285314.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/ca1663b30f4dd468526f87fb310b37b8-1777610289433.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/bbd0b5cde198ff1bd3b7e15f2cee7729-1777610294052.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/92b4b3d586af5356121874d4764e4799-1777610299078.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/1eb5d09e69cb01db395c241a745c8a7b-1777610303383.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/2a085611012b3183ffe7d0fbbdb4f441-1777610307011.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/8630a99f2ff94c79b8d3dbe6813fe76c-1777610311154.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/a8cbc328ea44b565da36a8dbdf6fcc54-1777610316269.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;沙溪给我的感觉是恰恰好，安静平和，也可能是因为现在未经充分开发。寺登街上的店铺得等到10点之后才算营业，人们都不急，可能习以为然了。很多店主都是年迈的老人，天气好时坐在门前的水渠前，阳光渗过柳树枝桠漫下来，树影斑驳，时间这时候就慢了，恍如隔梦，”门前流水尚能西“了。手作里的姑娘不管行人或看客，只顾做着自己手上的活。街上大叔牵着两只小短腿在遛，姑娘就在门前的流水浣洗衣裳。大爷翘着二郎腿，拿着褐色长烟斗，看着来往的人，不时抽一口吞吐起来，烟雾在眼前飘散。&lt;/p&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/4ebce20d6311df8de114a0025e92836e-1777610385485.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/a24f8091cdf93c907211e6f8d3098b01-1777610395412.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/a1c28b065ecf6c09f43bfef2d58d85e9-1777610400731.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/3681bcdb4f1730b2ec37406a36668150-1777610407916.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/7ecb94c7cb2fb7d17985467b26fd34f0-1777610417710.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/c0202c5dd8b6d16adada760583a9173d-1777610423240.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/74e80cdc1c480a6a5d43d285ecbf0463-1777610427830.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/9aa2e746efb852666f034d11b8a96189-1777610431621.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;沙溪美得有点不真实，随手一拍就是画一般。即便在画里，日子也很悠缓绵长。随意走进一个巷子，你能发现有学生在速写白族的建筑，两三个一群，写累了就靠在柱子或者门上。行人大叔也停下来观看并且请我给他拍照。冷酷认真的牛仔哥，作画水中沚，一处细节反复调色，涂抹。马在一旁安静的吃着草。鸭子与鹅顺着水淌，将头伸进水中觅食。小哥低头又抬头，我静静地看着，没有说话，觉得这样就很美好。走累了就坐在石凳上休息，又有只狗跑过来。阳光落在身上，很暖。&lt;/p&gt;
&lt;p&gt;沙溪目前道路及水质都在维修整治，危房也不断翻新，都说束河是十年前的丽江，而沙溪是十年前的束河，就是不知沙溪能否再撑过10年。玉津桥头有个驿站，外面竹子上拴着好些匹马，应该是用来供人游玩骑行的。镇子小，马走不开，所以相关人员与旅游机构合作推出远足体验套餐，走线上路线。一行人会骑着马穿过田野，采采菌菇，徒步登山，会跟马四爷一起吃马帮饭，听马帮故事，不过故事终究成了故事了。但我依然相信有些东西是不会改变、不会消失的。&lt;/p&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/44140a0e63f5ff53a505449b60db601d-1777610552654.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/7534807797de215831c158c868dacb04-1777610556796.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/4631052f9b5b476c0cd9515eddde0e5d-1777610561025.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/e10fe16ea67f4c2459c5cd7bd568e48d-1777610565764.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/328ef91fc6b3125dcf9efaf89d028d81-1777610570616.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;沙溪很小，小到什么程度呢，几乎镇上的每个人都可能是认识的。两位老人在街角碰面，几句话就聊开了，手还不停地比划着。那一行广州人一天之内能碰见三次，还见到思云斋主人早晨带着淘淘出来活动。虽然小，这座城以及这里的人让人觉得很朴实本真。我相信这是沙溪会出现如此多老外的原因之一。&lt;/p&gt;
&lt;p&gt;Steven是一个英国小伙，从伦敦来中国骑行，从大理往云南，找了沙溪作为歇脚地。后面我知道他竟然是碰巧骑来这里，运气也是太好了，我都不敢想象近2小时的车程会有多远，更别提若找不到落脚地会怎么样。当晚，他要去翕庐吃晚餐，要求是只吃素菜，最好有 fried cheese 或者 mushrooms.老板上了一盘油炸羊乳饼，一份白炒菌，一叠豆苗菜。Steven各种称赞之后说他并不想要这么多盘子，像大杂烩一样的就好。我才知道他并非素食主义者，完全是为了省钱才这样。但是云南的菌类却是比肉还贵啊，强烈建议写进十八怪。结果是他身上没有足够现金，只好帮他付完去ATM取款，实在是没想到老外这么不坦率。晚上又被MasterCard坑了一把，手段用尽无奈地方太小取不出来。于是加个微信，尬聊了会便分道扬镳。他邀请我去伦敦，我答应着，其实我想体验一回骑行才是真的。&lt;/p&gt;
&lt;p&gt;今晚给我发消息说翻山越岭终于到了束河，我可真是操碎了心那。我觉得他只会三句话，一句你好，一句谢谢，还有一句“我想要soybean milk和fried bread”。我竟然没反应过来，豆奶和油条……希望他一路顺风吧，不要随随便便就被人坑了。&lt;/p&gt;
&lt;div class=&quot;gallery not-prose&quot;&gt;&lt;p&gt;&lt;img src=&quot;https://img.mdreame.space/8f72fd3b1e1f8368e537ae1f03a0e4a1-1777610618445.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/795256a98987fd0e56eb6ca06bbbfe3a-1777610623112.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/ce2e66ebc9e9d7a862c52a07f7f454a3-1777610627076.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/755ae3e35555a7e010f0df14dffdf149-1777610631187.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/ec7f71dabc4fe0f2211814dd8488cde0-1777610635131.webp&quot; alt=&quot;&quot;&gt;
&lt;img src=&quot;https://img.mdreame.space/5f06b8177bf4be3ab41aab54b8d30710-1777610639016.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;说到翕炉，就不得不提美食了哈。作为本地评分最高的一家民宿饭店，翕炉真是当之无愧的。饭馆本来是两位老人经营，在04年就已经开张了，还曾经获得在上海举办的民宿美食比赛的第一名，老掌柜一边跟我介绍，一边指着获得的牌匾。一会菜就上来了，一份香茅草排骨，一碗豆苗菜汤。香茅草清热去火，系在排骨上，香气似乎也一层层的萦绕在肉的表面，再渗进去。另外香茅草可以吸油，让排骨口感紧实，再在盘底铺上青菜，不会显得一点油腻。一口下去，皮肉脆，嘴里一半排骨一半香茅草，唇齿间弥留着香味，经久不去，后味无穷。配上豌豆苗菜豆腐汤，真的是很均衡。&lt;/p&gt;
&lt;p&gt;另外这家馆子对面有一家古道惠风饭店，特点是就坐在路边方桌子上，玻璃桌面下铺着扎染布。特色菜必点的就是炝香鸡，用的乌鸡，比较可贵。一口下去有厚重的味道，无意咬一颗花椒，麻的感觉像传染病一样在味蕾上跳动传递。非常有味道，配上清淡点的古树花炒蛋，完美。&lt;/p&gt;
&lt;p&gt;吃也吃了，玩也玩了，该回了。当晚回房的路上，看到一间客栈门上了锁，里边却开着灯，并且循环放着一首歌，这老板肯定是个有故事的人。我坐在门前台阶上，听了几遍，默默点了红心。&lt;/p&gt;</content:encoded></item></channel></rss>