<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>NESNILNEHC 的个人网站</title>
    <description>围绕软件工程、开发工具与技术表达，记录可复用的判断、经过验证的实践和可检查的成果。</description>
    <link>https://nesnilnehc.top/</link>
    <atom:link href="https://nesnilnehc.top/feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Thu, 25 Jun 2026 02:53:54 +0000</pubDate>
    <lastBuildDate>Thu, 25 Jun 2026 02:53:54 +0000</lastBuildDate>
    <generator>Jekyll v3.10.0</generator>
    
      <item>
        <title>每周见闻（2025 年第 4 期）</title>
        <description>&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;本期要点&lt;/strong&gt;&lt;/p&gt;

  &lt;ul&gt;
    &lt;li&gt;本周推荐一个在线工具，可以查询您的本地公网 IP：&lt;a href=&quot;https://cip.cc/&quot;&gt;https://cip.cc/&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;工具&quot;&gt;工具&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;查询本地公网 IP 的工具：&lt;a href=&quot;https://cip.cc/&quot;&gt;https://cip.cc/&lt;/a&gt;。除了通过浏览器直接访问使用，还可以通过终端查询：&lt;/p&gt;

    &lt;p&gt;&lt;strong&gt;命令行查询&lt;/strong&gt;:&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;UNIX/Linux: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;# curl cip.cc&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;Windows: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;gt; telnet cip.cc&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;Windows: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;gt; ftp cip.cc&lt;/code&gt;&lt;/li&gt;
    &lt;/ul&gt;

    &lt;p&gt;&lt;strong&gt;命令行查询 (纯 ip)&lt;/strong&gt;:&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;UNIX/Linux: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;# curl ip.cip.cc&lt;/code&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;
</description>
        <pubDate>Mon, 27 Jan 2025 06:26:00 +0000</pubDate>
        <link>https://nesnilnehc.top/news/2025/01/27/weekly-digest.html</link>
        <guid isPermaLink="true">https://nesnilnehc.top/news/2025/01/27/weekly-digest.html</guid>
        
        <category>网络工具</category>
        
        <category>IP</category>
        
        <category>命令行</category>
        
        
        <category>news</category>
        
      </item>
    
      <item>
        <title>使用 PlantUML、Mermaid、Flowchart 和 Graphviz 绘制技术图表</title>
        <description>&lt;h1 id=&quot;使用-plantumlmermaidflowchart-和-graphviz-绘制技术图表&quot;&gt;使用 PlantUML、Mermaid、Flowchart 和 Graphviz 绘制技术图表&lt;/h1&gt;

&lt;p&gt;在现代软件开发和项目管理中，“图”并不只有流程图。需求分析阶段会用用户旅程图、状态图和决策树；架构设计阶段会用组件图、部署图、C4 图和依赖图；研发协作阶段会用时序图、甘特图、看板、Git 分支图和因果分析图。&lt;/p&gt;

&lt;p&gt;这篇文章的主旨是：&lt;strong&gt;先判断要表达哪类关系，再选择合适的图，最后才选择绘图工具。&lt;/strong&gt; 工具只是落地方式，图的类型才决定表达是否准确。&lt;/p&gt;

&lt;p&gt;本文结构如下：&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;先给出快速结论，方便直接选图和选工具。&lt;/li&gt;
  &lt;li&gt;再说明如何根据表达目标选择图类型。&lt;/li&gt;
  &lt;li&gt;然后比较 PlantUML、Mermaid、flowchart.js 和 Graphviz 的能力边界。&lt;/li&gt;
  &lt;li&gt;最后给出落地使用建议和一个 PlantUML 活动图示例。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;本文聚焦四类常见的文本绘图工具：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;PlantUML&lt;/strong&gt;：偏软件工程建模，尤其适合 UML、架构、业务流程、数据结构和工程交付物。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Mermaid&lt;/strong&gt;：偏 Markdown 文档内嵌，适合快速表达流程、时序、状态、ER、甘特、看板、图表和轻量架构。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;flowchart.js&lt;/strong&gt;：只做简单流程图，语法直观，适合浏览器里快速渲染标准流程。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Graphviz&lt;/strong&gt;：偏通用图布局引擎，适合依赖关系、网络拓扑、调用图、状态空间、知识图谱等节点和边很多的图。&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;结论摘要&quot;&gt;结论摘要&lt;/h2&gt;

&lt;p&gt;如果只想快速决策，可以先记住两句话：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;不确定用什么图时，先问：我要表达的是&lt;strong&gt;顺序、交互、状态、结构、部署、时间、层级、复杂关系，还是数据&lt;/strong&gt;。&lt;/li&gt;
  &lt;li&gt;不确定用什么工具时，默认 Mermaid；需要严谨工程模型用 PlantUML；节点关系太复杂用 Graphviz；只做简单网页流程图再考虑 flowchart.js。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;精简速查：&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;场景&lt;/th&gt;
      &lt;th&gt;图类型&lt;/th&gt;
      &lt;th&gt;工具&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;讲顺序&lt;/td&gt;
      &lt;td&gt;流程图、活动图&lt;/td&gt;
      &lt;td&gt;Mermaid、PlantUML&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;讲交互&lt;/td&gt;
      &lt;td&gt;时序图&lt;/td&gt;
      &lt;td&gt;PlantUML、Mermaid&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;讲状态&lt;/td&gt;
      &lt;td&gt;状态图&lt;/td&gt;
      &lt;td&gt;PlantUML、Mermaid&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;讲结构&lt;/td&gt;
      &lt;td&gt;C4 图、组件图、类图、ER 图&lt;/td&gt;
      &lt;td&gt;PlantUML、Mermaid&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;讲部署和网络&lt;/td&gt;
      &lt;td&gt;部署图、拓扑图、依赖图&lt;/td&gt;
      &lt;td&gt;PlantUML、Graphviz&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;讲计划&lt;/td&gt;
      &lt;td&gt;甘特图、时间线&lt;/td&gt;
      &lt;td&gt;Mermaid、PlantUML&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;讲拆解&lt;/td&gt;
      &lt;td&gt;WBS、Mindmap、TreeView&lt;/td&gt;
      &lt;td&gt;PlantUML、Mermaid&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;讲复杂关系&lt;/td&gt;
      &lt;td&gt;有向图、无向图、知识图谱&lt;/td&gt;
      &lt;td&gt;Graphviz&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;讲数值&lt;/td&gt;
      &lt;td&gt;Sankey、XY Chart、Radar、Treemap&lt;/td&gt;
      &lt;td&gt;Mermaid&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h2 id=&quot;第一步选图&quot;&gt;第一步：选图&lt;/h2&gt;

&lt;p&gt;选图的核心是判断“关系类型”。一张好图只回答一个主要问题：顺序、交互、状态、结构、部署、时间、层级、关系或数据。不要让一张图同时承担所有解释任务。&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;想表达的问题&lt;/th&gt;
      &lt;th&gt;推荐图类型&lt;/th&gt;
      &lt;th&gt;适合场景&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;事情怎么一步步发生&lt;/td&gt;
      &lt;td&gt;流程图、活动图、用户旅程图&lt;/td&gt;
      &lt;td&gt;业务流程、审批流、研发流程、用户操作路径&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;谁和谁按什么顺序交互&lt;/td&gt;
      &lt;td&gt;时序图&lt;/td&gt;
      &lt;td&gt;接口调用、登录认证、支付链路、消息队列、异步回调&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;对象有哪些状态，如何迁移&lt;/td&gt;
      &lt;td&gt;状态图&lt;/td&gt;
      &lt;td&gt;订单、工单、任务、设备、账号、连接会话生命周期&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;系统由哪些部分组成&lt;/td&gt;
      &lt;td&gt;C4 图、组件图、架构图&lt;/td&gt;
      &lt;td&gt;系统上下文、服务边界、模块职责、平台架构&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;代码或领域对象如何关联&lt;/td&gt;
      &lt;td&gt;类图、对象图、ER 图&lt;/td&gt;
      &lt;td&gt;领域模型、数据库表关系、对象结构&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;服务部署在哪里，网络如何连接&lt;/td&gt;
      &lt;td&gt;部署图、网络拓扑图、依赖图&lt;/td&gt;
      &lt;td&gt;生产部署、服务拓扑、上下游影响分析&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;时间计划和里程碑如何安排&lt;/td&gt;
      &lt;td&gt;甘特图、时间线、Chronology&lt;/td&gt;
      &lt;td&gt;项目计划、版本路线、事件复盘&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;任务或知识如何拆解&lt;/td&gt;
      &lt;td&gt;WBS、Mindmap、TreeView、文件树&lt;/td&gt;
      &lt;td&gt;需求拆解、任务拆解、知识整理、目录展示&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;很多节点之间有什么关系&lt;/td&gt;
      &lt;td&gt;有向图、无向图、知识图谱&lt;/td&gt;
      &lt;td&gt;包依赖、调用关系、资源关系、状态空间&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;数量、流量或比例如何变化&lt;/td&gt;
      &lt;td&gt;Sankey、Pie、XY Chart、Radar、Treemap&lt;/td&gt;
      &lt;td&gt;流量流向、指标趋势、能力对比、结构占比&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;选图时还要考虑读者和抽象层级：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;面向业务方：少节点、少术语，优先流程图、用户旅程图、时间线。&lt;/li&gt;
  &lt;li&gt;面向研发团队：保留服务名、接口名、状态名和异常分支，优先 C4 图、组件图、时序图、状态图。&lt;/li&gt;
  &lt;li&gt;面向运维和排障：强调部署位置、网络连接、依赖关系和调用链，优先拓扑图、部署图、依赖图。&lt;/li&gt;
  &lt;li&gt;面向长期维护：节点命名要稳定，避免跟随临时代码变量频繁变化。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;如果只是字段清单、接口参数、简单对比，表格通常比图更清楚。只有当“关系、顺序、层级、依赖、状态迁移或数量流向”是重点时，图才真正有价值。&lt;/p&gt;

&lt;h2 id=&quot;第二步选工具&quot;&gt;第二步：选工具&lt;/h2&gt;

&lt;p&gt;选工具时，不要只看“能不能画”，还要看文档平台是否支持、团队是否熟悉、图是否会长期维护、是否需要 CI 渲染或校验。&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;工具&lt;/th&gt;
      &lt;th&gt;能力范围&lt;/th&gt;
      &lt;th&gt;最适合的图&lt;/th&gt;
      &lt;th&gt;优点&lt;/th&gt;
      &lt;th&gt;局限&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;PlantUML&lt;/td&gt;
      &lt;td&gt;UML、架构、流程、计划、数据结构&lt;/td&gt;
      &lt;td&gt;UML、C4、活动图、组件图、部署图&lt;/td&gt;
      &lt;td&gt;工程语义强，适合正式设计文档&lt;/td&gt;
      &lt;td&gt;语法体系较大，环境依赖 Java/渲染器&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Mermaid&lt;/td&gt;
      &lt;td&gt;Markdown 内嵌的多类型图表&lt;/td&gt;
      &lt;td&gt;流程图、时序图、ER、甘特、看板、轻量架构&lt;/td&gt;
      &lt;td&gt;文档平台支持广，上手快&lt;/td&gt;
      &lt;td&gt;复杂图控制力有限，不同平台支持版本可能不同&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;flowchart.js&lt;/td&gt;
      &lt;td&gt;标准流程图&lt;/td&gt;
      &lt;td&gt;简单业务流程、判断流程&lt;/td&gt;
      &lt;td&gt;DSL 简单，浏览器集成容易&lt;/td&gt;
      &lt;td&gt;只适合流程图&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Graphviz&lt;/td&gt;
      &lt;td&gt;通用图布局&lt;/td&gt;
      &lt;td&gt;依赖图、网络图、拓扑图、大规模关系图&lt;/td&gt;
      &lt;td&gt;布局引擎强，适合复杂节点关系&lt;/td&gt;
      &lt;td&gt;语义不如 UML 工具明确，样式调优需要经验&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;工具选择建议：&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;README、博客、知识库、轻量方案，优先 Mermaid。&lt;/li&gt;
  &lt;li&gt;正式设计文档、UML、C4、部署、状态、活动图，优先 PlantUML。&lt;/li&gt;
  &lt;li&gt;依赖图、拓扑图、调用图、大规模节点关系，优先 Graphviz。&lt;/li&gt;
  &lt;li&gt;网页里只展示简单标准流程图，并且不需要其他图类型，可以用 flowchart.js。&lt;/li&gt;
  &lt;li&gt;团队已有统一文档平台时，先看平台支持的渲染版本。Mermaid 尤其要注意版本差异。&lt;/li&gt;
  &lt;li&gt;图会长期维护时，优先选择文本 DSL 清晰、团队熟悉、CI 能渲染或校验的工具。&lt;/li&gt;
  &lt;li&gt;一张图超过一个屏幕还看不清时，不要继续调样式，应该拆图。常见拆法是“业务流程图 + C4/组件图 + 时序图 + 部署图”。&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;工具能力&quot;&gt;工具能力&lt;/h2&gt;

&lt;h3 id=&quot;plantuml&quot;&gt;PlantUML&lt;/h3&gt;

&lt;p&gt;PlantUML 早期以 UML 出名，但现在已经是比较完整的工程图 DSL。它适合写进设计文档、架构决策记录、需求说明和接口文档。&lt;/p&gt;

&lt;p&gt;PlantUML 适合绘制：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;UML 图&lt;/strong&gt;：时序图、用例图、类图、对象图、活动图、组件图、部署图、状态图、时序约束图。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;架构和建模图&lt;/strong&gt;：C4 图、Archimate、实体关系图、信息工程 IE 图、Chen ER 图。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;流程和计划图&lt;/strong&gt;：活动图、甘特图、Chronology、WBS、MindMap。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;工程辅助图&lt;/strong&gt;：网络图、文件树、JSON/YAML 数据结构、EBNF、正则表达式、Wireframe/UI Mockup、Ditaa、SDL、数学公式。&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;mermaid&quot;&gt;Mermaid&lt;/h3&gt;

&lt;p&gt;Mermaid 的优势是贴近 Markdown。GitHub、GitLab、Obsidian、语雀、很多文档平台和静态站点都能直接或通过插件渲染 Mermaid。Mermaid 当前支持的类型已经很多，不再只是流程图和时序图。&lt;/p&gt;

&lt;p&gt;Mermaid 适合绘制：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;软件设计图&lt;/strong&gt;：Flowchart、Sequence Diagram、Class Diagram、State Diagram、Entity Relationship Diagram、Requirement Diagram、C4 Diagram、Architecture Diagram、Packet、Block Diagram。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;项目和协作图&lt;/strong&gt;：User Journey、Gantt、Timeline、Kanban、GitGraph、Mindmaps。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;分析和数据图&lt;/strong&gt;：Pie Chart、Quadrant Chart、Sankey、XY Chart、Radar、Treemap、Venn、Ishikawa、Wardley Map。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;建模补充&lt;/strong&gt;：ZenUML、Event Modeling、TreeView。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;实践注意：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Mermaid 很适合“够用即可”的图，不适合把复杂架构画到像专业制图软件一样精细。&lt;/li&gt;
  &lt;li&gt;新版本 Mermaid 支持为部分图选择布局和外观，例如 flowchart 和 state diagram 可使用 Dagre 或 ELK 布局；复杂流程图可尝试 ELK 减少线条交叉。&lt;/li&gt;
  &lt;li&gt;写 Mermaid 时避免节点文字裸写特殊词和复杂符号。比如流程图里的 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;end&lt;/code&gt; 容易被解析器误解，稳妥做法是给文本加引号。&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;flowchartjs&quot;&gt;flowchart.js&lt;/h3&gt;

&lt;p&gt;这里的 flowchart.js 不是通用绘图语言，而是一个专门画简单流程图的浏览器/终端 SVG 渲染器。&lt;/p&gt;

&lt;p&gt;flowchart.js 适合绘制：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;开始/结束节点。&lt;/li&gt;
  &lt;li&gt;普通操作节点。&lt;/li&gt;
  &lt;li&gt;输入、输出、输入输出节点。&lt;/li&gt;
  &lt;li&gt;子流程节点。&lt;/li&gt;
  &lt;li&gt;条件判断节点。&lt;/li&gt;
  &lt;li&gt;并行节点。&lt;/li&gt;
  &lt;li&gt;带方向的连线。&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;graphviz&quot;&gt;Graphviz&lt;/h3&gt;

&lt;p&gt;Graphviz 的重点不是某一种业务图，而是把节点和边自动布局。它用 DOT 语言描述有向图、无向图、子图和集群，再通过不同布局引擎生成图。&lt;/p&gt;

&lt;p&gt;Graphviz 适合绘制：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;有向依赖图&lt;/strong&gt;：模块依赖、包依赖、构建依赖、任务 DAG、调用链。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;无向关系图&lt;/strong&gt;：社交网络、知识图谱、资源关联、实体关系探索。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;层级图&lt;/strong&gt;：组织结构、决策树、有限状态空间、编译器 AST。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;网络拓扑图&lt;/strong&gt;：服务节点、路由关系、集群连接。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;复杂集群图&lt;/strong&gt;：按子系统、团队、服务边界分组的大图。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Graphviz 的布局引擎决定了图的气质：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dot&lt;/code&gt;：层级/分层有向图，适合依赖图、流程 DAG、调用链。&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;neato&lt;/code&gt;：弹簧模型布局，适合一般网络关系。&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;fdp&lt;/code&gt;：力导向布局，适合无向图。&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sfdp&lt;/code&gt;：可扩展力导向布局，适合大规模图。&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;circo&lt;/code&gt;：环形布局，适合循环关系。&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;twopi&lt;/code&gt;：径向布局，适合中心向外扩散的关系。&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;osage&lt;/code&gt;：集群图布局，适合分组明显的图。&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;patchwork&lt;/code&gt;：矩形树图，适合按权重展示分组面积。&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;落地使用&quot;&gt;落地使用&lt;/h2&gt;

&lt;h3 id=&quot;编辑和预览&quot;&gt;编辑和预览&lt;/h3&gt;

&lt;p&gt;在实践中，可以通过下面几种方式使用这些绘图工具：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Visual Studio Code&lt;/strong&gt;：PlantUML 插件可以实时预览 UML 图；Markdown Preview Mermaid Support 支持在 Markdown 中预览 Mermaid 图。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;语雀、Obsidian、GitHub、GitLab 等文档平台&lt;/strong&gt;：适合直接在文档里嵌入 Mermaid；使用前要确认平台支持的 Mermaid 版本。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;命令行和 CI&lt;/strong&gt;：适合将 PlantUML、Mermaid CLI 或 Graphviz 加入构建流程，保证图能随文档一起生成和检查。&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;写作建议&quot;&gt;写作建议&lt;/h3&gt;

&lt;ol&gt;
  &lt;li&gt;一张图只回答一个核心问题。&lt;/li&gt;
  &lt;li&gt;图名要描述结论，而不只是描述类型，例如“订单状态流转图”比“状态图”更清楚。&lt;/li&gt;
  &lt;li&gt;节点名要稳定，尽量使用业务概念或系统边界，不要使用临时变量名。&lt;/li&gt;
  &lt;li&gt;大图要拆分：业务流程、系统结构、接口交互、部署拓扑分别画。&lt;/li&gt;
  &lt;li&gt;复杂图要配合文字解释，不要让读者自己猜重点。&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;示例&quot;&gt;示例&lt;/h2&gt;

&lt;p&gt;下面是一个 PlantUML 活动图示例，用于表达软件研发流程。这个例子适合展示“流程推进 + 并行活动 + 关键交付物”，因此用活动图比单纯的节点关系图更合适。&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;language-puml&quot;&gt;@startuml
skinparam defaultTextAlignment left
skinparam noteBackgroundColor #F9F9F9
skinparam noteBorderColor #CCCCCC

title 软件研发流程

:需求收集;
note right
    **关键活动:**
    1. 收集产品需求
    2. 进行市场分析
    3. 进行用户反馈
end note
note left
    **交付物:**
    1. 用户故事
    2. 需求池
end note

:迭代规划;
note right
    **关键活动:**
    1. 讨论需求
    2. 组织需求讨论会
    3. 分析市场数据
    4. 制定迭代计划
end note
note left
    **交付物:**
    1. 迭代路线图
    2. 下个迭代计划
end note

:设计;
note right
    **关键活动:**
    1. 制定系统架构
    2. 设计 *
    3. 小规模评审（产品内部）*
    4. 大规模评审 *
    5. 迭代启动会 *
end note
note left
    **交付物:**
    1. 设计文档
      - 业务流程图
      - 实体设计
      - 原型和平面设计
      - 开放接口设计
      - 作业设计
      - 系统参数设计
    2. 产品原型
end note

split
    :开发;
    note right
        **关键活动:**
        1. 开发任务拆解会 *
        2. 编写代码
        3. 进行单元测试
        4. 进行代码审查
    end note
    note left
        **交付物:**
        1. 可运行的软件代码
    end note
split again
    :测试;
    note right
        **关键活动:**
        1. 测试任务拆解会 *
        2. 制定测试计划 *
        3. 撰写测试用例 *
        4. 测试用例评审 *
        5. 执行功能测试 *
        6. 执行接口测试 *
        7. 执行性能测试
        8. 执行安全测试 *
        9. 执行 UI 测试 *
        10. 执行兼容性测试
        11. 执行回归测试 *
    end note
    note left
        **交付物:**
        1. 测试报告
        2. 缺陷跟踪列表
    end note
end split

:验收发布;
note right
    **关键活动:**
    1. 对软件进行最终的验收
    2. 准备发布所需的文档和材料
    3. 将经过测试的产品发布给用户
    4. 进行后续的用户支持和反馈收集
    5. 迭代评审会 *
end note
note left
    **交付物:**
    1. 发布的软件产品
    2. 相关文档
end note

:部署;
note right
    **关键活动:**
    1. 部署软件产品到生产环境中
end note

@enduml
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;效果图：
&lt;img src=&quot;/assets/images/tech/1.png&quot; alt=&quot;1.png&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;参考资料&quot;&gt;参考资料&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/plantuml/plantuml#%EF%B8%8F-supported-diagram-types&quot;&gt;PlantUML 支持的图类型&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://mermaid.ai/open-source/intro/syntax-reference.html&quot;&gt;Mermaid Diagram Syntax&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://graphviz.org/doc/info/lang.html&quot;&gt;Graphviz DOT Language&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://graphviz.org/docs/layouts/&quot;&gt;Graphviz Layout Engines&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/adrai/flowchart.js/&quot;&gt;flowchart.js README&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        <pubDate>Sun, 26 Jan 2025 06:00:00 +0000</pubDate>
        <link>https://nesnilnehc.top/tech/using-plantuml-mermaid-flowchart-and-graphviz/</link>
        <guid isPermaLink="true">https://nesnilnehc.top/tech/using-plantuml-mermaid-flowchart-and-graphviz/</guid>
        
        <category>PlantUML</category>
        
        <category>Mermaid</category>
        
        <category>Flowchart</category>
        
        <category>Graphviz</category>
        
        
        <category>tech</category>
        
      </item>
    
      <item>
        <title>每周见闻（2025 年第 2 期）</title>
        <description>&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;本期要点&lt;/strong&gt;&lt;/p&gt;

  &lt;ul&gt;
    &lt;li&gt;MasterGo AI：快速生成网页设计图 AI 工具&lt;/li&gt;
    &lt;li&gt;Trae AI v1.0.0：引入 Builder 模式的智能开发助手&lt;/li&gt;
  &lt;/ul&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;工具&quot;&gt;工具&lt;/h2&gt;

&lt;h3 id=&quot;mastergo-ai快速生成网页设计图-ai-工具&quot;&gt;MasterGo AI：快速生成网页设计图 AI 工具&lt;/h3&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/20250120/1.png&quot; alt=&quot;1.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;MasterGo AI 是一款网页在线设计工具，融合了 AI+ 设计系统，能够根据网页产品描述快速生成网页设计图。它为产品经理、设计师和开发团队提供了从概念到产品的完整解决方案，显著提升设计效率、激发创意灵感、优化设计流程并促进团队协作。&lt;/p&gt;

&lt;p&gt;&lt;em&gt;消息来源：&lt;a href=&quot;https://juejin.cn/post/7441231092226572307&quot;&gt;稀土掘金&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h3 id=&quot;trae-ai-v100引入-builder-模式的智能开发助手&quot;&gt;Trae AI v1.0.0：引入 Builder 模式的智能开发助手&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;2025 年 1 月 20 日&lt;/em&gt; - Trae AI 发布了 v1.0.0 版本，引入全新的 Builder 模式，支持自动化分析、规划、执行开发需求，并提供实时预览。该版本通过 Builder 模式实现了智能化的开发流程，为开发者带来更高效的编程体验。&lt;/p&gt;

&lt;p&gt;&lt;em&gt;消息来源：&lt;a href=&quot;https://docs.trae.ai/docs/changelog?_lang=en&quot;&gt;Trae AI 更新日志&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
</description>
        <pubDate>Mon, 20 Jan 2025 06:26:00 +0000</pubDate>
        <link>https://nesnilnehc.top/news/2025/01/20/weekly-digest.html</link>
        <guid isPermaLink="true">https://nesnilnehc.top/news/2025/01/20/weekly-digest.html</guid>
        
        <category>AI</category>
        
        <category>MasterGo</category>
        
        <category>Trae</category>
        
        
        <category>news</category>
        
      </item>
    
      <item>
        <title>Mac 卸载应用后打开方式菜单残留问题的解决方法</title>
        <description>&lt;p&gt;在 Mac 上卸载应用程序后，有时会发现在右键菜单的”打开方式”中仍然存在已卸载的应用。这是因为 Launch Services 数据库中保留了这些应用的记录。本文介绍如何通过重置 Launch Services 数据库来解决这个问题。&lt;/p&gt;

&lt;h2 id=&quot;什么是-launch-services&quot;&gt;什么是 Launch Services？&lt;/h2&gt;

&lt;p&gt;Launch Services 是 macOS 的一个系统服务，负责管理应用程序和文件类型之间的关联关系。它维护着”打开方式”菜单中的应用程序列表，当这个数据库出现问题时，可能会导致已卸载的应用仍然显示在打开方式列表中。&lt;/p&gt;

&lt;h2 id=&quot;解决方法&quot;&gt;解决方法&lt;/h2&gt;

&lt;ol&gt;
  &lt;li&gt;打开 终端（Terminal）应用
    &lt;ul&gt;
      &lt;li&gt;使用 Spotlight（⌘ + 空格键）&lt;/li&gt;
      &lt;li&gt;输入”终端”或”Terminal”并回车&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;输入以下命令：&lt;/p&gt;

    &lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister &lt;span class=&quot;nt&quot;&gt;-kill&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-r&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-domain&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-domain&lt;/span&gt; system &lt;span class=&quot;nt&quot;&gt;-domain&lt;/span&gt; user
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;按回车执行命令
    &lt;ul&gt;
      &lt;li&gt;命令执行过程中可能需要等待一会儿&lt;/li&gt;
      &lt;li&gt;命令会重建 Launch Services 数据库&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;重启电脑
    &lt;ul&gt;
      &lt;li&gt;重启后，系统会使用新的 Launch Services 数据库&lt;/li&gt;
      &lt;li&gt;已卸载的应用应该不会再出现在打开方式列表中&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;命令说明&quot;&gt;命令说明&lt;/h2&gt;

&lt;p&gt;这个命令的各个参数的含义：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-kill&lt;/code&gt;：终止 Launch Services 数据库&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-r&lt;/code&gt;：递归扫描指定的域&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-domain local&lt;/code&gt;：扫描本地域&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-domain system&lt;/code&gt;：扫描系统域&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-domain user&lt;/code&gt;：扫描用户域&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;注意事项&quot;&gt;注意事项&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;这个操作是安全的，不会删除任何应用程序或文件&lt;/li&gt;
  &lt;li&gt;重建数据库后，系统可能需要重新扫描应用程序来建立文件关联&lt;/li&gt;
  &lt;li&gt;如果问题仍然存在，可以尝试重复这个过程&lt;/li&gt;
&lt;/ul&gt;
</description>
        <pubDate>Fri, 17 Jan 2025 03:00:57 +0000</pubDate>
        <link>https://nesnilnehc.top/tech/fix-mac-open-with-menu-after-uninstall/</link>
        <guid isPermaLink="true">https://nesnilnehc.top/tech/fix-mac-open-with-menu-after-uninstall/</guid>
        
        <category>macOS</category>
        
        <category>Launch Services</category>
        
        <category>故障排查</category>
        
        
        <category>tech</category>
        
      </item>
    
      <item>
        <title>每周见闻（2025 年第 1 期）</title>
        <description>&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;本期要点&lt;/strong&gt;&lt;/p&gt;

  &lt;ul&gt;
    &lt;li&gt;好大夫在线正式加入蚂蚁集团&lt;/li&gt;
    &lt;li&gt;京东健康发布医疗大模型产品体系”AI京医”&lt;/li&gt;
    &lt;li&gt;NVIDIA 发布基于 Grace Blackwell 架构的 Project DIGITS 个人 AI 超级计算机&lt;/li&gt;
    &lt;li&gt;清华智能产业研究院”Agent Hospital”首批 AI 医生上线内测&lt;/li&gt;
  &lt;/ul&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;新闻&quot;&gt;新闻&lt;/h2&gt;

&lt;h3 id=&quot;好大夫在线正式加入蚂蚁集团&quot;&gt;好大夫在线正式加入蚂蚁集团&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;2025-01-13，北京&lt;/em&gt; - 在 2025 中国好大夫峰会上，互联网医疗公司好大夫在线正式宣布加入蚂蚁集团。这是两家公司在 2024 年下半年被爆出收购消息之后的首次合体，意味着好大夫在线在成立 19 年之后正式归属于蚂蚁集团。&lt;/p&gt;

&lt;p&gt;主要亮点包括：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;加入原因&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;双方价值观一致&lt;/li&gt;
      &lt;li&gt;蚂蚁集团支付宝具备运营互联网医疗业务的能力和资源&lt;/li&gt;
      &lt;li&gt;支付宝已打开医保和商保的支付场景&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;未来发展&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;将加大技术领域研发投入和产品创新&lt;/li&gt;
      &lt;li&gt;全方位服务好医生群体和患者&lt;/li&gt;
      &lt;li&gt;活动现场发布了能帮助医生工作的AI助理产品&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;平台数据&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;目前已有 28 万名医生在平台注册&lt;/li&gt;
      &lt;li&gt;累计服务患者数量达 9100 万名&lt;/li&gt;
      &lt;li&gt;四大核心功能：患者管理、规范化管理、团队培养、科学研究&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;蚂蚁集团支付宝副总裁张俊杰表示，好大夫在线将作为支付宝数字医疗健康事业部的一个部门存在，未来将结合支付宝的技术和资源优势继续升级产品。&lt;/p&gt;

&lt;p&gt;&lt;em&gt;消息来源：&lt;a href=&quot;https://news.qq.com/rain/a/20250113A06DWL00&quot;&gt;界面新闻&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h3 id=&quot;京东健康发布医疗大模型产品体系ai京医&quot;&gt;京东健康发布医疗大模型产品体系”AI京医”&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;2025-01-11，北京&lt;/em&gt; - 京东健康正式发布医疗大模型产品体系”AI京医”。该产品体系包含两大核心产品：面向医生的 AI 诊疗助手 2.0 和面向科研人员的 AI 科研助手。&lt;/p&gt;

&lt;p&gt;AI 诊疗助手 2.0 具备以下特点：&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;支持全科室疾病诊疗知识问答&lt;/li&gt;
  &lt;li&gt;提供智能病历质控&lt;/li&gt;
  &lt;li&gt;辅助医生撰写病历、处方等医疗文书&lt;/li&gt;
  &lt;li&gt;为患者生成个性化健康教育方案&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;AI 科研助手则专注于以下功能：&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;智能文献检索与解读&lt;/li&gt;
  &lt;li&gt;临床研究方案设计&lt;/li&gt;
  &lt;li&gt;医学论文写作辅助&lt;/li&gt;
  &lt;li&gt;临床试验数据分析&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;京东健康表示，”AI京医”的发布将进一步提升医生线上执业效率，让患者获得更便捷、专业的医疗健康服务体验。&lt;/p&gt;

&lt;p&gt;&lt;em&gt;消息来源：&lt;a href=&quot;https://finance.china.com.cn/industry/medicine/20250111/6205219.shtml&quot;&gt;中国财经网&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h3 id=&quot;nvidia-project-digits首款基于-grace-blackwell-架构的个人-ai-超级计算机&quot;&gt;NVIDIA Project DIGITS：首款基于 Grace Blackwell 架构的个人 AI 超级计算机&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;2025-01-06，美国拉斯维加斯&lt;/em&gt; - NVIDIA 在 CES 2025 大会上发布了 &lt;a href=&quot;https://blogs.nvidia.cn/blog/nvidia-puts-grace-blackwell-on-every-desk-and-at-every-ai-developers-fingertips/&quot;&gt;Project DIGITS&lt;/a&gt;，这是首款面向个人用户的 AI 超级计算机，采用最新的 Grace Blackwell 架构。主要亮点包括：&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;strong&gt;性能突破&lt;/strong&gt;：单机算力突破 1000 TFLOPS，支持 200B 以上大模型本地部署&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;能效优化&lt;/strong&gt;：采用全新散热系统，整机功耗控制在 800W 以内&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;开发者友好&lt;/strong&gt;：预装 NVIDIA AI Enterprise 软件套件，支持主流深度学习框架&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;普惠定价&lt;/strong&gt;：起售价 9999 美元，面向个人开发者与中小企业用户&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;NVIDIA 表示，Project DIGITS 的发布将极大降低 AI 开发门槛，推动个人 AI 开发的普及。该产品计划于 2025 年第二季度正式发售。&lt;/p&gt;

&lt;p&gt;&lt;em&gt;消息来源：&lt;a href=&quot;https://blogs.nvidia.cn/blog/nvidia-puts-grace-blackwell-on-every-desk-and-at-every-ai-developers-fingertips/&quot;&gt;NVIDIA 中国博客&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2 id=&quot;近闻&quot;&gt;近闻&lt;/h2&gt;

&lt;h3 id=&quot;agent-hospital-首批-ai-医生上线内测&quot;&gt;Agent Hospital 首批 AI 医生上线内测&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;2024-11-18，北京&lt;/em&gt; - 清华大学智能产业研究院（AIR）智慧医疗团队开发的”紫荆 AI 医生”系统（Agent Hospital）已开启内部测试。系统目前已构建了超过 50 万个来自不同国家地区、覆盖各个年龄段、患有不同疾病的 AI 患者，以及 42 位 AI 医生。每个科室设置了 2 位 AI 医生，分别来自国内和国际，以适应不同国家和地区的诊断标准和治疗方案。&lt;/p&gt;

&lt;p&gt;系统设置了游客、患者和医生三种模式。目前游客模式对公众开放，患者模式仅对定向邀请的专业人士开放，医生模式正在开发中。系统对 AI 医生的核心能力进行了分类评估，包括诊断、治疗和对话三个方面，目前仅开放对 AI 医生诊断能力的测试。&lt;/p&gt;

&lt;p&gt;“紫荆 AI 医生”系统预计在 2025 年第一季度启动公开测试，并在 2025 年上半年对公众开放使用。目前系统已在&lt;a href=&quot;https://www.tairex.cn&quot;&gt;紫荆智康官网&lt;/a&gt;上线。&lt;/p&gt;

&lt;p&gt;&lt;em&gt;消息来源：&lt;a href=&quot;https://air.tsinghua.edu.cn/info/1007/2351.htm&quot;&gt;清华大学智能产业研究院&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
</description>
        <pubDate>Tue, 14 Jan 2025 06:26:00 +0000</pubDate>
        <link>https://nesnilnehc.top/news/2025/01/14/weekly-digest.html</link>
        <guid isPermaLink="true">https://nesnilnehc.top/news/2025/01/14/weekly-digest.html</guid>
        
        <category>AI</category>
        
        <category>NVIDIA</category>
        
        <category>医疗科技</category>
        
        
        <category>news</category>
        
      </item>
    
      <item>
        <title>Jekyll 博客优化指南：功能增强与用户体验改进</title>
        <description>&lt;h2 id=&quot;前言&quot;&gt;前言&lt;/h2&gt;

&lt;p&gt;在使用 Jekyll 搭建博客的过程中，经常需要添加一些基础功能和改进用户体验。本文记录了几个常用的优化配置，包括：&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;功能增强：搜索和订阅功能&lt;/li&gt;
  &lt;li&gt;布局优化：移动端适配&lt;/li&gt;
  &lt;li&gt;文档规范：统一的排版标准&lt;/li&gt;
  &lt;li&gt;性能优化：加载速度优化&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;目录&quot;&gt;目录&lt;/h2&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;a href=&quot;#功能增强&quot;&gt;功能增强&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#1-添加搜索功能&quot;&gt;添加搜索功能&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#2-配置-rss-订阅&quot;&gt;配置 RSS 订阅&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#布局优化&quot;&gt;布局优化&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#1-响应式设计&quot;&gt;响应式设计&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#2-侧边栏实现&quot;&gt;侧边栏实现&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#文档规范&quot;&gt;文档规范&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#1-中文排版规范&quot;&gt;中文排版规范&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#2-文件命名规范&quot;&gt;文件命名规范&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#性能优化&quot;&gt;性能优化&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#1-jekyll-配置优化&quot;&gt;Jekyll 配置优化&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;功能增强&quot;&gt;功能增强&lt;/h2&gt;

&lt;h3 id=&quot;1-添加搜索功能&quot;&gt;1. 添加搜索功能&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;目的&lt;/strong&gt;：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;在文章数量较多时，快速定位特定文章&lt;/li&gt;
  &lt;li&gt;按关键词查找相关内容&lt;/li&gt;
  &lt;li&gt;减少用户翻页次数&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;方案选择&lt;/strong&gt;：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Algolia Search：第三方搜索服务，每月有 10000 次免费搜索额度&lt;/li&gt;
  &lt;li&gt;Simple Jekyll Search：生成 JSON 索引文件，前端 JavaScript 实现搜索&lt;/li&gt;
  &lt;li&gt;Lunr.js：纯前端搜索，支持中文分词，适合小型博客&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;这里选择 Algolia Search 的原因：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;搜索速度快，支持实时搜索&lt;/li&gt;
  &lt;li&gt;自带分词功能，支持中文搜索&lt;/li&gt;
  &lt;li&gt;有开箱即用的 UI 组件&lt;/li&gt;
  &lt;li&gt;配置简单，维护成本低&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;实现步骤&lt;/strong&gt;：&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;安装依赖：&lt;/li&gt;
&lt;/ol&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c&quot;&gt;# 在 Gemfile 中添加&lt;/span&gt;
gem &lt;span class=&quot;s1&quot;&gt;&apos;jekyll-algolia&apos;&lt;/span&gt;

&lt;span class=&quot;c&quot;&gt;# 安装依赖&lt;/span&gt;
bundle &lt;span class=&quot;nb&quot;&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;ol&gt;
  &lt;li&gt;配置 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_config.yml&lt;/code&gt;：&lt;/li&gt;
&lt;/ol&gt;

&lt;div class=&quot;language-yaml highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;# 添加 Algolia 搜索配置&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;algolia&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;application_id&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;YOUR_APP_ID&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;index_name&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;YOUR_INDEX_NAME&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;search_only_api_key&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;YOUR_SEARCH_KEY&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;ol&gt;
  &lt;li&gt;创建搜索页面 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;search.html&lt;/code&gt;：&lt;/li&gt;
&lt;/ol&gt;

&lt;div class=&quot;language-html highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;---
layout: page
title: 搜索
---
&lt;span class=&quot;nt&quot;&gt;&amp;lt;div&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;id=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;search-searchbar&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;div&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;id=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;search-hits&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;2-配置-rss-订阅&quot;&gt;2. 配置 RSS 订阅&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;目的&lt;/strong&gt;：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;让用户通过 RSS 阅读器订阅博客更新&lt;/li&gt;
  &lt;li&gt;支持文章聚合到其他平台&lt;/li&gt;
  &lt;li&gt;提供标准的文章输出格式&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;方案选择&lt;/strong&gt;：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Jekyll Feed：Jekyll 官方插件，输出标准 RSS 2.0 格式&lt;/li&gt;
  &lt;li&gt;自定义 RSS 模板：可以自定义输出格式，但需要自己维护&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;选择 Jekyll Feed 的原因：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;配置简单，只需添加插件即可&lt;/li&gt;
  &lt;li&gt;自动处理文章更新&lt;/li&gt;
  &lt;li&gt;输出格式符合 RSS 标准&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;实现步骤&lt;/strong&gt;：&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;安装插件：&lt;/li&gt;
&lt;/ol&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c&quot;&gt;# 在 Gemfile 中添加&lt;/span&gt;
gem &lt;span class=&quot;s1&quot;&gt;&apos;jekyll-feed&apos;&lt;/span&gt;

&lt;span class=&quot;c&quot;&gt;# 安装依赖&lt;/span&gt;
bundle &lt;span class=&quot;nb&quot;&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;ol&gt;
  &lt;li&gt;更新 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_config.yml&lt;/code&gt;：&lt;/li&gt;
&lt;/ol&gt;

&lt;div class=&quot;language-yaml highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;na&quot;&gt;plugins&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;jekyll-feed&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;# RSS 配置&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;feed&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;feed.xml&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;posts_limit&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;20&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;布局优化&quot;&gt;布局优化&lt;/h2&gt;

&lt;h3 id=&quot;1-响应式设计&quot;&gt;1. 响应式设计&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;目的&lt;/strong&gt;：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;适配手机和平板等移动设备&lt;/li&gt;
  &lt;li&gt;确保文章在小屏幕上也能正常阅读&lt;/li&gt;
  &lt;li&gt;减少横向滚动&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;方案说明&lt;/strong&gt;：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;设置 viewport 确保正确缩放&lt;/li&gt;
  &lt;li&gt;使用相对单位适配不同屏幕&lt;/li&gt;
  &lt;li&gt;在小屏幕上调整导航栏和侧边栏位置&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;实现步骤&lt;/strong&gt;：&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;在 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_sass&lt;/code&gt; 目录下创建响应式样式文件：&lt;/li&gt;
&lt;/ol&gt;

&lt;div class=&quot;language-scss highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;// _sass/_responsive.scss&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;@media&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;screen&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;and&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;max-width&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;768px&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;nc&quot;&gt;.container&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;nl&quot;&gt;padding&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;15px&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
  
  &lt;span class=&quot;nc&quot;&gt;.sidebar&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;nl&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;100%&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;nl&quot;&gt;margin-top&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;20px&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;ol&gt;
  &lt;li&gt;引入样式文件：&lt;/li&gt;
&lt;/ol&gt;

&lt;div class=&quot;language-scss highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;// assets/css/style.scss&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;@import&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;responsive&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;2-侧边栏实现&quot;&gt;2. 侧边栏实现&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;目的&lt;/strong&gt;：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;展示文章归档，方便按时间浏览&lt;/li&gt;
  &lt;li&gt;显示文章分类，便于主题浏览&lt;/li&gt;
  &lt;li&gt;在合适位置展示其他导航信息&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;方案说明&lt;/strong&gt;：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;使用 Liquid 模板语言处理数据&lt;/li&gt;
  &lt;li&gt;文章按年份分组归档&lt;/li&gt;
  &lt;li&gt;移动端时调整位置到主内容下方&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;实现步骤&lt;/strong&gt;：&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;创建 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_includes/sidebar.html&lt;/code&gt;：&lt;/li&gt;
&lt;/ol&gt;

&lt;div class=&quot;language-html highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;div&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;class=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;sidebar&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;nt&quot;&gt;&amp;lt;h2&amp;gt;&lt;/span&gt;归档&lt;span class=&quot;nt&quot;&gt;&amp;lt;/h2&amp;gt;&lt;/span&gt;
  {% assign postsByYear = site.posts | group_by_exp:&quot;post&quot;, &quot;post.date | date: &apos;%Y&apos;&quot; %}
  
  &lt;span class=&quot;nt&quot;&gt;&amp;lt;ul&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;class=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;archive-list&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
    {% for year in postsByYear %}
      &lt;span class=&quot;nt&quot;&gt;&amp;lt;li&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;nt&quot;&gt;&amp;lt;span&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;class=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;year&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;nt&quot;&gt;&amp;lt;span&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;class=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;count&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;()&lt;span class=&quot;nt&quot;&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
      &lt;span class=&quot;nt&quot;&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
    {% endfor %}
  &lt;span class=&quot;nt&quot;&gt;&amp;lt;/ul&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;ol&gt;
  &lt;li&gt;在布局文件中引入侧边栏：&lt;/li&gt;
&lt;/ol&gt;

&lt;div class=&quot;language-html highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c&quot;&gt;&amp;lt;!-- _layouts/default.html --&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;div&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;class=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;container&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;nt&quot;&gt;&amp;lt;div&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;class=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;content&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
    {{ content }}
  &lt;span class=&quot;nt&quot;&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  {% include sidebar.html %}
&lt;span class=&quot;nt&quot;&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;文档规范&quot;&gt;文档规范&lt;/h2&gt;

&lt;h3 id=&quot;1-中文排版规范&quot;&gt;1. 中文排版规范&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;目的&lt;/strong&gt;：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;统一全站的排版风格&lt;/li&gt;
  &lt;li&gt;提高中英文混排的可读性&lt;/li&gt;
  &lt;li&gt;便于后期维护和修改&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;规范要点&lt;/strong&gt;：&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;在 Markdown 文件中遵循以下规则：&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
  &lt;li&gt;中英文之间添加空格：&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;在 GitHub 上开发程序&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;使用全角中文标点：&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;下载源码，开始编码。&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;使用半角数字：&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;共发布了 10 篇文章&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
  &lt;li&gt;统一日期格式：&lt;/li&gt;
&lt;/ol&gt;

&lt;div class=&quot;language-liquid highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;p&quot;&gt;{{&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;post&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;date&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;date&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;%Y年%-m月%-d日&quot;&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;2-文件命名规范&quot;&gt;2. 文件命名规范&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;目的&lt;/strong&gt;：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;统一文件命名方式&lt;/li&gt;
  &lt;li&gt;避免文件名冲突&lt;/li&gt;
  &lt;li&gt;方便文件管理和查找&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;规范说明&lt;/strong&gt;：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;文章文件：&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;YYYY-MM-DD-title-with-hyphen.md&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;页面文件：&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;lowercase-with-hyphen.md&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;样式文件：&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_component-name.scss&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;性能优化&quot;&gt;性能优化&lt;/h2&gt;

&lt;h3 id=&quot;1-jekyll-配置优化&quot;&gt;1. Jekyll 配置优化&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;目的&lt;/strong&gt;：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;减少站点构建时间&lt;/li&gt;
  &lt;li&gt;减少不必要的文件生成&lt;/li&gt;
  &lt;li&gt;优化资源文件大小&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;优化方案&lt;/strong&gt;：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;使用增量构建减少构建时间&lt;/li&gt;
  &lt;li&gt;排除不需要处理的文件&lt;/li&gt;
  &lt;li&gt;压缩图片等静态资源&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;实现步骤&lt;/strong&gt;：&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;更新 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_config.yml&lt;/code&gt;：&lt;/li&gt;
&lt;/ol&gt;

&lt;div class=&quot;language-yaml highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;# 提升构建性能&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;incremental&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;true&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;profile&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;true&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;# 排除不需要的文件&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;exclude&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;Gemfile&lt;/span&gt;
  &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;Gemfile.lock&lt;/span&gt;
  &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;node_modules&lt;/span&gt;
  &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;vendor&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;ol&gt;
  &lt;li&gt;优化图片资源：&lt;/li&gt;
&lt;/ol&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c&quot;&gt;# 安装图片优化工具&lt;/span&gt;
npm &lt;span class=&quot;nb&quot;&gt;install&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-g&lt;/span&gt; imagemin-cli

&lt;span class=&quot;c&quot;&gt;# 优化图片&lt;/span&gt;
imagemin images/&lt;span class=&quot;k&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--out-dir&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;images/optimized
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;总结&quot;&gt;总结&lt;/h2&gt;

&lt;p&gt;完成以上配置后，博客将具备：&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;文章搜索和 RSS 订阅功能&lt;/li&gt;
  &lt;li&gt;移动端适配和侧边栏导航&lt;/li&gt;
  &lt;li&gt;统一的文档规范&lt;/li&gt;
  &lt;li&gt;更快的加载速度&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;根据实际需求，可以选择性地实施这些优化方案。&lt;/p&gt;

&lt;h2 id=&quot;参考资源&quot;&gt;参考资源&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://jekyllrb.com/docs/&quot;&gt;Jekyll 官方文档&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.algolia.com/doc/&quot;&gt;Algolia 搜索文档&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/sparanoid/chinese-copywriting-guidelines&quot;&gt;中文文案排版指北&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/jekyll/jekyll-feed&quot;&gt;Jekyll Feed 插件&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        <pubDate>Tue, 14 Jan 2025 03:11:28 +0000</pubDate>
        <link>https://nesnilnehc.top/tutorials/2025/01/14/jekyll-blog-optimization.html</link>
        <guid isPermaLink="true">https://nesnilnehc.top/tutorials/2025/01/14/jekyll-blog-optimization.html</guid>
        
        <category>Jekyll</category>
        
        <category>搜索</category>
        
        <category>RSS</category>
        
        <category>响应式设计</category>
        
        
        <category>tutorials</category>
        
      </item>
    
      <item>
        <title>优化 Jekyll 站点的导航菜单和分类系统</title>
        <description>&lt;p&gt;在建设个人博客网站时，良好的导航系统和清晰的内容分类对于提升用户体验至关重要。本文将介绍如何优化 Jekyll 站点的导航菜单和分类系统，让网站结构更加清晰、易用。&lt;/p&gt;

&lt;!--more--&gt;

&lt;h2 id=&quot;目录结构优化&quot;&gt;目录结构优化&lt;/h2&gt;

&lt;p&gt;首先，我们需要合理组织网站的目录结构：&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;your-site/
├── _config.yml          # 配置文件
├── _pages/             # 存放页面文件
│   ├── about.markdown
│   ├── news.md
│   ├── tech.md
│   └── tutorials.md
├── _posts/             # 按分类存放文章
│   ├── news/
│   ├── tech/
│   └── tutorials/
└── assets/             # 存放样式和资源文件
    └── css/
        └── style.scss
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;统一导航菜单&quot;&gt;统一导航菜单&lt;/h2&gt;

&lt;h3 id=&quot;1-配置页面属性&quot;&gt;1. 配置页面属性&lt;/h3&gt;

&lt;p&gt;在每个页面的 front matter 中设置以下属性：&lt;/p&gt;

&lt;div class=&quot;language-yaml highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nn&quot;&gt;---&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;layout&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;page&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;页面标题&quot;&lt;/span&gt;      &lt;span class=&quot;c1&quot;&gt;# 显示在页面顶部的标题&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;nav_title&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;导航标题&quot;&lt;/span&gt;  &lt;span class=&quot;c1&quot;&gt;# 显示在导航菜单中的标题&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;nav_order&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;          &lt;span class=&quot;c1&quot;&gt;# 导航菜单中的显示顺序&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;permalink&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;/url路径/&lt;/span&gt;   &lt;span class=&quot;c1&quot;&gt;# 页面的永久链接&lt;/span&gt;
&lt;span class=&quot;nn&quot;&gt;---&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;2-配置导航顺序&quot;&gt;2. 配置导航顺序&lt;/h3&gt;

&lt;p&gt;在 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_config.yml&lt;/code&gt; 中设置导航菜单的顺序：&lt;/p&gt;

&lt;div class=&quot;language-yaml highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;na&quot;&gt;header_pages&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;_pages/news.md&lt;/span&gt;
  &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;index.md&lt;/span&gt;
  &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;_pages/tech.md&lt;/span&gt;
  &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;_pages/tutorials.md&lt;/span&gt;
  &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;_pages/about.markdown&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;优化分类系统&quot;&gt;优化分类系统&lt;/h2&gt;

&lt;h3 id=&quot;1-统一分类名称&quot;&gt;1. 统一分类名称&lt;/h3&gt;

&lt;p&gt;在文章的 front matter 中使用统一的分类名称：&lt;/p&gt;

&lt;div class=&quot;language-yaml highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nn&quot;&gt;---&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;categories&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;tech&lt;/span&gt;  &lt;span class=&quot;c1&quot;&gt;# 使用 tech, tutorials, News&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;tags&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;pi&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;标签1&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;标签2&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;]&lt;/span&gt;    &lt;span class=&quot;c1&quot;&gt;# 使用标签提供更细致的分类&lt;/span&gt;
&lt;span class=&quot;nn&quot;&gt;---&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;2-创建分类页面&quot;&gt;2. 创建分类页面&lt;/h3&gt;

&lt;p&gt;为每个分类创建独立的页面，例如 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_pages/tech.md&lt;/code&gt;：&lt;/p&gt;

&lt;div class=&quot;language-liquid highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;---
layout: page
title: tech
nav_title: tech
nav_order: 3
permalink: /tech/
---

&lt;span class=&quot;p&quot;&gt;{%&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;post&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;in&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;site.categories.tech&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;%}&lt;/span&gt;
  &amp;lt;article class=&quot;post-entry&quot;&amp;gt;
    &amp;lt;h2&amp;gt;&amp;lt;a href=&quot;&lt;span class=&quot;p&quot;&gt;{{&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;post&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;relative_url&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}}&lt;/span&gt;&quot;&amp;gt;&lt;span class=&quot;p&quot;&gt;{{&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;post&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}}&lt;/span&gt;&amp;lt;/a&amp;gt;&amp;lt;/h2&amp;gt;
    &amp;lt;div class=&quot;post-meta&quot;&amp;gt;&lt;span class=&quot;p&quot;&gt;{{&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;post&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;date&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;date&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;%B %-d, %Y&quot;&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}}&lt;/span&gt;&amp;lt;/div&amp;gt;
    &lt;span class=&quot;p&quot;&gt;{%&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kr&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;post&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;excerpt&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;%}&lt;/span&gt;
      &amp;lt;div class=&quot;post-excerpt&quot;&amp;gt;&lt;span class=&quot;p&quot;&gt;{{&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;post&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;excerpt&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}}&lt;/span&gt;&amp;lt;/div&amp;gt;
    &lt;span class=&quot;p&quot;&gt;{%&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kr&quot;&gt;endif&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;%}&lt;/span&gt;
  &amp;lt;/article&amp;gt;
&lt;span class=&quot;p&quot;&gt;{%&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;endfor&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;%}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;最佳实践&quot;&gt;最佳实践&lt;/h2&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;strong&gt;保持命名一致性&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;分类名称统一使用小写：&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;news&lt;/code&gt;、&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;tutorials&lt;/code&gt;、&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;tech&lt;/code&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;使用标签系统&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;通过标签提供更细致的分类&lt;/li&gt;
      &lt;li&gt;标签可以反映文章的具体主题、技术栈等&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;目录组织&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;页面文件统一放在 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_pages&lt;/code&gt; 目录&lt;/li&gt;
      &lt;li&gt;文章按分类存放在 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_posts&lt;/code&gt; 的子目录中&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;导航顺序&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;使用 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;nav_order&lt;/code&gt; 控制显示顺序&lt;/li&gt;
      &lt;li&gt;在 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_config.yml&lt;/code&gt; 中统一管理导航菜单&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;效果展示&quot;&gt;效果展示&lt;/h2&gt;

&lt;p&gt;优化后的网站具有以下特点：&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;strong&gt;导航菜单&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;所有页面显示统一的导航菜单&lt;/li&gt;
      &lt;li&gt;菜单项按照设定的顺序排列&lt;/li&gt;
      &lt;li&gt;导航标题简洁明了&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;分类系统&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;每个分类有独立的展示页面&lt;/li&gt;
      &lt;li&gt;文章按类别整齐归档&lt;/li&gt;
      &lt;li&gt;标签系统提供更细致的分类&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;目录结构&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;文件组织清晰&lt;/li&gt;
      &lt;li&gt;便于维护和管理&lt;/li&gt;
      &lt;li&gt;符合 Jekyll 最佳实践&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;总结&quot;&gt;总结&lt;/h2&gt;

&lt;p&gt;通过以上优化，我们的 Jekyll 站点实现了：&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;导航菜单的一致性和可控性&lt;/li&gt;
  &lt;li&gt;分类系统的清晰和规范&lt;/li&gt;
  &lt;li&gt;目录结构的优化和标准化&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;这些改进不仅提升了网站的可维护性，也大大改善了访问者的使用体验。如果你也在使用 Jekyll 建站，不妨参考这些优化方案，相信会对你有所帮助。&lt;/p&gt;
</description>
        <pubDate>Mon, 13 Jan 2025 13:33:45 +0000</pubDate>
        <link>https://nesnilnehc.top/tutorials/2025/01/13/optimize-jekyll-navigation.html</link>
        <guid isPermaLink="true">https://nesnilnehc.top/tutorials/2025/01/13/optimize-jekyll-navigation.html</guid>
        
        <category>Jekyll</category>
        
        <category>Navigation</category>
        
        <category>Categories</category>
        
        
        <category>tutorials</category>
        
      </item>
    
      <item>
        <title>每周见闻（2023 年第 2 期）</title>
        <description>&lt;h2 id=&quot;工具&quot;&gt;工具&lt;/h2&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://www.microsoft.com/zh-cn/edge/features/drop?form=MT00D8&quot;&gt;Drop&lt;/a&gt;&lt;/p&gt;

    &lt;p&gt;使用 Drop 在手机和桌面设备之间共享文件和消息。只需拖放文件即可立即共享或在 Microsoft Edge 中浏览时向自己发送笔记并保持顺畅。&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;
</description>
        <pubDate>Sat, 11 Mar 2023 16:00:00 +0000</pubDate>
        <link>https://nesnilnehc.top/news/2023/03/12/weekly-digest.html</link>
        <guid isPermaLink="true">https://nesnilnehc.top/news/2023/03/12/weekly-digest.html</guid>
        
        <category>Microsoft Edge</category>
        
        <category>开发者工具</category>
        
        <category>文件传输</category>
        
        
        <category>news</category>
        
      </item>
    
      <item>
        <title>每周见闻（2023 年第 1 期）</title>
        <description>&lt;h2 id=&quot;工具&quot;&gt;工具&lt;/h2&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://github.com/immersive-translate/immersive-translate&quot;&gt;immersive-translate&lt;/a&gt;&lt;/p&gt;

    &lt;p&gt;沉浸式双语网页翻译扩展&lt;/p&gt;

    &lt;p&gt;主要特征：&lt;/p&gt;
    &lt;ul&gt;
      &lt;li&gt;智能识别网页主内容区，区别于同类插件翻译网页所有的区域，这可以极大增强译文的阅读体验，类似于浏览器的沉浸式阅读模式，所以该扩展被命名为“沉浸式翻译”&lt;/li&gt;
      &lt;li&gt;双语显示，中文/英文对照（按照段落分割，或自定义段落长度，按照每句话对照翻译）&lt;/li&gt;
      &lt;li&gt;为常见主流网站做了定制优化，比如 Twitter，Reddit，Discord, Gmail, Telegram, Youtube, Hacker News 等，我相信经过这些优化后，你会爱上阅读外语信息。&lt;/li&gt;
      &lt;li&gt;支持 10+ 种常见的翻译服务，包括 Deepl, 谷歌, 腾讯翻译君,火山翻译，彩云小译等.&lt;/li&gt;
      &lt;li&gt;PDF 文件双语翻译支持&lt;/li&gt;
      &lt;li&gt;配合 ePub 在线阅读网站&lt;a href=&quot;https://epub-reader.online/&quot;&gt;https://epub-reader.online/&lt;/a&gt; 或 &lt;a href=&quot;https://readwise.io/read&quot;&gt;https://readwise.io/read&lt;/a&gt; 即可实现双语阅读国外电子书&lt;/li&gt;
      &lt;li&gt;多种译文样式可选择，个性化你的翻译体验。&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;新知&quot;&gt;新知&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;英文破折号的分类及作用 &lt;sup&gt;[1]&lt;/sup&gt;
  &lt;img src=&quot;/assets/images/20230129/1.jpg&quot; alt=&quot;1.jpg&quot; /&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;参考&quot;&gt;参考&lt;/h2&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;a href=&quot;https://zhuanlan.zhihu.com/p/107452436&quot;&gt;英文破折号都有哪些作用？&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
</description>
        <pubDate>Sat, 04 Feb 2023 16:00:00 +0000</pubDate>
        <link>https://nesnilnehc.top/news/2023/02/05/weekly-digest.html</link>
        <guid isPermaLink="true">https://nesnilnehc.top/news/2023/02/05/weekly-digest.html</guid>
        
        <category>开发者工具</category>
        
        <category>翻译</category>
        
        <category>阅读</category>
        
        
        <category>news</category>
        
      </item>
    
      <item>
        <title>如何下载 Kindle 电子书</title>
        <description>&lt;p&gt;由于 Kindle 宣布 2023 年 06 月 30 日停止在中国电子书店的运营&lt;sup&gt;[1]&lt;/sup&gt;，我想将购买的一些电子书下载存档。&lt;/p&gt;

&lt;h2 id=&quot;步骤&quot;&gt;步骤&lt;/h2&gt;

&lt;ol&gt;
  &lt;li&gt;下载电子书
    &lt;ol&gt;
      &lt;li&gt;方法一
        &lt;ol&gt;
          &lt;li&gt;下载 &lt;a href=&quot;https://github.com/yihong0618/Kindle_download_helper/releases&quot;&gt;Kindle Download Helper&lt;/a&gt; &lt;sup&gt;[2]&lt;/sup&gt;&lt;/li&gt;
          &lt;li&gt;安装或解压缩 Kindle Download Helper&lt;/li&gt;
          &lt;li&gt;登录 Amazon 官网&lt;/li&gt;
          &lt;li&gt;&lt;a href=&quot;https://github.com/yihong0618/Kindle_download_helper#%E8%8E%B7%E5%8F%96-cookie&quot;&gt;获取 Cookie&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;&lt;a href=&quot;https://github.com/yihong0618/Kindle_download_helper#%E8%8E%B7%E5%8F%96-csrf-token&quot;&gt;获取 CSRF Token&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;运行 Kindle Download Helper（&lt;a href=&quot;https://github.com/yihong0618/Kindle_download_helper/issues/89&quot;&gt;这里遇到了一个坑&lt;/a&gt;）
&lt;img src=&quot;/assets/images/20230131/1.png&quot; alt=&quot;1.png&quot; /&gt;&lt;/li&gt;
        &lt;/ol&gt;
      &lt;/li&gt;
      &lt;li&gt;方法二
        &lt;ol&gt;
          &lt;li&gt;下载 Kindle for PC v1.17 &lt;sup&gt;[3]&lt;/sup&gt;&lt;/li&gt;
          &lt;li&gt;安装 Kindle for PC v1.17，并取消自动升级功能&lt;/li&gt;
        &lt;/ol&gt;
      &lt;/li&gt;
    &lt;/ol&gt;
  &lt;/li&gt;
  &lt;li&gt;去除 Kindle 电子书的 DRM 版权保护
    &lt;ol&gt;
      &lt;li&gt;下载安装 &lt;a href=&quot;https://calibre-ebook.com/download&quot;&gt;Calibre&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;下载 &lt;a href=&quot;https://github.com/noDRM/DeDRM_tools/releases/tag/v10.0.2&quot;&gt;DeDRM Tools&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;安装 DeDRM Tools 插件到 Calibre
 &lt;img src=&quot;/assets/images/20230131/2.jpg&quot; alt=&quot;2.jpg&quot; /&gt;&lt;/li&gt;
      &lt;li&gt;重启 Calibre&lt;/li&gt;
      &lt;li&gt;批量转换成 ePub 格式保存&lt;/li&gt;
    &lt;/ol&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;参考&quot;&gt;参考&lt;/h2&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;a href=&quot;https://mp.weixin.qq.com/s/jJG36Hbrw2-ZeUT3aDXKBA&quot;&gt;重要通知 | Kindle 中国电子书店运营调整&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/yihong0618/Kindle_download_helper&quot;&gt;yihong0618/Kindle_download_helper&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://blog.mzihen.com/kindle-drm-removal/&quot;&gt;去除 Kindle 电子书的 DRM 版权保护&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://zhuanlan.zhihu.com/p/58851910&quot;&gt;自购亚马逊电子书移除 DRM 教程：DRM 脱壳 + 电子书格式转换&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/apprenticeharper/DeDRM_tools&quot;&gt;apprenticeharper/DeDRM_tools&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/noDRM/DeDRM_tools&quot;&gt;noDRM/DeDRM_tools&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
</description>
        <pubDate>Tue, 31 Jan 2023 09:38:00 +0000</pubDate>
        <link>https://nesnilnehc.top/tech/download-ebooks-from-kindle/</link>
        <guid isPermaLink="true">https://nesnilnehc.top/tech/download-ebooks-from-kindle/</guid>
        
        <category>Kindle</category>
        
        <category>ePub</category>
        
        <category>tools</category>
        
        <category>tutorial</category>
        
        
        <category>tech</category>
        
      </item>
    
  </channel>
</rss>
