<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/scripts/pretty-feed-v3.xsl" type="text/xsl"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:h="http://www.w3.org/TR/html4/"><channel><title>Han Blog</title><description>Stay hungry, stay foolish</description><link>https://www.fanguanghan.homes</link><item><title>肠道干细胞谱系追踪系统</title><link>https://www.fanguanghan.homes/blog/2025/20251013</link><guid isPermaLink="true">https://www.fanguanghan.homes/blog/2025/20251013</guid><description>结合 Lgr5-CreER、Rosa26-loxP-STOP-loxP-Reporter 及 Tamoxifen，实现了对干细胞及其后代的时间可控、空间特异性、不可逆标记</description><pubDate>Mon, 13 Oct 2025 08:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;一、研究背景与目的&lt;/h2&gt;
&lt;p&gt;肠道上皮每 4–5 天更新一次，依赖隐窝底部的活跃干细胞（Lgr5⁺ CBCs）。为了研究这些干细胞的功能、分化轨迹和再生潜力，科学家建立了一套&lt;strong&gt;可控、可视化、可遗传的谱系追踪系统&lt;/strong&gt;，实现对干细胞及其后代的精准标记与长期观察。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;二、系统组成与分子原理&lt;/h2&gt;
&lt;h3&gt;1. Lgr5-CreER：空间特异性 + 时间可控性&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Lgr5&lt;/strong&gt; 是 Wnt 信号通路的靶基因，仅在隐窝底部的活跃干细胞中表达。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CreER&lt;/strong&gt; 是 Cre 酶与改造雌激素受体（ER）融合的蛋白，需 Tamoxifen 激活。&lt;/li&gt;
&lt;li&gt;激活后进入细胞核，剪除 LoxP 位点间的 STOP 序列。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;机制图示：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-mermaid&quot;&gt;graph TD
    Tamoxifen --&gt; CreER[CreER 激活]
    CreER --&gt;|进入细胞核| LoxP剪接[剪除 STOP]
    LoxP剪接 --&gt; Reporter表达[LacZ/GFP 表达启动]
&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h3&gt;2. Rosa26-loxP-STOP-loxP-Reporter：安全插入 + 永久标记&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Rosa26原理详解：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;位于小鼠第6号染色体，是一个&lt;strong&gt;非编码但转录活跃的区域&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;插入点通常选在 &lt;strong&gt;intron 1&lt;/strong&gt;，不会干扰原始基因功能。&lt;/li&gt;
&lt;li&gt;插入结构如下：&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;Rosa26 Exon1 ── Intron1 ── [loxP–STOP–loxP–LacZ] ── Exon2
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;STOP cassette&lt;/strong&gt;：含多个 polyA 信号和终止密码子，阻止下游 reporter 表达。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cre 激活后&lt;/strong&gt;：STOP 被剪除，LacZ 开始表达，且在所有后代中持续存在。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;插入结构图示：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-mermaid&quot;&gt;graph LR
    Exon1 --&gt; Intron1
    Intron1 --&gt;|插入表达盒| loxP1 --&gt; STOP --&gt; loxP2 --&gt; LacZ --&gt; Exon2
&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h3&gt;3. Tamoxifen：诱导剂&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;激活 CreER，使其进入细胞核。&lt;/li&gt;
&lt;li&gt;剪除 STOP 序列，启动 reporter 表达。&lt;/li&gt;
&lt;li&gt;标记仅发生在注射时间点的 Lgr5⁺ 干细胞及其后代。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;三、实验流程与逻辑&lt;/h2&gt;
&lt;p&gt;|步骤|操作说明|
|---|---|
|①|交配 Lgr5-CreER 与 Rosa26-LacZ 小鼠，获得双转基因个体|
|②|注射 Tamoxifen，激活 CreER 酶|
|③|CreER 剪除 STOP → LacZ 表达启动|
|④|所有被标记的干细胞及其后代可通过 X-gal 染色呈蓝色|&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;流程图示：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-mermaid&quot;&gt;sequenceDiagram
    participant Mouse
    participant Tamoxifen
    participant CreER
    participant Rosa26
    Tamoxifen-&gt;&gt;CreER: 激活
    CreER-&gt;&gt;Rosa26: 剪除 STOP
    Rosa26-&gt;&gt;Mouse: 表达 LacZ
&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2&gt;四、实验观察与结果解读&lt;/h2&gt;
&lt;p&gt;|条件|观察结果|
|---|---|
|无 Tamoxifen|CreER 不激活 → LacZ 不表达 → 无标记细胞|
|加 Tamoxifen|CreER 激活 → LacZ 表达 → 蓝色干细胞及后代可见|&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;五、系统优势与应用拓展&lt;/h2&gt;
&lt;h3&gt;应用方向：&lt;/h3&gt;
&lt;ul&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;li&gt;&lt;strong&gt;癌变机制探索&lt;/strong&gt;：如 APC 缺失 → β-catenin 积累 → 干细胞异常增殖&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;类器官构建&lt;/strong&gt;：单个 Lgr5⁺ 干细胞培养“迷你肠”&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多色谱系追踪&lt;/strong&gt;：Rosa-Confetti 小鼠标记不同干细胞谱系&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;可塑性研究&lt;/strong&gt;：Alpi⁺ 分化细胞可回归 Lgr5⁺ 干细胞状态&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;类器官图示：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-mermaid&quot;&gt;graph TD
    Lgr5+ --&gt; MiniGut[类器官]
    MiniGut --&gt;|分化| Goblet[Muc+]
    MiniGut --&gt; Enteroendocrine[Chga+]
    MiniGut --&gt; Enterocyte[Krt20+]
&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2&gt;六、Rosa-Confetti 扩展机制&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;插入多色 reporter（GFP、RFP、YFP、CFP）&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;pre&gt;&lt;code class=&quot;language-mermaid&quot;&gt;pie
    title 干细胞谱系分布
    &quot;红色谱系&quot;: 7
    &quot;黄色谱系&quot;: 5
    &quot;蓝色谱系&quot;: 4
&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2&gt;七、结论&lt;/h2&gt;
&lt;p&gt;通过 Lgr5-CreER × Rosa26-loxP-STOP-loxP-Reporter 的组合，科学家构建了一套&lt;strong&gt;精准、可控、永久的谱系追踪系统&lt;/strong&gt;，为肠道干细胞的研究提供了强有力的遗传工具。该系统不仅揭示了干细胞的多能性和再生潜力，也为类器官构建、疾病建模和再生医学奠定了基础。&lt;/p&gt;</content:encoded><h:img src="undefined"/><enclosure url="undefined"/></item><item><title>qPCR数据处理指北</title><link>https://www.fanguanghan.homes/blog/2025/20251001</link><guid isPermaLink="true">https://www.fanguanghan.homes/blog/2025/20251001</guid><description>PlateEditor 与 qPCR 数据标准化处理流程</description><pubDate>Wed, 01 Oct 2025 08:00:00 GMT</pubDate><content:encoded>&lt;p&gt;qPCR 数据处理流程，涵盖原始数据的孔板编辑、信息整理，以及利用 Excel 实现自动化分析与结果可视化。&lt;/p&gt;
&lt;h2&gt;一、孔板数据编辑与格式转换&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://www.fanguanghan.homes/PlateEditor.html&quot;&gt;PlateEditor&lt;/a&gt; 是一个用于编辑和管理 PCR 实验孔板数据的在线工具，支持 Bio-Rad 和 Roche 仪器数据的导入与可视化编辑。具体的操作步骤如下：&lt;/p&gt;
&lt;h3&gt;1. &lt;strong&gt;导入原始数据&lt;/strong&gt;&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Bio-Rad仪器导出方式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;在 CFX Manager 软件中选择 &lt;code&gt;Export&lt;/code&gt; → &lt;code&gt;Custom Export&lt;/code&gt; → &lt;code&gt;Export&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;保存为 &lt;code&gt;.xlsx&lt;/code&gt; 或 &lt;code&gt;.xls&lt;/code&gt; 格式&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在 &lt;a href=&quot;https://www.fanguanghan.homes/PlateEditor.html&quot;&gt;PlateEditor&lt;/a&gt; 的右侧 &lt;strong&gt;&quot;Data Import&quot;&lt;/strong&gt; 区域上传该文件&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/hanhan124/blog_bed/main/img/20251002003946848.png&quot; alt=&quot;biorad-1.png&quot;&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Roche 仪器（LightCycler）导出方式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;导出 &lt;code&gt;.txt&lt;/code&gt; 文本文件&lt;/li&gt;
&lt;li&gt;全选内容并复制粘贴至 Excel 表格&lt;/li&gt;
&lt;li&gt;另存为 &lt;code&gt;.xlsx&lt;/code&gt; 文件后上传至 &lt;a href=&quot;https://www.fanguanghan.homes/PlateEditor.html&quot;&gt;PlateEditor&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;2. 孔板编辑与标注&lt;/h3&gt;
&lt;p&gt;在 &lt;a href=&quot;https://www.fanguanghan.homes/PlateEditor.html&quot;&gt;PlateEditor&lt;/a&gt; 中可对每个孔进行样本名（Sample Name）和目标基因（Target Gene）的批量标注：&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;点击行标签（A–P）选择整行&lt;/li&gt;
&lt;li&gt;点击列标签（1–24）选择整列&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&gt;Sample Name&lt;/code&gt;：如 WT_Control、KO_Treatment 等&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Target Gene&lt;/code&gt;：如 &lt;em&gt;GAPDH&lt;/em&gt;, &lt;em&gt;ACTB&lt;/em&gt;, &lt;em&gt;IL-6&lt;/em&gt; 等&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;应用设置&lt;/strong&gt;： 点击 &lt;strong&gt;&quot;Apply&quot;&lt;/strong&gt; 按钮，所选孔位即被赋予对应标签&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;3. 数据清理&lt;/h3&gt;
&lt;p&gt;若需重置部分或全部数据，可使用以下功能：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Clear Selection&lt;/strong&gt;：取消当前选区&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Clear Sample&lt;/strong&gt;：清除选中孔的样本名称&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Clear Gene&lt;/strong&gt;：清除选中孔的目标基因&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Clear Values&lt;/strong&gt;：清除选中孔的所有定量数据（CT 值等）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reset All Data&lt;/strong&gt;：恢复整个孔板为空状态&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;4. 导出标准化数据&lt;/h3&gt;
&lt;p&gt;完成编辑后，在 &lt;strong&gt;&quot;Data Export&quot;&lt;/strong&gt; 区域点击 &lt;strong&gt;&quot;Export&quot;&lt;/strong&gt; 按钮，系统将自动生成并下载两个文件：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Excel 文件（.xlsx）&lt;/strong&gt;：包含原始 CT 值、样本名、基因名及统计摘要&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PNG 图片&lt;/strong&gt;：孔板布局图，可用于报告或论文配图&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;二、数据分析&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;打开导出的 Excel 数据文件&lt;/li&gt;
&lt;li&gt;将内参基因（如 &lt;em&gt;TBP&lt;/em&gt;, &lt;em&gt;GAPDH&lt;/em&gt;, &lt;em&gt;ACTB&lt;/em&gt;）所在列移动至所有目标基因前列&lt;/li&gt;
&lt;li&gt;复制以下关键列数据到 &lt;a href=&quot;https://drive.google.com/file/d/1uZGhomKPx6PkbKdGF5giBWpQbTkkz4UM/view?usp=drive_link&quot;&gt;2.QPCR_template.xlsm&lt;/a&gt; 中，随后点击按钮即可分析并生成结果
&lt;ul&gt;
&lt;li&gt;Sample Name（样本名称）&lt;/li&gt;
&lt;li&gt;Target Gene（目标基因）&lt;/li&gt;
&lt;li&gt;CT 值&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;使用前请确保仅打开此一个 Excel 工作簿（避免宏运行冲突）；文件为 &lt;code&gt;.xlsm&lt;/code&gt; 格式，启用宏后方可执行分析&lt;/li&gt;
&lt;li&gt;程序将自动执行：
&lt;ul&gt;
&lt;li&gt;ΔΔCt 计算&lt;/li&gt;
&lt;li&gt;相对表达量（2^(-ΔΔCt)）转换&lt;/li&gt;
&lt;li&gt;组间均值与标准差统计&lt;/li&gt;
&lt;li&gt;生成柱状图（Bar Plot）与数值表格&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;结果输出在同一工作簿的不同 sheet 中，可直接复制图表用于汇报&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/hanhan124/blog_bed/main/img/20251002010647314.png&quot; alt=&quot;qpcr_input.png&quot;&gt;&lt;/p&gt;
&lt;h2&gt;三、可能有用的脚本&lt;/h2&gt;
&lt;h3&gt;1. &lt;strong&gt;barplot&lt;/strong&gt;&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;library(ggplot2)
library(readxl)
library(tidyr)
library(dplyr)

data &amp;#x3C;- read_excel(&quot;data.xlsx&quot;)
gene_list &amp;#x3C;- unique(data$Gene)

for (g in gene_list) {
  sub_sum &amp;#x3C;- data %&gt;% filter(Gene == g)
  rep_dat &amp;#x3C;- sub_sum %&gt;% 
    select(Group_Name, Repeat1:Repeat2) %&gt;% 
    pivot_longer(cols = starts_with(&quot;repeat&quot;),
                 names_to = &quot;rep_id&quot;,
                 values_to = &quot;value&quot;)

  y_max &amp;#x3C;- pretty(max(sub_sum$Average + sub_sum$Stdev))[length(pretty(max(sub_sum$Average + sub_sum$Stdev)))]
  
  p &amp;#x3C;- ggplot(sub_sum) +
    geom_col(aes(x = Group_Name, y = Average),
             fill = &quot;#6A89C5&quot;, alpha = 1, width = 0.7, 
             linewidth = 0.3, color = &quot;black&quot;) +
    
    geom_linerange(aes(x = Group_Name,
                       ymin = Average,
                       ymax = Average + Stdev),
                   colour = &quot;black&quot;,
                   linewidth = 0.4) +
    
    geom_errorbar(aes(x = Group_Name,
                      ymin = Average + Stdev,
                      ymax = Average + Stdev),
                  width = 0.2,
                  colour = &quot;black&quot;,
                  linewidth = 0.6) +
    
    geom_point(data = rep_dat,
               aes(x = Group_Name, y = value),
               shape = 21, size = 1.5, colour = &quot;black&quot;, fill = &quot;#6A89C5&quot;,
               position = position_jitterdodge(dodge.width = 0.7,
                                               jitter.width = 0.25,
                                               seed = 123)) +
    
    ggtitle(bquote(bolditalic(.(g)))) +
    
    xlab(NULL) +
    ylab(expression(&quot;Normalized to &quot;*italic(TBP))) +
    
    scale_y_continuous(expand = c(0, 0),
                       limits = c(0, y_max),
                       breaks = seq(0, y_max, length.out = 5)) +
    theme_classic() +
    theme(
      plot.title = element_text(hjust = 0.5, size = 14),
      axis.title.y = element_text(size = 12, face = &quot;plain&quot;),
      axis.title.x = element_text(size = 12, face = &quot;plain&quot;),
      axis.text.y = element_text(face = &quot;plain&quot;),
      axis.text.x = element_text(face = &quot;plain&quot;,
                                 angle = 45,
                                 hjust = 1,
                                 vjust = 1)
    )
  
  ggsave(filename = paste0(g, &quot;.png&quot;),
         plot = p,
         width = 8,
         height = 6,
         dpi = 900,
         units = &quot;in&quot;)
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;2. &lt;strong&gt;heatmap&lt;/strong&gt;&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;library(ggplot2)
library(dplyr)
library(readxl)

data &amp;#x3C;- read_excel(&quot;data.xlsx&quot;)
data$Group_Name &amp;#x3C;- factor(data$Group_Name, levels = unique(data$Group_Name))
data$Gene      &amp;#x3C;- factor(data$Gene,      levels = unique(data$Gene))

data_norm &amp;#x3C;- data %&gt;%
  group_by(Gene) %&gt;%
  mutate(
    Normalized_Value = (Average - min(Average)) /
                       (max(Average) - min(Average)),
    label_text = sprintf(&quot;%.1f&quot;, Average)
  ) %&gt;%
  ungroup()

p &amp;#x3C;- ggplot(data_norm, aes(x = Group_Name, y = Gene, fill = Normalized_Value)) +
  geom_tile(color = &quot;white&quot;, linewidth = 0.5) +
  geom_text(
    aes(label = label_text),
    color = &quot;#7b7c7a&quot;, 
    fontface = &quot;bold&quot;,  
    size = 2.7,
    family = &quot;sans&quot;        
  ) +
  
  scale_fill_gradientn(
    name = &quot;Normalized\nExpression&quot;,
    colors = c(&quot;#f0f8ff&quot;, &quot;#c6dbef&quot;, &quot;#9ecae1&quot;, &quot;#6baed6&quot;, &quot;#3182bd&quot;, &quot;#08519c&quot;),
    limits = c(0, 1),
    
    guide = guide_colorbar(
      title.position = &quot;left&quot;,
      title.hjust    = 1,
      title.vjust    = 0.5,
      barwidth       = unit(0.5, &quot;lines&quot;),
      barheight      = unit(15, &quot;lines&quot;),
      
      title.theme = element_text(
        angle  = 90,
        size   = 11,
        face   = &quot;plain&quot;,
        hjust  = 0.5
      )
    )
  ) +
  
  scale_x_discrete(expand = c(0, 0)) +
  scale_y_discrete(expand = c(0, 0)) +
  
  theme_gray() +
  
  labs(
    title = &quot;Min-Max Normalized Gene Expression Across Group_Names&quot;,
    x     = NULL,
    y     = NULL
  ) +
  
  theme(
    plot.title      = element_text(hjust = 0.5, size = 16, face = &quot;bold&quot;),
    axis.text.x     = element_text(angle = 45, hjust = 1, vjust = 1, size = 9, color = &quot;black&quot;),
    axis.text.y     = element_text(size = 10, color = &quot;black&quot;, face = &quot;italic&quot;),
    panel.grid      = element_blank(),
    axis.ticks      = element_blank(),
    legend.position = &quot;right&quot;,
    legend.title.align = 1,
    legend.margin   = margin(l = 5, r = 10),
    legend.title    = element_text(margin = margin(r = 5))
  ) +
  
  coord_fixed(ratio = 1)

ggsave(&quot;heatmap.pdf&quot;, 
       plot = p, 
       width  = 16, 
       height = 9.5,  
       limitsize = FALSE, 
       device = &quot;pdf&quot;,
       dpi = 400     
)
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;#!/usr/bin/env Rscript

library(ggplot2)
library(dplyr)
library(tidyr)
library(readxl)

data &amp;#x3C;- read_excel(&quot;data.xlsx&quot;)

control_group &amp;#x3C;- &quot;E6&quot;

data_logfc &amp;#x3C;- data %&gt;%
  group_by(Gene) %&gt;%
  mutate(
    ctrl = Average[Group_Name == control_group],
    log2FC = log2(Average / ctrl),
    label_text = sprintf(&quot;%.1f&quot;, Average)
  ) %&gt;%
  ungroup() %&gt;%
  filter(Group_Name != control_group)

data_norm &amp;#x3C;- data_logfc %&gt;%
  group_by(Gene) %&gt;%
  mutate(
    z_log2FC = scale(log2FC)[,1]
  ) %&gt;%
  ungroup()

data_norm$Group_Name &amp;#x3C;- factor(data_norm$Group_Name, levels = unique(data_norm$Group_Name))
data_norm$Gene      &amp;#x3C;- factor(data_norm$Gene,      levels = unique(data_norm$Gene))

z_range &amp;#x3C;- max(abs(data_norm$z_log2FC), na.rm = TRUE)


p &amp;#x3C;- ggplot(data_norm, aes(x = Group_Name, y = Gene, fill = z_log2FC)) +
  
  geom_tile(color = &quot;white&quot;, linewidth = 0.5) +
  
  geom_text(
    aes(label = label_text),
    color = &quot;grey30&quot;,  
    fontface = &quot;bold&quot;,
    size = 2.7,   
    family = &quot;sans&quot;
  ) +
  
  scale_fill_gradient2(
    name = &quot;Z-score\n(log2FC)&quot;,
    low = &quot;#2166ac&quot;,
    mid = &quot;#f7f7f7&quot;,
    high = &quot;#b2182b&quot;,
    midpoint = 0,
    limits = c(-z_range, z_range),
    breaks = seq(-ceiling(z_range), ceiling(z_range), by = 1),
    oob = scales::squish,
    
    guide = guide_colorbar(
      title.position = &quot;left&quot;,
      title.hjust    = 1,
      title.vjust    = 0.5,
      barwidth       = unit(0.5, &quot;lines&quot;),
      barheight      = unit(15, &quot;lines&quot;),
      title.theme    = element_text(
        angle  = 90,
        size   = 11,
        hjust  = 0.5,
        vjust  = 0.5
      )
    )
  ) +
  
  scale_x_discrete(expand = c(0, 0)) +
  scale_y_discrete(expand = c(0, 0)) +
  
  labs(
    title = paste(&quot;Row-normalized log2FC (Z-score) vs&quot;, control_group, 
                  &quot;\nNumbers: raw average expression level&quot;),
    x = NULL, y = NULL
  ) +
  
  theme_minimal(base_size = 13) +
  
  theme(
    plot.title        = element_text(hjust = 0.5, face = &quot;bold&quot;, size = 15),
    axis.text.x       = element_text(angle = 45, hjust = 1, vjust = 1, size = 9),
    axis.text.y       = element_text(size = 9.5, face = &quot;italic&quot;),
    panel.grid        = element_blank(),
    axis.ticks        = element_blank(),
    legend.position   = &quot;right&quot;,
    legend.text       = element_text(size = 10),
    legend.key.height = unit(1.8, &quot;cm&quot;),
    legend.margin     = margin(l = 10)
  ) +
  
  coord_fixed(ratio = 1)

ggsave(&quot;heatmap_FC.pdf&quot;,
       plot = p,
       width = 15.5,
       height = 9.5,
       limitsize = FALSE,
       dpi = 400)

cat(&quot;complete!\n&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Over~&lt;/p&gt;</content:encoded><h:img src="/_astro/nova-PCRPlates.ZCCOOiNb.jpg"/><enclosure url="/_astro/nova-PCRPlates.ZCCOOiNb.jpg"/></item><item><title>昆明的雨</title><link>https://www.fanguanghan.homes/blog/2025/20250924</link><guid isPermaLink="true">https://www.fanguanghan.homes/blog/2025/20250924</guid><description>汪曾祺</description><pubDate>Tue, 23 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&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;p&gt;昆明的雨季是明亮的、丰满的，使人动情的。城春草木深，孟夏草木长。昆明的雨季，是浓绿的。草木的枝叶里的水分都到了饱和状态，显示出过分的、近于夸张的旺盛。&lt;/p&gt;
&lt;p&gt;我的那张画是写实的。我确实亲眼看见过倒挂着还能开花的仙人掌。旧日昆明人家门头上用以辟邪的多是这样一些东西：一面小镜子，周围画着八卦，下面便是一片仙人掌，——在仙人掌上扎一个洞，用麻线穿了，挂在钉子上。昆明仙人掌多，且极肥大。有些人家在菜园的周围种了一圈仙人掌以代替篱笆。——种了仙人掌，猪羊便不敢进园吃菜了。仙人掌有刺，猪和羊怕扎。&lt;/p&gt;
&lt;p&gt;昆明菌子极多。雨季逛菜市场，随时可以看到各种菌子。最多，也最便宜的是牛肝菌。牛肝菌下来的时候，家家饭馆卖炒牛肝菌，连西南联大食堂的桌子上都可以有一碗。牛肝菌色如牛肝，滑，嫩，鲜，香，很好吃。炒牛肝菌须多放蒜，否则容易使人晕倒。青头菌比牛肝菌略贵。这种菌子炒熟了也还是浅绿色的，格调比牛肝菌高。菌中之王是鸡土从，味道鲜浓，无可方比。鸡土从是名贵的山珍，但并不真的贵得惊人。一盘红烧鸡土从的价钱和一碗黄焖鸡不相上下，因为这东西在云南并不难得。有一个笑话：有人从昆明坐火车到呈贡，在车上看到地上有一棵鸡纵，他跳下去把鸡土从捡了，紧赶两步，还能爬上火车。这笑话用意在说明昆明到呈贡的火车之慢，但也说明鸡土从随处可见。有一种菌子，中吃不中看，叫做干巴菌。乍一看那样子，真叫人怀疑：这种东西也能吃？！颜色深褐带绿，有点像一堆半干的牛粪或一个被踩破了的马蜂窝。里头还有许多草茎、松毛、乱七八糟！可是下点功夫，把草茎松毛择净，撕成蟹腿肉粗细的丝，和青辣椒同炒，入口便会使你张目结舌：这东西这么好吃？！还有一种菌子，中看不中吃，叫鸡油菌。都是一般大小，有一块银圆那样大，的溜圆，颜色浅黄，恰似鸡油一样。这种菌子只能做菜时配色用，没甚味道。&lt;/p&gt;
&lt;p&gt;雨季的果子，是杨梅。卖杨梅的都是苗族女孩子，戴一顶小花帽子，穿着扳尖的绣了满帮花的鞋，坐在人家阶石的一角，不时吆唤一声：“卖杨梅——”，声音娇娇的。她们的声音使得昆明雨季的空气更加柔和了。昆明的杨梅很大，有一个乒乓球那样大，颜色黑红黑红的，叫做“火炭梅”。这个名字起得真好，真是像一球烧得炽红的火炭！一点都不酸！我吃过苏州洞庭山的杨梅、井冈山的杨梅，好像都比不上昆明的火炭梅。&lt;/p&gt;
&lt;p&gt;雨季的花是缅桂花。缅桂花即白兰花，北京叫做“把儿兰”（这个名字真不好听）。云南把这种花叫做缅桂花，可能最初这种花是从缅甸传入的，而花的香味又有点像桂花，其实这跟桂花实在没有什么关系。——不过话又说回来，别处叫它白兰、把儿兰，它和兰花也挨不上呀，也不过是因为它很香，香得像兰花。我在家乡看到的白兰多是一人高，昆明的缅桂是大树！我在若园巷二号住过，院里有一棵大缅桂，密密的叶子，把四周房间都映绿了。缅桂盛开的时候，房东（是一个五十多岁的寡妇）就和她的一个养女，搭了梯子上去摘，每天要摘下来好些，拿到花市上去卖。她大概是怕房客们乱摘她的花，时常给各家送去一些。有时送来一个七寸盘子，里面摆得满满的缅桂花！带着雨珠的缅桂花使我的心软软的，不是怀人，不是思乡。&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;/p&gt;
&lt;p&gt;一九八四年五月十九日&lt;/p&gt;</content:encoded><h:img src="/_astro/thumbnail.BKBaa5y5.jpg"/><enclosure url="/_astro/thumbnail.BKBaa5y5.jpg"/></item><item><title>故都的秋</title><link>https://www.fanguanghan.homes/blog/2025/20250915</link><guid isPermaLink="true">https://www.fanguanghan.homes/blog/2025/20250915</guid><description>郁达夫</description><pubDate>Mon, 15 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&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;p&gt;秋蝉的衰弱的残声，更是北国的特产；因为北平处处全长着树，屋子又低，所以无论在什么地方，都听得见它们的啼唱。在南方是非要上郊外或山上去才听得到的。这秋蝉的嘶叫，在北平可和蟋蟀耗子一样，简直像是家家户户都养在家里的家虫。&lt;/p&gt;
&lt;p&gt;还有秋雨哩，北方的秋雨，也似乎比南方的下得奇，下得有味，下得更像样。&lt;/p&gt;
&lt;p&gt;在灰沉沉的天底下，忽而来一阵凉风，便息列索落地下起雨来了。一层雨过，云渐渐地卷向了西去，天又青了，太阳又露出脸来了；著着很厚的青布单衣或夹袄的都市闲人，咬着烟管，在雨后的斜桥影里，上桥头树底下去一立，遇见熟人，便会用了缓慢悠闲的声调，微叹着互答着的说：&lt;/p&gt;
&lt;p&gt;“唉，天可真凉了——”（这了字念得很高，拖得很长。）&lt;/p&gt;
&lt;p&gt;“可不是么？一层秋雨一层凉了！”&lt;/p&gt;
&lt;p&gt;北方人念阵字，总老像是层字，平平仄仄起来，这念错的歧韵，倒来得正好。&lt;/p&gt;
&lt;p&gt;北方的果树，到秋来，也是一种奇景。第一是枣子树，屋角，墙头，茅房边上，灶房门口，它都会一株株地长大起来。像橄榄又像鸽蛋似的这枣子颗儿，在小椭圆形的细叶中间，显出淡绿微黄的颜色的时候，正是秋的全盛时期；等枣树叶落，枣子红完，西北风就要起来了，北方便是尘沙灰土的世界，只有这枣子、柿子、葡萄，成熟到八九分的七八月之交，是北国的清秋的佳日，是一年之中最好也没有的Golden Days。&lt;/p&gt;
&lt;p&gt;有些批评家说，中国的文人学士，尤其是诗人，都带着很浓厚的颓废色彩，所以中国的诗文里，颂赞秋的文字特别的多。但外国的诗人，又何尝不然？我虽则外国诗文念得不多，也不想开出账来，做一篇秋的诗歌散文钞，但你若去一翻英德法意等诗人的集子，或各国的诗文的Anthology来，总能够看到许多关于秋的歌颂与悲啼。各著名的大诗人的长篇田园诗或四季诗里，也总以关于秋的部分，写得最出色而最有味。足见有感觉的动物，有情趣的人类，对于秋，总是一样的能特别引起深沈，幽远，严厉，萧索的感触来的。不单是诗人，就是被关闭在牢狱里的囚犯，到了秋天，我想也一定会感到一种不能自已的深情；秋之于人，何尝有国别，更何尝有人种阶级的区别呢？不过在中国，文字里有一个“秋士”的成语，读本里又有着很普遍的欧阳子的《秋声》与&lt;a href=&quot;https://www.pinshiwen.com/shiji/sushi/&quot;&gt;苏东坡&lt;/a&gt;的《赤壁赋》等，就觉得中国的文人，与秋的关系特别深了。可是这秋的深味，尤其是中国的秋的深味，非要在北方，才感受得到底。&lt;/p&gt;
&lt;p&gt;南国之秋，当然是也有它的特异的地方的，比如廿四桥的明月，钱塘江的秋潮，普陀山的凉雾，荔枝湾的残荷等等，可是色彩不浓，回味不永。比起北国的秋来，正像是黄酒之与白干，稀饭之与馍馍，鲈鱼之与大蟹，黄犬之与骆驼。&lt;/p&gt;
&lt;p&gt;秋天，这北国的秋天，若留得住的话，我愿把寿命的三分之二折去，换得一个三分之一的零头。&lt;/p&gt;</content:encoded><h:img src="/_astro/thumbnail.NgnLMXpF.jpg"/><enclosure url="/_astro/thumbnail.NgnLMXpF.jpg"/></item><item><title>Funannotate 离线镜像的Docker安装</title><link>https://www.fanguanghan.homes/blog/2025/20250914</link><guid isPermaLink="true">https://www.fanguanghan.homes/blog/2025/20250914</guid><description>离线服务器一次性装好 Funannotate 的完整流程：下载、加载、修兼容、跑测试。</description><pubDate>Sun, 14 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;0. 场景&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;服务器 &lt;strong&gt;无法直连 Docker Hub&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;系统 &lt;strong&gt;Docker 版本老旧&lt;/strong&gt;（18.x 及以下），不支持 &lt;code&gt;--mount&lt;/code&gt; 语法&lt;/li&gt;
&lt;li&gt;需要 &lt;strong&gt;一次性离线部署&lt;/strong&gt; Funannotate 1.8.x 并验证可用&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;1. 获取离线镜像&lt;/h2&gt;
&lt;p&gt;| 工具  | 作用  |
|---|---|
| &lt;code&gt;dget&lt;/code&gt; | 断点续传 Docker Hub 镜像，无需 docker pull |&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# ① 下载 dget（linux/amd64）
wget -c https://gitee.com/mirrors/dget/releases/download/v0.3/dget_linux_amd64 -O dget
chmod +x dget

# ② 断点续拉（失败重复执行即可）
./dget nextgenusfs/funannotate
# 完成后得到 funannotate_latest-img.tar.gz
&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2&gt;2. 加载镜像&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker load -i funannotate_latest-img.tar.gz
docker images | grep funannotate
# 预期
# nextgenusfs/funannotate   latest   bcde41375f71   7 weeks ago   12.6 GB
&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2&gt;3. 修复「unknown flag: --mount」兼容脚本&lt;/h2&gt;
&lt;p&gt;旧版 Docker 不认 &lt;code&gt;--mount&lt;/code&gt;，官方 wrapper 会报错。直接替换为 &lt;code&gt;-v&lt;/code&gt; 版本：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cat &gt; funannotate-docker &amp;#x3C;&amp;#x3C;&apos;EOF&apos;
#!/usr/bin/env bash
realpath() {
  OURPWD=$PWD
  cd &quot;$(dirname &quot;$1&quot;)&quot;
  LINK=$(readlink &quot;$(basename &quot;$1&quot;)&quot;)
  while [ &quot;$LINK&quot; ]; do
    cd &quot;$(dirname &quot;$LINK&quot;)&quot;
    LINK=$(readlink &quot;$(basename &quot;$1&quot;)&quot;)
  done
  REALPATH=&quot;$PWD/$(basename &quot;$1&quot;)&quot;
  cd &quot;$OURPWD&quot;
  echo &quot;$REALPATH&quot;
}

USER=&quot;$(id -u $(logname)):$(id -g $(logname))&quot;
WORKDIR=&quot;$(realpath .)&quot;
TZ=&quot;$(date +&apos;%Z&apos;)&quot;

docker run --rm -it \
  --user &quot;${USER}&quot; \
  -e TZ=&quot;${TZ}&quot; \
  --workdir &quot;${WORKDIR}&quot; \
  -v &quot;${WORKDIR}:${WORKDIR}&quot; \
  nextgenusfs/funannotate:latest \
  funannotate &quot;$@&quot;
EOF

chmod +x funannotate-docker
mkdir -p ~/.local/bin
mv funannotate-docker ~/.local/bin/   # 确保目录在 $PATH
&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2&gt;4. 验证：跑官方测试&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;funannotate-docker test -t predict --cpus 12
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;出现&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#########################################################
SUCCESS: `funannotate predict` test complete.
#########################################################
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;即 &lt;strong&gt;安装成功&lt;/strong&gt;，可投入正式分析。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;5. 常用命令速查&lt;/h2&gt;
&lt;p&gt;| 任务 | 命令 |
|---|---|
| 查看帮助 | &lt;code&gt;funannotate-docker&lt;/code&gt; |
| 预测基因 | &lt;code&gt;funannotate-docker predict -i genome.fa -o out -s &quot;Aspergillus nidulans&quot;&lt;/code&gt; |
| 功能注释 | &lt;code&gt;funannotate-docker annotate -i out&lt;/code&gt; |
| 比较基因组 | &lt;code&gt;funannotate-docker compare -i out1 out2 out3&lt;/code&gt; |&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;6. 常见问题&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;加载镜像失败&lt;/strong&gt;&lt;br&gt;
→ 确认 &lt;code&gt;funannotate_latest-img.tar.gz&lt;/code&gt; 完整（&lt;code&gt;gzip -t&lt;/code&gt; 无报错）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;wrapper 执行无权限&lt;/strong&gt;&lt;br&gt;
→ &lt;code&gt;chmod +x&lt;/code&gt; 并检查 &lt;code&gt;~/.local/bin&lt;/code&gt; 是否已加入 &lt;code&gt;PATH&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;测试时提示数据库缺失&lt;/strong&gt;&lt;br&gt;
→ 首次使用执行&lt;br&gt;
&lt;code&gt;funannotate-docker setup -b all&lt;/code&gt;&lt;br&gt;
若服务器仍无法联网，参考&lt;a href=&quot;https://funannotate.readthedocs.io/en/latest/databases.html#manual-install&quot;&gt;官方手动下载数据库&lt;/a&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;至此，离线环境即可完整使用 Funannotate 全部功能。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;</content:encoded><h:img src="/_astro/thumbnail.D61Viw66.jpg"/><enclosure url="/_astro/thumbnail.D61Viw66.jpg"/></item><item><title>火炉</title><link>https://www.fanguanghan.homes/blog/2025/20250913</link><guid isPermaLink="true">https://www.fanguanghan.homes/blog/2025/20250913</guid><description>孙犁</description><pubDate>Sat, 13 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&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;p&gt;我好吃烤的东西，好吃有些糊味的东西。每天下午三点钟，我午睡起来，在它上面烤两片馒头，在炉前慢慢咀嚼着，自得其乐，感谢上天的赐与。&lt;/p&gt;
&lt;p&gt;对于我，只要温饱就可以了，只要有一个避风雨的住处就满足了。我又有何求！&lt;/p&gt;
&lt;p&gt;看来，我们的关系，是不容易断的，只要我每年冬季，能有三十元钱，买两千斤煤球，它就不会冷清，不会无用武之地，我也就会得到温暖的！&lt;/p&gt;
&lt;p&gt;火炉，我的朋友，我的亲密无间的朋友。我幼年读过两句旧诗：炉存红似火，慰情聊胜无。何况你不只是存在，而且确实在熊熊地燃烧着啊。&lt;/p&gt;
&lt;p&gt;1982年12月26日上午&lt;/p&gt;</content:encoded><h:img src="/_astro/thumbnail.CtHtbd9v.jpg"/><enclosure url="/_astro/thumbnail.CtHtbd9v.jpg"/></item><item><title>北京的春节</title><link>https://www.fanguanghan.homes/blog/2025/20250912</link><guid isPermaLink="true">https://www.fanguanghan.homes/blog/2025/20250912</guid><description>老舍</description><pubDate>Fri, 12 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&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;p&gt;儿童们忙乱，大人们也紧张。他们须预备过年吃的使的喝的一切。他们也必须给儿童赶快做新鞋新衣，好在新年时显出万象更新的气象。&lt;/p&gt;
&lt;p&gt;二十三日过小年，差不多就是过新年的“彩排”。在旧社会里，这天晚上家家祭灶王，从一擦黑儿鞭炮就响起来，随着炮声把灶王的纸像焚化，美其名叫送灶王上天。在前几天，街上就有多少多少卖麦芽糖与江米糖的，糖形或为长方块或为大小瓜形。按旧日的说法：用糖粘住灶王的嘴，他到了天上就不会向玉皇报告家庭中的坏事了。现在，还有卖糖的，但是只由大家享用，并不再粘灶王的嘴了。&lt;/p&gt;
&lt;p&gt;过了二十三，大家就更忙起来，新年眨眼就到了啊。在除夕以前，家家必须把春联贴好，必须大扫除一次，名曰扫房。必须把肉、鸡、鱼、青菜、年糕什么的都预备充足，至少足够吃用一个星期的——按老习惯，铺户多数关五天门，到正月初六才开张。假若不预备下几天的吃食，临时不容易补充。还有，旧社会里的老妈妈论，讲究在除夕把一切该切出来的东西都切出来，省得在正月初一到初五再动刀，动刀剪是不吉利的。这含有迷信的意思，不过它也表现了我们确是爱和平的人，在一岁之首连切菜刀都不愿动一动。&lt;/p&gt;
&lt;p&gt;除夕真热闹。家家赶作年菜，到处是酒肉的香味。老少男女都穿起新衣，门外贴好红红的对联，屋里贴好各色的年画，哪一家都灯火通宵，不许间断，炮声日夜不绝。在外边作事的人，除非万不得已，必定赶回家来，吃团圆饭，祭祖。这一夜，除了很小的孩子，没有什么人睡觉，而都要守岁。&lt;/p&gt;
&lt;p&gt;元旦的光景与除夕截然不同：除夕，街上挤满了人；元旦，铺户都上着板子，门前堆着昨夜燃放的爆竹纸皮，全城都在休息。&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;/p&gt;
&lt;p&gt;男男女女都出来踏月、看灯、看焰火；街上的人拥挤不动。在旧社会里，女人们轻易不出门，她们可以在灯节里得到些自由。&lt;/p&gt;
&lt;p&gt;小孩子们买各种花炮燃放，即使不跑到街上去淘气，在家中照样能有声有光的玩耍。家中也有灯：走马灯——原始的电影——宫灯、各形各色的纸灯，还有纱灯，里面有小铃，到时候就叮叮的响。大家还必须吃汤圆呀。这的确是美好快乐的日子。&lt;/p&gt;
&lt;p&gt;一眨眼，到了残灯末庙，学生该去上学，大人又去照常作事，新年在正月十九结束了。腊月和正月，在农村社会里正是大家最闲在的时候，而猪牛羊等也正长成，所以大家要杀猪宰羊，酬劳一年的辛苦。过了灯节，天气转暖，大家就又去忙着干活了。北京虽是城市，可是它也跟着农村社会一齐过年，而且过得分外热闹。&lt;/p&gt;
&lt;p&gt;在旧社会里，过年是与迷信分不开的。腊八粥，关东糖，除夕的饺子，都须先去供佛，而后人们再享用。除夕要接神；大年初二要祭财神，吃元宝汤（馄饨），而且有的人要到财神庙去借纸元宝，抢烧头股香。正月初八要给老人们顺星、祈寿。因此那时候最大的一笔浪费是买香蜡纸马的钱。现在，大家都不迷信了，也就省下这笔开销，用到有用的地方去。特别值得提到的是现在的儿童只快活的过年，而不受那迷信的熏染，他们只有快乐，而没有恐惧——怕神怕鬼。也许，现在过年没有以前那么热闹了，可是多么清醒健康呢。以前，人们过年是托神鬼的庇佑，现在是大家劳动终岁，大家也应当快乐的过年。&lt;/p&gt;</content:encoded><h:img src="/_astro/thumbnail.bbWG9-mw.jpg"/><enclosure url="/_astro/thumbnail.bbWG9-mw.jpg"/></item></channel></rss>