<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>mail_set的铺子</title><description>No description</description><link>https://blog.mailset.top/</link><language>zh_CN</language><item><title>使用LaTeX重制数学试卷</title><link>https://blog.mailset.top/%E4%BD%BF%E7%94%A8latex%E9%87%8D%E5%88%B6%E6%95%B0%E5%AD%A6%E8%AF%95%E5%8D%B7/</link><guid isPermaLink="true">https://blog.mailset.top/%E4%BD%BF%E7%94%A8latex%E9%87%8D%E5%88%B6%E6%95%B0%E5%AD%A6%E8%AF%95%E5%8D%B7/</guid><pubDate>Fri, 02 Oct 2026 04:30:00 GMT</pubDate><content:encoded>&lt;h2&gt;写在前面&lt;/h2&gt;
&lt;p&gt;今天久违的更新一次博客，想把这一段时间用 $\LaTeX$ 制作数学试卷的经验分享出来&lt;/p&gt;
&lt;h2&gt;安装&lt;/h2&gt;
&lt;h3&gt;TexLive&lt;/h3&gt;
&lt;p&gt;Windows版推荐使用TexLive，下载地址：&lt;code&gt;https://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/Images/texlive.iso&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;对于Linux，可以使用包管理器直接下载TexLive，这里以Arch为例：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo pacman -S texlive
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;该&lt;code&gt;texlive&lt;/code&gt;是一个软件包组，会下载TexLive中的内容。&lt;/p&gt;
&lt;h3&gt;exam-zh&lt;/h3&gt;
&lt;p&gt;对于卷子本体，我选择了&lt;code&gt;exam-zh&lt;/code&gt;这个宏包来方便排版。项目地址：&lt;code&gt;https://github.com/xkwxdyy/exam-zh&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;如果你使用的是上面的TexLive发行版，可以直接在终端中使用它自带的&lt;code&gt;tlmgr&lt;/code&gt;这个宏包管理器安装&lt;code&gt;exam-zh&lt;/code&gt;这个宏：&lt;/p&gt;
&lt;p&gt;在Windows下，可以按下组合键&lt;code&gt;Win+X&lt;/code&gt;，在弹出的选择框内选择“终端（管理员）”或“Windows Powershell（管理员）”，之后在出现的窗口中输入以下内容：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;tlmgr option repository https://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/tlnet/ #设置镜像源
tlmgr update --self #更新tlmgr
tlmgr install exam-zh #安装exam-zh
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Linux使用的命令同上，但可能需要以root权限运行以上命令&lt;/p&gt;
&lt;p&gt;更多关于exam-zh的内容可以参考&lt;a href=&quot;https://github.com/xkwxdyy/exam-zh&quot;&gt;官方仓库&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;配置&lt;/h2&gt;
&lt;p&gt;对于 $\LaTeX$ 文本编辑器，我选择了 &lt;a href=&quot;https://code.visualstudio.com/&quot;&gt;Visual Studio Code&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;在VSCode中安装&lt;code&gt;LaTeX Workshow&lt;/code&gt;,&lt;code&gt;LaTex&lt;/code&gt;等插件，更详细的教程可以参考&lt;a href=&quot;https://github.com/shinyypig/latex-vscode-config&quot;&gt;这个&lt;/a&gt;，在这里就不过多叙述了&lt;/p&gt;
&lt;p&gt;值得注意的是这个exam-zh强制要求使用 &lt;code&gt;XeLaTeX&lt;/code&gt; 作为编译器，然而上面的插件默认使用&lt;code&gt;pdflatex&lt;/code&gt;构建，于是我们需要按下&lt;code&gt;Ctrl+Shift+P&lt;/code&gt;，然后搜索&lt;code&gt;Preferences: Open User Settings&lt;/code&gt;来打开VSCode的设置页面&lt;/p&gt;
&lt;p&gt;之后在设置页面内搜索&lt;code&gt;recipe&lt;/code&gt;，将搜索结果中的&lt;code&gt;Latex-workshop › Latex › Recipe: Default&lt;/code&gt;下的内容从&lt;code&gt;first&lt;/code&gt;改为&lt;code&gt;latexmk (xelatex)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;这样你就可以享受到每次保存/切换窗口的时候自动构建了，构建出的内容应当是和&lt;code&gt;.tex&lt;/code&gt;文件同目录，同名称的&lt;code&gt;.pdf&lt;/code&gt;文件&lt;/p&gt;
&lt;h2&gt;试卷&lt;/h2&gt;
&lt;h3&gt;文字内容&lt;/h3&gt;
&lt;h4&gt;拼好题&lt;/h4&gt;
&lt;p&gt;如果你想要干的是拼好题的话，试卷中的文字内容，我十分建议使用带有识图功能的DeepSeek，豆包等AI直接通过卷子图片转成LaTeX文字内容&lt;/p&gt;
&lt;p&gt;就让AI直接按下面的格式生成：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;\documentclass[fontset=fandol]{exam-zh}
\usepackage{unicode-math,microtype,esvect,xeCJK}
\examsetup{
  question/show-answer = false,
  fillin/no-answer-type = none,
  title/title-format=\bfseries \LARGE,
  %page/size = a3paper, % 使用横版样式
}

\hfuzz=5pt

\begin{document}

\title{训练}
\maketitle

\section{选择题}
\begin{question}
  已知空间向量 $\symbfit{a}=(\sqrt{3},0,1),\symbfit{b}=\left(\dfrac14,0,\dfrac{\sqrt{3}}4\right)$，则 $\symbfit{a}$ 在 $\symbfit{b}$ 上的投影向量的模为
  \begin{choices}
  \item $\sqrt{3}$
  \item $1$
  \item $2$
  \item $\dfrac12$
  \end{choices}
\end{question}

\section{多选题}
\begin{question}
  已知直线 $l:2x-y+4=0$，则下列说法正确的是
  \begin{choices}
  \item $l$ 在 $x$ 轴上的截距为 $2$
  \item $l$ 与直线 $x+2y+4=0$ 垂直
  \item $l$ 与直线 $2x-y-1=0$ 之间的距离为 $\sqrt{5}$
  \item $l$ 与圆 $x^2+y^2=4$ 相离
  \end{choices}
\end{question}

\section{填空题}
\begin{question}
  已知两直线 $3x+y-3=0$ 与 $3x+y-1=0$ 之间的距离为 \fillin.
\end{question}

\section{解答题}
\begin{problem}[points = 15]
  求满足下列条件的直线方程：
  \begin{enumerate}
    \item 过点 $(1,2)$，且与直线 $3x-2y+3=0$ 平行的直线方程；
    \item 过点 $(-1,2)$，且与直线 $3x-y+2=0$ 垂直的直线方程；
    \item 过点 $(1,-2)$，且在两坐标轴上截距相等的直线方程.
  \end{enumerate}
  \vspace{3cm}
\end{problem}
\end{document}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这样生成出来的试卷还是比较赏心悦目的，只有题，没有其他很复杂的内容&lt;/p&gt;
&lt;p&gt;如果更想要带主标题，科目，注意事项等的高考试卷对应的样式的卷子的话可以看&lt;a href=&quot;https://github.com/xkwxdyy/exam-zh/blob/main/examples-basic/03-real-exam-scenario.tex&quot;&gt;这个模板&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;图片内容&lt;/h3&gt;
&lt;p&gt;对于立体几何，找到一个趁手的工具还是很困难的，你总不能说你爱对着TikZ搓吧（&lt;/p&gt;
&lt;p&gt;那么我们就可以使用&lt;a href=&quot;https://inkscape.org/&quot;&gt;InkScape&lt;/a&gt;这个矢量画图工具&lt;/p&gt;
&lt;p&gt;首先我们可以把照片中的几何图形（或者你在geogebra中绘制好的，调好透视的3d图形）复制到画布中&lt;/p&gt;
&lt;p&gt;接着创建新图层，将原来的图片锁定，在新图层中把线，点，标签什么的都描一遍&lt;/p&gt;
&lt;p&gt;这个工具的吸附功能还是比较好用的，可以在右上角开启&lt;/p&gt;
&lt;p&gt;具体怎么用，我可能会出一期视频，或者你也可以找找其他的教程&lt;/p&gt;
&lt;p&gt;画完之后隐藏原来只含有源图片的图层，然后&lt;code&gt;Ctrl+A&lt;/code&gt;全选，&lt;code&gt;Ctrl+Shift+D&lt;/code&gt;打开画布控制菜单，最后点击缩放内容到画布右边的按钮就可以限制尺寸了&lt;/p&gt;
&lt;p&gt;我推荐内容保存成默认的&lt;code&gt;InkScape SVG&lt;/code&gt;便于之后的更改，但是想要插入 $\LaTeX$ 文档里面的话这个格式肯定是不方便的，于是我们就要在左上角的&lt;code&gt;文件&amp;gt;保存副本&lt;/code&gt;中手动保存成&lt;code&gt;.pdf&lt;/code&gt;格式，这样更方便使用&lt;/p&gt;
&lt;h3&gt;图文混编&lt;/h3&gt;
&lt;p&gt;那接下来要做的就是把图片和文字混编起来了，常见的有下面几种形式&lt;/p&gt;
&lt;h4&gt;图文并列&lt;/h4&gt;
&lt;h5&gt;wrapstuff&lt;/h5&gt;
&lt;p&gt;&lt;code&gt;wrapstuff&lt;/code&gt;是嵌入到&lt;code&gt;exam-zh&lt;/code&gt;内的功能，混编之后就像这样：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://pic.mailset.top/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE_20261002_154743.png&quot; alt=&quot;wrapstuff&quot; /&gt;&lt;/p&gt;
&lt;p&gt;源代码：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;\begin{question}
  \begin{wrapstuff}[r]
    \includegraphics[width=0.35\linewidth]{img/p10-1.pdf}
  \end{wrapstuff}
  如图，平行六面体 $ABCD-A_1B_1C_1D_1$ 的所有棱长均为 $1$，且 $\angle BAD=60^\circ,\angle A_1AB=120^\circ,\angle A_1AD=90^\circ$，记 $\vv{AB}=\symbfit{a},\vv{AD}=\symbfit{b},\vv{AA_1}=\symbfit{c}$，则下列说法正确的是
  \begin{choices}
  \item $\vv{BD_1}=\symbfit{b}+\symbfit{c}-\symbfit{a}$
  \item $|\vv{BD_1}|=\sqrt{3}$
  \item $\vv{AC_1}\perp \vv{A_1D}$
  \item 直线 $BD_1$ 与 $A_1D$ 所成角的余弦值为 $\dfrac{\sqrt{6}}6$
  \end{choices}
\end{question}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;其中的&lt;code&gt;width=0.35\linewidth&lt;/code&gt;的意思是占这一行的35%，嫌大嫌小都可以调&lt;/p&gt;
&lt;p&gt;但是这个方法有较大的局限性，比如在大题里用很可能会让排版爆掉，于是就有了下面这个灵活性更高的方法&lt;/p&gt;
&lt;h5&gt;minipage&lt;/h5&gt;
&lt;p&gt;&lt;code&gt;minipage&lt;/code&gt;是 $\LaTeX$ 中自带的宏，效果如下：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://pic.mailset.top/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE_20261002_155144.png&quot; alt=&quot;minipage&quot; /&gt;&lt;/p&gt;
&lt;p&gt;源代码：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;\begin{problem}[points = 13]
  如图，在平行六面体 $ABCD-A_1B_1C_1D_1$ 中，$M$ 为 $AC$ 与 $BD$ 的交点，$N$ 为 $BB_1$ 的靠近 $B$ 的三等分点，若 $\vv{A_1B_1}=\symbfit{a},\vv{A_1D_1}=\symbfit{b},\vv{A_1A}=\symbfit{c}$.
  \par\noindent
  \begin{minipage}[t]{0.7\linewidth}
    \begin{enumerate}
      \item 用 $\symbfit{a},\symbfit{b},\symbfit{c}$ 表示 $\vv{A_1C},\vv{NM}$ 向量；
      \item 若 $\angle B_1A_1D_1=\angle B_1A_1A=\angle D_1A_1A=\dfrac{\pi}{3}$，$|\vv{A_1B_1}|=|\vv{A_1D_1}|=|\vv{A_1A}|=2$，计算 $\vv{A_1C}\cdot\vv{NM}$.
    \end{enumerate}
    \vspace{3cm}
  \end{minipage}
  \hfill
  \begin{minipage}[t]{0.3\linewidth}
    \vspace{0pt}
    \includegraphics[width=\linewidth]{img/p15-1.pdf}
  \end{minipage}
\end{problem}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这个&lt;code&gt;[t]&lt;/code&gt;代表顶部对齐，写上可以让小题与题干之间的距离看起来更赏心悦目&lt;/p&gt;
&lt;p&gt;然而下面的这个&lt;code&gt;\vspace{0pt}&lt;/code&gt;如果去掉就会让整个排版很诡异的崩溃&lt;/p&gt;
&lt;p&gt;上面的&lt;code&gt;\vspace{3cm}&lt;/code&gt;可以自己改动。如果这个题比较难写，需要留空比较多的话可以把数字写大一点&lt;/p&gt;
&lt;p&gt;这里的&lt;code&gt;\includegraphics[width=\linewidth]&lt;/code&gt;指的就是&lt;code&gt;minipage&lt;/code&gt;中的宽度了，如果想调文字和图片的占比的话就要调整&lt;code&gt;\begin{minipage}&lt;/code&gt;后面的数字了。注意相加需要不大于1（多了会超出边距），可以小于1（适用于想让文字与图片空隙大一点的情况）&lt;/p&gt;
&lt;h4&gt;图文分排&lt;/h4&gt;
&lt;h5&gt;center &amp;amp; flushright/left&lt;/h5&gt;
&lt;p&gt;&lt;code&gt;center&lt;/code&gt;,&lt;code&gt;flushright&lt;/code&gt;,&lt;code&gt;flushleft&lt;/code&gt;同样是 $\LaTeX$ 自带的宏，我们以&lt;code&gt;center&lt;/code&gt;为例，效果如下：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://pic.mailset.top/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE_20261002_160112.png&quot; alt=&quot;center&quot; /&gt;&lt;/p&gt;
&lt;p&gt;源代码：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;\begin{question}
  如图，在棱长为 $1$ 的正方体 $ABCD-A_1B_1C_1D_1$ 中，$E,F$ 分别是 $AB,AD$ 的中点，$M$ 为线段 $C_1D_1$ 上的动点，则下列说法正确的是
  \begin{center}
    \includegraphics[width=0.3\linewidth]{img/p11-1.pdf}
  \end{center}
  \begin{choices}
  \item 三棱锥 $M-A_1EF$ 的体积为定值
  \item 不存在点 $M$，使得 $EF\perp ME$
  \item 平面 $MEF$ 与平面 $ABCD$ 所成角的正切值的最大值为 $2\sqrt{2}$
  \item $\vv{D_1M}=\dfrac12\vv{D_1C_1}$ 时，平面 $MEF$ 截该正方体的外接球所得截面的面积为 $3\pi$
  \end{choices}
\end{question}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;其中的&lt;code&gt;\begin{center}&lt;/code&gt;可以换成&lt;code&gt;\begin{flushright}&lt;/code&gt;,&lt;code&gt;\begin{flushleft}&lt;/code&gt;等，效果为靠右或者靠左&lt;/p&gt;
&lt;h5&gt;textfigure&lt;/h5&gt;
&lt;p&gt;&lt;code&gt;textfigure&lt;/code&gt;是&lt;code&gt;exam-zh&lt;/code&gt;内置的一个宏，效果和&lt;code&gt;flushright&lt;/code&gt;有点像，只不过好像会引入额外的间隔，效果如下：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://pic.mailset.top/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE_20261002_160604.png&quot; alt=&quot;textfigure&quot; /&gt;&lt;/p&gt;
&lt;p&gt;源代码：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;\begin{question}
    \textfigure{
    如图，一个结晶体的形状为平行六面体$ABCD-A_1B_1C_1D_1$，其中，以顶点$A$为端点的三条棱长都相等，且它们彼此的夹角都是$60^\circ$，下列说法中正确的是
    }{
        \includegraphics[width=0.3\linewidth]{img/image10.png}
    }
    \begin{choices}
        \item $(\vv{AA_1}+\vv{AB}+\vv{AD})^2=2\vv{AC}^2$
        \item $\vv{AC_1}\cdot(\vv{AB}−\vv{AD})=0$
        \item 向量$\vv{B_1C}$与$\vv{AA_1}$的夹角是$60^\circ$
        \item $\vv{BD_1}$与$\vv{AC}$所成角的余弦值为$\dfrac{\sqrt{6}}{3}$
    \end{choices}
\end{question}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;AI说这个在大题中可能会有问题，需要注意一下，尽量还是用&lt;code&gt;minipage&lt;/code&gt;或者&lt;code&gt;flushright&lt;/code&gt;比较好吧（其实我也不清楚QwQ）&lt;/p&gt;
&lt;h4&gt;多图并排&lt;/h4&gt;
&lt;p&gt;&lt;code&gt;multifigures&lt;/code&gt;是&lt;code&gt;exam-zh&lt;/code&gt;内置的一个宏，可以实现多个图片的横向/纵向并排，效果如下：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://pic.mailset.top/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE_20261002_161226.png&quot; alt=&quot;multifigures-vertical&quot; /&gt;&lt;/p&gt;
&lt;p&gt;源代码：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;\begin{problem}[points = 17]
  如图①所示，在$Rt\triangle{ABC}$中，$\angle{C}=90°,BC=3,AC=6$，$D,E$分别是$AC,AB$上的点，
  且$DE\parallel{BC},DE=2$，将$\triangle{ADE}$沿$DE$折起到$\triangle{A_1DE}$的位置，使$A_1C\perp{CD}$，如图②所示.
  \begin{enumerate}
    \item 求证：$A_1C\perp$平面$BCDE$；
    \item 若$M$是$A_1D$的中点,求直线$CM$与平面$A_1BE$所成角的大小;
    \item 线段$BC$上是否存在点$P$,使平面$A_1DP$与平面$A_1BE$垂直?并说明理由.
  \end{enumerate}
  \begin{multifigures}[columns=1, xshift=0.75\linewidth]
  \item[图①] \includegraphics[width=0.4\linewidth]{img/image19-1.png}
  \item[图②] \includegraphics[width=0.4\linewidth]{img/image19-2.png}
  \end{multifigures}
\end{problem}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这里面的&lt;code&gt;xshift=0.75\linewidth&lt;/code&gt;指的是图片向右偏移到0.75列宽的位置，比较适合大题&lt;/p&gt;
&lt;p&gt;其中把&lt;code&gt;columns=1&lt;/code&gt;改成其他的数值，比如&lt;code&gt;columns=2&lt;/code&gt;就可以有横向编排的效果，比如：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://pic.mailset.top/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE_20261002_161516.png&quot; alt=&quot;multifigures-horizonal&quot; /&gt;&lt;/p&gt;
&lt;p&gt;源代码：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;\begin{question}
  如图，在空间四边形$ABCD$中，$AC$和$BD$为对角线，$G$为$\triangle{ABC}$的重心，$E$是$BD$上一点，$BE=3ED$，以$\{\vv{AB},\vv{AC},\vv{AD}\}$为基底，则$\vv{GE}=$ \fillin
\end{question}

\begin{question}
  如图，在直三棱柱$ABC-A_1B_1C_1$中，$\angle{ABC}=90^\circ$,$AB=BC=AA_1=2$，点$D$是$AC$的中点，则异面直线$A_1D$和$B_1C$所成角的大小为 \fillin
\end{question}

\begin{multifigures}[columns = 2, column-gap=2cm]
\item[13题图] \includegraphics[width=0.4\linewidth]{img/image13.png}
\item[14题图] \includegraphics[width=0.4\linewidth]{img/image14.png}
\end{multifigures}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;其中的&lt;code&gt;column-gap=2cm&lt;/code&gt;指的是两张图片之间的间距，可以变大也可以变小&lt;/p&gt;
&lt;p&gt;横向的比较适用于填空题，选择题的多张图片挤在一起&lt;/p&gt;
&lt;h2&gt;导出&lt;/h2&gt;
&lt;p&gt;做完这这一切就可以导出了。其实在每次按下保存的时候，VSCode中的插件就会自动为我们编译好，不过为了防止未定义行为（究竟在未定义些什么。。。），我们可以手动编译一下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;xelatex paper.tex
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;其中的&lt;code&gt;paper.tex&lt;/code&gt;为你的tex文件的文件名，还是尽量不要用中文比较好，可能会引发其他很难定位的问题&lt;/p&gt;
&lt;p&gt;如果想要A3大小的横排，就在我刚开始给出的模板中取消&lt;code&gt;page/size = a3paper&lt;/code&gt;那一行前面的&lt;code&gt;%&lt;/code&gt;符号（这个符号代表 $\LaTeX$ 中的注释）&lt;/p&gt;
&lt;p&gt;享受你的试卷吧&lt;/p&gt;
&lt;h2&gt;结语&lt;/h2&gt;
&lt;p&gt;这篇文章是我在做了这几次粘贴来的试卷的数字化（迫真）后总结出来的，可能会有照顾不到的地方，也可能有一些更好的但是我不知道的解决方法，恳请看到这个文章的各位大佬发现问题后点明，谢谢大家！&lt;/p&gt;
</content:encoded></item><item><title>时隔一年</title><link>https://blog.mailset.top/%E6%97%B6%E9%9A%94%E4%B8%80%E5%B9%B4/</link><guid isPermaLink="true">https://blog.mailset.top/%E6%97%B6%E9%9A%94%E4%B8%80%E5%B9%B4/</guid><pubDate>Sat, 08 Nov 2025 15:40:00 GMT</pubDate><content:encoded>&lt;p&gt;Hi, 我是 mail_set 也许并没有人看，但是我还是发了&lt;/p&gt;
&lt;h2&gt;学业&lt;/h2&gt;
&lt;p&gt;初中毕业了，现在顺利进入了县里面的重点高中，学习成绩也还可以，走着看吧&lt;/p&gt;
&lt;p&gt;遇到了很好的老师，当上了班长，我觉得我还挺幸运的，期待三年后的我考上个本科...或许是一本？或许是双一流？或许是211？我也许应该相信自己，但这才高一&lt;/p&gt;
&lt;h2&gt;博客&lt;/h2&gt;
&lt;p&gt;我的Github账号终于被Github还回来了，挺开心的，所以我还是要把这个博客迁移回Github去&lt;/p&gt;
&lt;h2&gt;生活&lt;/h2&gt;
&lt;p&gt;搬进了新房子，不用爬楼了&lt;/p&gt;
&lt;p&gt;平常感觉想东西淡然了点吧，也许没以前那么计较了&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;刚刚还想起来有一堆可以写的，现在咋就全忘完了？&lt;/p&gt;
</content:encoded></item><item><title>解决淘宝买的1.3寸oled花屏的问题</title><link>https://blog.mailset.top/%E8%A7%A3%E5%86%B3%E6%B7%98%E5%AE%9D%E4%B9%B0%E7%9A%841-3%E5%AF%B8oled%E8%8A%B1%E5%B1%8F%E7%9A%84%E9%97%AE%E9%A2%98/</link><guid isPermaLink="true">https://blog.mailset.top/%E8%A7%A3%E5%86%B3%E6%B7%98%E5%AE%9D%E4%B9%B0%E7%9A%841-3%E5%AF%B8oled%E8%8A%B1%E5%B1%8F%E7%9A%84%E9%97%AE%E9%A2%98/</guid><pubDate>Mon, 18 Nov 2024 13:30:00 GMT</pubDate><content:encoded>&lt;p&gt;最近想玩树莓派Pico了，就在淘宝上买了个便宜的1.3寸oled屏，好像是ssd1315主控，但我找遍全网都没找到能用的micropython的驱动，刚刚终于找着了，作此小纪&lt;/p&gt;
&lt;p&gt;访问这个库 &lt;a href=&quot;https://github.com/robert-hh/SH1106&quot;&gt;robert-hh/sh1106&lt;/a&gt; 下载sh1106.py，上传到你的pico上，代码范例：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;from machine import Pin, I2C
from utime import sleep
import sh1106

pin = Pin(&quot;LED&quot;, Pin.OUT)

i2c = I2C(0, scl=Pin(13), sda=Pin(12))
print(&quot;I2C device: &quot; + str(i2c.scan()))
oled = sh1106.SH1106_I2C(128,64,i2c)
oled.init_display()
oled.poweron()
stat = 0
oled.flip(True)
while True:
    oled.text(&quot;I2C:&quot; + str(i2c.scan()),0,2)
    oled.invert(stat)
    oled.show()
    stat = 0 if stat else 1
    sleep(0.5)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;有什么错误欢迎大家指正！&lt;/p&gt;
</content:encoded></item><item><title>解决git commit -S无法签名的问题</title><link>https://blog.mailset.top/%E8%A7%A3%E5%86%B3git-commit-s%E6%97%A0%E6%B3%95%E7%AD%BE%E5%90%8D%E7%9A%84%E9%97%AE%E9%A2%98/</link><guid isPermaLink="true">https://blog.mailset.top/%E8%A7%A3%E5%86%B3git-commit-s%E6%97%A0%E6%B3%95%E7%AD%BE%E5%90%8D%E7%9A%84%E9%97%AE%E9%A2%98/</guid><pubDate>Fri, 15 Nov 2024 16:40:00 GMT</pubDate><content:encoded>&lt;p&gt;刚刚提交git的时候发现&lt;code&gt;git commit -S&lt;/code&gt;卡了很长时间，接着失败了，但是笔者探索出来了一个解决方案&lt;/p&gt;
&lt;p&gt;笔者用的是Windows 11系统，GnuPG版本为&lt;code&gt;2.4.5&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;现象&lt;/h2&gt;
&lt;p&gt;在&lt;code&gt;git commit -S -m &quot;aaa&quot;&lt;/code&gt;的时候，会卡住很长时间不动，以往是卡完之后commit成功或者不用卡就成功，但今天失败了，输出如下所示：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;error: gpg failed to sign the data:
gpg: can&apos;t connect to the keyboxd: IPC connect call failed?
gpg: error opening key DB: No Keybox daemon running?
gpg: skipped &quot;XXX&quot;: Input/output error?
[GNUPG:] INV_SGNR 0 XXX?
[GNUPG:] FAILURE sign 33587249?
gpg: signing failed: Input/output error?

fatal: failed to write commit object
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;解决&lt;/h2&gt;
&lt;p&gt;我发现的解决方法很简单，新开一个终端，运行：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;gpg-agent --daemon
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;输出：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;gpg-agent[pid]: gpg-agent (GnuPG) 2.4.5 started
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这条命令将会卡住终端，切换到原来的终端上继续commit&lt;/p&gt;
&lt;p&gt;再次commit，成功:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[main aaa] aaa
 n files changed, n insertions(+), n deletions(-)
 create mode 100644 aaa
 create mode 100644 bbb
 create mode 100644 ccc
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;解决&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;如果有什么疑问或者补充可以在下面评论！感谢支持！&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;2025/11/08 补:
第二次试了没用了。&lt;/p&gt;
</content:encoded></item><item><title>把网站所有图片资源迁移为webp格式</title><link>https://blog.mailset.top/%E6%8A%8A%E7%BD%91%E7%AB%99%E6%89%80%E6%9C%89%E5%9B%BE%E7%89%87%E8%B5%84%E6%BA%90%E8%BF%81%E7%A7%BB%E4%B8%BAwebp%E6%A0%BC%E5%BC%8F/</link><guid isPermaLink="true">https://blog.mailset.top/%E6%8A%8A%E7%BD%91%E7%AB%99%E6%89%80%E6%9C%89%E5%9B%BE%E7%89%87%E8%B5%84%E6%BA%90%E8%BF%81%E7%A7%BB%E4%B8%BAwebp%E6%A0%BC%E5%BC%8F/</guid><pubDate>Fri, 25 Oct 2024 11:30:00 GMT</pubDate><content:encoded>&lt;p&gt;本网站从此把所有的需要对外显示的图片资源文件全部转换为webp格式&lt;/p&gt;
&lt;p&gt;我为什么这样做？看完文章你就明白了&lt;/p&gt;
&lt;p&gt;我将会先介绍如何把所有图片资源转为webp格式&lt;/p&gt;
&lt;h2&gt;cwebp下载&lt;/h2&gt;
&lt;p&gt;cwebp是谷歌官方出品的一款将已有图片转换为webp格式文件的软件，用这个软件可以很方便的将已有的很多格式的图片资源文件转换为webp格式文件&lt;/p&gt;
&lt;p&gt;具体的教程可以看&lt;a href=&quot;https://developers.google.cn/speed/webp/docs/cwebp&quot;&gt;GoogleDocs/https://developers.google.cn/speed/webp/docs/cwebp&lt;/a&gt;来了解更加详细的信息&lt;/p&gt;
&lt;p&gt;如果想手动编译的话，可以访问&lt;a href=&quot;https://chromium.googlesource.com/webm/libwebp/&quot;&gt;GoogleGit/https://chromium.googlesource.com/webm/libwebp/&lt;/a&gt;来寻找源代码，自行编译&lt;/p&gt;
&lt;p&gt;但是如果不想编译的话，谷歌也提供了现成的编译过的release，访问&lt;a href=&quot;https://storage.googleapis.com/downloads.webmproject.org/releases/webp/index.html&quot;&gt;GoogleAPIs/https://storage.googleapis.com/downloads.webmproject.org/releases/webp/index.html&lt;/a&gt;来直接下载release&lt;/p&gt;
&lt;p&gt;需要注意的是，要获取最新版本，必须&lt;strong&gt;往下翻到底&lt;/strong&gt;才能看到&lt;/p&gt;
&lt;p&gt;文件格式如下所示：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;libwebp-version-os-platform.zip
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;或者&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;libwebp-version-os-platform.tar.gz
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;libwebp-1.4.0-windows-x64.zip
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;按需要下载自己需要的文件&lt;/p&gt;
&lt;p&gt;或对于 ArchLinux&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo pacman -S libwebp-utils 
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;其他发行版请搜索对应的包&lt;/p&gt;
&lt;h2&gt;使用&lt;/h2&gt;
&lt;p&gt;下载之后就需要解压了，压缩包中只有一个目录，我们把他解压出来，解压出来后目录结构大致如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;libwebp-1.4.0-windows-x64
│  README.md
│  test.webp
│  test_ref.ppm
│
├─bin
│      anim_diff.exe
│      anim_dump.exe
│      cwebp.exe
│      dwebp.exe
│      freeglut.dll
│      get_disto.exe
│      gif2webp.exe
│      img2webp.exe
│      vwebp.exe
│      webpinfo.exe
│      webpmux.exe
│      webp_quality.exe
│
├─doc
│      api.md
│      tools.md
│
├─include
│  └─webp
│          decode.h
│          demux.h
│          encode.h
│          mux.h
│          mux_types.h
│          types.h
│
└─lib
        libwebp.lib
        libwebpdemux.lib
        libwebpmux.lib
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;我们需要的只是bin目录下的cwebp.exe文件，可以讲bin目录加入进环境变量中，这里不再细讲&lt;/p&gt;
&lt;p&gt;打开控制台，查看是否正常&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cwebp -version
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;输出就像：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;1.4.0
libsharpyuv: 0.4.0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;正常使用（有损压缩）用法：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cwebp -m [可选，压缩品质(0-6)，数字越大越慢，默认为4] -q &amp;lt;品质(0-100)，数字越大品质越好&amp;gt; ./输入文件 -o ./输出.webp
# 例如
cwebp -m 6 -q 95 ./default.png -o ./default.webp
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;一般情况下的输出：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Saving file &apos;./default.webp&apos;
File:      ./default.png
Dimension: 2338 x 1440
Output:    367416 bytes Y-U-V-All-PSNR 49.86 52.49 52.66   50.59 dB
           (0.87 bpp)
block count:  intra4:      12127  (91.66%)
              intra16:      1103  (8.34%)
              skipped:        26  (0.20%)
bytes used:  header:            586  (0.2%)
             mode-partition:  52214  (14.2%)
 Residuals bytes  |segment 1|segment 2|segment 3|segment 4|  total
    macroblocks:  |       1%|       5%|      18%|      77%|   13230
      quantizer:  |       6 |       6 |       5 |       4 |
   filter level:  |       2 |       0 |       0 |       9 |
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;想要无损压缩的也可以，用法：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cwebp -lossless ./输入文件 -o ./输出.webp
# 例如
cwebp -lossless ./default.png -o ./default.webp
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;一般情况下的输出&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Saving file &apos;./default.webp&apos;
File:      ./default.png
Dimension: 350 x 350
Output:    11240 bytes (0.73 bpp)
Lossless-ARGB compressed size: 11240 bytes
  * Header size: 1337 bytes, image data size: 9878
  * Lossless features used: PREDICTION CROSS-COLOR-TRANSFORM SUBTRACT-GREEN
  * Precision Bits: histogram=3 transform=3 cache=0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;压缩后可以使用vwebp查看是否编码正确，用法：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;vwebp ./输出.webp
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;运行后会弹出一个窗口，显示的是当前图片编码后的样式&lt;/p&gt;
&lt;h2&gt;为什么用webp&lt;/h2&gt;
&lt;p&gt;回到开头，我为什么要用webp而不用传统的png/jpg之类的格式呢？&lt;/p&gt;
&lt;p&gt;有一个最大的好处，就是“小”&lt;/p&gt;
&lt;p&gt;例如这个文章的头图，也就是网站的主图，压缩前的大小为3.26MB，而经过95品质的压缩后，大小来到了惊人的
&lt;strong&gt;358KB&lt;/strong&gt;
即使是使用了无损压缩格式，压缩后也只有&lt;strong&gt;2.4MB&lt;/strong&gt;左右&lt;/p&gt;
&lt;p&gt;这样不但可以加快访问速度，还能省下不少的带宽，要知道Vercel免费计划每月为100GB，网站肯定是越精简越好的&lt;/p&gt;
&lt;p&gt;所以你还有什么理由不用webp格式的图片呢&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;感谢您阅读此文章，如果有什么不对的地方欢迎再评论区纠正！&lt;/p&gt;
</content:encoded></item><item><title>网站似乎有点不一样了</title><link>https://blog.mailset.top/%E7%BD%91%E7%AB%99%E4%BC%BC%E4%B9%8E%E6%9C%89%E7%82%B9%E4%B8%8D%E4%B8%80%E6%A0%B7%E4%BA%86/</link><guid isPermaLink="true">https://blog.mailset.top/%E7%BD%91%E7%AB%99%E4%BC%BC%E4%B9%8E%E6%9C%89%E7%82%B9%E4%B8%8D%E4%B8%80%E6%A0%B7%E4%BA%86/</guid><pubDate>Sat, 19 Oct 2024 07:32:31 GMT</pubDate><content:encoded>&lt;p&gt;我现在更新了博客，原因是半年前删Linux的时候没备份，不小心把老博客给删了。。。&lt;/p&gt;
&lt;p&gt;关于内容的话我会尽量充实的，谢谢大家了（&lt;/p&gt;
&lt;p&gt;现在大家看到的这篇文章以前的内容，都是我从我知乎上同时发布的文章里&lt;s&gt;回复&lt;/s&gt;恢复下来的，希望能帮到你（&lt;/p&gt;
</content:encoded></item><item><title>在你的网站下面加上运行日期</title><link>https://blog.mailset.top/%E5%9C%A8%E4%BD%A0%E7%9A%84%E7%BD%91%E7%AB%99%E4%B8%8B%E9%9D%A2%E5%8A%A0%E4%B8%8A%E8%BF%90%E8%A1%8C%E6%97%A5%E6%9C%9F/</link><guid isPermaLink="true">https://blog.mailset.top/%E5%9C%A8%E4%BD%A0%E7%9A%84%E7%BD%91%E7%AB%99%E4%B8%8B%E9%9D%A2%E5%8A%A0%E4%B8%8A%E8%BF%90%E8%A1%8C%E6%97%A5%E6%9C%9F/</guid><pubDate>Mon, 05 Feb 2024 12:00:00 GMT</pubDate><content:encoded>&lt;p&gt;交换友链的时候突然看到了这个问题&lt;/p&gt;
&lt;p&gt;对了你下面那个《已运行x天x时x秒》怎么做的，求求&lt;/p&gt;
&lt;p&gt;就在这里简单写一个教程吧&lt;/p&gt;
&lt;h2&gt;须知&lt;/h2&gt;
&lt;p&gt;此教程主要适用于Hexo，其他框架未经测试&lt;/p&gt;
&lt;h2&gt;JS&lt;/h2&gt;
&lt;p&gt;在&lt;code&gt;source&lt;/code&gt;文件夹下创建&lt;code&gt;js&lt;/code&gt;文件夹，并创建文件&lt;code&gt;custom.js&lt;/code&gt;，文件内容如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;var now = new Date(); 
    function createtime() { 
        var grt= new Date(&quot;02/05/2024 14:00:00&quot;);//在此处修改你的建站时间
        now.setTime(now.getTime()+250); 
        days = (now - grt ) / 1000 / 60 / 60 / 24; dnum = Math.floor(days); 
        hours = (now - grt ) / 1000 / 60 / 60 - (24 * dnum); hnum = Math.floor(hours); 
        if(String(hnum).length ==1 ){hnum = &quot;0&quot; + hnum;} minutes = (now - grt ) / 1000 /60 - (24 * 60 * dnum) - (60 * hnum); 
        mnum = Math.floor(minutes); if(String(mnum).length ==1 ){mnum = &quot;0&quot; + mnum;} 
        seconds = (now - grt ) / 1000 - (24 * 60 * 60 * dnum) - (60 * 60 * hnum) - (60 * mnum); 
        snum = Math.round(seconds); if(String(snum).length ==1 ){snum = &quot;0&quot; + snum;} 
        document.getElementById(&quot;timeDate&quot;).innerHTML = &quot;已运行 &quot;+dnum+&quot; 天 &quot;; 
        document.getElementById(&quot;times&quot;).innerHTML = hnum + &quot; 小时 &quot; + mnum + &quot; 分 &quot; + snum + &quot; 秒&quot;; 
    } 
setInterval(&quot;createtime()&quot;,250);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;之后，打开&lt;code&gt;_config.你的theme.yml&lt;/code&gt;文件，寻找&lt;code&gt;custom_js&lt;/code&gt;或类似的配置，修改为 &lt;code&gt;/js/custom.js&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;接着，寻找&lt;code&gt;footer&lt;/code&gt;或类似的配置，加上&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;br /&amp;gt;&amp;lt;div&amp;gt;
    &amp;lt;span id=&quot;timeDate&quot;&amp;gt;载入天数...&amp;lt;/span&amp;gt;&amp;lt;span id=&quot;times&quot;&amp;gt;载入时分秒...&amp;lt;/span&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;就可以了&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;参考自：&lt;a href=&quot;https://blog.csdn.net/wangqingchuan92/article/details/126346205&quot;&gt;https://blog.csdn.net/wangqingchuan92/article/details/126346205&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>AList设置https</title><link>https://blog.mailset.top/alist%E8%AE%BE%E7%BD%AEhttps/</link><guid isPermaLink="true">https://blog.mailset.top/alist%E8%AE%BE%E7%BD%AEhttps/</guid><pubDate>Mon, 05 Feb 2024 11:00:00 GMT</pubDate><content:encoded>&lt;p&gt;看了很多教程，要不就是nginx反代要不就是宝塔，想着出一篇简单的教程&lt;/p&gt;
&lt;p&gt;接上文，在letsencrypt&lt;s&gt;白嫖了&lt;/s&gt;申请了自己域名的证书之后，自己Alist网盘的https改怎么设置呢？&lt;/p&gt;
&lt;h3&gt;DDNS&lt;/h3&gt;
&lt;p&gt;会弄AList的人大多数也会DDNS了，但在这里我还是向大家推荐一个软件：DDNS-GO，具体就请自己搜索了&lt;/p&gt;
&lt;h3&gt;配置&lt;/h3&gt;
&lt;p&gt;注意：以下方法仅适用于Linux（因为我没有在Windows下使用过AList，更不知道这东西在Windows下的配置文件在哪里，能找到的话可以自己试试看）&lt;/p&gt;
&lt;p&gt;首先，打开命令行，切换到root用户&lt;/p&gt;
&lt;p&gt;如果你是使用一键脚本安装的AList的话，那么他的配置文件大概率在&lt;code&gt;/opt/alist/data&lt;/code&gt;目录下，这个目录没有root权限是进不去的&lt;/p&gt;
&lt;p&gt;之后，打开文件&lt;code&gt;/opt/alist/data/config.json&lt;/code&gt;，其中有如下内容：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&quot;scheme&quot;: {
    &quot;address&quot;: &quot;0.0.0.0&quot;,
    &quot;http_port&quot;: 5244,
    &quot;https_port&quot;: -1,
    &quot;force_https&quot;: false,
    &quot;cert_file&quot;: &quot;&quot;,
    &quot;key_file&quot;: &quot;&quot;,
    &quot;unix_file&quot;: &quot;&quot;,
    &quot;unix_file_perm&quot;: &quot;&quot;
  }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;你可能注意到了，其中有 cert_file和key_file两条配置，正对应着上次申请证书最后输出的&lt;code&gt;Certificate is saved at:&lt;/code&gt;和&lt;code&gt;Key is saved at:&lt;/code&gt;，把后面的文件路径填进去，就配置好证书文件了&lt;/p&gt;
&lt;p&gt;但是，先别急着restart，这个&lt;code&gt;https_port&lt;/code&gt;还是-1呢，你可以把他变成你想要的数字，像我就把&lt;code&gt;http_port&lt;/code&gt;换成了5243，&lt;code&gt;https_port&lt;/code&gt;换成了5244，对于我这种记不住端口号的人十分友好&lt;/p&gt;
&lt;p&gt;如果你想要强制使用https，也可以把下面的&lt;code&gt;force_https&lt;/code&gt;改为true，不过我倒是没有开，如果哪天https端口炸了。。。&lt;/p&gt;
&lt;h3&gt;启用&lt;/h3&gt;
&lt;p&gt;大功告成！使用下面的命令重新启动AList&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;systemctl restart alist
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;享受有着SSL/TLS加持的AList吧&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;如果觉得对你有用的话，欢迎到处转发，有什么问题还可以在下面问我&lt;/p&gt;
</content:encoded></item><item><title>letsencrypt免费证书申请--Certbot</title><link>https://blog.mailset.top/letsencrypt%E5%85%8D%E8%B4%B9%E8%AF%81%E4%B9%A6%E7%94%B3%E8%AF%B7-certbot/</link><guid isPermaLink="true">https://blog.mailset.top/letsencrypt%E5%85%8D%E8%B4%B9%E8%AF%81%E4%B9%A6%E7%94%B3%E8%AF%B7-certbot/</guid><pubDate>Mon, 05 Feb 2024 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;刚才找了半天教程找不到，在这里分享一下&lt;/p&gt;
&lt;h3&gt;安装 Certbot&lt;/h3&gt;
&lt;p&gt;如果你用的是ArchLinux，那么可以通过下面的命令直接安装&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo pacman -S certbot
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果你用的是其他发行版/MacOS/Windows，那么请访问&lt;a href=&quot;https://certbot.eff.org/&quot;&gt;https://certbot.eff.org/&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;申请证书&lt;/h3&gt;
&lt;p&gt;打开终端，输入下面的命令（适用于Linux，Windows用户请去掉sudo）&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo certbot certonly -d &quot;你的域名&quot; --manual --preferred-challenges dns-01
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;域名样例： 泛域名：*.mailset.top 单个域名：mailset.top/www.mailset.top&lt;/p&gt;
&lt;p&gt;如果你是第一次申请，前面两个问题均输入Y即可&lt;/p&gt;
&lt;p&gt;之后，会有输出如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Please deploy a DNS TXT record under the name:

_acme-challenge.你的网址.

with the following value:

要添加的记录

Before continuing, verify the TXT record has been deployed. Depending on the DNS
provider, this may take some time, from a few seconds to multiple minutes. You can
check if it has finished deploying with aid of online tools, such as the Google
Admin Toolbox: https://toolbox.googleapps.com/apps/dig/#TXT/_acme-challenge.mailset.top.
Look for one or more bolded line(s) below the line &apos;;ANSWER&apos;. It should show the
value(s) you&apos;ve just added.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这时你先别急着回车，先访问你的dns提供商， 在 _acme-challenge.你的网址 添加一个 TXT 记录，内容为上文 要添加记录 中的内容&lt;/p&gt;
&lt;p&gt;添加之后，可以先nslookup一下看看是否成功添加，之后再按回车确认&lt;/p&gt;
&lt;p&gt;如果成功，下文会输出证书的地址，直接用即可&lt;/p&gt;
&lt;h3&gt;建议&lt;/h3&gt;
&lt;p&gt;第一次使用可以在certbot命令的参数加上 --dry-run，因为一个月同一个域名申请证书的机会是有限的，要是几次验证全没过。。。&lt;/p&gt;
&lt;p&gt;之后就可以去掉 --dry-run，让它实际的申请证书了&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;一会儿再写一个alist证书设置，希望对你有用（&lt;/p&gt;
&lt;p&gt;有什么疑问欢迎在下面提问&lt;/p&gt;
</content:encoded></item></channel></rss>