← 返回 Day 199 正文

Day 199 · 图解

Day 199 图解 — 技术写作

本目录只放图解,不生成图片文件。所有图都能在 GitHub / 本地 Markdown 渲染器中直接显示。


图 1:一篇文章的三个退出层

flowchart TD A[标题 + 首段] -->|30 秒| B{和我有关吗} B -->|否| X[关掉页面] B -->|是| C[小标题 + 表格] C -->|3 分钟| D{结论能用吗} D -->|否| X D -->|是| E[实验手册 + 代码] E -->|30 分钟| F[照着重现] F -->|成功| G[信任 + 引用] F -->|失败| H[反馈给作者] H --> I[作者补环境/命令] I --> E
flowchart TD
    A[标题 + 首段] -->|30 秒| B{和我有关吗}
    B -->|否| X[关掉页面]
    B -->|是| C[小标题 + 表格]
    C -->|3 分钟| D{结论能用吗}
    D -->|否| X
    D -->|是| E[实验手册 + 代码]
    E -->|30 分钟| F[照着重现]
    F -->|成功| G[信任 + 引用]
    F -->|失败| H[反馈给作者]
    H --> I[作者补环境/命令]
    I --> E

读法:任何一层都要自洽。只读第二层的人也应该拿走可用结论—— 这就是"实验手册"必须独立成章、而不是散在叙述里的原因。


图 2:断言的三级与证据要求

flowchart LR S[一句话] --> Q{是事实吗} Q -->|是| F[给出处或一行验证] Q -->|否| R{是推断吗} R -->|是| I[写推理链 + 至少一次测量] R -->|否| O[观点: 说清立场, 不伪装成事实] F --> OK[可发布] I --> OK O --> OK
flowchart LR
    S[一句话] --> Q{是事实吗}
    Q -->|是| F[给出处或一行验证]
    Q -->|否| R{是推断吗}
    R -->|是| I[写推理链 + 至少一次测量]
    R -->|否| O[观点: 说清立场, 不伪装成事实]
    F --> OK[可发布]
    I --> OK
    O --> OK

"显然"之所以危险,是因为它让第三类句子(观点)冒充第一类(事实),跳过了举证。


图 3:可复现性契约的五个字段

                 +-----------------------------+
                 |      一次可复现的实验        |
                 +-----------------------------+
                    |      |      |      |    |
        +-----------+      |      |      |    +-------------+
        |                  |      |      |                  |
   +---------+      +-----------+  |  +-----------+   +-------------+
   |  环境    |      |   命令     |  |  |  样本量    |   |  输出指纹    |
   | 版本/CPU |      | 可复制一行 |  |  | N 次/中位  |   |  sha256     |
   +---------+      +-----------+  |  +-----------+   +-------------+
                                   |
                            +-------------+
                            |  原始输出    |
                            | stdout/stderr|
                            +-------------+

缺任意一格,读者就只能"相信",不能"验证"。


图 4:Markdown 体检器的状态机

stateDiagram-v2 [*] --> Text Text --> Code: 遇到代码围栏 Code --> Text: 遇到代码围栏 Text: 普通文本态 Text: 解析标题/列表/表格 Code: 代码块态 Code: 原样收集, 不解析 note right of Code 围栏内的 # 是注释, 不是标题 漏掉这条规则 = 体检器变噪音源 end note
stateDiagram-v2
    [*] --> Text
    Text --> Code: 遇到代码围栏
    Code --> Text: 遇到代码围栏
    Text: 普通文本态
    Text: 解析标题/列表/表格
    Code: 代码块态
    Code: 原样收集, 不解析
    note right of Code
        围栏内的 # 是注释, 不是标题
        漏掉这条规则 = 体检器变噪音源
    end note

图 5:从实验到发布的流水线

flowchart LR A[真机实验] -->|抓 stdout/环境/哈希| B[可复现卡片] B --> C[写作: 结论先行] C --> D{体检 >= 90?} D -->|否| E[修结构/补条件] E --> D D -->|是| F[静态站构建] F --> G[HTTP 200 验证] G --> H[发布] H --> I[读者复现] I -->|失败| A
flowchart LR
    A[真机实验] -->|抓 stdout/环境/哈希| B[可复现卡片]
    B --> C[写作: 结论先行]
    C --> D{体检 >= 90?}
    D -->|否| E[修结构/补条件]
    E --> D
    D -->|是| F[静态站构建]
    F --> G[HTTP 200 验证]
    G --> H[发布]
    H --> I[读者复现]
    I -->|失败| A

注意最后一条回边:发布不是终点,读者复现失败才是最有价值的输入。


图 6:误报是怎么被修掉的(真实数据)

版本                        post.md 评分   误报
v1  逐词匹配                 79/100        7 条(front matter + 引用 + TODO 清单)
v2  剥离「」引号              85/100        2 条(ASCII 双引号没剥)
v3  剥离 ASCII 引号           100/100       0 条
v4  行内代码也剥离 + 收紧词表   100/100       0 条(README 自检 94 -> 100)

结论:规则的价值不在"抓得多",而在"只抓该抓的"。一条会对自己开火的规则, 在真实使用中会迅速被忽略。