<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>사미즈다트</title>
  <subtitle>10s Recollection</subtitle>
  <link href="https://gitkeniwo.tech/atom.xml" rel="self"/>
  <link href="https://gitkeniwo.tech/"/>
  <updated>2026-05-09T01:35:01.000Z</updated>
  <id>https://gitkeniwo.tech/</id>
  <author>
    <name>ケニヲ</name>
  </author>
  <generator uri="https://astro.build/">Astro</generator>
  <entry>
    <title>布鲁塞尔（一回目）</title>
    <link href="https://gitkeniwo.tech/2026-05-09-brussels-day-trip/"/>
    <id>https://gitkeniwo.tech/2026-05-09-brussels-day-trip/</id>
    <published>2026-05-09T01:35:01.000Z</published>
    <updated>2026-05-09T01:35:01.000Z</updated>
    <content type="html"><![CDATA[<p>作为最不值得去/体验感最差的欧洲旅游城市，游览布塞这种任务感觉非常适合我们住在尼德兰的人，因为周末day trip实在是非常便宜便捷。<br>
如果你大老远从东亚飞过来，布塞确实是underwhelming的，但作为尼德兰长居人士，怎么能不在空闲时间游遍所有低地城市，包括布鲁塞尔呢？更何况布塞还有我心目中最高级的佛兰德斯风格的老城.</p>
<p>C’est parti</p>
<h1 id="交通">交通</h1>
<p>OP从尼德兰Eindhoven出发，最划算的方式是EC（Eurocity）。</p>]]></content>
    <summary type="html">&lt;p&gt;作为最不值得去/体验感最差的欧洲旅游城市，游览布塞这种任务感觉非常适合我们住在尼德兰的人，因为周末day trip实在是非常便宜便捷。&lt;br&gt;
如果你大老远从东亚飞过来，布塞确实是underwhelming的，但作为尼德兰长居人士，怎么能不在空闲时间游遍所有低地城市，包括布</summary>
    <category term="The Library of Babel" scheme="https://gitkeniwo.tech/taxonomy/The-Library-of-Babel/"/>
    <category term="Itineraries" scheme="https://gitkeniwo.tech/taxonomy/The-Library-of-Babel/Itineraries/"/>
    <category term="belgium" scheme="https://gitkeniwo.tech/tags/belgium/"/>
    <category term="daytrip" scheme="https://gitkeniwo.tech/tags/daytrip/"/>
  </entry>
  <entry>
    <title>禅与自行车维修艺术 - 在尼德兰给自行车前轮换内胎</title>
    <link href="https://gitkeniwo.tech/2025-12-31-change-bike-inner-tube/"/>
    <id>https://gitkeniwo.tech/2025-12-31-change-bike-inner-tube/</id>
    <published>2025-12-31T20:17:50.000Z</published>
    <updated>2025-12-31T20:17:50.000Z</updated>
    <content type="html"><![CDATA[<p>住尼德兰最糟心的是住在市中心，又没有方便的bikeshed。如果停外面的话，你的车活不过一个月就会被扎被损坏，即便是不起眼的破车。<br>
OP住的h2s的CT的bikeshed在负一楼，只有两条路通向该bikeshed：1）坐唯一一部能去负一楼的电梯下负一楼，然后经过三道门 2）通过一个地下停车场，刷卡进入，并在地下绕我们楼一圈。这样看来，如果等电梯还不知道有多挤，基本上取车就需要+5min，实在麻烦死了。</p>
<p>所以目前看来，最合适的车是可以停进屋的折叠自行车。但是此类车一般都是250+欧元，如果从墙内托运过来，还要担心尺寸以及轮胎维修无零部件的问题。</p>
<p>十二月中旬OP去微信群里找了个大婶50欧收了一辆脚刹的<strong>Omafiets</strong>（荷兰语直译过来就是「老妈车」）。OP还在沾沾自喜车况很好，结果不到一周车的前轮就废了。OP高度怀疑本车是西方大城市市中心十分常见的小混混vandalism的受害者。</p>
<p>那么，如果去土耳其街找中东修车铺换个胎呢？车推去一问，不好意思，45……</p>
<p>今天是跨年夜，窝终于下定决心，一定要把车修了，把车的前轮轮胎换了。</p>
<h1 id="bicycle-101-修车原理">Bicycle 101: 修车原理</h1>
<ol role="list">
<li>自行车轮胎中可以卸下来的结构是<code>外胎 + 内胎 + 气嘴 + 胎垫</code>。其中，外胎的横截面是个只有一半（180度）的圆环，内胎横截面则是完整圆环；内胎才是能被充气充起来的那个，但是比较脆弱，所以在内胎外面加了一层半包裹的外胎作为保护。</li>
<li>自行车除去胶皮轮胎后的铁架叫轮毂(hub)，最外面的那层可以上轮胎铁圈叫轮辋(rim)，以及径向的钢条叫辐条(spoke)。</li>
<li>内胎不光是一层胶皮，还有气嘴。气嘴可以通过自行车轮毂上一个孔安插进去。</li>
<li>车打不进去气一般是<code>内胎+气嘴</code>有问题。首先确定轮胎充不进去气的原因：我的是气嘴(valve/ventiel)与内胎(inner tube/binnenband)连接处断裂，打气时就是松的，而不是先打了气后来轮胎再瘪了。</li>
</ol>
<h1 id="tools">Tools</h1>
<p>准备以下工具。由于荷兰至少还是名义上的「自行车王国」，所以修车工具都非常成体系和标准化，相对容易购买：</p>
<img src="https://img.gitkeniwo.tech/202512/31-84ceafacb4d9c2c13503d333cf205983-1767217098.jpeg" width="50%">
<p class="img-caption">fig. 所有工具</p>
<ul role="list">
<li>开口扳手，用来卸下固定车胎的六角螺丝。
<ul role="list">
<li>英文叫Spanner或者Open-end Wrench，荷兰语为<strong>Steeksleutel</strong></li>
<li>我买的Action的Werckmann这个牌子的Adjustable Joint Pliers，荷兰语商品名为Werckmann <strong>waterpomptang</strong> 245mm，€3.99</li>
<li>按理说也可以买外六角螺丝刀（梅花扳手, ring wrench），我也买了Action的Werckmann ringsteeksleutelset 6-delig，€3.99 但没用上。</li>
</ul>
</li>
<li>Action的Tyre Repair Kit，重点是里面的<strong>撬胎棒</strong>，<strong>Bandafnemer</strong> (荷兰语 af+nemen = remove) 或 <strong>Bandenlichter</strong> 如果不急的，可以去Temu/Aliexpress自己凑单买个便宜的。</li>
<li>内胎英文叫Inner Tube，荷兰语为<strong>Binnenband</strong>。 买内胎需要选对<code>气嘴型号</code>+<code>内胎型号</code>。
<ul role="list">
<li>观察自己的轮胎，如果实在不明显可以打手电筒反光，拍照拉曲线拉对比度等，一般会标注轮胎的型号，荷兰的外胎一般会标注 <code>[ETRTO] [British] [French]</code> 三种规格，最简单易懂的是 British 英制规格, <code>outer diameter x height x width</code>，一般如同 <code>26 x 1 ⅜</code>这样，意思就是26”(英寸) + 胎宽胎高。我的胎是 <code>[26 x 1 ⅜] [37-590] [650 x 35A]</code>，其中37-590是ETRTO 标准，是EU制定的最准确的标准，650 x 35A是法制。</li>
<li>轮胎还需要注意自己气门(Valve)的型号，荷兰老款车常用英式/荷式的Dunlop，此外著名的还有法嘴Presc，和美嘴Schräder。</li>
<li>大众款山地车可以直接迪卡侬买，其他老式车如Omafiets就去著名荷兰建材超市Praxis买，可以网上下单然后预约取货，取货48小时内都可以。</li>
</ul>
</li>
</ul>
<img src="https://img.gitkeniwo.tech/202512/31-8a84c64c74b4724201822c761a6827d0-1767211385.jpeg" width="70%">
<p class="img-caption">fig. OP的轮胎型号，肉眼无法看清，拉了对比度和曲线才读出来</p>
<h1 id="开干">开干</h1>
<p>万事俱备直接开干</p>
<p>A. 首先，如果是尼德兰的冬天，你需要做的是把车推到一个<strong>温暖的地方</strong>，例如你的房间里，要不然你会被冻死。</p>
<p>B. 第二步，将自行车倒过来，方便卸轮胎（literally <strong>Swapfiets</strong> (荷兰一个著名的租车品牌))</p>
<p>C. 用活动扳手卸下你的轮胎。直接上活动扳手反方向拧，我认为还是比较轻松的。因为本帖只讨论前轮，前轮特别简单，两头各有一个六角螺丝，和两个铁片</p>
<p>D. 卸载外胎。</p>
<p>D.0 放气。一定要先放气。如果不是美嘴，请直接插下气门所有可拆的部件。</p>
<img src="https://img.gitkeniwo.tech/202512/31-fc67555acec294253b0fd887ed4f34e0-1767217099.jpeg" width="60%">
<p class="img-caption">fig. 放气</p>
<p>D.1 理解撬胎棒的构造。撬胎棒一侧是一个类似勺子的结构可以把外胎的胎唇挖出来，另一侧是一个钩子，可以系在辐条上。理想的撬胎模式如下图。</p>
<img src="https://img.gitkeniwo.tech/202512/31-3cb3909dea4f6e2b705ac1cf9f756878-1767217099.jpeg" width="30%">
<p class="img-caption">fig. 撬出来后钩到辐条上</p>
<p>D.2 OP非常不幸的遇到了外胎轮唇过紧的问题。因为之前没仔细看，直接上蛮力，直接折断了一根塑料撬胎棒，都没有撬成功。<br>
很多人也介绍了给外胎做按摩的技巧，把两侧胎唇按到轮辋的中心，因为中心是凹下去的，就可以让胎唇更送。</p>
<p>D.3 小技巧：因为反正要换内胎，直接把内胎剪断，扯出来即可。OP只能这么做了……</p>
<p>D.4 OP又很不幸的剪断了胎垫（rim tape, 荷兰语velglint）, OP并不知道有这个结构的存在，以为胎垫是损坏的内胎。需要再氪金€3.49买一根胎垫……</p>
<img src="https://img.gitkeniwo.tech/202512/31-39a33029f55105be0b4226d0a81b3480-1767217098.jpeg" width="30%">
<p class="img-caption">fig. 没有胎垫的轮毂，内胎遇到这个铁制轮辋直接就寄了</p>
<img src="https://img.gitkeniwo.tech/202601/02-6d77d4f7623bfae422a86242e37ff8a9-1767380992.jpg" width="30%">
<p class="img-caption">fig. 花重金重新购置Velglint。有时间一定要去Temu慢慢买🙂</p>
<p>OP检查了下内胎，发现漏气的原因竟然是这个胎被前任车主补过，而补过的地方坏了。</p>
<p>E. 安装内胎。需要给内胎打<strong>一点点</strong>气，让它大致有个形状。</p>
<p>E.1 先装一侧外胎。<br>
E.2 然后装内胎。1) 先使气嘴对准轮辋上的气嘴孔。 2) 把剩余部分塞进去。让外胎像个袋子兜住内胎。 3) 不要让外胎胎唇压着内胎，不然充满气直接送走. （忘了拍照了）<br>
E.3 把另一侧外胎装回来。用撬胎棒撬回最后的一点点。注意：装外胎时，需要反向使用撬胎棒。<br>
E.4 再次检查不要让外胎胎唇压着内胎，特别是气嘴对应的那一段！调整气嘴使其对着外胎肚兜的中心，不要被外胎夹住了。</p>
<img src="https://img.gitkeniwo.tech/202601/02-e0a8e4c860f91d24f630bea81dd678ad-1767379843.jpeg" width="70%">
<p class="img-caption">fig. 满血复活</p>
<p>F. 打满气。把轮胎安装回车架上。</p>
<img src="https://img.gitkeniwo.tech/202601/02-2573f889c1bdaed2928d6397efd5aef1-1767379847.jpeg" width="50%">
<p class="img-caption">fig. 快乐的扭上螺丝</p>
<h1 id="后轮">后轮</h1>
<p>Lucky that op这次只用换前轮。后轮是十分恐怖的，而且脚刹车大概还要考虑如何把后轮刹车结构一起拆下来。</p>
<div style="display:flex; gap:0.5rem;">
  <div style="flex:1;">
    <img src="https://img.gitkeniwo.tech/202601/02-8f6612e8825eb165b5615c22a3b1eabe-1767380421.jpeg" style="width:100%; aspect-ratio:4/3; object-fit:contain; ">
  </div>
  <div style="flex:1;">
    <img src="https://img.gitkeniwo.tech/202601/02-7ea5408beabfa336e677d084d92abc7b-1767380421.jpeg" style="width:100%; aspect-ratio:4/3; object-fit:contain; ">
  </div>
</div>
<p class="img-caption">fig. 看看这个可怕的结构和工作量</p>
<p>所以我又查了下换后胎的视频（关键词：荷兰语omafiets binnenband vervangen），例如<a href="https://www.youtube.com/watch?v=78lWW92kXjk&#x26;t=79s">这个老哥</a>基本上没动链条的那一侧，只拆了好拆的一侧，未卸载整个轮子，直接撬胎把内胎扯出来换了。估计这是一种思路。(let’s hope we never have to deal with smth like that…)</p>
<h1 id="最后一些毒力撕烤">最后一些毒力撕烤</h1>
<blockquote class="irc-greentext"><span class="irc-greentext__line">The real motorcycle you’re working on is a cycle called yourself. —ZAMM</span></blockquote>
<p>修车确实是一个点亮黑暗地图的过程。在下决心购置工具，OP处于天天靠走路的摆烂状态，不愿掏这份钱。不愿去了解自己修车的可能性。</p>
<p>ZAMM告诉我们，对于摩托车也好、自行车也好，这样外在的机器的态度，很大程度上也就是我们自己对于内在的自我的态度。<br>
按照ZAMM的说法，摩托车/自行车的构建遵循一套用钢铁构建的、极其严密的逻辑系统。当你购买、租赁、请人修理好一辆完整的车，只想要体验与感受兜风骑行的乐趣时，ZAMM说你本质上是Romantic的；对于更古典派（Classic）的人来说，车是beyond其外在的，是零件、机械，是一整套概念原理。</p>
<p>自行车轮胎能充气是靠内胎驱动的，而外胎仅是轮胎的浅显外在。在动手修车之前谁知道轮胎是这样组装起来的？它是在荷兰生活每日都离不开的事物，但OP对它知之甚少。<br>
生活中其它不起眼的、但窝萌习以为常的概念，也大多有如此不为人知的一面。人习惯于黑盒按照黑盒的方式运作，黑盒之内就是我们理性的边界。<br>
维修摩托车/自行车能让人快速达到心流状态，完全沉浸在工作中。大脑前额叶皮层会释放大量多巴胺，让人感知敏锐、深度专注，<a href="https://en.wikipedia.org/wiki/Default_mode_network">DMN</a>被抑制，导致「自我」的消失，修理者与机器合二为一。<br>
ZAMM所说的禅是可以推广的，也就是说，在静心静气的去关注、去理解、去探索的过程中，窝萌也可以达到那种物我合一的精神状态。</p>
<p>某种意义上讲，摩托车/自行车是外在的现代工业文明的一种具象，而维修它理解它掌控它是窝萌保持不被技术异化、并与之和谐相处的一种切入途径。</p>
<p>修自行车已被OP列为在荷兰生活的T0级技能。</p>
<h1 id="悲惨的后续">（悲惨的）后续</h1>
<p>当晚，内胎打满气后，又爆了。因为我停在家里，三点钟一声惊天地的巨响让op怀疑人生，op还以为是什么暖气片爆了，或者外面玩Cobra 8呢，起床排查一圈房间里没发现原因。。。今早起来一摸车胎又瘪了。</p>
<p>总结下可能的原因：<br>
1）内胎装进去的时候被外胎胎唇压了，尽管已经检查过<br>
2）轮毂生锈，然后胎垫不够宽<br>
3）外胎装反？</p>
<p>接下来准备尝试：<br>
1）先取下内胎，检查爆胎原因是被夹了还是因为胎垫不够还<br>
2）给轮毂除锈。a.用除锈剂 b.用砂纸或者钢丝刷<br>
3）换更宽的胎垫or真空胎垫<br>
4）装上内胎时，先不打满气<br>
5）买一个能测气压的电动pump。</p>]]></content>
    <summary type="html">&lt;p&gt;住尼德兰最糟心的是住在市中心，又没有方便的bikeshed。如果停外面的话，你的车活不过一个月就会被扎被损坏，即便是不起眼的破车。&lt;br&gt;
OP住的h2s的CT的bikeshed在负一楼，只有两条路通向该bikeshed：1）坐唯一一部能去负一楼的电梯下负一楼，然后经过三道</summary>
    <category term="Tweets" scheme="https://gitkeniwo.tech/taxonomy/Tweets/"/>
    <category term="Lifehacks" scheme="https://gitkeniwo.tech/taxonomy/Tweets/Lifehacks/"/>
    <category term="netherlands" scheme="https://gitkeniwo.tech/tags/netherlands/"/>
  </entry>
  <entry>
    <title>致死的疾病：在安东尼奥尼《过客》里看克氏存在主义</title>
    <link href="https://gitkeniwo.tech/2025-12-22-the-sickness-unto-death-the-passenger/"/>
    <id>https://gitkeniwo.tech/2025-12-22-the-sickness-unto-death-the-passenger/</id>
    <published>2025-12-22T01:02:24.000Z</published>
    <updated>2025-12-22T01:02:24.000Z</updated>
    <content type="html"><![CDATA[<blockquote class="irc-greentext"><span class="irc-greentext__line">Herr! gieb uns blöde Augen</span><span class="irc-greentext__line">für Dinge, die nichts taugen</span><span class="irc-greentext__line">und Augen voller Klarheit</span><span class="irc-greentext__line">in alle deine Wahrheit</span><span class="irc-greentext__line">.</span><span class="irc-greentext__line">主！赐给我们愚钝的眼睛</span><span class="irc-greentext__line">去注视那些无用的事物</span><span class="irc-greentext__line">并赐给我们清明的眼睛</span><span class="irc-greentext__line">去洞察你的一切真理</span></blockquote>
<p>OP今日去鹿特丹Kino大荧幕看了安东尼奥尼《过客》<a href="https://letterboxd.com/film/the-passenger/">The Passenger</a> (1975) ，今年2025正好也值本片上映50周年，但没有官方渠道的大荧幕重映，是Kino自己办的尼科尔森影展里轮映的。</p>
<p><img src="https://pub-2fc18c59b6b142f0a477a14c8186cbb9.r2.dev/new-memos/2025-12/21-22-41-24-IMG_4242.jpeg" alt="" loading="lazy" decoding="async"></p>
<p class="img-caption">fig. Kino散场</p>
<p>下面简单记录一些观感：</p>
<ul role="list">
<li>本片最大的直感就是欧陆现代主义碰上<strong>新好莱坞</strong>。虽然是安老师对白最多的电影之一，但依然是反类型的（类型片的话，身份冒用后的剧情动机都比较有目的性，大概就是阿兰德龙《Plein Soleil》这样）。</li>
<li>好莱坞的制片与资本，加上不同于冷冰冰的欧洲男主角（如安东尼奥尼疏离三部曲的阿兰德龙、马斯楚安尼）的带有反叛玩世不恭气质的尼科尔森、反类型片、反英雄主人公、自由的delusion。这些都是新好莱坞的标志。</li>
<li>70年代的安东尼奥尼三部曲《放大》、《扎布勒斯角》和《过客》与60年疏离三部曲在形式上咋一看天壤之别（黑白-彩色、弱情节-情节较多，etc），但细品的话内核又是其精神延续。N年前OP已经写过《<a href="/2021-05-16-film-lavventura/">奇遇</a>》，之后有空的话会一再写写OP更喜欢的《<a href="https://letterboxd.com/dareinu/film/la-notte/">夜</a>》。</li>
<li>电影从头到尾就不是想拍一个thriller，而是给你展示尼克尔森的主角精神崩溃走向毁灭的过程，此处精神崩溃的核心症结，类似克尔凯郭尔所描述的「<strong>致死的疾病</strong>」。</li>
</ul>
<blockquote class="irc-greentext"><span class="irc-greentext__line">绝望是「精神」中、「自我」中的疾病，以这样一种方式，可以是一种三重性：绝望地不自觉到具有一个自我（不真正的绝望）；绝望地不想要「是自己」；绝望地想要「是自己」</span><span class="irc-greentext__line">——《畏惧与颤栗 恐惧的概念 <a href="https://www.goodreads.com/book/show/24972.The_Sickness_Unto_Death">致死的疾病</a>》 Søren Kierkegaard</span></blockquote>
<ul role="list">
<li>简单来说克氏认为致死的疾病是绝望。绝望的第二层是意识到了深层次自我的存在，但不愿意成为理想的、应该成为的、深层次的自我。</li>
<li>本篇中，尼克尔森的角色Locke厌倦身为战地记者的自我，拼命逃离自我但不得，所以深陷绝望。</li>
<li>克氏继续说：「致死的疾病」中的「死」是<strong>最严重的精神上的糟糕状态</strong>。想死却死不了。</li>
<li>最直接的体现就是，即便他偷天换日重启人生，他依然摆脱不了此病，依然被焦虑虚无的深层自我折磨。</li>
<li>克氏认为人生有Aesthetic，Ethical，Religious三个阶段。我们知道克老师是著名的基督徒，大名鼎鼎的「信仰之跃」，后来在夺宝奇兵3中indie在神庙里就完成了此跃。而信教就是克式存在主义的最终思考结果。在克的论文的第二部分里，他通过把绝望认定为「sin」来完成了这一层论证。</li>
<li>Ethical和Aesthetic在本片中都有所指：Locke的老婆和他旧身份不断追踪他的故事线，是人生Ethical的一面；而他丢掉军火商任务，带<strong>Maria Schneider</strong>开车游览安达卢西亚，做个过客的情节，是人生Aesthetic的一面。克认为Aesthetic的生活必然导向忧郁与虚无。</li>
<li>最后的、影史留名的长镜头，可以理解为Locke「自我的瓦解」。移动的摄影机制造出一种灵魂脱壳的感觉，从Locke熟悉的记录者、旁观者的角度看，Locke的主体已经被致死的疾病所吞噬。北非政治集团派出的杀手消灭了他的肉体，而他的精神在这之前早已毁灭。</li>
</ul>]]></content>
    <summary type="html">&lt;blockquote class=&quot;irc-greentext&quot;&gt;&lt;span class=&quot;irc-greentext__line&quot;&gt;Herr! gieb uns blöde Augen&lt;/span&gt;&lt;span class=&quot;irc-greentext__line&quot;&gt;für D</summary>
    <category term="The Library of Babel" scheme="https://gitkeniwo.tech/taxonomy/The-Library-of-Babel/"/>
    <category term="Films" scheme="https://gitkeniwo.tech/taxonomy/The-Library-of-Babel/Films/"/>
    <category term="antonioni" scheme="https://gitkeniwo.tech/tags/antonioni/"/>
    <category term="film" scheme="https://gitkeniwo.tech/tags/film/"/>
    <category term="art-cinema" scheme="https://gitkeniwo.tech/tags/art-cinema/"/>
    <category term="new-hollywood" scheme="https://gitkeniwo.tech/tags/new-hollywood/"/>
  </entry>
  <entry>
    <title>Wait, is this Aachen or Düsseldolf? Nijmegen 半日游</title>
    <link href="https://gitkeniwo.tech/2025-12-13-nijmegen-day-trip/"/>
    <id>https://gitkeniwo.tech/2025-12-13-nijmegen-day-trip/</id>
    <published>2025-12-13T22:37:42.000Z</published>
    <updated>2025-12-13T22:37:42.000Z</updated>
    <content type="html"><![CDATA[<p>小记一下今日奈梅亨半日游。其实，如果不是荷兰Cineville院线的《<a href="https://letterboxd.com/film/zootopia-2/">Zootopia 2</a>》只在Kino, Nijmegen的Lux，和Leiden几家影院放送，OP也没想到可以顺便来逛逛这个窝经常下班路过转车、但从没真正踏足过的相对有名的小城（经典周五下班路线：<em>Boxmeer -> Nijmegen -> Arnhem -> Utrecht/Rotterdam/Amsterdam</em>）。</p>
<p>说是小城，其实人家是Gelderland第二大城，人口略次于其双子城Arnhem。铁路交通方面可以经Arnhem去往乌特（阿姆、鹿特丹海牙）、Zwolle，也可以走Oss联通Den Bosch，另外就是我去实习最常搭的由Arriva运营的RS11经Boxmeer联通林堡，开往Venlo 和 Roermond。通达度其实跟Eindhoven差不多，而且时间也差不多。</p>
<h1 id="抵达">抵达</h1>
<p><img src="https://img.gitkeniwo.tech/202512/14-3ce823889e3c464f754b6055d3d6bc19-1765667065.jpeg" alt="" loading="lazy" decoding="async"></p>
<p>本周末十分幸运，跟前两周一丝阳光也没有的凄风苦雨大相径庭，一下车就是美美的晴天。OP看到XHS说荷兰Action最近居然在卖川南油辣子，于是下车第一件事就是去最近的Action扫货，结完账出来发现最大的感受是这个地方十分有坡度，与Arnhem和靠近亚琛的Heerlen相似，而这里离德国边境还有些距离。</p>
<h1 id="初感">初感</h1>
<p><img src="https://img.gitkeniwo.tech/202512/13-7296514a1e871af578f77348bd22b701-1765665608.jpeg" alt="" loading="lazy" decoding="async"></p>
<p>如上图所示的非常尼德兰式的红砖白边建筑在下坡道路两侧鳞次栉比，精心修建的小草坪，Arnhem跟这个的感觉一模一样。同样是有坡度的亚琛，两侧的房屋一般会更高一些，绿化更少一些，缺乏一种精致维护的老钱感。荷兰的这些街道几乎就是从沙盘模型里3D打印出来的一般精致整洁，外立面年年焕新，就像日本的那些崭新的木结构建筑一样，相比其他地区的混乱与沧桑少了些烟火气。</p>
<h1 id="kronenburgpark">Kronenburgpark</h1>
<p><img src="https://img.gitkeniwo.tech/202512/14-a08557610ed6bb042351db0794afdcda-1765672010.jpeg" alt="" loading="lazy" decoding="async"></p>
<p>从火车站去老城，第一个景点就是Kronenburgpark。这个公园已经与周围社区融为一体，标志着老城的西门，公园内有中世纪城墙遗址。走到公园北侧后继续往西走就是老城，你会发现从公园前的一段路开始这一路都是上坡路，Nijmegen老城就是建在一个小土丘上的，Kronenburgpark本来应该是老城的护城河。</p>
<h1 id="oude-stad">Oude Stad</h1>
<img src="https://img.gitkeniwo.tech/202512/14-38c65c21a421e1ebfad961b333113fff-1765672387.jpeg" width="50%">
<p>Lange Hezelstraat是城中心在西边的起点。一路也是上坡路。由于路窄显得十分拥挤，街边业态不是简单的荷兰各地可见的franchise，有一些非常独特内装带奇幻感的indie小店卖手工艺品、香薰等。</p>
<p><img src="https://img.gitkeniwo.tech/202512/14-b3563fa9d7ee66e824ddf1885d3164cc-1765672388.jpeg" alt="" loading="lazy" decoding="async"></p>
<p>Sint Stevenskerk，给人的感觉很像亚琛Dom，不过是一个新教教堂，堂内装饰是典型的白墙裸石的加尔文主义简约质朴感。Gelderland本身也跟北威州一样属于公教-新教的过渡区域，公教新教信徒比例五五开。</p>
<div style="display:flex; gap:0.5rem;">
  <div style="flex:1;">
    <img src="https://img.gitkeniwo.tech/202512/14-5d03476ac68cc85470faf499ef16c690-1765672388.jpeg" style="width:100%; aspect-ratio:2/3; object-fit:contain; ">
  </div>
  <div style="flex:1;">
    <img src="https://img.gitkeniwo.tech/202512/14-56e014dc53d69214b21cc11feb021102-1765672389.jpeg" style="width:100%; aspect-ratio:2/3; object-fit:contain; ">
  </div>
</div>
<p>之前说奈梅亨老城建在一个小土丘上，这座kerk自然就是这座土丘的制高点。教堂与周围紧凑的间隙也使得游客难以有很好的角度拍摄捕捉教堂的全貌，这点又跟Aachen很像，难怪说Nijmegen的Valkhof就是查理曼的宫殿之一呢，这种高度带来的德味与它与别的荷兰城市的vibe大相径庭。</p>
<div style="display:flex; gap:0.5rem;">
  <div style="flex:1;">
    <img src="https://img.gitkeniwo.tech/202512/14-e6d9de336e883d343a046c24c12e0a04-1765672396.jpeg" style="width:100%; aspect-ratio:3/3; object-fit:contain; ">
  </div>
  <div style="flex:1;">
    <img src="https://img.gitkeniwo.tech/202512/14-cb85b54cc93faede53624828e467fa77-1765672397.jpeg" style="width:100%; aspect-ratio:3/3; object-fit:contain; ">
  </div>
</div>
<p>右图：医院骑士团的banner。医院骑士团原名圣若望(荷兰语写法就是Sint Jan)，且一直延续到了现代（马耳他骑士团）。</p>
<p>左图，堂内展出的经文铭刻：</p>
<blockquote class="irc-greentext"><span class="irc-greentext__line">天是我的座位，</span><span class="irc-greentext__line">地是我的脚凳；</span><span class="irc-greentext__line">你们要为我建造何等的殿宇？</span><span class="irc-greentext__line">哪里是我安息的地方呢？</span><span class="irc-greentext__line">ISA 66:1</span></blockquote>
<p>下半段：</p>
<blockquote class="irc-greentext"><span class="irc-greentext__line">我当日传给你们的，原是从主领受的，就是主耶稣被卖的那一夜，拿起饼来，祝谢了，就擘开，说：</span><span class="irc-greentext__line">“这是我的身体，为你们舍的；你们应当如此行，为的是纪念我。”</span><span class="irc-greentext__line">饭后，也照样拿起杯来，说：“这杯是用我的血所立的新约；你们每逢喝的时候，要如此行，为的是纪念我。”</span><span class="irc-greentext__line">你们每逢吃这饼、喝这杯，是表明主的死，直等到他来。</span><span class="irc-greentext__line">1CO 11:23-26</span></blockquote>
<p>上段来自以赛亚书，大意是说，Lord不住在人所造的宫殿（教堂）中，下段来自哥多林前书，大意是说圣餐的饼和酒不是公教认为的Lord的肉和血，都是易懂的加尔文宗不同于公教的核心观念。</p>
<p><img src="https://img.gitkeniwo.tech/202512/14-eaa4f9ffdde4a86ff47deee622335f9e-1765673313.jpeg" alt="" loading="lazy" decoding="async"></p>
<p>Kerk对面的Latijnse School，十六世纪修建的拉丁语学校。</p>
<p><img src="https://img.gitkeniwo.tech/202512/14-7deb589667cdea8112484e351202ab18-1765673331.jpeg" alt="" loading="lazy" decoding="async"></p>
<p><img src="https://img.gitkeniwo.tech/202512/14-186fc7d1753030b20c4c2a08d8dc1a0e-1765675068.jpeg" alt="" loading="lazy" decoding="async"></p>
<p>每个荷兰城市都有的Grote Markt，望向Sint Stevenskerk的塔尖。因为是周六，今天还有集市。</p>
<p><img src="https://img.gitkeniwo.tech/202512/14-bd9d4dcc831864a7be47b5f7aa22d4e7-1765673314.jpeg" alt="" loading="lazy" decoding="async"></p>
<p>Grote Markt北侧拐角可见的In de Blaauwe Hand Café，和背后的Sint StevensKerk。</p>
<p><img src="https://img.gitkeniwo.tech/202512/14-ff0e4501ea2c14c78ea52df02a694e89-1765673315.jpeg" alt="" loading="lazy" decoding="async"></p>
<p><img src="https://img.gitkeniwo.tech/202512/14-05e6df2746a0b09aec47b0b83882422d-1765673330.jpeg" alt="" loading="lazy" decoding="async"></p>
<p>偶然遇到的一家黑胶店，vibe很足，selection比较老登，多为70s pop/rock, jazz, 也有一些左翼爱的afro, latin american之类的，但没见到什么indie alternative，也没见到日碟.</p>
<p><img src="https://img.gitkeniwo.tech/202512/14-0d3fdaa918c0e562e294fdae2a78fc64-1765673331.jpeg" alt="" loading="lazy" decoding="async"></p>
<p>Grote Makkt北侧的Commanderie van Sint Jan，OP粗翻一个医院骑士团之家，十三世纪时被用作医院骑士团的修道院和圣餐堂。十六世纪宗教改革后，新教横扫尼德兰联省共和国，该堂也就没落下来，二战被炸平。现在的建筑是69年重建的，目前建筑内是一座酒厂+其它餐吧。</p>
<p><img src="https://img.gitkeniwo.tech/202512/14-dae4370a5e6e16616c6f9f40cd8f4a6f-1765675227.jpeg" alt="" loading="lazy" decoding="async"></p>
<h1 id="valkhof">Valkhof</h1>
<p>继续沿着街走，尽头是一座公园。这就是Valkhof公园，作为城内的制高点之一，它也是奈梅亨河景的观景位。</p>
<p><img src="https://img.gitkeniwo.tech/202512/14-e312349a2d08ae52dd611521bfb3262e-1765675230.jpeg" alt="" loading="lazy" decoding="async"></p>
<p>Waalbrug，即Waal河大桥，是一座公路桥，1936年通车，二战中屡次被炸毁。Waalbrug也是很久以来唯一一座连通河南北岸的公路桥。你如果坐NS从Nijmegen北上Arnhem的话，就会发现NS走的是一座铁路+自行车桥。</p>
<p>提到二战著名的市场花园行动（《遥远的桥》），大家可能会第一时间想到Arnhem的那座铁桥，但实际上Nijmegen才是盟军行动第一天(9月17日)的目标，第二天(9.18)才是Arnhem和Eindhoven（对，还有Eindhoven，实际上每年9.18也是Eindhoven的<a href="https://nl.wikipedia.org/wiki/Bevrijdingsdefil%C3%A9_(Eindhoven)">解放日</a>，市内会有庆典，Lab-1也会重映《<a href="https://letterboxd.com/film/a-bridge-too-far/">遥远的桥</a>》）。</p>
<p>如果你对二战感兴趣的话，Nijmegen另一座公路桥De Oversteek有一个Waal Crossing Memorial纪念碑，城西南还有个公墓。但是一搜别的纪念碑，发现很多都在别处，比如Groesbeek的加拿大士兵公墓，（BTW，我司上上个月去团建还去了<a href="https://nl.wikipedia.org/wiki/Groesbeek">Groesbeek</a>农家乐给奶牛剃毛洗澡，）</p>
<p>这是因为要从后方开阔处空降，切断东侧与德国的森林的支援。从Boxmeer开车去Groesbeek一路上右手边都是「壮观」的德国小山和森林，有山的地方就是荷兰和德国的国界。</p>
<img src="https://img.gitkeniwo.tech/202601/13-6f436ad517d923adad784e4f2b6fbe4c-1768259819.jpg" width="70%">
<p class="img-caption">fig. 顺着荷德边境的小路开车，看到这种小土坡就是德国了。有些路段还会开到山里，那么这些山里的路段就已经是德国了（手机运营商会弹消息）</p>
<p>这种辽阔而平和、河对面有种田园牧歌感的河景，实在是和<em>杜塞</em>太像了，不过杜塞蛮缺乏一个高处的观景位。此外，安特卫普也是差不多的感觉，河边有一个免费进入的堡垒，但安特卫普那条河看起来比较丑。</p>
<p>Valkhof公园南边是Valkhof博物馆。Valkhof是查理曼在全国修建的宫殿之一，但更早的历史是罗马人来这里修建的堡垒，所以Gelderland这一片也是全荷兰最早有定居点的地区。由于OP博物馆卡没续费，就没进去。</p>
<p><img src="https://img.gitkeniwo.tech/202512/14-6d168daab4ab65f244ae00f36129db01-1765675076.jpeg" alt="" loading="lazy" decoding="async"></p>
<h1 id="lux">Lux</h1>
<p>欣赏完美景后，差不多也到电影的时间了。Lux在奈梅亨历史博物馆门口。详尽的测评可以看OP Cineville影院Guide。</p>
<p>这块区域的开发非常优秀，给人upscale感。到处都是中世纪风格的砖瓦外立面，城墙大门内的Cafe又用上现代感的玻璃内装和吧台，临近圣诞，虽然人不是很多，但街道尺度非常紧凑，显得很festive。</p>
<p><img src="https://img.gitkeniwo.tech/202512/14-8adea800299a796b58a7dcf40fc80c1b-1765675088.jpeg" alt="" loading="lazy" decoding="async"></p>
<p><img src="https://img.gitkeniwo.tech/202512/14-3c289943629ce6aec6e1452ffece7da7-1765675094.jpeg" alt="" loading="lazy" decoding="async"></p>
<p>橘色建筑即为奈梅亨历史博物馆。</p>
<p><img src="https://img.gitkeniwo.tech/202512/14-e3ab1b1e0cde2ffc1cd156bf63a30edd-1765675088.jpeg" alt="" loading="lazy" decoding="async"></p>
<p>附近的商店街有一家评论数特别多的书店Dekker van der Vegt。</p>
<h1 id="回程">回程</h1>
<p>看完电影后，才六点就已经黑得伸手不见五指了，所以OP直接回去了。然后非常不幸的遇到了Oss - Den Bosch这一段列车完全故障，延误了一小时才回去。</p>
<p><img src="https://img.gitkeniwo.tech/202512/14-8910fbf1049629a38d2dfd7a9e29b396-1765676811.jpeg" alt="" loading="lazy" decoding="async"></p>
<p>夜幕下的的Lux。</p>
<p><img src="https://img.gitkeniwo.tech/202512/14-f6182e78b3790729352bca19cd2f631f-1765676811.jpeg" alt="" loading="lazy" decoding="async"></p>
<p>路过时个人觉得造型很有特色的Petrus Canisiuskerk。</p>
<p><img src="https://img.gitkeniwo.tech/202512/14-14890b204da326989644f6349096e58a-1765676812.jpeg" alt="" loading="lazy" decoding="async"></p>
<p>亮灯的Nijmegen Station。</p>
<p><em>PS: 话说这样写游记的话还是太累了，下次可以尝试再精简一点</em></p>]]></content>
    <summary type="html">&lt;p&gt;小记一下今日奈梅亨半日游。其实，如果不是荷兰Cineville院线的《&lt;a href=&quot;https://letterboxd.com/film/zootopia-2/&quot;&gt;Zootopia 2&lt;/a&gt;》只在Kino, Nijmegen的Lux，和Leiden几家影院放送，OP</summary>

  </entry>
  <entry>
    <title>Forget it, Jake. It's Chinatown.</title>
    <link href="https://gitkeniwo.tech/2025-11-21-forget-it-jake-its-chinatown/"/>
    <id>https://gitkeniwo.tech/2025-11-21-forget-it-jake-its-chinatown/</id>
    <published>2025-11-21T02:44:58.000Z</published>
    <updated>2025-11-21T02:44:58.000Z</updated>
    <content type="html"><![CDATA[<img src="https://img.gitkeniwo.tech/202601/12-39ce9553eae9e31c430f728da9e94537-1768251890.jpg" width="40%">
<p>最近Kino/Eye/Lab111刚好可以凑成一个Jack Nicholson特展，又另外可以凑成一个新好莱坞特展……</p>
<p>托了Kino的福，让OP终于能在大荧幕上看上一次窝心中的新好莱坞顶峰，罗曼波兰斯基的 <em>Chinatown</em>.</p>
<p>新好莱坞大概是OP觉得无论是视觉Aesthetic还是作品内核主题都十分现代高级的一个门类（贴上OP在信箱创建的个人向的片单[[<a href="https://letterboxd.com/dareinu/list/new-holleywood/">New Holleywood 新好莱坞</a>]]），这其中Nicholson可以说是当之无愧的门面，无论说是新好莱坞开山作之一的 <em>Easy Rider</em>, 还是后来的 <em>Five Easy Pieces</em>, <em>The Last Detail</em>，亦或是最出圈的 <em>One Flow over Cookoo’s Nest</em> ，基本上离了他不行。</p>
<p>而Nicholson最标志性的特征在OP看来就是他的眉毛和眼睛，即便是正常的表情，也永远透露着轻佻与桀骜不驯的感觉，以至于多年后重看 Zootopia 时狐尼克出场后OP才惊呼：草，这他妈不就是比着尼科尔森画的吗？</p>
<img src="https://img.gitkeniwo.tech/202601/12-b6187866d3b27bea7e404fd66f5dd292-1768251746.jpg" width="50%">
<p class="img-caption">fig. Kino 1号厅</p>
<p>之前在memos里也说了，新好莱坞的主题永远就是幻灭：自由的幻灭【《The Graduate》，能选择的未来全部已经被社会选好；《Taxi Driver》】，反叛的失败【《Easy Rider》,嬉皮士的rebellion在黑暗的社会面前是不可能的】，主体的崩溃【《The Conversation》，存在本身与现代社会的本质矛盾】。终极版就是文明的幻灭《Apocalypse Now》。</p>
<p><em>Chinatown</em>大概属于第二种，反叛的幻灭，这个主题后来还有更大众向的《飞越疯人院》。制度背后深不见底的黑暗让一切反叛都停滞，没有出路、无法逃离，上周看Easy Rider时OP也<a href="https://samizdat.fly.dev/memos/PSGTTFfXrsGmwjNKrKVEUe">发表过感想</a>：</p>
<blockquote class="irc-greentext"><span class="irc-greentext__line">只有前现代有逃避system的自由（aka. 赞米亚）</span><span class="irc-greentext__line">后现代没有地方逃离</span><span class="irc-greentext__line">后现代的逃离是一种自由的姿态</span></blockquote>
<p><em>Chinatown</em>勾画黑暗的手法，在OP看来与克苏鲁的呼唤是精神同构的：LA的体制就如宇宙真相不可理解，越查案真相越变得模糊，拉莱耶在片中就是LA唐人街背后的权力迷宫。言语逻辑在这里面无法运作，想要靠理性发现世界真相的侦探壬，不断走向自身的毁灭，悲剧是充满宿命论的。Chinatown曾是Jake好心办坏事的地方，试图帮助他人却害了人家；最后十分钟Jake再次追踪Evelyn来到Chinatown试图拯救她，却直接目睹了她被其父谋杀。Jake说，在Chinatown当警察时，你最好的做法就是什么都不做，因为语言也不通，你永远搞不清楚那边到底发生了毛事。本质上来说波兰斯基也是个乳化大师，深知🀄️人行事之道。</p>
<p>《Story》的作者Robert McKee就是个巨大的唐人街吹，认为Chinatown是近乎完美的现代剧本，将古典叙事原理与现代悲剧融合得无可挑剔。然后窝发现很多人看了McKee的安利后反而心生抵触情绪……</p>
<p>而拍出了<em>Chinatown</em>的波兰斯基，仔细一想也是<em>Chinatown</em>的一种镜像：才遭遇妻子Sharon Tate被曼森家族屠戮一事，自己后来又深陷性侵案件，出逃瑞士。波兰斯基本身便是黑暗的系统的产物，是其作品的悲剧的回响。</p>
<!--# New Hollywood 简史

# 更大的黑暗，停滞的时间，唐人街

# Polanski-->]]></content>
    <summary type="html">&lt;img src=&quot;https://img.gitkeniwo.tech/202601/12-39ce9553eae9e31c430f728da9e94537-1768251890.jpg&quot; width=&quot;40%&quot;&gt;
&lt;p&gt;最近Kino/Eye/Lab111刚好可以凑成一个Jac</summary>
    <category term="The Library of Babel" scheme="https://gitkeniwo.tech/taxonomy/The-Library-of-Babel/"/>
    <category term="Films" scheme="https://gitkeniwo.tech/taxonomy/The-Library-of-Babel/Films/"/>
    <category term="new-hollywood" scheme="https://gitkeniwo.tech/tags/new-hollywood/"/>
  </entry>
  <entry>
    <title>Migrate Blog Images to New Domain Name</title>
    <link href="https://gitkeniwo.tech/2025-11-12-migrate-blog-images/"/>
    <id>https://gitkeniwo.tech/2025-11-12-migrate-blog-images/</id>
    <published>2025-11-12T16:07:18.000Z</published>
    <updated>2025-11-12T16:07:18.000Z</updated>
    <content type="html"><![CDATA[<p>Image hosting can be a pain in your arse, especially when you have a legacy blog with legacy posts from when you were young and didn’t know stuff about maintenance and cloud storage, CLI tools, all that jazz. Thankfully now i’m a bit more experienced than before. With the new domain name i got for free in my <a href="https://education.github.com/pack">Github student pack</a>, let’s destroy all these hideous image links once and for all.</p>
<p>Let’s begin by Ripgreping all the image links and output to a text file:</p>
<pre class="astro-code astro-code-themes everforest-light everforest-dark" style="--shiki-light:#5c6a72;--shiki-dark:#d3c6aa;--shiki-light-bg:#fdf6e3;--shiki-dark-bg:#2d353b; overflow-x: auto;" tabindex="0" data-language="sh"><code><span class="line"><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080">rg</span><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F"> -io</span><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F"> -N</span><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F"> -I</span><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080"> \</span></span>
<span class="line"><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F">  -g</span><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080"> '!2025-11-12-migrate-blog-images.md'</span><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080"> \</span></span>
<span class="line"><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F">  -g</span><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080"> '!2020-11-24-blog-migration.md'</span><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080"> \</span></span>
<span class="line"><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F">  -e</span><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080"> '(https?://[^") >]+?\.(jpe?g|png|gif|webp))'</span><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080"> \</span></span>
<span class="line"><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F">  -e</span><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080"> '((\.?/|/)[^") >]+\.(jpe?g|png|gif|webp))'</span><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080"> \</span></span>
<span class="line"><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F">  source/_posts/</span><span style="--shiki-light:#F57D26;--shiki-dark:#E69875"> |</span><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080"> sort</span><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F"> -u</span><span style="--shiki-light:#F57D26;--shiki-dark:#E69875"> ></span><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F"> all_image_links.txt</span></span></code></pre>
<p>This will give you something like:</p>
<pre class="astro-code astro-code-themes everforest-light everforest-dark" style="--shiki-light:#5c6a72;--shiki-dark:#d3c6aa;--shiki-light-bg:#fdf6e3;--shiki-dark-bg:#2d353b; overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>───────┬───────────────────────────────────────────────────────────────────────────────────</span></span>
<span class="line"><span>       │ File: all_image_links.txt</span></span>
<span class="line"><span>───────┼───────────────────────────────────────────────────────────────────────────────────</span></span>
<span class="line"><span>   1   │ ./img/b674-iufmpmp1256471.png</span></span>
<span class="line"><span>   2   │ /440px-Charles_Gleyre_-_Daphnis_et_Chloe_revenant_de_la_montagne.jpg</span></span>
<span class="line"><span>   3   │ /img/20-06-06-darkmode.jpg</span></span>
<span class="line"><span>   4   │ /img/20-06-06-pic.png</span></span>
<span class="line"><span>   5   │ /img/20-06-06-tag.png</span></span>
<span class="line"><span>   6   │ /img/20-06-06-tag1.png</span></span>
<span class="line"><span>   7   │ /img/20-06-06-tag2.png</span></span>
<span class="line"><span>   8   │ /img/20-06-06-tag3.png</span></span>
<span class="line"><span>   9   │ /img/20-06-09-pretapork.jpg</span></span>
<span class="line"><span>  10   │ /img/20-06-09-siri.jpg</span></span>
<span class="line"><span>  11   │ /img/20-06-someWalrus_simplified_bit_notation.png</span></span>
<span class="line"><span>  12   │ /img/20-11-10.png</span></span></code></pre>
<p>You see. I was a messy man before, with all sort of image links here and there. Some were uploaded to Imgur, some are shamelessly hotlinked from a dedicated Github repo, or exploiting imgur, some are just primitive relative paths to my local <code>source/img/</code> folder, and some are already in my R2 bucket and need migration to the new domian name.</p>
<p>After manually picking out some apparently wrong links, now we can script for each of these types of links, migrating them accordingly. For local images and images in other places, we would like to upload them again to our R2 bucket first. I have <a href="https://github.com/Kuingsmile/PicList-Core">piclist-core</a> cli configured on my mac, so this will be our go-to connector to R2.</p>
<p>Since the http API of piclist is a lot of work to deal with, let’s just use the CLI, and generate the commmands using python scripts in a jupyter notebook.</p>
<pre class="astro-code astro-code-themes everforest-light everforest-dark" style="--shiki-light:#5c6a72;--shiki-dark:#d3c6aa;--shiki-light-bg:#fdf6e3;--shiki-dark-bg:#2d353b; overflow-x: auto;" tabindex="0" data-language="python"><code><span class="line"><span style="--shiki-light:#939F91;--shiki-light-font-style:italic;--shiki-dark:#859289;--shiki-dark-font-style:italic"># classify_images.py</span></span>
<span class="line"><span style="--shiki-light:#DF69BA;--shiki-dark:#D699B6">from</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA"> pathlib </span><span style="--shiki-light:#DF69BA;--shiki-dark:#D699B6">import</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA"> Path</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">urls </span><span style="--shiki-light:#F57D26;--shiki-dark:#E69875">=</span><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080"> Path</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">(</span><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F">"all_image_links.txt"</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">)</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">.</span><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080">read_text</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">()</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">.</span><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080">splitlines</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">()</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#F85552;--shiki-dark:#E67E80">def</span><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080"> classify</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">(url):</span></span>
<span class="line"><span style="--shiki-light:#F85552;--shiki-dark:#E67E80">    if</span><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F"> "img.gitkeniwo.me"</span><span style="--shiki-light:#F57D26;--shiki-dark:#E69875"> in</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA"> url:</span></span>
<span class="line"><span style="--shiki-light:#F85552;--shiki-dark:#E67E80">        return</span><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F"> "r2_existing"</span></span>
<span class="line"><span style="--shiki-light:#F85552;--shiki-dark:#E67E80">    if</span><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080"> any</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">(x </span><span style="--shiki-light:#F85552;--shiki-dark:#E67E80">in</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA"> url </span><span style="--shiki-light:#F85552;--shiki-dark:#E67E80">for</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA"> x </span><span style="--shiki-light:#F85552;--shiki-dark:#E67E80">in</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA"> [</span></span>
<span class="line"><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F">        "githubusercontent"</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">, </span><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F">"github.com"</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">, </span><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F">"imgur.com"</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">,</span></span>
<span class="line"><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">    ]):</span></span>
<span class="line"><span style="--shiki-light:#F85552;--shiki-dark:#E67E80">        return</span><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F"> "needs_upload"</span></span>
<span class="line"><span style="--shiki-light:#F85552;--shiki-dark:#E67E80">    if</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA"> url</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">.</span><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080">startswith</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">((</span><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F">"/"</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">)):</span></span>
<span class="line"><span style="--shiki-light:#F85552;--shiki-dark:#E67E80">        return</span><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F"> "local"</span></span>
<span class="line"><span style="--shiki-light:#F85552;--shiki-dark:#E67E80">    return</span><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F"> "unknown"</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">groups </span><span style="--shiki-light:#F57D26;--shiki-dark:#E69875">=</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA"> {</span><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F">"r2_existing"</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">: [], </span><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F">"needs_upload"</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">: [], </span><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F">"local"</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">: [], </span><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F">"unknown"</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">: []}</span></span>
<span class="line"><span style="--shiki-light:#F85552;--shiki-dark:#E67E80">for</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA"> url </span><span style="--shiki-light:#F85552;--shiki-dark:#E67E80">in</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA"> urls:</span></span>
<span class="line"><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">    groups[</span><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080">classify</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">(url)]</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">.</span><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080">append</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">(url)</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#F85552;--shiki-dark:#E67E80">for</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA"> name, items </span><span style="--shiki-light:#F85552;--shiki-dark:#E67E80">in</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA"> groups</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">.</span><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080">items</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">():</span></span>
<span class="line"><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080">    Path</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">(</span><span style="--shiki-light:#3A94C5;--shiki-dark:#7FBBB3">f</span><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F">"images_</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">{name}</span><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F">.txt"</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">)</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">.</span><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080">write_text</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">(</span><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F">"</span><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080">\n</span><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F">"</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">.</span><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080">join</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">(items))</span></span>
<span class="line"><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080">    print</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">(</span><span style="--shiki-light:#3A94C5;--shiki-dark:#7FBBB3">f</span><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F">"</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">{name}</span><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F">: </span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">{</span><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080">len</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">(items)}</span><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F"> entries"</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">)</span></span></code></pre>
<p>This helps you classify the images into 4 groups: existing R2 images, images that need to be re-uploaded, local images and irrelevant/unknown images. Now deal with each group one by one.</p>
<p>For local images, this gives you the picgo cli command to upload them all:</p>
<pre class="astro-code astro-code-themes everforest-light everforest-dark" style="--shiki-light:#5c6a72;--shiki-dark:#d3c6aa;--shiki-light-bg:#fdf6e3;--shiki-dark-bg:#2d353b; overflow-x: auto;" tabindex="0" data-language="python"><code><span class="line"><span style="--shiki-light:#F85552;--shiki-dark:#E67E80">with</span><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080"> open</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">(</span><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F">"images_local.txt"</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">, </span><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F">"r"</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">) </span><span style="--shiki-light:#F85552;--shiki-dark:#E67E80">as</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA"> f:</span></span>
<span class="line"><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">    local_images </span><span style="--shiki-light:#F57D26;--shiki-dark:#E69875">=</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA"> f</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">.</span><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080">read</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">()</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">.</span><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080">splitlines</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">()</span></span>
<span class="line"><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">    </span></span>
<span class="line"><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080">print</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">(</span><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F">"picgo u "</span><span style="--shiki-light:#F57D26;--shiki-dark:#E69875"> +</span><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F"> " "</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">.</span><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080">join</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">([</span><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F">"source"</span><span style="--shiki-light:#F57D26;--shiki-dark:#E69875"> +</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA"> i </span><span style="--shiki-light:#F85552;--shiki-dark:#E67E80">for</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA"> i </span><span style="--shiki-light:#F85552;--shiki-dark:#E67E80">in</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA"> local_images])) </span></span></code></pre>
<p>Print it out, copypaste and run it. You will get a list of new image links. Copypaste them back to the ipynb and parse them into a list <code>replaced_local_links</code>.</p>
<p>Remember when configuring your picgo R2 uploader, add a md5 hash to your filenaming pattern, because simple <code>filename</code> + <code>timestamp</code> could still cause duplication when you feed same-named files simultaneously.</p>
<p>Now we have the old links and the new links. Create a sed command generator:</p>
<pre class="astro-code astro-code-themes everforest-light everforest-dark" style="--shiki-light:#5c6a72;--shiki-dark:#d3c6aa;--shiki-light-bg:#fdf6e3;--shiki-dark-bg:#2d353b; overflow-x: auto;" tabindex="0" data-language="python"><code><span class="line"><span style="--shiki-light:#F85552;--shiki-dark:#E67E80">def</span><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080"> create_sed_commands</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">(images,</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA"> replaced_links):</span></span>
<span class="line"><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">    sed_commands </span><span style="--shiki-light:#F57D26;--shiki-dark:#E69875">=</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA"> []</span></span>
<span class="line"><span style="--shiki-light:#F85552;--shiki-dark:#E67E80">    for</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA"> original, replaced </span><span style="--shiki-light:#F85552;--shiki-dark:#E67E80">in</span><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080"> zip</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">(images, replaced_links):</span></span>
<span class="line"><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">        command </span><span style="--shiki-light:#F57D26;--shiki-dark:#E69875">=</span><span style="--shiki-light:#3A94C5;--shiki-dark:#7FBBB3"> f</span><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F">"rg -l '</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">{original}</span><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F">' source/_posts/ |"</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA"> \</span></span>
<span class="line"><span style="--shiki-light:#F57D26;--shiki-dark:#E69875">            +</span><span style="--shiki-light:#3A94C5;--shiki-dark:#7FBBB3"> f</span><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F">" xargs sed -i '' 's#</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">{original}</span><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F">#</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">{replaced}</span><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F">#g'"</span></span>
<span class="line"><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">            </span></span>
<span class="line"><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">        sed_commands</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">.</span><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080">append</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">(command)</span></span>
<span class="line"><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">        </span></span>
<span class="line"><span style="--shiki-light:#939F91;--shiki-light-font-style:italic;--shiki-dark:#859289;--shiki-dark-font-style:italic">    # save to a .sh file</span></span>
<span class="line"><span style="--shiki-light:#F85552;--shiki-dark:#E67E80">    with</span><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080"> open</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">(</span><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F">"replace_image_links.sh"</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">, </span><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F">"w"</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">) </span><span style="--shiki-light:#F85552;--shiki-dark:#E67E80">as</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA"> f:</span></span>
<span class="line"><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">        f</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">.</span><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080">write</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">(</span><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F">"</span><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080">\n</span><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F">"</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">.</span><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080">join</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">(sed_commands))</span></span></code></pre>
<p>And just run the .sh script in your hexo root folder.</p>
<pre class="astro-code astro-code-themes everforest-light everforest-dark" style="--shiki-light:#5c6a72;--shiki-dark:#d3c6aa;--shiki-light-bg:#fdf6e3;--shiki-dark-bg:#2d353b; overflow-x: auto;" tabindex="0" data-language="sh"><code><span class="line"><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080">$</span><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F"> chmod</span><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F"> +x</span><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F"> replace_image_links.sh</span></span>
<span class="line"><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080">$./replace_image_links.sh</span></span></code></pre>
<p>Done replacing the old image links.</p>
<p>The same applies to Github images that need to be re-uploaded. Just generate the picgo upload commands, run them, get the new links, generate and execute the sed commands to replace them.</p>
<p>For existing R2 images, we don’t need to re-upload. Just use <code>urllib</code> to replace the netloc part of the url from <code>img.gitkeniwo.me</code> to <code>img.gitkeniwo.tech</code>.</p>
<pre class="astro-code astro-code-themes everforest-light everforest-dark" style="--shiki-light:#5c6a72;--shiki-dark:#d3c6aa;--shiki-light-bg:#fdf6e3;--shiki-dark-bg:#2d353b; overflow-x: auto;" tabindex="0" data-language="python"><code><span class="line"><span style="--shiki-light:#DF69BA;--shiki-dark:#D699B6">from</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA"> urllib </span><span style="--shiki-light:#DF69BA;--shiki-dark:#D699B6">import</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA"> parse</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">new_images </span><span style="--shiki-light:#F57D26;--shiki-dark:#E69875">=</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA"> []</span></span>
<span class="line"><span style="--shiki-light:#F85552;--shiki-dark:#E67E80">for</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA"> url </span><span style="--shiki-light:#F85552;--shiki-dark:#E67E80">in</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA"> old_images:</span></span>
<span class="line"><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">    parsed </span><span style="--shiki-light:#F57D26;--shiki-dark:#E69875">=</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA"> parse</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">.</span><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080">urlparse</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">(url)</span></span>
<span class="line"><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">    new_netloc </span><span style="--shiki-light:#F57D26;--shiki-dark:#E69875">=</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA"> parsed</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">.</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">netloc</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">.</span><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080">replace</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">(</span><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F">"img.gitkeniwo.me"</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">, </span><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F">"img.gitkeniwo.tech"</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">)</span></span>
<span class="line"><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">    new_url </span><span style="--shiki-light:#F57D26;--shiki-dark:#E69875">=</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA"> parsed</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">.</span><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080">_replace</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">(netloc</span><span style="--shiki-light:#F57D26;--shiki-dark:#E69875">=</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">new_netloc)</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">.</span><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080">geturl</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">()</span></span>
<span class="line"><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">    new_images</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">.</span><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080">append</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">(new_url)</span></span></code></pre>
<p>And generate corresponding sed commands as before.</p>
<p>Of course, if it’s a imgur link, you could get <code>502</code> when uploading with picgo cli. This needs to be manually done and i am lucky enough to have only a handful of imgur links.</p>]]></content>
    <summary type="html">&lt;p&gt;Image hosting can be a pain in your arse, especially when you have a legacy blog with legacy posts from when you were young and didn’t kn</summary>
    <category term="Blogging" scheme="https://gitkeniwo.tech/taxonomy/Blogging/"/>
    <category term="script" scheme="https://gitkeniwo.tech/tags/script/"/>
    <category term="cli" scheme="https://gitkeniwo.tech/tags/cli/"/>
    <category term="image-hosting" scheme="https://gitkeniwo.tech/tags/image-hosting/"/>
    <category term="migration" scheme="https://gitkeniwo.tech/tags/migration/"/>
  </entry>
  <entry>
    <title>HK Day Trip, 港卡开户</title>
    <link href="https://gitkeniwo.tech/2025-07-03-hk-day-trip/"/>
    <id>https://gitkeniwo.tech/2025-07-03-hk-day-trip/</id>
    <published>2025-07-03T01:49:09.000Z</published>
    <updated>2025-07-03T01:49:09.000Z</updated>
    <content type="html"><![CDATA[<p>对于长居在墙外的CN护照持有者来说，港户是必不可少的金融工具。它的好处有：</p>
<ul role="list">
<li>内地-香港-欧洲低损耗转账路线</li>
<li>香港券商无损出入金</li>
<li>欧洲税务居民身份资产隔离</li>
<li>海外出U转移回国链条<br>
更重要的是，作为CN护照持有者，港户是一个相对来说更稳定的境外账户，不会因为你在欧美的居住身份到期而被关闭。</li>
</ul>
<p>所以这次回国顺路去香港的主要目的就是办理港户开户，防止未来大门被焊死，顺便也记录下旅程。</p>
<h1 id="ams---pkx---szx">AMS -> PKX -> SZX</h1>]]></content>
    <summary type="html">&lt;p&gt;对于长居在墙外的CN护照持有者来说，港户是必不可少的金融工具。它的好处有：&lt;/p&gt;
&lt;ul role=&quot;list&quot;&gt;
&lt;li&gt;内地-香港-欧洲低损耗转账路线&lt;/li&gt;
&lt;li&gt;香港券商无损出入金&lt;/li&gt;
&lt;li&gt;欧洲税务居民身份资产隔离&lt;/li&gt;
&lt;li&gt;海外出U转移回国</summary>
    <category term="The Library of Babel" scheme="https://gitkeniwo.tech/taxonomy/The-Library-of-Babel/"/>
    <category term="Itineraries" scheme="https://gitkeniwo.tech/taxonomy/The-Library-of-Babel/Itineraries/"/>
    <category term="guide" scheme="https://gitkeniwo.tech/tags/guide/"/>
    <category term="hk" scheme="https://gitkeniwo.tech/tags/hk/"/>
  </entry>
  <entry>
    <title>吉美酱大战粉红机器人: 烈焰·红唇·千禧年怀旧</title>
    <link href="https://gitkeniwo.tech/2025-06-03-yoshimi-battles-the-pink-robots/"/>
    <id>https://gitkeniwo.tech/2025-06-03-yoshimi-battles-the-pink-robots/</id>
    <published>2025-06-03T15:55:12.000Z</published>
    <updated>2025-06-03T15:55:12.000Z</updated>
    <content type="html"><![CDATA[<p>六月二号，一个美好的周一。上周六才去阿姆看了Stereolab，今天又终于在ticketswap上蹲到了49欧的The Flaming Lips (lips) 的票！算上4欧服务费，其实跟首发抢票没区别。</p>
<p>由于月底就要回国了，本月内都充斥着浮躁的氛围。周一周二直接翘班，去康窝萌滴老伙计滴烈焰红唇👄。</p>
<p>打开setlist，OP发现在这场之前，红唇居然<a href="https://www.setlist.fm/search?country=nl&#x26;query=the+flaming+lips">来过荷兰19次</a>，不过上次来已然是2018，再之前2017,2009，主要集中在千禧年前后，可以说尼德兰人民的老朋友了。。。仔细一看Paradiso也去过4次，Melkweg去过3次。本次的Venue：乌特的Tivolivredenburg，2017年也来过一次。</p>
<h1 id="前情提要">前情提要</h1>
<p>说说窝印象中的红唇这个团。大多数人最容易接触到的，最有名的reference，当然是由詹姆斯滚handpick的、（创意疑似<a href="https://samizdat.fly.dev/memos/3wwFnDV2cAFF4nPgLLh5hs">抄袭自PTA《Boogie Nights》的</a>）、<del>（让扎斯林暴怒的（disclaimer 我也是扎斯林））</del>、2023年上映的《银河护卫队3》OST 《Awesome Mix Vol.3》，第6个track用了红唇的《Do You Realize??》。</p>
<img src="https://upload.wikimedia.org/wikipedia/en/7/74/Guardians_of_the_Galaxy_Vol._3_poster.jpg" alt="Awesome Mix Vol.3" style="display:block;margin:0 auto;width:40%">
<p class="img-caption">Fig.1 Guardians of the Galaxy Vol.3</p>
<p>跟滚导以前vol.1和vol.2的70s poprock登味歌单不同，这首可以说是滚味OST里罕见的2000s indie rock。此时银3里的镜头是Quill一行人拿到芯片后，准备去救Rocket，开船穿越星际之门的场景。</p>
<p><img src="https://img.gitkeniwo.tech/202511/19-a9cb95840eebb026634cd54e81df6f88-1763566687.jpeg" alt="" loading="lazy" decoding="async"><br>
<img src="https://img.gitkeniwo.tech/202511/19-0ff60dd9701cfc1b1e7a9d5a9c99173c-1763566687.jpeg" alt="" loading="lazy" decoding="async"></p>
<p class="img-caption">Fig.2&#x26;3 电影截图</p>
<p>Do You Realize??收录于2002年发行的，也是该团最广为人知的一张砖《Yoshimi Battles the Pink Robot》。专辑名称据说来自于主唱Wayne Coyne的一位朋友抗癌的经历，粉红机器人，表层上是对抗科幻机器人的隐喻、对抗癌症的隐喻，但更深层次上，是对抗生活中各种失序和无常的隐喻。<a href="https://rateyourmusic.com/release/album/the-flaming-lips/yoshimi-battles-the-pink-robots/">RYM</a>评分3.85 / 5.0 from 29,407 ratings，rym的标签打了<em>新迷幻</em>Neo-psychedelia, <em>梦泡</em> Dream pop，和Space Rock Revival，虽然窝觉得跟梦泡没什么关系。</p>
<p><img src="https://upload.wikimedia.org/wikipedia/en/7/7c/TheFlamingLips-YoshimiBattlesThePinkRobots.jpg" alt="" loading="lazy" decoding="async"></p>
<p>OP认为Do You Realize??这支单曲的核心情绪是一种温柔的doomerism，在浩瀚宇宙的小失序中重建属于个人的小小秩序。延续于又区别于詹姆斯滚的御用乐队——<em>ELO</em> 70s的华丽宇宙摇滚风，Do You Realize??舍弃了流摇中的摇滚元素(derocked)，但使用了宇宙漂浮感合成器作为情绪底色，掺入迷幻乐常用的轻飘干净的吉他音色，营造出一种稀薄而柔软的感觉。</p>
<p>放到时代背景下看，这种音乐风格的对比其实也暗喻了后911时代的普遍doomer心态。ELO的宇宙观里同样会夹杂melodious的太空伤感，但ELO本身是积极的宇宙探索派；后911时代更多凸显了渺小和无力感，用<strong>宇野常宽</strong>的话来说，就是进入了00年代宏大叙事崩塌后リトル・ピープル的时代，此时红唇这支单曲就像虚无深空中打过来的一道霓虹，电影里imax屏幕上同步展示一团迷魅的星云，Quill面对着Rocket生死未卜的命运，仔细一想这曲目也蛮服务于银护3剧情此时从宇宙奇观过渡到情感核心的情节。</p>
<p>不过窝第一次接触到 lips，那肯定比银护3要早，可以追踪到窝刚上本科那时开始听干草叉2003年发布的<a href="https://pitchfork.com/features/lists-and-guides/5923-top-100-albums-of-the-1990s/?page=10">90年代最佳专辑榜</a>。那时 lips 的另一张神砖《The Soft Bulletin》直接被干草叉干到了<strong>90年代第三名</strong>。这是什么概念呢？排他前面的，是<strong>MBV</strong>的《缺爱》和radiohead的<strong>OK Computer</strong>。排他后面的，有NMH的<strong>越洋飞机</strong>(#4)，<strong>人行道</strong>的S&#x26;E(#5)、CRCR(#8)，<strong>Nirvana</strong>的Nevermind(#6)…… 这大概也是大部分年轻indie友第一次慕名而来听它的契机吧。遗憾的是，这个03版的榜在22年重排了，大量「白人男性中心主义」的indie rock被黑泡、R&#x26;B、女性歌手、电子乐顶了下去，直接结果是柔软公告被血洗到了90+名，MBV的《缺爱》（亚逼音乐圈子顶流）也顺理成章挤掉了OK Computer成为了榜首。（盯鞋或又赢。。。）</p>
<p><img src="https://img.gitkeniwo.tech/202511/19-0c62091e92c012c1bc552709a7434627-1763569708.jpg" alt="" loading="lazy" decoding="async"></p>
<p class="img-caption">Fig.5 曾经的干草叉第三名。风流总被、雨打风吹去</p>
<img src="https://img.gitkeniwo.tech/202511/19-6a7d447384cf296ae222065a46bce741-1763569617.jpg" alt="MBV" style="display:block;margin:0 auto;width:40%">
<p>柔软公告+Yoshimi确实就是 lips 两大门面，rym打分打到了3.88 / 5.0 from 26,056 ratings，风格标签同样有neo-psychedelia。柔软公告这个名字大意就是关于人类内心脆弱、柔软的部分(the soft part)的公告，对每一个巨大但无法被报道的内心事件，崩溃、失落、伤感进行大张旗鼓的记录。如果说yoshimi是粉红色的霓虹，柔软公告就是暖黄乳白的柔光，在主题传达方面比yoshimi更加脚踏实地一些。大量的弦乐+鼓点运用营造出一种高密度的饱和情绪，潮湿、悲伤又带有一丝暖意，带上耳机时随时感觉Wayne Coyne双膝跪地在你面前撕心裂肺的开麦。</p>
<h1 id="tivolivredenburg场馆介绍">TivoliVredenburg·场馆介绍</h1>
<p>那么，在这个夏日的周一，等NS晚高峰时间(6:30pm)过了以后，OP拿着带有Dal Vrij订阅的OV卡从E村刷进NS闸机。从E村去乌特47分钟，live一般八点过开始，时间刚好，还可以在乌特车站门口东方行买点东西。车窗外，NS列车驶过一片片绿色的原野与平和的运河，由于荷兰的高纬度+欧洲中部夏令时，7点半到乌特时，外面还是与正午无区别的白昼。</p>
<p>这也是OP第一次来打卡Tivoli这个场子，所以稍微多介绍一下。Tivoli这个场子，可以说是indie乐队来荷兰巡的四大首选之一，另外三个是Paradiso、Melkweg（阿姆斯特丹>莱顿广场）、AFAS Live（阿姆斯特丹>Bijlmer ArenA）。由于位处荷兰NS线网的绝对中心，且到阿姆也就25min左右，10min的发车间隔，坐落在Utrecht C.门口的Tivoli也成为一个交通便利的热门场馆选择。而且由于Utrecht C.的枢纽地位，在演出结束后，你坐车离开乌特是很难感受到在Bijlmer看完演唱会赶车的那种痛苦的。</p>
<p>走出Utrecht C.之后，径直走入面前的大商场Hoog Catharijne，在商场的中庭下一楼电梯，Tivoli就在中庭的左手边。走出商场北门，便能看到运河旁的Tivoli大楼，楼下是晚间熙熙攘攘的Cafe，Bistro和Bar。商场侧有一个入口，但正门其实在Lange Viestraat一侧。</p>
<p>Tivoli始建于00年代乌特的车站区域改造计划，known as <a href="https://nl.wikipedia.org/wiki/CU2030">CU2030</a>，在已被拆除的Muziekcentrum Vredenburg音乐中心原址上修建的。目前乌特车站周边完美的TOD商业布局+自行车地下停车场+市内交通集散枢纽+写字楼+运河恢复+现代化的广场，都是拜此项目所赐。BTW E村去年也发布了类似的车站改造计划，但落实到乌特这种程度起码要去2040年了。</p>
<p><img src="https://img.gitkeniwo.tech/202511/19-9f3a467ccd45e01f21232a660f54b5ff-1763571607.jpeg" alt="" loading="lazy" decoding="async"></p>
<p class="img-caption">Fig.7 从Hoog Catharijne二楼望向窗外的TivoliVredenburg</p>
<p><img src="https://img.gitkeniwo.tech/202511/19-3d90a1798d3bbe101c2bd1d4581dcde6-1763571991.jpeg" alt="" loading="lazy" decoding="async"></p>
<p class="img-caption">Fig.8 平日从TivoliVredenburg门口望向Hoog Catharijne</p>
<p><img src="https://img.gitkeniwo.tech/202511/20-a0662502553b3e1beff69753d84895ad-1763601500.jpeg" alt="" loading="lazy" decoding="async"></p>
<p class="img-caption">Fig.9 当晚散场后发现Hoog Catharijne挂上了骄傲月旗</p>
<p>走进TivoliVredenburg，首先感觉就是布局非常紧凑。一楼也是一些Cafe和清吧，会有驻唱乐队表演。人工检票在一楼通往二楼的楼梯。检票走上二楼，发现二楼其实是一个音乐厅（Grote Zaal）。Tivoli一共据说有5个厅。Livehouse演出的话一般都在Ronda这个厅，设计容量是2000人，Ronda的话还要继续上3/4楼。ronda内是个古罗马扇形剧场的结构，3楼对应Ronda的一楼第一排，4或者5楼对应Ronda最后一排。此外还有个叫Pandora的livehouse厅，设计容量700人。</p>
<p><img src="https://img.gitkeniwo.tech/202511/19-cc755dab02d109165ba288a9ba927ec2-1763572202.jpeg" alt="" loading="lazy" decoding="async"></p>
<p><img src="https://img.gitkeniwo.tech/202511/19-bbfee65f048170cf7c117971884c6288-1763572211.jpeg" alt="" loading="lazy" decoding="async"></p>
<p class="img-caption">Fig.11 复古风的灯牌</p>
<p><img src="https://img.gitkeniwo.tech/202511/20-daa64d53f726bb0c4088849d96c836f5-1763601638.jpeg" alt="" loading="lazy" decoding="async"></p>
<p class="img-caption">Fig.12 一楼有一些驻唱的新人乐团</p>
<p>一般来说，荷兰这些Livehouse都是一个重要的社交场所，荷兰人开场前会早早的到，买酒，然后站在里面聊天。看场子是否拥挤，如果是那种老登场子，例如蒂尔堡的013 Poppodium，完全不打挤，还可以优雅的边听边举杯。但是呢，在兰斯塔德的所有的热门乐队的场子，你就别想优雅了，因为要占个位置都很难，尤其是要跟人均身高一米八的荷兰人竞争。你前面一两个高个子的老哥就可以完全ruin你的整场体验。</p>
<p><img src="https://img.gitkeniwo.tech/202511/19-8ba0528bfee3f8609543f04a425f8255-1763572590.jpeg" alt="" loading="lazy" decoding="async"></p>
<p class="img-caption">Fig.13 经典的荷兰Livehouse布局，一楼一般是站立的池子，楼上才能有座，但是一般没人坐，因为坐下来就看不到了</p>
<h1 id="lips">Lips</h1>
<h2 id="上半场">上半场</h2>
<p>本场非常幸运，这次巡主要就是巡Yoshimi Battles the Pink Robots全砖，比现在很多老登团只在发新砖出来巡、巡的一多半setlist都是新砖曲目良心多了。前半场是Yoshimi全砖按顺序来，后半场是热门曲目，每场会灵活调整。</p>
<p>经过漫长的舞台道具准备后，前奏终于响起，机器人终于要站起来了，随后灯光火力全开，神说要有光，《Fight Test》。机器人站起来的那个瞬间，心中的期待值瞬间被拉满——<strong>草！原来真的有Pink Robots!!!</strong> 早已循环过几百遍的砖，真实地在眼前摊开，本科时的OP大概不会想到有这一天。Fight Test也是我此砖第二爱的曲目。前奏结束Wayne Coyne登场。Fight Test这首很多人都说像《Father and Son》😂，作为一张概念砖的开场曲目，亮色轻巧的旋律，但歌词设定的未来环境显得有点暗黑童话，大概是在开头主体意识觉醒，起来加入战斗的意思。。。</p>
<p><img src="https://img.gitkeniwo.tech/202511/19-12da2a7349de18ed63a6a380f7ea32a6-1763579970.jpg" alt="" loading="lazy" decoding="async"></p>
<p><img src="https://img.gitkeniwo.tech/202511/19-515cafb1aa1221b6bdcc050b804b72a1-1763579479.jpeg" alt="" loading="lazy" decoding="async"></p>
<p>之后是第二轨《One More Robot》，画风突然转变为冰冷机械的电子感，是机器人觉醒</p>
<blockquote class="irc-greentext"><span class="irc-greentext__line">Unit, three-thousand twenty-one, is warming, makes a humming sound, when its circuit duplicates, emotion</span></blockquote>
<p>随后是与专辑同名曲目Yoshimi pt.1, 已经介绍过了是抗癌曲目，背景还加入了日文营造exotic感（笑）。</p>
<img src="https://img.gitkeniwo.tech/202511/19-14c678914bb9e635bea1b432512dbbfd-1763580522.jpg" alt="yoshimi" style="display:block;margin:0 auto;width:40%">
<p>Yoshimi pt.2 是纯电子乐。机器人也一起嗨起来了，Wayne开始往场地里扔球，气氛比较欢乐。</p>
<p><img src="https://img.gitkeniwo.tech/202511/20-f8ec440226a765e8a1890f8f7f503da0-1763594985.jpeg" alt="" loading="lazy" decoding="async"></p>
<p>接下来In the morning of magicians，是OP本砖最爱，从前奏开始就不断高能，有一种说不上来的神性在里面，仿佛意识不断扩宽，达到某种超感的境地。<strong>Oh, what is love and what is hate?</strong> Wayne Coyne在中间那段伴奏会拿出小号开始吹。Ego tripping at the gates of hell. 延续了一种忧伤电子的氛围，堕落于宇宙之门。</p>
<p>Are you a hypnotist?? 会literally把你<a href="https://www.bilibili.com/video/BV1D3MazCEW1/">闪瞎</a>，伴奏的那几个合成器音效特别好听，像是不断闪烁的霓虹幻象，循环反复的吟唱凸显出一种对于自身存在主体性的困惑。</p>
<p><img src="https://img.gitkeniwo.tech/202511/20-1191714e1ac64da64fed594354b90b92-1763595691.jpeg" alt="" loading="lazy" decoding="async"></p>
<p>It’s summertime, 让OP想到了2022年A24发行的电影《晒后假日》，明亮到过曝的世界带来失落与空洞的感觉。也是OP在这砖最爱的几首。Do you realize?? 上面已经分析过了，不必赘述，但Wayne Coyne确实也是知道这是最出圈的一首，还<a href="https://www.bilibili.com/video/BV1m7MazzEyL">准备了一大段话</a>来暖场。BTW虽然Coyne在r/indiehead风评很差，但他舞台表现还是非常耐斯的，lips的舞台道具，对比其他indie乐队的寒酸现场，简直就是豪华全家桶了。</p>
<p>All we have is now. 每次听到这里，就知道快要结束了。Approaching Pavonis Mons by Balloon (Utopia Planitia)，Yoshimi的结尾曲，字面译为「乘坐气球接近帕弗尼斯山 (乌托邦平原)」，是一首instrumental。有一种迷醉、破碎后，乘坐热气球升空到达彼岸的感觉，充满仪式感。</p>
<p><img src="https://img.gitkeniwo.tech/202511/20-ca960d1f7bb2f9116e0362600a707ad7-1763596265.jpg" alt="" loading="lazy" decoding="async"></p>
<p class="img-caption">Fig.18 有没有《猫猫的奇幻漂流(Flow)》中，蛇鹫升天场景的Déjàvu？</p>
<h2 id="下半场">下半场</h2>
<p>又经过极其痛苦的半小时中场休息后，下半场开始了。She Don’t Use Jelly，收录93年的Transmissions from the satelite heart，是声破天上播放量前五高的曲目，Coyne在场地投放了更多球，场面十分欢乐。Flowers of Neptune 6，收录于后期新砖，是后期曲目中较为悦耳的一首。</p>
<p>Pompeii Am Götterdämmerung （德语，字面译为「庞贝在诸神黄昏之时」），又是一首不去现场get不到的。在此之前，我一直对At war with the mystics不怎么感冒。现场由于器乐的声音开得很大，让我才发现这首的伴奏真的诡异又唯美，现场表演没有人声时Coyne会不断旋转一根连着灯泡的电线，等到他人声时他会双膝跪地开唱，就像某种retro-futuristic的科幻宗教祭祀仪式，Coyne的声音仿佛不断回旋的咒语，一切都是为了迎接某种黑暗癫狂的爆发，很有post-apocalyptical的vibe。。。看得我直起鸡皮疙瘩</p>
<p><img src="https://img.gitkeniwo.tech/202511/20-15d84ecc7e47e6c6b1e3c02a73249c42-1763597642.jpg" alt="" loading="lazy" decoding="async"></p>
<p>Waitin’ for a Superman 收录于柔软公告，是全砖播放量第二高的曲目，也是全砖情绪崩溃的中心点，大意讲的是超人永远不会来，作为后现代的原子人，we are doomed, but that’s ok. 整支曲子没有高潮，听起来起来轻盈柔软，不断上升下坠循环往复，就像不断的吸入copium，然后破碎、沉溺。</p>
<img src="https://img.gitkeniwo.tech/202511/20-0a003567aa50539bbbe065757c5742d1-1763598441.jpg" alt="waitin for superman" style="display:block;margin:0 auto;width:40%">
<p>还有就是Wayne会真的穿上超人服装唱这首 lol。</p>
<p>The Yeah Yeah Yeah Song，也收录于At war with the mystics，是该砖播放量最高的曲目，会请一个brainrot吉祥物过来挥手，十分欢乐。</p>
<p>然后会进入安可。安可曲目有四首，三首都是柔软公告的。</p>
<p>The Spark That Bled是柔软公告第三轨，也是OP最爱之一，有着全砖最仙的前奏，整首曲目像一场四幕话剧，从前奏的轻柔到中间情绪过载的激昂，到过渡思索导致的崩坏，再过渡到最后温柔的和解。流血的火花，流血的灵感，有点头脑内部的疯狂宇宙掀翻小池塘的感觉。一切都是那么meta。Coyne会站在一个球里唱这首，像极了那个meme。之后，他会让观众托着仓鼠球把他送到人群中间去。</p>
<p><img src="https://img.gitkeniwo.tech/202511/20-343d0c46b15061ae240d1650a0dcfed3-1763599465.jpeg" alt="" loading="lazy" decoding="async"></p>
<img src="https://img.gitkeniwo.tech/202511/20-7820f1bab750257a4b408dc917d3447a-1763599671.webp" style="display:block;margin:0 auto;width:40%">
<p>A Spoonful Weighs a Ton是柔软公告第二轨，一勺能有一吨重，也就是现在常说的，情绪价值吧……情绪比现实更大。本首的舞台也是会把人亮瞎，光怪陆离。</p>
<p>倒数第二首，是翻唱Daniel Johnston 的 <strong>True Love Will Find You in the End</strong>。这首也是翻唱界的老朋友了，Beck, Wilco都翻唱过，甚至差评如潮的小丑2原声带里，华金菲尼克斯也翻唱过。。。</p>
<p>至于本场压轴的安可，当然是<a href="https://www.bilibili.com/video/BV18Z7xznEnS/">Race for the Prize</a>，其本身是柔软公告的第一轨，所以每次听到Race for the Prize的One two one + 前奏就感觉DNA动了，也是lips最出圈的一首之一，整体听起来非常festive，作为压轴自然再合适不过。</p>
<h1 id="小结">小结</h1>
<p>本场live其实证明了lips的舞台视觉表现也是其作品艺术感的重要一环，比如 Pompeii Am Götterdämmerung 在现场的效果实在太美丽，aura太强，是声破天不能给你的感受。作为一个90s干草叉indie乐队，lips的舞台比其他家花样多很多，Coyne虽然黑料多多，整体是一个灰白长发的控制欲强的怪老头形象，但他确实是lips的门面和灵魂，也让演出极具观赏性。</p>
<p>23年詹姆斯滚放出银护3的OST后，OP才发现连lips都可以算作能给作品增加怀旧感的古董乐队了。时代的眼泪了。OP会永远喜欢Yoshimi和柔软公告！</p>]]></content>
    <summary type="html">&lt;p&gt;六月二号，一个美好的周一。上周六才去阿姆看了Stereolab，今天又终于在ticketswap上蹲到了49欧的The Flaming Lips (lips) 的票！算上4欧服务费，其实跟首发抢票没区别。&lt;/p&gt;
&lt;p&gt;由于月底就要回国了，本月内都充斥着浮躁的氛围。周一周二</summary>
    <category term="The Library of Babel" scheme="https://gitkeniwo.tech/taxonomy/The-Library-of-Babel/"/>
    <category term="Music" scheme="https://gitkeniwo.tech/taxonomy/The-Library-of-Babel/Music/"/>
    <category term="indie" scheme="https://gitkeniwo.tech/tags/indie/"/>
    <category term="netherlands" scheme="https://gitkeniwo.tech/tags/netherlands/"/>
    <category term="live" scheme="https://gitkeniwo.tech/tags/live/"/>
  </entry>
  <entry>
    <title>The Old Church in Amsterdam</title>
    <link href="https://gitkeniwo.tech/2025-05-14-the-old-church-in-amsterdam/"/>
    <id>https://gitkeniwo.tech/2025-05-14-the-old-church-in-amsterdam/</id>
    <published>2025-05-14T01:19:29.000Z</published>
    <updated>2025-05-14T01:19:29.000Z</updated>
    <content type="html"><![CDATA[<p><img src="https://pub-2fc18c59b6b142f0a477a14c8186cbb9.r2.dev/new-memos/2025-05/13-23-24-57-IMG_0805-min.jpeg" alt="" loading="lazy" decoding="async"></p>
<p><img src="https://pub-2fc18c59b6b142f0a477a14c8186cbb9.r2.dev/new-memos/2025-05/13-23-25-03-IMG_0796-min.jpeg" alt="" loading="lazy" decoding="async"></p>
<p>OP今日路过De Wallen(也就是红灯区），想到了昆德拉书里曾这么写过阿姆斯特丹的Oude Kerk</p>
<blockquote class="irc-greentext"><span class="irc-greentext__line"><em>A Short Dictionary of Misunderstood Words (concluded)</em></span><span class="irc-greentext__line">.</span><span class="irc-greentext__line"><strong>THE OLD CHURCH IN AMSTERDAM</strong></span><span class="irc-greentext__line">.</span><span class="irc-greentext__line">There are houses running along one side of the street, and behind the large ground-floor shop-front windows all the whores have little rooms and plushly pillowed armchairs in which they sit up close to the glass wearing bras and panties. They look like big bored cats.</span><span class="irc-greentext__line">On the other side of the street is a gigantic Gothic cathedral dating from the fourteenth century.</span><span class="irc-greentext__line">Between the whores’ world and God’s world, like a river dividing two empires, stretches an intense smell of urine.</span><span class="irc-greentext__line">Inside the Old Church, all that is left of the Gothic style is the high, bare, white walls, the columns, the vaulting, and the windows. There is not a single image on the walls, not a single piece of statuary anywhere. The church is as empty as a gymnasium, except in the very center, where several rows of chairs have been arranged in a large square around a miniature podium for the minister. Behind the chairs are wooden booths, stalls for wealthy burghers.</span><span class="irc-greentext__line">The chairs and stalls seem to have been placed there without the slightest concern for the shape of the walls or position of the columns, as if wishing to express their indifference to or disdain for Gothic architecture. Centuries ago Calvinist faith turned the cathedral into a hangar, its only function being to keep the prayers of the faithful safe from rain and snow.</span><span class="irc-greentext__line">Franz was fascinated by it: the Grand March of History had passed through this gigantic hall!</span><span class="irc-greentext__line">…</span><span class="irc-greentext__line">“It’s the emptiness of it that fascinates me,” said Franz. “People collect altars, statues, paintings, chairs, carpets, and books, and then comes a time of joyful relief and they throw it all out like so much refuse from yesterday’s dinner table. Can’t you just picture Hercules’ broom sweeping out this cathedral?”</span><span class="irc-greentext__line">…</span><span class="irc-greentext__line">“This is the first time I’ve ever been fascinated by a church,” said Franz.</span><span class="irc-greentext__line"><strong>It was neither Protestantism nor asceticism that made him so enthusiastic; it was something else, something highly personal, something he did not dare discuss with Sabina</strong>. He thought he heard a voice telling him to seize Hercules’ broom and sweep all of Marie-Claude’s previews, all of Marie-Anne’s singers, all lectures and symposia, all useless speeches and vain words—sweep them out of his life. The great empty space of Amsterdam’s Old Church had appeared to him in a sudden and mysterious revelation as the image of his own liberation.</span></blockquote>
<p>literally：落入加尔文宗之手阿姆的Oude Kerk，在常年累月中已经被搬空，只留下了一个哥特式的建筑风格，因而呈现出极其诡异而朴素的特质（<em>“It’s the emptiness of it that fascinates me,” said Franz</em>)。</p>
<p>昆德拉对此教堂与红灯区只有一街之隔也感到难绷（实际上目前Oude Kerk可以说红灯区的一大景点……），显然，在昆德拉的眼中，彼时的阿姆是极度自由与世俗的一隅，充满着性爱、喧哗与享乐主义，红灯区橱窗间的资本与欲望裹挟着Oude Kerk仅存的那一丝神圣。</p>
<p>毕竟，在加缪的短篇小说《<a href="https://www.goodreads.com/book/show/11991.The_Fall">The Fall</a>》里，他佬也认为这一片区就是欧洲大陆的洼地，主人公从上流的巴黎「堕落」至此，在Zeedijk（现阿姆唐人街）的一间叫「墨西哥城」（波拉尼奥狂喜）的酒吧中开始如《地下室手记》的笔者一般大发牢骚。</p>
<p>Oude Kerk的Emptiness让Franz着迷的地方不是新教加尔文主义倡导的节俭苦行（实际上，OP认为荷兰Randstad地区的整体民俗都受此影响），而是它目前的外在呈现就好像赫拉克勒斯的扫帚一举清扫掉了所有的污秽与腐败。在内心深处Franz想要摆脱的是空洞虚假的文化活动和重复徒劳的公众话语，空无让franz回想起的是 <em>“The endless vanity of speeches and words, the vanity of culture, the vanity of art,” “all lectures and symposia, all useless speeches and vain words”</em>。昆德拉说Oude Kerk这种巨大的空无造就了一种极短瞬间内的自我解放，从沉重的政治与公共生活中的解放，Franz不敢告诉Sabina的就是这种超脱于自己曾塑造的、沉迷于历史进程与宏大意义的形象的短暂渴望。Oude Kerk对Franz来说是被清空后的自由。</p>
<p>但是本小节最搞笑的就是小节名字：Misunderstood Words。Oude Kerk的空无是对渴望着崇高沉重的franz的形象的补完。franz迷恋的空无究竟是不是一种生命的轻盈呢？仔细想想，一个真正轻盈的世界，是偶然、无序、去中心、不确定的，而加尔文宗塑造的空无景观在OP看来只是一种形式上的空无，实际上它是空无的沉重，一种纯粹的世界终局，它需要堆砌更多沉重的社会力量来达成。franz迷恋oude kerk的空无，与他后来迷恋游行与牺牲，是同一个刻奇的内核，通过崇高的动作来获取终极的意义。</p>
<p>与之相反的Sabina则是真·轻盈，她就不觉得空无是一件美丽之事，不同于弗兰茨联想到浮华的公共文化生活、这种清空的行为让Sabina想到的是波西米亚的城堡变成牛棚：<em>“how after the Communist coup all the castles in Bohemia were nationalized and turned into manual training centers, retirement homes, and also cow sheds.”</em> 清空, more often than not, 是对美的践踏，而真正的美往往藏身于 <em>a world betrayed</em> . 只有当这些persecutor的注意力放到别的地方时，美才会显形。</p>
<p>翻译为人话就是sabina觉得franz也好、<del>共匪也好</del>，跟美是绝缘了。</p>
<p><img src="https://pub-2fc18c59b6b142f0a477a14c8186cbb9.r2.dev/new-memos/2025-05/13-23-25-07-IMG_0808-min.jpeg" alt="" loading="lazy" decoding="async"></p>
<p><img src="https://pub-2fc18c59b6b142f0a477a14c8186cbb9.r2.dev/new-memos/2025-05/13-23-25-10-IMG_0813-min.jpeg" alt="" loading="lazy" decoding="async"></p>
<p>所以在昆德拉的书里，位于阿姆斯特丹红灯区的Oude Kerk其实是一块<strong>万能投影板</strong>，不管是轻盈如Sabina与沉重如Franz的人都能把自己想象的价值投射进去，确认自己的叙事，变成一种自我解放与反抗的符号。</p>]]></content>
    <summary type="html">&lt;p&gt;&lt;img src=&quot;https://pub-2fc18c59b6b142f0a477a14c8186cbb9.r2.dev/new-memos/2025-05/13-23-24-57-IMG_0805-min.jpeg&quot; alt=&quot;&quot; loading=&quot;lazy&quot; deco</summary>
    <category term="The Library of Babel" scheme="https://gitkeniwo.tech/taxonomy/The-Library-of-Babel/"/>
    <category term="Books" scheme="https://gitkeniwo.tech/taxonomy/The-Library-of-Babel/Books/"/>
    <category term="netherlands" scheme="https://gitkeniwo.tech/tags/netherlands/"/>
    <category term="kundera" scheme="https://gitkeniwo.tech/tags/kundera/"/>
  </entry>
  <entry>
    <title>Cineville NL 影院导览</title>
    <link href="https://gitkeniwo.tech/2025-04-05-cineville-cinema-guide/"/>
    <id>https://gitkeniwo.tech/2025-04-05-cineville-cinema-guide/</id>
    <published>2025-04-05T20:02:48.000Z</published>
    <updated>2025-04-05T20:02:48.000Z</updated>
    <content type="html"><![CDATA[<p>FYI: <a href="https://www.cineville.nl/">Cinevillepas</a>是荷兰的一个艺术影院联盟的月票，能在合作方的影院不限次数观影。月票价格对30岁以下人士来说为€19,00/Mo.（30岁以上€24），四个月起订，按照荷兰这个电影票的物价水平（平均10+欧/张），每月至少看两场电影就回本了。另外，由于合作方影院大多数都是文艺院线，且基本上遍布荷兰各大城市，且荷兰的影院大多采取HORECA形式（Hotel, Restaurant, Cafe），自带餐厅咖啡吧可以承担一个social hub的功能，既可供荷兰长居人士打卡收集，也可作为周末约约约的场所。大城市的著名Cineville影院如阿姆的Eye Filmmuseum, Lab111, 鹿特丹的KINO, 本身也是非常有agency的放映机构，能看到很多独特选片和展映活动。可以在这里查看<a href="https://cineville.nl/nl-NL/theaters">你附近有无方便的Cineville影院</a>。当然，我还做了一个Apple Maps的<a href="https://maps.apple.com/guides?user=ChRDaW5ldmlsbGUgQ2luZW1hcyBOTBINCK5NEOzC/try1b+wRhINCK5NEPrLjtyzmZOteBIOCK5NENG9gunR+//KkwESDgiuTRDZlPmXt4Gv+NwBEg0Irk0Q38Hq3ceqvKsxEg0Irk0Q4/bkzKa+87gzEg0Irk0Q/dvV/dK4+fATEg0Irk0Q4tvCl5eRj8JsEg0Irk0Q5Ym8rfvb3vkfEg4Irk0QhYyDmNL+1f6GARIOCK5NEM3DmcHlgL209QESDQiuTRDM8sX94c6+60oSDgiuTRCSkM+Z/s6lg6QBEg0Irk0Qtq6JsvGvlvdMEg0Irk0QkrWsuJGI/+ZAEg4Irk0Q6Lylgbzq1qnpARINCK5NEOXe55GOzdLCfBINCK5NEOSWqZDK6MecVhIOCK5NEMauufT3sMybmQESDQiuTRC1vNfvubGb9AMSDgiuTRCyuKO+zaSq9MgBEg0Irk0QkeqwmrTB0vd8Eg0Irk0Qufb5+5m1gsUVEg4Irk0Q3Jnkl5+x46WQARINCK5NEKzq4sbe9qn/OxINCK5NEPXNxrS6mY3gZBINCK5NEPz+24fYoM7aMxIOCK5NEJyEwZrKgcu7xAESDgiuTRCM1rT8sM2a8oUBEg4Irk0Q3vezjNXIkf2cARIOCK5NEJCkpN2u1seH+AESDQiuTRDy1tO7j8HxohgSDQiuTRDb3ZL5zvKU2X0SDgiuTRDJi7eVsenQ5vABEg4Irk0Q+5/5vdK09/78ARIOCK5NENjNooCnpIKPywESDgiuTRCv4c/blt33yNcBEg4Irk0QvsWL2N/6vc/WARIOCK5NEIvZjoD4ttPm0gESDgiuTRD8yfnZy66L57YBEg4Irk0Qt8uJxJfhh9+YARINCK5NENCflInP9IPDZBIOCK5NEJGWvrnri/2+vAESDQiuTRCaw9G+sN/mjlgSDQiuTRDzxaj33NWery4SDgiuTRCKw8aKsoLGlJkBEg0Irk0Q7vnplauS0sdtEg0Irk0QjeLd6+3fp5s4Eg4Irk0QvL3o45OxwqzeARINCK5NELLivpWPksy2fRINCK5NEIvghOOr/4yvFRINCK5NEITZsfrOjPmdSBIOCK5NEP6mv4eUn9OtiQESDQiuTRDfnOf83ZODxw8SDgiuTRCjl/nwhKPpvowBEg4Irk0QiOrEqe2WzYrlARIOCK5NEK3LxsqzhNng2wESDQiuTRCMgoq5hfDWoCUSDQiuTRCI8vuRismLhFwSDgiuTRCz2YOIp4PEjPcBEg0Irk0Q+7u50rnQq90sEg4Irk0Q1L/zhPG2gOrZARIOCK5NEM32hbijwYW+1wESDQiuTRD1hv+XlJ6mymkSDQiuTRDM17uXzY3a9TQSDQiuTRCf9qP7i6L+1kMSDgiuTRC5xeupstr+ub4B">Cineville NL Guide</a>，下图可以看到Randstad特别是阿姆附近影院尤其多（再次证明荷兰文化中心永远不可能是Zuid-Holland…)。</p>
<p><img src="https://img.gitkeniwo.tech/202511/13-6444290b83309caef5825a2a3c542245-1762989919.png" alt="" loading="lazy" decoding="async"></p>
<h1 id="amsterdam">Amsterdam</h1>
<p>阿姆的cineville影院是全荷兰独一档的多，但大多数都交通不是很方便，对于不住在阿姆(Centrum, Amstel, Zuid, Bijlmer, Diemen, Sloterdijk, Amstelveen etc)的人来说很不友好，如果不愿走路，大多都得掏来回共四欧的电车钱。</p>
<p>阿姆的影院可以大致分为下面几个group：</p>
<ul role="list">
<li>Leidseplein(莱顿广场)派：Uitkijk(警哨), Cinecenter(中心), De Balie(吧台), Melkweg(银河)</li>
<li>Eye Filmmuseum (独一档)</li>
<li>Oud West (老西区)派：Lab111, Filmhallen(大堂), Het Documentaire Paviljoen(纪录片亭)</li>
<li>Westerpark (西区公园)派: The Movie, Het Ketelhuis, Filmhuis Cavia
<ul role="list">
<li>老西区Oud West是指Vondelpark北边的区域，同理老南区Oud Zuid是Vondelpark以南的区域</li>
</ul>
</li>
<li>郊区派: Bijlmer, Amstelveen, Diemen, Sloterdijk, Zaandam</li>
<li>其他：Kriterion</li>
<li>Rialto: VU + de Pijp</li>
</ul>
<h2 id="leidseplein-cinemas-莱顿广场">Leidseplein Cinemas 莱顿广场</h2>
<p><a href="https://en.wikipedia.org/wiki/Leidseplein">莱顿广场</a>（Leidse=Leiden的形容词形式）得名于阿姆运河扇形区的径向道路莱顿街(Leidsestraat)。莱顿街连接了阿姆运河区内侧的Koningsplein（国王广场）和外侧的莱顿广场(Leidseplein)，同时也是<em>2/12/17路</em>Tram的路线。<em>2/12/17路</em>Tram和<em>4/14路</em>电车/<em>52路</em>地铁分别构成了Amsterdam Centraal经阿姆核心区往南穿城的两条重要轨交干线。<br>
运河区可视为阿姆Binnenstad（老城，德语常用Altstadt），莱顿广场则位于老城西南端。欧洲城市地标命名很爱用「通往某某的街道/车站」这种命名法，如德二时期柏林Schlesischer Bahnhof西里西亚车站（现Berlin Ostbahnhof）, 巴黎Gare de Lyon里昂车站和莫斯科Киевский вокзал基辅车站等，莱顿街和莱顿广场自然是旧时阿姆通往Leiden的必经之路。<br>
现在莱顿广场及其周边这个neighborhood相当于阿姆的Cultuur Kwartier，集中了大量的theatre, cinema, livehous，同时广场四周延伸出的小巷也几乎全是各种bar和club。Apple Amsterdam（阿姆唯一一家）也选址此处。莱顿广场往南走过桥就是风景如画的<em>Vondelpark</em>冯德尔公园，这是个人气十分旺、且literally与阿姆这个城融为一体的、阿姆的中央公园，阿姆两个著名的Gentrified社区老南区<em>Oud Zuid</em>和老西区<em>Oud West</em>就以此为界。过桥左转就是阿姆博物馆区<em>Museumkwartier</em>，荷兰国立博物馆，博物馆广场<em>Museumplein</em>，可谓黄金地段了。</p>
<p>莱顿广场本身还有一个<em>International Theater</em>，是荷兰最大的英文剧院，基本上想看非荷兰语的话剧和musical都得来这里。另一个著名的地标建筑——DeLaMar剧院是荷兰最大的荷语剧院。<br>
除此以外，indie乐迷的圣地、基本上所有小众乐队来阿姆巡的话都会选的场子——<em>Paradiso</em>这家著名的livehouse也在莱顿广场门口。</p>
<p><img src="https://img.gitkeniwo.tech/202511/13-ab190eb8e64ee646ae88e64b819ab12f-1762992571.jpeg" alt="" loading="lazy" decoding="async"></p>
<p class="img-caption">Fig. Paradiso en Mooi Weer </p>
<p><img src="https://img.gitkeniwo.tech/202511/13-039cc7dcc7450ddbc670304b73c36646-1762992659.jpeg" alt="" loading="lazy" decoding="async"></p>
<p class="img-caption">Fig. 华灯初上的荷兰国际剧场 </p>
<h3 id="filmtheatre-de-uitkijk">Filmtheatre de Uitkijk</h3>
<p>de Uitkijk 位于莱顿广场东北侧，是UvA电影系的学生运营的影院，这也解释了为什么这家影院常年给人的感觉比较差。院内装修复古，只有<em>一个</em>厅，座位不多，且经常有损坏的座椅，自由席不用选座，门口会有人工取票，无Cineville自助取票机。</p>
<p>因为有UvA的合作，该院选片非常独特，跟很多版权方有协议，拥有很多独立的放映权。由于只有一个厅，排片量也有限，大概是上场放完了，就接着放下一场，基本上每天只有5场次。每日平均也会一两场有荷兰文艺院线正在全国上映的排片，但基本不会有商业爆米花。</p>
<p>值得吐槽的是，这家影院的屏幕实在是太小了，literally就是个家用投影仪的水平，而且屏幕安放的位置尤其高，坐前排的话视角极差，推荐选后排中间位置。如果你是从阿姆以外的城市想要大老远跑来看的话，我建议你慎重考虑。这家的体验，只能说你可以「顺便」来看看，但不值得作为你此行的主要目的地。</p>
<p><img src="https://img.gitkeniwo.tech/202511/13-9abed6e1d7bcb72d865060db8c12dfcc-1762992493.jpeg" alt="" loading="lazy" decoding="async"></p>
<p class="img-caption">Fig. 其貌不扬的Uitkijk（荷兰语「警哨剧院」）</p>
<p><img src="https://img.gitkeniwo.tech/202511/13-f53ba5d97a21f0c2234066a13a51a7c1-1762993173.jpeg" alt="" loading="lazy" decoding="async"></p>
<p class="img-caption">Fig. Uitkijk让人难绷的视角。图中为OP第一次来这家时看的金基德的《<a href="https://letterboxd.com/film/spring-summer-fall-winter-and-spring/">春夏秋冬又一春</a>》。后来，OP又来看过法斯宾德《<a href="https://letterboxd.com/film/world-on-a-wire-1973/">世界旦夕之间</a>》，三小时的长片所以中间有Pause。因为这家冬天暖气开得不够，OP被冻死，只看完了前半场就滚蛋了。</p>
<h3 id="cinecenter">Cinecenter</h3>
<h3 id="melkweg">Melkweg</h3>
<p>本质是一家非常好的Livehouse，影院只是它的一个附属功能。</p>
<p>订票界面非常特别，是ticketmaster的界面，但同时还支持Cinevillepas 0元购。</p>
<h2 id="oud-west">Oud West</h2>
<h3 id="lab111">Lab111</h3>
<p>阿姆除了Eye之外最著名的艺术影院。<br>
该影院走的是复古实验室风格，蓝色的实验室灯牌和负一楼阴森偏光灯效都很有Vibe。（对比Lab-1走的是Retro Arcade风格）</p>
<p>非常顶级的trailer制作。<br>
<a href="https://www.youtube.com/playlist?list=PL7YTHuD03mTk2efzFsTGSNR3_rrEVC1tS">https://www.youtube.com/playlist?list=PL7YTHuD03mTk2efzFsTGSNR3_rrEVC1tS</a></p>
<p>唯一的缺点是交通过于不便，位置精准的点在了离阿姆市内所有NS车站 (Centraal, Zuid, Lelylaan, Sloterdijk) 最远的一个地方。即便从阿姆市内出发，也不算一个大多数街区较为容易到达的地方。</p>
<h3 id="filmhallen">Filmhallen</h3>
<p>Filmhallen是属于De Hallen这个综合体的。De Hallen是阿姆的旧电车厂改造的文娱中心，中间以一条宽阔的Hallway连接，街对面就是lab111。之前窝还评价过de hallen和Westerpark、NDSM都是跟纽约soho区vibe类似的neighborhood。filmhallen电影院隔壁还有OBA de hallen (阿姆市立博物馆分馆)，但是这家基本上五点半就关门了。因为是电车厂厂房改造，filmhallen内部也是别有洞天，十分开阔，其中常用来做特殊放映的叫做巴黎人厅Parisienzaal，在走廊的尽头。</p>
<p>就在Lab111的对门。</p>
<h2 id="westerpark-阿姆斯特丹西区公园">Westerpark 阿姆斯特丹西区公园</h2>
<p>Westerpark 坐落在阿姆市中西部，虽然不及Vondelpark有名，但也很有特色。<em>Westergasfabriek</em>的vibes让人想到北京798和成都东郊记忆，由原来的煤气厂改建而成。值得一提的是，Westerpark也是一个铁路公园(Spoorpark)，能够远望到很多驶入驶出<em>Amsterdam Centraal Station</em>和<em>Amsterdam Sloterdijk</em>的Intercity（蓝黄）和Sprinter（蓝白）列车。同时，春季时节Westerpark也有故乡的Sakura远远盛开，是阿姆城区（除开阿姆斯特芬）内赏樱的首选。</p>
<h3 id="the-movie">The Movie</h3>
<p>The Movie 其实在Westergasfabriek外面一点点。如果你从Amsterdam Centraal出发一路向西走，就会在十分热闹、自行车人流可观的、vibe也很local的Haarlemmerdijk的马路对门看到它。如果走过它，基本上就到了Westerpark的东入口了，因为有一个小拱门，给人一种柏林走过Unter den Linden穿过勃兰登堡门到达Tiergarten公园的感觉。</p>
<h3 id="het-ketelhuis">Het Ketelhuis</h3>
<p>Het Ketelhuis坐落在西区公园的园区内，是和周围的一众博物馆、戏院、Bar看起来都像厂房改造的，观感特别像成都东郊记忆。该</p>
<h2 id="eye-filmmuseum">Eye Filmmuseum</h2>
<p><img src="https://img.gitkeniwo.tech/202505/26-1748263290.jpeg" alt="IMG_0265" loading="lazy" decoding="async"></p>
<p><img src="https://img.gitkeniwo.tech/202505/26-1748263384.jpeg" alt="IMG_02792" loading="lazy" decoding="async"></p>
<p><img src="https://img.gitkeniwo.tech/202505/26-1748263400.jpeg" alt="IMG_0815" loading="lazy" decoding="async"></p>
<img src="https://img.gitkeniwo.tech/202505/26-1748263277.jpeg" alt="IMG_9999" style="zoom:80%;">
<p>关于取票：一般是有cineville自助取票机的。大部分时候，自助取票机吐的是类似receipt的软纸票，我只见过一次自助取票机吐硬纸票。如果想要带eye logo的硬纸票作为收藏（OP本人有个票夹收藏所有电影票），请去窗口人工取。</p>
<h2 id="rialto-vurialto-de-pijp">Rialto VU/Rialto de Pijp</h2>
<p>Rialto剧院有两个场子，一个在很早就被网红化的de Pijp，另一个在VU（Zuidas附近的阿姆斯特丹自由大学）。</p>
<h2 id="kriterion">Kriterion</h2>
<p>Kriterion坐落于阿姆斯特丹Centrum-Oost一带，背靠Weesperplein地铁站（51/53/54号线)、ARTIS-Park和东区公园(Oosterpark)，算是市中心闹中取静的好街区了，往北走就是滑铁卢广场(Waterlooplein)，往东走是Muiderpoort车站和阿姆老东区。<br>
Kriterion也是UvA的学生运营的，对门就是UvA的校园。整个影院给人一种70/80年代的retro NYC风格，不管是浅绿色的瓷砖、木制门栏还是一楼陈列的铁皮放映机。门口左转是一个cozy的小bar，随时都坐满人。</p>
<h1 id="breda">Breda</h1>
<h2 id="filmhuis-breda">Filmhuis Breda</h2>
<h1 id="delft">Delft</h1>
<h1 id="den-haag">Den Haag</h1>
<p>Filmhuis Den Haag</p>
<h1 id="eindhoven">Eindhoven</h1>
<p>本人base在e村，所以最常去的就是E村的两家。</p>
<h2 id="lab-1">Lab-1</h2>
<p>本人最常去的影院，位于e村centrum，紧挨着天主教大教堂。院内装修是我非常爱的retro arcade风，复古桌游+游戏厅+像素。Expat很多，staff主要说英文。每个月会有一款specialty鸡尾酒。</p>
<img src="https://img.gitkeniwo.tech/202505/26-1748262761.jpeg" alt="IMG_9933" style="zoom:67%;">
<p class="img-caption">Fig. Lab-1的楼梯间</p>
<p>会有一些独特选片，但远小于Lab111和Uitkijk。院线的非英文片大约会排2/3的荷语字幕+1/3的英文字幕，但也不一定，会根据具体的发行商提供的字幕变化。</p>
<p>有filmlover club的whatsapp群，群里很活跃，可以荐片，询问上映/下映信息，节日纪念日会重映经典。</p>
<p>本身也是一个social hub，吧台有几款评价很好的饮料。观影的座位可扫码订餐，staff会把餐饮送到你座位旁。根据我的观察（去看过几十次），每场都至少有几个人会扫码订餐，大家都很照顾它的生意。</p>
<p>除了影片放映以外，还会有桌游、荷语角和其他古灵精怪的活动。每个月会有一次English Standup Comedy，有时也会有其他小语种的单口喜剧（土耳其语，中文）。</p>
<p><strong>交通</strong> Hertoghof骑车至lab-1 5min。City Tower骑车至lab-1 5min。Eindhoven Centraal步行至lab-1 5min。</p>
<p><strong>停车</strong> 由于位于centrum，热门时段经常没有自行车停车位，可以把车靠在影院门口绿化带上。</p>
<p><strong>取票</strong> 进门右手边人工取票，只需要给他扫你的cinevillepas。无cineville自助取票。可以迟到，迟到5min取票没问题。因为是人工取票，热门时段需要排队，但一般不超过10min。</p>
<p><strong>选座</strong> 订票时可以提前选座，不选座会给你分配座位，不能随便坐。一共有5个Zaal：</p>
<ul role="list">
<li>
<p>Zaal 1: 大宽屏，但只有二楼有座位，所以真实视角下屏幕也不是很大。不放映时用作活动举办场地。想看大屏推荐选第一排（一横排）。</p>
</li>
<li>
<p>Zaal 2: 官方名称是Boutique厅，比较高雅，座位较少，配有小桌，放映时桌灯不会熄灭。座椅靠背较矮，不能靠头。一般用来放映classic或偏文艺的影片。</p>
</li>
<li>
<p>Zaal 3: 大屏。一般放映热门商业片。因为屏幕很大，推荐选五排以后。</p>
</li>
<li>
<p>Zaal 4 &#x26; Zaal 5: 这两个厅布局是一样的 (4+4)x11。都是小屏。细长型布局。一般放文艺片。对恐怖惊悚片感到害怕的推荐选8排以后安全距离。希望视角大一点可以选前五排靠中。</p>
</li>
</ul>
<p><img src="https://img.gitkeniwo.tech/202505/26-1748262664.jpeg" alt="IMG_0065" loading="lazy" decoding="async"></p>
<p class="img-caption">Fig. Zaal1视角</p>
<img src="https://img.gitkeniwo.tech/202505/26-1748262686.jpeg" alt="IMG_0086" style="zoom:67%;">
<p class="img-caption">Fig. Zaal2视角</p>
<img src="https://img.gitkeniwo.tech/202505/26-1748262693.jpeg" alt="IMG_9891" style="zoom:67%;">
<p class="img-caption">Fig. Zaal4视角</p>
<h2 id="natlab">NatLab</h2>
<p>位于e村Strijp-S。是一个偏local的影院，观众大多数都是中老年白人，吧台默认讲荷兰语。</p>
<h1 id="leiden">Leiden</h1>
<h1 id="maastricht">Maastricht</h1>
<h2 id="lumière-cinema">Lumière Cinema</h2>
<p>坐落在马斯河西岸的Lumière是马城最大的艺术影院，门口是一个人工湖或者码头，vibe很好。</p>
<ul role="list">
<li>交通：坐到Maastricht NS车站。走路亲测18-20min。如果是白天的话，有非常美丽的马城江景可看。</li>
<li>取票：Ticket Office在一楼。如果是Cineville网上订票的话，是不需要取票的。可以直接走到二楼影厅门口的检票处刷Cineville卡。</li>
</ul>
<h1 id="nijmegen">Nijmegen</h1>
<h2 id="lux-nijmegen">Lux Nijmegen</h2>
<p>取票：人工取票，若有网上订票，直接去最角落里的Cassa取票。我去的时候工作人员都是大爷大妈，对于Cineville取票操作似乎还不怎么熟悉，大爷甚至还会比对你的照片……一楼Bar里的客层也是优雅的老登较多。</p>
<h1 id="rotterdam">Rotterdam</h1>
<h2 id="kino">KINO</h2>
<p>鹿特丹最重要的艺术影院。</p>
<h2 id="cinerama">Cinerama</h2>
<p>这个影院最坑的地方</p>
<h2 id="lantarenvenster">LantarenVenster</h2>
<p>坐落于鹿特丹南区(Zuid)，Waal河南岸的Kop van Zuid（南岸之角）半岛。走到这个长条形半岛的尽头，左侧即是著名的威廉明娜码头，右侧是一个不错的从Waal河南岸看北岸的观景位。</p>
<p>这个巨长的名字是由于该影院历史上曾是是这栋楼的两个影院合并而成，即Lantaren影院（Lantaarn，荷兰语「灯笼」的复数形式）和Venster影院（即「窗子」，德语拼写是Das Fenster)。</p>
<p>该影院规模尚可，由于在南区，是非常现代的风格，巨大的玻璃落地窗可以看到威廉明娜码头对岸的Felix移民博物馆。工作日晚来的话，客层大部分是衣着优雅的老登，大概10-20%的年轻观众。</p>
<p>交通：最近的NS车站需要坐到Rotterdam Zuid，是一个Sprinter车站，一般先坐到Rotterdam C.换乘与Dordrecht方向的Spinter列车。Rotterdam Zuid到LantarenVenster走路25～30min。其次时间充裕也可以坐到Rotterdam Blaak，从方块屋南边的出口出来，然后经Oude Haven走威廉大桥散步过江，经过Nordieland(鹿特丹北岛)，大概需要预留35min。<br>
最方便的是Wilheminaplein威廉明娜广场RET地铁站，就设在Kop van Zuid核心地带，同时，该站位于D线（浅蓝）和E线（深蓝）的共线段，所以全天的发车频率都尚可，不需要掐表。</p>
<p>取票：如果网上有订票的话，可以使用现场的一个奇葩的Cineville签到机，但该签到机需要刷你E-ticket的QR Code，而非Cineville条形码。所幸Ticket Office就在一旁可以取实体票，需要报自己的订票邮箱。实体票是硬卡，推荐第一来的朋友取实体票纪念。</p>
<p>影厅：似乎都在二楼，走大厅中央的绿色台阶上楼。检票在台阶门口。</p>
<h1 id="tilburg">Tilburg</h1>
<h2 id="cinecitta">Cinecitta</h2>
<p>Città在意大利语就是City的意思（梵蒂冈城 Città di Vatican). 这家起码是最近（2025年末到2026年初）才加入Cineville的，之前并不在Cineville里面。<br>
也是蒂尔堡最出名的艺术影院。</p>
<h1 id="utrecht">Utrecht</h1>
<p><img src="https://img.gitkeniwo.tech/202505/26-1748262332.jpeg" alt="IMG_0991" loading="lazy" decoding="async"></p>
<p class="img-caption">Fig. 乌德勒支Centraal</p>
<h2 id="slachstraat-sls">Slachstraat (SLS)</h2>
<p>SLS在乌特核心区，我认为是乌特的影院中地理位置最好的。本身也是Theatre + Horeca 形式。常年爆满，特别是周五晚。</p>
<p><img src="https://img.gitkeniwo.tech/202505/26-1748262312.jpeg" alt="IMG_0986" loading="lazy" decoding="async"></p>
<p><strong>取票</strong> 进门后会有两个队可以排，其中Cinema Kassa在左手边排队，人工取票。有时候Off peak hour会关闭cinema kassa，这时可以去kassa对面的吧台<strong>最左手边</strong>有电脑的小格取票，吧台右边都是买饮料的。WC在kassa对面楼梯下楼，分男女。影厅在kassa右手边上楼，楼梯非常狭窄。</p>
<p><em>2025.12 update</em>: 25年年底SLS新增cineville取票机一台。</p>
<p><strong>选座</strong> 目前我只去过Zaal1，应该是它<a href="https://slachtstraat.nl/over-slachtstraat/verhuur/">最大的一个厅</a>。要注意的是Zaal1是扇形座位布局，坐边上倾斜角度严重影响体验，但坐前排中间反而影响不大。订座推荐2-6排中间的位置。zaal1进门在右手边，退场时在左边会开另一个exit的门。</p>
<p><img src="https://img.gitkeniwo.tech/202505/26-1748262322.jpeg" alt="IMG_0985" loading="lazy" decoding="async"></p>
<p class="img-caption">Fig. SLS 1号厅，扇形结构</p>
<p><strong>交通</strong> SLS至 Utrecht C. 的闸机快走8min，慢走10-12min。路线选取最短的即可，要注意穿过Hoog Catharijne商场后，可以走左边的小巷进入乌特的运河区，右边的小巷全是各种bar，经常水泄不通被卡死在里面。Utrecht Centraal闸机至5/7站台预留1min，14以上的站台预留2-3min合适。整体预留15min比较宽裕。</p>
<h2 id="luis-hartlooper-complex-lhc">Luis Hartlooper Complex (LHC)</h2>
<p>位于Utrecht Vaartsche Rijn附近，是一个Spinter车站。<br>
Vaartsche Rijn荷兰语名字意为莱茵运河段。车站位于乌特的市中心南方。</p>
<h1 id="关于cineville放映">关于Cineville放映</h1>
<p>Cineville会上的老片很多都是</p>
<ol role="list">
<li>n*5周年庆，加上发行公司在推全球重映（很多偷懒的发行公司和棘手的版权就会导致片源难以获取） e.g. 2024上的 The Conversation (50周年) 低俗小说（30周年）,2025上了一一（2000），飞越疯人院。</li>
<li>大导演/著名演员新片上映顺便生涯回顾。如去年上了维姆文德斯和是枝裕和，今年马上会上韦斯安德森、汤姆克鲁斯</li>
<li>纪念活动，一般是有人过逝。如今年上半年大卫林奇轮映 + 基恩哈克曼生涯回顾</li>
<li>特殊节日。如May 4th会上星战，万圣节会轮映horror film如怪形、变蝇人，圣诞节会放映生活多美好、恋爱假期，情人节会播美丽心灵永恒阳光、爱在三部曲，反战、骄傲月都有类似主题</li>
</ol>]]></content>
    <summary type="html">&lt;p&gt;FYI: &lt;a href=&quot;https://www.cineville.nl/&quot;&gt;Cinevillepas&lt;/a&gt;是荷兰的一个艺术影院联盟的月票，能在合作方的影院不限次数观影。月票价格对30岁以下人士来说为€19,00/Mo.（30岁以上€24），四个月起订，按照荷兰这个电</summary>
    <category term="The Library of Babel" scheme="https://gitkeniwo.tech/taxonomy/The-Library-of-Babel/"/>
    <category term="Films" scheme="https://gitkeniwo.tech/taxonomy/The-Library-of-Babel/Films/"/>
    <category term="film" scheme="https://gitkeniwo.tech/tags/film/"/>
    <category term="netherlands" scheme="https://gitkeniwo.tech/tags/netherlands/"/>
    <category term="europe" scheme="https://gitkeniwo.tech/tags/europe/"/>
    <category term="guide" scheme="https://gitkeniwo.tech/tags/guide/"/>
  </entry>
  <entry>
    <title>为你的WSL和HPC Container设置Kerberos</title>
    <link href="https://gitkeniwo.tech/2025-03-17-kerberos-setup/"/>
    <id>https://gitkeniwo.tech/2025-03-17-kerberos-setup/</id>
    <published>2025-03-17T11:25:17.000Z</published>
    <updated>2025-03-17T11:25:17.000Z</updated>
    <content type="html"><![CDATA[<h1 id="wth-is-kerberos">WTH is Kerberos</h1>
<p>tl;dr: MSSQL Server uses windows integrated authentication that only works on your shitty company window PC. If you wanna use that PC to grant authentication to your 1)WSL or 2)Remote Linux Server, you gotta use Kerberos.</p>
<h1 id="为wsl设置kerberos">为WSL设置Kerberos</h1>
<p>公司电脑用的是windows integrated authentication来连接MS SQL server, 这时WSL内的odbc driver没有credential就连不上了，需要<a href="https://queensidecastle.com/guides/wsl-the-easy-way#kerberos-for-ad-in-wsl">给WSL设置Kerberos</a>来连接.</p>
<p>首先确认自己的AD域. 使用垃圾无比的Windows COMMAND PROMPT</p>
<pre class="astro-code astro-code-themes everforest-light everforest-dark" style="--shiki-light:#5c6a72;--shiki-dark:#d3c6aa;--shiki-light-bg:#fdf6e3;--shiki-dark-bg:#2d353b; overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>C:\Users\xiaohan.wang>systeminfo | findstr /B "Domain"</span></span>
<span class="line"><span>Domain:                    marel.net</span></span>
<span class="line"><span></span></span>
<span class="line"><span>C:\Users\xiaohan.wang>set user</span></span>
<span class="line"><span>USERDNSDOMAIN=MAREL.NET</span></span>
<span class="line"><span>USERDOMAIN=MAREL</span></span>
<span class="line"><span>USERDOMAIN_ROAMINGPROFILE=MAREL</span></span>
<span class="line"><span>USERNAME=xiaohan.wang</span></span>
<span class="line"><span>USERPROFILE=C:\Users\xiaohan.wang</span></span></code></pre>
<p>按照教程来，给WSL安装krb5-user client</p>
<pre class="astro-code astro-code-themes everforest-light everforest-dark" style="--shiki-light:#5c6a72;--shiki-dark:#d3c6aa;--shiki-light-bg:#fdf6e3;--shiki-dark-bg:#2d353b; overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span># install krb5-user</span></span>
<span class="line"><span>sudo apt install krb5-user</span></span></code></pre>
<p>这个krb5-user需要配置<code>/etc/krb5.conf</code>. 一般来说linux上的<code>/etc/</code>都要用 <code>sudo</code> vim/nvim 编辑</p>
<pre class="astro-code astro-code-themes everforest-light everforest-dark" style="--shiki-light:#5c6a72;--shiki-dark:#d3c6aa;--shiki-light-bg:#fdf6e3;--shiki-dark-bg:#2d353b; overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>[libdefaults]</span></span>
<span class="line"><span></span></span>
<span class="line"><span>default_realm = ad.example.net</span></span>
<span class="line"><span>dns_lookup_realm = true</span></span>
<span class="line"><span>dns_lookup_kdc = true</span></span>
<span class="line"><span>ticket_lifetime = 24h</span></span>
<span class="line"><span>renew_lifetime = 7d</span></span>
<span class="line"><span>rdns = true</span></span>
<span class="line"><span>forwardable = yes</span></span></code></pre>
<p>配置好后，接下来使用 <code>kinit</code>即可issue kerberos ticket。</p>
<p>注意，一般来说，这需要你WSL的username与公司windows的用户名相同。我的之前就差了一个<code>.</code>(<code>username.familyname</code>)，所以我root进了ubuntu<a href="https://www.perplexity.ai/search/just-installed-krb5-user-for-m-87yJymJdSfGxzbw8UaiMVA#0">迁移了用户名</a>。用户名匹配的话kinit就会提示你输入你windows用户的密码，之后就能用klist看到你的kerberos ticket了。</p>
<h1 id="为hpcremote-linux-server设置kerberos">为HPC/Remote Linux Server设置Kerberos</h1>
<p>前面到配置<code>/etc/krb5.conf</code>都大概相同。注意 <code>/etc/krb5.conf</code> 文件会稍显不同，可以直接找公司的IT要一份。</p>
<p>配置好<code>/etc/krb5.conf</code>后，如果你在公司服务器上，这时有可能你的container默认用户名只能是<code>ubuntu</code>之类的。<br>
你此时就该用<code>kinit username@MAREL.NET</code>，直接指定你的username来发行Kerberos ticket。<br>
此外还可以自己加flag定义ticket有效期，<code>tldr kerberos</code> 一下自行学习.</p>
<p>issue了ticket之后，用<code>klist</code>展示当前ticket。</p>
<h1 id="自动发行kerberos-ticket">自动发行Kerberos ticket</h1>
<p>原帖还建议在<code>.bashrc</code>放一段脚本每次login自动更新kerberos ticket</p>
<pre class="astro-code astro-code-themes everforest-light everforest-dark" style="--shiki-light:#5c6a72;--shiki-dark:#d3c6aa;--shiki-light-bg:#fdf6e3;--shiki-dark-bg:#2d353b; overflow-x: auto;" tabindex="0" data-language="bash"><code><span class="line"><span style="--shiki-light:#939F91;--shiki-light-font-style:italic;--shiki-dark:#859289;--shiki-dark-font-style:italic"># Always renew Kerberos creds at login</span></span>
<span class="line"><span style="--shiki-light:#F85552;--shiki-dark:#E67E80">if</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA"> [ </span><span style="--shiki-light:#F57D26;--shiki-dark:#E69875">-f</span><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080"> "/tmp/krb5cc_</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">$(</span><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080">id </span><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F">-u</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">)</span><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080">"</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA"> ]; </span><span style="--shiki-light:#F85552;--shiki-dark:#E67E80">then</span></span>
<span class="line"><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080">    kinit</span><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F"> -R</span></span>
<span class="line"><span style="--shiki-light:#F85552;--shiki-dark:#E67E80">fi</span></span></code></pre>]]></content>
    <summary type="html">&lt;h1 id=&quot;wth-is-kerberos&quot;&gt;WTH is Kerberos&lt;/h1&gt;
&lt;p&gt;tl;dr: MSSQL Server uses windows integrated authentication that only works on your shitty c</summary>
    <category term="Zen and the Art of Computer Maintenance" scheme="https://gitkeniwo.tech/taxonomy/Zen-and-the-Art-of-Computer-Maintenance/"/>
    <category term="Linux" scheme="https://gitkeniwo.tech/taxonomy/Zen-and-the-Art-of-Computer-Maintenance/Linux/"/>
    <category term="cli" scheme="https://gitkeniwo.tech/tags/cli/"/>
    <category term="database" scheme="https://gitkeniwo.tech/tags/database/"/>
    <category term="wsl" scheme="https://gitkeniwo.tech/tags/wsl/"/>
  </entry>
  <entry>
    <title>Wazzup</title>
    <link href="https://gitkeniwo.tech/2025-02-26-whats-up/"/>
    <id>https://gitkeniwo.tech/2025-02-26-whats-up/</id>
    <published>2025-02-26T13:37:40.000Z</published>
    <updated>2025-02-26T13:37:40.000Z</updated>
    <content type="html"><![CDATA[<blockquote class="irc-greentext"><span class="irc-greentext__line">25 years and my life is still</span><span class="irc-greentext__line">trying to get up that</span><span class="irc-greentext__line">great big hill of hope</span><span class="irc-greentext__line">for a destination</span></blockquote>
<p>Here goes the half-time of my life (25-50), if it is of any ternary form.</p>]]></content>
    <summary type="html">&lt;blockquote class=&quot;irc-greentext&quot;&gt;&lt;span class=&quot;irc-greentext__line&quot;&gt;25 years and my life is still&lt;/span&gt;&lt;span class=&quot;irc-greentext__line&quot;&gt;tr</summary>
    <category term="Tweets" scheme="https://gitkeniwo.tech/taxonomy/Tweets/"/>
    <category term="karma" scheme="https://gitkeniwo.tech/tags/karma/"/>
  </entry>
  <entry>
    <title>Saigon, I'm still only in Saigon</title>
    <link href="https://gitkeniwo.tech/2024-10-02-saigon/"/>
    <id>https://gitkeniwo.tech/2024-10-02-saigon/</id>
    <published>2024-10-02T01:03:39.000Z</published>
    <updated>2024-10-02T01:03:39.000Z</updated>
    <content type="html"><![CDATA[<p><img src="https://img.gitkeniwo.tech/202410/02-1727826495.jpg" alt="Apocalypse.Now.1979.Redux.REMASTERED.1080p.BluRay.x265-RBG-0044" loading="lazy" decoding="async"></p>
<p><img src="https://img.gitkeniwo.tech/202410/02-1727824747.jpeg" alt="Apocalypse.Now.1979.Redux.REMASTERED.1080p.BluRay.x265-RBG-0018" loading="lazy" decoding="async"></p>
<p><img src="https://img.gitkeniwo.tech/202410/02-1727824405.jpeg" alt="Apocalypse.Now.1979.Redux.REMASTERED.1080p.BluRay.x265-RBG-0022" loading="lazy" decoding="async"></p>
<p><img src="https://img.gitkeniwo.tech/202410/02-1727824392.jpeg" alt="Apocalypse.Now.1979.Redux.REMASTERED.1080p.BluRay.x265-RBG-0023" loading="lazy" decoding="async"></p>
<p><img src="https://img.gitkeniwo.tech/202410/02-1727824382.jpeg" alt="Apocalypse.Now.1979.Redux.REMASTERED.1080p.BluRay.x265-RBG-0025" loading="lazy" decoding="async"></p>
<blockquote class="irc-greentext"><span class="irc-greentext__line">Saigon,</span></blockquote>
<p><img src="https://img.gitkeniwo.tech/202410/02-1727824478.jpeg" alt="Apocalypse.Now.1979.Redux.REMASTERED.1080p.BluRay.x265-RBG-0005" loading="lazy" decoding="async"></p>
<p><em>Shit</em> …</p>
<p><img src="https://img.gitkeniwo.tech/202410/02-1727824604.jpg" alt="Apocalypse.Now.1979.Redux.REMASTERED.1080p.BluRay.x265-RBG-0027" loading="lazy" decoding="async"></p>
<blockquote class="irc-greentext"><span class="irc-greentext__line">I’m still only in Saigon</span></blockquote>
<p><img src="https://img.gitkeniwo.tech/202410/02-1727824645.jpeg" alt="Apocalypse.Now.1979.Redux.REMASTERED.1080p.BluRay.x265-RBG-0006" loading="lazy" decoding="async"></p>
<p><img src="https://img.gitkeniwo.tech/202410/02-1727824718.jpeg" alt="Apocalypse.Now.1979.Redux.REMASTERED.1080p.BluRay.x265-RBG-0007" loading="lazy" decoding="async"></p>
<blockquote class="irc-greentext"><span class="irc-greentext__line">Every time, I think I’m gonna wake up back in the jungle</span></blockquote>
<p><img src="https://img.gitkeniwo.tech/202410/02-1727824819.jpeg" alt="Apocalypse.Now.1979.Redux.REMASTERED.1080p.BluRay.x265-RBG-0008" loading="lazy" decoding="async"></p>
<blockquote class="irc-greentext"><span class="irc-greentext__line">When I was home after my first tour, it was worse</span></blockquote>
<p><img src="https://img.gitkeniwo.tech/202410/02-1727824826.jpeg" alt="Apocalypse.Now.1979.Redux.REMASTERED.1080p.BluRay.x265-RBG-0009" loading="lazy" decoding="async"></p>
<blockquote class="irc-greentext"><span class="irc-greentext__line">I’d wake up and there’d be nothing</span></blockquote>
<p><img src="https://img.gitkeniwo.tech/202410/02-1727824843.jpeg" alt="Apocalypse.Now.1979.Redux.REMASTERED.1080p.BluRay.x265-RBG-0010" loading="lazy" decoding="async"></p>
<blockquote class="irc-greentext"><span class="irc-greentext__line">I hardly said a word to my wife until I said yes to a divorce</span></blockquote>
<p><img src="https://img.gitkeniwo.tech/202410/02-1727825068.jpeg" alt="Apocalypse.Now.1979.Redux.REMASTERED.1080p.BluRay.x265-RBG-0029" loading="lazy" decoding="async"></p>
<blockquote class="irc-greentext"><span class="irc-greentext__line">When I was here,</span><span class="irc-greentext__line">I wanted to be there</span></blockquote>
<p><img src="https://img.gitkeniwo.tech/202410/02-1727825074.jpeg" alt="Apocalypse.Now.1979.Redux.REMASTERED.1080p.BluRay.x265-RBG-0031" loading="lazy" decoding="async"></p>
<blockquote class="irc-greentext"><span class="irc-greentext__line">When I was there,</span><span class="irc-greentext__line">all I could think of was to get back into the jungle</span></blockquote>
<p><img src="https://img.gitkeniwo.tech/202410/02-1727824963.png" alt="Apocalypse.Now.1979.Redux.REMASTERED.1080p.BluRay.x265-RBG-0033" loading="lazy" decoding="async"></p>
<blockquote class="irc-greentext"><span class="irc-greentext__line">I’m here a week now</span></blockquote>
<p><img src="https://img.gitkeniwo.tech/202410/02-1727825170.jpeg" alt="Apocalypse.Now.1979.Redux.REMASTERED.1080p.BluRay.x265-RBG-0012" loading="lazy" decoding="async"></p>
<blockquote class="irc-greentext"><span class="irc-greentext__line">Waiting for a mission</span></blockquote>
<p><img src="https://img.gitkeniwo.tech/202410/02-1727825406.jpeg" alt="Apocalypse.Now.1979.Redux.REMASTERED.1080p.BluRay.x265-RBG-0037" loading="lazy" decoding="async"></p>
<blockquote class="irc-greentext"><span class="irc-greentext__line">Getting Softer</span></blockquote>
<p><img src="https://img.gitkeniwo.tech/202410/02-1727825399.jpeg" alt="Apocalypse.Now.1979.Redux.REMASTERED.1080p.BluRay.x265-RBG-0039" loading="lazy" decoding="async"></p>
<blockquote class="irc-greentext"><span class="irc-greentext__line">Every minute I stay in this room,</span><span class="irc-greentext__line">I get weaker</span></blockquote>
<p><img src="https://img.gitkeniwo.tech/202410/02-1727825331.jpg" alt="Apocalypse.Now.1979.Redux.REMASTERED.1080p.BluRay.x265-RBG-0041" loading="lazy" decoding="async"></p>
<blockquote class="irc-greentext"><span class="irc-greentext__line">And every minute Charlie squats in the bush,</span><span class="irc-greentext__line">he gets stronger</span></blockquote>
<p><img src="https://img.gitkeniwo.tech/202410/02-1727825496.jpeg" alt="Apocalypse.Now.1979.Redux.REMASTERED.1080p.BluRay.x265-RBG-0013" loading="lazy" decoding="async"></p>
<blockquote class="irc-greentext"><span class="irc-greentext__line">Each time I looked around,</span><span class="irc-greentext__line">the walls moved in a little tighter</span></blockquote>
<blockquote class="irc-greentext"><span class="irc-greentext__line"><img src="https://img.gitkeniwo.tech/202410/02-1727825532.jpg" alt="Apocalypse.Now.1979.Redux.REMASTERED.1080p.BluRay.x265-RBG-0043" loading="lazy" decoding="async"></span></blockquote>
<p><img src="https://img.gitkeniwo.tech/202410/02-1727825543.jpeg" alt="Apocalypse.Now.1979.Redux.REMASTERED.1080p.BluRay.x265-RBG-0014" loading="lazy" decoding="async"></p>
<p><img src="https://img.gitkeniwo.tech/202410/02-1727825628.jpg" alt="Apocalypse.Now.1979.Redux.REMASTERED.1080p.BluRay.x265-RBG-0004" loading="lazy" decoding="async"></p>
<blockquote class="irc-greentext"><span class="irc-greentext__line">Everyone gets everything he wants.</span><span class="irc-greentext__line">I wanted a mission.</span><span class="irc-greentext__line">And for my sins, they gave me one …</span></blockquote>]]></content>
    <summary type="html">&lt;p&gt;&lt;img src=&quot;https://img.gitkeniwo.tech/202410/02-1727826495.jpg&quot; alt=&quot;Apocalypse.Now.1979.Redux.REMASTERED.1080p.BluRay.x265-RBG-0044&quot; load</summary>
    <category term="The Library of Babel" scheme="https://gitkeniwo.tech/taxonomy/The-Library-of-Babel/"/>
    <category term="Films" scheme="https://gitkeniwo.tech/taxonomy/The-Library-of-Babel/Films/"/>
    <category term="nam" scheme="https://gitkeniwo.tech/tags/nam/"/>
  </entry>
  <entry>
    <title>南北韩非军事区 Demilitarized Zone (DMZ) 一日游</title>
    <link href="https://gitkeniwo.tech/2024-09-12-dmz-day-trip/"/>
    <id>https://gitkeniwo.tech/2024-09-12-dmz-day-trip/</id>
    <published>2024-09-12T18:47:21.000Z</published>
    <updated>2024-09-12T18:47:21.000Z</updated>
    <content type="html"><![CDATA[<p>（未写完待续）</p>
<p>本次去首尔的第四天起意去了南北韩非军事区(DMZ)。</p>
<p>一般来说不少人在5～7日的行程里都会安排一天釜山 day trip，但我们考虑到如果不从金海机场飞走的话，来回釜山的路费不太划算，再加上接近韩国中秋节，可能订票会有局限性。再次，因为大家基本上都是五年多次的C-3-9签证，釜山总是可以再来的对吧！秉持着如此信念我们安排了北上的行程。</p>
<h1 id="首尔市内住宿交通">首尔市内住宿·交通</h1>
<p>我们住在永登浦 영등포 的 Fairfield 万枫酒店，是万豪旗下的中档线，几乎就在永登浦车站门口，除了会有铁路噪音以外没有太多可以挑剔的。</p>
<p>提到永登浦就绕不开永登浦车站通的[수도권 전철 1호선](<a href="https://namu.wiki/w/%EC%88%98%EB%8F%84%EA%B6%8C">https://namu.wiki/w/수도권</a> 전철 1호선)（<em>首都圈电铁</em>1号线）。虽然永登浦也通ITX（城际）和KTX（高铁），但主要首尔的游客利用的主要还是1号线。<em>首都圈电铁</em>1号线几乎是世界上最长的地铁线路，特别长，因为它本身是收编了首尔地下铁1号线、<a href="https://namu.wiki/w/%EA%B2%BD%EC%9D%B8%EC%84%A0">京仁线</a>（首尔-仁川）、<a href="https://namu.wiki/w/%EA%B2%BD%EB%B6%80%EC%84%A0">京釜线</a>（首尔-釜山，即龙山-天安站）、<a href="https://namu.wiki/w/%EA%B2%BD%EC%9B%90%EC%84%A0">京元线</a>（首尔-北韩江原道元山市，即清凉里-白马高地백마고지역）等古早线路的超级通勤大线，按照德国的命名习惯可以看作7条不同编号的S-Bahn加1条U-Bahn，延伸到京畿道光明区、九老区、乌山市、仁川广域市和忠清南道，有不同的交路运营。虽然1号线全线218.9km，但作为首尔特别市地下铁1号线的区间（地下段）仅仅是首尔站经过钟路到清凉里站的这段区间，连龙山站都不包含，因为到了龙山就已经全程地上了，龙山到鹭梁津是架桥过汉江，江南段大站永登浦和新道林都是地上车站（新道林1/2天地换乘很痛苦），这地下段长度仅有几公里。</p>
<p><img src="https://img.gitkeniwo.tech/202409/23-1727044717-IMG_7062.jpeg" alt="IMG_7062" loading="lazy" decoding="async"></p>
<p style="text-align:center">Fig 1. 新街站（신길역）屏蔽门上的一号线不同交路示意图。值得注意的是有相当一部分永登浦前往市区的列车仅仅到龙山就终到了，这些大部分都是从东仁川站（동인천역）开过来的급행和특급。</p>
<p>虽然有급행和특급，但永登浦很难坐错车，因为급행和특급专用一个站台，候车时间较长，需要掐点。而일반여차专用另一个站台，随到随走，所以首尔市内游玩建议去一般列车的站台候车。</p>
<h1 id="dmz-去程交通">DMZ 去程交通</h1>
<p>去DMZ，得首先去南韩边境的坡州市(파주시)，有些人是包车去的，但是坐[경의·중앙선](<a href="https://namu.wiki/w/%EC%88%98%EB%8F%84%EA%B6%8C">https://namu.wiki/w/수도권</a> 전철 경의·중앙선)(京义中央线)可以很便宜的坐到那附近。</p>
<p>这里要理解一下京义中央线，特别是京义段的两小交路：汶山/临津阁。京义中央线线路图上的终点站是临津阁【更严格的来讲，是DMZ门口的都羅山站（도라산역），但这个站位于<a href="https://namu.wiki/w/%EB%AF%BC%EA%B0%84%EC%9D%B8%20%EC%B6%9C%EC%9E%85%ED%86%B5%EC%A0%9C%EC%84%A0">民间人出入统制线</a>内，理论上需要经过宪兵检查才能进入，实际上并没有游客能够使用，游客都在临津阁下车】。京义中央线能随到随走的仅有至汶山的交路，去汶山的列车几乎都是十多分钟间隔，可以自行选择相应的급행或일반列车。而DMZ的Bus Tour对应的游览入口是临津阁，因为临津阁鲜少有游客，京义中央线每天仅有早上一班去临津阁的，和傍晚一班从临津阁返回的列车（需要在汶山站换乘）。这也是为什么小红书上有人推荐很早就去（坐早上九点的车）。</p>
<p>当然，我们没必要直接坐火车去临津阁，可以选择任意时间到汶山，再换乘Bus或出租过去（2点之前，因为2点30左右就停止售票了）。</p>
<p>京义中央线去在首尔市区的加佐站分叉，一边终到首尔站，另一边经过龙山。停靠的大站有龙山（1），首尔（1，4，班次较少，是一个终到站的分叉），孔德（5，6，空港），弘大入口（2），Digital Media City（6，空港），汉南，往十里（2，5，水仁盆堂）。我们由于从永登浦出发，就直接去龙山换乘京义线了。</p>
<p><img src="https://img.gitkeniwo.tech/202409/23-1727053937-DC717AB4-0363-48BE-B8ED-DC63FCFDCAE7_1_105_c.jpeg" alt="DC717AB4-0363-48BE-B8ED-DC63FCFDCAE7_1_105_c" loading="lazy" decoding="async"></p>
<p style="text-align:center">Fig. 龙山站内1号线和京义中央线5个站台不同交路的示意图</p>
<p>值得注意的，龙山站的京义中央线也有일반和급행两个站台，且급행接近一小时一班，建议掐点坐，想随到随走去等일반。</p>
<p>经过痛苦的一小时乘车之后，京义线开到了汶山。汶山有两路버스能去</p>
<p>我们当时因为已经两点过了，有可能赶不上最后一班Tour，于是在汶山站门口直接喊了个cab过去，花费是9400韩元。</p>
<p><img src="https://img.gitkeniwo.tech/202409/23-1727054004-2CBB3FCD-6A16-4C18-90E8-51D7DF03B372_1_105_c.jpeg" alt="2CBB3FCD-6A16-4C18-90E8-51D7DF03B372_1_105_c" loading="lazy" decoding="async"></p>
<p style="text-align:center">Fig. 문산역앞 汶山站前，复古的UFO造型</p>
<h1 id="平和观光">平和观光</h1>
<h1 id="dmz-回程新村신손梨大이대梨泰院汉南洞">DMZ 回程・新村신손/梨大이대・梨泰院/汉南洞</h1>
<p><img src="https://img.gitkeniwo.tech/202409/23-1727055412-9DFB9537-BB3D-414D-9430-BB1AA964FD24_1_105_c.jpeg" alt="9DFB9537-BB3D-414D-9430-BB1AA964FD24_1_105_c" loading="lazy" decoding="async"></p>
<p style="text-align:center">Fig. 홍대입구역, "원신"홍보 弘大入口站的"원신"广告</p>
<p><img src="https://img.gitkeniwo.tech/202409/23-1727055735-8806444C-5C0F-45D4-B042-C330C66FF47F_1_105_c.jpeg" alt="8806444C-5C0F-45D4-B042-C330C66FF47F_1_105_c" loading="lazy" decoding="async"></p>
<p style="text-align:center">Fig. 新村/梨大附近也是热门商圈</p>
<p><img src="https://img.gitkeniwo.tech/202409/23-1727055674-5033F3B2-232B-449E-95CC-DD0A1E7CFD72_1_105_c.jpeg" alt="5033F3B2-232B-449E-95CC-DD0A1E7CFD72_1_105_c" loading="lazy" decoding="async"></p>
<p><img src="https://img.gitkeniwo.tech/202409/23-1727055681-778D38A2-A7E2-4C59-87E6-C635F049652A_1_105_c.jpeg" alt="778D38A2-A7E2-4C59-87E6-C635F049652A_1_105_c" loading="lazy" decoding="async"></p>
<p style="text-align:center">Fig. 착한곱창 直译为「善良的烤肥肠」</p>]]></content>
    <summary type="html">&lt;p&gt;（未写完待续）&lt;/p&gt;
&lt;p&gt;本次去首尔的第四天起意去了南北韩非军事区(DMZ)。&lt;/p&gt;
&lt;p&gt;一般来说不少人在5～7日的行程里都会安排一天釜山 day trip，但我们考虑到如果不从金海机场飞走的话，来回釜山的路费不太划算，再加上接近韩国中秋节，可能订票会有局限性。再次</summary>
    <category term="The Library of Babel" scheme="https://gitkeniwo.tech/taxonomy/The-Library-of-Babel/"/>
    <category term="Itineraries" scheme="https://gitkeniwo.tech/taxonomy/The-Library-of-Babel/Itineraries/"/>
    <category term="asia" scheme="https://gitkeniwo.tech/tags/asia/"/>
    <category term="korea" scheme="https://gitkeniwo.tech/tags/korea/"/>
  </entry>
  <entry>
    <title>回国 SSH 代理设置 / SSH Proxy Settings</title>
    <link href="https://gitkeniwo.tech/2024-09-01-ssh-proxy-settings/"/>
    <id>https://gitkeniwo.tech/2024-09-01-ssh-proxy-settings/</id>
    <published>2024-09-01T21:59:04.000Z</published>
    <updated>2024-09-01T21:59:04.000Z</updated>
    <content type="html"><![CDATA[<p>本次回🀄️发现虽然挂机场代理后外部访问问题不大，但GCP机器的ssh connection卡成翔，此贴记录一下macOS上ssh代理设置相关问题。</p>
<h1 id="command-interpretation">Command Interpretation</h1>
<p>为ssh命令设置代理的通用模版是</p>
<pre class="astro-code astro-code-themes everforest-light everforest-dark" style="--shiki-light:#5c6a72;--shiki-dark:#d3c6aa;--shiki-light-bg:#fdf6e3;--shiki-dark-bg:#2d353b; overflow-x: auto;" tabindex="0" data-language="sh"><code><span class="line"><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080">ssh</span><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F"> -o</span><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F"> ProxyCommand=</span><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080">"nc -X 5 -x 127.0.0.1:1080 %h %p"</span><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080"> \</span></span>
<span class="line"><span style="--shiki-light:#DFA000;--shiki-dark:#DBBC7F">    root@server</span></span></code></pre>
<p>其中<code>-o</code> flag代表option, 用以唤起<code>ProxyCommand</code>这个选项，具体man page里描述为：</p>
<pre class="astro-code astro-code-themes everforest-light everforest-dark" style="--shiki-light:#5c6a72;--shiki-dark:#d3c6aa;--shiki-light-bg:#fdf6e3;--shiki-dark-bg:#2d353b; overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>-o option</span></span>
<span class="line"><span>        Can be used to give options in the format used in the configuration file.  This is useful for specifying</span></span>
<span class="line"><span>        options for which there is no separate command-line flag.  For full details of the options listed below,</span></span>
<span class="line"><span>        and their possible values, see ssh_config(5).</span></span></code></pre>
<p>这里面，<code>man ssh_config</code>中<code>ProxyCommand</code>的描述为：</p>
<pre class="astro-code astro-code-themes everforest-light everforest-dark" style="--shiki-light:#5c6a72;--shiki-dark:#d3c6aa;--shiki-light-bg:#fdf6e3;--shiki-dark-bg:#2d353b; overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>ProxyCommand</span></span>
<span class="line"><span>        Specifies the command to use to connect to the server.  The command string extends to the end of the</span></span>
<span class="line"><span>        line, and is executed using the user's shell ‘exec’ directive to avoid a lingering shell process.</span></span>
<span class="line"><span></span></span>
<span class="line"><span>        Arguments to ProxyCommand accept the tokens described in the TOKENS section.  The command can be</span></span>
<span class="line"><span>        basically anything, and should read from its standard input and write to its standard output.  It should</span></span>
<span class="line"><span>        eventually connect an sshd(8) server running on some machine, or execute sshd -i somewhere.  Host key</span></span>
<span class="line"><span>        management will be done using the Hostname of the host being connected (defaulting to the name typed by</span></span>
<span class="line"><span>        the user).  Setting the command to none disables this option entirely.  Note that CheckHostIP is not</span></span>
<span class="line"><span>        available for connects with a proxy command.</span></span>
<span class="line"><span></span></span>
<span class="line"><span>        This directive is useful in conjunction with nc(1) and its proxy support.  For example, the following</span></span>
<span class="line"><span>        directive would connect via an HTTP proxy at 192.0.2.0:</span></span>
<span class="line"><span></span></span>
<span class="line"><span>        ProxyCommand /usr/bin/nc -X connect -x 192.0.2.0:8080 %h %p</span></span></code></pre>
<p><code>nc</code>命令即TCP/UDP监听, <code>-X</code> flag 默认值<code>5</code>指定socks5协议, <code>-x</code> 指定了代理的地址：端口。</p>
<pre class="astro-code astro-code-themes everforest-light everforest-dark" style="--shiki-light:#5c6a72;--shiki-dark:#d3c6aa;--shiki-light-bg:#fdf6e3;--shiki-dark-bg:#2d353b; overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>NAME</span></span>
<span class="line"><span>     nc – arbitrary TCP and UDP connections and listens</span></span>
<span class="line"><span>SYNOPSIS</span></span>
<span class="line"><span>     nc [-46AcDCdhklnrtUuvz] [-b boundif] [-i interval] [-p source_port] [-s source_ip_address] [-w timeout]</span></span>
<span class="line"><span>        [-X proxy_protocol] [-x proxy_address[:port]] [--apple-delegate-pid pid] [--apple-delegate-uuid uuid]</span></span>
<span class="line"><span>        [--apple-ext-bk-idle] [--apple-nowakefromsleep n] [--apple-ecn mode] [hostname] [port[s]]</span></span>
<span class="line"><span></span></span>
<span class="line"><span>-X proxy_version</span></span>
<span class="line"><span>        Requests that nc should use the specified protocol when talking to the proxy server.  Supported protocols</span></span>
<span class="line"><span>        are “4” (SOCKS v.4), “5” (SOCKS v.5) and “connect” (HTTPS proxy).  If the protocol is not specified,</span></span>
<span class="line"><span>        SOCKS version 5 is used.</span></span></code></pre>
<p>我的梯子一般使用 clash 系的代理工具，<a href="https://en.clashx.org">clash X</a> 或 <a href="https://apps.apple.com/us/app/stash-rule-based-proxy/id1596063349">stash</a>。<br>
stash app store版用的是系统级VPN接口，理论上不需要另外为ssh设置代理。局域网内设备运行的stash需要在 <code>Settings > Network Settings</code> 中turn on <code>Allow LAN Devices</code> 选项，以开启LAN访问。<br>
clash 系工具的混合代理监听端口 (mixed proxy port) 一般是7890，将ProxyCommand的端口修改一下即可。</p>
<h1 id="sshconfig"><code>~/.ssh/config</code></h1>
<p>本人是<code>~/.ssh/config</code>党，如果你还不会配置ssh config，推荐你稍微学习一下。</p>
<p>如果你要为特定的Host设置代理，只需给你的Host加入<code>ProxyCommand</code>相关行即可</p>
<pre class="astro-code astro-code-themes everforest-light everforest-dark" style="--shiki-light:#5c6a72;--shiki-dark:#d3c6aa;--shiki-light-bg:#fdf6e3;--shiki-dark-bg:#2d353b; overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>Host de-zoomcamp-proxy</span></span>
<span class="line"><span>  ProxyCommand nc -X 5 -x 127.0.0.1:7890 %h %p</span></span>
<span class="line"><span>  HostName yourhostip</span></span>
<span class="line"><span>  User yourname</span></span>
<span class="line"><span>  IdentityFile ~/.ssh/gcp</span></span></code></pre>
<p>因为我在墙外也需要连接同样的Host，一般就另外设置一个<code>xxx-proxy</code> Host专供墙内代理使用。<br>
但比较令人无语的是，使用代理后ssh到GCP谷歌云依然有输入延迟。</p>
<h1 id="ssh-over-http-proxy">SSH over HTTP Proxy</h1>
<p>如果你没有sock5，仅有HTTP，也可以通过<a href="https://formulae.brew.sh/formula/corkscrew"><code>corkscrew</code></a>给你的HTTP代理建立socks5隧道.</p>
<pre class="astro-code astro-code-themes everforest-light everforest-dark" style="--shiki-light:#5c6a72;--shiki-dark:#d3c6aa;--shiki-light-bg:#fdf6e3;--shiki-dark-bg:#2d353b; overflow-x: auto;" tabindex="0" data-language="sh"><code><span class="line"><span style="--shiki-light:#DF69BA;--shiki-dark:#D699B6">$brew</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA"> install corkscrew</span></span></code></pre>
<p>找到corkscrew的路径</p>
<pre class="astro-code astro-code-themes everforest-light everforest-dark" style="--shiki-light:#5c6a72;--shiki-dark:#d3c6aa;--shiki-light-bg:#fdf6e3;--shiki-dark-bg:#2d353b; overflow-x: auto;" tabindex="0" data-language="sh"><code><span class="line"><span style="--shiki-light:#DF69BA;--shiki-dark:#D699B6">$which</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA"> corkscrew</span></span>
<span class="line"><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080">/opt/homebrew/bin/corkscrew</span></span></code></pre>
<p>再向<code>~/.ssh/config</code>写入</p>
<pre class="astro-code astro-code-themes everforest-light everforest-dark" style="--shiki-light:#5c6a72;--shiki-dark:#d3c6aa;--shiki-light-bg:#fdf6e3;--shiki-dark-bg:#2d353b; overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>ProxyCommand /opt/homebrew/bin/corkscrew 127.0.0.1 7890 %h %p</span></span></code></pre>]]></content>
    <summary type="html">&lt;p&gt;本次回🀄️发现虽然挂机场代理后外部访问问题不大，但GCP机器的ssh connection卡成翔，此贴记录一下macOS上ssh代理设置相关问题。&lt;/p&gt;
&lt;h1 id=&quot;command-interpretation&quot;&gt;Command Interpretation&lt;/h1</summary>
    <category term="Zen and the Art of Computer Maintenance" scheme="https://gitkeniwo.tech/taxonomy/Zen-and-the-Art-of-Computer-Maintenance/"/>
    <category term="Anti-Censorship" scheme="https://gitkeniwo.tech/taxonomy/Zen-and-the-Art-of-Computer-Maintenance/Anti-Censorship/"/>
    <category term="gfw" scheme="https://gitkeniwo.tech/tags/gfw/"/>
  </entry>
  <entry>
    <title>Matthew Perry 与笑匠</title>
    <link href="https://gitkeniwo.tech/2024-08-16-matthew-perry-the-comedian/"/>
    <id>https://gitkeniwo.tech/2024-08-16-matthew-perry-the-comedian/</id>
    <published>2024-08-16T16:18:47.000Z</published>
    <updated>2024-08-16T16:18:47.000Z</updated>
    <content type="html"><![CDATA[<div style="display:flex; gap:0.5rem;">
  <div style="flex:1;">
    <img src="https://img.gitkeniwo.tech/202512/20-724dc00c9ea17278cfd374476eabd9da-1766193621.jpeg" style="width:100%; aspect-ratio:4/3; object-fit:contain; ">
  </div>
  <div style="flex:1;">
    <img src="https://img.gitkeniwo.tech/202512/20-a34524e28d12ac9e928a31732dae41c0-1766193621.jpeg" style="width:100%; aspect-ratio:4/3; object-fit:contain; ">
  </div>
</div>
<blockquote class="irc-greentext"><span class="irc-greentext__line">草 Matthew Perry这个遗照真是有守望者里笑匠的意思了</span></blockquote>
<p>起因是OP今早发表了如上简短感想。</p>
<p>For the rest of the day，一种奇怪的感觉时不时的一直涌上OP的心头，就像是在一个本该平静的午后，突然传来一阵极其细微、被雨水打湿的焦糊味。你会想，那是某个逝去的时代泛来的涟漪，还是某种未来将来的不详征兆？</p>
<p>仔细思考了一下，OP觉得这种有端联想实则是带有某种恶意成分的，是不应该随便shitposting的。除了both smiley faces, both goners以外，二者为人处事的逻辑却大相径庭，是永不交汇的两条平行线。</p>
<p>或者说，二者虽然都曾共用那副名为喜剧大师的盔甲，内里却早已腐蚀成完全不同形状的生物。</p>
<p>Smiley Face是他们曾面对这个世界的方式，但二者都以此精美的面具来筑起防线，来隐藏笑脸徽章的背后的那些难以言说的、深刻而绝望的、对荒诞不经的世事的恐惧。二者都曾从不同角度直视过那个庞然的足以让意志崩塌的深渊，然后在那之后毅然走向了相反的磁极。</p>
<p>Redpilled and Bluepilled.</p>
<p>这两张图片，一张是选择成为笑话本身的人，对其承担过的无尽永恒的世俗痛苦的终审判决，面具落下后虚无归位万事解脱；而另一张是生活的真相，对选择了更孤勇的道路的人，其不断的挣扎的连绵不绝的嘲弄。</p>
<p>对一方来说，世界已经在其被扔出公寓的落地窗外后闭合，而在另一方看来世界还将在他离去之后的时间线上以一种冷漠的节奏惯性不断运转。</p>
<p>真的是这样的吗？OP突然感到一种说不清的取舍感。OP是在怜悯那种脆弱的坚韧，还是在嫉妒那种彻底的决绝？窝发这条文，是试图解构这种痛苦，还是试图给这种悲剧贴上带有某种意义的标签？</p>
<p>Don’t get me wrong. I love Chandler Bing. And I love Matthew who hid behind his jokes trying so hard to save people from their own sufferings.</p>
<p>It’s just that he is so similar and so different to the Comedian.</p>
<h1 id="本blog的logo">本Blog的logo</h1>
<p>If you haven’t noticed it yet, 本博客的Logo已经从最初的pixel grogu 换成 pixel 笑匠很久了。这个带血渍的笑脸某种程度上代表了OP对其象征着的处世态度的复杂感情。</p>
<p>Edward Blake重来就不是一个正经的人。但为什么他对世界的观察与判断如此冷峻而精准，让人倒吸一口凉气呢？</p>
<p>…</p>
<h1 id="15-yemen-road-yemen">15 Yemen Road, Yemen</h1>
<p>Matthew Perry is almost solely known for playing Chandler Bing in <em>Friends</em>.</p>
<p>…</p>
<h1 id="从-chandler-bing-到-mattman">从 Chandler Bing 到 Mattman</h1>
<p>Matthew 在自传里明确表示自己就是Chandler，实际上，就如果看过老友记（OP从头到尾看过3遍+常常零散回顾）和任意Matthew在04年之前的采访花絮，大概都会惊呼Matthew就是Chanlder本人。说话的语调、讲笑话的风格、肢体语言都，Chanlder这个形象与其说是由老友记creator的台本塑造，不如说就是90/00年代Matthew本人对理想自我的一个投射，并在他自己的演出里不断动态的补完。</p>
<p>S01-S04的钱德勒·宾是Miserable的，被Janice纠缠不说还屡次错失真爱，钱像是一个被困在原生家庭成长经历和现代社会关系中的原子人，生活对他来说是停滞的。但从S05钱莫线开始，钱这个人物弧光开始突飞猛进，虽然一部分原因是观众与编剧协同ship了这对CP，但</p>
<p>Chandler Bing是Matthew早期的自我投射，这种心理投射机制的恶果就是带来虚与实的错位感。这种错位感极致的影像化的结果，就是大卫林奇的《Inland Empire》。</p>
<h1 id="its-all-a-joke-touch-grass-nothing-matters">It’s all a joke. Touch grass, nothing matters.</h1>
<p>人生是一场MMORPG的话, Edward Blake就是那个troll玩家。</p>
<h1 id="hopium-hopepilled">Hopium. Hopepilled.</h1>
<p>r/hopeposting 里有anon<a href="https://www.reddit.com/r/hopeposting/comments/15ow0xy/what_made_you_take_the_hopepill/">发问</a>：What made you take the hopepill? 赞数最高的一楼回答：</p>
<blockquote class="irc-greentext"><span class="irc-greentext__line">Really, what’s the alternative? I could be pessimistic, but what do I gain from it?</span></blockquote>
<p>这大概就是大部分hopepilled的人的真实想法。</p>
<h1 id="big-w-or-big-l">Big W or Big L?</h1>
<p>对笑匠来说，带血的笑脸是对所谓英雄和正义的终极解构，对这个世界最后的嘲笑。<br>
这个世界对爱德华布莱克来说已经结束了，万物运行的规律，他心中的结论已经尘埃落定。<br>
Big W?</p>
<p>Matthew的笑脸badge是一场</p>
<h1 id="破裂的落地窗与溢满水的浴缸">破裂的落地窗与溢满水的浴缸</h1>]]></content>
    <summary type="html">&lt;div style=&quot;display:flex; gap:0.5rem;&quot;&gt;
  &lt;div style=&quot;flex:1;&quot;&gt;
    &lt;img src=&quot;https://img.gitkeniwo.tech/202512/20-724dc00c9ea17278cfd374476</summary>
    <category term="The Library of Babel" scheme="https://gitkeniwo.tech/taxonomy/The-Library-of-Babel/"/>
    <category term="Films" scheme="https://gitkeniwo.tech/taxonomy/The-Library-of-Babel/Films/"/>
    <category term="tv" scheme="https://gitkeniwo.tech/tags/tv/"/>
    <category term="alanmoore" scheme="https://gitkeniwo.tech/tags/alanmoore/"/>
  </entry>
  <entry>
    <title>海德堡圣地巡礼</title>
    <link href="https://gitkeniwo.tech/2024-07-31-heidelberg-city-pilgrimage/"/>
    <id>https://gitkeniwo.tech/2024-07-31-heidelberg-city-pilgrimage/</id>
    <published>2024-07-31T01:06:37.000Z</published>
    <updated>2024-07-31T01:06:37.000Z</updated>
    <content type="html"><![CDATA[<p>本次暑期趁着巴黎奥运会，从荷兰出发走了一趟荷兰->巴黎->柏林-> 荷兰的大环线，对于在荷兰住的UU们是一个经典的、可定制程度高的线路。</p>
<p>就我们的路线来说，主要的落脚城市有Nancy, 斯特拉斯堡, 曼海姆，法兰克福，柏林。</p>
<p>Enable本次旅途的，是法国大东部大区(Grand Est，16年合区后包含香槟阿登、阿尔萨斯洛林三个老区)的青年暑期29欧慢车月票。该票涵盖从巴黎Gare de l’Est出发，经过大东区，至德国巴符州州内的所有慢车。这也就是说，法国区域内除了TGV坐不了都可以，德国境内则应该是常见的RE/RB/IC都包含。而由于卢森堡境内所有交通免费，你只需想办法解决从别地前往卢森堡的交通费用，实际上该票等效于囊括卢森堡全境。（e.g. 持有D-Ticket坐<strong>RE11</strong>从科布伦茨经Trier前往卢森堡这条路线也是完全免费的。这是从德国前往卢森堡的经典路线）</p>
<p>所以，实际上这票就能送你从Gare de l’Est到巴符州的最北边(曼海姆)。而曼海姆这个城最出名的fact就是与其河对门的路德维希哈芬Ludwigshafen形成双子城，而路德维希哈芬就又是莱法州的城市了，所以曼海姆实际上是巴符州的边境城市。再往北走一点，到大肠市(Darmstadt)就已经是黑森州了。</p>
<p>穿过莱茵河谷，经Offenburg往南走，你还能继续去弗莱堡-米卢斯-巴塞尔德法瑞三城边境区域。</p>]]></content>
    <summary type="html">&lt;p&gt;本次暑期趁着巴黎奥运会，从荷兰出发走了一趟荷兰-&gt;巴黎-&gt;柏林-&gt; 荷兰的大环线，对于在荷兰住的UU们是一个经典的、可定制程度高的线路。&lt;/p&gt;
&lt;p&gt;就我们的路线来说，主要的落脚城市有Nancy, 斯特拉斯堡, 曼海姆，法兰克福，柏林。&lt;/p&gt;
&lt;p&gt;Enable本次旅途</summary>
    <category term="The Library of Babel" scheme="https://gitkeniwo.tech/taxonomy/The-Library-of-Babel/"/>
    <category term="Itineraries" scheme="https://gitkeniwo.tech/taxonomy/The-Library-of-Babel/Itineraries/"/>
    <category term="de" scheme="https://gitkeniwo.tech/tags/de/"/>
  </entry>
  <entry>
    <title>给本 Blog 配置 Cloudflare R2 图床</title>
    <link href="https://gitkeniwo.tech/2024-07-16-r2-image-hosting-for-your-blog/"/>
    <id>https://gitkeniwo.tech/2024-07-16-r2-image-hosting-for-your-blog/</id>
    <published>2024-07-16T23:00:38.000Z</published>
    <updated>2024-07-16T23:00:38.000Z</updated>
    <content type="html"><![CDATA[<h1 id="准备r2-bucket">准备R2 Bucket</h1>
<p>之前已经写过如何将GitHub Repo用作你的Blog的图床，并配置了<a href="/2021-03-28-picgo/">PicGo</a>上传工具<em>(p.s. 看三年前写的文章感觉那时自己真是脑瘫)</em>，那之后，我部署了Memos，废话都转移到了Memos那边。最开始一段时间给Memos的图片解决方案一直是Mardown加Imgur，后来Memos支持了R2，我也就放弃了Imgur直接为Memos配置了R2。</p>
<p>R2最大的好处就不用多说了，10G容量内永久免费。</p>
<p>Memos最开始是用 <a href="https://developers.cloudflare.com/r2/buckets/public-buckets/#managed-public-buckets-through-r2dev">R2.dev subdomain</a> 这样的方式开启了public access，再用CORS仅允许了从Memos站点加载的访问（因为是CF送的域名，难免要处理CORS问题）。后来Memos支持了R2 API，就有了专用的URL，核心设计也是CORS防盗链。静态Blog的话不像这些Web应用，一般缺乏对R2的原生支持，这时最好是为你的Bucket设置Public Access的域名。</p>
<p>![](<a href="https://img.gitkeniwo.tech/2024/09/22-1727040095-Screenshot">https://img.gitkeniwo.tech/2024/09/22-1727040095-Screenshot</a> 2024-09-22 at 23.21.24.png)</p>
<p>我的做法是直接将我的域名<a href="https://developers.cloudflare.com/registrar/get-started/transfer-domain-to-cloudflare/">托管到了CF上</a>，然后直接在Bucket Setting中添加想要的Subdomain就行了（一般是 img.xxx.zz），因为域名完全托管在CF上，CF可以自动帮你handle所有的DNS record问题。</p>
<h1 id="picgo-设置">PicGo 设置</h1>
<p>因为UI问题，我之前弃用了PicGo，转移到了uPic，但uPic实在太久没更新了，没有支持R2这样S3-like但并不跟S3完全相同的OSS（如Minio/B2），于是我又切回PicGo。PicGo新版移除了对S3的默认支持，自带的都是一些墙内图床，它把S3这样的支持分离了出去，作为插件发布。这里我使用的是 <a href="https://github.com/wayjam/picgo-plugin-s3">wayjam/picgo-plugin-s3</a></p>
<p><img src="https://img.gitkeniwo.tech/2024/09/22-1727041175-20240922233935.png" alt="image-20240922233812876" loading="lazy" decoding="async"></p>
<p>直接搜索后安装，图床设置 > Amazon S3，新建一个R2的profile，然后按照<a href="https://github.com/wayjam/picgo-plugin-s3/issues/28">Issue区给出的方案</a>配置就行了。</p>
<pre class="astro-code astro-code-themes everforest-light everforest-dark" style="--shiki-light:#5c6a72;--shiki-dark:#d3c6aa;--shiki-light-bg:#fdf6e3;--shiki-dark-bg:#2d353b; overflow-x: auto;" tabindex="0" data-language="json"><code><span class="line"><span style="--shiki-light:#939F91;--shiki-dark:#859289">"</span><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080">aws-s3</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">"</span><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">: {</span></span>
<span class="line"><span style="--shiki-light:#939F91;--shiki-dark:#859289">  "</span><span style="--shiki-light:#F57D26;--shiki-dark:#E69875">acl</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">"</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">:</span><span style="--shiki-light:#939F91;--shiki-dark:#859289"> "</span><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080">private</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">"</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">,</span></span>
<span class="line"><span style="--shiki-light:#939F91;--shiki-dark:#859289">  "</span><span style="--shiki-light:#F57D26;--shiki-dark:#E69875">bucketName</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">"</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">:</span><span style="--shiki-light:#939F91;--shiki-dark:#859289"> "</span><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080">example-bucket-name</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">"</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">,</span></span>
<span class="line"><span style="--shiki-light:#939F91;--shiki-dark:#859289">  "</span><span style="--shiki-light:#F57D26;--shiki-dark:#E69875">endpoint</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">"</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">:</span><span style="--shiki-light:#939F91;--shiki-dark:#859289"> "</span><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080">https://example-id.r2.cloudflarestorage.com</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">"</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">,</span></span>
<span class="line"><span style="--shiki-light:#939F91;--shiki-dark:#859289">  "</span><span style="--shiki-light:#F57D26;--shiki-dark:#E69875">pathStyleAccess</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">"</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">:</span><span style="--shiki-light:#DF69BA;--shiki-dark:#D699B6"> true</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">,</span></span>
<span class="line"><span style="--shiki-light:#939F91;--shiki-dark:#859289">  "</span><span style="--shiki-light:#F57D26;--shiki-dark:#E69875">region</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">"</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">:</span><span style="--shiki-light:#939F91;--shiki-dark:#859289"> ""</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">,</span></span>
<span class="line"><span style="--shiki-light:#939F91;--shiki-dark:#859289">  "</span><span style="--shiki-light:#F57D26;--shiki-dark:#E69875">rejectUnauthorized</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">"</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">:</span><span style="--shiki-light:#DF69BA;--shiki-dark:#D699B6"> false</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">,</span></span>
<span class="line"><span style="--shiki-light:#939F91;--shiki-dark:#859289">  "</span><span style="--shiki-light:#F57D26;--shiki-dark:#E69875">accessKeyID</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">"</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">:</span><span style="--shiki-light:#939F91;--shiki-dark:#859289"> "</span><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080">your-id</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">"</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">,</span></span>
<span class="line"><span style="--shiki-light:#939F91;--shiki-dark:#859289">  "</span><span style="--shiki-light:#F57D26;--shiki-dark:#E69875">secretAccessKey</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">"</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">:</span><span style="--shiki-light:#939F91;--shiki-dark:#859289"> "</span><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080">your-key</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">"</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">,</span></span>
<span class="line"><span style="--shiki-light:#939F91;--shiki-dark:#859289">  "</span><span style="--shiki-light:#F57D26;--shiki-dark:#E69875">uploadPath</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">"</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">:</span><span style="--shiki-light:#939F91;--shiki-dark:#859289"> "</span><span style="--shiki-light:#8DA101;--shiki-dark:#A7C080">{year}/{month}/{md5}.{extName}</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">"</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">,</span></span>
<span class="line"><span style="--shiki-light:#939F91;--shiki-dark:#859289">  "</span><span style="--shiki-light:#F57D26;--shiki-dark:#E69875">urlPrefix</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">"</span><span style="--shiki-light:#939F91;--shiki-dark:#859289">:</span><span style="--shiki-light:#939F91;--shiki-dark:#859289"> ""</span></span>
<span class="line"><span style="--shiki-light:#5C6A72;--shiki-dark:#D3C6AA">}</span></span></code></pre>
<h5 id=""><img src="https://img.gitkeniwo.tech/202409/23-1727044124-SCR-20240923-bjir.png" alt="" loading="lazy" decoding="async"></h5>
<h5 id="-1"><img src="https://img.gitkeniwo.tech/202409/22-1727041904-20240922235144.png" alt="" loading="lazy" decoding="async"></h5>
<h1 id="typora-默认图床">Typora 默认图床</h1>
<p>我习惯用Typora码字，于是研究一下为Typora设置PicGo的图床。根据Typora的<a href="https://support.typora.io/Upload-Image/#picgo-core-command-line-opensource">Doc</a>，Typora本来应该是既支持PicGo.app，也支持PicGo CLI即<a href="https://github.com/PicGo/PicGo-Core">PicGo-core</a>的，但我所在的1.9.3似乎移除了对PicGo.app的支持。PicGo core是一个node应用，用<code>npm install -g</code>全局安装（记得把你的<code>.npm-global/</code>的路径<code>/Users/username/.npm-global/bin</code>添加到你的<code>$PATH</code>）后可以使用。</p>
<p><img src="https://img.gitkeniwo.tech/202409/23-1727042756-20240923000555.png" alt="" loading="lazy" decoding="async"></p>
<p>PicGo core 似乎与 .app 不共享config，需要从头配置。首先 <code>picgo install s3</code> 安装上述S3 plugin，然后配置config，路径为 <code>nvim ~/.picgo/config.json</code>.</p>
<p><img src="https://img.gitkeniwo.tech/202409/23-1727043861-image-20240923002420415.png" alt="image-20240923002420415" loading="lazy" decoding="async"></p>
<p>对picgo CLI工具的测试结果：成功</p>
<p><img src="https://img.gitkeniwo.tech/202409/23-1727043486-202409230018919.png" alt="" loading="lazy" decoding="async"></p>
<p>将Typora Insert Image的操作默认值修改为Upload Image</p>
<p><img src="https://img.gitkeniwo.tech/202409/23-1727042499-202409230001125.png" alt="" loading="lazy" decoding="async"></p>
<p><img src="https://img.gitkeniwo.tech/202409/23-1727043807-image-20240923002326444.png" alt="image-20240923002326444" loading="lazy" decoding="async"></p>
<p>经由 core 上传的 image 也会自动出现在PicGo.app的相册里，方便管理。</p>]]></content>
    <summary type="html">&lt;h1 id=&quot;准备r2-bucket&quot;&gt;准备R2 Bucket&lt;/h1&gt;
&lt;p&gt;之前已经写过如何将GitHub Repo用作你的Blog的图床，并配置了&lt;a href=&quot;/2021-03-28-picgo/&quot;&gt;PicGo&lt;/a&gt;上传工具&lt;em&gt;(p.s. 看三年前写的文章感觉那</summary>
    <category term="Blogging" scheme="https://gitkeniwo.tech/taxonomy/Blogging/"/>
    <category term="image-hosting" scheme="https://gitkeniwo.tech/tags/image-hosting/"/>
    <category term="cloudflare" scheme="https://gitkeniwo.tech/tags/cloudflare/"/>
  </entry>
  <entry>
    <title>Blog Refactor Log 2024</title>
    <link href="https://gitkeniwo.tech/2024-07-14-blog-refactor-2024/"/>
    <id>https://gitkeniwo.tech/2024-07-14-blog-refactor-2024/</id>
    <published>2024-07-14T20:10:25.000Z</published>
    <updated>2024-07-14T20:10:25.000Z</updated>
    <content type="html"><![CDATA[<p>I did an overhaul on my blog this July, including:</p>
<ul role="list">
<li>Switched to the free domain name (gitkeniwo.me) I got from GitHub Student Pack
<ul role="list">
<li>Registered/Transferred the domain name to Cloudflare, nameserver of the domain fully set up on Cloudflare DNS</li>
<li>Added CNAME records to gitkeniwo.github.io on GitHub Pages (redirection)</li>
<li>Added A records to gitkeniwo.me, parsing it to the IP Address of GitHub Pages.</li>
<li>Added CNAME records to <a href="http://www.gitkeniwo.me">www.gitkeniwo.me</a>, redirecting to gitkeniwo.github.io</li>
<li>Added a <code>CNAME</code> file to hexo <code>source/</code> folder for hexo static site. Refer to <a href="https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site/managing-a-custom-domain-for-your-github-pages-site#configuring-a-subdomain">this instruction</a> provided by GitHub.</li>
</ul>
</li>
</ul>
<pre class="astro-code astro-code-themes everforest-light everforest-dark" style="--shiki-light:#5c6a72;--shiki-dark:#d3c6aa;--shiki-light-bg:#fdf6e3;--shiki-dark-bg:#2d353b; overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>gitkeniwo.me</span></span></code></pre>
<ul role="list">
<li>Added cloudflare-R2-based image hosting
<ul role="list">
<li>Added <del>img.gitkeniwo.me</del> as the public domain for the image hosting bucket. <em>new domain name is img.gitkeniwo.tech as of 11-2025</em></li>
<li>Setup <del>picgo</del>. <em>Switched to piclist 11-2025</em></li>
</ul>
</li>
</ul>
<p>Todo List:</p>
<ul class="contains-task-list" role="list">
<li class="task-list-item"><input type="checkbox" disabled> Reduce javascript usage</li>
<li class="task-list-item"><input type="checkbox" checked disabled> <del>Refactor stylus css and switch to native CSS with new features.</del> <em>Done 11-2025</em></li>
<li class="task-list-item"><input type="checkbox" checked disabled> <del>Support auto dark mode based on system preference.</del> <em>Done 11-2025</em></li>
<li class="task-list-item"><input type="checkbox" checked disabled> <del>Refactor default archive page and category page UI.</del> <em>Done 11-2025</em></li>
</ul>]]></content>
    <summary type="html">&lt;p&gt;I did an overhaul on my blog this July, including:&lt;/p&gt;
&lt;ul role=&quot;list&quot;&gt;
&lt;li&gt;Switched to the free domain name (gitkeniwo.me) I got from Gi</summary>
    <category term="Blogging" scheme="https://gitkeniwo.tech/taxonomy/Blogging/"/>
  </entry>
  <entry>
    <title>窝小思考Transformer的推理能力</title>
    <link href="https://gitkeniwo.tech/2024-06-22-transformer-agi/"/>
    <id>https://gitkeniwo.tech/2024-06-22-transformer-agi/</id>
    <published>2024-06-22T00:19:42.000Z</published>
    <updated>2024-06-22T00:19:42.000Z</updated>
    <content type="html"><![CDATA[<p><em>Copypasted from <a href="https://samizdat.fly.dev/m/2Wqv9BTTuv5d69C25VbhWV">memos</a></em></p>
<p>如果说语言文字/模型产生的输出，就是能指 <em>signifier</em>；而按照大多数人的观点人的conscious mind更接近所指 <em>signified</em>（你的言辞所想要展示给别人的，你真正想表达的东西），那么人的语言的构造并非人的思维过程，或许它是人的思维的一个子集，但绝不能完全represent人的意识活动。</p>
<p>这正是因为你意欲说出的事情与你的言辞所表达的事情之间总是存在着某些差异，同时这也是一个语言哲学上的鸿沟（gap）。此鸿沟的存在将使通过学舌的语言模型来构建具有推理能力的AGI的尝试变得困难重重。</p>
<p>可以将语言看作人思维的一个子集，或者人思维活动的结果，但语言绝不仅仅是思维的ontology的唯一表现形式。目前的LLM都是通过sampling语言的潜在概率分布来构建<em>AI</em>。也许，耗费马斯克所言的<a href="https://x.com/elonmusk/status/1807643760584708363">数十万张Nvidia H100 GPU</a>，配合庞大的语料库，能构造出一个十分复杂的语言模型，但它终究只能是对人类思维活动的一种异构的逼近 (approximation)。按照统计学习观点，我们不断增加算力也只能尽力缩小估计误差 (estimation error)，而逼近误差 (approximation)取决于模型族是否能很好地拟合潜在的目标分布 (underlying probability distribution) 。问题的核心也就是探究语言模型族对AGI的充分性，而这个用来逼近的模型族，与真实的思维模型之间的approximation error的大小，现在还尚无定论。</p>
<img src="https://i.imgur.com/uwDy0Ib.png" width="70%">
<p class="img-caption">Fig 1. The tradeoffs between Approximation Error &#x26; Estimation Error. In figure (b), the empirical risk of the empirical risk minimizer (ERM), which is also our optimization objective, converges to zero as model complexity increases. The true risk, on the other hands, rebounds. The ERM fails to be a good surrogate for the true risk, leaving a large estimation gap that is hard to bridge.</p>
<p>就好像<a href="https://doi.org/10.1017/S0140525X00005756">Searle提出的中文房间</a>里的单词书 [1]，即便它进化出十分复杂的匹配规则，它的内核依然不是我们所理解的智能，而只是十分复杂的词类映射。一类我觉得noticeable的反对意见是「虽然单词书非智能、但房间整体拥有智能」。Searle已经在原论文的objection部分中对此给予反驳，这里不再赘述。（将房间reduce为仅剩下单词书，或者小人已经记住了单词书所有规则，但依旧不理解中文的意思）</p>
<p>另一方面，因为拉康所说「言辞所表达的事情总是比想要说出的事情更多」（这是由能指自身的特性决定的），即便是单纯的语言模型，它输出的话语所蕴含的所指意向的丰富程度，也会让人产生幻觉，就好像它已然拥有了智能。</p>
<p>图灵测试还是未能考虑到这些问题，图灵测试是一个behavioral criterion, 在图灵的年代也确实难以想象Expert System与Physical Symbol System这些早期AI尝试的失败和连接主义 (connectionism) 的崛起。图灵测试对AI的认识论approach、类似心理测试的行为判定条件，似乎也是对现象学意义上的人类意识 (phenomenal consciousness) 的不可验证性的一个妥协的结果，暗示了我们永远无法跨越心灵哲学所言的解释鸿沟 (explanatory gap)。</p>
<p>在这个意味中看图灵测试，我甚至看到了图灵对整个AGI未来发展所持的悲观态度😂 即便是如今通过表征学习 (representation learning) 算法、由算力堆砌而成的成百上千Gigabytes参数的大语言模型，也未能动摇图灵在70年前提出的这个行为判定准则的地位。</p>
<p>我对能否建造AGI也持同样悲观的态度。The current AI boom is no more than wishful thinking and massive copium. 除非对人类consciousness、对心灵哲学的研究有了新的breakthrough（2019年火遍豆瓣的来自2060的<a href="https://acikacik.pixnet.net/blog/post/69086580">未来人Kafka</a>，就预言了未来人类将在50/60年代在此领域产生突破性的进展），这种盲人摸象式炼丹造就的大模型，更像是一个在符号界不断徘徊盘旋着的幽灵，而不是把守着通往意识世界的入口的卡戎。</p>
<p>Panpsychism或许是关于意识问题的一种安慰剂。如果我们的意识，本身与史前地球的一块石头说拥有的静止的意识是同质的 (homogeneous)，那么这个意识也就失去了一些特殊性。</p>
<p>类似<a href="https://www.mit.edu/people/dpolicar/writing/prose/text/thinkingMeat.html">They are made out of meat</a>一文讽刺的外星人的想法，人类的意识本身不具备特殊性，而是大脑内生物化学变化的作用结果，那么通过模拟脑内环境的方法就能以很小的逼近误差构建出这个思维模型，behavioral criterion获得胜利。Searle其实也对此提出过一些异议，参见The brain simulator reply [1].</p>
<p>又或许，直接倒戈失败主义。承认即便是石头的意识，也不存在于我们这个表象世界，而位于另一个我们无法探索的意识世界，那么AGI问题可以直接宣判死刑。因为现象学意义上的解释鸿沟，我们永远无法构建出能从本质上逼近人类意识的AGI。</p>
<p>[1] Searle, J. R. (1980). Minds, brains, and programs. <em>Behavioral and Brain Sciences</em>, <em>3</em>(3), 417–424. <a href="https://doi.org/10.1017/S0140525X00005756">https://doi.org/10.1017/S0140525X00005756</a></p>]]></content>
    <summary type="html">&lt;p&gt;&lt;em&gt;Copypasted from &lt;a href=&quot;https://samizdat.fly.dev/m/2Wqv9BTTuv5d69C25VbhWV&quot;&gt;memos&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;如果说语言文字/模型产生的输出，就是能指 &lt;em&gt;signifier&lt;</summary>
    <category term="Tweets" scheme="https://gitkeniwo.tech/taxonomy/Tweets/"/>
    <category term="Spouting Off" scheme="https://gitkeniwo.tech/taxonomy/Tweets/Spouting-Off/"/>
    <category term="ai" scheme="https://gitkeniwo.tech/tags/ai/"/>
    <category term="philosophy" scheme="https://gitkeniwo.tech/tags/philosophy/"/>
    <category term="小并感" scheme="https://gitkeniwo.tech/tags/%E5%B0%8F%E5%B9%B6%E6%84%9F/"/>
  </entry>
</feed>
