<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
  <title>红枫吟 - 生活</title>
    <subtitle>风落花语风落天，花落风雨花落田.</subtitle>
  <link href="https://honmaple.me/posts/life/atom.xml" rel="self" type="application/atom+xml"/>
  <link href="https://honmaple.me/posts/life/"/>
  <generator uri="https://github.com/honmaple/snow">Snow</generator>
    <updated>Fri, 21 Aug 2026 03:43:24 +0000</updated>
  <id>https://honmaple.me</id>
    <entry xml:lang="zh">
      <title>我从未爱过这个世界</title>
      <link href="https://honmaple.me/posts/2026/08/i-have-never-loved-this-world/" rel="alternate"></link>
      <published>Fri, 21 Aug 2026 01:56:08 +0000</published>
      <updated>Fri, 21 Aug 2026 03:43:24 +0000</updated>
      <author>
        <name>honmaple</name>
      </author>
      <link rel="alternate" href="https://honmaple.me/posts/2026/08/i-have-never-loved-this-world/" type="text/html"/>
      <id>https://honmaple.me/posts/2026/08/i-have-never-loved-this-world/</id>
      <summary type="html">&lt;p&gt;
  &lt;a class=&quot;block max-w-full no-underline&quot; href=&quot;https://s.libforest.com/images/2026/08/%E6%88%91%E4%BB%8E%E6%9C%AA%E7%88%B1%E8%BF%87%E8%BF%99%E4%B8%AA%E4%B8%96%E7%95%8C.png-show&quot; data-img-lightbox data-gallery=&quot;page-images&quot; data-type=&quot;image&quot;&gt;
    &lt;img data-src=&quot;https://s.libforest.com/images/2026/08/%E6%88%91%E4%BB%8E%E6%9C%AA%E7%88%B1%E8%BF%87%E8%BF%99%E4%B8%AA%E4%B8%96%E7%95%8C.png-thumb&quot;
         alt=&quot;True&quot;
         decoding=&quot;async&quot;
         class=&quot;lazy mx-auto w-full cursor-zoom-in rounded-md &quot;&gt;
  &lt;/a&gt;
  &lt;link rel=&quot;stylesheet&quot; href=&quot;https://honmaple.me/libs/glightbox/glightbox.min.css&quot;&gt;
  &lt;script src=&quot;https://honmaple.me/libs/vanilla-lazyload/lazyload.min.js&quot; defer&gt;&lt;/script&gt;
  &lt;script src=&quot;https://honmaple.me/libs/glightbox/glightbox.min.js&quot; defer&gt;&lt;/script&gt;
    &lt;script src=&quot;https://honmaple.me/js/lazyload.js&quot; defer&gt;&lt;/script&gt;
    &lt;script src=&quot;https://honmaple.me/js/lightbox.js&quot; defer&gt;&lt;/script&gt;
&lt;/p&gt;
&lt;p&gt;我貌似很少在网上分享我的生活，我的博客从建立起到现在已经快11年了，除了一些技术上的流水账之外，关于生活的记录可谓寥寥无几，即使有，也总是藏着掖着，生怕有人看出点什么。&lt;/p&gt;
&lt;p&gt;可能是为了隐私，但我仔细想来，更多的可能是我根本就没有分享的欲望，小到看了一部电影，大到亲人离世，总是觉得生活中的琐事不值得记录，更不值得分享。&lt;/p&gt;
&lt;p&gt;我也曾想记录一些生活上的琐事。 比如刚拿到驾照的那天，我兴致勃勃的坐在电脑桌前，我想完整的记录自己学习驾照的点点滴滴，我想分享刚拿到驾照的喜悦，我也想分享我为什么毕业后才鼓起勇气考驾照，我想仔细阐述四年级时遇到的车祸才导致我此后十余年对汽车有着深深的敬畏，但我没有，我写了一个标题，标题名称为《四年级时的阴影，我用了二十年来消除》，但也只有这么一个标题，然后它就这么静悄悄地躺在文件夹里，过了一年又一年，写它的人再没有想起并打开它。&lt;/p&gt;
&lt;p&gt;还记得大学毕业那年，朝夕相处四年的室友即将分别，其中一个室友的话我印象特别深刻，这段话是对室友A说的，他真的很担心室友A，因为室友A太容易相信别人了...&lt;/p&gt;</summary>
      <content type="html">&lt;p&gt;
  &lt;a class=&quot;block max-w-full no-underline&quot; href=&quot;https://s.libforest.com/images/2026/08/%E6%88%91%E4%BB%8E%E6%9C%AA%E7%88%B1%E8%BF%87%E8%BF%99%E4%B8%AA%E4%B8%96%E7%95%8C.png-show&quot; data-img-lightbox data-gallery=&quot;page-images&quot; data-type=&quot;image&quot;&gt;
    &lt;img data-src=&quot;https://s.libforest.com/images/2026/08/%E6%88%91%E4%BB%8E%E6%9C%AA%E7%88%B1%E8%BF%87%E8%BF%99%E4%B8%AA%E4%B8%96%E7%95%8C.png-thumb&quot;
         alt=&quot;True&quot;
         decoding=&quot;async&quot;
         class=&quot;lazy mx-auto w-full cursor-zoom-in rounded-md &quot;&gt;
  &lt;/a&gt;
  &lt;link rel=&quot;stylesheet&quot; href=&quot;https://honmaple.me/libs/glightbox/glightbox.min.css&quot;&gt;
  &lt;script src=&quot;https://honmaple.me/libs/vanilla-lazyload/lazyload.min.js&quot; defer&gt;&lt;/script&gt;
  &lt;script src=&quot;https://honmaple.me/libs/glightbox/glightbox.min.js&quot; defer&gt;&lt;/script&gt;
    &lt;script src=&quot;https://honmaple.me/js/lazyload.js&quot; defer&gt;&lt;/script&gt;
    &lt;script src=&quot;https://honmaple.me/js/lightbox.js&quot; defer&gt;&lt;/script&gt;
&lt;/p&gt;
&lt;p&gt;我貌似很少在网上分享我的生活，我的博客从建立起到现在已经快11年了，除了一些技术上的流水账之外，关于生活的记录可谓寥寥无几，即使有，也总是藏着掖着，生怕有人看出点什么。&lt;/p&gt;
&lt;p&gt;可能是为了隐私，但我仔细想来，更多的可能是我根本就没有分享的欲望，小到看了一部电影，大到亲人离世，总是觉得生活中的琐事不值得记录，更不值得分享。&lt;/p&gt;
&lt;p&gt;我也曾想记录一些生活上的琐事。 比如刚拿到驾照的那天，我兴致勃勃的坐在电脑桌前，我想完整的记录自己学习驾照的点点滴滴，我想分享刚拿到驾照的喜悦，我也想分享我为什么毕业后才鼓起勇气考驾照，我想仔细阐述四年级时遇到的车祸才导致我此后十余年对汽车有着深深的敬畏，但我没有，我写了一个标题，标题名称为《四年级时的阴影，我用了二十年来消除》，但也只有这么一个标题，然后它就这么静悄悄地躺在文件夹里，过了一年又一年，写它的人再没有想起并打开它。&lt;/p&gt;
&lt;p&gt;还记得大学毕业那年，朝夕相处四年的室友即将分别，其中一个室友的话我印象特别深刻，这段话是对室友A说的，他真的很担心室友A，因为室友A太容易相信别人了，即使被别人利用，即使单方面的付出，室友A也总是会热心甚至无偿的帮助其他人，他很担心室友A走进社会后会被人欺骗；而对于室友B，他并不担心，因为室友B有着一个女朋友，他的女朋友会与他携手共进；对于室友C，他也不担心，因为B考上了研究生；对于室友D，他也不担心，因为C喜欢玩游戏。&lt;/p&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;
</content>
    </entry>
    <entry xml:lang="zh">
      <title>换灯</title>
      <link href="https://honmaple.me/posts/2026/07/change-light-bulb/" rel="alternate"></link>
      <published>Thu, 23 Jul 2026 10:49:27 +0000</published>
      <updated>Fri, 21 Aug 2026 00:58:26 +0000</updated>
      <author>
        <name>honmaple</name>
      </author>
      <link rel="alternate" href="https://honmaple.me/posts/2026/07/change-light-bulb/" type="text/html"/>
      <id>https://honmaple.me/posts/2026/07/change-light-bulb/</id>
      <summary type="html">&lt;p&gt;
  &lt;a class=&quot;block max-w-full no-underline&quot; href=&quot;https://s.libforest.com/images/2026/07/%E6%8D%A2%E7%81%AF.png-show&quot; data-img-lightbox data-gallery=&quot;page-images&quot; data-type=&quot;image&quot;&gt;
    &lt;img data-src=&quot;https://s.libforest.com/images/2026/07/%E6%8D%A2%E7%81%AF.png-thumb&quot;
         alt=&quot;True&quot;
         decoding=&quot;async&quot;
         class=&quot;lazy mx-auto w-full cursor-zoom-in rounded-md &quot;&gt;
  &lt;/a&gt;
  &lt;link rel=&quot;stylesheet&quot; href=&quot;https://honmaple.me/libs/glightbox/glightbox.min.css&quot;&gt;
  &lt;script src=&quot;https://honmaple.me/libs/vanilla-lazyload/lazyload.min.js&quot; defer&gt;&lt;/script&gt;
  &lt;script src=&quot;https://honmaple.me/libs/glightbox/glightbox.min.js&quot; defer&gt;&lt;/script&gt;
    &lt;script src=&quot;https://honmaple.me/js/lazyload.js&quot; defer&gt;&lt;/script&gt;
    &lt;script src=&quot;https://honmaple.me/js/lightbox.js&quot; defer&gt;&lt;/script&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;这样的灯已经很少了，虽然网上也能买得到，但我想着既然坏了，不如就换成现在比较常见的平板灯，或者LED灯。为什么想到了LED灯呢，因为现在只是灯管坏了，但原本的面板遮罩并没有坏，之前我也换过卧室的灯，只需要一个LED圆形灯盘，利用磁铁直接就能吸附在灯上，盖上灯罩...&lt;/p&gt;</summary>
      <content type="html">&lt;p&gt;
  &lt;a class=&quot;block max-w-full no-underline&quot; href=&quot;https://s.libforest.com/images/2026/07/%E6%8D%A2%E7%81%AF.png-show&quot; data-img-lightbox data-gallery=&quot;page-images&quot; data-type=&quot;image&quot;&gt;
    &lt;img data-src=&quot;https://s.libforest.com/images/2026/07/%E6%8D%A2%E7%81%AF.png-thumb&quot;
         alt=&quot;True&quot;
         decoding=&quot;async&quot;
         class=&quot;lazy mx-auto w-full cursor-zoom-in rounded-md &quot;&gt;
  &lt;/a&gt;
  &lt;link rel=&quot;stylesheet&quot; href=&quot;https://honmaple.me/libs/glightbox/glightbox.min.css&quot;&gt;
  &lt;script src=&quot;https://honmaple.me/libs/vanilla-lazyload/lazyload.min.js&quot; defer&gt;&lt;/script&gt;
  &lt;script src=&quot;https://honmaple.me/libs/glightbox/glightbox.min.js&quot; defer&gt;&lt;/script&gt;
    &lt;script src=&quot;https://honmaple.me/js/lazyload.js&quot; defer&gt;&lt;/script&gt;
    &lt;script src=&quot;https://honmaple.me/js/lightbox.js&quot; defer&gt;&lt;/script&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;这样的灯已经很少了，虽然网上也能买得到，但我想着既然坏了，不如就换成现在比较常见的平板灯，或者LED灯。为什么想到了LED灯呢，因为现在只是灯管坏了，但原本的面板遮罩并没有坏，之前我也换过卧室的灯，只需要一个LED圆形灯盘，利用磁铁直接就能吸附在灯上，盖上灯罩，还是原来的样子。&lt;/p&gt;
&lt;p&gt;我在多多上下单了之前的同款但更低瓦数的LED灯盘，但快递实在是太慢了，大概三天时间才到。于是我又研究起另外一种款式——平板灯，在纠结了几天之后，我立马在京东下单了一款小米的面板灯，毕竟京东最大的优点，就是它快，它送的非常快，当天晚上下单，第二天早上就能送达。我还记得上午接到京东快递的电话后，我专门打开了多多，看了一眼三天前购买的快递，嗯，还在派送中，这很正常。&lt;/p&gt;
&lt;p&gt;换灯并不是一件难事，我也已经换过很多次了，最重要的事只有一个，那就是一定要关闭电源，而我，选择直接关闭总闸。后面的事情很顺利，拆除原来的灯盘并重新接线，有意思的是，多多买的LED灯盘还额外赠送了一个接线器，而小米的面板灯就只有一个灯和一本说明书，最后当然是毫不客气的把送的接线器用到了面板灯上。&lt;/p&gt;
&lt;p&gt;接好线后，打开总闸，接入米家测试了一下人来灯亮，人走灯灭，一切正常。至于另外一个LED灯，我把它换到了主卧的卫生间，那盏灯没什么大毛病，就是偶尔会闪烁，希望这次能够一次性解决吧。&lt;/p&gt;
</content>
    </entry>
    <entry xml:lang="zh">
      <title>原神深渊讨论</title>
      <link href="https://honmaple.me/posts/2026/07/talk-about-genshin-abyss/" rel="alternate"></link>
      <published>Sun, 05 Jul 2026 13:32:57 +0000</published>
      <updated>Fri, 10 Jul 2026 03:44:01 +0000</updated>
      <author>
        <name>honmaple</name>
      </author>
      <link rel="alternate" href="https://honmaple.me/posts/2026/07/talk-about-genshin-abyss/" type="text/html"/>
      <id>https://honmaple.me/posts/2026/07/talk-about-genshin-abyss/</id>
      <summary type="html">&lt;blockquote&gt;
&lt;p&gt;最近在网上关于原神&lt;strong&gt;法涅斯&lt;/strong&gt;的立场和别人有了争论，事情的起因是我看到小破站的评论区里总是会有人赞同法涅斯，认为是法涅斯拯救了提瓦特，但对于原神世界观的历史来说，这确实挺奇怪的，法涅斯已经是一个非常明确的侵略者，我真的想不通为什么会有那么多人认可法涅斯的做法，于是有了以下的讨(争)论(议)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;A： 法涅斯这种明确的侵略者都有人洗地啊，如果法涅斯不来，龙族的月幕计划也就是现在的虚假之天就会成功，火龙修库特尔也有抗击深渊的文本，即使是葬火之战深渊尼伯龙根归来那也是清醒的尼伯龙根，唤醒修库特尔，囚禁三月女神，改造天基武器，最后才向法涅斯宣战，你管这叫被深渊控制？最后散落在提瓦特的深渊那也是尼伯龙根战败后才掉落的深渊碎片。换句话说，就算提瓦特被毁灭，那也是人家龙族内部的事，法涅斯这个侵略怎么者在某些人口中还变得高大上起来了&lt;/p&gt;
&lt;p&gt;B： 尼伯龙根给火龙喂深渊喂的神志不清怎么不说&lt;/p&gt;
&lt;p&gt;A： 我勒个依旧幻想，官方设定里只有&quot;漆黑的龙王携带深渊力量归来&quot;&quot;火龙修库特尔后来受到深渊侵蚀...&lt;/p&gt;</summary>
      <content type="html">&lt;blockquote&gt;
&lt;p&gt;最近在网上关于原神&lt;strong&gt;法涅斯&lt;/strong&gt;的立场和别人有了争论，事情的起因是我看到小破站的评论区里总是会有人赞同法涅斯，认为是法涅斯拯救了提瓦特，但对于原神世界观的历史来说，这确实挺奇怪的，法涅斯已经是一个非常明确的侵略者，我真的想不通为什么会有那么多人认可法涅斯的做法，于是有了以下的讨(争)论(议)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;A： 法涅斯这种明确的侵略者都有人洗地啊，如果法涅斯不来，龙族的月幕计划也就是现在的虚假之天就会成功，火龙修库特尔也有抗击深渊的文本，即使是葬火之战深渊尼伯龙根归来那也是清醒的尼伯龙根，唤醒修库特尔，囚禁三月女神，改造天基武器，最后才向法涅斯宣战，你管这叫被深渊控制？最后散落在提瓦特的深渊那也是尼伯龙根战败后才掉落的深渊碎片。换句话说，就算提瓦特被毁灭，那也是人家龙族内部的事，法涅斯这个侵略怎么者在某些人口中还变得高大上起来了&lt;/p&gt;
&lt;p&gt;B： 尼伯龙根给火龙喂深渊喂的神志不清怎么不说&lt;/p&gt;
&lt;p&gt;A： 我勒个依旧幻想，官方设定里只有&amp;quot;漆黑的龙王携带深渊力量归来&amp;quot;&amp;quot;火龙修库特尔后来受到深渊侵蚀&amp;quot;，并没有任何一句写&amp;quot;尼伯龙根给修库特尔喂深渊&amp;quot;。还神志不清，你以为象拟聚星是什么时候造的，即使神志不清都能造出比肩三月的东西，火龙王可太厉害了&lt;/p&gt;
&lt;p&gt;B： 那我问你修库特尔为什么会被深渊污染？&lt;/p&gt;
&lt;p&gt;A： 修库特尔被深渊污染只是结果，又不是过程，受到深渊侵蚀不等于是尼伯龙根强行给火龙注入深渊。深渊本质是什么，一切不会发生命运的恨意，你说火龙从冰封中醒来发现龙族的处境会不会产生恨意，尼伯龙根带领火龙大战法涅斯时会不会长时间与深渊接触才被深渊侵蚀。火龙的大权是智慧，会不会因为自恃本身的实力主动接触深渊。官方没有的文本和设定，不是只有对龙族不利的一面的才是真实&lt;/p&gt;
&lt;p&gt;B： 纳塔人类没崛起前是火龙一族在肘击深渊，他们研究了那么多针对深渊的东西最后没办法搞了维奇洛波奇特利准备拉着深渊爆，火龙怎么会选择自己去吃深渊。然后终北祷歌说了尼伯龙根是外出的时候被污染了，而且和法打的时候为什么会被深渊污染，法又不用深渊力量&lt;/p&gt;
&lt;p&gt;A： 尼伯龙根都被法涅斯肘翻了，难不成火龙还想着老老实实对抗深渊，然后让法涅斯坐收其成，火龙没这么伟大吧，而且这只是火龙接触深渊的一种可能。另外，与深渊并肩作战也会接触深渊，不是只有和深渊对抗才会接触，而接触了深渊就有可能被深渊侵蚀&lt;/p&gt;
&lt;p&gt;B： 你的想法最大的问题就是只有火龙王被污染了，其他火龙都没有不是吗？而且你但凡好好过了火龙支线，你就知道修库特尔对库库尔坎的做法是默许的，火龙王要真是想吃深渊拉着纳塔爆的性格为什么要默许库库尔坎去找其他方法？他准许了至高领主的不同尝试，就是因为他不知道作何选择才是对的，和你说的为了不让天理吃好处就去尝试用深渊爆完全对不上&lt;/p&gt;
&lt;p&gt;A： 不是已经说了吗，这只是火龙接触深渊的一种可能，又不是一定。大战法涅斯时其它火龙最多利用龙族科技插手，而且根据目前已知信息，修库特尔的实力几乎是七龙王之最，所以才能和尼伯龙根并肩作战，所以才可能长时间接触深渊。另外，我可从未说过是因为不想法涅斯坐收其成，所以就要拉着纳塔爆，顺序不要搞反。我从头到尾论证的只是修库特尔在尼伯龙根被法涅斯肘翻之后，是有可能主动接触深渊然后才被深渊侵蚀，毕竟深渊力量属于天外的力量，而龙王已经是提瓦特的顶点，想要战胜法涅斯，接受外来的力量的有可能的。&lt;/p&gt;
&lt;p&gt;A： 最直观的例子还有阿佩普，阿佩普在尼伯龙根被肘翻之后主动去接触深渊，却被天钉阻止，如果我说火龙修库特尔这时候也去接触了深渊，却因为没有天钉阻止成功接触深渊，这是不是也是一种可能&lt;/p&gt;
&lt;p&gt;B： 所以修库特尔根本就没有去摸深渊的理由，他后面一直在寻求的是如何让火龙一族继续延续，和你说的为了战胜法去摸深渊完全不匹配，只有草龙在目睹牢尼陨落后将深渊视作战胜天理的办法。最后根本没有火龙和尼一起去打天理的文案，换句话说如果火龙和尼一起去打天理了凭什么火龙没挨揍，一直到希巴拉克来杀火龙&lt;/p&gt;
&lt;p&gt;B： 你不要假设了，自己去看看受龙所选者支线里火龙王是一个什么样的设定，阿佩普就是被坑了去吃深渊然后一直被折磨到小草神来帮忙，火龙一族一直在抗击深渊然后你却假设火龙王带头去使用深渊&lt;/p&gt;
&lt;p&gt;A： 不是你先开始假设火龙被尼伯龙根喂了深渊吗，我才举例火龙是有可能主动接触深渊的，都是官方没有的文本和设定，总不能你的假设就是真实，我的假设就只是一个假设。绕来绕去都是要等后续的剧情文本，所以就不要把你认为的论点当成确定的结论来说&lt;/p&gt;
&lt;p&gt;B： 我后续会去看火山书到底有没有明确说是尼喂的，然后火山书里库库尔坎明确说过，阴影之敌不可饶恕，不可能火龙一族都抵抗深渊然后火龙王自己去摸，无论我对不对，你一定不对&lt;/p&gt;
&lt;p&gt;A： 何来不对呢，无论是创造维奇洛波奇特利，或是阴影之敌不可饶恕，再是想拉着纳塔一起爆，那都是修库特尔已经被深渊侵蚀之后的事了。你看再多的文本，只要官方没有明确火龙是怎样被深渊侵蚀，火龙主动接触深渊，因自身恨意被深渊侵蚀，被尼伯龙根强行喂了深渊，这都是其中的一种可能&lt;/p&gt;
&lt;p&gt;B： 因为火龙一族一直在和深渊作斗争，这么简单的理由很难理解吗？&lt;/p&gt;
&lt;p&gt;A： 因为龙族的王，最高的王，提瓦特的王已经被法涅斯这个侵略者肘翻了，想要战胜侵略者，只能依靠天外的力量，即使这个力量是深渊，这很难理解吗？&lt;/p&gt;
&lt;p&gt;B： 到最后龙族都在打深渊，你到底看没看过火山书，我受不了了&lt;/p&gt;
&lt;p&gt;A： 阿佩普主动接触深渊难不成是假的，为了得到禁忌知识与赤王做交易难不成也是假的&lt;/p&gt;
&lt;p&gt;B： 草龙就是不知道深渊的危害被坑了才吃的深渊？然后一直被折磨到小草来帮她，你看她现在怎么不吃了？&lt;/p&gt;
&lt;p&gt;A： 又是把结论当过程，草龙不知道，难道火龙就知道吗，还是说火龙明明知道却故意瞒着草龙&lt;/p&gt;
&lt;p&gt;B： 我求你去看看火山书修库特尔到底是一个怎样的形象，都说了火龙和草龙被牢尼坑了，你但凡了解过修库特尔的形象怎么会假设他会去主动吃深渊&lt;/p&gt;
&lt;p&gt;A： 修库特尔是什么形象，在龙族学者眼中它还是一个性格温和的王，但就是这个性格温和的王却把纳塔几乎所有的天使都屠杀殆尽，你说它性格温和还是性格暴虐。同样的，用龙族眼中的修库特尔形象来论证修库特尔不会主动吃深渊，不亚于用艾莉丝眼中的小可莉完全就是一个乖孩子&lt;/p&gt;
&lt;p&gt;B： 你亲眼看到巨大的双翅自外界而来，那原本光辉伟大的身形如此可悲，竟已完全沉入恐怖的阴影。 漆黑的火焰燎烧大地，以至于白树也近乎枯竭，最后的使者，其漫光的轮廓亦支离破碎，只能寄身于根脉 断绝的残叶。 你告诉我这说的是修库特尔还是尼伯龙根，尼伯龙根回来是不是被污染了，纳塔地脉被打烂，夜神龟进去修补地脉顺便躲着，深渊因为开了口子可以更方便的入侵纳塔&lt;/p&gt;
&lt;p&gt;B： 碰了深渊就一定点，修库特尔主动去吃深渊那就是坑整个纳塔的火龙，天理去圣土化会导致纳塔火龙慢慢退化，火龙一族要么开摆要么寻找方法对抗这个；你去摸深渊那就直接点，有什么好说的？&lt;/p&gt;
</content>
        <category term="Life"></category>
    </entry>
    <entry xml:lang="zh">
      <title>博客SEO优化</title>
      <link href="https://honmaple.me/posts/2025/11/博客SEO优化/" rel="alternate"></link>
      <published>Mon, 24 Nov 2025 21:22:57 +0000</published>
      <updated>Mon, 24 Nov 2025 22:02:35 +0000</updated>
      <author>
        <name>honmaple</name>
      </author>
      <link rel="alternate" href="https://honmaple.me/posts/2025/11/博客SEO优化/" type="text/html"/>
      <id>https://honmaple.me/posts/2025/11/博客SEO优化/</id>
      <summary type="html">
&lt;p&gt;
博客已经建立十多年了，SEO优化还是头一次。事情起因是我想要禁止Google索引首页以外的分页内容，比如：&lt;code&gt;index2.html&lt;/code&gt;、&lt;code&gt;index3.html&lt;/code&gt;，所以我询问了 &lt;b&gt;Gemini&lt;/b&gt; 如何在 &lt;code&gt;robots.txt&lt;/code&gt; 里实现该功能，&lt;b&gt;Gemini&lt;/b&gt; 确实给了我相应的解决方式
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;User-agent: *
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;2&lt;/span&gt;&lt;span&gt;Allow: /index.html$
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;3&lt;/span&gt;&lt;span&gt;Disallow: /index*.html&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
但同时它也建议我不要这么做，&lt;b&gt;⚠️ 重要SEO风险提示&lt;/b&gt;
&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;
虽然这样做能满足你“禁止索引分页”的技术需求，但在 SEO 策略上...&lt;/p&gt;&lt;/blockquote&gt;</summary>
      <content type="html">
&lt;p&gt;
博客已经建立十多年了，SEO优化还是头一次。事情起因是我想要禁止Google索引首页以外的分页内容，比如：&lt;code&gt;index2.html&lt;/code&gt;、&lt;code&gt;index3.html&lt;/code&gt;，所以我询问了 &lt;b&gt;Gemini&lt;/b&gt; 如何在 &lt;code&gt;robots.txt&lt;/code&gt; 里实现该功能，&lt;b&gt;Gemini&lt;/b&gt; 确实给了我相应的解决方式
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;User-agent: *
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;2&lt;/span&gt;&lt;span&gt;Allow: /index.html$
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;3&lt;/span&gt;&lt;span&gt;Disallow: /index*.html&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
但同时它也建议我不要这么做，&lt;b&gt;⚠️ 重要SEO风险提示&lt;/b&gt;
&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;
虽然这样做能满足你“禁止索引分页”的技术需求，但在 SEO 策略上，&lt;b&gt;直接在 robots.txt 禁止分页通常是不推荐的&lt;/b&gt;，原因如下：
&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;
 &lt;b&gt;导致孤岛页面（Orphan Pages）&lt;/b&gt;： 如果爬虫无法访问 &lt;code&gt;/index2.html&lt;/code&gt;，它就无法抓取第 2 页上列出的&lt;b&gt;文章或商品链接&lt;/b&gt;。这意味着你网站第 2 页之后的所有内容可能都无法被搜索引擎发现和收录。
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 &lt;b&gt;权重无法传递&lt;/b&gt;： 分页通常用于传递网站权重。阻断爬虫会导致权重无法流动到深层页面。
&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
&lt;b&gt;更好的替代方案&lt;/b&gt;
&lt;/p&gt;

&lt;p&gt;
如果你只是不希望分页出现在搜索结果中，但希望爬虫能抓取分页里的内容，建议使用 &lt;code&gt;meta&lt;/code&gt; 标签 而不是 &lt;code&gt;robots.txt&lt;/code&gt;：
&lt;/p&gt;

&lt;p&gt;
在 &lt;code&gt;/index2.html&lt;/code&gt;, &lt;code&gt;/index3.html&lt;/code&gt; 等页面的 &lt;code&gt;head&lt;/code&gt; 区域加入：
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;span style=&quot;color:#f92672&quot;&gt;meta&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;robots&amp;#34;&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;noindex, follow&amp;#34;&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;
其它需要添加的 &lt;code&gt;meta&lt;/code&gt; 标签（&lt;b&gt;以下内容基于Gemini的回答&lt;/b&gt;）
&lt;/p&gt;

&lt;h2 id=&quot;heading-1&quot;&gt;基础核心类 (Technical &amp; SEO)&lt;/h2&gt;
&lt;p&gt;
   这些是网站正常运行和被收录的基础，缺一不可。
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;
 &lt;b&gt;字符编码 (Charset)&lt;/b&gt;: 防止网页出现乱码，确保浏览器正确识别中文。
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;span style=&quot;color:#f92672&quot;&gt;meta&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;charset&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;UTF-8&amp;#34;&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 &lt;b&gt;视口设置 (Viewport)&lt;/b&gt;: 这是移动端 &lt;b&gt;SEO&lt;/b&gt; 的核心。 它告诉浏览器如何调整页面的尺寸和缩放。如果不加，手机打开网页字体会非常小，Google 会判定为“移动端不友好”而降低排名。
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;span style=&quot;color:#f92672&quot;&gt;meta&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;viewport&amp;#34;&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;width=device-width, initial-scale=1.0&amp;#34;&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 &lt;b&gt;页面描述 (Description)&lt;/b&gt;: 这是搜索结果中标题下方的那段黑色小字。
      &lt;b&gt;要点&lt;/b&gt;： 包含品牌名、核心业务、优势，并带有号召性用语。长度控制在 150 字符（英文）或 80 字（中文）左右。
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;span style=&quot;color:#f92672&quot;&gt;meta&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;description&amp;#34;&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;[品牌名]是全球领先的在线教育平台，提供编程、设计、营销等实战课程。新用户注册立享7天免费试学，立即开启你的职业进阶之路！&amp;#34;&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 &lt;b&gt;爬虫控制 (Robots)&lt;/b&gt;:
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;span style=&quot;color:#f92672&quot;&gt;meta&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;robots&amp;#34;&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;index, follow&amp;#34;&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
 &lt;code&gt;index&lt;/code&gt;: 允许收录本页。
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 &lt;code&gt;follow&lt;/code&gt;: 允许顺着本页链接爬取更多页面。
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;heading-2&quot;&gt;社交分享类 (Open Graph &amp; Twitter)&lt;/h2&gt;
&lt;p&gt;
   当你的首页链接被分享到 &lt;b&gt;微信&lt;/b&gt;、&lt;b&gt;Facebook&lt;/b&gt;、&lt;b&gt;Twitter&lt;/b&gt;、&lt;b&gt;Discord&lt;/b&gt; 时，这些标签决定了显示的&lt;b&gt;卡片样式&lt;/b&gt;（标题、简介、缩略图）。如果没有这些，分享出去可能只有一个光秃秃的链接。
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;
 &lt;b&gt;Open Graph (通用协议)&lt;/b&gt;
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;span style=&quot;color:#f92672&quot;&gt;meta&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;property&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;og:title&amp;#34;&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;[品牌名] - 让学习更简单的在线课堂&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;2&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;span style=&quot;color:#f92672&quot;&gt;meta&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;property&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;og:description&amp;#34;&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;加入超过100万学员的社区，探索500+门专业课程。&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;3&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;span style=&quot;color:#f92672&quot;&gt;meta&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;property&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;og:url&amp;#34;&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;https://www.example.com/&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;4&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;span style=&quot;color:#f92672&quot;&gt;meta&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;property&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;og:image&amp;#34;&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;https://www.example.com/images/share-cover.jpg&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;5&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;span style=&quot;color:#f92672&quot;&gt;meta&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;property&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;og:type&amp;#34;&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;website&amp;#34;&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 &lt;b&gt;Twitter Card (推特专用)&lt;/b&gt;
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;span style=&quot;color:#f92672&quot;&gt;meta&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;twitter:card&amp;#34;&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;summary_large_image&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;2&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;span style=&quot;color:#f92672&quot;&gt;meta&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;twitter:title&amp;#34;&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;[品牌名] - 官方网站&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;3&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;span style=&quot;color:#f92672&quot;&gt;meta&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;twitter:description&amp;#34;&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;这里填入简短的品牌介绍...&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;4&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;span style=&quot;color:#f92672&quot;&gt;meta&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;twitter:image&amp;#34;&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;https://www.example.com/images/twitter-share.jpg&amp;#34;&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;heading-3&quot;&gt;极其重要的辅助标签&lt;/h2&gt;
&lt;p&gt;
   虽不是 &lt;code&gt;meta&lt;/code&gt;，但必须放在 &lt;code&gt;head&lt;/code&gt; 里
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;
 &lt;b&gt;规范链接 (Canonical Link)&lt;/b&gt;
&lt;/p&gt;

&lt;p&gt;
      这是首页 SEO 的救命稻草。 首页通常有多个入口，比如：
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
 &lt;code&gt;example.com&lt;/code&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 &lt;code&gt;www.example.com&lt;/code&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 &lt;code&gt;www.example.com/index.html&lt;/code&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
      如果不加 &lt;code&gt;canonical&lt;/code&gt; 标签，搜索引擎可能认为这是三个重复的网站，分散权重。
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;span style=&quot;color:#f92672&quot;&gt;link&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;rel&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;canonical&amp;#34;&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;https://www.example.com/&amp;#34;&lt;/span&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
      注意：必须指向你希望作为唯一标准的那个 URL（通常带 &lt;code&gt;https&lt;/code&gt; 和 &lt;code&gt;www&lt;/code&gt;，且不带 &lt;code&gt;index.html&lt;/code&gt;）。
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 &lt;b&gt;网站图标 (Favicon)&lt;/b&gt;
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;span style=&quot;color:#f92672&quot;&gt;link&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;rel&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;icon&amp;#34;&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;/favicon.ico&amp;#34;&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;image/x-icon&amp;#34;&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;heading-4&quot;&gt;不需要添加的标签 (避坑指南)&lt;/h2&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;span style=&quot;color:#f92672&quot;&gt;meta&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;keywords&amp;#34;&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;SEO, 优化, 排名...&amp;#34;&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
   &lt;b&gt;原因&lt;/b&gt;： Google 早在 10 多年前就宣布完全忽略这个标签。现在添加它不仅没用，还等于把你的关键词策略直接暴露给竞争对手看。
&lt;/p&gt;</content>
        <category term="Life"></category>
    </entry>
    <entry xml:lang="zh">
      <title>博客增加闲言碎语页面</title>
      <link href="https://honmaple.me/posts/2025/11/博客增加闲言碎语页面/" rel="alternate"></link>
      <published>Wed, 12 Nov 2025 17:37:49 +0000</published>
      <updated>Sat, 11 Jul 2026 01:29:20 +0000</updated>
      <author>
        <name>honmaple</name>
      </author>
      <link rel="alternate" href="https://honmaple.me/posts/2025/11/博客增加闲言碎语页面/" type="text/html"/>
      <id>https://honmaple.me/posts/2025/11/博客增加闲言碎语页面/</id>
      <summary type="html">
&lt;blockquote&gt;
&lt;p&gt;
主要用于记录一些短文或吐槽，这些内容不适合作为博客文章出现，该功能类似我很久之前实现过的&lt;b&gt;时间轴&lt;/b&gt;，但上次更新&lt;b&gt;时间轴&lt;/b&gt;已经是6年前的事情了，而且&lt;b&gt;时间轴&lt;/b&gt;所使用的后端服务还是我十年前写的一个基于 &lt;code&gt;Python+Flask&lt;/code&gt; 的博客。近几年我一直在使用 &lt;a href=&quot;https://github.com/usememos/memos&quot;&gt;usememos&lt;/a&gt; 作为个人朋友圈的替代品，此次也是准备将 &lt;code&gt;memos&lt;/code&gt; 利用起来，在博客内嵌入一个新的&lt;b&gt;闲言碎语&lt;/b&gt;的页面
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;heading-1&quot;&gt;实现&lt;/h2&gt;
&lt;p&gt;
   我使用的博客系统是我自己写的 &lt;a href=&quot;https://github.com/honmaple/snow&quot;&gt;Snow静态博客生成器&lt;/a&gt;，所以实现也很方便。
&lt;/p&gt;

&lt;p&gt;
   首先添加一个新的页面 &lt;code&gt;content/pages/memos.org&lt;/code&gt;
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 1&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color:#75715e&quot;&gt;#+TITLE&lt;/span&gt;&lt;span style=&quot;color:#75715e&quot;&gt;: 闲言碎语&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 2&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color:#75715e&quot;&gt;#+PROPERTY&lt;/span&gt;&lt;span style=&quot;color:#75715e&quot;&gt;: SLUG...&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;</summary>
      <content type="html">
&lt;blockquote&gt;
&lt;p&gt;
主要用于记录一些短文或吐槽，这些内容不适合作为博客文章出现，该功能类似我很久之前实现过的&lt;b&gt;时间轴&lt;/b&gt;，但上次更新&lt;b&gt;时间轴&lt;/b&gt;已经是6年前的事情了，而且&lt;b&gt;时间轴&lt;/b&gt;所使用的后端服务还是我十年前写的一个基于 &lt;code&gt;Python+Flask&lt;/code&gt; 的博客。近几年我一直在使用 &lt;a href=&quot;https://github.com/usememos/memos&quot;&gt;usememos&lt;/a&gt; 作为个人朋友圈的替代品，此次也是准备将 &lt;code&gt;memos&lt;/code&gt; 利用起来，在博客内嵌入一个新的&lt;b&gt;闲言碎语&lt;/b&gt;的页面
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;heading-1&quot;&gt;实现&lt;/h2&gt;
&lt;p&gt;
   我使用的博客系统是我自己写的 &lt;a href=&quot;https://github.com/honmaple/snow&quot;&gt;Snow静态博客生成器&lt;/a&gt;，所以实现也很方便。
&lt;/p&gt;

&lt;p&gt;
   首先添加一个新的页面 &lt;code&gt;content/pages/memos.org&lt;/code&gt;
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 1&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color:#75715e&quot;&gt;#+TITLE&lt;/span&gt;&lt;span style=&quot;color:#75715e&quot;&gt;: 闲言碎语&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 2&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color:#75715e&quot;&gt;#+PROPERTY&lt;/span&gt;&lt;span style=&quot;color:#75715e&quot;&gt;: SLUG memos&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 3&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color:#75715e&quot;&gt;#+PROPERTY&lt;/span&gt;&lt;span style=&quot;color:#75715e&quot;&gt;: COMMENT True&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 4&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 5&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color:#75715e&quot;&gt;#+begin_export &lt;/span&gt;&lt;span style=&quot;color:#75715e&quot;&gt;html&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 6&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;span style=&quot;color:#f92672&quot;&gt;div&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;memos&amp;#34;&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;data-src&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;https://memos.libforest.com&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 7&lt;/span&gt;&lt;span&gt;  &amp;lt;&lt;span style=&quot;color:#f92672&quot;&gt;div&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;entry-loading&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 8&lt;/span&gt;&lt;span&gt;    &amp;lt;&lt;span style=&quot;color:#f92672&quot;&gt;i&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;fa fa-spinner fa-spin&amp;#34;&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style=&quot;color:#f92672&quot;&gt;i&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 9&lt;/span&gt;&lt;span&gt;    &amp;lt;&lt;span style=&quot;color:#f92672&quot;&gt;span&lt;/span&gt;&amp;gt;加载中...&amp;lt;/&lt;span style=&quot;color:#f92672&quot;&gt;span&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;10&lt;/span&gt;&lt;span&gt;  &amp;lt;/&lt;span style=&quot;color:#f92672&quot;&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;11&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;span style=&quot;color:#f92672&quot;&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;12&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;span style=&quot;color:#f92672&quot;&gt;script&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;text/javascript&amp;#34;&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;src&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;https://s.libforest.com/static/js/marked.min.js&amp;#34;&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style=&quot;color:#f92672&quot;&gt;script&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;13&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;span style=&quot;color:#f92672&quot;&gt;script&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;text/javascript&amp;#34;&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;src&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;/static/js/memos.js&amp;#34;&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style=&quot;color:#f92672&quot;&gt;script&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;14&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color:#75715e&quot;&gt;#+end_export&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
   使用 &lt;code&gt;data-src&lt;/code&gt; 设置后端 &lt;b&gt;memos&lt;/b&gt; 的服务接口，而 &lt;b&gt;memos&lt;/b&gt; 的开放接口是 &lt;code&gt;https://{api}/api/v1/memo&lt;/code&gt;,  返回数据如下
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 1&lt;/span&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 2&lt;/span&gt;&lt;span&gt;    &lt;span style=&quot;color:#f92672&quot;&gt;&amp;#34;memos&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 3&lt;/span&gt;&lt;span&gt;        {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 4&lt;/span&gt;&lt;span&gt;            &lt;span style=&quot;color:#f92672&quot;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;: &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;memos/GorXqRpEUPCE3jVjY9pp8W&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 5&lt;/span&gt;&lt;span&gt;            &lt;span style=&quot;color:#f92672&quot;&gt;&amp;#34;state&amp;#34;&lt;/span&gt;: &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;NORMAL&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 6&lt;/span&gt;&lt;span&gt;            &lt;span style=&quot;color:#f92672&quot;&gt;&amp;#34;createTime&amp;#34;&lt;/span&gt;: &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;2025-11-11T08:57:38Z&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 7&lt;/span&gt;&lt;span&gt;            &lt;span style=&quot;color:#f92672&quot;&gt;&amp;#34;updateTime&amp;#34;&lt;/span&gt;: &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;2025-11-11T08:57:38Z&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 8&lt;/span&gt;&lt;span&gt;            &lt;span style=&quot;color:#f92672&quot;&gt;&amp;#34;content&amp;#34;&lt;/span&gt;: &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;测试图片&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 9&lt;/span&gt;&lt;span&gt;            &lt;span style=&quot;color:#f92672&quot;&gt;&amp;#34;pinned&amp;#34;&lt;/span&gt;: &lt;span style=&quot;color:#66d9ef&quot;&gt;false&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;10&lt;/span&gt;&lt;span&gt;            &lt;span style=&quot;color:#f92672&quot;&gt;&amp;#34;resources&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;11&lt;/span&gt;&lt;span&gt;                {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;12&lt;/span&gt;&lt;span&gt;                    &lt;span style=&quot;color:#f92672&quot;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;: &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;resources/VPqiT6yFj2nBgyGsKtUWjj&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;13&lt;/span&gt;&lt;span&gt;                    &lt;span style=&quot;color:#f92672&quot;&gt;&amp;#34;filename&amp;#34;&lt;/span&gt;: &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;02.png&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;14&lt;/span&gt;&lt;span&gt;                    &lt;span style=&quot;color:#f92672&quot;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;image/png&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;15&lt;/span&gt;&lt;span&gt;                    &lt;span style=&quot;color:#f92672&quot;&gt;&amp;#34;size&amp;#34;&lt;/span&gt;: &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;1107605&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;16&lt;/span&gt;&lt;span&gt;                    &lt;span style=&quot;color:#f92672&quot;&gt;&amp;#34;memo&amp;#34;&lt;/span&gt;: &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;memos/GorXqRpEUPCE3jVjY9pp8W&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;17&lt;/span&gt;&lt;span&gt;                }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;18&lt;/span&gt;&lt;span&gt;            ]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;19&lt;/span&gt;&lt;span&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;20&lt;/span&gt;&lt;span&gt;    ],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;21&lt;/span&gt;&lt;span&gt;    &lt;span style=&quot;color:#f92672&quot;&gt;&amp;#34;nextPageToken&amp;#34;&lt;/span&gt;: &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;CAoQCg==&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;22&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
   使用&lt;code&gt;JS&lt;/code&gt;请求就是
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;document.&lt;span style=&quot;color:#a6e22e&quot;&gt;addEventListener&lt;/span&gt;(&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;DOMContentLoaded&amp;#34;&lt;/span&gt;, &lt;span style=&quot;color:#66d9ef&quot;&gt;async&lt;/span&gt; () =&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;2&lt;/span&gt;&lt;span&gt;    &lt;span style=&quot;color:#66d9ef&quot;&gt;let&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;dom&lt;/span&gt; &lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt; document.&lt;span style=&quot;color:#a6e22e&quot;&gt;querySelector&lt;/span&gt;(&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;#memos&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;3&lt;/span&gt;&lt;span&gt;    &lt;span style=&quot;color:#66d9ef&quot;&gt;let&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;api&lt;/span&gt; &lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;dom&lt;/span&gt;.&lt;span style=&quot;color:#a6e22e&quot;&gt;getAttribute&lt;/span&gt;(&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;data-src&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;4&lt;/span&gt;&lt;span&gt;    &lt;span style=&quot;color:#66d9ef&quot;&gt;if&lt;/span&gt; (&lt;span style=&quot;color:#a6e22e&quot;&gt;api&lt;/span&gt; &lt;span style=&quot;color:#f92672&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;api&lt;/span&gt; &lt;span style=&quot;color:#f92672&quot;&gt;!=&lt;/span&gt; &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&amp;#34;&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;5&lt;/span&gt;&lt;span&gt;        &lt;span style=&quot;color:#66d9ef&quot;&gt;let&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;resp&lt;/span&gt; &lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color:#66d9ef&quot;&gt;await&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;fetch&lt;/span&gt;(&lt;span style=&quot;color:#e6db74&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;${&lt;/span&gt;&lt;span style=&quot;color:#a6e22e&quot;&gt;api&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;/api/v1/memos&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;`&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;6&lt;/span&gt;&lt;span&gt;        &lt;span style=&quot;color:#66d9ef&quot;&gt;let&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;data&lt;/span&gt; &lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color:#66d9ef&quot;&gt;await&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;resp&lt;/span&gt;.&lt;span style=&quot;color:#a6e22e&quot;&gt;json&lt;/span&gt;();
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;7&lt;/span&gt;&lt;span&gt;        &lt;span style=&quot;color:#a6e22e&quot;&gt;console&lt;/span&gt;.&lt;span style=&quot;color:#a6e22e&quot;&gt;log&lt;/span&gt;(&lt;span style=&quot;color:#a6e22e&quot;&gt;data&lt;/span&gt;.&lt;span style=&quot;color:#a6e22e&quot;&gt;memos&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;8&lt;/span&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;9&lt;/span&gt;&lt;span&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
   &lt;b&gt;注意：&lt;/b&gt;
   我正在使用的memos版本在查询接口上的参数需要进行一层转换，必须使用生成的&lt;code&gt;protobuf&lt;/code&gt;文件才行，这在单独的JS文件中不好实现，所以暂不支持添加参数查询，目前也只是显示第一页总共10条的数据，这对于我来说已经足够了，如果有需要&lt;code&gt;下一页&lt;/code&gt;  ，可以利用返回数据里的 &lt;code&gt;nextPageToken&lt;/code&gt;，将其作为查询参数添加到请求URL中
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;`${api}/api/v1/memos?page_token=${nextPageToken}`&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
   获取到数据后就能转换成 &lt;code&gt;HTML&lt;/code&gt;
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;
 &lt;b&gt;内容处理&lt;/b&gt;: &lt;b&gt;memos&lt;/b&gt; 的内容基于&lt;code&gt;Markdown&lt;/code&gt;，所以我引入了 &lt;code&gt;marked.js&lt;/code&gt; 作为解析库，同时还需要对标签进行解析和渲染
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 1&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color:#66d9ef&quot;&gt;const&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;memoTag&lt;/span&gt; &lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 2&lt;/span&gt;&lt;span&gt;    &lt;span style=&quot;color:#a6e22e&quot;&gt;extensions&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;:&lt;/span&gt; [{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 3&lt;/span&gt;&lt;span&gt;        &lt;span style=&quot;color:#a6e22e&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#39;memoTag&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 4&lt;/span&gt;&lt;span&gt;        &lt;span style=&quot;color:#a6e22e&quot;&gt;level&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#39;inline&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 5&lt;/span&gt;&lt;span&gt;        &lt;span style=&quot;color:#a6e22e&quot;&gt;start&lt;/span&gt;(&lt;span style=&quot;color:#a6e22e&quot;&gt;src&lt;/span&gt;) { &lt;span style=&quot;color:#66d9ef&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;src&lt;/span&gt;.&lt;span style=&quot;color:#a6e22e&quot;&gt;indexOf&lt;/span&gt;(&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#39;#&amp;#39;&lt;/span&gt;); },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 6&lt;/span&gt;&lt;span&gt;        &lt;span style=&quot;color:#a6e22e&quot;&gt;tokenizer&lt;/span&gt;(&lt;span style=&quot;color:#a6e22e&quot;&gt;src&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 7&lt;/span&gt;&lt;span&gt;            &lt;span style=&quot;color:#66d9ef&quot;&gt;const&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;rule&lt;/span&gt; &lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color:#e6db74&quot;&gt;/^#([^\s#]+)(\s*)/&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 8&lt;/span&gt;&lt;span&gt;            &lt;span style=&quot;color:#66d9ef&quot;&gt;const&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;match&lt;/span&gt; &lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;rule&lt;/span&gt;.&lt;span style=&quot;color:#a6e22e&quot;&gt;exec&lt;/span&gt;(&lt;span style=&quot;color:#a6e22e&quot;&gt;src&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 9&lt;/span&gt;&lt;span&gt;            &lt;span style=&quot;color:#66d9ef&quot;&gt;if&lt;/span&gt; (&lt;span style=&quot;color:#a6e22e&quot;&gt;match&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;10&lt;/span&gt;&lt;span&gt;                &lt;span style=&quot;color:#66d9ef&quot;&gt;let&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;html&lt;/span&gt; &lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color:#e6db74&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;lt;span class=&amp;#34;memo-tag&amp;#34;&amp;gt;#&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;${&lt;/span&gt;&lt;span style=&quot;color:#a6e22e&quot;&gt;match&lt;/span&gt;[&lt;span style=&quot;color:#ae81ff&quot;&gt;1&lt;/span&gt;]&lt;span style=&quot;color:#e6db74&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;`&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;11&lt;/span&gt;&lt;span&gt;                &lt;span style=&quot;color:#66d9ef&quot;&gt;if&lt;/span&gt; (&lt;span style=&quot;color:#a6e22e&quot;&gt;match&lt;/span&gt;[&lt;span style=&quot;color:#ae81ff&quot;&gt;2&lt;/span&gt;].&lt;span style=&quot;color:#a6e22e&quot;&gt;endsWith&lt;/span&gt;(&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#39;\n&amp;#39;&lt;/span&gt;)) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;12&lt;/span&gt;&lt;span&gt;                    &lt;span style=&quot;color:#a6e22e&quot;&gt;html&lt;/span&gt; &lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color:#e6db74&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;${&lt;/span&gt;&lt;span style=&quot;color:#a6e22e&quot;&gt;html&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;lt;br /&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;13&lt;/span&gt;&lt;span&gt;                }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;14&lt;/span&gt;&lt;span&gt;                &lt;span style=&quot;color:#66d9ef&quot;&gt;return&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;15&lt;/span&gt;&lt;span&gt;                    &lt;span style=&quot;color:#a6e22e&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#39;memoTag&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;16&lt;/span&gt;&lt;span&gt;                    &lt;span style=&quot;color:#a6e22e&quot;&gt;raw&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;match&lt;/span&gt;[&lt;span style=&quot;color:#ae81ff&quot;&gt;0&lt;/span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;17&lt;/span&gt;&lt;span&gt;                    &lt;span style=&quot;color:#a6e22e&quot;&gt;html&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;html&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;18&lt;/span&gt;&lt;span&gt;                };
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;19&lt;/span&gt;&lt;span&gt;            }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;20&lt;/span&gt;&lt;span&gt;        },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;21&lt;/span&gt;&lt;span&gt;        &lt;span style=&quot;color:#a6e22e&quot;&gt;renderer&lt;/span&gt;(&lt;span style=&quot;color:#a6e22e&quot;&gt;token&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;22&lt;/span&gt;&lt;span&gt;            &lt;span style=&quot;color:#66d9ef&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;token&lt;/span&gt;.&lt;span style=&quot;color:#a6e22e&quot;&gt;html&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;23&lt;/span&gt;&lt;span&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;24&lt;/span&gt;&lt;span&gt;    }],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;25&lt;/span&gt;&lt;span&gt;};
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;26&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color:#a6e22e&quot;&gt;marked&lt;/span&gt;.&lt;span style=&quot;color:#a6e22e&quot;&gt;setOptions&lt;/span&gt;({
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;27&lt;/span&gt;&lt;span&gt;    &lt;span style=&quot;color:#a6e22e&quot;&gt;breaks&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color:#66d9ef&quot;&gt;true&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;28&lt;/span&gt;&lt;span&gt;    &lt;span style=&quot;color:#a6e22e&quot;&gt;smartypants&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color:#66d9ef&quot;&gt;false&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;29&lt;/span&gt;&lt;span&gt;});
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;30&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color:#a6e22e&quot;&gt;marked&lt;/span&gt;.&lt;span style=&quot;color:#a6e22e&quot;&gt;use&lt;/span&gt;(&lt;span style=&quot;color:#a6e22e&quot;&gt;memoTag&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;31&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color:#a6e22e&quot;&gt;console&lt;/span&gt;.&lt;span style=&quot;color:#a6e22e&quot;&gt;log&lt;/span&gt;(&lt;span style=&quot;color:#a6e22e&quot;&gt;marked&lt;/span&gt;.&lt;span style=&quot;color:#a6e22e&quot;&gt;parse&lt;/span&gt;(&lt;span style=&quot;color:#a6e22e&quot;&gt;memo&lt;/span&gt;.&lt;span style=&quot;color:#a6e22e&quot;&gt;content&lt;/span&gt;));&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 &lt;b&gt;资源处理&lt;/b&gt;: 资源应该是包括图片、音频、视频等多种类型的，目前我只处理了图片类型，这也是基于我的需求
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 1&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color:#66d9ef&quot;&gt;function&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;renderContent&lt;/span&gt;(&lt;span style=&quot;color:#a6e22e&quot;&gt;memo&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 2&lt;/span&gt;&lt;span&gt;    &lt;span style=&quot;color:#66d9ef&quot;&gt;let&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;resources&lt;/span&gt; &lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;memo&lt;/span&gt;.&lt;span style=&quot;color:#a6e22e&quot;&gt;resources&lt;/span&gt;.&lt;span style=&quot;color:#a6e22e&quot;&gt;map&lt;/span&gt;((&lt;span style=&quot;color:#a6e22e&quot;&gt;r&lt;/span&gt;) =&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 3&lt;/span&gt;&lt;span&gt;        &lt;span style=&quot;color:#66d9ef&quot;&gt;const&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;src&lt;/span&gt; &lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color:#e6db74&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;${&lt;/span&gt;&lt;span style=&quot;color:#a6e22e&quot;&gt;api&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;/file/&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;${&lt;/span&gt;&lt;span style=&quot;color:#a6e22e&quot;&gt;r&lt;/span&gt;.&lt;span style=&quot;color:#a6e22e&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;${&lt;/span&gt;&lt;span style=&quot;color:#a6e22e&quot;&gt;r&lt;/span&gt;.&lt;span style=&quot;color:#a6e22e&quot;&gt;filename&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;?thumbnail=true&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;`&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 4&lt;/span&gt;&lt;span&gt;        &lt;span style=&quot;color:#66d9ef&quot;&gt;const&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;style&lt;/span&gt; &lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;max-height: 16rem;border-radius: 0.5rem;object-fit: contain;&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 5&lt;/span&gt;&lt;span&gt;        &lt;span style=&quot;color:#66d9ef&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color:#e6db74&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;lt;a href=&amp;#34;&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;${&lt;/span&gt;&lt;span style=&quot;color:#a6e22e&quot;&gt;src&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34; data-fancybox=&amp;#34;image&amp;#34;&amp;gt;&amp;lt;img data-src=&amp;#34;&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;${&lt;/span&gt;&lt;span style=&quot;color:#a6e22e&quot;&gt;src&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34; class=&amp;#34;lazyload&amp;#34; style=&amp;#34;&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;${&lt;/span&gt;&lt;span style=&quot;color:#a6e22e&quot;&gt;style&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34; /&amp;gt;&amp;lt;/a&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;`&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 6&lt;/span&gt;&lt;span&gt;    });
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 7&lt;/span&gt;&lt;span&gt;    &lt;span style=&quot;color:#66d9ef&quot;&gt;if&lt;/span&gt; (&lt;span style=&quot;color:#a6e22e&quot;&gt;resources&lt;/span&gt;.&lt;span style=&quot;color:#a6e22e&quot;&gt;length&lt;/span&gt; &lt;span style=&quot;color:#f92672&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&quot;color:#ae81ff&quot;&gt;0&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 8&lt;/span&gt;&lt;span&gt;        &lt;span style=&quot;color:#66d9ef&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color:#e6db74&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;lt;div&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;${&lt;/span&gt;&lt;span style=&quot;color:#a6e22e&quot;&gt;marked&lt;/span&gt;.&lt;span style=&quot;color:#a6e22e&quot;&gt;parse&lt;/span&gt;(&lt;span style=&quot;color:#a6e22e&quot;&gt;memo&lt;/span&gt;.&lt;span style=&quot;color:#a6e22e&quot;&gt;content&lt;/span&gt;)&lt;span style=&quot;color:#e6db74&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 9&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;            &amp;lt;div style=&amp;#34;display: flex;gap: 0.5rem; align-items: baseline;&amp;#34;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;${&lt;/span&gt;&lt;span style=&quot;color:#a6e22e&quot;&gt;resources&lt;/span&gt;.&lt;span style=&quot;color:#a6e22e&quot;&gt;join&lt;/span&gt;(&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&amp;#34;&lt;/span&gt;)&lt;span style=&quot;color:#e6db74&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;10&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;            &amp;lt;/div&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;`&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;11&lt;/span&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;12&lt;/span&gt;&lt;span&gt;    &lt;span style=&quot;color:#66d9ef&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color:#e6db74&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;lt;div&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;${&lt;/span&gt;&lt;span style=&quot;color:#a6e22e&quot;&gt;marked&lt;/span&gt;.&lt;span style=&quot;color:#a6e22e&quot;&gt;parse&lt;/span&gt;(&lt;span style=&quot;color:#a6e22e&quot;&gt;memo&lt;/span&gt;.&lt;span style=&quot;color:#a6e22e&quot;&gt;content&lt;/span&gt;)&lt;span style=&quot;color:#e6db74&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;`&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;13&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
   或许可以把该功能作为 &lt;code&gt;shortcodes&lt;/code&gt; 使用， 完整代码可以在 &lt;a href=&quot;https://honmaple.me/static/js/memos.js&quot;&gt;memos.js&lt;/a&gt; 查看
&lt;/p&gt;

&lt;h2 id=&quot;heading-2&quot;&gt;其它&lt;/h2&gt;
&lt;p&gt;
   如果需要一个 &lt;b&gt;memos&lt;/b&gt; 客户端，可以试试我写的 &lt;a href=&quot;https://apps.apple.com/cn/app/红枫笔记/id6743336280?platform=iphone&quot;&gt;红枫笔记&lt;/a&gt;，除了支持本地笔记外，还支持 memos、blinko等远程服务的管理
&lt;/p&gt;

&lt;div class=&quot;gallery gallery-grid&quot;&gt;
  
&lt;p&gt;
   
  &lt;a class=&quot;block max-w-full no-underline&quot; href=&quot;https://s.libforest.com/images/2025/10/maple-note-06.jpg-show&quot; data-img-lightbox data-gallery=&quot;page-images&quot; data-type=&quot;image&quot;&gt;
    &lt;img data-src=&quot;https://s.libforest.com/images/2025/10/maple-note-06.jpg-thumb&quot;
         alt=&quot;maple-note-06.jpg&quot;
         decoding=&quot;async&quot;
         class=&quot;lazy mx-auto w-full cursor-zoom-in rounded-md &quot;&gt;
  &lt;/a&gt;
  &lt;link rel=&quot;stylesheet&quot; href=&quot;https://honmaple.me/libs/glightbox/glightbox.min.css&quot;&gt;
  &lt;script src=&quot;https://honmaple.me/libs/vanilla-lazyload/lazyload.min.js&quot; defer&gt;&lt;/script&gt;
  &lt;script src=&quot;https://honmaple.me/libs/glightbox/glightbox.min.js&quot; defer&gt;&lt;/script&gt;
    &lt;script src=&quot;https://honmaple.me/js/lazyload.js&quot; defer&gt;&lt;/script&gt;
    &lt;script src=&quot;https://honmaple.me/js/lightbox.js&quot; defer&gt;&lt;/script&gt;

   
  &lt;a class=&quot;block max-w-full no-underline&quot; href=&quot;https://s.libforest.com/images/2025/10/maple-note-07.jpg-show&quot; data-img-lightbox data-gallery=&quot;page-images&quot; data-type=&quot;image&quot;&gt;
    &lt;img data-src=&quot;https://s.libforest.com/images/2025/10/maple-note-07.jpg-thumb&quot;
         alt=&quot;maple-note-07.jpg&quot;
         decoding=&quot;async&quot;
         class=&quot;lazy mx-auto w-full cursor-zoom-in rounded-md &quot;&gt;
  &lt;/a&gt;

&lt;/p&gt;

&lt;/div&gt;
    &lt;link rel=&quot;stylesheet&quot; href=&quot;https://honmaple.me/css/gallery.css&quot;&gt;</content>
        <category term="Life"></category>
    </entry>
    <entry xml:lang="zh">
      <title>关于B站上传视频缓慢问题</title>
      <link href="https://honmaple.me/posts/2025/10/关于B站上传视频缓慢问题/" rel="alternate"></link>
      <published>Sun, 19 Oct 2025 14:21:49 +0000</published>
      <updated>Sun, 19 Oct 2025 14:30:23 +0000</updated>
      <author>
        <name>honmaple</name>
      </author>
      <link rel="alternate" href="https://honmaple.me/posts/2025/10/关于B站上传视频缓慢问题/" type="text/html"/>
      <id>https://honmaple.me/posts/2025/10/关于B站上传视频缓慢问题/</id>
      <summary type="html">
&lt;p&gt;
网上找到一种解决方式
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;
 打开 &lt;a href=&quot;https://member.bilibili.com/preupload?r=ping&quot;&gt;https://member.bilibili.com/preupload?r=ping&lt;/a&gt; 进行测速，找到上传速度最快的地址，比如
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;https:&lt;span style=&quot;color:#f92672&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;/&lt;/span&gt;member&lt;span style=&quot;color:#f92672&quot;&gt;.&lt;/span&gt;bilibili&lt;span style=&quot;color:#f92672&quot;&gt;.&lt;/span&gt;com&lt;span style=&quot;color:#f92672&quot;&gt;/&lt;/span&gt;platform&lt;span style=&quot;color:#f92672&quot;&gt;/&lt;/span&gt;upload&lt;span style=&quot;color:#f92672&quot;&gt;/&lt;/span&gt;video&lt;span style=&quot;color:#f92672&quot;&gt;/&lt;/span&gt;frame&lt;span style=&quot;color:#f92672&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#960050;background-color:#1e0010&quot;&gt;?&lt;/span&gt;os&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;upos&lt;span style=&quot;color:#f92672&quot;&gt;&amp;amp;&lt;/span&gt;zone&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;cs&lt;span style=&quot;color:#f92672&quot;&gt;&amp;amp;&lt;/span&gt;upcdn&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;attx&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 复制参数 &lt;code&gt;&amp;upcdn=attx&lt;/code&gt; 到原上传地址，比如原地址为
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;https:&lt;span style=&quot;color:#f92672&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;/&lt;/span&gt;member...&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;/ol&gt;</summary>
      <content type="html">
&lt;p&gt;
网上找到一种解决方式
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;
 打开 &lt;a href=&quot;https://member.bilibili.com/preupload?r=ping&quot;&gt;https://member.bilibili.com/preupload?r=ping&lt;/a&gt; 进行测速，找到上传速度最快的地址，比如
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;https:&lt;span style=&quot;color:#f92672&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;/&lt;/span&gt;member&lt;span style=&quot;color:#f92672&quot;&gt;.&lt;/span&gt;bilibili&lt;span style=&quot;color:#f92672&quot;&gt;.&lt;/span&gt;com&lt;span style=&quot;color:#f92672&quot;&gt;/&lt;/span&gt;platform&lt;span style=&quot;color:#f92672&quot;&gt;/&lt;/span&gt;upload&lt;span style=&quot;color:#f92672&quot;&gt;/&lt;/span&gt;video&lt;span style=&quot;color:#f92672&quot;&gt;/&lt;/span&gt;frame&lt;span style=&quot;color:#f92672&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#960050;background-color:#1e0010&quot;&gt;?&lt;/span&gt;os&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;upos&lt;span style=&quot;color:#f92672&quot;&gt;&amp;amp;&lt;/span&gt;zone&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;cs&lt;span style=&quot;color:#f92672&quot;&gt;&amp;amp;&lt;/span&gt;upcdn&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;attx&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 复制参数 &lt;code&gt;&amp;upcdn=attx&lt;/code&gt; 到原上传地址，比如原地址为
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;https:&lt;span style=&quot;color:#f92672&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;/&lt;/span&gt;member&lt;span style=&quot;color:#f92672&quot;&gt;.&lt;/span&gt;bilibili&lt;span style=&quot;color:#f92672&quot;&gt;.&lt;/span&gt;com&lt;span style=&quot;color:#f92672&quot;&gt;/&lt;/span&gt;platform&lt;span style=&quot;color:#f92672&quot;&gt;/&lt;/span&gt;upload&lt;span style=&quot;color:#f92672&quot;&gt;/&lt;/span&gt;video&lt;span style=&quot;color:#f92672&quot;&gt;/&lt;/span&gt;frame&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
   修改后为
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;https:&lt;span style=&quot;color:#f92672&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;/&lt;/span&gt;member&lt;span style=&quot;color:#f92672&quot;&gt;.&lt;/span&gt;bilibili&lt;span style=&quot;color:#f92672&quot;&gt;.&lt;/span&gt;com&lt;span style=&quot;color:#f92672&quot;&gt;/&lt;/span&gt;platform&lt;span style=&quot;color:#f92672&quot;&gt;/&lt;/span&gt;upload&lt;span style=&quot;color:#f92672&quot;&gt;/&lt;/span&gt;video&lt;span style=&quot;color:#f92672&quot;&gt;/&lt;/span&gt;frame&lt;span style=&quot;color:#f92672&quot;&gt;&amp;amp;&lt;/span&gt;upcdn&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;attx&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 然后就可以上传视频了
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;</content>
        <category term="Life"></category>
    </entry>
    <entry xml:lang="zh">
      <title>Windows优化记录</title>
      <link href="https://honmaple.me/posts/2025/10/windowsyou-hua-ji-lu/" rel="alternate"></link>
      <published>Sat, 11 Oct 2025 19:09:27 +0000</published>
      <updated>Sat, 11 Oct 2025 19:19:38 +0000</updated>
      <author>
        <name>honmaple</name>
      </author>
      <link rel="alternate" href="https://honmaple.me/posts/2025/10/windowsyou-hua-ji-lu/" type="text/html"/>
      <id>https://honmaple.me/posts/2025/10/windowsyou-hua-ji-lu/</id>
      <summary type="html">&lt;h2 id=&quot;heading-1&quot;&gt;去除快捷方式小箭头&lt;/h2&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;reg add &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt; /v 29 /d &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt;%systemroot%&lt;span style=&quot;color:#e6db74&quot;&gt;\system32\imageres.dll,197&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt; /t reg_sz /f
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;2&lt;/span&gt;&lt;span&gt;taskkill /f /im explorer.exe
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;3&lt;/span&gt;&lt;span&gt;attrib -s -r...&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;</summary>
      <content type="html">&lt;h2 id=&quot;heading-1&quot;&gt;去除快捷方式小箭头&lt;/h2&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;reg add &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt; /v 29 /d &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt;%systemroot%&lt;span style=&quot;color:#e6db74&quot;&gt;\system32\imageres.dll,197&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt; /t reg_sz /f
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;2&lt;/span&gt;&lt;span&gt;taskkill /f /im explorer.exe
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;3&lt;/span&gt;&lt;span&gt;attrib -s -r -h &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt;%userprofile%&lt;span style=&quot;color:#e6db74&quot;&gt;\AppData\Local\iconcache.db&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;4&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color:#66d9ef&quot;&gt;del&lt;/span&gt; &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt;%userprofile%&lt;span style=&quot;color:#e6db74&quot;&gt;\AppData\Local\iconcache.db&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt; /f /q
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;5&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color:#66d9ef&quot;&gt;start&lt;/span&gt; explorer
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;h2 id=&quot;heading-2&quot;&gt;恢复快捷方式小箭头&lt;/h2&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;reg delete &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt; /v 29 /f
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;2&lt;/span&gt;&lt;span&gt;taskkill /f /im explorer.exe
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;3&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color:#66d9ef&quot;&gt;start&lt;/span&gt; explorer
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;h2 id=&quot;heading-3&quot;&gt;交换大写锁定和右CTRL&lt;/h2&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;Windows Registry Editor Version 5.00
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;2&lt;/span&gt;&lt;span&gt;[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;3&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;Scancode Map&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt;=hex:00,00,00,00,00,00,00,00,03,00,00,00,1d,00,3a,00,3a,00,1d,e0,00,00,00,00
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;使用方法: 更改拓展名为&lt;code&gt;.reg&lt;/code&gt;, 双击运行&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1d,00,3a,00 表示将Caps键替换为Left Ctl&lt;/li&gt;
&lt;li&gt;3a,00,1d,e0表示将RightCtrl替换为Caps&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;heading-4&quot;&gt;恢复大写锁定和右CTRL&lt;/h2&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;Windows Registry Editor Version 5.00
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;2&lt;/span&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;3&lt;/span&gt;&lt;span&gt;[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Keyboard Layout]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;4&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;Scancode Map&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt;=-
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;h2 id=&quot;heading-5&quot;&gt;恢复windows10右键菜单&lt;/h2&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;reg add &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt; /f /ve
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;2&lt;/span&gt;&lt;span&gt;taskkill /f /im explorer.exe &amp;amp; &lt;span style=&quot;color:#66d9ef&quot;&gt;start&lt;/span&gt; explorer.exe
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;h2 id=&quot;heading-6&quot;&gt;恢复windows11右键菜单&lt;/h2&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;reg delete &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt; /f
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;2&lt;/span&gt;&lt;span&gt;taskkill /f /im explorer.exe &amp;amp; &lt;span style=&quot;color:#66d9ef&quot;&gt;start&lt;/span&gt; explorer.exe
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;h2 id=&quot;heading-7&quot;&gt;windows11暂停更新&lt;/h2&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;reg add &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt; /v FlightSettingsMaxPauseDays /t reg_dword /d 9999 /f
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;</content>
        <category term="Tech"></category>
    </entry>
    <entry xml:lang="zh">
      <title>MacOS环境配置</title>
      <link href="https://honmaple.me/posts/2025/04/macoshuan-jing-pei-zhi/" rel="alternate"></link>
      <published>Fri, 18 Apr 2025 15:53:20 +0000</published>
      <updated>Mon, 27 Jul 2026 20:17:54 +0000</updated>
      <author>
        <name>honmaple</name>
      </author>
      <link rel="alternate" href="https://honmaple.me/posts/2025/04/macoshuan-jing-pei-zhi/" type="text/html"/>
      <id>https://honmaple.me/posts/2025/04/macoshuan-jing-pei-zhi/</id>
      <summary type="html">
&lt;blockquote&gt;
&lt;p&gt;
最近实在没忍住，以 &lt;b&gt;2944&lt;/b&gt; 的价格入手了一台 &lt;b&gt;mac mini m4&lt;/b&gt; 丐版，而我之前一直使用的是一台2019年 &lt;b&gt;Intel&lt;/b&gt; 芯片的 &lt;b&gt;macbook pro&lt;/b&gt;，因为刚开始使用，开发环境还没配置好，所以还没感觉到明显地提升，但至少我的桌面倒是干净了不少。
&lt;/p&gt;

&lt;p&gt;
此次入手 &lt;b&gt;mac mini&lt;/b&gt; 后我使用 &lt;b&gt;迁移助理&lt;/b&gt; 对旧数据进行迁移，不幸的是，由于是 &lt;b&gt;Intel&lt;/b&gt; 迁移至 &lt;b&gt;Apple Silicon&lt;/b&gt;，所以出现了各种各样的问题，尤其是 &lt;code&gt;Bad CPU type in executable...&lt;/code&gt;&lt;/p&gt;&lt;/blockquote&gt;</summary>
      <content type="html">
&lt;blockquote&gt;
&lt;p&gt;
最近实在没忍住，以 &lt;b&gt;2944&lt;/b&gt; 的价格入手了一台 &lt;b&gt;mac mini m4&lt;/b&gt; 丐版，而我之前一直使用的是一台2019年 &lt;b&gt;Intel&lt;/b&gt; 芯片的 &lt;b&gt;macbook pro&lt;/b&gt;，因为刚开始使用，开发环境还没配置好，所以还没感觉到明显地提升，但至少我的桌面倒是干净了不少。
&lt;/p&gt;

&lt;p&gt;
此次入手 &lt;b&gt;mac mini&lt;/b&gt; 后我使用 &lt;b&gt;迁移助理&lt;/b&gt; 对旧数据进行迁移，不幸的是，由于是 &lt;b&gt;Intel&lt;/b&gt; 迁移至 &lt;b&gt;Apple Silicon&lt;/b&gt;，所以出现了各种各样的问题，尤其是 &lt;code&gt;Bad CPU type in executable&lt;/code&gt; 错误，导致 git、python等二进制文件全部不可用，最后只能重置系统并重头开始配置(注：重置系统只需要到 &lt;code&gt;设置 -&gt; 通用 -&gt; 传输与还原 -&gt; 抹掉所有内容和设置&lt;/code&gt;，不用长按开机键进入选项抹掉磁盘)
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;heading-1&quot;&gt;设置&lt;/h2&gt;
&lt;h3 id=&quot;heading-1.1&quot;&gt;App Store&lt;/h3&gt;
&lt;p&gt;
    因为我一般都是美区ID+国区商店，所以打开 &lt;b&gt;App Store&lt;/b&gt;，在左上方的菜单栏中找到 &lt;code&gt;商店 -&gt; 退出登录&lt;/code&gt;，并登入国区ID
&lt;/p&gt;

&lt;h3 id=&quot;heading-1.2&quot;&gt;终端&lt;/h3&gt;
&lt;p&gt;
    我还是习惯使用 &lt;code&gt;bash&lt;/code&gt;
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;chsh -s /bin/bash&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
    并且有使用了十多年的PS1配置
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;git_status&lt;span style=&quot;color:#f92672&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color:#f92672&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;2&lt;/span&gt;&lt;span&gt;    cmd&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;`&lt;/span&gt;git branch 2&amp;gt; /dev/null | sed -e &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#39;/^[^*]/d&amp;#39;&lt;/span&gt; -e &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#39;s/[(（]//&amp;#39;&lt;/span&gt; -e &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#39;s/[）)]//&amp;#39;&lt;/span&gt;  -e &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#39;s/* \(.*\)/(\1)/&amp;#39;&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;3&lt;/span&gt;&lt;span&gt;    echo -en &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;\033[32m&lt;/span&gt;$cmd&lt;span style=&quot;color:#e6db74&quot;&gt;\033[0m&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;4&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;5&lt;/span&gt;&lt;span&gt;proxy_status&lt;span style=&quot;color:#f92672&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color:#f92672&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;6&lt;/span&gt;&lt;span&gt;    &lt;span style=&quot;color:#f92672&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;[&lt;/span&gt; -z &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;${&lt;/span&gt;http_proxy&lt;span style=&quot;color:#e6db74&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&quot;color:#f92672&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;]&lt;/span&gt; &lt;span style=&quot;color:#f92672&quot;&gt;||&lt;/span&gt; echo -en &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;\033[32m[PROXY]\033[0m&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;7&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;8&lt;/span&gt;&lt;span&gt;PS1&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;\$(proxy_status)\[\e[0;37m\]\342\224\214\342\224\200 \[[\e[0;33m\]\u\[\e[0;37m\]]\342\224\200[\[\e[1;33m\]\w\[\e[0;37m\]]\$(git_status)\n\[\e[0;37m\]\342\224\224\342\224\200\342\224\200\342\225\274\[\e[0m\] &amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
    如果 &lt;code&gt;~/.bashrc&lt;/code&gt; 不生效，需要添加文件 &lt;code&gt;~/.bash_profile&lt;/code&gt;
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color:#66d9ef&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color:#f92672&quot;&gt;[&lt;/span&gt; -r $HOME/.bashrc &lt;span style=&quot;color:#f92672&quot;&gt;]&lt;/span&gt;; &lt;span style=&quot;color:#66d9ef&quot;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;2&lt;/span&gt;&lt;span&gt;    source $HOME/.bashrc
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;3&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color:#66d9ef&quot;&gt;fi&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;h2 id=&quot;heading-2&quot;&gt;必备软件&lt;/h2&gt;
&lt;p&gt;
   微信、QQ、QQ音乐、网易云音乐、Localsend等软件可以在商店里直接下载
&lt;/p&gt;

&lt;h3 id=&quot;heading-2.1&quot;&gt;homebrew&lt;/h3&gt;
&lt;p&gt;
    这应该是每个Mac用户的必备软件了吧
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;/bin/bash -c &amp;#34;$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
    如果安装速度太慢或是下载部分内容时完全卡住，可以先行安装科学上网工具
&lt;/p&gt;

&lt;p&gt;
    然后添加以下内容到 &lt;code&gt;~/.bashrc&lt;/code&gt;
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;export PATH&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;/opt/homebrew/bin:$PATH
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;2&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;3&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color:#66d9ef&quot;&gt;if&lt;/span&gt; which brew &amp;gt; /dev/null;&lt;span style=&quot;color:#66d9ef&quot;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;4&lt;/span&gt;&lt;span&gt;    export HOMEBREW_NO_AUTO_UPDATE&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;true
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;5&lt;/span&gt;&lt;span&gt;    &lt;span style=&quot;color:#75715e&quot;&gt;# export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;6&lt;/span&gt;&lt;span&gt;    &lt;span style=&quot;color:#75715e&quot;&gt;# export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;7&lt;/span&gt;&lt;span&gt;    &lt;span style=&quot;color:#75715e&quot;&gt;# export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;8&lt;/span&gt;&lt;span&gt;    eval &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&quot;color:#66d9ef&quot;&gt;$(&lt;/span&gt;brew shellenv&lt;span style=&quot;color:#66d9ef&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;9&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color:#66d9ef&quot;&gt;fi&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;h3 id=&quot;heading-2.2&quot;&gt;betterdisplay&lt;/h3&gt;
&lt;p&gt;
    由于我使用的是一个2K显示器，所以需要开启HIDPI
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;brew install --cask betterdisplay&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;h3 id=&quot;heading-2.3&quot;&gt;clash-verge-rev&lt;/h3&gt;
&lt;p&gt;
    如果之前是通过dmg文件安装的，需要先卸载，然后重新使用brew安装，方便升级和管理
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;brew install --cask clash-verge-rev&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;h3 id=&quot;heading-2.4&quot;&gt;folo&lt;/h3&gt;
&lt;p&gt;
    RSS信息聚合阅读器
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;brew install --cask folo&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;h3 id=&quot;heading-2.5&quot;&gt;google-chrome&lt;/h3&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;brew install --cask google-chrome&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
    如果在登陆账号时总是提示请求取消，并且登陆失败，开启全局代理即可
&lt;/p&gt;

&lt;h3 id=&quot;heading-2.6&quot;&gt;yabai&lt;/h3&gt;
&lt;p&gt;
    macos端的平铺窗口管理
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;brew install koekeishiya/formulae/yabai
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;2&lt;/span&gt;&lt;span&gt;yabai --start-service&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;h3 id=&quot;heading-2.7&quot;&gt;hammerspoon&lt;/h3&gt;
&lt;p&gt;
    主要用于搭配 &lt;b&gt;yabai&lt;/b&gt; 使用
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;brew install --cask hammerspoon&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
    我的配置在 &lt;a href=&quot;https://github.com/honmaple/dotfiles/tree/master/macos&quot;&gt;https://github.com/honmaple/dotfiles/tree/master/macos&lt;/a&gt;
&lt;/p&gt;

&lt;h3 id=&quot;heading-2.8&quot;&gt;Localsend&lt;/h3&gt;
&lt;p&gt;
    一个内网文件传输工具，可以在商店直接下载，或者使用
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;brew install --cask localsend&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;h3 id=&quot;heading-2.9&quot;&gt;inkscape&lt;/h3&gt;
&lt;p&gt;
    一个矢量图绘制软件
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;brew install --cask inkscape&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;h3 id=&quot;heading-2.10&quot;&gt;wireshark&lt;/h3&gt;
&lt;p&gt;
    抓包工具
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;brew install --cask wireshark&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;h3 id=&quot;heading-2.11&quot;&gt;字体&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
 终端字体
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;brew install --cask font-maple-mono-nf&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;heading-2.12&quot;&gt;其它&lt;/h3&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;brew install rg
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;2&lt;/span&gt;&lt;span&gt;brew install tree htop
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;3&lt;/span&gt;&lt;span&gt;brew install --cask visual-studio-code&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
 域名扫描
      &lt;a href=&quot;https://github.com/brandonyoungdev/tldx&quot;&gt;https://github.com/brandonyoungdev/tldx&lt;/a&gt;
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;brew install tldx&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
      使用方式
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;tldx -r &amp;#39;lib[a-z]{2}&amp;#39; -t com,me,io --only-available&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;heading-3&quot;&gt;开发软件&lt;/h2&gt;
&lt;h3 id=&quot;heading-3.1&quot;&gt;Emacs&lt;/h3&gt;
&lt;p&gt;
    emacs永存，虽然我是邪恶的evil用户
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;brew install --cask railwaycat/emacsmacport/emacs-mac&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
 &lt;code&gt;quelpa&lt;/code&gt; 依赖
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;brew install gnu-tar&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 &lt;code&gt;toml&lt;/code&gt; 格式化工具
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;brew install taplo&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;heading-3.2&quot;&gt;Docker&lt;/h3&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;brew install --cask docker&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;h3 id=&quot;heading-3.3&quot;&gt;Ruby&lt;/h3&gt;
&lt;p&gt;
    &lt;code&gt;~/.bashrc&lt;/code&gt;配置
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;export GEM_HOME&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;$HOME/repo/ruby/gem
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;2&lt;/span&gt;&lt;span&gt;export GEM_PATH&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;$HOME/repo/ruby/gem
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;3&lt;/span&gt;&lt;span&gt;export GEM_SPEC_CACHE&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;$HOME/repo/ruby/gem/specs
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;4&lt;/span&gt;&lt;span&gt;export PATH&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;$GEM_HOME/bin:$PATH&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;h3 id=&quot;heading-3.4&quot;&gt;Python&lt;/h3&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;brew install pyenv pyenv-virtualenv&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
    &lt;code&gt;~/.bashrc&lt;/code&gt;配置
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color:#66d9ef&quot;&gt;if&lt;/span&gt; which pyenv &amp;gt; /dev/null;&lt;span style=&quot;color:#66d9ef&quot;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;2&lt;/span&gt;&lt;span&gt;    export PYENV_ROOT&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;$HOME/repo/python/pyenv
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;3&lt;/span&gt;&lt;span&gt;    export PATH&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;$PYENV_ROOT/bin:$PATH
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;4&lt;/span&gt;&lt;span&gt;    eval &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&quot;color:#66d9ef&quot;&gt;$(&lt;/span&gt;pyenv init -&lt;span style=&quot;color:#66d9ef&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;5&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color:#66d9ef&quot;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;6&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;7&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color:#66d9ef&quot;&gt;if&lt;/span&gt; which pyenv-virtualenv-init &amp;gt; /dev/null; &lt;span style=&quot;color:#66d9ef&quot;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;8&lt;/span&gt;&lt;span&gt;    eval &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&quot;color:#66d9ef&quot;&gt;$(&lt;/span&gt;pyenv virtualenv-init -&lt;span style=&quot;color:#66d9ef&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;9&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color:#66d9ef&quot;&gt;fi&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;export PYTHONUSERBASE&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;$HOME/repo/python
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;2&lt;/span&gt;&lt;span&gt;export PYTHONHISTFILE&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;$HOME/repo/python/history
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;3&lt;/span&gt;&lt;span&gt;export PATH&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;$HOME/repo/python/bin:$PATH&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
    开发依赖:
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;python3 -m pip install --user python-lsp-server
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;2&lt;/span&gt;&lt;span&gt;python3 -m pip install --user python-lsp-ruff&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;h3 id=&quot;heading-3.5&quot;&gt;Golang&lt;/h3&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;brew install go&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
    &lt;code&gt;~/.bashrc&lt;/code&gt;配置
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;export GOPROXY&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;https://goproxy.cn,direct
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;2&lt;/span&gt;&lt;span&gt;export GOPATH&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;$HOME/repo/golang
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;3&lt;/span&gt;&lt;span&gt;export PATH&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;$HOME/repo/golang/bin:$PATH&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
    开发依赖:
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;go install golang&lt;span style=&quot;color:#f92672&quot;&gt;.&lt;/span&gt;org&lt;span style=&quot;color:#f92672&quot;&gt;/&lt;/span&gt;x&lt;span style=&quot;color:#f92672&quot;&gt;/&lt;/span&gt;tools&lt;span style=&quot;color:#f92672&quot;&gt;/&lt;/span&gt;gopls&lt;span style=&quot;color:#960050;background-color:#1e0010&quot;&gt;@&lt;/span&gt;latest
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;2&lt;/span&gt;&lt;span&gt;go install honnef&lt;span style=&quot;color:#f92672&quot;&gt;.&lt;/span&gt;co&lt;span style=&quot;color:#f92672&quot;&gt;/&lt;/span&gt;go&lt;span style=&quot;color:#f92672&quot;&gt;/&lt;/span&gt;tools&lt;span style=&quot;color:#f92672&quot;&gt;/&lt;/span&gt;cmd&lt;span style=&quot;color:#f92672&quot;&gt;/&lt;/span&gt;staticcheck&lt;span style=&quot;color:#960050;background-color:#1e0010&quot;&gt;@&lt;/span&gt;latest
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;3&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;4&lt;/span&gt;&lt;span&gt;go install golang&lt;span style=&quot;color:#f92672&quot;&gt;.&lt;/span&gt;org&lt;span style=&quot;color:#f92672&quot;&gt;/&lt;/span&gt;x&lt;span style=&quot;color:#f92672&quot;&gt;/&lt;/span&gt;mobile&lt;span style=&quot;color:#f92672&quot;&gt;/&lt;/span&gt;cmd&lt;span style=&quot;color:#f92672&quot;&gt;/&lt;/span&gt;gomobile&lt;span style=&quot;color:#960050;background-color:#1e0010&quot;&gt;@&lt;/span&gt;latest
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;5&lt;/span&gt;&lt;span&gt;gomobile init&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;h3 id=&quot;heading-3.6&quot;&gt;Protobuf&lt;/h3&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;brew install protobuf bufbuild/buf/buf&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
 Go
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;2&lt;/span&gt;&lt;span&gt;go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;3&lt;/span&gt;&lt;span&gt;go install github.com/favadi/protoc-go-inject-tag@latest
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;4&lt;/span&gt;&lt;span&gt;go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway@latest
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;5&lt;/span&gt;&lt;span&gt;go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2@latest&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 Dart
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;dart --disable-analytics
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;2&lt;/span&gt;&lt;span&gt;dart pub global activate protoc_plugin 21.1.2&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;heading-3.7&quot;&gt;Android&lt;/h3&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;brew install --cask android-studio&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
    然后打开 &lt;b&gt;android-studio&lt;/b&gt;, 并配置 &lt;b&gt;HTTP手动代理&lt;/b&gt;，设置sdk目录为 &lt;code&gt;$HOME/repo/android/sdk&lt;/code&gt;，设置完成后到达 &lt;code&gt;Welcome to Android Studio&lt;/code&gt; 界面，点击 &lt;code&gt;More Actions -&gt; SDK Manager&lt;/code&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
 SDK Platforms: 勾选 &lt;code&gt;Android 12.0&lt;/code&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 SDK Tools: 勾选 &lt;code&gt;NDK(Side by side)&lt;/code&gt; 和 &lt;code&gt;Android SDK Command-line Tools (latest)&lt;/code&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
    &lt;code&gt;~/.bashrc&lt;/code&gt;配置
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;export ANDROID_HOME&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;$HOME/repo/android/sdk
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;2&lt;/span&gt;&lt;span&gt;export NDK_HOME&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt;$ANDROID_HOME&lt;span style=&quot;color:#e6db74&quot;&gt;/ndk/26.2.11394342&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;3&lt;/span&gt;&lt;span&gt;export JAVA_HOME&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#39;/Applications/Android Studio.app/Contents/jbr/Contents/Home&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;4&lt;/span&gt;&lt;span&gt;export PATH&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;$ANDROID_HOME/platform-tools:$PATH&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;h3 id=&quot;heading-3.8&quot;&gt;Flutter&lt;/h3&gt;
&lt;p&gt;
    下载 &lt;a href=&quot;https://storage.googleapis.com/flutter_infra_release/releases/stable/macos/flutter_macos_arm64_3.29.3-stable.zip&quot;&gt;flutter_macos_arm64_3.29.3-stable.zip&lt;/a&gt; 并解压到 &lt;code&gt;~/repo&lt;/code&gt;
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;unzip &lt;span style=&quot;color:#f92672&quot;&gt;~&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;/&lt;/span&gt;Downloads&lt;span style=&quot;color:#f92672&quot;&gt;/&lt;/span&gt;flutter_macos_arm64_3&lt;span style=&quot;color:#f92672&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#ae81ff&quot;&gt;29.3&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;-&lt;/span&gt;stable&lt;span style=&quot;color:#f92672&quot;&gt;.&lt;/span&gt;zip&lt;span style=&quot;color:#f92672&quot;&gt;-&lt;/span&gt;d &lt;span style=&quot;color:#f92672&quot;&gt;~&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;/&lt;/span&gt;repo&lt;span style=&quot;color:#f92672&quot;&gt;/&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
    安装 &lt;b&gt;rosetta&lt;/b&gt;
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;sudo softwareupdate --install-rosetta --agree-to-license&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
    安装 &lt;b&gt;cocoapods&lt;/b&gt;
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color:#66d9ef&quot;&gt;export&lt;/span&gt; GEM_HOME&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;$&lt;/span&gt;HOME&lt;span style=&quot;color:#f92672&quot;&gt;/&lt;/span&gt;repo&lt;span style=&quot;color:#f92672&quot;&gt;/&lt;/span&gt;ruby&lt;span style=&quot;color:#f92672&quot;&gt;/&lt;/span&gt;gem
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;2&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color:#66d9ef&quot;&gt;export&lt;/span&gt; PATH&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;$&lt;/span&gt;GEM_HOME&lt;span style=&quot;color:#f92672&quot;&gt;/&lt;/span&gt;bin:&lt;span style=&quot;color:#f92672&quot;&gt;$&lt;/span&gt;PATH
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;3&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;4&lt;/span&gt;&lt;span&gt;gem install cocoapods &lt;span style=&quot;color:#f92672&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;-&lt;/span&gt;user&lt;span style=&quot;color:#f92672&quot;&gt;-&lt;/span&gt;install &lt;span style=&quot;color:#f92672&quot;&gt;-&lt;/span&gt;V&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
    因为系统内置的ruby版本是 &lt;code&gt;2.6.10&lt;/code&gt;，这导致 &lt;b&gt;cocoapods&lt;/b&gt; 的部分依赖无法安装，并出现类似下面的错误
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;ERROR:  Error installing cocoapods:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;2&lt;/span&gt;&lt;span&gt;    The last version of securerandom (&amp;gt;= 0.3) to support your Ruby &amp;amp; RubyGems was 0.3.2. Try installing it with `gem install securerandom -v 0.3.2` and then running the current command again
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;3&lt;/span&gt;&lt;span&gt;    securerandom requires Ruby version &amp;gt;= 3.1.0. The current ruby version is 2.6.10.210.&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
    本来还想按照提示处理，但处理完一个又来一个，处理完一个又来一个，太过麻烦。还有一种方法是安装新版本的ruby
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;brew install ruby&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
    然后使用新版本ruby的gem安装 &lt;b&gt;cocoapods&lt;/b&gt;
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;/opt/homebrew/Cellar/ruby/3.4.3/bin/gem install cocoapods -V&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
    这时使用 &lt;code&gt;flutter doctor&lt;/code&gt; 会出现下面错误
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;[!] Xcode - develop for iOS and macOS (Xcode 16.3)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;2&lt;/span&gt;&lt;span&gt;    ✗ CocoaPods installed but not working.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;3&lt;/span&gt;&lt;span&gt;        You appear to have CocoaPods installed but it is not working.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;4&lt;/span&gt;&lt;span&gt;        This can happen if the version of Ruby that CocoaPods was installed with is different from the one being used to invoke it.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;5&lt;/span&gt;&lt;span&gt;        This can usually be fixed by re-installing CocoaPods.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;6&lt;/span&gt;&lt;span&gt;      For re-installation instructions, see https://guides.cocoapods.org/using/getting-started.html#installation
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;7&lt;/span&gt;&lt;span&gt;[✓] Chrome - develop for the web&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
    通过使用 &lt;code&gt;pod --version&lt;/code&gt; 查看
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 1&lt;/span&gt;&lt;span&gt;/opt/homebrew/Cellar/ruby/3.4.3/lib/ruby/3.4.0/rubygems/specification.rb:1421:in &amp;#39;block in Gem::Specification#activate_dependencies&amp;#39;: Could not find &amp;#39;nkf&amp;#39; (&amp;gt;= 0) among 100 total gem(s) (Gem::MissingSpecError)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 2&lt;/span&gt;&lt;span&gt;Checked in &amp;#39;GEM_PATH=/Users/xxxx/repo/ruby/gem&amp;#39; at: /Users/xxxx/repo/ruby/gem/specifications/CFPropertyList-3.0.7.gemspec, execute `gem env` for more information
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 3&lt;/span&gt;&lt;span&gt;    from /opt/homebrew/Cellar/ruby/3.4.3/lib/ruby/3.4.0/rubygems/specification.rb:1407:in &amp;#39;Array#each&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 4&lt;/span&gt;&lt;span&gt;    from /opt/homebrew/Cellar/ruby/3.4.3/lib/ruby/3.4.0/rubygems/specification.rb:1407:in &amp;#39;Gem::Specification#activate_dependencies&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 5&lt;/span&gt;&lt;span&gt;    from /opt/homebrew/Cellar/ruby/3.4.3/lib/ruby/3.4.0/rubygems/specification.rb:1389:in &amp;#39;Gem::Specification#activate&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 6&lt;/span&gt;&lt;span&gt;    from /opt/homebrew/Cellar/ruby/3.4.3/lib/ruby/3.4.0/rubygems/specification.rb:1423:in &amp;#39;block in Gem::Specification#activate_dependencies&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 7&lt;/span&gt;&lt;span&gt;    from /opt/homebrew/Cellar/ruby/3.4.3/lib/ruby/3.4.0/rubygems/specification.rb:1407:in &amp;#39;Array#each&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 8&lt;/span&gt;&lt;span&gt;    from /opt/homebrew/Cellar/ruby/3.4.3/lib/ruby/3.4.0/rubygems/specification.rb:1407:in &amp;#39;Gem::Specification#activate_dependencies&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 9&lt;/span&gt;&lt;span&gt;    from /opt/homebrew/Cellar/ruby/3.4.3/lib/ruby/3.4.0/rubygems/specification.rb:1389:in &amp;#39;Gem::Specification#activate&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;10&lt;/span&gt;&lt;span&gt;    from /opt/homebrew/Cellar/ruby/3.4.3/lib/ruby/3.4.0/rubygems/specification.rb:1423:in &amp;#39;block in Gem::Specification#activate_dependencies&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;11&lt;/span&gt;&lt;span&gt;    from /opt/homebrew/Cellar/ruby/3.4.3/lib/ruby/3.4.0/rubygems/specification.rb:1407:in &amp;#39;Array#each&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;12&lt;/span&gt;&lt;span&gt;    from /opt/homebrew/Cellar/ruby/3.4.3/lib/ruby/3.4.0/rubygems/specification.rb:1407:in &amp;#39;Gem::Specification#activate_dependencies&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;13&lt;/span&gt;&lt;span&gt;    from /opt/homebrew/Cellar/ruby/3.4.3/lib/ruby/3.4.0/rubygems/specification.rb:1389:in &amp;#39;Gem::Specification#activate&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;14&lt;/span&gt;&lt;span&gt;    from /opt/homebrew/Cellar/ruby/3.4.3/lib/ruby/3.4.0/rubygems.rb:290:in &amp;#39;block in Gem.activate_bin_path&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;15&lt;/span&gt;&lt;span&gt;    from /opt/homebrew/Cellar/ruby/3.4.3/lib/ruby/3.4.0/rubygems.rb:289:in &amp;#39;Thread::Mutex#synchronize&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;16&lt;/span&gt;&lt;span&gt;    from /opt/homebrew/Cellar/ruby/3.4.3/lib/ruby/3.4.0/rubygems.rb:289:in &amp;#39;Gem.activate_bin_path&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;17&lt;/span&gt;&lt;span&gt;    from /Users/xxxx/repo/ruby/gem/bin/pod:25:in &amp;#39;&amp;lt;main&amp;gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
    尝试安装 &lt;code&gt;nkf&lt;/code&gt; 终于解决了 &lt;b&gt;cocoapods&lt;/b&gt; 的安装问题
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;/opt/homebrew/Cellar/ruby/3.4.3/bin/gem install nkf -V&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
    &lt;code&gt;~/.bashrc&lt;/code&gt; 配置
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;alias flutter&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#39;flutter --no-version-check&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;2&lt;/span&gt;&lt;span&gt;export PUB_HOSTED_URL&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;https://pub.flutter-io.cn
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;3&lt;/span&gt;&lt;span&gt;export FLUTTER_STORAGE_BASE_URL&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;https://storage.flutter-io.cn
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;4&lt;/span&gt;&lt;span&gt;export PATH&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;$HOME/repo/flutter/bin:$PATH&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
    如果需要使用 &lt;code&gt;fvm&lt;/code&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
 安装
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;dart pub global activate fvm&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 卸载
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;dart pub global deactivate fvm&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 &lt;code&gt;~/.bashrc&lt;/code&gt; 配置
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;export FVM_CACHE_PATH&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;$HOME/repo/flutter/fvm&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 查看可使用的版本
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;fvm releases&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 切换版本
      在flutter项目下执行
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;fvm use 3.39.3
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;2&lt;/span&gt;&lt;span&gt;fvm use 3.38.10&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 设置全局版本
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;fvm global 3.29.3&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
      然后修改 &lt;code&gt;.bashrc&lt;/code&gt;
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;export PATH&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;$HOME/repo/flutter/fvm/default/bin:$PATH&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 &lt;b&gt;注意事项&lt;/b&gt;
&lt;/p&gt;

&lt;p&gt;
      &lt;code&gt;fvm&lt;/code&gt; 依赖于 &lt;code&gt;cli_completion&lt;/code&gt;，而 &lt;code&gt;cli_completion&lt;/code&gt; 在安装时会自动添加脚本到 &lt;code&gt;~/.bash_profile&lt;/code&gt;，并自动创建 &lt;code&gt;~/.dart-cli-completion&lt;/code&gt; 目录，没有经过用户的任何同意就污染用户的环境(真TM垃圾)，如果需要恢复，可以直接删除新增脚本
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;## [Completion]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;2&lt;/span&gt;&lt;span&gt;## Completion scripts setup. Remove the following line to uninstall
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;3&lt;/span&gt;&lt;span&gt;[ -f /Users/xxx/.dart-cli-completion/bash-config.bash ] &amp;amp;&amp;amp; . /Users/xxx/.dart-cli-completion/bash-config.bash || true
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;4&lt;/span&gt;&lt;span&gt;## [/Completion]&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
      并同步删除 &lt;code&gt;~/.dart-cli-completion&lt;/code&gt;
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;rm -rf ~/.dart-cli-completion&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;heading-3.9&quot;&gt;Node&lt;/h3&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;brew install node&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
    &lt;code&gt;~/.bashrc&lt;/code&gt;配置
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;export NODE_PATH&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;$HOME/repo/npm/lib/node_modules
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;2&lt;/span&gt;&lt;span&gt;export PATH&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;$HOME/repo/npm/bin:$PATH&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
    开发依赖:
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;npm install -g yarn
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;2&lt;/span&gt;&lt;span&gt;npm install -g pnpm
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;3&lt;/span&gt;&lt;span&gt;npm install -g typescript-language-server typescript
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;4&lt;/span&gt;&lt;span&gt;npm install -g @vue/language-server
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;5&lt;/span&gt;&lt;span&gt;npm install -g @tailwindcss/language-server
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;6&lt;/span&gt;&lt;span&gt;npm install -g emmet-ls
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;7&lt;/span&gt;&lt;span&gt;npm install -g prettier&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
    设置 &lt;code&gt;pnpm&lt;/code&gt; 缓存路径，注意: &lt;code&gt;pnpm&lt;/code&gt; 配置文件存储在 &lt;code&gt;~/Library/Preferences/pnpm/rc&lt;/code&gt;
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;pnpm config set store-dir ~/repo/pnpm&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
    其它:
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;npm install -g @quasar/cli&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;h3 id=&quot;heading-3.10&quot;&gt;Rust&lt;/h3&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;brew install rustup&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
    &lt;code&gt;~/.bashrc&lt;/code&gt;配置
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;export CARGO_HOME&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;$HOME/repo/rust/cargo
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;2&lt;/span&gt;&lt;span&gt;export CARGO_TARGET_DIR&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;$HOME/repo/rust/cargo/build
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;3&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;4&lt;/span&gt;&lt;span&gt;export RUSTUP_HOME&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;$HOME/repo/rust/rustup
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;5&lt;/span&gt;&lt;span&gt;export RUSTUP_DIST_SERVER&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;https://rsproxy.cn
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;6&lt;/span&gt;&lt;span&gt;export RUSTUP_UPDATE_ROOT&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;https://rsproxy.cn/rustup
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;7&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;8&lt;/span&gt;&lt;span&gt;export PATH&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&quot;color:#66d9ef&quot;&gt;$(&lt;/span&gt;brew --prefix rustup&lt;span style=&quot;color:#66d9ef&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;/bin:&lt;/span&gt;$CARGO_HOME&lt;span style=&quot;color:#e6db74&quot;&gt;/bin:&lt;/span&gt;$PATH&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
    初始化
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;rustup default stable&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;h2 id=&quot;heading-4&quot;&gt;AI软件&lt;/h2&gt;
&lt;h3 id=&quot;heading-4.1&quot;&gt;Opencode&lt;/h3&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;- brew install opencode
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;2&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color:#a6e22e&quot;&gt;+ brew install anomalyco/tap/opencode
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
    如果安装时报错
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color:#a6e22e&quot;&gt;It&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;seems&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;that&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;your&lt;/span&gt; &lt;span style=&quot;color:#f92672&quot;&gt;package&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;manager&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;failed&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;to&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;install&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;the&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;right&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;version&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;of&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;the&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;opencode&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;CLI&lt;/span&gt; &lt;span style=&quot;color:#66d9ef&quot;&gt;for&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;your&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;platform&lt;/span&gt;. &lt;span style=&quot;color:#a6e22e&quot;&gt;You&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;can&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;try&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;manually&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;installing&lt;/span&gt; &lt;span style=&quot;color:#a6e22e&quot;&gt;the&lt;/span&gt; &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;opencode-darwin-arm64&amp;#34;&lt;/span&gt; &lt;span style=&quot;color:#f92672&quot;&gt;package&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
    则可以使用 &lt;code&gt;npm install -g opencode-ai&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
    桌面版本
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;brew install --cask opencode-desktop&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;h3 id=&quot;heading-4.2&quot;&gt;Codex&lt;/h3&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;brew install --cask codex
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;2&lt;/span&gt;&lt;span&gt;brew install --cask codex-app&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
    由于新版 &lt;code&gt;codex-app&lt;/code&gt; 迁移到了 &lt;code&gt;chatgpt&lt;/code&gt;
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;brew uninstall --cask codex-app
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;2&lt;/span&gt;&lt;span&gt;brew install --cask chatgpt&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
    如果已经安装过 &lt;code&gt;ChatGPT&lt;/code&gt;，出现应用已存在的报错
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;Error: It seems there is already an App at &amp;#39;/Applications/ChatGPT.app&amp;#39;.&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
    可以执行
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;brew install --cask --force chatgpt&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;h3 id=&quot;heading-4.3&quot;&gt;Claude Code&lt;/h3&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;brew install --cask claude-code&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;h3 id=&quot;heading-4.4&quot;&gt;trae&lt;/h3&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;brew install --cask trae&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;</content>
        <category term="Tech"></category>
    </entry>
    <entry xml:lang="zh">
      <title>绿联Nas优化</title>
      <link href="https://honmaple.me/posts/2023/12/lu-lian-nasyou-hua/" rel="alternate"></link>
      <published>Tue, 12 Dec 2023 21:54:12 +0000</published>
      <updated>Wed, 06 Mar 2024 15:09:26 +0000</updated>
      <author>
        <name>honmaple</name>
      </author>
      <link rel="alternate" href="https://honmaple.me/posts/2023/12/lu-lian-nasyou-hua/" type="text/html"/>
      <id>https://honmaple.me/posts/2023/12/lu-lian-nasyou-hua/</id>
      <summary type="html">
&lt;p&gt;
记录一下，每次升级系统都要重新改一次
&lt;/p&gt;

&lt;h2 id=&quot;heading-1&quot;&gt;禁用迅雷&lt;/h2&gt;
&lt;p&gt;
   找到 &lt;code&gt;/ugreen/thunder/xunlei-pan/start.sh&lt;/code&gt; 文件，注释掉倒数第二行
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;#su - $thunderName ...&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
   运行 &lt;code&gt;/ugreen/thunder/xunlei-pan/stop.sh&lt;/code&gt; 关闭当前进程
&lt;/p&gt;

&lt;h2 id=&quot;heading-2&quot;&gt;禁用移动云盘&lt;/h2&gt;
&lt;p&gt;
   删除 &lt;code&gt;/data/nas_server/cmcc_svr&lt;/code&gt; 文件
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;mv /data/nas_server...&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;</summary>
      <content type="html">
&lt;p&gt;
记录一下，每次升级系统都要重新改一次
&lt;/p&gt;

&lt;h2 id=&quot;heading-1&quot;&gt;禁用迅雷&lt;/h2&gt;
&lt;p&gt;
   找到 &lt;code&gt;/ugreen/thunder/xunlei-pan/start.sh&lt;/code&gt; 文件，注释掉倒数第二行
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;#su - $thunderName ...&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
   运行 &lt;code&gt;/ugreen/thunder/xunlei-pan/stop.sh&lt;/code&gt; 关闭当前进程
&lt;/p&gt;

&lt;h2 id=&quot;heading-2&quot;&gt;禁用移动云盘&lt;/h2&gt;
&lt;p&gt;
   删除 &lt;code&gt;/data/nas_server/cmcc_svr&lt;/code&gt; 文件
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;mv /data/nas_server/cmcc_svr /data/nas_server/cmcc_svr.bak&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
   关闭当前进程
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;ps axuf | grep cmcc | grep -v grep | awk &amp;#39;{printf $2}&amp;#39; | xargs kill -9&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;h2 id=&quot;heading-3&quot;&gt;禁用p2px&lt;/h2&gt;
&lt;p&gt;
   新建一个脚本 &lt;code&gt;/root/script/myp2p&lt;/code&gt;
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color:#75715e&quot;&gt;#!/bin/sh
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;2&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;3&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color:#66d9ef&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color:#f92672&quot;&gt;[&lt;/span&gt; -e &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;/data/nas_server/p2px/p2px&amp;#34;&lt;/span&gt; &lt;span style=&quot;color:#f92672&quot;&gt;]&lt;/span&gt;; &lt;span style=&quot;color:#66d9ef&quot;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;4&lt;/span&gt;&lt;span&gt;    mv /data/nas_server/p2px/p2px /data/nas_server/p2px/p2px.bak
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;5&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color:#66d9ef&quot;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;6&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;7&lt;/span&gt;&lt;span&gt;killall -q -9 p2px &lt;span style=&quot;color:#f92672&quot;&gt;||&lt;/span&gt; true&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
   在 &lt;code&gt;/etc/crontabs/root&lt;/code&gt; 文件添加一个定时任务
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;*/3 * * * * /root/script/myp2p&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;h2 id=&quot;heading-4&quot;&gt;ssh自启动&lt;/h2&gt;
&lt;p&gt;
   新建一个脚本 &lt;code&gt;/root/script/myscript&lt;/code&gt;
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 1&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color:#75715e&quot;&gt;#!/bin/sh
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 2&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 3&lt;/span&gt;&lt;span&gt;run_myscript&lt;span style=&quot;color:#f92672&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 4&lt;/span&gt;&lt;span&gt;    mkdir -m &lt;span style=&quot;color:#ae81ff&quot;&gt;0700&lt;/span&gt; -p /var/empty
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 5&lt;/span&gt;&lt;span&gt;    netstat -anp | grep 0.0.0.0:922 | grep sshd | grep -v grep &lt;span style=&quot;color:#f92672&quot;&gt;||&lt;/span&gt; /usr/sbin/sshd -D
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 6&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 7&lt;/span&gt;&lt;span&gt;    sleep &lt;span style=&quot;color:#ae81ff&quot;&gt;10&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 8&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt; 9&lt;/span&gt;&lt;span&gt;    &lt;span style=&quot;color:#75715e&quot;&gt;# zerotier相关&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;10&lt;/span&gt;&lt;span&gt;    lsmod | grep tun | grep -v grep &lt;span style=&quot;color:#f92672&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; chmod &lt;span style=&quot;color:#ae81ff&quot;&gt;666&lt;/span&gt; /dev/net/tun &lt;span style=&quot;color:#f92672&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; docker restart zerotier
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;11&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;12&lt;/span&gt;&lt;span&gt;    ip route | grep 10.8.235 | grep -v grep &lt;span style=&quot;color:#f92672&quot;&gt;||&lt;/span&gt; ip route add 10.8.235.0/24 via 192.168.100.2
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;13&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color:#f92672&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;14&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;15&lt;/span&gt;&lt;span&gt;run_myscript &amp;amp;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;16&lt;/span&gt;&lt;span&gt;echo &lt;span style=&quot;color:#e6db74&quot;&gt;`&lt;/span&gt;date&lt;span style=&quot;color:#e6db74&quot;&gt;`&lt;/span&gt; &amp;gt; /tmp/myscript.txt&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
   添加到自启动
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span style=&quot;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&quot;&gt;1&lt;/span&gt;&lt;span&gt;ln -s  /root/script/myscript /etc/rc.d/S99myscript&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;</content>
        <category term="Tech/Geek"></category>
    </entry>
    <entry xml:lang="zh">
      <title>文件同步和备份</title>
      <link href="https://honmaple.me/posts/2023/08/文件同步和备份/" rel="alternate"></link>
      <published>Fri, 04 Aug 2023 15:30:04 +0000</published>
      <updated>Thu, 21 Sep 2023 11:13:21 +0000</updated>
      <author>
        <name>honmaple</name>
      </author>
      <link rel="alternate" href="https://honmaple.me/posts/2023/08/文件同步和备份/" type="text/html"/>
      <id>https://honmaple.me/posts/2023/08/文件同步和备份/</id>
      <summary type="html">
&lt;blockquote&gt;
&lt;p&gt;
最近在写一个文件同步和备份的软件，特此记录
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;heading-1&quot;&gt;同步&lt;/h2&gt;
&lt;h3 id=&quot;heading-1.1&quot;&gt;单向同步&lt;/h3&gt;
&lt;h4 id=&quot;heading-1.1.1&quot;&gt;同步选项&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
 选项一: 源目录的文件和目标目录的文件都发生修改:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
 覆盖文件: &lt;b&gt;源目录 -&amp;gt; 目录目录&lt;/b&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 跳过文件: 不作任何处理
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 选项二: 源目录的文件被删除时，是否删除目标目录的文件
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;heading-1.1.2&quot;&gt;同步逻辑&lt;/h4&gt;
&lt;p&gt;
     &lt;b&gt;第一次同步&lt;/b&gt;会获取源目录和目标目录所有文件的信息, 并将信息写入本地。这时源目录下所有文件都是新增的。&lt;b&gt;后续同步&lt;/b&gt;会获取源目录和目标目录所有文件的信息, 并对比本地信息的修改来进行同步。
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
 源目录&lt;b&gt;无修改&lt;/b&gt;: 无操作
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 源目录&lt;b&gt;新增文件&lt;/b&gt;: 对比信息文件判断是否新增
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
 目标目录无修改: &lt;b&gt;源目录 -&amp;gt; 目录目录&lt;/b&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 目标目录新增文件: &lt;b&gt;选项一...&lt;/b&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;</summary>
      <content type="html">
&lt;blockquote&gt;
&lt;p&gt;
最近在写一个文件同步和备份的软件，特此记录
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;heading-1&quot;&gt;同步&lt;/h2&gt;
&lt;h3 id=&quot;heading-1.1&quot;&gt;单向同步&lt;/h3&gt;
&lt;h4 id=&quot;heading-1.1.1&quot;&gt;同步选项&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
 选项一: 源目录的文件和目标目录的文件都发生修改:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
 覆盖文件: &lt;b&gt;源目录 -&amp;gt; 目录目录&lt;/b&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 跳过文件: 不作任何处理
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 选项二: 源目录的文件被删除时，是否删除目标目录的文件
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;heading-1.1.2&quot;&gt;同步逻辑&lt;/h4&gt;
&lt;p&gt;
     &lt;b&gt;第一次同步&lt;/b&gt;会获取源目录和目标目录所有文件的信息, 并将信息写入本地。这时源目录下所有文件都是新增的。&lt;b&gt;后续同步&lt;/b&gt;会获取源目录和目标目录所有文件的信息, 并对比本地信息的修改来进行同步。
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
 源目录&lt;b&gt;无修改&lt;/b&gt;: 无操作
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 源目录&lt;b&gt;新增文件&lt;/b&gt;: 对比信息文件判断是否新增
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
 目标目录无修改: &lt;b&gt;源目录 -&amp;gt; 目录目录&lt;/b&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 目标目录新增文件: &lt;b&gt;选项一&lt;/b&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 源目录&lt;b&gt;修改文件&lt;/b&gt;: 对比信息文件判断是否修改
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
 目标目录无修改: &lt;b&gt;源目录 -&amp;gt; 目录目录&lt;/b&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 目标目录修改文件: &lt;b&gt;选项一&lt;/b&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 目标目录删除文件: &lt;b&gt;源目录 -&amp;gt; 目录目录&lt;/b&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 源目录&lt;b&gt;删除文件&lt;/b&gt;: 对比信息文件判断是否删除
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
 目标目录无修改: &lt;b&gt;源目录 -&amp;gt; 目录目录&lt;/b&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 目标目录修改文件: &lt;b&gt;选项一&lt;/b&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 目标目录删除文件: 无操作
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;heading-1.2&quot;&gt;镜像同步&lt;/h3&gt;
&lt;h4 id=&quot;heading-1.2.1&quot;&gt;同步选项&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
 单向同步选项一: 覆盖文件
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 单向同步选项二: 同步删除目标目录的文件
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;heading-1.2.2&quot;&gt;同步逻辑&lt;/h4&gt;
&lt;p&gt;
     逻辑同单向同步
&lt;/p&gt;

&lt;h3 id=&quot;heading-1.3&quot;&gt;双向同步&lt;/h3&gt;
&lt;h4 id=&quot;heading-1.3.1&quot;&gt;同步选项&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
 选项一: 源目录的文件和目标目录的文件都发生修改:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
 保留最新的文件: 对比文件修改时间，如果源目录的文件最新, 则覆盖目标目录的文件; 反之，覆盖源目录的文件
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 以源目录为准: &lt;b&gt;源目录 -&amp;gt; 目录目录&lt;/b&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 以目标目录为准: &lt;b&gt;源目录 &amp;lt;- 目录目录&lt;/b&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 跳过文件: 不作任何处理
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 选项二: 源目录的文件被删除时，是否删除目标目录的文件
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 选项三: 目标目录的文件被删除时，是否删除源目录的文件
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;heading-1.3.2&quot;&gt;同步逻辑&lt;/h4&gt;
&lt;p&gt;
     &lt;b&gt;第一次同步&lt;/b&gt;会获取源目录和目标目录所有文件的信息, 并将信息写入本地。这时源目录下所有文件都是新增的。&lt;b&gt;后续同步&lt;/b&gt;会获取源目录和目标目录所有文件的信息, 并对比本地信息的修改来进行同步。
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
 源目录&lt;b&gt;无修改&lt;/b&gt;: 对比信息文件判断
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
 目标目录新增文件: &lt;b&gt;源目录 &amp;lt;- 目录目录&lt;/b&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 目标目录修改文件: &lt;b&gt;源目录 &amp;lt;- 目录目录&lt;/b&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 目标目录删除文件: &lt;b&gt;源目录 &amp;lt;- 目录目录&lt;/b&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 源目录&lt;b&gt;新增文件&lt;/b&gt;: 对比信息文件判断是否新增
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
 目标目录无修改: &lt;b&gt;源目录 -&amp;gt; 目录目录&lt;/b&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 目标目录新增文件: &lt;b&gt;选项一&lt;/b&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 源目录&lt;b&gt;修改文件&lt;/b&gt;: 对比信息文件判断是否修改
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
 目标目录无修改: &lt;b&gt;源目录 -&amp;gt; 目录目录&lt;/b&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 目标目录修改文件: &lt;b&gt;选项一&lt;/b&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 目标目录删除文件: &lt;b&gt;源目录 -&amp;gt; 目录目录&lt;/b&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 源目录&lt;b&gt;删除文件&lt;/b&gt;: 对比信息文件判断是否删除
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
 目标目录无修改: &lt;b&gt;源目录 -&amp;gt; 目录目录&lt;/b&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 目标目录修改文件: &lt;b&gt;源目录 &amp;lt;- 目录目录&lt;/b&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 目标目录删除文件: 无操作
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
        <category term="Life"></category>
    </entry>
</feed>
