<?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/atom.xml" rel="self" type="application/atom+xml"/>
  <link href="https://honmaple.me/index.html"/>
  <generator uri="https://github.com/honmaple/snow">Snow</generator>
    <updated>Sat, 14 Feb 2026 20:58:13 +0000</updated>
  <id>https://honmaple.me</id>
    <entry xml:lang="zh">
      <title>ubuntu24.04环境配置</title>
      <link href="https://honmaple.me/articles/2026/01/ubuntu-note.html" rel="alternate"></link>
      <published>Fri, 02 Jan 2026 18:51:48 +0000</published>
      <updated>Sat, 14 Feb 2026 20:58:13 +0000</updated>
      <author>
        <name>honmaple</name>
      </author>
      <link rel="alternate" href="https://honmaple.me/articles/2026/01/ubuntu-note.html" type="text/html"/>
      <id>https://honmaple.me/articles/2026/01/ubuntu-note.html</id>
      <summary type="html">
&lt;blockquote&gt;
&lt;p&gt;
最近我在腾讯云的服务器快过期了，但是续费又太贵，所以趁着活动又买了一台3年的轻量云。这台服务器上也没有什么服务，主要还是因为有一个已经备案的域名需要保一下，否则备案掉了之后再次备案太过麻烦。
&lt;/p&gt;

&lt;p&gt;
我之前的服务器还在用着 &lt;b&gt;ubuntu18.04 LTS&lt;/b&gt;，此次迁移准备升级一下系统到 &lt;b&gt;ubuntu24.04 LTS&lt;/b&gt;，故此记录
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;
注意: 以下命令以 &lt;code&gt;#&lt;/code&gt; 开头则使用的是root账户，以 &lt;code&gt;$&lt;/code&gt; 开头则为普通账户
&lt;/p&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;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;# hostnamectl set-hostname [名称]&lt;/pre&gt;

&lt;h3 id=&quot;heading-1.2&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&quot;&gt;# deluser --remove-home ubuntu
# deluser --remove-home...&lt;/pre&gt;&lt;/li&gt;&lt;/ul&gt;</summary>
      <content type="html">&lt;div id=&quot;table-of-contents&quot;&gt;&lt;h2&gt;Table of Contents&lt;/h2&gt;&lt;div id=&quot;text-table-of-contents&quot;&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#heading-1&quot;&gt;系统设置&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#heading-1.1&quot;&gt;修改主机名称&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#heading-1.2&quot;&gt;创建新用户&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#heading-1.3&quot;&gt;连接数限制&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#heading-1.4&quot;&gt;交换内存&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#heading-1.5&quot;&gt;启用BBR&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#heading-2&quot;&gt;系统服务&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#heading-2.1&quot;&gt;motd&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#heading-2.2&quot;&gt;ssh&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#heading-2.3&quot;&gt;unattended-upgrades&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#heading-2.4&quot;&gt;snap&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#heading-3&quot;&gt;其它服务&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#heading-3.1&quot;&gt;docker&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#heading-3.2&quot;&gt;other&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#heading-3.3&quot;&gt;腾讯云组件&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;
最近我在腾讯云的服务器快过期了，但是续费又太贵，所以趁着活动又买了一台3年的轻量云。这台服务器上也没有什么服务，主要还是因为有一个已经备案的域名需要保一下，否则备案掉了之后再次备案太过麻烦。
&lt;/p&gt;

&lt;p&gt;
我之前的服务器还在用着 &lt;b&gt;ubuntu18.04 LTS&lt;/b&gt;，此次迁移准备升级一下系统到 &lt;b&gt;ubuntu24.04 LTS&lt;/b&gt;，故此记录
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;
注意: 以下命令以 &lt;code&gt;#&lt;/code&gt; 开头则使用的是root账户，以 &lt;code&gt;$&lt;/code&gt; 开头则为普通账户
&lt;/p&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;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;# hostnamectl set-hostname [名称]&lt;/pre&gt;

&lt;h3 id=&quot;heading-1.2&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&quot;&gt;# deluser --remove-home ubuntu
# deluser --remove-home lighthouse&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 添加新用户
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;# adduser myuser&lt;/pre&gt;
&lt;p&gt;
      用户信息比如全名、房间号等，这些可以直接按 &lt;code&gt;Enter&lt;/code&gt; 跳过
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 添加sudo权限
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;# usermod -aG sudo myuser&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 添加公钥
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;# su - 用户名
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
$ vi ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;heading-1.3&quot;&gt;连接数限制&lt;/h3&gt;
&lt;p&gt;
    编辑文件 &lt;code&gt;/etc/security/limits.conf&lt;/code&gt;，在文件末尾添加以下内容：
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;* soft nofile 65535
* hard nofile 65535
* soft nproc 20480
* hard nproc 20480&lt;/pre&gt;
&lt;p&gt;
    注：&lt;b&gt;nofile&lt;/b&gt; 是文件打开数，&lt;b&gt;nproc&lt;/b&gt; 是最大进程数。&lt;code&gt;*&lt;/code&gt; 代表除 &lt;b&gt;root&lt;/b&gt; 外的所有用户，如果需要添加 &lt;b&gt;root&lt;/b&gt;，则增加
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;root soft nofile 65535
root hard nofile 65535&lt;/pre&gt;

&lt;h3 id=&quot;heading-1.4&quot;&gt;交换内存&lt;/h3&gt;
&lt;p&gt;
    默认的 &lt;code&gt;vm.swappiness&lt;/code&gt; 为 &lt;b&gt;60&lt;/b&gt;，表示内存使用率超过 &lt;b&gt;100%-60%=40%&lt;/b&gt; 时就开始使用交换分区
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
 查看当前swappiness
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;$ cat /proc/sys/vm/swappiness&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 临时修改
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;$ sudo sysctl vm.swappiness=10
$ cat /proc/sys/vm/swappiness&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 永久修改
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;$ echo &amp;#34;vm.swappiness=10&amp;#34; | sudo tee -a /etc/sysctl.conf
$ sudo sysctl -p&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;heading-1.5&quot;&gt;启用BBR&lt;/h3&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;$ echo &amp;#34;net.core.default_qdisc=fq&amp;#34; | sudo tee -a /etc/sysctl.conf
$ echo &amp;#34;net.ipv4.tcp_congestion_control=bbr&amp;#34; | sudo tee -a /etc/sysctl.conf
$ sudo sysctl -p&lt;/pre&gt;

&lt;h2 id=&quot;heading-2&quot;&gt;系统服务&lt;/h2&gt;
&lt;h3 id=&quot;heading-2.1&quot;&gt;motd&lt;/h3&gt;
&lt;p&gt;
    禁用终端广告
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;sudo sed -i &amp;#39;s/ENABLED=1/ENABLED=0/&amp;#39; /etc/default/motd-news&lt;/pre&gt;

&lt;h3 id=&quot;heading-2.2&quot;&gt;ssh&lt;/h3&gt;
&lt;p&gt;
    修改配置 &lt;code&gt;/etc/ssh/sshd_config&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&quot;&gt;Port 22&lt;/pre&gt;
&lt;p&gt;
      取消注释并修改为想要的端口，然后在腾讯云控制台防火墙添加放行策略
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 禁用root登陆
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;PermitRootLogin no&lt;/pre&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;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;$ sudo systemctl restart ssh&lt;/pre&gt;

&lt;p&gt;
      如果修改 &lt;code&gt;sshd_config&lt;/code&gt; 不生效
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;$ sudo systemctl stop ssh.socket
$ sudo systemctl disable ssh.socket
$ sudo systemctl restart ssh&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;heading-2.3&quot;&gt;unattended-upgrades&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
 停止服务
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;$ sudo systemctl stop unattended-upgrades
$ sudo systemctl disable unattended-upgrades&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 卸载
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;$ sudo apt remove --purge unattended-upgrades&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;heading-2.4&quot;&gt;snap&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
 停止服务
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;$ sudo systemctl stop snapd.service
$ sudo systemctl disable snapd.service
$ sudo systemctl mask snapd.service&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 查看已安装软件
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;$ snap list&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 卸载安装软件(把使用 &lt;b&gt;snap&lt;/b&gt; 安装的软件依次卸载)
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;$ sudo snap remove --purge [软件名称]&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 卸载 &lt;b&gt;snap&lt;/b&gt;
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;$ sudo apt autoremove --purge snapd&lt;/pre&gt;
&lt;p&gt;
      清理目录
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;$ sudo rm -rf /var/cache/snapd
$ sudo rm -rf /var/snap
$ sudo rm -rf /var/lib/snapd&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 阻止 &lt;b&gt;snapd&lt;/b&gt; 被自动重新安装
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;$ sudo cat &amp;lt;&amp;lt;EOF | sudo tee /etc/apt/preferences.d/nosnap.pref
Package: snapd
Pin: release a=*
Pin-Priority: -10
EOF&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;docker&lt;/h3&gt;
&lt;p&gt;
    官方文档: &lt;a href=&quot;https://docs.docker.com/engine/install/ubuntu/&quot;&gt;https://docs.docker.com/engine/install/ubuntu/&lt;/a&gt;
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
 设置apt仓库
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;$ sudo apt update
$ sudo apt install ca-certificates curl
$ sudo install -m 0755 -d /etc/apt/keyrings
$ sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
$ sudo chmod a+r /etc/apt/keyrings/docker.asc
$ sudo tee /etc/apt/sources.list.d/docker.sources &amp;lt;&amp;lt;EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release &amp;amp;&amp;amp; echo &amp;#34;${UBUNTU_CODENAME:-$VERSION_CODENAME}&amp;#34;)
Components: stable
Signed-By: /etc/apt/keyrings/docker.asc
EOF
$ sudo apt update&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 安装
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;$ sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 普通用户权限
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;$ sudo usermod -aG docker [用户名]&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 镜像
      由于官方仓库无法连接，修改 &lt;code&gt;/etc/docker/daemon.json&lt;/code&gt; 添加下面配置
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;{
    &lt;span style=&quot;color:#f92672&quot;&gt;&amp;#34;registry-mirrors&amp;#34;&lt;/span&gt;: [
        &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;https://mirror.ccs.tencentyun.com&amp;#34;&lt;/span&gt;
    ]
}&lt;/pre&gt;
&lt;p&gt;
      然后重启docker即可
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;$ sudo systemctl restart docker&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;heading-3.2&quot;&gt;other&lt;/h3&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;$ sudo apt install tree&lt;/pre&gt;

&lt;h3 id=&quot;heading-3.3&quot;&gt;腾讯云组件&lt;/h3&gt;
&lt;p&gt;
    卸载腾讯云内置的组件
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;$ sudo /usr/local/qcloud/monitor/barad/admin/uninstall.sh
$ sudo /usr/local/qcloud/stargate/admin/uninstall.sh
$ sudo /usr/local/qcloud/YunJing/uninst.sh&lt;/pre&gt;</content>
        <category term="Linux"></category>
    </entry>
    <entry xml:lang="zh">
      <title>让Eglot支持tailwindcss以及多个LSP服务</title>
      <link href="https://honmaple.me/articles/2026/01/eglot-multi-lsp-language-server.html" rel="alternate"></link>
      <published>Fri, 02 Jan 2026 00:39:44 +0000</published>
      <updated>Wed, 07 Jan 2026 16:59:33 +0000</updated>
      <author>
        <name>honmaple</name>
      </author>
      <link rel="alternate" href="https://honmaple.me/articles/2026/01/eglot-multi-lsp-language-server.html" type="text/html"/>
      <id>https://honmaple.me/articles/2026/01/eglot-multi-lsp-language-server.html</id>
      <summary type="html">
&lt;h2 id=&quot;heading-1&quot;&gt;前言&lt;/h2&gt;
&lt;p&gt;
   虽然我不是专业的前端开发人员，但偶尔还是会写一下 &lt;code&gt;HTML/CSS/Javascript&lt;/code&gt; 或者&lt;code&gt;Vue&lt;/code&gt;。在一个 &lt;b&gt;HTML&lt;/b&gt; 文件中，我需要使用多个 &lt;b&gt;LSP服务&lt;/b&gt;，比如使用 &lt;code&gt;vscode-html-language-server&lt;/code&gt; 补全css样式，使用&lt;code&gt;tailwindcss-language-server&lt;/code&gt; 补全tailwindcss的class名称，使用 &lt;code&gt;vscode-eslint-language-server&lt;/code&gt; 检查语法
&lt;/p&gt;

&lt;p&gt;
   但我目前使用的Emacs lSP客户端 &lt;b&gt;Eglot&lt;/b&gt; 一直不支持多个LSP服务，目前的解决方式有两种，一是把...&lt;/p&gt;</summary>
      <content type="html">&lt;div id=&quot;table-of-contents&quot;&gt;&lt;h2&gt;Table of Contents&lt;/h2&gt;&lt;div id=&quot;text-table-of-contents&quot;&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#heading-1&quot;&gt;前言&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#heading-2&quot;&gt;如何使用？&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#heading-3&quot;&gt;示例&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;heading-1&quot;&gt;前言&lt;/h2&gt;
&lt;p&gt;
   虽然我不是专业的前端开发人员，但偶尔还是会写一下 &lt;code&gt;HTML/CSS/Javascript&lt;/code&gt; 或者&lt;code&gt;Vue&lt;/code&gt;。在一个 &lt;b&gt;HTML&lt;/b&gt; 文件中，我需要使用多个 &lt;b&gt;LSP服务&lt;/b&gt;，比如使用 &lt;code&gt;vscode-html-language-server&lt;/code&gt; 补全css样式，使用&lt;code&gt;tailwindcss-language-server&lt;/code&gt; 补全tailwindcss的class名称，使用 &lt;code&gt;vscode-eslint-language-server&lt;/code&gt; 检查语法
&lt;/p&gt;

&lt;p&gt;
   但我目前使用的Emacs lSP客户端 &lt;b&gt;Eglot&lt;/b&gt; 一直不支持多个LSP服务，目前的解决方式有两种，一是把 &lt;b&gt;Eglot&lt;/b&gt; 更换为 &lt;b&gt;lsp-mode&lt;/b&gt; 或者 &lt;b&gt;lsp-bridge&lt;/b&gt;， 二是使用第三方命令行代理服务，比如:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
 &lt;a href=&quot;https://github.com/thefrontside/lspx&quot;&gt;https://github.com/thefrontside/lspx&lt;/a&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 &lt;a href=&quot;https://github.com/joaotavora/rassumfrassum&quot;&gt;https://github.com/joaotavora/rassumfrassum&lt;/a&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   &lt;b&gt;lspx&lt;/b&gt; 是因为我的电脑上没有相关环境，无法编译，&lt;b&gt;rass&lt;/b&gt; 是由 &lt;b&gt;Eglot&lt;/b&gt; 的作者开发，不过看情况他是准备把 &lt;b&gt;rass&lt;/b&gt; 作为一个通用的LSP代理，所以配置文件会单独放置到 &lt;b&gt;HOME&lt;/b&gt; 目录，这一点我不是很喜欢
&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;
   算了，找来找去还不如自己写一个(轮子+1)，&lt;a href=&quot;https://github.com/honmaple/eglot-lspx&quot;&gt;eglot-lspx&lt;/a&gt;，一个多LSP代理服务，用于解决 &lt;b&gt;Eglot&lt;/b&gt; 无法使用 &lt;code&gt;tailwindcss&lt;/code&gt; 以及不支持多个LSP服务的问题
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;heading-2&quot;&gt;如何使用？&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
 编译
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;git clone https://github.com/honmaple/eglot-lspx
cd eglot-lspx
go build .&lt;/pre&gt;
&lt;p&gt;
     然后把编译好的 &lt;code&gt;eglot-lspx&lt;/code&gt; 文件放到可执行路径下，比如我放到了 &lt;code&gt;~/.emacs.d/bin&lt;/code&gt; 目录，并添加路径到Emacs配置
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;(add-to-list &amp;#39;exec-path (expand-file-name &amp;#34;bin&amp;#34; user-emacs-directory) t)&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 配置Eglot
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;(defvar eglot-lspx-command (executable-find &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;eglot-lspx&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt;))

(when eglot-lspx-command
  (add-to-list &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#39;eglot-server-programs&lt;/span&gt; &lt;span style=&quot;color:#f92672&quot;&gt;`&lt;/span&gt;((web-mode :language-id &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;html&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;eglot-lspx-command
                                           &lt;span style=&quot;color:#e6db74&quot;&gt;&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;#34;&lt;/span&gt; &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;vscode-html-language-server&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;--stdio&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt;
                                           &lt;span style=&quot;color:#e6db74&quot;&gt;&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;#34;&lt;/span&gt; &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;tailwindcss-language-server&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;--stdio&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt;)))
  (add-to-list &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#39;eglot-server-programs&lt;/span&gt; &lt;span style=&quot;color:#f92672&quot;&gt;`&lt;/span&gt;((vue-mode :language-id &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;html&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;eglot-lspx-command
                                           &lt;span style=&quot;color:#e6db74&quot;&gt;&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;#34;&lt;/span&gt; &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;vue-language-server&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;--stdio&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt;
                                           &lt;span style=&quot;color:#e6db74&quot;&gt;&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;#34;&lt;/span&gt; &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;vscode-html-language-server&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;--stdio&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt;
                                           &lt;span style=&quot;color:#e6db74&quot;&gt;&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;#34;&lt;/span&gt; &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;tailwindcss-language-server&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;--stdio&lt;/span&gt;&lt;span style=&quot;color:#e6db74&quot;&gt;&amp;#34;&lt;/span&gt;
                                           :initializationOptions
                                           (lambda (server) (&lt;span style=&quot;color:#a6e22e&quot;&gt;list&lt;/span&gt; :vue-language-server (eglot-volar-options server)))))))&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 合并补全信息
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;--provider completion=0,tailwindcss-language-server&lt;/pre&gt;
&lt;p&gt;
     可以使用LSP服务名或者索引名，使用逗号分隔，索引名即第n个LSP服务，从0开始，未设置将合并全部
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;heading-3&quot;&gt;示例&lt;/h2&gt;
&lt;p&gt;
   
&lt;a href=&quot;https://s.libforest.com/images/2026/01/eglot-lspx-02.png-show&quot; data-fancybox=&quot;image&quot;&gt;
  &lt;img data-src=&quot;https://s.libforest.com/images/2026/01/eglot-lspx-02.png-thumb&quot; class=&quot;lazyload&quot; /&gt;
&lt;/a&gt;
   
&lt;a href=&quot;https://s.libforest.com/images/2026/01/eglot-lspx-01.png-show&quot; data-fancybox=&quot;image&quot;&gt;
  &lt;img data-src=&quot;https://s.libforest.com/images/2026/01/eglot-lspx-01.png-thumb&quot; class=&quot;lazyload&quot; /&gt;
&lt;/a&gt;
&lt;/p&gt;</content>
        <category term="Tech/Linux/Emacs"></category>
    </entry>
    <entry xml:lang="zh">
      <title>博客SEO优化</title>
      <link href="https://honmaple.me/articles/2025/11/博客SEO优化.html" 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/articles/2025/11/博客SEO优化.html" type="text/html"/>
      <id>https://honmaple.me/articles/2025/11/博客SEO优化.html</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&quot;&gt;User-agent: *
Allow: /index.html$
Disallow: /index*.html&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;/blockquote&gt;</summary>
      <content type="html">&lt;div id=&quot;table-of-contents&quot;&gt;&lt;h2&gt;Table of Contents&lt;/h2&gt;&lt;div id=&quot;text-table-of-contents&quot;&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#heading-1&quot;&gt;基础核心类 (Technical &amp;amp; SEO)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#heading-2&quot;&gt;社交分享类 (Open Graph &amp;amp; Twitter)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#heading-3&quot;&gt;极其重要的辅助标签&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#heading-4&quot;&gt;不需要添加的标签 (避坑指南)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;

&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&quot;&gt;User-agent: *
Allow: /index.html$
Disallow: /index*.html&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&quot;&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;/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;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&quot;&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;/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&quot;&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;/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&quot;&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;/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&quot;&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;/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;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&quot;&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;
&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;
&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;
&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;
&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;/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&quot;&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;
&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;
&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;
&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;/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&quot;&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;/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&quot;&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;/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&quot;&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;/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/articles/2025/11/博客增加闲言碎语页面.html" rel="alternate"></link>
      <published>Wed, 12 Nov 2025 17:37:49 +0000</published>
      <updated>Wed, 12 Nov 2025 23:27:26 +0000</updated>
      <author>
        <name>honmaple</name>
      </author>
      <link rel="alternate" href="https://honmaple.me/articles/2025/11/博客增加闲言碎语页面.html" type="text/html"/>
      <id>https://honmaple.me/articles/2025/11/博客增加闲言碎语页面.html</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&quot;&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 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 style=&quot;color:#75715e&quot;&gt;#+PROPERTY...&lt;/span&gt;&lt;/pre&gt;</summary>
      <content type="html">&lt;div id=&quot;table-of-contents&quot;&gt;&lt;h2&gt;Table of Contents&lt;/h2&gt;&lt;div id=&quot;text-table-of-contents&quot;&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#heading-1&quot;&gt;实现&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#heading-2&quot;&gt;其它&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;

&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&quot;&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 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 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 style=&quot;color:#75715e&quot;&gt;#+begin_export &lt;/span&gt;&lt;span style=&quot;color:#75715e&quot;&gt;html&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;
  &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;
    &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;
    &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;
  &amp;lt;/&lt;span style=&quot;color:#f92672&quot;&gt;div&lt;/span&gt;&amp;gt;
&amp;lt;/&lt;span style=&quot;color:#f92672&quot;&gt;div&lt;/span&gt;&amp;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;
&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 style=&quot;color:#75715e&quot;&gt;#+end_export&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&quot;&gt;{
    &lt;span style=&quot;color:#f92672&quot;&gt;&amp;#34;memos&amp;#34;&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 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 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 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 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 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 style=&quot;color:#f92672&quot;&gt;&amp;#34;resources&amp;#34;&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 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 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 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 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 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;/pre&gt;

&lt;p&gt;
   使用&lt;code&gt;JS&lt;/code&gt;请求就是
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&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:#a6e22e&quot;&gt;async&lt;/span&gt; () =&amp;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 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 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 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:#a6e22e&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 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:#a6e22e&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 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;/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&quot;&gt;`${api}/api/v1/memos?page_token=${nextPageToken}`&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&quot;&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 style=&quot;color:#a6e22e&quot;&gt;extensions&lt;/span&gt;&lt;span style=&quot;color:#f92672&quot;&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 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 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 style=&quot;color:#a6e22e&quot;&gt;tokenizer&lt;/span&gt;(&lt;span style=&quot;color:#a6e22e&quot;&gt;src&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 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 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:#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 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 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 style=&quot;color:#66d9ef&quot;&gt;return&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 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 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 style=&quot;color:#a6e22e&quot;&gt;renderer&lt;/span&gt;(&lt;span style=&quot;color:#a6e22e&quot;&gt;token&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 style=&quot;color:#a6e22e&quot;&gt;marked&lt;/span&gt;.&lt;span style=&quot;color:#a6e22e&quot;&gt;setOptions&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 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 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 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;/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&quot;&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 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 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 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 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 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 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 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 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:#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;/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;img-layout&quot;&gt;
     &lt;p&gt;
       
&lt;a href=&quot;https://s.libforest.com/images/2025/10/maple-note-06.jpg-show&quot; data-fancybox=&quot;image&quot;&gt;
  &lt;img data-src=&quot;https://s.libforest.com/images/2025/10/maple-note-06.jpg-thumb&quot; class=&quot;lazyload&quot; /&gt;
&lt;/a&gt;
       
&lt;a href=&quot;https://s.libforest.com/images/2025/10/maple-note-07.jpg-show&quot; data-fancybox=&quot;image&quot;&gt;
  &lt;img data-src=&quot;https://s.libforest.com/images/2025/10/maple-note-07.jpg-thumb&quot; class=&quot;lazyload&quot; /&gt;
&lt;/a&gt;
     &lt;/p&gt;
   &lt;/div&gt;</content>
        <category term="Life"></category>
    </entry>
    <entry xml:lang="zh">
      <title>关于B站上传视频缓慢问题</title>
      <link href="https://honmaple.me/articles/2025/10/关于B站上传视频缓慢问题.html" 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/articles/2025/10/关于B站上传视频缓慢问题.html" type="text/html"/>
      <id>https://honmaple.me/articles/2025/10/关于B站上传视频缓慢问题.html</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&quot;&gt;https://member.bilibili.com/platform/upload/video/frame/?os=upos&amp;amp;zone=cs&amp;amp;upcdn=attx&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 复制参数 &lt;code&gt;&amp;amp;upcdn=attx&lt;/code&gt; 到原上传地址，比如原地址为
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;https://member.bilibili.com/platform/upload/video...&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&quot;&gt;https://member.bilibili.com/platform/upload/video/frame/?os=upos&amp;amp;zone=cs&amp;amp;upcdn=attx&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 复制参数 &lt;code&gt;&amp;amp;upcdn=attx&lt;/code&gt; 到原上传地址，比如原地址为
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;https://member.bilibili.com/platform/upload/video/frame&lt;/pre&gt;

&lt;p&gt;
   修改后为
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;https://member.bilibili.com/platform/upload/video/frame&amp;amp;upcdn=attx&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/articles/2025/10/windowsyou-hua-ji-lu.html" 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/articles/2025/10/windowsyou-hua-ji-lu.html" type="text/html"/>
      <id>https://honmaple.me/articles/2025/10/windowsyou-hua-ji-lu.html</id>
      <summary type="html">
&lt;h2&gt;去除快捷方式小箭头&lt;/h2&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&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
taskkill /f /im explorer.exe
attrib -s...&lt;/pre&gt;</summary>
      <content type="html">
&lt;h2&gt;去除快捷方式小箭头&lt;/h2&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&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
taskkill /f /im explorer.exe
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 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 style=&quot;color:#66d9ef&quot;&gt;start&lt;/span&gt; explorer
&lt;/pre&gt;
&lt;h2&gt;恢复快捷方式小箭头&lt;/h2&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&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
taskkill /f /im explorer.exe
&lt;span style=&quot;color:#66d9ef&quot;&gt;start&lt;/span&gt; explorer
&lt;/pre&gt;
&lt;h2&gt;交换大写锁定和右CTRL&lt;/h2&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
&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;/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;br&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;恢复大写锁定和右CTRL&lt;/h2&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;Windows Registry Editor Version 5.00
 
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Keyboard Layout]
&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;/pre&gt;
&lt;h2&gt;恢复windows10右键菜单&lt;/h2&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&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
taskkill /f /im explorer.exe &amp;amp; &lt;span style=&quot;color:#66d9ef&quot;&gt;start&lt;/span&gt; explorer.exe
&lt;/pre&gt;
&lt;h2&gt;恢复windows11右键菜单&lt;/h2&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&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
taskkill /f /im explorer.exe &amp;amp; &lt;span style=&quot;color:#66d9ef&quot;&gt;start&lt;/span&gt; explorer.exe
&lt;/pre&gt;
&lt;h2&gt;windows11暂停更新&lt;/h2&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&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;/pre&gt;</content>
        <category term="Tech"></category>
    </entry>
    <entry xml:lang="zh">
      <title>知名网盘工具Alist被卖，不用担心，我们还可以使用它</title>
      <link href="https://honmaple.me/articles/2025/06/alist-was-sold.html" rel="alternate"></link>
      <published>Fri, 13 Jun 2025 23:22:29 +0000</published>
      <updated>Mon, 27 Oct 2025 10:42:07 +0000</updated>
      <author>
        <name>honmaple</name>
      </author>
      <link rel="alternate" href="https://honmaple.me/articles/2025/06/alist-was-sold.html" type="text/html"/>
      <id>https://honmaple.me/articles/2025/06/alist-was-sold.html</id>
      <summary type="html">
&lt;p&gt;
最近几天国内开源界最大的瓜莫过于知名的网盘聚合挂载工具 &lt;b&gt;Alist&lt;/b&gt; 被卖，甚至很可能早在几个月前就已经被卖，只是直到最近，有小伙伴关注到 &lt;b&gt;Alist&lt;/b&gt; 原作者 &lt;b&gt;xhofe&lt;/b&gt; 已经很久没有在Github上出现，而且Alist的文档也被刚注册不久的两个账号修改，甚至添加了企业微信的咨询服务方式，这些都不算什么，最不能让人接受的是在 &lt;b&gt;Pull Request&lt;/b&gt; 中出现了统计并上报所部署机器信息的相关代码
&lt;/p&gt;

&lt;p&gt;

&lt;a href=&quot;https://s.libforest.com/images/2025/06/alist-was-sold-02.png-show&quot; data-fancybox=&quot;image&quot;&gt;
  &lt;img data-src=&quot;https://s.libforest.com/images/2025/06/alist-was-sold-02.png-thumb&quot; class=&quot;lazyload&quot; /&gt;
&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
开源项目被某某公司收购其实是一件很寻常不过的事情，毕竟作者也要吃饭不是，总不能一直为爱发电，其实 &lt;b&gt;Alist&lt;/b&gt; 这件事之所以闹得这么大，主要有以下几点原因：
&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;
 收购Alist的公司名声及其“前科”，导致正在使用Alist的小伙伴们不得不对该公司的动机多了几分怀疑，更无法判断其对隐私的保护甚至是否会进行供应链投毒
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 Alist原作者事前没有发布任何声明，直到被网友扒出才确认此事
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 虽然这是一个开源项目，但是部分API比如阿里云盘、百度网盘等的授权是&lt;b&gt;闭源&lt;/b&gt;的，Alist被收购后...&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;</summary>
      <content type="html">
&lt;p&gt;
最近几天国内开源界最大的瓜莫过于知名的网盘聚合挂载工具 &lt;b&gt;Alist&lt;/b&gt; 被卖，甚至很可能早在几个月前就已经被卖，只是直到最近，有小伙伴关注到 &lt;b&gt;Alist&lt;/b&gt; 原作者 &lt;b&gt;xhofe&lt;/b&gt; 已经很久没有在Github上出现，而且Alist的文档也被刚注册不久的两个账号修改，甚至添加了企业微信的咨询服务方式，这些都不算什么，最不能让人接受的是在 &lt;b&gt;Pull Request&lt;/b&gt; 中出现了统计并上报所部署机器信息的相关代码
&lt;/p&gt;

&lt;p&gt;

&lt;a href=&quot;https://s.libforest.com/images/2025/06/alist-was-sold-02.png-show&quot; data-fancybox=&quot;image&quot;&gt;
  &lt;img data-src=&quot;https://s.libforest.com/images/2025/06/alist-was-sold-02.png-thumb&quot; class=&quot;lazyload&quot; /&gt;
&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
开源项目被某某公司收购其实是一件很寻常不过的事情，毕竟作者也要吃饭不是，总不能一直为爱发电，其实 &lt;b&gt;Alist&lt;/b&gt; 这件事之所以闹得这么大，主要有以下几点原因：
&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;
 收购Alist的公司名声及其“前科”，导致正在使用Alist的小伙伴们不得不对该公司的动机多了几分怀疑，更无法判断其对隐私的保护甚至是否会进行供应链投毒
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 Alist原作者事前没有发布任何声明，直到被网友扒出才确认此事
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 虽然这是一个开源项目，但是部分API比如阿里云盘、百度网盘等的授权是&lt;b&gt;闭源&lt;/b&gt;的，Alist被收购后，这部分授权是否会被一同打包给收购的公司我们不得而知
&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
虽然 &lt;b&gt;Alist&lt;/b&gt; 被卖，但是这是开源界，一言不合就造轮子的开源界，直到本篇文章发出，已经有了不少大佬fork了原项目，并且将在原有代码的基础上继续维护 &lt;b&gt;Alist&lt;/b&gt;，所以习惯使用 &lt;b&gt;Alist&lt;/b&gt; 的小伙伴们也不用太过担心，也许它只是改了一个名称，比如新的项目 &lt;a href=&quot;https://github.com/OpenListTeam/OpenList&quot;&gt;OpenList&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
除此之外，还有一些同类的网盘聚合和挂载工具，今天向大家介绍的是一款桌面端与手机端的网盘聚合工具—— &lt;b&gt;红枫云盘&lt;/b&gt;
&lt;/p&gt;

&lt;p&gt;

&lt;a href=&quot;https://s.libforest.com/images/2025/06/alist-was-sold-01.png-show&quot; data-fancybox=&quot;image&quot;&gt;
  &lt;img data-src=&quot;https://s.libforest.com/images/2025/06/alist-was-sold-01.png-thumb&quot; class=&quot;lazyload&quot; /&gt;
&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;b&gt;红枫云盘&lt;/b&gt;，这是一个开源且跨平台的多协议云盘文件聚合软件，它不同于Alist，它不需要一台服务器或者Nas进行部署，只需要下载安装，然后打开即可。
&lt;/p&gt;

&lt;p&gt;
红枫云盘目前支持&lt;b&gt;Windows、MacOS、Android、IOS&lt;/b&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;
 FTP
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 SFTP
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 S3
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 SMB
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 Webdav
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 Alist
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 又拍云
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 115网盘
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 夸克网盘
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 Github
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 Github Release
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&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;/p&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;li&gt;
&lt;p&gt;
 支持回收站
&lt;/p&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;li&gt;
&lt;p&gt;
 支持多语言(中文、英文)
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
文件预览效果：
&lt;/p&gt;
&lt;div class=&quot;img-layout&quot;&gt;
&lt;p&gt;
&lt;img src=&quot;https://s.libforest.com/images/2025/06/alist-was-sold-03.png&quot; alt=&quot;alist-was-sold-03.png&quot;/&gt;
&lt;img src=&quot;https://s.libforest.com/images/2025/06/alist-was-sold-04.png&quot; alt=&quot;alist-was-sold-04.png&quot;/&gt;
&lt;img src=&quot;https://s.libforest.com/images/2025/06/alist-was-sold-05.png&quot; alt=&quot;alist-was-sold-05.png&quot;/&gt;
&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;
欢迎大家下载使用：&lt;a href=&quot;https://github.com/honmaple/maple-file&quot;&gt;https://github.com/honmaple/maple-file&lt;/a&gt;
&lt;/p&gt;</content>
        <category term="Life"></category>
    </entry>
    <entry xml:lang="zh">
      <title>红枫笔记: 一个有些不一样的Usememos/Blinko/AI客户端</title>
      <link href="https://honmaple.me/articles/2025/06/maple-note.html" rel="alternate"></link>
      <published>Sat, 07 Jun 2025 17:42:27 +0000</published>
      <updated>Mon, 27 Oct 2025 10:42:29 +0000</updated>
      <author>
        <name>honmaple</name>
      </author>
      <link rel="alternate" href="https://honmaple.me/articles/2025/06/maple-note.html" type="text/html"/>
      <id>https://honmaple.me/articles/2025/06/maple-note.html</id>
      <summary type="html">
&lt;h2 id=&quot;heading-1&quot;&gt;前言&lt;/h2&gt;
&lt;p&gt;
   起因是我在之前偶然间看到有人在用微信的&lt;b&gt;文件传输助手&lt;/b&gt;记录临时笔记，我觉得这是一个很好的想法，，但微信的导出是一个很大的问题，不如我自己写一个
&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;
   &lt;b&gt;红枫笔记，一个用聊天的方式记录并同步你的想法，使用熟悉的聊天窗口记录偶然间的灵感一现&lt;/b&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

   &lt;div class=&quot;img-layout&quot;&gt;
     &lt;p&gt;
       
&lt;a href=&quot;https://s.libforest.com/images/2025/10/maple-note-05.png-show&quot; data-fancybox=&quot;image&quot;&gt;
  &lt;img data-src=&quot;https://s.libforest.com/images/2025/10/maple-note-05.png-thumb&quot; class=&quot;lazyload&quot; /&gt;
&lt;/a&gt;
       
&lt;a href=&quot;https://s.libforest.com/images/2025/10/maple-note-01.png-show&quot; data-fancybox=&quot;image&quot;&gt;
  &lt;img data-src=&quot;https://s.libforest.com/images/2025/10/maple-note-01.png-thumb&quot; class=&quot;lazyload&quot; /&gt;
&lt;/a&gt;
       
&lt;a href=&quot;https://s.libforest.com/images/2025/10/maple-note-02.png-show&quot; data-fancybox=&quot;image&quot;&gt;
  &lt;img data-src=&quot;https://s.libforest.com/images/2025/10/maple-note-02.png-thumb&quot; class=&quot;lazyload&quot; /&gt;
&lt;/a&gt;
       
&lt;a href=&quot;https://s.libforest.com/images/2025/10/maple-note-03.png-show&quot; data-fancybox=&quot;image&quot;&gt;
  &lt;img data-src=&quot;https://s.libforest.com/images/2025/10/maple-note-03.png-thumb&quot; class=&quot;lazyload&quot; /&gt;
&lt;/a&gt;
       
&lt;a href=&quot;https://s.libforest.com/images/2025/10/maple-note-04.png-show&quot; data-fancybox=&quot;image&quot;&gt;
  &lt;img data-src=&quot;https://s.libforest.com/images/2025/10/maple-note-04.png-thumb&quot; class=&quot;lazyload&quot; /&gt;
&lt;/a&gt;
     &lt;/p&gt;
   &lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
 既然有了聊天窗口，不如来加个好友吧。
&lt;/p&gt;

&lt;p&gt;
     但红枫笔记是一个本地优先的应用，于是我把好友定位为需要同步的远程服务，比如 Usememos 、Blinko ，或者是一个 AI 组手，你向好友发送一条消息，也是向远程服务同步一条笔记，
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 同样的，既然有了好友，不如来建一个群吧。
&lt;/p&gt;

&lt;p&gt;
     使用红枫笔记，你可以把多个远程服务放进一个群聊天里，可以是多组 Usememos 服务，也可以是多个 AI 组手，从而实现&amp;#34;一文多发...&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;</summary>
      <content type="html">&lt;div id=&quot;table-of-contents&quot;&gt;&lt;h2&gt;Table of Contents&lt;/h2&gt;&lt;div id=&quot;text-table-of-contents&quot;&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#heading-1&quot;&gt;前言&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#heading-2&quot;&gt;主要功能&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#heading-3&quot;&gt;后续计划&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#heading-4&quot;&gt;下载&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;heading-1&quot;&gt;前言&lt;/h2&gt;
&lt;p&gt;
   起因是我在之前偶然间看到有人在用微信的&lt;b&gt;文件传输助手&lt;/b&gt;记录临时笔记，我觉得这是一个很好的想法，，但微信的导出是一个很大的问题，不如我自己写一个
&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;
   &lt;b&gt;红枫笔记，一个用聊天的方式记录并同步你的想法，使用熟悉的聊天窗口记录偶然间的灵感一现&lt;/b&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

   &lt;div class=&quot;img-layout&quot;&gt;
     &lt;p&gt;
       
&lt;a href=&quot;https://s.libforest.com/images/2025/10/maple-note-05.png-show&quot; data-fancybox=&quot;image&quot;&gt;
  &lt;img data-src=&quot;https://s.libforest.com/images/2025/10/maple-note-05.png-thumb&quot; class=&quot;lazyload&quot; /&gt;
&lt;/a&gt;
       
&lt;a href=&quot;https://s.libforest.com/images/2025/10/maple-note-01.png-show&quot; data-fancybox=&quot;image&quot;&gt;
  &lt;img data-src=&quot;https://s.libforest.com/images/2025/10/maple-note-01.png-thumb&quot; class=&quot;lazyload&quot; /&gt;
&lt;/a&gt;
       
&lt;a href=&quot;https://s.libforest.com/images/2025/10/maple-note-02.png-show&quot; data-fancybox=&quot;image&quot;&gt;
  &lt;img data-src=&quot;https://s.libforest.com/images/2025/10/maple-note-02.png-thumb&quot; class=&quot;lazyload&quot; /&gt;
&lt;/a&gt;
       
&lt;a href=&quot;https://s.libforest.com/images/2025/10/maple-note-03.png-show&quot; data-fancybox=&quot;image&quot;&gt;
  &lt;img data-src=&quot;https://s.libforest.com/images/2025/10/maple-note-03.png-thumb&quot; class=&quot;lazyload&quot; /&gt;
&lt;/a&gt;
       
&lt;a href=&quot;https://s.libforest.com/images/2025/10/maple-note-04.png-show&quot; data-fancybox=&quot;image&quot;&gt;
  &lt;img data-src=&quot;https://s.libforest.com/images/2025/10/maple-note-04.png-thumb&quot; class=&quot;lazyload&quot; /&gt;
&lt;/a&gt;
     &lt;/p&gt;
   &lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
 既然有了聊天窗口，不如来加个好友吧。
&lt;/p&gt;

&lt;p&gt;
     但红枫笔记是一个本地优先的应用，于是我把好友定位为需要同步的远程服务，比如 Usememos 、Blinko ，或者是一个 AI 组手，你向好友发送一条消息，也是向远程服务同步一条笔记，
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 同样的，既然有了好友，不如来建一个群吧。
&lt;/p&gt;

&lt;p&gt;
     使用红枫笔记，你可以把多个远程服务放进一个群聊天里，可以是多组 Usememos 服务，也可以是多个 AI 组手，从而实现&amp;#34;一文多发&amp;#34;
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;heading-2&quot;&gt;主要功能&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
 书写格式: 支持 Markdown 、拍照、图片、录音等。
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 模版切换: 支持备忘录、待办事项、纪念日等。
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 远程服务: 支持 Usememos 、Blinko ，包括创建更新删除。
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 AI 笔记: 支持 AI 接口及流式输出，目前仅支持文本及一问一答，暂不支持上下文
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;heading-3&quot;&gt;后续计划&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
 录音转文字
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 webdav/S3 的同步备份
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 AI 功能的完善：支持上下文及图片视频
&lt;/p&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;h2 id=&quot;heading-4&quot;&gt;下载&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
 国区：&lt;a href=&quot;https://apps.apple.com/cn/app/红枫笔记/id6743336280?platform=iphone&quot;&gt;红枫笔记&lt;/a&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 美区：&lt;a href=&quot;https://apps.apple.com/us/app/maplenote-write-note-as-chat/id6743336280?platform=iphone&quot;&gt;maple-note&lt;/a&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   欢迎大家下载试用
&lt;/p&gt;</content>
        <category term="Life"></category>
    </entry>
    <entry xml:lang="zh">
      <title>关于Android模拟器无法连接网络</title>
      <link href="https://honmaple.me/articles/2025/06/guan-yu-androidmo-ni-qi-wu-fa-lian-jie-wang-luo.html" rel="alternate"></link>
      <published>Tue, 03 Jun 2025 13:55:08 +0000</published>
      <updated>Tue, 21 Oct 2025 21:39:22 +0000</updated>
      <author>
        <name>honmaple</name>
      </author>
      <link rel="alternate" href="https://honmaple.me/articles/2025/06/guan-yu-androidmo-ni-qi-wu-fa-lian-jie-wang-luo.html" type="text/html"/>
      <id>https://honmaple.me/articles/2025/06/guan-yu-androidmo-ni-qi-wu-fa-lian-jie-wang-luo.html</id>
      <summary type="html">&lt;p&gt;一个很奇怪的问题，在模拟器测试安卓应用是总是显示&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;Post &amp;#34;https://xxx&amp;#34;: EOF
&lt;/pre&gt;
&lt;p&gt;但偶尔又变得正常，通过一番查找，原来是设置 &lt;strong&gt;Android Studio&lt;/strong&gt; 使用代理之后，通过其创建的模拟器也会默认使用代理。解决方式也很简单，只要打开模拟器设置然后取消代理即可

&lt;a href=&quot;https://s.libforest.com/images/2025/06/android-studio-proxy.png-show&quot; data-fancybox=&quot;image&quot;&gt;
  &lt;img data-src=&quot;https://s.libforest.com/images/2025/06/android-studio-proxy.png-thumb&quot; class=&quot;lazyload&quot; /&gt;
&lt;/a&gt;&lt;/p&gt;
</summary>
      <content type="html">&lt;p&gt;一个很奇怪的问题，在模拟器测试安卓应用是总是显示&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;Post &amp;#34;https://xxx&amp;#34;: EOF
&lt;/pre&gt;
&lt;p&gt;但偶尔又变得正常，通过一番查找，原来是设置 &lt;strong&gt;Android Studio&lt;/strong&gt; 使用代理之后，通过其创建的模拟器也会默认使用代理。解决方式也很简单，只要打开模拟器设置然后取消代理即可

&lt;a href=&quot;https://s.libforest.com/images/2025/06/android-studio-proxy.png-show&quot; data-fancybox=&quot;image&quot;&gt;
  &lt;img data-src=&quot;https://s.libforest.com/images/2025/06/android-studio-proxy.png-thumb&quot; class=&quot;lazyload&quot; /&gt;
&lt;/a&gt;&lt;/p&gt;
</content>
        <category term="Tech"></category>
    </entry>
    <entry xml:lang="zh">
      <title>MacOS环境配置</title>
      <link href="https://honmaple.me/articles/2025/04/macoshuan-jing-pei-zhi.html" rel="alternate"></link>
      <published>Fri, 18 Apr 2025 15:53:20 +0000</published>
      <updated>Fri, 13 Feb 2026 22:05:41 +0000</updated>
      <author>
        <name>honmaple</name>
      </author>
      <link rel="alternate" href="https://honmaple.me/articles/2025/04/macoshuan-jing-pei-zhi.html" type="text/html"/>
      <id>https://honmaple.me/articles/2025/04/macoshuan-jing-pei-zhi.html</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;div id=&quot;table-of-contents&quot;&gt;&lt;h2&gt;Table of Contents&lt;/h2&gt;&lt;div id=&quot;text-table-of-contents&quot;&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#heading-1&quot;&gt;设置&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#heading-1.1&quot;&gt;App Store&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#heading-1.2&quot;&gt;终端&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#heading-2&quot;&gt;必备软件&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#heading-2.1&quot;&gt;homebrew&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#heading-2.2&quot;&gt;betterdisplay&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#heading-2.3&quot;&gt;clash-verge-rev&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#heading-2.4&quot;&gt;folo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#heading-2.5&quot;&gt;google-chrome&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#heading-2.6&quot;&gt;yabai&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#heading-2.7&quot;&gt;hammerspoon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#heading-2.8&quot;&gt;Localsend&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#heading-2.9&quot;&gt;inkscape&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#heading-2.10&quot;&gt;wireshark&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#heading-2.11&quot;&gt;字体&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#heading-3&quot;&gt;开发软件&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#heading-3.1&quot;&gt;Emacs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#heading-3.2&quot;&gt;Docker&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#heading-3.3&quot;&gt;Ruby&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#heading-3.4&quot;&gt;Python&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#heading-3.5&quot;&gt;Golang&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#heading-3.6&quot;&gt;Protobuf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#heading-3.7&quot;&gt;Android&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#heading-3.8&quot;&gt;Flutter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#heading-3.9&quot;&gt;Node&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#heading-3.10&quot;&gt;Rust&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#heading-3.11&quot;&gt;Ai&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#heading-3.12&quot;&gt;Other&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;

&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;设置 -&amp;gt; 通用 -&amp;gt; 传输与还原 -&amp;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;商店 -&amp;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&quot;&gt;chsh -s /bin/bash&lt;/pre&gt;

&lt;p&gt;
    并且有使用了十多年的PS1配置
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&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;
    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;
    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 style=&quot;color:#f92672&quot;&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 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 style=&quot;color:#f92672&quot;&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;/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&quot;&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;
    source $HOME/.bashrc
&lt;span style=&quot;color:#66d9ef&quot;&gt;fi&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&quot;&gt;/bin/bash -c &amp;#34;$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)&amp;#34;&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&quot;&gt;export PATH&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;/opt/homebrew/bin:$PATH

&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;
    export HOMEBREW_NO_AUTO_UPDATE&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;true
    &lt;span style=&quot;color:#75715e&quot;&gt;# export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=true&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 style=&quot;color:#75715e&quot;&gt;# export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles&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 style=&quot;color:#66d9ef&quot;&gt;fi&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&quot;&gt;brew install --cask betterdisplay&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&quot;&gt;brew install --cask clash-verge-rev&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&quot;&gt;brew install --cask folo&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&quot;&gt;brew install --cask google-chrome&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&quot;&gt;brew install koekeishiya/formulae/yabai
yabai --start-service&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&quot;&gt;brew install --cask hammerspoon&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&quot;&gt;brew install --cask localsend&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&quot;&gt;brew install --cask inkscape&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&quot;&gt;brew install --cask wireshark&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&quot;&gt;brew install --cask font-maple-mono-nf&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&quot;&gt;brew install --cask railwaycat/emacsmacport/emacs-mac&lt;/pre&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
 &lt;b&gt;quelpa&lt;/b&gt; 依赖
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;brew install gnu-tar&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&quot;&gt;brew install --cask docker&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&quot;&gt;export GEM_HOME&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;$HOME/repo/ruby/gem
export GEM_PATH&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;$HOME/repo/ruby/gem
export GEM_SPEC_CACHE&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;$HOME/repo/ruby/gem/specs
export PATH&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;$GEM_HOME/bin:$PATH&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&quot;&gt;brew install pyenv pyenv-virtualenv&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&quot;&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;
    export PYENV_ROOT&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;$HOME/repo/python/pyenv
    export PATH&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;$PYENV_ROOT/bin:$PATH
    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 style=&quot;color:#66d9ef&quot;&gt;fi&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;
    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 style=&quot;color:#66d9ef&quot;&gt;fi&lt;/span&gt;&lt;/pre&gt;

&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;export PYTHONUSERBASE&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;$HOME/repo/python
export PYTHONHISTFILE&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;$HOME/repo/python/history
export PATH&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;$HOME/repo/python/bin:$PATH&lt;/pre&gt;

&lt;p&gt;
    开发依赖:
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;python3 -m pip install --user python-lsp-server
python3 -m pip install --user python-lsp-ruff&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&quot;&gt;brew install go&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&quot;&gt;export GOPROXY&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;https://goproxy.cn,direct
export GOPATH&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;$HOME/repo/golang
export PATH&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;$HOME/repo/golang/bin:$PATH&lt;/pre&gt;

&lt;p&gt;
    开发依赖:
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;go install golang.org/x/tools/gopls@latest
go install honnef.co/go/tools/cmd/staticcheck@latest

go install golang.org/x/mobile/cmd/gomobile@latest
gomobile init&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&quot;&gt;brew install protobuf bufbuild/buf/buf&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&quot;&gt;go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
go install github.com/favadi/protoc-go-inject-tag@latest
go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway@latest
go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2@latest&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&quot;&gt;dart --disable-analytics
dart pub global activate protoc_plugin 21.1.2&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&quot;&gt;brew install --cask android-studio&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 -&amp;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&quot;&gt;export ANDROID_HOME&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;$HOME/repo/android/sdk
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;
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;
export PATH&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;$ANDROID_HOME/platform-tools:$PATH&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&quot;&gt;unzip ~/Downloads/flutter_macos_arm64_3.29.3-stable.zip-d ~/repo/&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&quot;&gt;sudo softwareupdate --install-rosetta --agree-to-license&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&quot;&gt;export GEM_HOME=$HOME/repo/ruby/gem
export PATH=$GEM_HOME/bin:$PATH

gem install cocoapods --user-install -V&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&quot;&gt;ERROR:  Error installing cocoapods:
    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
    securerandom requires Ruby version &amp;gt;= 3.1.0. The current ruby version is 2.6.10.210.&lt;/pre&gt;
&lt;p&gt;
    本来还想按照提示处理，但处理完一个又来一个，处理完一个又来一个，太过麻烦。还有一种方法是安装新版本的ruby
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;brew install ruby&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&quot;&gt;/opt/homebrew/Cellar/ruby/3.4.3/bin/gem install cocoapods -V&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&quot;&gt;[!] Xcode - develop for iOS and macOS (Xcode 16.3)
    ✗ CocoaPods installed but not working.
        You appear to have CocoaPods installed but it is not working.
        This can happen if the version of Ruby that CocoaPods was installed with is different from the one being used to invoke it.
        This can usually be fixed by re-installing CocoaPods.
      For re-installation instructions, see https://guides.cocoapods.org/using/getting-started.html#installation
[✓] Chrome - develop for the web&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&quot;&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)
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
    from /opt/homebrew/Cellar/ruby/3.4.3/lib/ruby/3.4.0/rubygems/specification.rb:1407:in &amp;#39;Array#each&amp;#39;
    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;
    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;
    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;
    from /opt/homebrew/Cellar/ruby/3.4.3/lib/ruby/3.4.0/rubygems/specification.rb:1407:in &amp;#39;Array#each&amp;#39;
    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;
    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;
    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;
    from /opt/homebrew/Cellar/ruby/3.4.3/lib/ruby/3.4.0/rubygems/specification.rb:1407:in &amp;#39;Array#each&amp;#39;
    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;
    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;
    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;
    from /opt/homebrew/Cellar/ruby/3.4.3/lib/ruby/3.4.0/rubygems.rb:289:in &amp;#39;Thread::Mutex#synchronize&amp;#39;
    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;
    from /Users/xxxx/repo/ruby/gem/bin/pod:25:in &amp;#39;&amp;lt;main&amp;gt;&amp;#39;&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&quot;&gt;/opt/homebrew/Cellar/ruby/3.4.3/bin/gem install nkf -V&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&quot;&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;
export PUB_HOSTED_URL&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;https://storage.flutter-io.cn
export PATH&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;$HOME/repo/flutter/bin:$PATH&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&quot;&gt;dart pub global activate fvm&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 卸载
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;dart pub global deactivate fvm&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&quot;&gt;export FVM_CACHE_PATH&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;$HOME/repo/flutter/fvm&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&quot;&gt;brew install node&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&quot;&gt;export NODE_PATH&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;$HOME/repo/npm/lib/node_modules
export PATH&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;$HOME/repo/npm/bin:$PATH&lt;/pre&gt;

&lt;p&gt;
    开发依赖:
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;npm install -g yarn
npm install -g pnpm
npm install -g typescript-language-server typescript
npm install -g @vue/language-server
npm install -g @tailwindcss/language-server
npm install -g emmet-ls
npm install -g prettier
npm install -g js-beautify&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&quot;&gt;pnpm config set store-dir ~/repo/pnpm&lt;/pre&gt;

&lt;p&gt;
    其它:
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;npm install -g @quasar/cli&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&quot;&gt;brew install rustup
rustup-init&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&quot;&gt;export CARGO_HOME&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;$HOME/repo/rust/cargo
export CARGO_TARGET_DIR&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;$HOME/repo/rust/cargo/build

export RUSTUP_HOME&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;$HOME/repo/rust/rustup
export RUSTUP_DIST_SERVER&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;https://rsproxy.cn
export RUSTUP_UPDATE_ROOT&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;https://rsproxy.cn/rustup

export PATH&lt;span style=&quot;color:#f92672&quot;&gt;=&lt;/span&gt;$HOME/repo/rust/cargo/bin:$PATH&lt;/pre&gt;

&lt;h3 id=&quot;heading-3.11&quot;&gt;Ai&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
 opencode
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;npm install -g opencode-ai&lt;/pre&gt;
&lt;p&gt;
      注意，不要使用 &lt;code&gt;brew install opencode&lt;/code&gt; 安装，会报错误
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&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;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 claude-code
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;brew install claude-code --cask&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 trae
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;brew install trae --cask&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
 codex
&lt;/p&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;brew install codex --cask
brew install codex-app --cask&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;heading-3.12&quot;&gt;Other&lt;/h3&gt;
&lt;pre style=&quot;color:#f8f8f2;background-color:#272822&quot;&gt;brew install rg
brew install tree htop
brew install --cask visual-studio-code&lt;/pre&gt;

&lt;p&gt;
    除此之外，最近很少使用的lua等环境待后续补充吧
&lt;/p&gt;</content>
        <category term="Tech"></category>
    </entry>
</feed>