-
Notifications
You must be signed in to change notification settings - Fork 0
/
local-search.xml
414 lines (198 loc) · 308 KB
/
local-search.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
<?xml version="1.0" encoding="utf-8"?>
<search>
<entry>
<title>城市驿站:西雅图-温哥华</title>
<link href="/essay/2024.12.25.15/"/>
<url>/essay/2024.12.25.15/</url>
<content type="html"><![CDATA[<h1 id="Seattle-WA"><a href="#Seattle-WA" class="headerlink" title="Seattle, WA"></a>Seattle, WA</h1><iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d172153.72220780628!2d-122.50460450156528!3d47.60859697775096!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x5490102c93e83355%3A0x102565466944d59a!2sSeattle%2C%20WA!5e0!3m2!1sen!2sus!4v1735168679274!5m2!1sen!2sus" width="500" height="550" style="border:0;" allowfullscreen="" loading="lazy" referrerpolicy="no-referrer-when-downgrade"></iframe><p>圣诞快乐!</p><p>趁着圣诞假期暂时AFK一下,写一篇关于西雅图和温哥华的游记。<br>这次是难得的Solo Trip,没有很特别的安排–走走停停放松心情。然后我也打算改一改长久以来记流水账的博客风格,打算就文字为辅,图片为主。</p><p>让我们开始吧。</p><h2 id="Dec-24th-2024"><a href="#Dec-24th-2024" class="headerlink" title="Dec 24th, 2024"></a>Dec 24th, 2024</h2><p>早上三点钟就醒了,六点钟OAK->SEA的飞机。SEA很大,并且租车的地方整整有一整栋楼,非常夸张(比墨尔本的租车行小车库大多了)。费了一个半小时的口舌终于成功让租车行给我换了一台有Type-C接口的油车,于是就出发了。</p><p>SEA开到市区大概半个小时。早上主要就是逛了一下Museum of Pop Culture。这个Museum感觉还不错,包括了一些很有趣的流行文化的artifacts,以及一些video clips。</p><p>然后下午去旅馆check-in。睡了个午觉回了血就去了Space Needle,说实话上塔之后非常惊艳,尤其是可以俯瞰整个城区+Pyget Sound+Bellevue,并且看天色逐渐暗下来,观察整个城市入夜也是别有一番体验。晚上和学长吃了个拉面,就回旅馆休息了。</p><p>对于Seattle的第一印象就是很干净的城市(流浪汉大概比湾区少20dB),阴郁的天气(但是今天竟然出太阳了),以及比湾区慢五迈的高速限速。城市的Floorplan也是比较像湾区一样的城市群,而不是LA那样的摊大饼。</p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/AEF32ED0-4A57-445C-B09A-3268717EDB09_1_105_c.jpeg" alt="The car that I ended up getting - Nissan Altima"></p><p><img src="https://github.com/cedard234/imagerepo/blob/master/travel/FE8FD297-E11F-4D69-BB67-7B7F03420A56_1_105_c.jpeg?raw=true" alt="Master Chief Fandom"></p><p><img src="https://github.com/cedard234/imagerepo/blob/master/travel/C402284A-039E-41D9-8237-610D69351C73_1_105_c.jpeg?raw=true" alt="Darth Vader"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/64256052-837D-46D1-B2A2-D1F97936C380_1_105_c.jpeg" alt="Guitar Pillar"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/9F385D7E-3BE5-4317-952E-6CD3818C8A4B_1_105_c.jpeg" alt="Ninja Turtle"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/9132F42A-A50A-496E-B3BE-15835A6F456D_1_105_c.jpeg" alt="Does it look familiar to you?"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/AC797A77-8AB1-4CDA-8D0B-EB9B078C52D7_1_105_c.jpeg" alt="Letter to Professor Harry C. Bauer by J.R.R. Tolkien"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/D8D2BDFE-B5E0-4526-A3FB-F7C3D6AA9BED_1_105_c.jpeg" alt="You have my weapon!"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/3D4FB0F2-9D38-4DF3-A42E-3DE36FEE6BF5_1_105_c.jpeg" alt="Seattle Center"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/CF7AD534-1B50-471D-BC80-E51E2F4AD98C_1_105_c.jpeg" alt="On top of the Space Needle"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/3119631F-2C36-4A8A-80C2-6E1A0FF2F147_1_105_c.jpeg" alt="Revolving Bar"></p><h2 id="Dec-25th-2024-Chistmas-Day"><a href="#Dec-25th-2024-Chistmas-Day" class="headerlink" title="Dec 25th, 2024 - Chistmas Day"></a>Dec 25th, 2024 - Chistmas Day</h2><p>Merry Christmas!</p><p>很不幸,西雅图下了一天暴雨,并且因为圣诞节的原因大多数景点都关门了,因此今天主要去的都是开放式景点。</p><p>因为前一天的旅途劳顿,今天睡满了12个小时,早上十点在雨点拍打着窗户的白噪声中起床。今天主要去了两个地方,华盛顿大学(University of Washington以及Volunteer Park + Lake View Cemetery.</p><p>暴雨中开车到了华盛顿大学,red square里还有零星的一些行人。整体感觉是一个很考究的学校。校园并不大,沿着Stevens Way走完一圈只需要一个半小时(我走的很慢)。校园里的各种学院都很分立,但是建筑风格和颜色都很统一,都是砖红色的维多利亚式风格建筑。雨中的校园很朦胧,人很少,并且非常冷。</p><p>下午去了Volunteer Park。Conservatory开门,但是花了$4进去之后发现很失望,就是一个很小的植物园,也没有太多的讲解和值得看的东西。Volunteer Park的后院是Lake View Cemetery,这个墓地是西雅图的一个历史遗产,里面埋葬了很多西雅图的名人,包括了Bruce Lee和Brandon Lee。雨中的墓地很安静。</p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/965DDE13-F564-4CEE-9663-7A27DBFFF10D_4_5005_c.jpeg" alt="Red Sqaure, also known as Center Plaza"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/157F5B5F-3DF5-4710-96D7-03487050349E_4_5005_c.jpeg" alt="George Washington"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/8450411A-879B-4A1D-B894-F412BB84695E_4_5005_c.jpeg" alt="University Library"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/449ABA39-1E52-483C-96F6-5F8A2B895086_4_5005_c.jpeg" alt="Another Library perhaps?"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/E7907CAF-FA8E-4AA2-8D82-50615B262B5E_4_5005_c.jpeg" alt="Husky"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/90FEA82B-8761-425D-A417-07B41CBE3692_4_5005_c.jpeg" alt="School of Material Science"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/44E21B7B-0EB9-4504-BA87-F655C3EC712D_4_5005_c.jpeg" alt="Here buries Bruce Lee and his son"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/A45FFCAD-18DE-49BF-8C14-1A5BD031BAB0_4_5005_c.jpeg" alt="Lake View Cemetery"></p><h2 id="Dec-26th-2024"><a href="#Dec-26th-2024" class="headerlink" title="Dec 26th, 2024"></a>Dec 26th, 2024</h2><p>圣诞节过后,西雅图的天气终于放晴了。今天去看波音工厂,以及在Seattle市区整一下citywalk。</p><p>早上八点半就醒了,一路往北开到Everett。因为我住在Burien,所以开过去要纵穿整个Seattle市区,所幸没堵车(返程堵上了)。</p><p>波音工厂,也就是最早的波音总部原址,有大概六七个机库车间完成流水线组装,根据机型不同以及年代划分大概有给737,747,767,777,777X以及787的车间,还有一些涂装的设备。Factory Tour只包括了参观777车间,并且全程不允许携带电子设备照相,所以读者估计只能脑补了(笑)。</p><p>组装车间大概分为六七个小步骤。完成一台飞机的组装分为机头,机身,机尾,机翼,以及引擎安装和全身装备,还有涂装。由于在圣诞节假期内,车间内没有工人,机器也基本停转了。根据导览的说法,早期波音的运作模式all homemade,包括机身机翼什么的,现在基本都是外包合约了,只有组装在这里。飞机引擎的供应商有GE,Rolls Royce,以及Pratt & Whitney。完成一台飞机的组装和测试大概需要八到九个月个月,然后交付给客户。在机库里看到了一些熟悉的航空公司,包括吉祥航空,中国南方航空,以及美联航。</p><p>参观完工厂之后在外围有一个小的展览,展示了除民航客机以及货机之外的波音产品,包括了一些军用飞机,太空飞机,以及一些未来概念飞机。展览中还有一些波音的历史,以及一些波音的创始人的故事(比如著名的波音747宽体客机是如何在60年代脱颖而出的)。</p><p>下午西雅图市区放晴了,因此有机会徒步在市区逛逛。去了一趟奇胡利玻璃艺术博物馆,是艺术家奇胡利的个人展览,以及一个玻璃制品融合自然景观的花园。说实话可能我并没有什么艺术家气质,玻璃艺术对我来说就是五彩斑斓的二氧化硅触手。然后去了一趟亚麻总部,看了一眼玻璃球(怎么又是玻璃制品!),最后去了一趟Pike Place Market,给我的感觉和SF的渔人码头并没有太大区别,依然是每个城市都会有的那种tourist trap。然而Pike Market旁边的Promenade walk非常赞,可以看到西雅图港口,摩天轮,以及日落之下整个市区的skyline。</p><p>最后本来打算去逛一下所谓的第一家星巴克,但是感觉天快黑了就打道回府了。说实话对星巴克的兴趣也不高。</p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/E68BB950-5A3B-422E-8A4E-7EE9DAA34B93_1_102_o.jpeg" alt="Future of Flight里的太空舱"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/AFA9A031-1AB1-4D6A-8C5E-F6464EC52744_1_102_o.jpeg" alt="Concept Planes"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/897BC6D5-0DD0-4A2D-806F-2A4F6CB0F948_1_102_o.jpeg" alt="远处的几座机库就是装配中心"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/75A3B90F-A037-4CC7-BA0B-5765F9478786_1_102_o.jpeg" alt="涂装前的飞机"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/86FC364C-A25A-4451-8059-3C5BE78D514C_1_102_o.jpeg" alt="Call of Cthulu?"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/FD08BB20-B3CE-4FDE-A95E-F2C1481EA7F4_1_102_a.jpeg" alt="Sanity Check"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/62B15803-18BF-4AA5-B3B3-330558F79C3F_1_102_o.jpeg" alt="晴天的Seattle市区"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/752B7ED9-5881-4142-B56D-B316BF34AC9F_1_102_o.jpeg" alt="亚麻的奇观生态球"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/6190D40D-AD51-457B-9EBD-DC33C749C08F_1_102_o.jpeg" alt="Pike Market"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/F17D9C3B-426B-4BE7-B725-9591570F2C4C_1_102_o.jpeg" alt="City: Skylines"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/97A2395B-1350-4D15-BC42-2535E2440868_1_102_o.jpeg" alt="Pudget Sound的海浪"></p><h2 id="Dec-27th-2024"><a href="#Dec-27th-2024" class="headerlink" title="Dec 27th, 2024"></a>Dec 27th, 2024</h2><p>今天是在Seattle的最后一天,主要是去了Museum of Flight和Seattle Aquarium。</p><p>Museum of Flight其实圣诞节当天就想去了,但是理所当然没有开门。今天早上九点钟醒了,十点开过去惊讶地发现停车场都快停满了,比我想象的要热门很多啊。进去一看发现信息密度奇大无比,从20世纪最初的莱特兄弟的glider,到纳粹德国时期的V2火箭,再到人类第一颗人造卫星,载人航天,以及登月的整个历程,非常震撼。博物馆分为很多分馆,讲航天历史,飞机模型,波音工厂的第一个red barn,两次世界大战中的航空器使用,以及一些著名的飞行器展览。总共花了四个半小时,还是很走马观花地看完了这个博物馆,学到许多(站的腰都痛了)。</p><p>下午三点钟开车又到了Pike Market,这次是去水族馆。说实话依然非常一般,普通水族馆该有的基本都有了,但是也没有特色展览之类的,花了半个小时感觉没什么意思就出来了。今天顺便弥补一下昨天没有去成的遗憾,去了一趟第一家星巴克门店(就在派克市场里),买了一杯拿铁和一个mug。</p><p>西雅图之旅就到此结束了!评价是除了一直下雨以及市内过于难停车之外(感谢亚马逊),还是一座很赞的城市。</p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/IMG_5655.JPEG" alt="二德子的铁十字滑翔机"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/IMG_5656.JPEG" alt="JFK: We choose to go to the moon!"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/IMG_5657.JPEG" alt="曾经装载于Saturn V上的歧管,用于点火"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/IMG_5659.JPEG" alt="三位先驱科学家:罗伯特·戈达德,赫尔曼·奥伯特和齐奥尔科夫斯基"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/IMG_5661.JPEG" alt="早期的飞行控制台"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/IMG_5665.JPEG" alt="地月系模型"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/IMG_5666.JPEG" alt="F1火箭发动机"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/IMG_5668.JPEG" alt="探月车"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/IMG_5669.JPEG" alt="月壤标本"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/IMG_5670.JPEG" alt="曾经上过月球的美国国旗"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/IMG_5674.JPEG" alt="一阵强劲的音乐响起🎵"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/IMG_5677.JPEG" alt="伟大的创举!"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/IMG_5678.JPEG" alt="博物馆主馆"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/IMG_5680.JPEG" alt="波音工厂里的木匠正在制造飞机的桁架"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/IMG_5684.JPEG" alt="山本五十六驾驶过的战机模型"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/IMG_5685.JPEG" alt="光荣之路老玩家表示这我太熟了"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/IMG_5689.JPEG" alt="尼克松,周恩来以及空军一号"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/IMG_5694.JPEG" alt="协和号客机"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/IMG_5696.JPEG" alt="水族馆"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/IMG_5700.JPEG" alt="雨幕下的西雅图港"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/IMG_5705.JPEG" alt="第一家星巴克门店"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/IMG_5710.JPEG" alt="同上,菜单并没有太大区别"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/IMG_5711.JPEG" alt="Howard Schultz's quote"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/IMG_5713.JPEG" alt="出餐窗口"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/IMG_5714.JPEG" alt="寒冷的街头喝拿铁真是太幸福了!"></p><h1 id="Vancouver-BC"><a href="#Vancouver-BC" class="headerlink" title="Vancouver, BC"></a>Vancouver, BC</h1><iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d83327.5608474812!2d-123.20647596887548!3d49.257706028246275!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x548673f143a94fb3%3A0xbb9196ea9b81f38b!2sVancouver%2C%20BC!5e0!3m2!1sen!2sca!4v1735539472926!5m2!1sen!2sca" width="500" height="500" style="border:0;" allowfullscreen="" loading="lazy" referrerpolicy="no-referrer-when-downgrade"></iframe><h2 id="Dec-28th-2024"><a href="#Dec-28th-2024" class="headerlink" title="Dec 28th, 2024"></a>Dec 28th, 2024</h2><p>昨天半夜睡的不好,醒了好多次,不过还是断断续续从10pm一直睡到了8am。简单吃了早饭,打包了行李就出发了,一路往北开。离开西雅图市,雨很快就停了,天气也变得晴朗起来。</p><p>80mph(130km/h)在I5上驰骋了100miles在边境小镇Sedro-Wooley把油箱补满了,看到了到目前为止最便宜的油价$3.44/gal。排了大概半个小时的队,研究了一下esim,到了海关官员面前,简单问了几个问题就放行了。</p><p>来到加拿大之后发现突然变成了公制单位,一下有点不大适应(毕竟retard unit用太久了),开公里每小时突然感觉速度好慢。</p><p>吃了午饭之后和学长去逛了UBC。感觉是一个比较现代化的校园,交通网横穿校园。学校的西北角就是strait of Georgia,生态环境还是很赞的。学校里还有一些原住民的文化植入,包括图腾柱,以及原住民语言的标牌。</p><p>四五点的天就黑了,想起温哥华的纬度其实高达49N,所以冬天的日照时间相当短。开了一天车,最大的感受是温哥华不像一个大城市,更像一个放大版本的城镇,指没有城市快速路,从城市一头到另外一头三十公里要开四十五分钟,相比之下西雅图则只需要一半不到的时间。</p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/IMG_5724.JPEG" alt="忙碌的海关"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/IMG_5726.JPEG" alt="UBC校园漫步"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/IMG_5728.JPEG" alt="祖灵图腾柱"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/IMG_5729.JPEG" alt="学校中心的喷泉"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/IMG_5731.JPEG" alt="人类学博物馆前的钟塔以及小广场"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/IMG_5733.JPEG" alt="西北角的小花园以及海湾"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/IMG_5734.JPEG" alt="原住民文字的路牌"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/IMG_5735.JPEG" alt="晚霞"></p><h2 id="Dec-29th-2024"><a href="#Dec-29th-2024" class="headerlink" title="Dec 29th, 2024"></a>Dec 29th, 2024</h2><p>今天主要是在温哥华市区Citywalk。<br>很不幸,今天几乎下了一天的雨,不幸中的万幸是我还带了伞以及防水外套。早上十点钟去了一下Canada Square看了一下海滨,但是由于下着雨雾蒙蒙的能见度很低。中午路过gastown观赏了一下steam clock,逛了一些本地的集市,然后坐了一下轮渡去了北温哥华的Londale Quay再折返。</p><p>由于一直在下雨,所以没有安排其他更有意思的活动。</p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/IMG_5739.JPEG" alt="蒸汽朋克钟"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/IMG_5741.JPEG" alt="二手书店里的《胡林的儿女》"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/IMG_5742.JPEG" alt="城内的天主教堂"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/IMG_5743.JPEG" alt="轮渡上的温哥华"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/IMG_5745.JPEG" alt="雨中的海湾"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/IMG_5748.JPEG" alt="雨停之后的晚霞与市区,从北温哥华遥望"></p><h2 id="Dec-30th-2024"><a href="#Dec-30th-2024" class="headerlink" title="Dec 30th, 2024"></a>Dec 30th, 2024</h2><p>在温哥华的第三天。今天主要是坐另外一位朋友的车到处体验了一下温哥华的生活(翻译:吃吃吃)。</p><p>早上十点钟朋友picked me up,然后逛了一下Fisherman’s Wharf。中午恰了早茶,很惊艳,尤其是牛蹄筋的口感,值得排超过半个小时的队以及辗转整整三家店。</p><p>下午雨还没停,所以也只能继续开车到处随便转。去了一趟Stanley Park,观赏了一下Lion Gate Bridge,以及Stanley Park的海滨。然后在Richmond逛逛吃吃,聊了一路eigenvalue decomposition和system response (nerd 的生活),最后在雨中结束了这一天。</p><p>Quote Stefan:温哥华比起旅游城市更像一个度假城市。</p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/IMG_5751.JPEG" alt="Frazer River的河景"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/IMG_5754.JPEG" alt="渡船码头"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/IMG_5755.JPEG" alt="吊打湾区的早茶水准"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/IMG_5757.JPEG" alt="奇怪的大楼"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/IMG_5759.JPEG" alt="Stanley Park遥望lion gate bridge"></p><h2 id="Dec-31st-2024"><a href="#Dec-31st-2024" class="headerlink" title="Dec 31st, 2024"></a>Dec 31st, 2024</h2><p><del>因为回家之后太懒所以在一月五号才补全最后的部分</del></p><p>今天是在温哥华的最后一天,也是旅程的最后一天。行程很简单,早上逛SFU,中午吃完饭就回美国。</p><p>SFU是一个位于Burnaby的大学,坐落在山顶上,因此有一个很好的view of the city。校园很大,有很多建筑,但是因为是假期,所以人很少。逛了一下校园中心的广场,还有一些人在遛狗。早上有点小起雾,但是随后竟然放晴了,是在温哥华的最后一天看到的太阳。</p><p>中午吃完饭就返程了,留足了时间过关,没想到要排两个小时的队,前面有不少加拿大的印度人被送小黑屋。所幸海关工作人员看了我的签证以及I20就放我走了。回到美国之后加满油,一路130码狂奔回西雅图,已经是晚上六点,累的不行。在机场吃了快餐就上了飞机。</p><p>飞机飞的出乎意料的快,在31号的晚上十一点半回到了湾区,并在出租车上过了新年。意大利司机一边和我聊天一边给我指路边的烟花。希望2025年一切顺利!</p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/IMG_5772.JPEG" alt="奇怪的pepe雕像"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/IMG_5773.JPEG" alt="如同太空堡垒一样的学校图书馆"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/IMG_5774.JPEG" alt="从山上往下看Burnaby"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/IMG_5778.JPEG" alt="返程,可以看到雪山"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/IMG_5781.JPEG" alt="美加边境的友谊碑,有一种“山川异域 日月同天”的感觉"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/IMG_5787.JPEG" alt="飞机上遥望湾区"></p><p><img src="https://raw.githubusercontent.com/cedard234/imagerepo/master/travel/IMG_5789.JPEG" alt="冰箱贴+3"></p>]]></content>
<categories>
<category>essay</category>
</categories>
<tags>
<tag>城市驿站</tag>
</tags>
</entry>
<entry>
<title>城市驿站:英属南部领地</title>
<link href="/essay/2023.02.25.19/"/>
<url>/essay/2023.02.25.19/</url>
<content type="html"><![CDATA[<h1 id="序言"><a href="#序言" class="headerlink" title="序言"></a>序言</h1><p>2023年2月23号那天下午搞定了FYP的(可以说是最后一个实验),感觉真是如释重负(爽),于是就盼望recess week的到来。<br>在结束了星期五张跃平的最后一节<del>(真的是最后一节,因为他要退休了)</del>,回家收拾行李,准备度过这个美妙的recess假期。</p><p>因为在去年八月拿到了久违的驾照,于是去年的八月底决定疯狂一点,去开一开著名的墨尔本大洋路自驾。原本在2022年的九月底就打算的计划却在澳洲签证没有批下来的悲伤中被移到了今年的三月,所幸在十月底的时候拿到了签证。这也是本科毕业前的最后一个recess假期。</p><p>打算去的地点包括了墨尔本和悉尼。原本还想打算去黄金海岸看大堡礁的,后来因为时间原因作罢。</p><h1 id="墨尔本-Melbourne"><a href="#墨尔本-Melbourne" class="headerlink" title="墨尔本 Melbourne"></a>墨尔本 Melbourne</h1><h2 id="24-Feb-2023"><a href="#24-Feb-2023" class="headerlink" title="24 Feb 2023"></a>24 Feb 2023</h2><p>周五晚上从NTU出发,和Z总一起坐着MRT,晃晃悠悠前往樟宜机场。<br>樟宜机场T1比想象中的要繁忙了不少;到处都是人,可能是因为疫情管控放松了的原因吧。在办理完了值机之后,三人在4fingers里大快朵颐。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/B7457754-945E-42DE-8412-1FDF4B8BCF4B.JPG" alt="残羹冷炙"><br>到登机口的时候已经是半夜十二点多了,很多人在排队。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/F82507D5-5B3B-4D86-A374-B5BAE022FDDA.JPG" alt="繁忙的机场"></p><p>在去美国和泰国的时候,樟宜机场安检都不允许100ml标称的液体上飞机,但是这次我装半满的水壶竟然没有被检查,很离谱。<br>在延迟了一个多小时后,半夜一点半我们从樟宜机场飞往墨尔本塔拉梅林机场。<br>大概在在酷航令人恼火的座椅上坐了七个小时之后(以及看了好一会倚天屠龙记),我们到达了目的地。</p><iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d805196.5096448599!2d144.49268312524225!3d-37.97015406757793!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x6ad646b5d2ba4df7%3A0x4045675218ccd90!2sMelbourne%20VIC!5e0!3m2!1sen!2sau!4v1677326906166!5m2!1sen!2sau" width="600" height="450" style="border:0;" allowfullscreen="" loading="lazy" referrerpolicy="no-referrer-when-downgrade"></iframe><p>我们没有想到的是,刚到墨尔本,我们就遇到了一个极大的问题,那就是我们的租车门店关了。是的,一家租车公司在周六早上十二点关门了,这是有多摸鱼啊。<br>所幸在经历了各种各样的还价以及改变计划之后,我们租到了车。在下午两点,我们上了M2高速,一路开往城东南我们的汽车旅馆。</p><p>这家旅馆比想象中要更好;完善的facility,宽敞的房间,以及充足的停车位。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/FC009FCC-C3E6-465A-A901-1DD5788F5186.JPG" alt="有车有房,人生巅峰"></p><p>大家在经历了几乎没有休息的一个晚上之后,又饿又累。我们驱车前往最近的购物中心。<br>在这个时候,我们大概开始感受到这种西部公路文化了。街头几乎没有人(因为是在郊区),但是车不少,其中不乏房车或者货车。郊区没有什么高楼大厦,都是平房以及小别墅。然后街边有很多的motel,以及小型的购物超市。在rowville的一个比较中心的(非常具有西部风味的)购物中心我们停下了车,下车体验了一下本地的麦当劳。这也是我第一次见到driving through的pick-up point,可以感受到扑面而来的公路文化。<br>这种购物中心也是摊大饼式的超市居多。令人惊讶的是,牛奶非常便宜,感觉和坡县的水一样便宜。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/45D0027A-6607-4D84-8D85-BBB1919E879A.JPG" alt="牛:我感受到了你们的恶意"></p><p>澳大利亚本地人的体型感觉十分宽大(🎵:song for denise),平常肯定没少吃脂肪蛋白质。他们也似乎很重视生活质量。<br>另外一点体验就是,澳洲英语感觉会更偏英音一些。交流起来没有太大的障碍。<br>吃完了午饭回到motel,经过了昏天黑地的四个小时睡眠之后,我们第一天逛墨尔本的计划也宣告破产了。好消息是我们还可以把这件事移到明天。<br>晚上我们驱车前往几公里外的一家街边pizza小店(很符合荒凉的环境的店名:pluto),只有一个看起来很年轻的店员在拖地。pizza非常好吃。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/ABF1AA96-11DF-4FB6-80B1-2E7B45B00904.JPG" alt="意大利人:🤌"></p><h2 id="25-Feb-2023"><a href="#25-Feb-2023" class="headerlink" title="25 Feb 2023"></a>25 Feb 2023</h2><p>墨尔本的行程从这一天正式开始。<br>墨尔本作为一座城市建立于1835年,纪念曾经的英国首相墨尔本子爵。作为澳大利亚第二大的城市,墨尔本散发着一种新加坡所没有的历史气息。在前一天从机场进城再出城的时候就能感受到的<del>资本主义</del>维多利亚风格气息在今天能够得到比较完整的体会。</p><p>早上我们驱车从城外的rowville去到大都会区。澳大利亚的街头的停车位成谜:(埋下伏笔),<br><img src="https://pic3.zhimg.com/v2-2a025f2ee5c9917c79319c2f24c0d79a_b.jpg" alt="park sign"><br>问了一些local也没有彻底搞明白,不过有写着xP的意思大概就是可以停N个小时。如果写了meter就是收费,不写就是不收。<br>把我们的车停在了市区的坡顶上,我们的第一站是维多利亚州立图书馆。</p><p>作为世界上最大的州立图书馆之一,维多利亚州立图书馆却“大隐隐于市”,藏身于各种维多利亚建筑的鳞次栉比中。图书馆门口有简约的阶梯,宽肠的草坪,三座雕像。</p><p>左边的雕像是圣乔治屠龙,右边是圣女贞德。中间的则是墨尔本大学第一任校长Richmond Berry的雕像。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/7df4ec504e08d81ec8c436ec615d6709a5dc5433/img/2B8E2120-18F0-4A1B-AA65-A62D98123C5F.JPG" alt="圣乔治屠龙"></p><p>进入了大厅之后,我与导览人员稍微聊了一下。导览员非常热情,稍微讲了一下图书馆的构造,以及the dome的位置。他还推荐了还在最后一天放展的某个小展览(去了,虽然不是太能看得懂)</p><p>二楼的展厅相对来说比较现代,有一小部分在里面工作or学习。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/4DEE26B6-7215-47F0-993F-BFE3AC3CA308.JPG" alt="二楼的展厅"></p><p>但是三楼的展厅就相对来说要复古很多。这里有著名的the dome,也是图书馆的地标。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/29C07C0B-E0A1-4128-8E0E-FCAB86676EDB.JPG" alt="三楼到六楼,总体来说都是一个塔"></p><p>这种白漆+木质装饰的风格确实非常维多利亚。<br>坐电梯到六楼还能看到的是,彩色马赛克的莎士比亚画:</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/F5700875-1419-48C3-A3DD-61CF3A2E43DD.JPG" alt="杀死比尔"></p><p>逛一个图书馆还是很难在一个相对来说比较短的时间内完成的。就图书馆的上座率而言,澳洲本地人来的可能并不多(相对于坡县的国立图书馆而言,不过也有可能我来的时间是周天早上,人都还没起来)。不过在图书馆里看到了很多亚裔,想必是来这个风水宝地开卷的。</p><p>出图书馆的时候有俩人在下巨大的国际象棋,此处艾特罗恩。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/E4C2DC1D-15E2-4D59-8D42-E82F2C1AB297.JPG" alt="赢了有奖励,输了有惩罚"></p><p>第二站是城北的维多利亚市场。这个地方相对来说比图书馆要热闹不少。我原本以为是一个农贸市场,去了才发现什么都有,卖各种纪念品的,饮品的,生活用品的,二手书的,还有卖桌游的。</p><p>在经过二手书摊的时候和一个看起来很有文化的戴眼镜的老奶奶聊天,我拿起托老的(超级厚的)魔戒问她,还有没有其他托老的书。她环顾了一下,说估计只剩这本和另外一本霍比特人了。她曾经在另外一个书摊看到别人卖精灵宝钻,但是应该早就被人买走了。</p><p>经过卖桌游的店铺,竟然看到他卖不少东西,可惜都贼贵。里面还有冷战热斗,root,dixit,etcetc。</p><p>买了点水果我们就离开了这个地方。走的时候还有华裔lingling在拉小提琴,拉的还挺不错,就是不知道为什么在卫生间门口拉。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/697D4375-35E9-48CF-A8AD-E5971596044D.JPG" alt="市场门口"></p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/9B2A3F0D-C280-41A8-BE9B-C79C16AB9096.JPG" alt="一天练琴二十五小时的LingLing"></p><p>在这之后已经是午后半晌了。我们开车前往著名的弗林德斯街车站。这是蒸汽时代的一个重要地标。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/7E2A3117-8C51-4531-A672-B0B59D5AD248.JPG" alt="车站正门"></p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/2C3720BF-03EA-4E41-A062-772DD99C05CF.JPG" alt="车站正门x2"></p><p>车站后门就是墨尔本的母亲河,Yarra River(雅拉河)。这条河一路注向墨尔本湾。<br>河边的墨尔本城区十分美丽。在高楼大厦中的Princes’ Bridge伫立在河上,电车从桥上穿过。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/b843c31f84aba48375463ca19fd04804cc6e6e9a/img/E1C9CF70-3C50-48DF-B360-62CAACEAD007.JPG" alt="河岸"></p><p>沿着河岸走了好一段,可以看到许多游艇从河岸上穿过去。我有一种很强烈的感觉:墨尔本这个地方结合了我对大都市和小乡村同样的感觉:作为现代居民,你可以在这里享受到大都市的便利;但是同样作为本地居民,也能够体会到乡村生活的静谧。</p><p>如果我有足够的时间,我可以在长椅上坐一整天。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/B0E75298-9BCB-4A93-9343-1F35F930D6F7.JPG" alt="河岸x2"></p><p>从河的北岸(以及沿途的植物园)逛回弗林德斯街火车站后,我们还经由了街对面的圣保罗大教堂。</p><p>这是我第一次参观一个安立甘宗教堂。进教堂的时候,有人在演奏管风琴,只是演奏风格非常的爵士(?)。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/8C9936F1-CE5E-4C59-A78E-6829A5B2F112.JPG" alt="巨大管风琴"></p><p>教堂里有很多马赛克壁画。我能认出来的有耶稣和三圣人,还有耶稣与彼拉多。教堂里还有一些其他的募捐,有为乌克兰战争的受难者的,有为曾经参与朝鲜战争的澳大利亚士兵的,有为covid死难者的,如此如此。</p><p>结果在怜悯了别人之后,悲剧降临到我们身上了:在回到停车位的时候,我们吃到了人生第一张违停罚单:92刀,肉痛死。</p><p>在那之后我们还去参观墨尔本大学。这是一所同样充满维多利亚气息的学府。可惜的是去的时候已经是周天,所以大多数学院都是关门的。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/EB9172E9-3821-45A7-B422-CDCCCEE4B709.JPG" alt="栖息在路牌上的鸟儿"></p><p>在正门进去的大草坪前面有一个很气派的古典建筑,有好多情侣在拍婚纱照。左边则是墨尔本大学的钟楼。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/3F408E70-3182-4D93-813E-E0B6EF72AFC2.JPG" alt="该走啦"></p><hr><h3 id="菲利普岛"><a href="#菲利普岛" class="headerlink" title="菲利普岛"></a>菲利普岛</h3><p>之后则是长途跋涉。从墨尔本城区到我们行程里的菲利普岛企鹅保护区大概有一百五十多公里。<br>驱车大概花了我们两个小时。到达的时候天还依然是亮着的,八点多天才下山。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/B21AEAF3-F90F-4F8A-A06A-77B4ECF19B3D.JPG" alt="沿途的大平原"></p><p>到达菲利普岛的时候,我们得知大概晚上八点四十五企鹅才会上岸。我们坐在海边的观景台上,等待灰色精灵的来临。<br>菲利普岛真的有一种天涯海角的感觉。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/71A5E98E-415D-4AEF-AE98-FCA6077D37F4.JPG" alt="海鸥:你瞅啥?"></p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/9c57de19a8c443991923d6563a6a2f5efa32af66/img/DDA0697D-3817-40B4-94E2-E813BB989E03.JPG" alt="海角乐园"></p><p>这是我第一次看到这种绝景。蔚蓝的天空上白色的云涛飘飘而去;苍茫的大海里洁白的浪涛滚滚而来。在这片海滩上,无数的海鸥在起飞和降落。浪涛的声音消弭在被海风浸透的咸腥的冷空气中。面对我的是茫茫的太平洋和印度洋;在我们的对面就是南极。</p><p>还是那句话,如果说我有时间的话,我可以在岸上坐一整天,听着海上传来的各种声音。这是灵魂与自然的彻底共鸣。</p><p>到了天黑的时候,导览告诉我们,企鹅该来了。我们静静等待,直到我们看到它们的身姿从海浪中上下翻飞地出现在岸上。这种企鹅比我想象中的要小不少,一个可能只有二十几公分;它们灰白色的皮毛令它们轻易混迹于海鸥丛中,在海鸥没有展翅起飞之前我们完全无法分辨。企鹅成群结队地登上沙滩,它们扑棱翅膀,伸长脖子,左右摇晃地匍匐前进。它们需要在岸上钻洞来换毛。</p><p>观赏企鹅的时候,我们是不被允许拍照的,因为要为了保护它们敏感的眼睛。</p><p>回程的时候已经九点半有余了;Z总高速驱车把我们送回了家。洗漱完了已经半夜一两点了,明早还要早起;累的要死。</p><h2 id="27-Feb-2023"><a href="#27-Feb-2023" class="headerlink" title="27 Feb 2023"></a>27 Feb 2023</h2><p>早上起床的时候很赶,因为按照我们的计划,我们需要去将近一百公里以外的码头把我们的人以及车送到墨尔本湾的另外一边。</p><p>把车开上船的时候大概是十点前一点。不得不说这艘轮渡船比其他的游轮体验都要更好了。<br>第一次坐这种汽车轮渡;感觉还挺不错。顶楼有卖咖啡和早餐的。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/4F11862C-0B46-4543-B9DE-6E32F9C4FE32.JPG" alt="平静的海湾"></p><p>到达索伦托的时候是将近十二点了。大洋路在向我们招手;这片区域的村庄都很有艺术气息。</p><h1 id="大洋路-Great-Ocean-Road"><a href="#大洋路-Great-Ocean-Road" class="headerlink" title="大洋路 Great Ocean Road"></a>大洋路 Great Ocean Road</h1><h3 id="吉朗-Geelong"><a href="#吉朗-Geelong" class="headerlink" title="吉朗 Geelong"></a>吉朗 Geelong</h3><p>吉朗是大洋路的第一站。我们到了本地的一个小海滩,去参观当地的彩绘木桩。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/6C990DBF-9922-460B-A866-9D151D6EF08B.JPG" alt="吉朗海滩"></p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/4D6F6C28-6A98-4847-BCAE-2BFAFAF782BB.JPG" alt="木桩1"></p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/F5551311-68EC-4308-AF2A-758567352236.JPG" alt="木桩2"></p><p>说实话,这些木桩有些掉san。<br>除此之外,天气对于一个景点的陪衬作用也是十分明显的。今天一整天都是阴天,这导致体感温度低了不少,并且这种沙滩景色也从温馨宜人变成了世界末日。</p><p>午饭整了点墨西哥taco饼。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/2324a15fe6274294c2adccaf86370500bf5b6b58/img/6C7E1AA9-5E4E-48E1-B4A4-D50E591664FD.JPG" alt="Juan Direction"></p><h3 id="托尔坎-Torquay"><a href="#托尔坎-Torquay" class="headerlink" title="托尔坎 Torquay"></a>托尔坎 Torquay</h3><p>托尔坎开始才是正式的大洋路,B100公路。<br>在托尔坎,我们下到了当地的一个海滩。海滩上的路牌上写着,”the paradise to surf”。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/3452F36F-C541-4CE3-8831-6B2DDBF7AB1D.JPG" alt="托尔坎海岸"></p><p>天公不作美,这一天都是阴天。海风刮过来,非常寒冷。岸上有一些澳洲人还穿着短裤短袖在赶海。<br>澳洲人好像很喜欢养狗;有很多人带着他们的狗下到海里。狗的水性很好,虽然用的泳姿是狗刨式。<br>我们从右手边的台阶上到了右边礁石顶部,看到了绝境;</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/B6C2C2A3-7BC1-4D48-BED9-F42C47057375.JPG" alt="百舸争流"></p><p>在观景台的顶端有俩戴着牛仔帽的澳洲老夫妇,问了一下他们能不能帮我们拍照。老人很爽快地答应了。<br>拍完照片,老人问,</p><blockquote><p>are you here for the plane?<br>-<strong>“Plane?”</strong></p></blockquote><p>话音未落,西边的天空就传来了巨响。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/8799CD3D-4959-41DC-BC99-E1FA24196C73.JPG" alt="飞机在拉烟"></p><blockquote><p>-“We didn’t expect of the plane – We came here by chance”<br><strong>so fucking amazing, aren’t they!</strong></p></blockquote><h4 id="阿迪斯角国家公园-Point-Addis-Marine-National-Park"><a href="#阿迪斯角国家公园-Point-Addis-Marine-National-Park" class="headerlink" title="阿迪斯角国家公园 Point Addis Marine National Park"></a>阿迪斯角国家公园 Point Addis Marine National Park</h4><p>从托尔坎出发往西开一小段就到阿迪斯角。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/B6ED45BC-EC09-438B-9A1E-8798A79094DD.JPG" alt="阿迪斯角海湾"></p><p>从这一段开始,海湾变得陡峭,而海浪变得湍急。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/364F9CB5-881D-4ACE-8D17-388457DC0AE9.JPG" alt="不知名鸟儿"></p><p>沿途还有很多这样的美丽鸟类。</p><h4 id="斯普利特角-Airey’s-Inlet"><a href="#斯普利特角-Airey’s-Inlet" class="headerlink" title="斯普利特角 Airey’s Inlet"></a>斯普利特角 Airey’s Inlet</h4><p>在这个小区域有一座灯塔,照耀着来往的船只。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/E485FFB1-1419-43DE-8BE6-615CCE01B4B1.JPG" alt="白塔"></p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/F43BF8F8-9FB2-4155-8B59-F4CF889505B3.JPG" alt="近距离白塔"></p><p>这一片的海岸相比起托尔坎的更加陡峭,并且多了很多礁石。海浪冲上礁石平台,再像雪花一样从四面八方飞散下去。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/2965ABAF-7CFD-4AEE-A2B1-A18DCE2E0B5F.JPG" alt="海岸线"></p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/894DF562-9E73-457C-8DA0-B15F7690AD4B.JPG" alt="冲刷的岩石"></p><p>离开这片区域继续往前的话,大洋路持续下降,直到和海岸线高度几乎一致。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/E88A9D28-4A14-4171-8623-5EA1BCFF8213.JPG" alt="齐平海面"></p><h3 id="洛恩-Lorne"><a href="#洛恩-Lorne" class="headerlink" title="洛恩 Lorne"></a>洛恩 Lorne</h3><p>晚上我们到达了Lorne小镇并吃了晚饭。晚饭是臭名昭著的炸鱼薯条–鱼还比较新鲜,但是Z总评价羊肉极其难吃。我们后来都把这个小镇称为炸鱼薯条小镇。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/BB8915AF-CDB1-4A82-8BA2-D100EE91DC54.JPG" alt="Mantra"></p><p>入住的地方叫Mantra。走进去一看是个养老院。<br>从远处看可以看到海。房间比较像单身公寓,有客厅,各种做饭工具,大卧室,阳台。楼下还有网球场,很像一个养老院。澳洲人好像不怕冷一样,在清晨还起来打网球,还是这种阴雨绵绵的天气。</p><h2 id="28-Feb-2023"><a href="#28-Feb-2023" class="headerlink" title="28 Feb 2023"></a>28 Feb 2023</h2><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/5B60A4AF-3FE4-4F24-8B80-A57A2B547A0B.JPG" alt="靠近海岸线"></p><p>28号开始从早上出发都是这样的沿海公路,浪很大。沿海公路一般都是限速60以下,非常弯曲。</p><h3 id="阿波罗湾-Apollo-Bay"><a href="#阿波罗湾-Apollo-Bay" class="headerlink" title="阿波罗湾 Apollo Bay"></a>阿波罗湾 Apollo Bay</h3><p>从洛恩出发继续往西,大概三十几公里就能到阿波罗湾。<br>阿波罗湾是一个很小的镇,有一个海港,几个商店。这两天我们到达一个镇就开始寻找当地的超市(most likely foodworks),准备各种很快就吃完了的干粮。</p><p>阿波罗湾有一个森林公园,在公园里往外走两步就能到大海。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/E651297A-2B74-4ACA-9B61-D9DB8DC16524.JPG" alt="林禽(确信)"></p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/B565240E-F533-49E7-B950-1EEA518357EE.JPG" alt="阿波罗湾海滩"></p><p>这一片的海湾十分平静(不然不能拿来当港口)。远处有一些船只停泊。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/2B0B094F-BC31-4D3A-858E-E967CB371398.JPG" alt="bay area"></p><h4 id="奥特韦国家公园-Otway-National-Park"><a href="#奥特韦国家公园-Otway-National-Park" class="headerlink" title="奥特韦国家公园 Otway National Park"></a>奥特韦国家公园 Otway National Park</h4><p>过了阿波罗湾之后,就不是海岸线公路了。之后的道路是盘山公路,并且一头扎入森林。</p><iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d289713.6153076139!2d143.45636303821348!3d-38.75559828228762!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0xaa827fc0b90e660f%3A0xf0579a51442a900!2sGreat%20Otway%20National%20Park!5e0!3m2!1sen!2sau!4v1677673073283!5m2!1sen!2sau" width="600" height="450" style="border:0;" allowfullscreen="" loading="lazy" referrerpolicy="no-referrer-when-downgrade"></iframe><p>如地图所示,这一片是一个海角,附近都是森林。<br>在大洋路的中段,有一条路一路通向这片海角的最南端。最南端矗立着一座灯塔。<br>灯塔区域有一个小园区。出示学生证还能优惠,点赞。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/2A11F2DA-F451-4E5B-B26E-161AD5EDFD7A.JPG" alt="海角别墅"></p><p>进了园区之后,有一栋小别墅伫立在最高点,里面是一个通讯小博物馆,讲述了为什么这里被认为是重要的地理位置。简单来说就是塔斯马尼亚岛如果要和澳洲大陆通讯的话,需要通过这里架设通讯点,电线;以及如果说要前往塔斯马尼亚岛的话,这里也被认为比较安全的航线。<br>这栋别墅也是曾经的灯塔管理员的住宿地。这里十分荒凉,乌云密布,狂风呼啸。</p><p>博物馆里也有讲述灯塔管理员是如何和海上的船只通讯的:旗语。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/1AA4F2B9-3150-447C-8186-87FD2154843C.JPG" alt="旗语"></p><p>从小别墅往另外一边看,就能看到白色高塔了。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/AA0EB925-7087-49F6-A5C1-6F2F8DA408FA.JPG" alt="世界尽头的白色灯塔"></p><p>这里就是整个大洋路的最南端。从这里往前看,就是南极的方向了。<br>问了一下导览员,一位灯塔管理员大概要管理多久时间,她说曾经有一位管理了三十年的灯塔管理员。愿意在这种天涯海角之地度过半个人生的,一定是孤独的勇士。</p><p>海岸旁边还有一些地堡,是在二战期间的皇家空军驻地;并且还有一些雷达监测员在此监测太平洋的日本舰队,防止其通过巴斯海峡。</p><h4 id="王子镇-Princetown"><a href="#王子镇-Princetown" class="headerlink" title="王子镇 Princetown"></a>王子镇 Princetown</h4><p>和普林斯顿很像的名字。这个小镇只有22个人住。<br>小镇的海滩浪十分湍急,进到吉利布兰河 (Gellibrand River)的湿地之后就缓了很多。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/65C61E76-AA11-47CB-AC06-FB492E7EE051.JPG" alt="河口三角洲"></p><p>沙滩上有很多这种红绿相间的植物,不知道是什么。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/3E03AA05-B0AC-423C-A81B-C1B68F239C4C.JPG" alt="奇妙植物"></p><p>这个海滩的浪大的惊人。如果靠太近的话会被卷下去,很危险。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/B227A647-325E-48C3-A04F-165542E842F0.JPG" alt="巨浪滔天"></p><p>岸边还有一些蒲公英。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/C119E161-4E7C-41B1-A00D-F4F519252476.JPG" alt="蒲公英"></p><h3 id="坎贝尔港-Port-Campbell"><a href="#坎贝尔港-Port-Campbell" class="headerlink" title="坎贝尔港 Port Campbell"></a>坎贝尔港 Port Campbell</h3><h4 id="吉布森台阶-Gibson-Steps"><a href="#吉布森台阶-Gibson-Steps" class="headerlink" title="吉布森台阶 Gibson Steps"></a>吉布森台阶 Gibson Steps</h4><p>从王子镇再出发往坎贝尔港开,就能看到大洋路最令人震撼的区域。<br>这一片都是平原,但是一到海边就是落差极大的悬崖。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/74F7FFA2-BBD0-403E-A4E2-20E783330D80.JPG" alt="礁石"></p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/CD16C0AC-C971-4039-BBAC-33512082FBEB.JPG" alt="无限的白浪"></p><p>得益于一位不知名人士可能把通往海滩的门打开了(原本是锁着的),我们下到了最底部,看到了最壮观的景象。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/98577676-D006-469F-92B1-93EC00081DA5.JPG" alt="阳光,礁石,浪涛"></p><center><video width="600" controls> <source src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/image001_WC-EditVideo_1.mp4" type="video/mp4"></video></center><p>阳光在这一时刻终于合时宜地从云层中透了出来。这是到了大洋路之后,第一次见到阳光。</p><h4 id="十二门徒岩-Twelve-Apostles"><a href="#十二门徒岩-Twelve-Apostles" class="headerlink" title="十二门徒岩 Twelve Apostles"></a>十二门徒岩 Twelve Apostles</h4><p>这应该是大洋路最具标志性的景点。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/7154D228-E4A1-45B7-B283-977540DFAFF8.JPG" alt="诸位门徒"></p><p>礁石被浪涛,雨水,狂风蚀刻,形成同样高度的纹路。<br>根据路牌的说法,从来没有十二块门徒的岩石,到现在为止只有八块;但是也许在几万年前是十二块,也许在几万年后变成了十二块。<br>澳洲的落日在八点之后,所以现在天空依然光亮。这片印度洋,就如安迪梦中的太平洋一样蔚蓝。</p><hr><p>澳洲人的摸鱼能力十分了得。到了坎贝尔港之后,我们查了一下还在工作的餐厅,但是大多数餐厅都是八点关门。我们马上赶往最近的一家bistro(一个街区开外,port campbell真的小)</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/BF2AA6F5-F5CD-4E92-82F7-30A08584878F.JPG" alt="晚饭"></p><p>晚饭是逃不过的炸鱼薯条,以及芝士烤鸡。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/022C1AA4-585B-4D7E-8F69-792702C70788.JPG" alt="印度女皇"></p><h2 id="1-Mar-2023"><a href="#1-Mar-2023" class="headerlink" title="1 Mar 2023"></a>1 Mar 2023</h2><p>在坎贝尔港的住宿差强人意。我们在酒店里以双人大床为赌注打uno,还挺有趣。<br>早上起来的时候,难得看到了蓝天。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/D308944A-CB6C-4484-B27B-54137EC5BB4A.JPG" alt="蓝天,白云,以及棕榈树"></p><p>从坎贝尔港往回开,可以到达洛克阿德峡谷。</p><h4 id="洛克阿德大峡谷-Loch-Ard-Gorge"><a href="#洛克阿德大峡谷-Loch-Ard-Gorge" class="headerlink" title="洛克阿德大峡谷 Loch Ard Gorge"></a>洛克阿德大峡谷 Loch Ard Gorge</h4><p>这个大峡谷是大洋路上的一个标志性景点。大洋在这片区域向内伸展,形成了一个峡湾。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/7D878F96-1C23-43A7-B349-02A16E8644A7.JPG" alt="侧面观察"><br>从海岸边水平望去是看不到的,似乎一切都是同样的高度。植被非常茂盛,但是都是低矮的灌木,附近没有比人还高的树木(可能是因为这种树木的种子不容易扎根,并且即使扎根了也会被狂风吹断)。达尔文的进化论又一次发挥了作用。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/0FFCB5D1-0FFC-42E5-BF7D-498B1D6179AB.JPG" alt="峡湾内部"></p><p>这个峡谷也是一个广口的结构;进口的地方水流十分汹涌,到了沙滩之后就放缓了非常多。水流的颜色也从远海的深蓝色变成近海的翠绿色。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/EB0081A5-3809-4904-B9E0-CEC93F22A3D6.JPG" alt="两岸青山相对出"></p><p>两旁边的悬崖峭壁和海平面相垂直,但是相对于天空之高还是不那么高耸,不会令人感到恐惧的落差。</p><p>因为石灰岩的侵蚀,附近的钟乳石层都显现了出来。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/20230302143301.png" alt="钟乳石"></p><p>这片峡谷被命名为洛克阿德峡谷,也叫沉船峡谷。十九世纪的时候澳洲还是大英帝国的罪犯流放地,但是在船只经过这片区域的时候,大雾弥漫,能见度极低,极易发生船难。1878年6月1日,一艘叫做Loch Ard的船只在经过这片区域的时候发生了船难,最后只有两个人生还。后人为了纪念这件事情,就把这片峡谷命名为洛克阿德峡谷。</p><hr><p>午饭去了campbell镇上的一家cafe,这个脆皮sausage还挺好吃。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/0D2BB0F6-792A-47B7-BE21-C7788313E15E_1_201_a.jpeg" alt="午饭"></p><p>餐厅很精致。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/706C4C1D-7254-4A86-92F0-A3CFBB44C183_1_105_c.jpeg" alt="餐厅"></p><hr><h4 id="伦敦桥-London-Bridge"><a href="#伦敦桥-London-Bridge" class="headerlink" title="伦敦桥 London Bridge"></a>伦敦桥 London Bridge</h4><p>午饭过后继续向西。<br>伦敦桥是另外一个有趣的风化景点;一个形似“桥”的岩石在海上树立。<br>说实话,我觉得这其实更像三角凳子。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/927F5EDD-28B1-49AC-8F04-673E553B84C1_1_102_o.jpeg" alt="三角凳"></p><h4 id="岩穴-The-Grottos"><a href="#岩穴-The-Grottos" class="headerlink" title="岩穴 The Grottos"></a>岩穴 The Grottos</h4><p>继续向西,另外一个小景点是一个岩穴。穴内是中通的,可以看到外面的碧海蓝天。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/26FE5242-BF45-40EE-994D-6E5B1A97D24A_1_102_o.jpeg" alt="别有洞天"></p><p>这个小景点让我想到windows的某个壁纸,对就是这个。</p><p><img src="https://i.imgur.com/ArYelLY.png" alt="巨硬大爹来找你要版权费啦"></p><h4 id="Bay-of-Islands"><a href="#Bay-of-Islands" class="headerlink" title="Bay of Islands"></a>Bay of Islands</h4><p>到了这片区域之后,太阳彻底出来了。我们得以目睹最澄澈的蓝天。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/6642309A-840D-40A1-B6E3-099BDEF4DA86_1_102_o.jpeg" alt="白帆"></p><p>凛冽的海风扑面而来,凝望这种景象,我觉得天堂可能也不过如此;几百万年后,人类灭绝,天堂可能也不过如此。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/01D140F6-74C4-43B3-86CC-636B6FA571B2_1_102_o.jpeg" alt="另外一个角度"></p><h3 id="瓦南布尔-Warrnambool"><a href="#瓦南布尔-Warrnambool" class="headerlink" title="瓦南布尔 Warrnambool"></a>瓦南布尔 Warrnambool</h3><p>瓦南布尔一般被认为是大洋路的终点。这也是自吉郎出发之后遇到的最有人味的城镇,相比那些只有一点点居民的小村落而言。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/F112E490-4C72-411F-8AD3-A8F64E4D6EDB_1_102_o.jpeg" alt="小教堂"></p><p>市里(我愿称瓦南布尔为市而不是镇)有一家海事博物馆。我们到了的时候已经是下午四点了,还有一个小时时间能够把里面的东西稍微看一看。<br>出示学生证可以有优惠,点赞。</p><p>进门之后有一个小展馆,稍微介绍了一下海上苦旅,不得不让人想到Return of the Obra Dinn里面的各种恐怖片段。<br>里面还有展示大英帝国皇家水师的各种旗舰,脑子里浮现出纳尔逊在尼罗河口凝视东方号在熊熊燃烧的场景。</p><p>门外的公园里有一个巨大的船锚。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/B19A6099-4A58-434D-A2FC-3ED31DAD36DF_1_102_o.jpeg" alt="船锚"></p><p>以及中国人民的好朋友。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/22059A18-F98C-42B4-8517-DD95CDBFCDB4_1_102_o.jpeg" alt="羊驼"></p><p>还有一尊旧式样的火炮,这很维多利亚。<del>(开门,自由贸易)</del><br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/D892A49F-D1E9-4D51-91D4-4737E76ECA1B_1_102_o.jpeg" alt="红衣大炮(不是)"></p><p>博物馆的坡底下有一个模拟的水手小村落,里面什么都有。包括造船厂,银行,学校,教堂,等等不一。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/C61A2810-05AD-43F6-BC1B-4B4F36E5BE3C_1_102_o.jpeg" alt="造船厂"></p><hr><p>市里还有一间(久违的)麦当劳。在麦当劳稍微解决了晚饭。<del>🙏麦门🙏</del></p><p>解决晚饭之后我们驱车前往十几公里以外的Port Fairy.</p><h3 id="仙子港-Port-Fairy"><a href="#仙子港-Port-Fairy" class="headerlink" title="仙子港 Port Fairy"></a>仙子港 Port Fairy</h3><p>这应该是我们整个大洋路旅程中的最后位置。</p><p>到达Port Fairy的时候已经是晚上七点了,但是太阳还没下山。</p><p>Port Fairy的最出名景点应该是Griffiths Island.</p><h4 id="格里菲斯岛-Griffiths-Island"><a href="#格里菲斯岛-Griffiths-Island" class="headerlink" title="格里菲斯岛 Griffiths Island"></a>格里菲斯岛 Griffiths Island</h4><p>这个岛在Port Fairy的东南方向。原本打算在镇上洗个车,但是唯一一家加油站的洗车机很不幸地坏了,于是我们决定在明天返程的时候再解决这件事。</p><p>到Island的时候,太阳正要下山。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/F1064978-143F-4746-BF96-85CB32EC783E_1_102_o.jpeg" alt="落暮"></p><p>我们从西北边的长堤绕岛一圈。</p><p>令人惊讶的是岛上有不少野生袋鼠,一蹦一跳的,很可爱。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/0C15A596-D0FA-4E96-B21C-88B531F903E4_1_105_c.jpeg" alt="袋鼠"></p><p>岛的另外一头也有一座灯塔。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/E18E63A9-2419-4ABA-BC74-E63117BE0D53_1_105_c.jpeg" alt="格里菲斯岛的灯塔"></p><p>这片区域相比前面的大洋路段,海浪相对来说更加平静。<br>太阳把远方的云朵照耀成粉红色的。而月亮也从另外一边缓缓升起。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/3BFF5216-396C-484B-BEFE-E5DCE0487FA3_1_105_c.jpeg" alt="六便士"></p><p>夕阳照耀着远处稀疏的树木。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/59947881-0C17-4412-B375-FDF71D4E8DA2_1_105_c.jpeg" alt="夕阳"></p><p>待我们驱车回到Port Fairy的时候,镇上还是一片祥和的景象。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/D51584FC-D879-463F-A4AA-E5719C2C3D1D_1_102_o.jpeg" alt="太阳落山之后的小镇"></p><h2 id="2-Mar-2023"><a href="#2-Mar-2023" class="headerlink" title="2 Mar 2023"></a>2 Mar 2023</h2><p>今天是返程的日子,不然就要支付天价租车费了。</p><p>从Port Fairy回墨尔本大概要将近三百公里。<br>Z总一路狂飙,在双车道的乡间小路上施展了秋名山车技。</p><p>路上经过了一些内陆路段。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/22E50BF1-CB10-49C0-94B2-8B9CB31327B3_1_102_o.jpeg" alt="风电机"></p><p>并且在今天还再次看到了飞机表演。<del>再次埋下伏笔</del><br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/2B9CE163-9339-4C91-B1B3-65DCC32B9CB0_1_102_o.jpeg" alt="V形编队"></p><p>等我们回到墨尔本机场还车的时候,黑人小哥还在。处理好还车手续,在一番波折后我们到达了五十公里开外的阿瓦隆机场,准备前往悉尼。</p><p>阿瓦隆机场竟然还有航空展,第一次看到了巨大的霓虹空军运输机。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/F6F1C101-295A-4E1A-BCA0-BF979AA4E88D_1_102_o.jpeg" alt="起飞前"></p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/D8E30C28-F424-48A9-8E9D-FF1578B8783D_1_102_o.jpeg" alt="起飞后"></p><h3 id="机场奇遇记"><a href="#机场奇遇记" class="headerlink" title="机场奇遇记"></a>机场奇遇记</h3><p>五点钟到了机场之后我就一直在看抱着kindle看《倚天屠龙记》。七点的时候,手机突然收到了这么一条消息:<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/image20230308120220.png" alt="???"></p><p>啊??<br>在经历了短暂的大脑当机之后,我们才意识到大事不妙了。这个小机场当晚只有两班航班,而在我们收到这条消息之后不久,另外一班航班就起飞了;也就是说机场里所有的人都是因为这次航班取消被影响到的人。<br>counter前面排起了长龙。<br>柜台工作人员表示,因为前序航班的某些原因无法到达这个机场,所以这班航班无法起飞。航空公司将会为所有旅客提供当晚的住宿(还有通勤),30刀的餐费以及第二天去机场的交通费用。<br>在机场等到了半夜十一点,大巴终于来了。于是我们成功从塔拉梅林机场到阿瓦隆机场走了整整两个来回。<br>再也不买Jetstar的机票了(确信)</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/image20230308210735.png" alt="奇妙的体验"></p><h2 id="3-Mar-2023"><a href="#3-Mar-2023" class="headerlink" title="3 Mar 2023"></a>3 Mar 2023</h2><p>Jetstar把我们的航班重新改签到了第二天早上六点钟,也就是说我们基本没有什么时间休息。<br>在经历了几乎没有休息的一个晚上之后,我们到达了悉尼。</p><h1 id="悉尼-Sydney"><a href="#悉尼-Sydney" class="headerlink" title="悉尼 Sydney"></a>悉尼 Sydney</h1><iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d424143.27120189666!2d150.65179414439854!3d-33.84792704905961!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x6b129838f39a743f%3A0x3017d681632a850!2sSydney%20NSW%2C%20Australia!5e0!3m2!1sen!2ssg!4v1678293857274!5m2!1sen!2ssg" width="600" height="450" style="border:0;" allowfullscreen="" loading="lazy" referrerpolicy="no-referrer-when-downgrade"></iframe><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imageIMG_1072.JPEG" alt="在夜幕中起飞的jetstar"><br>到悉尼我们就不租车了。相反,我们将会体验到悉尼的轨道交通。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imageIMG_1075.JPEG" alt="悉尼的“trains”"><br>怎么说呢,悉尼的轨道交通相比起新加坡来,多了上下排的正向座位(我很喜欢),以及快慢线的设定。这满足了更大的客流量,以及更短的(出城)通勤时间。但是在某些非主要站点等车的时候,可能前后班次的列车有个半个到一个小时的间距。我感觉如果住在市内的话,悉尼轨道交通还挺方便&舒适的。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imageIMG_1077.JPEG" alt="Central"></p><p>八点多钟回到住的地方睡了很久。房东是(看起来很有钱的)中国人,对我们很好。住的地方离市区很远,轨道交通大概一个小时左右的路程。</p><p>中午从城外再回到城内,看最著名的景观:海港大桥以及悉尼歌剧院。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imageIMG_1090.JPEG" alt="海港大桥1"></p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imageIMG_1092.JPEG" alt="海港大桥2"></p><p>悉尼的气温相比起墨尔本来说舒服太多了,主要是免受凛冽的海风的冲击。<br>海港大桥兴建于上个世纪二十年代,有一种浓浓的钢制结构的复古气息。大桥可以容许电车,汽车以及行人通过。</p><p>悉尼湾里面还有一些其他有意思的景观。各种小船,以及一艘大船。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imageIMG_1094.JPEG" alt="卡拉维尔帆船"></p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imageIMG_1095.JPEG" alt="Ovation of the Seas"></p><p><a href="https://en.wikipedia.org/wiki/Ovation_of_the_Seas">海洋赞礼</a>,这就是这艘船的名字。这是世界上第二大的邮轮,往返于北半球的天津以及南半球的悉尼。这艘船始终在夏季航行。</p><p>海港大桥非常高。我们没有买走拱桥的票(因为太贵了),但是站在和道路齐平的桥面上已经可以观赏整个悉尼湾了。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imageIMG_1097.JPEG" alt="海边的悉尼湾"></p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imageIMG_1104.JPEG" alt="桥上的悉尼湾"></p><p>悉尼湾内还停着一艘军舰,是<a href="https://en.wikipedia.org/wiki/HMAS_Adelaide_(L01)">HMAS Adelaide (L01)</a></p><p>湾中间还有一个海中碉堡,可能是二战的遗留产物。</p><p>桥的北岸也就是北悉尼,相比南岸要人烟稀少一些。桥洞下的公告栏贴着竞选议员的拉票传单,挺有意思。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imageIMG_1109.JPEG" alt="女版hacker?"></p><p>从北岸坐船回到南岸,观赏著名的悉尼歌剧院。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imageIMG_1118.JPEG" alt="近看悉尼歌剧院"></p><p><del>我还记得去年考托福的时候把这著名地标建筑名字写错了</del><br>歌剧院没有想象中的富丽堂皇,但是它所处的位置确实是城市中心。歌剧院外面的白色墙壁已经有一些泛黄,呈现一种象牙一样的颜色。走近看会发现外墙的瓷砖是抛光砖与哑光砖交替砌成的,所以在阳光下会波光粼粼的。悉尼歌剧院比新加坡的Esplanade好看很多,俯瞰esplanade我总会想到昆虫的两只复眼。</p><p>当天晚上有德沃夏克的美国四重奏。之后的一个月里还有伦敦爱乐呈现的马勒以及格什温。</p><p>歌剧院旁边有一个皇家植物园,里面有不少人在散步,让人想起北京的后海。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imageIMG_1126.JPEG" alt="皇家植物园"></p><p>傍晚在城区中心行走的时候,经过了艺术博物馆。两旁边是文艺复兴直到维多利亚时期各种艺术家的名字与雕像,整座建筑风格类似帕特农神庙。巴黎的先贤祠的门口也不过如此(我没去过)。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imageIMG_1129.JPEG" alt="比维多利亚州立图书馆更加气派"></p><p>还去了圣玛丽大教堂。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imageIMG_1131.JPEG" alt="哥特式的大门口"></p><p>圣玛丽大教堂是为了纪念第一位被封圣的澳洲修女<a href="https://en.wikipedia.org/wiki/Mary_MacKillop">圣十字玛丽</a>而冠名的,因此它是一座天主教堂。教堂旁边有红衣主教以及教皇的雕像。内部的玻璃马赛克窗户上描绘了耶稣受难的前后。<br>这座教堂的风格和科隆主教座堂很相似(我还是没去过),只是估计没有教区选帝候坐镇,以及三博士的遗骨。</p><p>当晚在eastwood吃到了韩式烤肉。在浸淫了多日的炸鱼薯条以及各种澳洲美食荒漠中的“饕餮大餐”之后,亚洲菜显得无比美味。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imageIMG_1139.JPEG" alt="IMG_1139"></p><h2 id="4-Mar-2023"><a href="#4-Mar-2023" class="headerlink" title="4 Mar 2023"></a>4 Mar 2023</h2><p>因为前两天过于疲惫,所以四号早上一觉睡到了十一点,去市中心吃早午饭。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imageIMG_1142.JPEG" alt="Bill's"></p><p>烤培根和scrambled eggs很好吃,可惜量太少了。澳洲人的进食习惯和美国人还是比较相似的,都是早午饭随便整点,然后晚饭吃大餐<del>(炸鱼薯条)</del>。</p><p>下午去逛了海德公园。<br>海德公园内有一座纪念馆,纪念的是曾经的澳新军团,以及现在的澳洲皇家军队死难者。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imageIMG_1132.JPEG" alt="凯末尔纪念馆"></p><p>澳新军队在世界舞台上亮相过很多次。最令人熟知的应该是1915年在奥斯曼的加里波利的惨败。英军的指挥官是丘吉尔,而土军的指挥官则是凯末尔。</p><p>馆内有一个厅,放着澳新军团参加过战役地点的土壤。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imageIMG_1151.JPEG" alt="奠土屋"></p><p>有一个地点叫做“Peking”,旁边很明确地标注了时间:1900年。但是这个区域里面没有放任何东西。工作人员(一个五六十岁的澳洲学者)表示,因为sensitive reason,他们并没有获得拿到北京土壤的授权。</p><p>这位工作人员看我亚洲面孔,问我是哪里人&和我稍微聊了一下。他表示自己研习过中国历史,并对鸦片战争之后的近代史表示遗憾。我说,帝国主义的时代一去不复返了。</p><p>博物馆里还有二战的各种遗物。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imageIMG_1149.JPEG" alt="旭日旗"></p><p>出馆之后我们打算去悉尼博物馆逛一下。路上有很多LGBTQ+的旗帜,查了一下这两天悉尼正在举办world pride day.</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imageIMG_1158.JPEG" alt="木毛impart(确信)"></p><p>悉尼博物馆很无趣。里面的藏品以不成系统的方式零零散散地摆放在玻璃橱窗里。</p><p>唯一可能比较有意思的展馆是原住民馆。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imageIMG_1163.JPEG" alt="原住民馆"></p><p>澳大利亚的各种地方也飘扬着原住民旗帜。这里面不知道饱含了多少原住民追求平权的汗水,泪水与鲜血。</p><p>下午我们去了悉尼大学。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imageIMG_1165.JPEG" alt="体育场"></p><p>悉尼大学散发着一种维多利亚时期大学的氛围(年代感)。校内的体育场都很新。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imageIMG_1168.JPEG" alt="卡夫卡的城堡,抑或是钱钟书的围城?"></p><p>晚上还去了达令港码头逛了一圈。见到了无数的海鸥,但是没有薯条。<br>港口很漂亮。这个港口的大小和marina bay更相当一些。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imageIMG_1175.JPEG" alt="看了你一眼"></p><p>港内还停泊着一艘<a href="https://en.wikipedia.org/wiki/HMAS_Vampire_(D11)">HMAS Vampire (D11)</a>。这是一艘已经退役的勇敢级驱逐舰,曾经在远东与东南亚执行过不少任务。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imageIMG_1177.JPEG" alt="HMAS Vampire (D11)"></p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imageIMG_1178.JPEG" alt="达令港"></p><h2 id="5-Mar-2023"><a href="#5-Mar-2023" class="headerlink" title="5 Mar 2023"></a>5 Mar 2023</h2><p>行程的最后一天显得十分轻松。这一天我们去逛了一下悉尼北岸的塔龙加动物园。</p><p>园区里面的动物其实不多;进馆打算看的是考拉(因为路上没见过),结果考拉馆里面只有两只,而且都在午睡。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/image20230309003032.png" alt="您不嫌吵吗"></p><p>馆内还有很多Python和Anaconda.</p><p>除此之外,袋鼠也不少。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/image20230309003133.png" alt="司马脸"></p><p>Z总表示很想和袋鼠试一试拳击。</p><p>因为动物园就在悉尼湾的北岸,所以可以看到非常棒的景色。今天也是久违的见到了无尽的蓝天与太阳。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imageIMG_1213.JPEG" alt="悉尼湾"></p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imageIMG_1232.JPEG" alt="游轮"></p><p>动物园之后的则是坐船回到达令港,稍事歇息之后就回家提东西回新加坡去也。<br>回到久违的坡县,感觉中餐无比的美味。</p><h1 id="后记"><a href="#后记" class="headerlink" title="后记"></a>后记</h1><p>一些前面可能没有提到的点,在这里做一些补充。</p><ul><li><p>澳大利亚是真正的美食荒漠。假如有朝一日我要在这里生活的话我一定会学会做很好吃的饭,otherwise我是真的会饿死。</p></li><li><p>左右舵还行,不是特别难。澳大利亚的限速是真的限住了那个速度开的,所以限一百就是只能开一百。</p></li><li><p>澳洲真的很大。地广人稀使得人均一栋别墅成为可能。</p></li><li><p>澳洲的华人是真的非常非常多。随手拍一张街头景色,可以说这是香港。</p></li><li><p>然而,即便这篇博客写了这么多令人神往的风土人情,假如我有选择,我也不会在这里常居。</p></li></ul>]]></content>
<categories>
<category>essay</category>
</categories>
<tags>
<tag>城市驿站</tag>
</tags>
</entry>
<entry>
<title>城市驿站:曼谷,清迈</title>
<link href="/essay/2023.01.17.20/"/>
<url>/essay/2023.01.17.20/</url>
<content type="html"><![CDATA[<h1 id="序言"><a href="#序言" class="headerlink" title="序言"></a>序言</h1><p>将近四年没有离开新加坡,结果一出门就一发不可收拾。<br>寒假大概把HPC的事情搞定了,FYP留着明年再做<del>见鬼去吧</del>,寒假抽空出门玩。<br>这次的行程目的地是泰国,因为风土人情<del>太便宜了</del></p><h1 id="曼谷"><a href="#曼谷" class="headerlink" title="曼谷"></a>曼谷</h1><center><iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d248057.54040951602!2d100.49302647380918!3d13.724560080518533!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x311d6032280d61f3%3A0x10100b25de24820!2sBangkok%2C%20Thailand!5e0!3m2!1sen!2ssg!4v1673966942000!5m2!1sen!2ssg" width="500" height="500" style="border:0;" allowfullscreen="" loading="lazy" referrerpolicy="no-referrer-when-downgrade"></iframe></center><h2 id="4-Jan-2022"><a href="#4-Jan-2022" class="headerlink" title="4 Jan 2022"></a>4 Jan 2022</h2><p>作为泰国的首都城市,曼谷是必去不可的。我和C总定在一月四号从SG出发前往曼谷。<br>中国公民落地曼谷可以办理visa on arrival,也就是落地签,每个人2200泰铢。虽然明码标价是2000,200是为了加速通道的,但是实际情况是200泰铢是半强制。出了个远门,就算破财消灾吧。<br>到了机场,C总的移动海外流量出现了问题。折腾了半天,还是决定在当地办了个手机卡。AIS的5G流量卡一周15G不限速套餐只要300泰铢,12SGD,还是挺不错的。<br>打车一路晃晃悠悠前往据说是在市中心的酒店。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imagewd_IMG_9862.jpg" alt="司机车技了的"><br>打车费很便宜,而且也是用的grab。<br>到了酒店的时候发现其实附近挺村的,不过看地理位置确实很中心,不知道怎么回事。想起当年去雅加达也是一样的感觉,城中村。收拾了一下行李准备和lmy见个面。<br>打了辆车前往夜市准备大吃一顿,结果路上堵了半个小时。不得不说,曼谷的交通实在是可以用零分形容;汽车随便停,三轮车和自行车与机动车抢道,小巷两公里开了二十分钟,很难不被激怒。<br>到达夜市的时候已经九点了,吃了日式烤肉,平均下来一个人才5SGD,让人喷泪的价格啊。<br>夜市非常的繁华,但是规模不大。里面吃的东西很多,各种烧烤,炸串,寿司,还有甜品,等等,活脱脱一个美食街。东西便宜又好吃。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master//imagewd_IMG_9871.jpg" alt="一个小夜市"><br>最让人惊叹的是这玩意,鲜榨橙汁,甜的发齁,果肉一大片。500毫升2SGD.<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master//imagewd_IMG_9874.jpg" alt="橙汁超级加倍"><br>十点左右回程。C总表示想试试曼谷的轨道交通。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master//imagewd_IMG_9872.jpg" alt="交通枢纽"><br>曼谷大概有一个地铁和一个轻轨,这两个不是互通的,很奇怪。站内很凉。<br>一个很有趣的发现是,地铁里的reserve seat是包含了僧人的。看来宗教是泰国文化的很大的组成部分。<br>下了轻轨离宾馆还有一公里的距离,我们打算直接走回去。说实话,半夜十点十一点走在异国他乡的街头还是挺需要谨慎一点的,小心驶得万年船。轻轨下站点的地方还挺繁华,往前走两步就暗下来了。走到一半有一些本地的老鸨看出来我们是游客,问我们要不要看<a href="https://en.wikipedia.org/wiki/Ping_pong_show">ping-pong show</a>。C总小声问我什么是ping-pong show?这么晚还能有乒乓球比赛?我:你回去自己查去。</p><h2 id="5-Jan-2022"><a href="#5-Jan-2022" class="headerlink" title="5 Jan 2022"></a>5 Jan 2022</h2><p>这家酒店是不带早餐的,店里蚂蚁贼多。<br>第二天的行程是逛曼谷的历史文化景区。早上我们一路打车前往曼谷大皇宫。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master//image20230117230827.png" alt="EU4里有这个奇观"><br>我在这之前对曼谷大皇宫的了解也就EU4里面这个奇观了,可以加专制度和行政容量。到了这地方附近才感觉到这里确实是王权的象征,从我们的宾馆一路堵车堵到China Town,但是一到大皇宫附近没人在这里瞎jb开车。<br>这片区域的最高建筑也只能是皇宫本身了,这点倒是和故宫有点像,好像是二环内所有建筑高度不能超过某个地标?有点忘记了。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master//imageIMG_0008.JPG" alt="皇宫外围"></p><p>那天天气很好,甚至有些热。皇宫的参观有禁忌,不能穿无袖,短裤或者凉鞋。一路随着人潮我们进入了皇宫。但是由于曼谷的王室依然存在(泰国的全称是泰<strong>王</strong>国),因此很多地方我们参观不了。<br>皇宫外围是玉佛寺,也是皇室用于祭祀的地方,和天坛的地位差不多。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master//imageIMG_0011.JPG" alt="玉佛大殿外面"><br>进玉佛寺是需要脱鞋的。参观的人非常非常多,随着无数人群我们进到了佛堂里面,但是可惜不能给玉佛拍照。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master//image20230117231452.png" alt="玉佛"><br>有趣的是,当我仰望那尊玉佛的时候,我才想起来我早就在EU4里面听过这玩意了。<br>某种意义上,对于上座部佛教国家而言,玉佛就是统治合法性的象征,因此地位极其崇高。玉佛对于泰王的地位,也许可以相当于传国玉玺对于天朝的地位,也可以相当于三神器对于日本皇室的地位。因此在每个季度末尾,都会有庄重的玉佛更衣仪式。<br>玉佛最早存在于中南半岛北边,也就是在兰纳王朝附近。在之后的几天去清迈大概可以看到更多东西。<br>玉佛寺内部还有一些壁画,大概画的是释迦摩尼佛陀在升天之前的故事,可惜我对佛教的了解并不深,只能看到菩提树下坐化那一段,至于极乐天堂,有顶天之上是什么景象完全没有办法理解。</p><p>逛完玉佛寺之后,就是看大皇宫了。很可惜的是,我们没有办法进入大皇宫,但是光看外表就已经十分气派。<br><img src="https://github.com/cedarsaigyouji/imagerepo/blob/master/imageIMG_0022.JPG?raw=true" alt="皇宫外侧"><br>中午去了一家米其林餐厅吃泰餐,体验一下真正的泰国口味。餐厅十分高档,甚至有女歌手和钢琴家现场表演,有泰文和英文。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master//imageIMG_0026.JPG" alt="具有东南亚风格的食品"><br>从左到右是菠萝饭,芒果糯米,芦笋炒扇贝,绿咖喱牛肉,龙虾冬阴功汤,生椰子汁。味道十分了得,超越了我在其他地方吃过的所有泰餐,鲜甜咸辣无所不包,令人大动食指。</p><p>下午的行程是去卧佛寺和郑王庙。这些景点都很接近,都在走路就能够包含到的距离内。但是在走路走到一半出现了一个小插曲:一位自称是security的泰国男性与我们谈话,并向我们推荐一个当地的运河游船经典,据说比市区内的“便宜一倍”。他还没和我们说完,一辆三轮车便停在路边,按照他的指令把我们送到了那个渡口。渡口上有另外一个男的,见我们来了,极力向我们推销他的游船项目。由于他的推销过于迫真(但是不得不说他的英文是我在曼谷听过的最舒服的),因此我们表示,你这个骗术不够精通,并且1500泰铢一个人的价格也过于离谱,我们去也。<br>就在这个推销地点的旁边就有一个公共码头,30泰铢去郑王庙。<br>郑王庙据说是纪念郑昭,也就是泰国历史上的“<a href="https://en.wikipedia.org/wiki/Taksin">达信大帝</a>”。这位具有传奇色彩的君王广受泰国人敬仰,但是他的王朝和他的生命一样短暂。<br>郑王庙坐落在湄南河边,很远处就可以看得见,非常气派。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master//imageIMG_0027.JPG" alt="郑王庙斜拍"><br>到了这个地方查了一下资料我才明白,郑王庙只是华人圈子里对这座寺庙的称呼,这座寺庙真正的名字其实是“黎明寺”,也有泰国埃菲尔铁塔的美称。这座宝塔确实能够给人留下犹如埃菲尔铁塔一样的深刻印象,虽然我并没有去过巴黎,很可惜。<br>我们先去逛了一下这座黎明宝塔旁边的寺院。泰国的寺院都有一种特点,就是四四方方,四边的墙壁里要么有壁画,要么就是佛像雕像。但是进到佛堂里面就大同小异。<br>出来上到塔上,可以看到塔有三层,由恶魔,天使,以及神灵组成不同的支撑层数,然后在最高点有着印度教神明因陀罗的雕像。有趣的是,主塔的四面也有神似关二爷的中国武士的塑像,这可真称得上是文化交融了,难怪叫做印度支那半岛,这地方深受两地影响。<br>在坐船离开郑王庙的时候,回望了一下夕阳下的主塔。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master//imagewd_IMG_9903.jpg" alt="回望"><br>第一天的最后一战是卧佛寺,但是我觉得其实没有啥意思。一尊躺着的巨型佛像并不能让我对泰国或者曼谷拥有更多的了解。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master//imageIMG_0035.JPG" alt="爽吗?佛祖:爽"><br>第一天的行程就这样结束了。</p><h2 id="6-Jan-2022"><a href="#6-Jan-2022" class="headerlink" title="6 Jan 2022"></a>6 Jan 2022</h2><p>其实我们的整个行程安排的还是很轻松的,真的要压缩的话,可以把六号的行程和五号一起搞定,但是又会太累。不过拆开的话又很轻松了。<br>六号的行程是逛曼谷国家博物馆。其实在五号当天就已经去过,但是不知道为什么这个博物馆下午四点钟就关门了,但是我们五号到的时候已经下午三点了。因此我们决定第二天来。没有想到的是,由于第一天太累,第二天早上我们直接睡到了十一点,吃完早午饭到博物馆的时候已经是下午两点了,也就比昨天多了一个小时。<br>一个小时就一个小时吧,希望能逛完。<br>令人惊喜的是,这个博物馆里有不少东西可以看,可惜的是两个小时果然不够。<br>这个博物馆的位置离昨日的皇宫也是很近的,这是因为这个博物馆曾经是泰国的皇室前厅,充当的是上朝以及决定政令的作用,也是泰国的二王的寝宫所在地。这个地方也同样象征着泰国王权的分裂,因此在后来的王权斗争中,二王的政治地位造到废黜。<br>我们在前厅逛了一圈,看到了维多利亚时期泰国与他的左邻右舍,包括英属东印度公司以及法属印度支那的外交抗衡。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master//imagewd_IMG_9913.jpg" alt="维多利亚女皇"><br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master//imagewd_IMG_9911.jpg" alt="拿皇"><br>进门左手边是维多利亚女皇,右手边是拿皇,确实是左边大英右边法妖的配置。中间摆放着二王以及泰王的王座。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master//imageIMG_0039.JPG" alt="game of thrones"><br>中殿主要展出曾经的皇室用品,比如说我们就看到了象牙制的象棋(真象棋)<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master//imagewd_IMG_9919.jpg" alt="你这城堡,主教,国王王后怎么都长得一样啊"><br>以及一头战象的模型。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master//imagewd_IMG_9925.jpg" alt="这nm打个锤子仗?"><br>说实话古代战争要是碰到这种巨无霸朝你冲过来,没有有效的反制手段,就参考一下索姆河上的德军面对英军坦克之后的下场吧。</p><p>这个大厅里面还有一些其他艺术品,比如说各种丝绸,服装,兵器,家具等等。可惜的是,这些东西的展出都只是展出而已,并没有以很系统的方式讲述他们的来历。<br>还有一些泰国皇室曾经的娱乐设施。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master//imagewd_IMG_9915.jpg" alt="秦心的面具展览"><br>这个面具应该是给皇室演习用的,有趣的是其中有一个红色的大象面具。不知道饰演大象的人主要会有甚么戏份,但是看他的位置那么居中,想必不会是个配角。</p><p>我们离开中间的展厅前往两边的展厅。惊喜的是,侧厅相比起中厅,更像一个博物馆,讲述了兰纳,素可泰以及阿育塔耶王朝的兴衰。这里面展出了许多的石制佛像,以及佛教在中南半岛盛行的历史。<br>这里面有一些很令人大开眼界的展品,比如说这个:<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master//imagewd_IMG_9933.jpg" alt="大象佛"><br>有点掉san,这怕不是克苏鲁的化身啊。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master//imagewd_IMG_9936.jpg" alt="我在这立法典"><br>以兰纳古文字记录的法典,应该是?保存的非常完好。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master//imagewd_IMG_9935.jpg" alt="象牙雕刻"><br>还有这个,这是最让我惊讶的。两根象牙以极其精妙的加工方式被雕刻出了一层一层的佛像的神龛,精美程度让人惊叹。<br>逛完博物馆已经下午四点了。我们原本打算研究一下第二天怎么前往芭提雅,但是C总表示自己身体不舒服,想要早点休息。于是我们返程回宾馆。</p><h2 id="7-Jan-2022"><a href="#7-Jan-2022" class="headerlink" title="7 Jan 2022"></a>7 Jan 2022</h2><p>C总前一天晚上生病了,于是我们取消了这一天去芭提雅的行程。我呆在酒店里看了一天的JOJO以及神雕侠侣,不失为一番奇妙的体验(乐)</p><h2 id="8-Jan-2022"><a href="#8-Jan-2022" class="headerlink" title="8 Jan 2022"></a>8 Jan 2022</h2><p>C总这一天身体好多了,不过我们本来也要离开曼谷了。我们乘坐飞机飞往北方古城清迈。</p><h1 id="清迈"><a href="#清迈" class="headerlink" title="清迈"></a>清迈</h1><center><iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d60433.403897418735!2d98.92145783830168!3d18.794242635963997!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x30da3a7e90bb6f5d%3A0x98d46270a59b4367!2sChiang%20Mai%2C%20Mueang%20Chiang%20Mai%20District%2C%20Chiang%20Mai%2C%20Thailand!5e0!3m2!1sen!2ssg!4v1673971490617!5m2!1sen!2ssg" width="500" height="500" style="border:0;" allowfullscreen="" loading="lazy" referrerpolicy="no-referrer-when-downgrade"></iframe></center>说实话,相比起曼谷,我更喜欢清迈这座城市。这种偏爱,在从机场出来的那一刻就能感觉得到:首先,在北半球的一月份,他能让我感觉到冷,这说明这地方是有四季的。查了一下地图,清迈离西双版纳其实只有三百公里,离云南省其实已经非常近了。我们花了3SGD打到了从机场到宾馆的车。在车上就能看到清迈古城墙的遗址,这在一座现代城市也是难得的景观。我曾经在西安和南京看到过,现在在清迈也同样看到了。<p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master//imagewd_IMG_9969.jpg" alt="某座城门"></p><p>在地图上同样能看到,在清迈最中间的地方树立着一个小正方形。<br>到了酒店,酒店的前台的英文说的极好(可能是专门培训过的),并且住宿环境也十分不错。整理好行囊之后我们打车去比机场更远的清迈夜间动物园逛一圈。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master//imagewd_IMG_9970.jpg" alt="大门"></p><p>夜间动物园管理的其实非常好,甚至可以说比曼谷的某些皇家景点都要好了。这地方因为在山里,所以特别冷;我后悔穿了我最薄的短袖短裤,因为入夜了之后可以说冷到了冬天。<br>在步行区域看到了很多可爱的小动物们,比如说这个<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master//imageIMG_0405.JPG" alt="不知名动物"><br>对不起,我生物学的很烂。下一个:<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master//imageIMG_0479.JPG" alt="鳄鱼"><br>这个我还是认得的,这不是压缩毛巾,这是鳄鱼<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master//imageIMG_0451.JPG" alt="火烈鸟"><br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master//imagewd_IMG_9986.jpg" alt="社恐火烈鸟"><br>吵得要死,一直在叫。建议自己听。<del>亚卡吗洗!</del></p><center><video width="600" controls> <source src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imageIMG_9985.MOV" type="video/mp4"></video></center>动物园中间有一个很大的湖,里面有各种天鹅。<p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imagewd_IMG_9991.jpg" alt="天真蓝"><br>天好蓝。</p><p>还有看到一些很有趣的动物,比如说正在挖洞的,这应该是鼹鼠吧?</p><center><video width="600" controls> <source src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imageIMG_0011.MOV" type="video/mp4"></video></center><p>我们在步行区里面逛了一个小时,然后去坐观光车去看了一下比较大型的生物。<br>有比如说信萨满教的动物,我都不知道该怎么叫这玩意。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imageIMG_0468.JPG" alt="长生天信仰"><br>狮子。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imageIMG_0424.JPG" alt="考上了编制很爽吧"></p><p>当然最让人震撼的想必是长颈鹿了,它是真的高啊。</p><center><video width="600" controls> <source src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imageIMG_0041.MOV" type="video/mp4"></video></center><p>还有大象。巴普洛夫告诉我们,只要训练的当,大象也能向你招手。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imageIMG_0474.JPG" alt="大象"></p><p>出了观光区,晚上还有一些演出可以看。比如说豹子下水:</p><center><video width="600" controls> <source src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imageIMG_0088.MOV" type="video/mp4"></video></center><p>以及老虎表演什么的,想起来小时候和老虎拍过照片。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imagewd_IMG_0124.jpg" alt="芜湖,起飞!"></p><p>动物园这地方离清迈市区太远了,打车费了好大功夫。</p><h2 id="9-Jan-2022"><a href="#9-Jan-2022" class="headerlink" title="9 Jan 2022"></a>9 Jan 2022</h2><p>第二天主要是逛清迈古城。</p><p>如同昨天看到的一样,清迈的中心区并不是商业街,而是静谧的清迈古城。<br>我们住的地方离古城东门,也就是塔佩门很近,于是第一个参观的地方就是这里。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imagewd_IMG_0135.jpg" alt="塔佩门"><br>城墙根鸽子特别特别多。红色城墙把这片老城的历史底蕴衬托的淋漓精致。<br>从塔佩门前进,就能见到不少佛教寺院。里面有个老和尚英语讲的很好,和我聊天,问我哪里来,准备呆多久。</p><p>清迈古城值得去的寺庙有好几个,首先就是中央的契迪龙寺。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imagewd_IMG_0148.jpg" alt="巨大的遗址"><br>虽然寺庙已经只剩下残垣断壁,但是依然十分壮观。这座寺庙也是清迈的最出名的景点。<br>契迪龙寺内部有着极高的龙脑树,以及某些得道高僧的纪念堂。寺院内还有清迈的城市立柱,女性无法入内;<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imagewd_IMG_0144.jpg" alt="城市立柱"></p><p>清迈古城里还有另外一些寺庙,比如说帕辛寺。我在帕辛寺内的一个大堂里坐了好久,观察其中一尊雕像,但是突然发现那个雕像竟然是真人,差点没给我吓死。泰国的僧人坐禅都不需要眨眼的吗?</p><p>另外一座可圈可点的寺庙是清曼寺。清曼寺里有供奉着玉石佛像,以及藏经阁。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imagewd_IMG_0163.jpg" alt="水上藏经阁"></p><p>清迈街头还有一些非常高技术力的涂鸦。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imageIMG_0383.JPG" alt="任天堂"><br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imagewd_IMG_0167.jpg" alt="迪士尼"></p><p><del><strong>任天堂和迪士尼法务部还有五秒钟到达战场</strong></del></p><p>古城的警察局旁边还有一个大广场,上面立着兰纳王国的三位创始人。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imagewd_IMG_0160.jpg" alt="我们仨"></p><p>据说当天晚上还有烟花表演可以看,但是我们买了水果直接就回去了。泰国的芒果和榴莲都是一绝。</p><h2 id="10-Jan-2022"><a href="#10-Jan-2022" class="headerlink" title="10 Jan 2022"></a>10 Jan 2022</h2><p>在清迈的第三天,我们去爬清迈西北方向的素帖山。这也是我们行程的最后一站。<br>要上素帖山,得先到清迈大学下面坐双条车。我们兜兜转转在清迈大学内部绕了老半天没找到坐车的地方,于是问了一个正在健身的路人。没想到这路人的英语说的极好,他表示自己父母都在清迈大学当教授,而且看我们都是游客,于是愿意开车捎我们一程,真是贵人哪。<br>双条车其实就是大一点的篷车,上山的路弯弯绕绕非常晕。在经过了无数弯道之后,我们在双龙寺门前停了车,开始攀登这座寺庙。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imagewd_IMG_0179.jpg" alt="山门"><br>这座寺庙之所以被称作双龙寺,就是因为这门前的两条龙。在爬过无数级台阶之后,我们进入了这座山中寺院。<br>双龙寺的中间有一个很大的宝塔,非常多韩国人(?)在这里诵经拜佛,据说塔里有佛祖的舍利子。不过逛了这么多寺庙,每个寺庙庙均宣称自己有一颗佛祖舍利子,不知道佛祖舍利子够不够用。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imagewd_IMG_0180.jpg" alt="宝塔"><br>这一天天气非常好,天十分的蓝。<br>在进到双龙寺的某个寺院的时候,还坐在毯子上免费听了某僧人讲经,虽然一个词都听不懂<del>(您提供英文讲经业务吗?)</del>但是禅经的韵律和高低的曲调听起来十分悦耳,如果没有其他事情的话可以坐在这里听一整天。</p><p>出了双龙寺,在半山腰品尝了一下久违的华夫饼冰淇淋;<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imagewd_IMG_0186.jpg" alt="好耶"><br>然后就到了漫长的等车时间,因为我们不像其他游客都要下山,我们要到更高的蒲屏皇宫去参观。在等了将近半个小时之后,我们上车开到了皇宫。<br>和大皇宫一个道理,这个皇宫的内部也是不让进的,并且如果有皇室成员要来,那么这个皇宫就不对游客开放了。<br>皇宫甚是气派;并且十分凉快,本身就是为了皇室避暑所建。宫内有一个很大的植物园,种着各种观赏花卉。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imagewd_IMG_0191.jpg" alt="植物园"></p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imagewd_IMG_0195.jpg" alt="会客厅"></p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imageIMG_0371.JPG" alt="皇宫"></p><p>我想进会客厅去看看来着,但是被门卫无情拦下。</p><p>在往山上走的时候,我们在皇室的娱乐屋门口坐下乘凉。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imagewd_IMG_0200.jpg" alt="娱乐屋"></p><p>C总:好想在这里打德扑<br>这娱乐厅一股日式神社的味道。不过不得不说,这个地方非常非常凉快,可以坐在长椅上听蝉鸣,极度舒适。<br>离开了皇宫之后,在山顶山有一个观景台,可以看到清迈全景:<br>这观景台还挺隐蔽的,不过在这里看绝境也是赏心悦目了。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imagewd_IMG_0204.jpg" alt="前有绝境"></p><p>当晚完成了泰国的最后一笔吃喝消费,吃了清迈最受推荐的日式炭火烤肉,十分不错。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imageIMG_0318.JPG" alt="焼き肉"></p><h2 id="11-Jan-2022"><a href="#11-Jan-2022" class="headerlink" title="11 Jan 2022"></a>11 Jan 2022</h2><p>于是我们就回程了。这一周是开学周。</p><h1 id="后记"><a href="#后记" class="headerlink" title="后记"></a>后记</h1><p>泰国给我的感觉和新加坡是截然不同的,这是一个真正的东南亚国家,是一个经过高速发展,也许依然处在高速发展但是矛盾重重的国家。<br>她的首都,曼谷,我并不觉得可以定义为一个世界级大都市:反而我觉得这是一个扩大版本的县城。城市病在曼谷十分突出,堵车,流浪汉,脏乱的市容市貌和繁华的闹市区似乎格格不入,色情产业,妓女和僧人却可以在一片天空下呼吸空气。这是一个神奇的城市。<br>而清迈则摆脱了曼谷作为首都城市的包袱,在北边的大山深处静静的呼吸。她兴许也拥有与现代城市接轨的一面,但是在古城内部却保留她作为古都的内核。这种文化底蕴却是很多世界级大都市也都没有的。</p>]]></content>
<categories>
<category>essay</category>
</categories>
<tags>
<tag>城市驿站</tag>
</tags>
</entry>
<entry>
<title>城市驿站:达拉斯</title>
<link href="/essay/2022.11.26.00/"/>
<url>/essay/2022.11.26.00/</url>
<content type="html"><![CDATA[<center><iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d214587.59997794408!2d-96.8716349782954!3d32.82058655004037!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x864c19f77b45974b%3A0xb9ec9ba4f647678f!2sDallas%2C%20TX%2C%20USA!5e0!3m2!1sen!2ssg!4v1669392289959!5m2!1sen!2ssg" width="450" height="450" style="border:0;" allowfullscreen="" loading="lazy" referrerpolicy="no-referrer-when-downgrade"></iframe></center><h1 id="关于-城市驿站"><a href="#关于-城市驿站" class="headerlink" title="关于 城市驿站"></a>关于 <code>城市驿站</code></h1><p>好久不见。<br>真的是好久不见了,因为平常不怎么写博客。时常会有一些新的idea,但是总是懒<del>逃</del><br>这个<em>城市驿站</em>的想法倒是有了很久了,主要是上了大学第一次去印尼爬火山的时候,当时因为某些不方便说的原因,差点死在火山口了——于是便觉得人生苦短,及时行乐,有必要把每一次出行的经历都记下来,以防自己哪一天挂掉了,就再也没有人直到我的精彩人生了<del>逃</del><br>于是乎之后大概会记录一下自己去过的每个地方,无论是以旅游的形式,还是旅居还是常驻。</p><h1 id="启程"><a href="#启程" class="headerlink" title="启程"></a>启程</h1><p>这次去达拉斯是参加SC22的student cluster competition.<br>十一月十二日早上从新加坡出发,经停了一下东京。<br>第一次坐这种长程航班,从新加坡出发如果要一路飞到达拉斯的话可能要飞二十几个小时。因为没有直飞航班的原因,在东京中转了一下。不得不提,在十二号那天的前一天,也就是星期五,我刚考完学校的日语4口语,因此刚好有机会练习一下我的塑料日语。<br>没有坐过日本航空的原因,但是在2017年的时候高中交换的时候有坐过全日空。感觉是ANA的服务质量会相对来说更高一点,不过日本航空也提供不错的饮食。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/image20221218170209.png" alt="炒面没拍出来,<strike>怎么不是猪排饭"></p><p>然后最好玩的事情是,在飞机上没事干,发现了霓虹麻将<del>草</del>,练习了一下麻雀技术,胡了一发大的。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/image20221218170100.png" alt="三色同顺!"></p><p>于是就落地东京了,成田机场比记忆中的小了不少,航站楼完全比不上樟宜机场的规模。在航站楼里的酒吧吃了点热狗当晚餐<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/image20221218171010.png" alt="将近六七点的东京成田"><br>两个小时之后启程飞往达拉斯。</p><hr><p>在不知道飞机上睡了多久,以及看了多久神雕侠侣之后,大概能够看到北美土地了,很有一种新鲜感。想当年哥伦布第一次到达美东大概也是这种感觉。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/image20221218171258.png" alt="德州大平原"><br>第一次坐动车到淮河以北的时候,看到了在东南丘陵地区看不到的广阔华北平原。这次在飞机上看到了德克萨斯的同样大的平原,十分震撼。large tracts of arable lands. 如果旧大陆能有这么广阔的可耕种土地的话,想必现在已经人满为患了。不知道对于人类而言,世界上最先进的政体以及科学技术与这样广袤的新大陆相结合,不知道是不是幸事。<br>飞机上坐我旁边的是个很典型的拉丁裔美国佬,确实是那种没啥文化的美国佬。他说他这次和家人去东京旅行,准备回他费城老家。他问我是不是第一次来US,我说是。他表示,好好逛,好好玩。<br>下飞机之后快速通过海关,发现沃斯堡也就是一个小机场,大概和福州长乐机场差不多大小,不过我只能看到一个航站楼。外面的气温比新加坡凉很多,幸亏带了夹克。</p><h1 id="到达"><a href="#到达" class="headerlink" title="到达"></a>到达</h1><p>出门教授替我们打了车,外面揽客的基本都是黑人司机。上了一个埃塞俄比亚籍的司机的车,一路开到达拉斯市区。<br>在郊区行驶的时候完全看不到三层高的建筑物,全是那种平方和motel。想起GTA。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/image20221220104258.png" alt="平方,或者是仓库?"><br>开了将近半个小时到了市区边缘,大概能看到一些高楼大厦了。慢慢悠悠进了市区,司机指着一个环形公园告诉我们,这就是肯尼迪被干掉的地方,也是“what Dallas is famous for”。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/image20221220104017.png" alt="肯尼迪:乐"><br>之后大概就是下榻,然后去参加general meeting。不出意外,我们果然是最后一个到的。<br>当晚有个小party,但是感觉没啥意思,吃了个饭就回convention center修机器,配好subnet都已经半夜三点了。回房间大概把二十四小时没充电的脑子补充一下精力。</p><h1 id="比赛前一天"><a href="#比赛前一天" class="headerlink" title="比赛前一天"></a>比赛前一天</h1><p>第二天醒来的时候已经早上十点了,问了一下前一天晚上和我一起熬夜的队友,他还没去会展中心,其他人都已经过去了。两个人大概下楼711买了个早餐,一路慢慢穿过达拉斯城区到城区边缘的会展中心。<br>这时候大概可以有一点精力可以体会一下美国的城市节奏了。达拉斯这个城市往大了说,是德克萨斯的第二大城市(第一是休斯顿)。但是往小了说,城区其实只有两条两公里长的平行单行道中间夹着的街区而已,和中国一个县的市区差不太多,更不要说新加坡的大小。就如前一天在飞机上看到的一样,美国人都住在城外的房子里,等到要上班的时候再到城内来工作。因此可以在711看到一些来买饭的社畜。<br>711的老板不出意外也是黑人。在来达拉斯之前体会过墨西哥食物——说实话不是很能品鉴的来,比如说经典的Guacamole with crispy tortilla chips,以及干切鸡肉蘸酱啥的。于是在711只是点了个热狗就带走了。<br>街上无论白天还是黑夜,都有流浪汉。只是白天的流浪汉大多坐在长椅上,盯着你从街道的这一头走向另外一头,有点瘆人。<br>天空很蓝,不知道是不是季节的原因。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/image20221220105246.png" alt="街景"><br>之后的整个星期日大概就耗在了会展中心里,整个中心正在布置SC22的展会。前一天大概有看到一些大IP,比如说NASA,Supermicro之类的,不过因为没开门所以没啥机会逛。我同样也不知道,从周一到周三几乎所有的时间都要对付调试机器和各种编译错误,也没啥机会逛展子,只能等到周四。<br>周天下午大概拍了一下整个活动的官方照片,只能说美国人特别喜欢拍一张正经照片和一张不正经照片。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imageSC22-studentclustercompetition-60.jpg" alt="猜猜我在哪?"><br>之后的时间就是垃圾时间,修修机器,十几个小时就过去了。<br>到了半夜两三点的时候,loke表示我们明天这些要跑benchmark的人最好还是早点回去休息,于是在会展中心外面打了车;于是就用uber喜提劳斯莱斯魅影体验券一张。感觉是这会在街头半夜飙车的人顺手接订单的。</p><h1 id="星期一:-benchmark-day"><a href="#星期一:-benchmark-day" class="headerlink" title="星期一: benchmark day"></a>星期一: benchmark day</h1><p>休息了一个晚上,第二天早上六点就醒了,没睡多久。从周一开始SC22提供从市区到会展中心的shuttle bus,直接坐这玩意去上班(不是)。<br>benchmark day说实话任务不少,大概要跑HPL,HPCG,IO500和一个新的mlperf(以后应该会成为benchmark常客)。值得一提的是,组委会在工作区域旁边立了一个很大的屏幕记录各个队伍的功耗,只要有人超了警报就会响起,有点小紧张。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imageSC22-studentclustercompetition-48.jpg" alt="工作区域:这应该是UCSB的队伍"><br>有件比较好玩的事情就是,MIT+BU+NEU的队伍刚拿到他们的机器,没有rack,于是问我们能否把他们的机器上到我们的rack上。可惜rack空间满了。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imageSC22-studentclustercompetition-56.jpg" alt="他们的新机器"></p><p>其间和NTHU的朋友聊了一下天,很开心。他们的领队表示,如果我是学IC的,非常欢迎来台湾进修。<br>轶事:当天下午跑IO500的时候尝试把一张PCIe4的设备从一台机器上转移过去,但是失败了,好像识别不出。惊出一身汗。</p><p>当天下午五点半,benchmark就结束了。拿了一份会展中心的免费晚饭,等到七点钟的时候,steve宣布比赛开始,并且mystery app也被公布出来了。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/image20221220111000.png" alt="开幕仪式"><br>忙活了一整天的我决定直接回宾馆睡大觉。</p><h1 id="星期二-星期三:-48hour-challenge"><a href="#星期二-星期三:-48hour-challenge" class="headerlink" title="星期二-星期三: 48hour challenge"></a>星期二-星期三: 48hour challenge</h1><p>第二天早上同样也是很早就醒了。拍了一下早晨的街景。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/image20221220111048.png" alt="达拉斯"><br>说实话,和我印象当中的那种美国小城市差不太多。<br>回到会展中心之后,又是精力充沛地投入工作。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imageSC22-studentclustercompetition-91.jpg" alt="Penguin Solution的企鹅,很难不让人联想到linux吉祥物"><br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imageSC22-studentclustercompetition-97.jpg" alt="IEEE免费派发的德州牛仔帽,只能说IEEE这么有钱竟然发的是塑料的,差评"><br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imageSC22-studentclustercompetition-101.jpg" alt="派发免费装扮的工作人员"><br>当天下午一个比较有意思的事情是被邀请去参加TOP500的颁奖仪式。在颁奖仪式上,世界上最快的超级计算机会被公布。虽然在ISC22的时候就有耳闻,但是橡树岭还是实至名归地夺冠了。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/image20221220111836.png" alt="TOP500"><br>我不值夜班,但是也是挺晚才回去。歇了几个小时,我又回来了!<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/image20221220112028.png" alt="早餐"><br>周三的时候有一些公众活动,比如说海报展览。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/image20221220112014.png" alt="海报"><br>以及当天下午的lightening talk。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/imagefd9acf192be2628dcb8067aa38fdcc3.jpg" alt="高糊画质"></p><h1 id="周三晚上"><a href="#周三晚上" class="headerlink" title="周三晚上"></a>周三晚上</h1><p>当天下午五点半,比赛宣告结束。大家都很累,长舒一口气。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/image_DSC7243.jpg" alt="ETH的朋友展示了acrobat skill"><br>当晚教授表示,大家都干的很好,问我们要去哪吃庆功宴。我们表示想吃当地食物,但是这种菜馆都爆满。无奈,只能去一家意大利餐馆。<br>尝试了一下德州啤酒shinner bock。点酒的时候才意识到我护照和其他身份证件忘带了,辛亏服务生接受电子证件。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/image20221220112642.png" alt="优于tiger,劣于青岛"><br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/image20221220112735.png" alt="经典老美酒吧"><br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/image20221220112754.png" alt="合照"></p><h1 id="周四"><a href="#周四" class="headerlink" title="周四"></a>周四</h1><p>可能是因为前几天生物钟都已经调整到了一个匪夷所思的地步,周四早上同样没有睡太久,九点钟就到会展中心了,结果只有我一个人。<br>UC austin有个哥们在用大屏幕玩NS,问我要不要加入。我表示他大乱斗打的很不错。<br>十点的时候,会展又开了。这是最后一天,所以要抓紧时间逛一下展会。<br>先去了一趟微软Azure,看了一下他们的A100逆天机器,以及MI200s的。比赛中我们也有被赞助云计算资源,来自oracle和微软。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/image20221220113113.png" alt="A100"><br>之后去了AMD的展子,看了一下收购了Xilinx之后的A家加速套装到底有多猛。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/image20221220113233.png" alt="4代Epyc,Alveo加速卡,以及MI250"><br>听了一下AWS的量子计算的展会。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/image20221220113329.png" alt="AWS"><br>还有蓝厂的一些加速计算案例。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/image20221220113343.png" alt="Intel, Yes!"><br>最有意思的是竟然还有UCIe的展子,虽然很小。我和展会负责人表示,我博士项目的方向就是这个,他很是高兴。没有想到Chiplet还能火到SC展会上来,不过也合理,毕竟4代EPYC就用的chiplet技术。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/image20221220113510.png" alt="UCIe"><br>除此之外,还去了OpenMP的展台。展台负责人十分热情,送了我一堆纪念品,然后问我用不用OpenMP.我说我是打SCC的,不用OpenMP怎么多线程啊。</p><hr><p>之后就是喜闻乐见的颁奖仪式。今年是NTHU夺冠,他们对高性能计算的理解高出我们一个档次。<br>在此之后和他们的领队之一拍了合照,非常健谈。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/image20221220113814.png" alt="合照"><br>当天晚上我强烈表示想吃德州烤肉,于是就打车到了达拉斯最有名的烤肉店。原本当晚还有一个非官方的party,我们感觉人太多就没去(幸好来了这家)。我们一路走到城郊。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/image20221220113957.png" alt="人非常多"><br>人非常的多!已经有了一些圣诞的氛围感。并且我也是第一次见到德州烤肉的那种烤炉,很震撼。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/image20221220114039.png" alt="烤炉"><br>点了一份Brisket和一份香肠,加Mac&Cheese。很美式的烤肉店提供免费续杯的碳酸饮料。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/image20221220114133.png" alt="非常好吃!"><br>最有戏剧性的就是,我们吃到一半的时候,commitee进了这家店,碰到了我们。我们表示,你们不去那个party吗?大家都很尴尬地打哈哈,不过都表示由于这家店太好吃了,所以……。<br>一些合照。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/cedarsaigyouji/imagerepo_DSC7250.jpg" alt="组内合照"></p><h1 id="后记"><a href="#后记" class="headerlink" title="后记"></a>后记</h1><p>公费旅行出游还是一段很有意思的经历,见识到了不同的风土人情,也结识了很多有意思的人。不过在周五坐上回程飞机的时候,想到两天之后的混合信号IC考试,还是有够头痛的。<br>再见,达拉斯。<br><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/image20221220114453.png" alt="走的时候看到了达拉斯小牛队的场馆"></p>]]></content>
<categories>
<category>essay</category>
</categories>
<tags>
<tag>城市驿站</tag>
</tags>
</entry>
<entry>
<title>编写module file</title>
<link href="/tech/2022.04.02.23/"/>
<url>/tech/2022.04.02.23/</url>
<content type="html"><![CDATA[<p>本文介绍的是lua based lmod环境变量模组。如果你用的是一台小型私人服务器,那么你根本不需要这种玩意。</p><p>也就是说,Lmod只有在大型服务器,有非常多用户使用,并且还需要非常多不同版本或者不同种类的基本编译套件时,可以发挥最大用处。如果你只是用一台私人服务器跑东西,那么你要做的只是把所有的binary文件目录都加入环境变量PATH里,再把所有load library加到环境变量LD_LIBRARY_PATH里面。</p><p>这两天开始苦逼地当学校超算的运维,于是需要搞定这种玩意。稍微写一下博客。学校超算组的链接:<a href="https://ntuhpc.org/">https://ntuhpc.org/</a></p><h1 id="什么是Lmod"><a href="#什么是Lmod" class="headerlink" title="什么是Lmod"></a>什么是Lmod</h1><p>Lmod is a Lua based module system that easily handles the MODULEPATH Hierarchical problem. Environment Modules provide a convenient way to dynamically change the users’ environment through modulefiles. This includes easily adding or removing directories to the PATH environment variable. Modulefiles for Library packages provide environment variables that specify where the library and header files can be found.</p><p>(小学二年级英语):Lmod是一个基于Lua的模组系统,可以简单解决modulepath的等级分划问题(dependency)。Lmod提供了一种简便的方法来修改用户的运行环境,通过编写modulefiles的方法。这包括了对环境变量PATH的增删。而Modulefile则提供了对于库文件和头文件的说明。</p><p>那么,Lmod有多方便呢?举个例子:假如说你把python3.8安装在了自己的家目录,但是忘了加到PATH里面去;那么你在terminal里面敲一个python3,就会有这种提示:</p><figure class="highlight vim"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs vim">[root@fedora ~]# <span class="hljs-keyword">python3</span><br>-bash: <span class="hljs-keyword">python3</span>: <span class="hljs-keyword">command</span> not found<br></code></pre></td></tr></table></figure><p>你感到不解,于是你尝试echo $PATH,才发现python原来没有被加到自己的环境变量里去。你感到很恼火,于是修改了一下自己的.bashrc,加了一条export。</p><p>但是在将来的一天,你把这件事忘了;但是python3.9更新了!于是你在自己的服务器上安装了python3.9,仍然安装在自己的家目录;当你在terminal里敲击python3,冒出来的却是python3.8的interactive session。你这才想起来自己的环境变量里面写的是python3.8,于是你十分恼火,再进到.bashrc里,把3.8改了。</p><p>当然,这说的是一件特殊的例子,也许python3.8并不影响你的运行效率;但是如果,你在编译一个大型项目,里面提供了N套编译方案,可以使用N套不同的,互相不兼容的编译套件呢?(比如gcc和icc)</p><p>没有Lmod的话,你就只能不停地修改PATH,或者高明一点,写一个脚本帮你解决,每次都要运行,每次有新的模组进来都要修改。于是聪明的程序员们用lua写了Lmod,一劳永逸地彻底解决这个问题。</p><p>有了Lmod,你在terminal里面就只需要敲击module av(ailable),就会有以下的东西蹦出来:</p><figure class="highlight awk"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs awk">[root@fedora ~]<span class="hljs-comment"># module av</span><br><br>--------------------------------------------------- <span class="hljs-regexp">/opt/m</span>odulefile ----------------------------------------------------<br> python3<span class="hljs-regexp">/3.8python3/</span><span class="hljs-number">3.9</span><br></code></pre></td></tr></table></figure><p>那么接下来的事情就轻松很多。如果你想要使用3.8,那么你就可以module load python3/3.8;如果你想要换成3.9,那么你就可以module load python3/3.9.</p><p>如何让module av显示出所有系统中,系统管理员想让你看到的所有module呢?这要通过编写modulefile来解决。</p><h2 id="编写modulefile"><a href="#编写modulefile" class="headerlink" title="编写modulefile"></a>编写modulefile</h2><p>modulefile不难写:<a href="https://lmod.readthedocs.io/en/latest/015_writing_modules.html">https://lmod.readthedocs.io/en/latest/015_writing_modules.html</a></p><p>简而言之,modulefile的位置可以放在任何位置,只要它也被包括进module本身的查询list中。举个例子,我们将cuda安装在/usr/local/cuda-11.4中,我们就可以在/opt/modulefile里mkdir一个新的目录cuda,里面再写一个文件11.4.lua,这表示这是module cuda下属的版本11.4.</p><figure class="highlight awk"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs awk">[root@fedora cuda]<span class="hljs-comment"># cat 11.4.lua</span><br>help([[<br>https:<span class="hljs-regexp">//</span>docs.nvidia.com<span class="hljs-regexp">/cuda/</span>cuda-toolkit-release-notes/index.html<br>]])<br>prepend_path( <span class="hljs-string">"PATH"</span>, <span class="hljs-string">"/usr/local/cuda-11.4/bin"</span>)<br>prepend_path( <span class="hljs-string">"LD_LIBRARY_PATH"</span>,<span class="hljs-string">"/usr/local/cuda-11.4/lib64"</span>)<br>[root@fedora cuda]<span class="hljs-comment">#</span><br></code></pre></td></tr></table></figure><p>help语句在module help的时候比较有用,他会告诉你,这个module的用处是什么。这里是直接的来自nvidia的url。</p><p>prepend_path就很好理解了。第一个slot放的是变量名,第二个则是需要prepend的path。也就是说,在执行module load cuda的时候,会执行这两行命令。</p><p>除去prepend_path之外,还有一个API可能会比较有用,setenv。当然也很好理解,这种可能在gcc的modulepath中比较有用。</p><p>当然,在编写完modulefile之后,不要忘了把modulepath添加进module自己,否则module av不会显示这个目录。添加的方法是,module use $(需要添加的目录)</p><p>以上。</p>]]></content>
<categories>
<category>tech</category>
</categories>
</entry>
<entry>
<title>永夜抄H结界组6a混关笔记</title>
<link href="/game/2022.01.06.21/"/>
<url>/game/2022.01.06.21/</url>
<content type="html"><![CDATA[<p>2022年一月七日,永夜抄H难度发了,可以说是了解了一个高中以来的心愿。2018年其实是手贱进了6b,然后9961疮终(悲)</p><p>想了一下,写一个笔记,也是对自己不成熟的STG生涯的一个阶段性总结。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th011.bmp" alt="th011"></p><h2 id="关于机体:幻想的结界组"><a href="#关于机体:幻想的结界组" class="headerlink" title="关于机体:幻想的结界组"></a>关于机体:幻想的结界组</h2><p>机体选择了喜闻乐见的结界组,只是单纯因为我不会玩另外三种机体组合。结界组比较容易上手,适合新手。聊一下结界组用起来的一些优点:</p><p><img src="https://upload.thwiki.cc/3/3a/%E5%8D%9A%E4%B8%BD%E7%81%B5%E6%A2%A6%26%E5%85%AB%E4%BA%91%E7%B4%AB%EF%BC%88%E6%B0%B8%E5%A4%9C%E6%8A%84%E7%AB%8B%E7%BB%98%EF%BC%89.png" alt="城管和她的顶头上司"></p><h3 id="高速模式(人):乐园的可爱巫女-博丽灵梦"><a href="#高速模式(人):乐园的可爱巫女-博丽灵梦" class="headerlink" title="高速模式(人):乐园的可爱巫女 博丽灵梦"></a>高速模式(人):乐园的可爱巫女 博丽灵梦</h3><p>灵梦有着不错的移动速度,虽然不如魔胖子的速度那么快,但是中规中矩的移动给低封打法提供了足够的精度。</p><p>火力上来说,灵梦的火力也不如魔胖子高,但是是唯一一个诱导机体,站在哪里都能打输出,可以专心躲避弹幕。</p><h3 id="低速模式(妖):境界的妖怪-八云紫"><a href="#低速模式(妖):境界的妖怪-八云紫" class="headerlink" title="低速模式(妖):境界的妖怪 八云紫"></a>低速模式(妖):境界的妖怪 八云紫</h3><p>紫的火力比灵梦稍微好一点,但是移动速度慢的可以。当然比起幽幽子还是要快了不少。</p><p>比起火力上的优势和判定点小,紫还有一个好处就是可以用八云蓝锁住敌机,这点在之后的一张卡里面有奇效。</p><p>当然除了这些比较中规中矩的优点之外,选用结界组的原因就在于<del>如果选咏唱组的话4A快要糟死我了简直是要特么SJF附体好吗疮爆</del></p><p>如果4B是困难,那么4A简直是极难。用灵梦,灵梦就打不了我了(悲)</p><h2 id="关于难度"><a href="#关于难度" class="headerlink" title="关于难度"></a>关于难度</h2><p>永夜抄的难度比起其他作品还是亲民不少的,资源多并且弹幕也比较中庸一些。永N应该是被称为最简单的N难度官正。</p><p>资源多在于敌机的SC数量是比可以拿到的Bomb数量还要少的,可以把所有符卡都炸过去,一张都不收取。但是问题在于,有些非符的难度也很高,所以合理使用资源也是很重要的,一定一定不要抱B撞了,简直是人生教诲一样的真理。</p><p>好了那我们开始进入正题吧。</p><h2 id="一面:萤火的行踪"><a href="#一面:萤火的行踪" class="headerlink" title="一面:萤火的行踪"></a>一面:萤火的行踪</h2><h3 id="一面道中"><a href="#一面道中" class="headerlink" title="一面道中"></a>一面道中</h3><p>开局是标准的两残三b。</p><p>开场可以板顶站位,敌机会左右左右地交替出现。速破掉收点就行。一面的P点资源是不足以完成全火力的,要等到二面。</p><p>然后关底boss<a href="https://thwiki.cc/%E8%8E%89%E6%A0%BC%E9%9C%B2%C2%B7%E5%A5%88%E7%89%B9%E5%B7%B4%E6%A0%BC">莉格露·奈特巴格</a>出现。道中非符没有什么难度,收取。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th012.bmp" alt="道中一非"></p><h4 id="萤符「地上的彗星」"><a href="#萤符「地上的彗星」" class="headerlink" title="萤符「地上的彗星」"></a><a href="https://thwiki.cc/%E8%90%A4%E7%AC%A6%E3%80%8C%E5%9C%B0%E4%B8%8A%E7%9A%84%E5%BD%97%E6%98%9F%E3%80%8D">萤符「地上的彗星」</a></h4><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th013.bmp" alt="地上的彗星"></p><p>灵梦感人的火力可以打掉一个使魔。这张卡比较烦的地方在于使魔在第一轮子弹压下来的时候会左右抖动,容易被封位。但是还是比较简单的卡,建议收取。</p><p>击破之后继续清敌机,然后就到关底了。</p><h3 id="一面关底:莉格露·奈特巴格"><a href="#一面关底:莉格露·奈特巴格" class="headerlink" title="一面关底:莉格露·奈特巴格"></a>一面关底:莉格露·奈特巴格</h3><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th014.bmp" alt="关底一非"></p><p>一非没有什么难度,使魔是从关底boss身边出现的,用灵梦可以快速击破。其他子弹都是固定弹。</p><h4 id="灯符「Firefly-Phenomenon」(萤光现象)"><a href="#灯符「Firefly-Phenomenon」(萤光现象)" class="headerlink" title="灯符「Firefly Phenomenon」(萤光现象)"></a><a href="https://thwiki.cc/%E7%81%AF%E7%AC%A6%E3%80%8CFirefly_Phenomenon%E3%80%8D">灯符「Firefly Phenomenon」</a>(萤光现象)</h4><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th015.bmp" alt="萤光现象"></p><p>同样是先击破使魔,再在板底位移。小玉是自机狙,其余是固定。</p><p>二非和一非差不多,不多说。</p><h4 id="蠢符「Night-Bug-Storm」(夜虫风暴)"><a href="#蠢符「Night-Bug-Storm」(夜虫风暴)" class="headerlink" title="蠢符「Night Bug Storm」(夜虫风暴)"></a><a href="https://thwiki.cc/%E8%A0%A2%E7%AC%A6%E3%80%8CNight_Bug_Storm%E3%80%8D">蠢符「Night Bug Storm」</a>(夜虫风暴)</h4><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th017.bmp" alt="夜虫风暴"></p><p>随机弹加固定弹。也很好收取。</p><h4 id="LSC-隐虫「永夜蛰居」"><a href="#LSC-隐虫「永夜蛰居」" class="headerlink" title="LSC: 隐虫「永夜蛰居」"></a>LSC: <a href="https://thwiki.cc/%E9%9A%90%E8%99%AB%E3%80%8C%E6%B0%B8%E5%A4%9C%E8%9B%B0%E5%B1%85%E3%80%8D">隐虫「永夜蛰居」</a></h4><p>LSC的话收不收无所谓。这张卡换成了高速固定弹。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th018.bmp" alt="永夜蛰居"></p><p>到一面关底,应该是两残3b不变的配置。</p><h2 id="二面:人类消失的道路"><a href="#二面:人类消失的道路" class="headerlink" title="二面:人类消失的道路"></a>二面:人类消失的道路</h2><h3 id="二面道中"><a href="#二面道中" class="headerlink" title="二面道中"></a>二面道中</h3><p>敌机会先从右边再从左边出来,板边和板顶的顺序。注意收掉第三波敌机之后可以开启全火力。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th019.bmp" alt="Full Power!"></p><p>两边清完之后把中间的使魔击破,可以获得一个bomb。两残4b。</p><p>然后到现在为止,已经可以收取100个蓝点了,应该能够奖励一个残机了,也就是三残4b,豪华配置!</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th022.bmp" alt="速破使魔,可以适当上线收点"></p><p>二面道中最后就是左右左右右的顺序出敌机,速破即可。然后见到关底boss:<a href="https://thwiki.cc/%E7%B1%B3%E6%96%AF%E8%92%82%E5%A8%85%C2%B7%E8%90%9D%E8%95%BE%E6%8B%89">米斯蒂娅·萝蕾拉</a></p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th020.bmp" alt="道中一非"></p><p>小碎骨的道中一非是螺旋状的固定弹,比较好躲避。</p><p>放完几波之后会放蓝色封位弹,结界组的火力可以清掉一个使魔。收取。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th021.bmp" alt="拆一个使魔"></p><h4 id="声符「木菟咆哮」"><a href="#声符「木菟咆哮」" class="headerlink" title="声符「木菟咆哮」"></a><a href="https://thwiki.cc/%E5%A3%B0%E7%AC%A6%E3%80%8C%E6%9C%A8%E8%8F%9F%E7%9A%84%E5%92%86%E5%93%AE%E3%80%8D">声符「木菟咆哮」</a></h4><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th023.bmp" alt="木菟咆哮"></p><p>眼花缭乱的交叉固定弹,很像帝的二非。这张卡如果躲避不了的话可以考虑炸掉。</p><h3 id="二面关底:米斯蒂娅·萝蕾拉"><a href="#二面关底:米斯蒂娅·萝蕾拉" class="headerlink" title="二面关底:米斯蒂娅·萝蕾拉"></a>二面关底:米斯蒂娅·萝蕾拉</h3><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th024.bmp" alt="关底一非"></p><p>关底一非的弹幕间隙会比道中一非更小一点,弹幕下压的时候多加注意。收法和道中一非一样。</p><h4 id="毒符「毒蛾的鳞粉」"><a href="#毒符「毒蛾的鳞粉」" class="headerlink" title="毒符「毒蛾的鳞粉」"></a><a href="https://thwiki.cc/%E6%AF%92%E7%AC%A6%E3%80%8C%E6%AF%92%E8%9B%BE%E7%9A%84%E9%B3%9E%E7%B2%89%E3%80%8D">毒符「毒蛾的鳞粉」</a></h4><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th025.bmp" alt="毒蛾的鳞粉"></p><p>比较糟的一张卡。鳞弹有点子机相关的意思,然后中玉会封位。可以考虑炸掉。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th026.bmp" alt="关底二非"></p><p>二非的打法会稍微麻烦一点。中玉不再是分成几束下压,而是密密麻麻地以使魔的形式释放出来,需要快速打掉尽可能多的使魔,不然就是非常非常糟。L难度这张卡糟的一比。</p><h4 id="鹰符「Ill-Starred-Dive」(祸延疾冲)"><a href="#鹰符「Ill-Starred-Dive」(祸延疾冲)" class="headerlink" title="鹰符「Ill-Starred Dive」(祸延疾冲)"></a><a href="https://thwiki.cc/%E9%B9%B0%E7%AC%A6%E3%80%8CIll-Starred_Dive%E3%80%8D">鹰符「Ill-Starred Dive」</a>(祸延疾冲)</h4><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th027.bmp" alt="祸延疾冲"></p><p>为什么夜雀叫做夜雀呢,因为会让你夜盲啊。这张卡会将你的视野影响到只剩原来的四分之三左右,但是这张卡的收法很有趣,上避。注意要释放第一波鳞弹之后再上避,不然夜雀会释放护身弹幕。</p><p>红色鳞弹在靠近的时候最好躲避。</p><h4 id="夜盲「夜雀之歌」"><a href="#夜盲「夜雀之歌」" class="headerlink" title="夜盲「夜雀之歌」"></a><a href="https://thwiki.cc/%E5%A4%9C%E7%9B%B2%E3%80%8C%E5%A4%9C%E9%9B%80%E4%B9%8B%E6%AD%8C%E3%80%8D">夜盲「夜雀之歌」</a></h4><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th028.bmp" alt="夜雀之歌"></p><p>夜雀终符,夜盲会非常明显。视野只有判定区域旁边的一块。但是实际上只需要躲避交叉的红色鳞弹就行。</p><h4 id="LSC-夜雀「午夜中的领唱者」"><a href="#LSC-夜雀「午夜中的领唱者」" class="headerlink" title="LSC:夜雀「午夜中的领唱者」"></a>LSC:<a href="https://thwiki.cc/%E5%A4%9C%E9%9B%80%E3%80%8C%E5%8D%88%E5%A4%9C%E4%B8%AD%E7%9A%84%E5%90%88%E5%94%B1%E6%8C%87%E6%8C%A5%E3%80%8D">夜雀「午夜中的领唱者」</a></h4><p>很惭愧,LSC这张卡并没有打出来。</p><h2 id="三面:吞食历史者的望乡"><a href="#三面:吞食历史者的望乡" class="headerlink" title="三面:吞食历史者的望乡"></a>三面:吞食历史者的望乡</h2><h3 id="三面道中"><a href="#三面道中" class="headerlink" title="三面道中"></a>三面道中</h3><p>三面开始,就有一点糟了。这时候结界组的诱导开始发挥大用,因为敌机都比较脆。</p><p>开场板底站位,然后躲避掉前三波的固定弹之后,开始在板底微移。切忌xjb跑,非常容易被封位。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th029.bmp" alt="开场"></p><p>可以看出,弹幕大多是自机狙,微移就很游刃有余。</p><p>这时候蓝点应该收够500了,可以再拿一残。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th030.bmp" alt="版右站位"></p><p>然后是左右两边出现的使魔,有点小糟,不行的话可以一波带走。觉得OK的话,版右站位,用诱导清怪。一定不要xjb上线收点,不然就等着糟吧</p><p>剩下的几个敌机,低速锁定击破就可以,不是很难。然后见三面boss,慧音老师。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th031.bmp" alt="一非"></p><p>慧音的一非是交叉弹+固定,可以左右横跳收取。使魔很脆,可以把下面的两个都打掉,减轻压力。</p><h4 id="产灵「First-Pyramid」(最古老的金字塔)"><a href="#产灵「First-Pyramid」(最古老的金字塔)" class="headerlink" title="产灵「First Pyramid」(最古老的金字塔)"></a><a href="https://thwiki.cc/%E4%BA%A7%E7%81%B5%E3%80%8CFirst_Pyramid%E3%80%8D">产灵「First Pyramid」</a>(最古老的金字塔)</h4><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th032.bmp" alt="最古老的金字塔"></p><p>这张卡会有一些糟,最好高速收掉。使魔很厚,结界组的火力打不穿。小心被大玉封位,其他弹幕是固定弹。</p><p>击破这张卡之后,老师会掉一残。快速上线收掉之后马上退到版底。清掉两队敌机之后进入关底。会额外奖励一bomb。</p><h3 id="三面关底:上白泽慧音"><a href="#三面关底:上白泽慧音" class="headerlink" title="三面关底:上白泽慧音"></a>三面关底:上白泽慧音</h3><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th033.bmp" alt="关底一非"></p><p>关底一非,用高速把使魔打掉。这张卡切低速的话,慧音会放蓝色弹幕,非常糟。站位就站在对称点中心,然后打掉老师四个使魔,第一波是安定。然后低封收掉。弹速很快,切记速破。</p><h4 id="始符「Ephemerality-137」(短暂的137)"><a href="#始符「Ephemerality-137」(短暂的137)" class="headerlink" title="始符「Ephemerality 137」(短暂的137)"></a><a href="https://thwiki.cc/%E5%A7%8B%E7%AC%A6%E3%80%8CEphemerality_137%E3%80%8D">始符「Ephemerality 137」</a>(短暂的137)</h4><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th034.bmp" alt="137"></p><p>137这张卡说实话可以直接炸掉,当然学会左右横穿了之后收取四面魔炮也会容易很多。当时人品好,弹隙很大。</p><h4 id="野符「义满的危机」"><a href="#野符「义满的危机」" class="headerlink" title="野符「义满的危机」"></a><a href="https://thwiki.cc/%E9%87%8E%E7%AC%A6%E3%80%8C%E4%B9%89%E6%BB%A1%E7%9A%84%E5%8D%B1%E6%9C%BA%E3%80%8D">野符「义满的危机」</a></h4><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th035.bmp" alt="[野符「义满的危机」](https://thwiki.cc/野符「义满的危机」)"></p><p>没有练过刀弹,这张卡直接b了。放b也有一个技巧,一定要和对面合体,这样伤害会大很多。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th036.bmp" alt="关底二非"></p><p>二非比一非要更难一点,没有信心的话直接炸了吧。当时属实有点菜,放了一个决死。</p><h4 id="国符「三种神器-镜」"><a href="#国符「三种神器-镜」" class="headerlink" title="国符「三种神器 镜」"></a><a href="https://thwiki.cc/%E5%9B%BD%E7%AC%A6%E3%80%8C%E4%B8%89%E7%A7%8D%E7%A5%9E%E5%99%A8_%E9%95%9C%E3%80%8D">国符「三种神器 镜」</a></h4><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th037.bmp" alt="三种神器 镜"></p><p>直接炸了,没啥说的。</p><h4 id="虚史「幻想乡传说」"><a href="#虚史「幻想乡传说」" class="headerlink" title="虚史「幻想乡传说」"></a><a href="https://thwiki.cc/%E8%99%9A%E5%8F%B2%E3%80%8C%E5%B9%BB%E6%83%B3%E4%B9%A1%E4%BC%A0%E8%AF%B4%E3%80%8D">虚史「幻想乡传说」</a></h4><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th038.bmp" alt="虚史「幻想乡传说」"></p><p>终符。这张卡退到板底,然后听三声弹幕往左微移一次,固定收。但是我太菜,被带走了(悲)</p><h4 id="LSC-未来「高天原」"><a href="#LSC-未来「高天原」" class="headerlink" title="LSC:未来「高天原」"></a>LSC:<a href="https://thwiki.cc/%E6%9C%AA%E6%9D%A5%E3%80%8C%E9%AB%98%E5%A4%A9%E5%8E%9F%E3%80%8D">未来「高天原」</a></h4><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th039.bmp" alt="LSC"></p><p>收法和终符一样,可以考虑收取。</p><h2 id="四面:饱含魔力的土地下"><a href="#四面:饱含魔力的土地下" class="headerlink" title="四面:饱含魔力的土地下"></a>四面:饱含魔力的土地下</h2><p>四面非常非常糟。上三面预留好的足够多的bomb,直接一路交b炸穿过去就行,如果对自己没有足够把握的话。</p><p>当然,如果到这里没有四残的话,也可以推把重开了。</p><h3 id="四面道中"><a href="#四面道中" class="headerlink" title="四面道中"></a>四面道中</h3><p>四面按照故事情节是一场追逐战,所以道中的速度很快,高速弹幕一般都是自机相关,需要很高的背板技巧。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th040.bmp" alt="开场"></p><p>四面有很多这样的旋转敌机,但是不难,直接锁定中轴速破就行,会带走很大一部分弹幕。当然要求背板。</p><p>在击破之后一定不要上线,除非有足够的把握。灵梦的速度上线很有可能被贴脸敌机体术。</p><p>最后两个敌机会爆两个b,收取之后就到喜闻乐见的主角组大战了。</p><h3 id="四面关底:雾雨魔理沙"><a href="#四面关底:雾雨魔理沙" class="headerlink" title="四面关底:雾雨魔理沙"></a>四面关底:雾雨魔理沙</h3><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th042.bmp" alt="关底一非"></p><p>魔理沙的一非,<strong>可以炸掉</strong>。炸的时候一定要用高速b。</p><h4 id="魔空「Asteroid-Belt」(小行星带)"><a href="#魔空「Asteroid-Belt」(小行星带)" class="headerlink" title="魔空「Asteroid Belt」(小行星带)"></a><a href="https://thwiki.cc/%E9%AD%94%E7%A9%BA%E3%80%8CAsteroid_Belt%E3%80%8D">魔空「Asteroid Belt」</a>(小行星带)</h4><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th043.bmp" alt="小行星带"></p><p>非常糟,曾经看大触收过一次。我是没有这个能力。大星星是从上往下的,然后两边会出小星星封位。<strong>炸掉,请</strong>。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th044.bmp" alt="二非"></p><p>可以看到,我甚至用了两个b(不是决死)。二非的话还是那句话,<strong>炸掉</strong>。我这里甚至抱了一个,很惨。</p><h4 id="黑魔「Event-Horizon」(黑洞边缘)"><a href="#黑魔「Event-Horizon」(黑洞边缘)" class="headerlink" title="黑魔「Event Horizon」(黑洞边缘)"></a><a href="https://thwiki.cc/%E9%BB%91%E9%AD%94%E3%80%8CEvent_Horizon%E3%80%8D">黑魔「Event Horizon」</a>(黑洞边缘)</h4><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th045.bmp" alt="黑洞边缘"></p><p>为数不多的可以收掉的卡,在板底偏上一点的地方待命,然后等星星压下来躲避就行了。</p><p>在这之后,魔胖子跑掉了,回到了敌机的追逐战。击破最后两个敌机,可以再获得两个b,属于是神主明示你放b了。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th046.bmp" alt="三非"></p><p>然后魔胖子又回来了,三非。不要看弹隙好像很大,可以收,too young!</p><p><strong><u>炸掉,请</u></strong></p><h4 id="恋风「Starlight-Typhoon」(星光台风)"><a href="#恋风「Starlight-Typhoon」(星光台风)" class="headerlink" title="恋风「Starlight Typhoon」(星光台风)"></a><a href="https://thwiki.cc/%E6%81%8B%E9%A3%8E%E3%80%8CStarlight_Typhoon%E3%80%8D">恋风「Starlight Typhoon」</a>(星光台风)</h4><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th047.bmp" alt="星光台风"></p><p>这是一张姿势符。还记得上面讨论的,为什么紫的使魔蓝很重要吗?这张卡可以用这个机制非常轻易地收取。将蓝锁定在魔理沙身上,然后去到版左上方,此时星弹只会放高速弹。上下微移,可以在三十秒内用蓝的火力收取掉,非常的不讲武德</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th048.bmp" alt="四非"></p><p>四非,没什么好说的,你知道我要说什么: <strong>炸!</strong></p><h4 id="恋心「Double-Spark」(二重火花)"><a href="#恋心「Double-Spark」(二重火花)" class="headerlink" title="恋心「Double Spark」(二重火花)"></a><a href="https://thwiki.cc/%E6%81%8B%E5%BF%83%E3%80%8CDouble_Spark%E3%80%8D">恋心「Double Spark」</a>(二重火花)</h4><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th049.bmp" alt="二重火花"></p><p>来了,魔理沙的标准符卡,魔炮!</p><p>这张卡我建议还是炸掉,但是我当时头铁,尝试收取,并且成功了!要点在于引魔炮,然后钻大星星缝隙。</p><p>放魔炮的时候整个屏幕都会颤抖,想想永夜抄的exe icon就是魔理沙,果然是第一主角。颤抖屏幕的时候视力会受到影响,所以要做好预判。这时候灵梦的诱导也发挥了很大作用。</p><h4 id="光击「Shoot-the-Moon」(击月)"><a href="#光击「Shoot-the-Moon」(击月)" class="headerlink" title="光击「Shoot the Moon」(击月)"></a><a href="https://thwiki.cc/%E5%85%89%E5%87%BB%E3%80%8CShoot_the_Moon%E3%80%8D">光击「Shoot the Moon」</a>(击月)</h4><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th050.bmp" alt="击月"></p><p>终符。击月这张卡的预警线很迷,我不是太会躲,还是那句话,**<u>炸了</u>**!</p><h4 id="LSC-魔炮「Final-Spark」(究极火花)"><a href="#LSC-魔炮「Final-Spark」(究极火花)" class="headerlink" title="LSC:魔炮「Final Spark」(究极火花)"></a>LSC:<a href="https://thwiki.cc/%E9%AD%94%E7%82%AE%E3%80%8CFinal_Spark%E3%80%8D">魔炮「Final Spark」</a>(究极火花)</h4><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th051.bmp" alt="LSC"></p><p>屏幕都看不清楚了喂。LSC就看着办。</p><h2 id="五面:污秽之世-美丽之笼"><a href="#五面:污秽之世-美丽之笼" class="headerlink" title="五面:污秽之世 美丽之笼"></a>五面:污秽之世 美丽之笼</h2><h3 id="五面道中"><a href="#五面道中" class="headerlink" title="五面道中"></a>五面道中</h3><p>进入到五面,说明已经有实力冲击混关了,或者是刚刚从四面苟延残喘过来,只剩一点点资源。</p><p>五面开场的这个敌机没有体术判定,可以直接合体击破,<del>不讲武德</del></p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th052.bmp" alt="开场合体"></p><p>五面会有很多幻影兔子,弹速很慢,从左到右然后从右到左清完,不要留下一个,否则会很糟。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th053.bmp" alt="从版边开始清理"></p><p>五面也有很多如同四面一样的旋转弹幕的敌机,打法都是一样的,切忌上线收点。</p><p>然后是黑兔子的一非。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th054.bmp" alt="道中一非"></p><p>弑神兔果然不是吹的,交叉弹很难躲避。建议一非炸掉,不要学我头铁去躲。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th055.bmp" alt="道中二非"></p><p>二非的话只是普通的交叉弹,据说右下角有安定点,我没发现。可以炸掉,但是我选择收取。</p><p>击破因幡帝之后会奖励一个残机。然后又是重复的清兔子时间。学会背板之后会简单很多。</p><p>最后两个兔子会掉两个b,然后进入关底打受兔。</p><h3 id="五面关底:铃仙·优昙华院·因幡"><a href="#五面关底:铃仙·优昙华院·因幡" class="headerlink" title="五面关底:铃仙·优昙华院·因幡"></a>五面关底:铃仙·优昙华院·因幡</h3><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th056.bmp" alt="关底一非"></p><p>一非得话是有点自机相关的弹幕,注意看清楚了就能收取。</p><h4 id="幻波「赤眼催眠-Mind-Blowing-」"><a href="#幻波「赤眼催眠-Mind-Blowing-」" class="headerlink" title="幻波「赤眼催眠(Mind Blowing)」"></a><a href="https://thwiki.cc/%E5%B9%BB%E6%B3%A2%E3%80%8C%E8%B5%A4%E7%9C%BC%E5%82%AC%E7%9C%A0(Mind_Blowing)%E3%80%8D">幻波「赤眼催眠(Mind Blowing)」</a></h4><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th057.bmp" alt="赤眼催眠"></p><p>姿势符,又是使用蓝大人的时候。把蓝锁定在铃仙身上,然后弹幕虚化归位,实化往左下角退,只需要穿越一层。</p><p>只是蓝大人的火力很感人,所以要等个二十几秒。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th058.bmp" alt="二非"></p><p>二非的话是比较容易封位的交叉但,一b带走。</p><h4 id="狂视「狂视调律-Illusion-Seeker-」(幻觉追迹者)"><a href="#狂视「狂视调律-Illusion-Seeker-」(幻觉追迹者)" class="headerlink" title="狂视「狂视调律(Illusion Seeker)」(幻觉追迹者)"></a><a href="https://thwiki.cc/%E7%8B%82%E8%A7%86%E3%80%8C%E7%8B%82%E8%A7%86%E8%B0%83%E5%BE%8B(Illusion_Seeker)%E3%80%8D">狂视「狂视调律(Illusion Seeker)」</a>(幻觉追迹者)</h4><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th059.bmp" alt="狂视调律"></p><p>老太太过马路。这张卡我是不太会收,而且很糟很糟。建议1b炸掉。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th060.bmp" alt="三非"></p><p>铃仙的三非是纯自机狙,而且自己也会靠左移动。板底往左微移就可以了。</p><h4 id="懒惰「生神停止-Mind-Stopper-」"><a href="#懒惰「生神停止-Mind-Stopper-」" class="headerlink" title="懒惰「生神停止(Mind Stopper)」"></a><a href="https://thwiki.cc/%E6%87%92%E6%83%B0%E3%80%8C%E7%94%9F%E7%A5%9E%E5%81%9C%E6%AD%A2(Mind_Stopper)%E3%80%8D">懒惰「生神停止(Mind Stopper)」</a></h4><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th061.bmp" alt="生神停止"></p><p>这张卡我是第一次收取,很惊讶,本来应该要带走的,但是已经没有b了(笑)那就试试扭一扭吧。</p><p>第一波可以躲在正下方,第二波先等上面的封位弹幕下来,再快速穿插,往复三四次就行。</p><h4 id="散符「真实之月-Invisible-Full-Moon-」(隐形满月)"><a href="#散符「真实之月-Invisible-Full-Moon-」(隐形满月)" class="headerlink" title="散符「真实之月(Invisible Full Moon)」(隐形满月)"></a><a href="https://thwiki.cc/%E6%95%A3%E7%AC%A6%E3%80%8C%E7%9C%9F%E5%AE%9E%E4%B9%8B%E6%9C%88(Invisible_Full_Moon)%E3%80%8D">散符「真实之月(Invisible Full Moon)」</a>(隐形满月)</h4><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th062.bmp" alt="终符"></p><p>终符。可以考虑炸掉,也可以考虑慢慢退开。我不想扭了,我直接炸啦!</p><h4 id="LSC-月眼「月兔远程催眠术-Tele-Mesmerism-」(远程催眠)"><a href="#LSC-月眼「月兔远程催眠术-Tele-Mesmerism-」(远程催眠)" class="headerlink" title="LSC:月眼「月兔远程催眠术(Tele-Mesmerism)」(远程催眠)"></a>LSC:<a href="https://thwiki.cc/%E6%9C%88%E7%9C%BC%E3%80%8C%E6%9C%88%E5%85%94%E8%BF%9C%E7%A8%8B%E5%82%AC%E7%9C%A0%E6%9C%AF(Tele-Mesmerism)%E3%80%8D">月眼「月兔远程催眠术(Tele-Mesmerism)」</a>(远程催眠)</h4><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th063.bmp" alt="LSC"></p><p>LSC算是全yyc最难的卡之一。(老太太过马路2.0)我是不会收(笑)</p><h2 id="六面:藏起公主的夜空珠"><a href="#六面:藏起公主的夜空珠" class="headerlink" title="六面:藏起公主的夜空珠"></a>六面:藏起公主的夜空珠</h2><p>其实进了六面可以看一下自己的资源数量了,因为不需要全卡收取的话,混关玩家可以用光资源,一路炸过去,不续命通关就行。</p><p>我这里还剩四残两b,相当充裕的资源储备,打个6a应该是问题不大。</p><h3 id="六面道中"><a href="#六面道中" class="headerlink" title="六面道中"></a>六面道中</h3><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th064.bmp" alt="开场"></p><p>开场的这个敌机,很恐怖,但是只要在板底微移就可以了。</p><p>旅人1969超好听!</p><p>六面道中堪称是最短道中。敌机只有这样的:</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th066.bmp" alt="道中敌机"></p><p>击破本体就行。前两波可以上线收点,之后就不要上线了,容易被体术。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th067.bmp" alt="道中一非"></p><p>师匠登场!道中一非有一点糟,鳞片弹是固定,小玉是自机狙,但是不是L难度不需要折返。可以1b带走。</p><h4 id="天丸「壶中的天地」"><a href="#天丸「壶中的天地」" class="headerlink" title="天丸「壶中的天地」"></a><a href="https://thwiki.cc/%E5%A4%A9%E4%B8%B8%E3%80%8C%E5%A3%B6%E4%B8%AD%E7%9A%84%E5%A4%A9%E5%9C%B0%E3%80%8D">天丸「壶中的天地」</a></h4><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th068.bmp" alt="壶中的天地"></p><p>这张卡据说有固定收法,但是我不会。1b带走。击破道中师匠之后可以获得最后一个b资源。</p><h3 id="六面关底:八意永琳"><a href="#六面关底:八意永琳" class="headerlink" title="六面关底:八意永琳"></a>六面关底:八意永琳</h3><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th069.bmp" alt="关底一非"></p><p>关底一非是熟悉的交叉花状弹幕,很漂亮。钻空隙就行。</p><h4 id="神符「天人的族谱」"><a href="#神符「天人的族谱」" class="headerlink" title="神符「天人的族谱」"></a><a href="https://thwiki.cc/%E7%A5%9E%E7%AC%A6%E3%80%8C%E5%A4%A9%E4%BA%BA%E7%9A%84%E6%97%8F%E8%B0%B1%E3%80%8D">神符「天人的族谱」</a></h4><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th070.bmp" alt="神符「天人的族谱」"></p><p>二叉树!我看到了二叉树!</p><p>预警线有一点难,可以考虑1b带走。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th072.bmp" alt="二非"></p><p>二非,下围棋。可以炸了。</p><h4 id="苏生「Rising-Game」"><a href="#苏生「Rising-Game」" class="headerlink" title="苏生「Rising Game」"></a><a href="https://thwiki.cc/%E8%8B%8F%E7%94%9F%E3%80%8CRising_Game%E3%80%8D">苏生「Rising Game」</a></h4><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th073.bmp" alt="Rising Game"></p><p>这张卡是考验机师对大玉小玉和其他子弹的判定理解的,当然也很容易被封位,可以炸了。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th074.bmp" alt="三非"></p><p>三非,交叉的大玉。也是对判定的一个理解。</p><h4 id="神脑「Omoikane-Brain」(思兼的智慧)"><a href="#神脑「Omoikane-Brain」(思兼的智慧)" class="headerlink" title="神脑「Omoikane Brain」(思兼的智慧)"></a><a href="https://thwiki.cc/%E7%A5%9E%E8%84%91%E3%80%8COmoikane_Brain%E3%80%8D">神脑「Omoikane Brain」</a>(思兼的智慧)</h4><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th075.bmp" alt="思兼"></p><p><del>东方跟着转</del>很糟的一张卡,要跟随弹幕旋转,可以直接带走了。</p><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th076.bmp" alt="四非"></p><p>四非,交叉弹。可以看到背景换成了阿波罗登月,再联想一下道中曲:旅人1969,可以猜一猜神主的小心思。</p><h4 id="天咒「Apollo-13」(阿波罗13)"><a href="#天咒「Apollo-13」(阿波罗13)" class="headerlink" title="天咒「Apollo 13」(阿波罗13)"></a><a href="https://thwiki.cc/%E5%A4%A9%E5%92%92%E3%80%8CApollo_13%E3%80%8D">天咒「Apollo 13」</a>(阿波罗13)</h4><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th077.bmp" alt="阿波罗13"></p><p>不用猜小心思了,这明示你了,阿波罗13.但是本文并不是考据党。</p><p>这张卡据说用b造成不了伤害,但是我撞了一个决死。这张卡也是花状弹幕,很有永琳风格。</p><h4 id="秘术「天文密葬法」"><a href="#秘术「天文密葬法」" class="headerlink" title="秘术「天文密葬法」"></a><a href="https://thwiki.cc/%E7%A7%98%E6%9C%AF%E3%80%8C%E5%A4%A9%E6%96%87%E5%AF%86%E8%91%AC%E6%B3%95%E3%80%8D">秘术「天文密葬法」</a></h4><p><img src="https://raw.githubusercontent.com/cedarsaigyouji/imagerepo/master/img/th078.bmp" alt="终符:天文密葬法"></p><p>终符。可以看到我还有三个残机,不慌。</p><p>终符的话其实是测试火力的时候,魔理沙拆使魔的速度是灵梦的两倍不止。结界组这时候只能慢慢徒手拆,所幸b的数量管够,拆不动了就放一个b清一下版面,然后继续拆。其实拆到一半已经够了,可以考虑打永琳本体。</p><h4 id="LSC:禁药「蓬莱之药」"><a href="#LSC:禁药「蓬莱之药」" class="headerlink" title="LSC:禁药「蓬莱之药」"></a>LSC:<a href="https://thwiki.cc/%E7%A6%81%E8%8D%AF%E3%80%8C%E8%93%AC%E8%8E%B1%E4%B9%8B%E8%8D%AF%E3%80%8D">禁药「蓬莱之药」</a></h4><p>不会收LSC,润了,通关!</p><p>通关的时候还剩两残,可以说是摸鱼大胜利,最近两年都没怎么打STG了。但是有时候,偶尔听听神主的幻想风格音乐,欣赏一下优秀的弹幕射击,体验一下紧张的弹幕对战,还是很有体验的。</p><p>永夜抄这部2004年的作品,放在今天依然优秀,甚至我愿称之为车万系列最出色的作品之一。他的文化背景,作曲,弹幕射击,故事风格,还有难度设计,都是一流的。</p><p>最后,希望车万能火(逃</p>]]></content>
<categories>
<category>game</category>
</categories>
<tags>
<tag>糟!</tag>
</tags>
</entry>
<entry>
<title>漫谈‘历史’与‘历史学’</title>
<link href="/essay/2021.12.09.08/"/>
<url>/essay/2021.12.09.08/</url>
<content type="html"><![CDATA[<h2 id="引"><a href="#引" class="headerlink" title="引"></a>引</h2><p>很久很久没有写过中文的文章了,文笔退步不说,逻辑混乱没有条理句读不识真是抱歉。但是我觉得脑子里的观点还是很有价值的,无论怎么样还是写一写吧(笑)</p><h2 id="从“白泽”讲起"><a href="#从“白泽”讲起" class="headerlink" title="从“白泽”讲起"></a>从“白泽”讲起</h2><p>上手yyc有一点年头了,里面一个很有印象的人物就是慧音老师:</p><p><img src="https://upload.thwiki.cc/3/38/%E4%B8%8A%E7%99%BD%E6%B3%BD%E6%85%A7%E9%9F%B32%EF%BC%88%E6%B0%B8%E5%A4%9C%E6%8A%84%E7%AB%8B%E7%BB%98%EF%BC%89.png"></p><center>上白沢 慧音(かみしらさわ けいね)</center><p>作为永夜抄的三面关底boss,慧音老师的设定是化身为人类的白泽。所谓“白泽”,就是:</p><blockquote><p>兽人中有着一位不仅拥有渊博的学识,更具备最为聪颖的头脑的成员,她的名字叫做上白泽慧音。她只要看到满月就会变身为白泽(×1顺便一提她是后天性兽人。)。<br><strong>所谓的白泽,是会在治国有方的贤君面前现身,预言未来灾祸,并为贤君指明正确治国道路的妖怪。</strong></p><p>身为人类时,她的能力是将已有的历史全盘抹消;变身为白泽时,则能创造历史。</p><p> 吞噬(隐藏)历史程度的能力,与创造历史程度的能力(永夜抄)</p><p> 吞噬历史程度的能力(人类时)创造历史程度的能力(动物化时)(求闻史纪)</p><p>——thbwiki关于上白泽慧音的介绍</p></blockquote><p>白泽的典故实际上出自于中国古典神话。在《轩辕本纪》中便有白泽神兽的记载,<a href="https://zh.wikipedia.org/wiki/%E7%99%BD%E6%BE%A4">根据维基百科的记录。</a></p><p>通晓历史,并为贤君指明正确治国道路的妖怪,这就是白泽的使命。实际上,这是一个对于<strong>历史学家</strong>这个名词的一个较为朴实的描述了。历史学家,即研究历史,并提出论断的学者。在古代乃至近代,历史的作用,都是给予后人以参考,并在很多方面提醒普罗大众不要重蹈覆辙。著名的有历史学意味的作品,有杜牧的阿房宫赋,苏洵的六国论,以及春秋战国时期各种各样纵横家引经据典用于说服王侯将相的篇章。我们可以看到,历史是客观的,而对于历史的理解,或是说“历史意义”,则是和解析历史的人有关。这样的人而通常就是我们所称的历史学家。</p><p>然而,在很多情况下,解析历史这个过程,却极容易引入争议。一句极为著名的话,所谓“历史是任人打扮的小姑娘”,说的便是这个。历史是客观的,然而记录历史的过程却确确实实是主观的。不同的人看待一段历史会得到不同的结果:一个法国人和一个德国人会对拿破仑的功过争论不休,一个美国人和一个印第安人后裔也同样会对西进运动的历史意义产生分歧。</p><h2 id="历史与历史学"><a href="#历史与历史学" class="headerlink" title="历史与历史学"></a>历史与历史学</h2><p>我不是所谓历史学家,我也不敢自称历史学家。历史学家对于历史的了解比我广泛,对于历史事件的理解也比我透彻。我只是一名普通的历史爱好者而已,也就是对“历史”有着比较浅显的认知,读过一些历史读物罢了。闲暇的时候也玩P社游戏,(已经被批为“历史虚无主义”的时代产物。)</p><p>我很感谢我的朋友向我推荐了一位UP主,B站的“稚嫩的魔法师”。魔法师本人是武汉大学的历史系研究生,在闲暇的时候推荐历史相关的书籍,带领听众拨开重重迷雾去阅读一本鸿篇巨制。关于他的一些代表性视频,有”拿破仑皇帝“,“西晋的灭亡”等。</p><p>我是抱着娱乐的心态关注魔法师的,入坑作品是他的“康熙王朝”(玩EU4的一个录像)。在完结的末尾,他例行推荐书籍的时候,他推荐了这样一本书:</p><p><img src="https://images-na.ssl-images-amazon.com/images/S/compressed.photo.goodreads.com/books/1542366248i/42840458.jpg"></p><p>宫崎市定的《雍正帝》。宫崎市定是一位颇有造诣的日本历史学家,已故。魔法师在介绍这本书的时候,特地选出了前言中的这一段话:</p><blockquote><p>如果读者读完此书后仅感到书中所写的确实是在中国发生过的事情,那么可以说我的意图就完全以失败告终了。因为比起从过去的世界里不断地找出意想不到的事实介绍给大家,修正至今为止在不知不觉中形成的历史图景才是历史学的任务。</p></blockquote><p>我非常喜欢这段话,某种意义上他解释了“历史”和“历史学”的不同。就像我在上文中说的一样,历史是客观存在的,不因为人们的观点而改变;秦始皇修了长城,凯撒遭到刺杀,马丁路德推动宗教改革,天主教会的人被新教徒从波西米亚的市政厅窗户扔出。这些都是客观存在的事情,而宫崎市定所说的“历史图景”,才是所谓历史学,并且是在“不知不觉中形成的,需要修正的”历史学。为什么会有需要修正的历史学?回到上文中所谓“不同的人看待一段历史会得到不同的结果”,会有新的发现。这并不是说,世界大战后战胜国书写历史,并且世人只会记得成王败寇;“不知不觉中形成的”历史观念,在我看来更多程度与一个时代的世界观价值观,同样有着极为深刻的联系。</p><h2 id="价值观"><a href="#价值观" class="headerlink" title="价值观"></a>价值观</h2><p>世人在不同时代的价值观,会导致人们对一个历史事件的看法有着极大的差别。时至今日,我们偶时依然秉承着我们深信不疑但是实际上漏洞百出的观念。</p><p>在我上高一的时候,我的班主任便是历史老师。她在第一节课上讲,”history”这个词,就是”his story”。他人的故事,引发我们的深思。她在讲完这个之后,给我们推荐了另外一本书:</p><p><img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAoHCBUSEhgVFRUSEhIREREREhEREhgQEhESGBgZGRgYGBgcIS4lHB4rHxgYJjgmKzAxNTU1HCQ9QDs0Py40NTEBDAwMEA8QHhISHDQrJSQ/NDQ0MTQxNDQxMTY0NDQxNDQ0MTQ0NDQ0NDE0NDQ0NDQxNDQ0NDQ0NDQ0NDE0NDExMf/AABEIAQ4AuwMBIgACEQEDEQH/xAAbAAACAwEBAQAAAAAAAAAAAAAAAQIFBgQDB//EADsQAAICAQMCAgcFBwQCAwAAAAECABEDBBIhBTFBUQYTImFxgZEUMlLB0RUjQnKhorEHYpLhgvEkNEP/xAAaAQEAAgMBAAAAAAAAAAAAAAAAAQIDBAUG/8QAKBEAAgIBAwQBBAMBAAAAAAAAAAECEQMEITEFEkFRExVhcZEUIoEy/9oADAMBAAIRAxEAPwDGeAjuLwHwiJnOPdIe6R3QiMEjDQMjCCpIQiigmhxGEIFCuFxGAgUMxRxGCBiEUYgDhcUIBK4booQB7o90iI6glolvPmfrDefM/WRMIIomRIgSUjBegMiY4GCGKOICFQAhCKAOKEIAoCEYkgDFGYSCooRwgBCAjqAEBGI6gsRkhCEAIXCKCrJCKOKC4oGBiMAcUIQQEIQgBUUcIBGMQgIAQqEcFRQhCCw4RRwBgQhUdQAhACBgBCBhBVkjIyUiYMgSJjMUECgI4QQKOEcADCOEAjCOoQBGEDCAEUcIAoxCEAlC4hHcAYijqEAREdwhBVj/AEkWMlImC4ojJGIwCMcYEKgighHUdQKCEdREQBQhCoAjFGYQBRSUUAIQjAgAIRgQgkI4RwQKFwiqCrJSNSYiguJhI1PRpCoIAR1HUILCAhHCAEDAQMEMjCBhBAoRkRQAMRhHAEI4QgDjiEcEhHCEEMKiqMRXBVjihCQZAaEIjJIHC4riggdx3I3CCSVwuKEALhFGBBDC4rgYVACEKhUAI4o6gBHAR1BIo4VCAAhUIQVaCIyQ/KISC4mkZ6GRqSQRiMkRFUEWK4CFR1BFhCEIJCMGKAgkdwihBFjhc8smdV+8wHuvn6Tk0/UN77SKBNA+N+FyyhJqzXnq8UZKLe7LERyIjlTZCOISUgBACBhJAQhcIKgJG5ISMguSuKOKSQEUIoIHCpDdGDBVMcRjgRBNikGJHYWfK6/rJwEIiW6pOivyPn/CK93f+s5c2R6pty/MgHtLomcmuTcBxdEzNGauqOXqdNLtclNv8lT6m+bPJ8gf8T3wYitkUSovtVk/pGRTqOOe4A7TrRDfHbwuu3eZZPY5+HCu77o7VawD5gH6yc5tGxIKnupI+XcTomrJUz0OGfdBMYjuIGFyDNZKAkbjuBY6hFCCrGIGEVSC4RQMJJASDmgT5AmTkWFivMVCKy4dHLmysCpHY957I1xer4789/KPGlCrl200auNTU23wz0EYiAgJQ20BkS3I+XjJtObNhBI7+FkGTEw5nJK4o6CZUdVye1QJ4UXR48ZYshI9k17u3xlLrmt29xry7CZsMdzl9SytYkqq2eS5SDdmx2vmvrJjVNYPeiDXYH4zxhNhpM4SyTjwyyw9QAYkqQCKO3nm+86R1JP9w+UpBAyksUWbmPqGaCqy/Gux/iH0M9BqkP8AGv1mcgJX4ImwurZV4RpseVWFqQea4npKfpGYAkEgXR5Ncj/3LgTBOPa6OxpNR82NSfICOoo5Q2WOKSikGQRkTJmRIkkEYVHUIBGv+pKK44ICEYhAEZEmSigiRFhM9q2t2P8AuM0Imac2SfM3NjD5OH1eW0Y/kjHEI5sHDCORElAQVAiNYQSKX3S2vGPcSD8blDLbozj2l8eGAmLNG4nQ6Zk7cyT82i0EcUJqHpmO4StbqJUsCu6iw447Gp6L1EfxL8KN3L/G/RrLX4XtZ3Ewqca9QTzI+I/S57LnU9mU/MSrhJeDJHU45cSX7PSIwJnNr3242Purj3mFG3RbJlUYOfrc9Vf8pK5m11Djsx+pnVh6k48j8RMzwPwcvH1aEnUk0XghPPBkLqGIq+anpMDVOjrQmpRUlwwMRESuD2IjuKDlGuTz1DUje5Sf6TNVL/qBIxt/LR998ShE28K2Z57qs7yJekIRwqaPp3REyYWcjKWAAAP7v2327ADRFna9XxyCamU5RmzGBLvp3SFy42a2NK49k7grBkAuhwQCbHINqR7pY+hg5MiM5U4mVRe22G4DdRINfK/aW6s0CKOSBlj13RJgzFUZ2As+2tbfaIAB/iHHevAzr6P0VMyF2Z1ohjwFQoeBTc17TL3HYNxBLKGp7aXKUcN5Hn4djHqMex2XuFJANg2PA2OPpPKQ1exaEnFqS5RqEcEWOQRYMdzg6TkJSvwmh8DzO+aUlTo9bhyfJjU/ZzZOno3i18nv5wfp6tVFl20BVcfP4zsWFyO+Xsl6TC7/AKrcqcnSSez2efvD87nK/TMg8A3wM0BkTLrNI1p9MwS3Vr/TPY8eVGva/BHgTces1jPxyoqiPPnyM0E882JWFMAR7/ylllV20YJ9OmoOMMjp+GZYH4fOeuPPX8CH4qT+ct8nRlItSV+PtCcrdFyeBQ/OvymZZIy8nLnotRjfF/jc7NPlrHuoABSaF0JPT5w4HeyL+PhKb1zLa7lHgRt/6nTpdfsrcqOAtUwcWfDlSDKPFyzcx9QpqL4S3LNlHIHHhwe0p87tZtuQOD2sX4TaegWDB1HVnDlxqEXA+XdjfIjblZAOS549oym0XVVXUOMWiwZ2ffgx43TLnLKSRwvrOWodwPOqkwg48mHVaqGRVB1RmzkPayQfofKeY+M0HR+htqxn2Yzv0yPmyJ65cAXGCQQN6nleb3N2HnN76V6fBrmy6nFjxavTabBgwnMmrGE43LFmYIF9s8qCGPI+6LmY5rk3yfJanTk1zHGcZCbDt20NuyjZCgGuTVkgk0OZ9MPolpF62ukGmyHSvj3ljly7ATjLUCOeD/ulJ0rRYtGMmtZsYxM+v0Wnw50bUbMwoIXKqQwClj2Hb33BUyWk6o+PYBt2JQ2bQu4bixBYC7NkWPd5Sf7Xy7nYMAcmTe/AIY+AI7V8BfbyE2nTOiY+nZs+bO+nz416cmRN+JhjObVGsaNj2n8Ln2QeB2HYZbD0A5dNqNSmfTuulOI5ERcqE+tZgu0MijuvYcfCCUyt1+s9a+4qFZuXIZ2DNZJPtMa79hxOjR9YyYlCrtIV967g3smtvAVgPzlaYoJJLC5GWXSMQZmJo0o4IvuZEpdqsy4cTyzUV5Ojow9lv5hLKRRAvYAfAVJXNKb7nZ6nT4XixqDfBKRZwO7KPiRM1qsrF2BJIDNQJJA5M8BM0cH3OVPrDTpR4+5qftCVe5f+QnO/UUHmf5aYf5mfBkrllhiYpdWyNbJIvB1RPJ+fIDj394j1NBxT37gK+PeUquZ6Lm45B79gaHaT8MTH9Uze1+i1PWUrs39P1jXrSDwb+39ZWPqgQBXbi/d7p56h1Y8E++xXMj4Y+hLqGZLaS/RLV5UfJuCsEJBZTQN+NVHptY+PdsNbgByqtwCD4icpE69B6sNeUOygWExsqFm8AXYHaPeAT8O8zUkc9ycpN+z6H/p1rHwabW67MR6vDhOLESqJvzn2tqkAWb9WPi0revpn0uzXaYlNLqUTJiz4MaIcBcU+J2VbUhty9+QK8xKHrHX82oRMdY8GmwisWmwisaXftEkku5B5YnxJ4uXPoj6ZZOnoUKjU6XICz4GIG0k0xQ81dcqRR90hstGLadHT6FdZCnWZ85zO+p0r4hkXGMrZMnkfC+3LcHxmny9L+yafVaAF875xpcy5Fw4dMlF1G0AOCzDZZoE18J8l6vrBqMrZCmHCHJrHgQJjQWeAB3Pv8ZrfST0xwZtcNbhxOcqYsePANQFCYnXcfWlVJ3MN3srYAIs3wIoo3vwbDHlR/Srhn348XqyNo2WuCzzuv+LymT6xnROlKXxrlB6xrqVmdQDt72jA+75zj9CfSXT6PUPqdTjy5dRbsmTG3tO73vGRWYL4n2h5mwZw5vSrJ9lXToGwkarUalsmPIdzesr2KocDzvmpJBqvSfW4DrtLh1QA0WTQaVsm0uGRmxMEdWBu1IAF3wzWDcpOmqqdK6oUZnxnU6BMbsNrPjXK5UkeBK0SPfKTrPXMmryplypjZseHFgCgOFdEBA3e1uJNmyCPCWnXPSHTNoxpNHp3wYmyrqNQ2V/WNkyKtBV5Psj3nwHA5gGTMI5749QB/Ah+Kn9YLxSb3dHPLTo33m/lH+YsGfCzAerAJNH8IJ90tUwqvKqFNUaFcTDkntTXJ1dDpW5qcZJpHpUKgJKap3mzLaofvH/nb/JnlPfWLWR/53/yZ5CdCPB4qf8A0/8ARCBjhBUVwuIy09HemrqtQmJmKh75DLjNjyLCias17pIKwiKprR6MJ65VDZSh06ZyTjZm4zJjcKEViwKliKHFrfHJOl+iy5VYs7LtzZMQZQwDbVU1tZN+4NuFbeaPauVgyQklcjsSPgZqB6LK2j9emTfkVDkdKIVk5alscEIpNnuTXhz1aj0UwqMFMwOfJjR//kJk9UGDtdHEl0qN4ijxzIsGNLk9zPVczDjiv5R+k1Z9EULYlD5VOUZNwvFmNoFO1FVgbIY8+FdjYlB1vQJp8uxWZ/YDkOgR0LE0jgE+0BtPh37ebYspSXk1P+lGwavMXR8mP7I6fu8D6kqzOm0lUViOFbma70f6NpOmJmU5tW321F0oOXp+dNrsGC7PY5Y7jx7pQf6LgnNquG/+oo9htrXv42t/Ce9Hwmz67iZNLpFIzg/tjQcanUfasvOXxyWbHkL4ggotP6O6bRaHWJj+16nJqNM64/W9NzKUdUcLtYp7NlhySKqZzpeLMvTBhydN+0Y9UzPo9SqE5VzMa3vtO6tq2vYMFA9oE19bz4GXJqnI1O1tPko5NQH033R9zDutDx3oePnPj/Qfta9H1GoXWZdPh0+bF6rGt1kyAAMFawV9p8fbiwbEA+rdH0OlTU3p9PhxD1RBYaDNp8hNi/3jKqbf9vf6TG+mnScB6e/qNKg1Qyo5fTdPz6esS2WJZ08rJ5mm1GStZ9lRNS5XRDVtmydU1eLGoLlNpClq+Px8plOvdbOboravA2q07NqvsrK2v1GpVsdMG++1UQfKCT5SZEiSaRgkamaPR5w6A+NAN8fGZuWXRj7ZHNFT27cVMWaNxv0b/T87hlUfD2LoGFx7THtmnZ6RooesrWZvftP9o/O5XzYanp2PIQzA3tAsMRx8viZ4fsjB5H/mZsR1EVFJnCzdLzSyOUapv2ZcQM1Q6Rh/B/cf1kh0nD+D+5v1k/yYFPpGb2jJzq6dr307jIhG4ce0NwIsGj9B2+HYkTR/szF+BfmW/WP9m4q+4n0Jj+TH0yfpGX2ik1HXM2RArFTSohbb7bBX3i29523VfcXy599P6TahN1HHT5HylGxqy73JLVfNEFl79mPnctvsOMf/AJp/xEl9lT8CD/wWP5MfRK6RPzJGfHXM4wnCrlMbZGcqjMopv4Au6goNkADue898vpNqXu8z85MWWy7Ha2MEIApJUDmyK5IB8J5dSzKrOqhbsLwAKq77SrH+Zni7VnMy41CXbdlq3X8zOHYY2dC5xsyX6t2VF3qLrcPVqQTfJJ5M5ddr2zFWZUDKioWRSpfaAAz2TbUAPl2nKD/gx4xz8pJSjSdD9I00uh1enXEx1GtVcRz7wVXDTBl21YNM/Iu93NVNH07060ODFpcC6TMMWnyrqcn7xT+/CnlAxJYbm3ckdhPnLj5SJgNUb/onppp8eXXarMmY6rWetTGuOigwvVK11RUovPPF8TgPpVhyaPSaF8L49Pgy7tWcLhWyr4MhIPtWzMQRyVAB8sdCCD6T1r/UhAhx6LE53hEy6nWsc2XLjUk7K3cKdzDv2ZqAJucnVvS/S63ROmXT5NPqRWRBpMhTTZc/A3vjPA8zYJoUGBmBE99Ou5lHmwH1Mh7F4R7mkdY6Q57lB8z+QjHRW/EnyszQaXEXdV7b2AJ8gTyfpLPT9KyZE9cqquNCdylgGCAXxYNmv6kcEHjV+aTPQfT9NFf2v9mOHRvNwPkf1nd07QjGSd25iKFCuPEd5ZarGBTKKV037e9e0ykfC1J+c8kTx7fEzHLLJqmbOLRYINSit/yDufhFunofzo3Ic+76zGmbbOsCKAPaRJlBY45DdC4DZK4P2+Ugxgxk0Vse6DvSk+QJ+guRE8OotWJ/5CPrJirkkY8su3G36Mtqfvkg7gSTfnPEGMn/ADFc6iPHydu/ZNVsfOeuHHde9qnPcnjykfC5Dui0Gr3J5UonzBqedyeTITf0+M8wYQnV7ARC4jCSVJDt+X5zs6Wm7Kg99/QXOG5bej63kJ8kP9TKZHUWzY0q7ssV9zRI20hgaIIYHyINg/0nQ+v4ofdJsiyQLIJAphxaj6DynLtkds5yZ63si+T1y5zkNny2izZ8+T4kkkk+ZMgFquIdqjvmvdchk0kqQEd/fQnmT7pPd7N+4wDwVZ//2Q=="></p><p>茅海建老师的《天朝的崩溃》。惭愧,高中时候我一直没有看这本书,直到上了大学那一年抽空看了这本,犹如醍醐灌顶。</p><p>茅海建老师在这本书的序言中,讲了这样一个故事,“琦善卖国”。琦善,晚清重臣,鸦片战争中的主和派,与林则徐等人形成鲜明对比。</p><blockquote><p>原先主剿的琦善在白河口见英军“船坚炮利”,下令撤退炮台守军,并派广东人<a href="https://zh.wikipedia.org/w/index.php?title=%E9%AE%91%E9%B5%AC&action=edit&redlink=1">鲍鹏</a>去<a href="https://zh.wikipedia.org/w/index.php?title=%E7%A9%BF%E9%BC%BB%E6%B4%8B&action=edit&redlink=1">穿鼻洋</a>(<a href="https://zh.wikipedia.org/wiki/%E5%BB%A3%E5%B7%9E">广州</a><a href="https://zh.wikipedia.org/w/index.php?title=%E8%99%8E%E9%96%80%E5%8F%A3&action=edit&redlink=1">虎门口</a>)向英军求和,同时,<a href="https://zh.wikipedia.org/wiki/%E6%9F%A5%E7%90%86%C2%B7%E7%BE%A9%E5%BE%8B">查理·义律</a>步步进逼,更亲身前往<a href="https://zh.wikipedia.org/wiki/%E8%99%8E%E9%96%80">虎门</a>勘测地形,并向琦善提出割地赔款的要求,初时琦善并不敢答应割地的要求。</p></blockquote><p>在当世看来,琦善当然是卖国贼,千刀万剐犹不为过。然而,在序言中,茅海建对于琦善的所作所为做了详尽的考察,从实体的史料,到人物对话录,再到抽象的人物的心里剖析,琦善从一个“卖国贼”的符号,逐渐变成了一个活灵活现的人,仿佛就置身在我们的面前。假若真是如此,我们站在他的面前,难道我们有勇气呵斥他,“你个卖国贼”吗?</p><p>难道我们不会稍微思考一下,为什么他会被称作“卖国贼”的缘故?他真的干了伤天害理之事?如果换做我站在他的位置,看着英国人开着远胜于大清水师的船只叩开国门,我会怎么做。我不是圣人,诚然,为了自己的乌纱帽,我也许会和琦善一样。</p><p>大清上下,如琦善这般人,比比皆是。难道我们可以说,琦善便是一个卖国贼?他难道没有任何能力,仅凭自己的胆小,就要背上卖国的骂名?仔细思考了一下这个问题我们会发现,琦善的审时度势和他背负的罪孽,完全不成正比。那么谁最应该背鸦片战争战败的耻辱名号呢?</p><p>当我们仔细思考了此般问题后,我们确实会发现,“时至今日,我们偶时依然秉承着我们深信不疑但是实际上漏洞百出的观念。”琦善卖国,仅因清朝史官大笔一挥。结合清朝,中国最后的封建王朝这一历史背景,我们不难想到,一个极为重要的价值观念正在发挥作用,这也是茅海建老师在前言中点破的:</p><blockquote><p>亲贤臣,远小人,此先汉所以兴隆也;亲小人,远贤臣,此后汉所以倾颓也</p></blockquote><p>这是中国古代传统的价值观念,即<strong>贤人当政,国家兴盛;小人当政,国之将亡。</strong>仔细思考一下这个论断,这和西方历史的meritocracy,即贤人政治息息相关。然而,如何评价贤人和小人?是因为贤人把持朝政而国家兴盛,还是因为国家兴盛所以把持朝政之人被称作贤人?到底是谁,在操持着这把度人之尺呢?</p><p><strong>是一国之君,在中国,就是皇帝。</strong>若是把持朝政之人导致国家衰亡,则持政大臣必然要背上黑锅。在想明白这一点后,便不难想到,为什么琦善要背上卖国恶名了;因为忠君报国,是中国传统;君主神圣无比,绝无可能犯错;犯错之人,必是周围的小人。想想吧,君主手握大权,中国上下五千年从无一次犯错,如是犯错必是小人当政,从而成为昏君。仔细思考这个逻辑,难道不觉得漏洞百出?实际上这种内阁问责体系问题,正是和中国的君主专制体系息息相关。若是君主被架空权力(君主立宪),那么这种小人贤人论便烟消云散,因为持政之人如犯严重的政治错误,要么被弹劾下台,要么引咎辞职。</p><p>这就是茅海建老师在前言中所讲的,当时我读这段,犹如醍醐灌顶,豁然开朗一般。宫崎市定说的果然不错,即使是在现时,忠君报国的思想依然深入中国文化;戏曲作品,文学艺术中无所不包。然而在君主胡乱指挥之时,没有人想要找到问题的症结所在,犹如房屋中的大象一般。著名的例子有土木堡之变等等。而即使是接受了现代教育的我,也难免被这样的“历史图景”所形成的错觉所诱导。</p><p>在书中的正文部分,茅海建老师逐步向当代主流的鸦片战争研究的价值观念开火;很大一部分原因,也许是因为中国人并不敢直面当时的历史,而拉几个替罪羊钉在历史的耻辱柱上草草了之。没有人会想,若是如日本一般,在黑船事件之后引进新式技术,改革政府会如何;也没有人会想,大清如此高等的哲学教育(儒家思想)下,是否缺失了一些其他教育要素。我们所知道的,只有鸦片战争中,中国的战败应当归咎于不任用林则徐,而任用琦善;然而,若是任用了林则徐又如何?恐怕林则徐就要成为另外一个“卖国贼”了!</p><p>就连当今价值观下,看待如此近代的历史问题都有这般拨云见日的感慨。我们不禁要思考中国历史学的普及到底停留在多早的起步阶段。</p><h2 id="后记"><a href="#后记" class="headerlink" title="后记"></a>后记</h2><p>写这篇文章的原因,很大一部分是自己最近在看理查德·埃文斯的《第三帝国三部曲》。这是我看过的第二本如同《天朝的崩溃》一样的书籍,引经据典,改变我们对德国从一战之后转向法西斯的各种错误历史观念。</p><p>我很佩服历史学家们;他们总是能够看同样的史料,但是跳脱出我们所倚仗的框架。读史可以明智;并不是说,我们要如同囫囵吞枣一般人云亦云地表示如同孤岛历史学家给我们预设好的思路一般的思路途径;而是要站在后人的眼光上,站在巨人的肩膀上,俯视他,放到自己身上试一试,质疑所谓的“合理性”从而改变宫崎正定所说的“历史图景”。批判性思维莫过于此。</p>]]></content>
<categories>
<category>essay</category>
</categories>
<tags>
<tag>whimsical</tag>
</tags>
</entry>
<entry>
<title>屠(ほふり)</title>
<link href="/note/2021.11.17.07/"/>
<url>/note/2021.11.17.07/</url>
<content type="html"><![CDATA[<p>想起2017年的时候去秋叶原,当时厨力很低(笑)。最后是看到了粽子的两张姐妹专辑,“辿/誘”。当时是非常非常喜欢开头的两手呼应的曲子,誘的那首<a href="https://thwiki.cc/%E6%AD%8C%E8%AF%8D:Calling%EF%BC%88%E5%87%8B%E5%8F%B6%E6%A3%95%EF%BC%89">Calling</a>简直是喜欢到爆,后来单曲循环了一百多次才听腻吧。</p><p>我觉得RD和神主一样是很富创造力的人,所谓活于幻想中之人。听RD的曲子,无论是什么曲风,爵士,古典,blues,(我可能对流行音乐缺乏足够的词汇认识),纯音,等等。我觉得一个人可以写出如此多样化的曲子,并且还能为此填上颇需要点心思的词语,真的是很难的事情呐。ZUN做游戏的时候估计也是这种感觉。</p><iframe width="560" height="315" src="https://www.youtube.com/embed/lFY1jwDN1jY" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe><center>专辑“屠”中的《墓標》。</center><p>“屠”这张专辑,封面就很瘆人。这个字本身就蕴含着令人不快的意味,加上封面的黑白红白。如果真的去购买了这张专辑,会发现笑脸的背后放着两把菜刀,不知道RD是怎么想的。</p><p>这张专辑是基于《蓬莱传说》中的“正直者之死”的零碎故事写成的,而正直者之死本身又是基于<strong>十个小兵人</strong>这个著名英国童谣改成的,阿加莎克里斯蒂也曾经为这个故事写了著名的《无人生还》,并且很大程度影响了后世对这个传奇故事的理解,比如电影《致命ID》。</p><p>我们可能永远无法对这个故事的内容达成一致意见,但是我们都很同意这是一个令人不快的故事。</p><p><a href="https://www.youtube.com/playlist?list=PLYkx9izzi4WcKtSfWJRSPO01xixFu-5ql">https://www.youtube.com/playlist?list=PLYkx9izzi4WcKtSfWJRSPO01xixFu-5ql</a></p>]]></content>
<categories>
<category>note</category>
</categories>
<tags>
<tag>whimsical</tag>
</tags>
</entry>
<entry>
<title>手搓UART</title>
<link href="/tech/2021.08.27.01/"/>
<url>/tech/2021.08.27.01/</url>
<content type="html"><![CDATA[<h2 id="起因"><a href="#起因" class="headerlink" title="起因"></a>起因</h2><p>大三了。从原本的ISRL实验室里逃了出来,属实是喘不过气。没有人带+教授不好约+问题无法解决,在这样的实验室呆着怎么能做好项目呢(恼)</p><p>一次偶然的机会,发现了NBS里面隐藏的CICS实验室。环境非常好,并且supervisor非常和蔼可亲。总算能静下心来做点有意义的东西了。</p><p>进实验室做的第一个项目是用现有的FPGA板子,实现UART协议。每周去一次,大概三周把这玩意搞下来了,非常有趣。</p><p>本文部分参考于<a href="https://www.cnblogs.com/liujinggang/p/9535366.html">https://www.cnblogs.com/liujinggang/p/9535366.html</a></p><h2 id="什么是UART"><a href="#什么是UART" class="headerlink" title="什么是UART"></a>什么是UART</h2><p>UART,即 <strong>universal asynchronous receiver-transmitter</strong>,是最简单也最常见的串口通信协议。从这个名字可以看出,这个协议是非同步的,并且支持全双工通信。</p><p>虽然说是非同步的,但是这不代表两个通信设备不需要时钟连接。时钟线,发送线,接收线,就构成了最基本的UART通讯线,只需要三根。因为是串行通讯设备,所以一般来说UART的速度很慢。但是对于简单的物联网IoT设备来说,一秒钟10kB/s级别的传输已经非常足够了。</p><p>对于UART协议而言,一个byte的数据会串行化之后,分成八份发送。通常,数据线是处于高电平状态的,在开始发送的时候会将电平拉低。之后会依次发送八个对应的bit,并在发送完成之后将电平拉高。这就是最基础的UART传输方式了。</p><p>而传输速度上,一个重要的参数是波特率(Baud Rate)。不同的波特率决定了不同的传输速率。标准的波特率包括了:9600,19200,38400,57600,115200. 波特率的单位是bps,即bit per second。如果说一秒钟能够发送115200bits的信息,那么信息的传输速率就是115200/1000/8=14.4kB/s。这一般也是UART协议能够达到的最高传输速率。然而,真实情况并不能达到这么高的速率。实际上,假如说波特率为115200bits,这就说明了一个bit的持续事件为1/115200=8.7us,那么发送一个byte所需的时间就是其的八倍,69us。但是,别忘了刚才提到的开始位和停止位;为了达成可靠的传输,需要加上两个bit位数的包头和包尾;这样发送一个byte就需要8.7us的十倍即87us的时间。因此,在一秒钟的时间内,这样的循环可以执行1s/87us=11,494.25次,也就是说最大传输速率降低到了11.49kB/s.实际情况下,传输速率可能会比这更低。</p><h2 id="verilog实现"><a href="#verilog实现" class="headerlink" title="verilog实现"></a>verilog实现</h2><p>接下来讨论如何使用verilog和Nexyz DDR4 FPGA来实现一个标准的UART协议。</p><h3 id="时钟发生器"><a href="#时钟发生器" class="headerlink" title="时钟发生器"></a>时钟发生器</h3><p>对于一块比较标准的FPGA板子来说,我们假设FPGA的基准频率是50MHz,即每秒钟完成五千万次时钟周期,每个周期20ns。那么要在一秒钟发送115200bits,就相当于说每个bit占用了8.7us.相除得到每个bit需要占用8.7us/20ns=435个周期。因此,如果要完成一次成功的发送,使能信号应该每隔435个周期置1.</p><p>我们的目标是实现这样的一个模块,他接收标准的时钟,重置信号,以及发送以及接收器的使能信号,产生发送器和接收器的发送与读取时钟信号。</p><figure class="highlight verilog"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br></pre></td><td class="code"><pre><code class="hljs verilog"><span class="hljs-keyword">module</span> baudrate_gen<br>(<br> <span class="hljs-keyword">input</span> I_clk , <span class="hljs-comment">// 系统50MHz时钟</span><br> <span class="hljs-keyword">input</span> I_rst_n , <span class="hljs-comment">// 系统全局复位</span><br> <span class="hljs-keyword">input</span> I_bps_tx_clk_en , <span class="hljs-comment">// 串口发送模块波特率时钟使能信号</span><br> <span class="hljs-keyword">input</span> I_bps_rx_clk_en , <span class="hljs-comment">// 串口接收模块波特率时钟使能信号</span><br> <span class="hljs-keyword">output</span> O_bps_tx_clk , <span class="hljs-comment">// 发送模块波特率产生时钟</span><br> <span class="hljs-keyword">output</span> O_bps_rx_clk <span class="hljs-comment">// 接收模块波特率产生时钟</span><br>);<br><br><span class="hljs-keyword">parameter</span> C_BPS9600 = <span class="hljs-number">5207</span> , <span class="hljs-comment">//波特率为9600bps</span><br> C_BPS19200 = <span class="hljs-number">2603</span> , <span class="hljs-comment">//波特率为19200bps</span><br> C_BPS38400 = <span class="hljs-number">1301</span> , <span class="hljs-comment">//波特率为38400bps</span><br> C_BPS57600 = <span class="hljs-number">867</span> , <span class="hljs-comment">//波特率为57600bps</span><br> C_BPS115200 = <span class="hljs-number">433</span> ; <span class="hljs-comment">//波特率为115200bps</span><br> <br><span class="hljs-keyword">parameter</span> C_BPS_SELECT = C_BPS115200 ; <span class="hljs-comment">//波特率选择</span><br> <br><span class="hljs-comment">//计数器</span><br><span class="hljs-keyword">reg</span> [<span class="hljs-number">12</span>:<span class="hljs-number">0</span>] R_bps_tx_cnt ;<br><span class="hljs-keyword">reg</span> [<span class="hljs-number">12</span>:<span class="hljs-number">0</span>] R_bps_rx_cnt ;<br><br><span class="hljs-comment">//触发block,用于发送器计数器的启动</span><br><span class="hljs-keyword">always</span> @(<span class="hljs-keyword">posedge</span> I_clk <span class="hljs-keyword">or</span> <span class="hljs-keyword">negedge</span> I_rst_n)<br><span class="hljs-keyword">begin</span><br> <span class="hljs-keyword">if</span>(!I_rst_n)<br> R_bps_tx_cnt <= <span class="hljs-number">13'd0</span> ;<br> <span class="hljs-comment">//如果计数器的值为1,那么就重置计数器</span><br> <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(I_bps_tx_clk_en == <span class="hljs-number">1'b1</span>)<br> <span class="hljs-keyword">begin</span><br> <span class="hljs-keyword">if</span>(R_bps_tx_cnt == C_BPS_SELECT)<br> R_bps_tx_cnt <= <span class="hljs-number">13'd0</span> ;<br> <span class="hljs-keyword">else</span><br> R_bps_tx_cnt <= R_bps_tx_cnt + <span class="hljs-number">1'b1</span> ; <br> <span class="hljs-keyword">end</span> <br> <span class="hljs-keyword">else</span><br> R_bps_tx_cnt <= <span class="hljs-number">13'd0</span> ; <br><span class="hljs-keyword">end</span><br><br><span class="hljs-comment">//如果计数器为1,那么输出一次发送信号的脉冲</span><br><span class="hljs-keyword">assign</span> O_bps_tx_clk = (R_bps_tx_cnt == <span class="hljs-number">13'd1</span>) ? <span class="hljs-number">1'b1</span> : <span class="hljs-number">1'b0</span> ;<br><span class="hljs-comment">//接收器也是同样的逻辑</span><br><span class="hljs-keyword">always</span> @(<span class="hljs-keyword">posedge</span> I_clk <span class="hljs-keyword">or</span> <span class="hljs-keyword">negedge</span> I_rst_n)<br><span class="hljs-keyword">begin</span><br> <span class="hljs-keyword">if</span>(!I_rst_n)<br> R_bps_rx_cnt <= <span class="hljs-number">13'd0</span> ;<br> <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(I_bps_rx_clk_en == <span class="hljs-number">1'b1</span>)<br> <span class="hljs-keyword">begin</span><br> <span class="hljs-keyword">if</span>(R_bps_rx_cnt == C_BPS_SELECT)<br> R_bps_rx_cnt <= <span class="hljs-number">13'd0</span> ;<br> <span class="hljs-keyword">else</span><br> R_bps_rx_cnt <= R_bps_rx_cnt + <span class="hljs-number">1'b1</span> ; <br> <span class="hljs-keyword">end</span> <br> <span class="hljs-keyword">else</span><br> R_bps_rx_cnt <= <span class="hljs-number">13'd0</span> ; <br><span class="hljs-keyword">end</span><br><br><span class="hljs-keyword">assign</span> O_bps_rx_clk = (R_bps_rx_cnt == C_BPS_SELECT >> <span class="hljs-number">1'b1</span>) ? <span class="hljs-number">1'b1</span> : <span class="hljs-number">1'b0</span> ;<br><br><span class="hljs-keyword">endmodule</span><br></code></pre></td></tr></table></figure><p>这样就完成了接收和发送时钟的基本逻辑。</p><h3 id="发送器"><a href="#发送器" class="headerlink" title="发送器"></a>发送器</h3><p>对于发送器而言,他要做的事情就是根据时钟发生器发来的信号来发送自己的bit。此外,还需要额外的使能信号来启动。</p><p>发送器有如下的输入和输出:</p><table><thead><tr><th>输入INPUT</th><th>输出OUTPUT</th></tr></thead><tbody><tr><td>时钟信号<br />全局复位<br />发送使能信号<br />发送时钟<br />并行数据流</td><td>串行数据流<br />发送使能信号<br />发送结束</td></tr></tbody></table><p>其中,输出部分的发送使能信号与时钟发生器的I_bps_tx_clk_en相连,即如果这个值不是高电平则时钟发生器无需为发送器产生发送时钟。这个逻辑也适用于接收器。</p><p>verilog代码如下:</p><figure class="highlight verilog"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br></pre></td><td class="code"><pre><code class="hljs verilog"><span class="hljs-keyword">module</span> uart_txd<br>(<br> <span class="hljs-keyword">input</span> I_clk , <span class="hljs-comment">// 系统50MHz时钟</span><br> <span class="hljs-keyword">input</span> I_rst_n , <span class="hljs-comment">// 系统全局复位</span><br> <span class="hljs-keyword">input</span> I_tx_start , <span class="hljs-comment">// 发送使能信号</span><br> <span class="hljs-keyword">input</span> I_bps_tx_clk , <span class="hljs-comment">// 发送波特率时钟</span><br> <span class="hljs-keyword">input</span> [<span class="hljs-number">7</span>:<span class="hljs-number">0</span>] I_para_data , <span class="hljs-comment">// 要发送的并行数据</span><br> <span class="hljs-keyword">output</span> <span class="hljs-keyword">reg</span> O_rs232_txd , <span class="hljs-comment">// 发送的串行数据,在硬件上与串口相连</span><br> <span class="hljs-keyword">output</span> <span class="hljs-keyword">reg</span> O_bps_tx_clk_en , <span class="hljs-comment">// 波特率时钟使能信号</span><br> <span class="hljs-keyword">output</span> <span class="hljs-keyword">reg</span> O_tx_done <span class="hljs-comment">// 发送完成的标志</span><br>);<br><br><span class="hljs-keyword">reg</span> [<span class="hljs-number">3</span>:<span class="hljs-number">0</span>] R_state ;<br><br><span class="hljs-keyword">reg</span> R_transmiting ; <span class="hljs-comment">// 数据正在发送标志</span><br><br><span class="hljs-comment">/////////////////////////////////////////////////////////////////////////////</span><br><span class="hljs-comment">// 产生发送 R_transmiting 标志位</span><br><span class="hljs-comment">/////////////////////////////////////////////////////////////////////////////</span><br><span class="hljs-keyword">always</span> @(<span class="hljs-keyword">posedge</span> I_clk <span class="hljs-keyword">or</span> <span class="hljs-keyword">negedge</span> I_rst_n)<br><span class="hljs-keyword">begin</span><br> <span class="hljs-keyword">if</span>(!I_rst_n)<br> R_transmiting <= <span class="hljs-number">1'b0</span> ;<br> <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(O_tx_done)<br> R_transmiting <= <span class="hljs-number">1'b0</span> ;<br> <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(I_tx_start)<br> R_transmiting <= <span class="hljs-number">1'b1</span> ; <br><span class="hljs-keyword">end</span><br><br><span class="hljs-comment">/////////////////////////////////////////////////////////////////////////////</span><br><span class="hljs-comment">// 发送数据状态机</span><br><span class="hljs-comment">/////////////////////////////////////////////////////////////////////////////</span><br><span class="hljs-keyword">always</span> @(<span class="hljs-keyword">posedge</span> I_clk <span class="hljs-keyword">or</span> <span class="hljs-keyword">negedge</span> I_rst_n)<br><span class="hljs-keyword">begin</span><br> <span class="hljs-keyword">if</span>(!I_rst_n)<br> <span class="hljs-keyword">begin</span><br> R_state <= <span class="hljs-number">4'd0</span> ;<br> O_rs232_txd <= <span class="hljs-number">1'b1</span> ; <br> O_tx_done <= <span class="hljs-number">1'b0</span> ;<br> O_bps_tx_clk_en <= <span class="hljs-number">1'b0</span> ; <span class="hljs-comment">// 关掉波特率时钟使能信号</span><br> <span class="hljs-keyword">end</span> <br> <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(R_transmiting) <span class="hljs-comment">// 检测发送标志被拉高,准备发送数据</span><br> <span class="hljs-keyword">begin</span><br> O_bps_tx_clk_en <= <span class="hljs-number">1'b1</span> ; <span class="hljs-comment">// 发送数据前的第一件事就是打开波特率时钟使能信号</span><br> <span class="hljs-keyword">if</span>(I_bps_tx_clk) <span class="hljs-comment">// 在波特率时钟的控制下把数据通过一个状态机发送出去,并产生发送完成信号</span><br> <span class="hljs-keyword">begin</span><br> <span class="hljs-keyword">case</span>(R_state)<br> <span class="hljs-number">4'd0</span> : <span class="hljs-comment">// 发送起始位</span><br> <span class="hljs-keyword">begin</span><br> O_rs232_txd <= <span class="hljs-number">1'b0</span> ;<br> O_tx_done <= <span class="hljs-number">1'b0</span> ; <br> R_state <= R_state + <span class="hljs-number">1'b1</span> ;<br> <span class="hljs-keyword">end</span><br> <span class="hljs-number">4'd1</span> : <span class="hljs-comment">// 发送 I_para_data[0]</span><br> <span class="hljs-keyword">begin</span><br> O_rs232_txd <= I_para_data[<span class="hljs-number">0</span>] ;<br> O_tx_done <= <span class="hljs-number">1'b0</span> ; <br> R_state <= R_state + <span class="hljs-number">1'b1</span> ;<br> <span class="hljs-keyword">end</span> <br> <span class="hljs-number">4'd2</span> : <span class="hljs-comment">// 发送 I_para_data[1]</span><br> <span class="hljs-keyword">begin</span><br> O_rs232_txd <= I_para_data[<span class="hljs-number">1</span>] ;<br> O_tx_done <= <span class="hljs-number">1'b0</span> ; <br> R_state <= R_state + <span class="hljs-number">1'b1</span> ;<br> <span class="hljs-keyword">end</span><br> <span class="hljs-number">4'd3</span> : <span class="hljs-comment">// 发送 I_para_data[2]</span><br> <span class="hljs-keyword">begin</span><br> O_rs232_txd <= I_para_data[<span class="hljs-number">2</span>] ;<br> O_tx_done <= <span class="hljs-number">1'b0</span> ; <br> R_state <= R_state + <span class="hljs-number">1'b1</span> ;<br> <span class="hljs-keyword">end</span><br> <span class="hljs-number">4'd4</span> : <span class="hljs-comment">// 发送 I_para_data[3]</span><br> <span class="hljs-keyword">begin</span><br> O_rs232_txd <= I_para_data[<span class="hljs-number">3</span>] ;<br> O_tx_done <= <span class="hljs-number">1'b0</span> ; <br> R_state <= R_state + <span class="hljs-number">1'b1</span> ;<br> <span class="hljs-keyword">end</span> <br> <span class="hljs-number">4'd5</span> : <span class="hljs-comment">// 发送 I_para_data[4]</span><br> <span class="hljs-keyword">begin</span><br> O_rs232_txd <= I_para_data[<span class="hljs-number">4</span>] ;<br> O_tx_done <= <span class="hljs-number">1'b0</span> ; <br> R_state <= R_state + <span class="hljs-number">1'b1</span> ;<br> <span class="hljs-keyword">end</span><br> <span class="hljs-number">4'd6</span> : <span class="hljs-comment">// 发送 I_para_data[5]</span><br> <span class="hljs-keyword">begin</span><br> O_rs232_txd <= I_para_data[<span class="hljs-number">5</span>] ;<br> O_tx_done <= <span class="hljs-number">1'b0</span> ; <br> R_state <= R_state + <span class="hljs-number">1'b1</span> ;<br> <span class="hljs-keyword">end</span><br> <span class="hljs-number">4'd7</span> : <span class="hljs-comment">// 发送 I_para_data[6]</span><br> <span class="hljs-keyword">begin</span><br> O_rs232_txd <= I_para_data[<span class="hljs-number">6</span>] ;<br> O_tx_done <= <span class="hljs-number">1'b0</span> ; <br> R_state <= R_state + <span class="hljs-number">1'b1</span> ;<br> <span class="hljs-keyword">end</span><br> <span class="hljs-number">4'd8</span> : <span class="hljs-comment">// 发送 I_para_data[7]</span><br> <span class="hljs-keyword">begin</span><br> O_rs232_txd <= I_para_data[<span class="hljs-number">7</span>] ;<br> O_tx_done <= <span class="hljs-number">1'b0</span> ; <br> R_state <= R_state + <span class="hljs-number">1'b1</span> ;<br> <span class="hljs-keyword">end</span> <br> <span class="hljs-number">4'd9</span> : <span class="hljs-comment">// 发送 停止位</span><br> <span class="hljs-keyword">begin</span><br> O_rs232_txd <= <span class="hljs-number">1'b1</span> ;<br> O_tx_done <= <span class="hljs-number">1'b1</span> ; <br> R_state <= <span class="hljs-number">4'd0</span> ;<br> <span class="hljs-keyword">end</span><br> <span class="hljs-keyword">default</span> :R_state <= <span class="hljs-number">4'd0</span> ;<br> <span class="hljs-keyword">endcase</span><br> <span class="hljs-keyword">end</span><br> <span class="hljs-keyword">end</span><br> <span class="hljs-keyword">else</span><br> <span class="hljs-keyword">begin</span> <br> O_bps_tx_clk_en <= <span class="hljs-number">1'b0</span> ; <span class="hljs-comment">// 一帧数据发送完毕以后就关掉波特率时钟使能信号 </span><br> R_state <= <span class="hljs-number">4'd0</span> ; <br> O_tx_done <= <span class="hljs-number">1'b0</span> ; <br> O_rs232_txd <= <span class="hljs-number">1'b1</span> ; <br> <span class="hljs-keyword">end</span> <br><span class="hljs-keyword">end</span> <br><br><span class="hljs-keyword">endmodule</span><br></code></pre></td></tr></table></figure><h3 id="接收器"><a href="#接收器" class="headerlink" title="接收器"></a>接收器</h3><p>对于接收器而言,它需要这些IO:</p><table><thead><tr><th>输入INPUT</th><th>输出OUTPUT</th></tr></thead><tbody><tr><td>时钟信号<br />全局复位<br />接收使能信号<br />接收时钟<br />串行数据流</td><td>并行数据流<br />接收使能信号<br />发送结束</td></tr></tbody></table><p>可以看到,发送器和接收器是对称的,在串并行的程度上,以及在信号处理的方面。</p><p>然而,对于接收器而言,还有一段逻辑需要处理。接收使能信号并不像发送使能信号那样,想发就置1.还记得关于UART设定的讨论吗?在没有发送信息的时候,接收线是高电平。在开始接收到信息时,电平置0.所以对于接收器来说,需要一个逻辑模块来判断接收使能信号是否为1.</p><figure class="highlight verilog"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br></pre></td><td class="code"><pre><code class="hljs verilog"><span class="hljs-comment">////////////////////////////////////////////////////////////////////////////////</span><br><span class="hljs-comment">// 功能:把 I_rs232_rxd 打的前两拍,是为了消除亚稳态</span><br><span class="hljs-comment">// 把 I_rs232_rxd 打的后两拍,是为了产生下降沿标志位</span><br><span class="hljs-comment">////////////////////////////////////////////////////////////////////////////////</span><br><span class="hljs-keyword">always</span> @(<span class="hljs-keyword">posedge</span> I_clk <span class="hljs-keyword">or</span> <span class="hljs-keyword">negedge</span> I_rst_n)<br><span class="hljs-keyword">begin</span><br> <span class="hljs-keyword">if</span>(!I_rst_n)<br> <span class="hljs-keyword">begin</span><br> R_rs232_rx_reg0 <= <span class="hljs-number">1'b0</span> ;<br> R_rs232_rx_reg1 <= <span class="hljs-number">1'b0</span> ;<br> R_rs232_rx_reg2 <= <span class="hljs-number">1'b0</span> ;<br> R_rs232_rx_reg3 <= <span class="hljs-number">1'b0</span> ;<br> <span class="hljs-keyword">end</span> <br> <span class="hljs-keyword">else</span><br> <span class="hljs-keyword">begin</span> <br> R_rs232_rx_reg0 <= I_rs232_rxd ;<br> R_rs232_rx_reg1 <= R_rs232_rx_reg0 ; <br> R_rs232_rx_reg2 <= R_rs232_rx_reg1 ; <br> R_rs232_rx_reg3 <= R_rs232_rx_reg2 ; <br> <span class="hljs-keyword">end</span> <br><span class="hljs-keyword">end</span><br><span class="hljs-comment">// 产生I_rs232_rxd信号的下降沿标志位</span><br><span class="hljs-keyword">assign</span> W_rs232_rxd_neg = (~R_rs232_rx_reg2) & R_rs232_rx_reg3 ;<br></code></pre></td></tr></table></figure><p>如果接收使能信号一直是高电平,那么要开启接收器的方法就是观察这里的W_rs232_rxd_neg是否被置1.由于一个bit占用的周期数相比四个周期大得多,所以中间产生的时钟偏移可以忽略不计。</p><p>完整的接收器代码如下。</p><figure class="highlight verilog"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br><span class="line">140</span><br><span class="line">141</span><br><span class="line">142</span><br><span class="line">143</span><br><span class="line">144</span><br><span class="line">145</span><br><span class="line">146</span><br><span class="line">147</span><br><span class="line">148</span><br><span class="line">149</span><br><span class="line">150</span><br><span class="line">151</span><br><span class="line">152</span><br><span class="line">153</span><br><span class="line">154</span><br></pre></td><td class="code"><pre><code class="hljs verilog"><span class="hljs-keyword">module</span> uart_rxd<br>(<br> <span class="hljs-keyword">input</span> I_clk , <span class="hljs-comment">// 系统50MHz时钟</span><br> <span class="hljs-keyword">input</span> I_rst_n , <span class="hljs-comment">// 系统全局复位</span><br> <span class="hljs-keyword">input</span> I_rx_start , <span class="hljs-comment">// 接收使能信号</span><br> <span class="hljs-keyword">input</span> I_bps_rx_clk , <span class="hljs-comment">// 接收波特率时钟</span><br> <span class="hljs-keyword">input</span> I_rs232_rxd , <span class="hljs-comment">// 接收的串行数据,在硬件上与串口相连 </span><br> <span class="hljs-keyword">output</span> <span class="hljs-keyword">reg</span> O_bps_rx_clk_en , <span class="hljs-comment">// 波特率时钟使能信号</span><br> <span class="hljs-keyword">output</span> <span class="hljs-keyword">reg</span> O_rx_done , <span class="hljs-comment">// 接收完成标志</span><br> <span class="hljs-keyword">output</span> <span class="hljs-keyword">reg</span> [<span class="hljs-number">7</span>:<span class="hljs-number">0</span>] O_para_data <span class="hljs-comment">// 接收到的8-bit并行数据</span><br>);<br><br><span class="hljs-keyword">reg</span> R_rs232_rx_reg0 ;<br><span class="hljs-keyword">reg</span> R_rs232_rx_reg1 ;<br><span class="hljs-keyword">reg</span> R_rs232_rx_reg2 ;<br><span class="hljs-keyword">reg</span> R_rs232_rx_reg3 ;<br><br><span class="hljs-keyword">reg</span> R_receiving ;<br><br><span class="hljs-keyword">reg</span> [<span class="hljs-number">3</span>:<span class="hljs-number">0</span>] R_state ;<br><span class="hljs-keyword">reg</span> [<span class="hljs-number">7</span>:<span class="hljs-number">0</span>] R_para_data_reg ;<br><br><span class="hljs-keyword">wire</span> W_rs232_rxd_neg ;<br><br><span class="hljs-comment">////////////////////////////////////////////////////////////////////////////////</span><br><span class="hljs-comment">// 功能:把 I_rs232_rxd 打的前两拍,是为了消除亚稳态</span><br><span class="hljs-comment">// 把 I_rs232_rxd 打的后两拍,是为了产生下降沿标志位</span><br><span class="hljs-comment">////////////////////////////////////////////////////////////////////////////////</span><br><span class="hljs-keyword">always</span> @(<span class="hljs-keyword">posedge</span> I_clk <span class="hljs-keyword">or</span> <span class="hljs-keyword">negedge</span> I_rst_n)<br><span class="hljs-keyword">begin</span><br> <span class="hljs-keyword">if</span>(!I_rst_n)<br> <span class="hljs-keyword">begin</span><br> R_rs232_rx_reg0 <= <span class="hljs-number">1'b0</span> ;<br> R_rs232_rx_reg1 <= <span class="hljs-number">1'b0</span> ;<br> R_rs232_rx_reg2 <= <span class="hljs-number">1'b0</span> ;<br> R_rs232_rx_reg3 <= <span class="hljs-number">1'b0</span> ;<br> <span class="hljs-keyword">end</span> <br> <span class="hljs-keyword">else</span><br> <span class="hljs-keyword">begin</span> <br> R_rs232_rx_reg0 <= I_rs232_rxd ;<br> R_rs232_rx_reg1 <= R_rs232_rx_reg0 ; <br> R_rs232_rx_reg2 <= R_rs232_rx_reg1 ; <br> R_rs232_rx_reg3 <= R_rs232_rx_reg2 ; <br> <span class="hljs-keyword">end</span> <br><span class="hljs-keyword">end</span><br><span class="hljs-comment">// 产生I_rs232_rxd信号的下降沿标志位</span><br><span class="hljs-keyword">assign</span> W_rs232_rxd_neg = (~R_rs232_rx_reg2) & R_rs232_rx_reg3 ;<br><br><span class="hljs-comment">////////////////////////////////////////////////////////////////////////////////</span><br><span class="hljs-comment">// 功能:产生发送信号R_receiving</span><br><span class="hljs-comment">////////////////////////////////////////////////////////////////////////////////</span><br><span class="hljs-keyword">always</span> @(<span class="hljs-keyword">posedge</span> I_clk <span class="hljs-keyword">or</span> <span class="hljs-keyword">negedge</span> I_rst_n)<br><span class="hljs-keyword">begin</span><br> <span class="hljs-keyword">if</span>(!I_rst_n)<br> R_receiving <= <span class="hljs-number">1'b0</span> ;<br> <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(O_rx_done)<br> R_receiving <= <span class="hljs-number">1'b0</span> ;<br> <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(I_rx_start && W_rs232_rxd_neg)<br> R_receiving <= <span class="hljs-number">1'b1</span> ; <br><span class="hljs-keyword">end</span><br><br><span class="hljs-comment">////////////////////////////////////////////////////////////////////////////////</span><br><span class="hljs-comment">// 功能:用状态机把串行的输入数据接收,并转化为并行数据输出</span><br><span class="hljs-comment">////////////////////////////////////////////////////////////////////////////////</span><br><span class="hljs-keyword">always</span> @(<span class="hljs-keyword">posedge</span> I_clk <span class="hljs-keyword">or</span> <span class="hljs-keyword">negedge</span> I_rst_n)<br><span class="hljs-keyword">begin</span><br> <span class="hljs-keyword">if</span>(!I_rst_n)<br> <span class="hljs-keyword">begin</span><br> O_rx_done <= <span class="hljs-number">1'b0</span> ; <br> R_state <= <span class="hljs-number">4'd0</span> ;<br> R_para_data_reg <= <span class="hljs-number">8'd0</span> ;<br> O_bps_rx_clk_en <= <span class="hljs-number">1'b0</span> ;<br> <span class="hljs-keyword">end</span> <br> <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(R_receiving)<br> <span class="hljs-keyword">begin</span><br> O_bps_rx_clk_en <= <span class="hljs-number">1'b1</span> ; <span class="hljs-comment">// 打开波特率时钟使能信号</span><br> <span class="hljs-keyword">if</span>(I_bps_rx_clk)<br> <span class="hljs-keyword">begin</span><br> <span class="hljs-keyword">case</span>(R_state)<br> <span class="hljs-number">4'd0</span> : <span class="hljs-comment">// 接收起始位,但不保存</span><br> <span class="hljs-keyword">begin</span><br> R_para_data_reg <= <span class="hljs-number">8'd0</span> ;<br> O_rx_done <= <span class="hljs-number">1'b0</span> ; <br> R_state <= R_state + <span class="hljs-number">1'b1</span> ;<br> <span class="hljs-keyword">end</span><br> <span class="hljs-number">4'd1</span> : <span class="hljs-comment">// 接收第0位,保存到R_para_data_reg[0]</span><br> <span class="hljs-keyword">begin</span><br> R_para_data_reg[<span class="hljs-number">0</span>] <= I_rs232_rxd ;<br> O_rx_done <= <span class="hljs-number">1'b0</span> ; <br> R_state <= R_state + <span class="hljs-number">1'b1</span> ;<br> <span class="hljs-keyword">end</span><br> <span class="hljs-number">4'd2</span> : <span class="hljs-comment">// 接收第1位,保存到R_para_data_reg[1]</span><br> <span class="hljs-keyword">begin</span><br> R_para_data_reg[<span class="hljs-number">1</span>] <= I_rs232_rxd ;<br> O_rx_done <= <span class="hljs-number">1'b0</span> ; <br> R_state <= R_state + <span class="hljs-number">1'b1</span> ;<br> <span class="hljs-keyword">end</span><br> <span class="hljs-number">4'd3</span> : <span class="hljs-comment">// 接收第2位,保存到R_para_data_reg[2]</span><br> <span class="hljs-keyword">begin</span><br> R_para_data_reg[<span class="hljs-number">2</span>] <= I_rs232_rxd ;<br> O_rx_done <= <span class="hljs-number">1'b0</span> ; <br> R_state <= R_state + <span class="hljs-number">1'b1</span> ;<br> <span class="hljs-keyword">end</span> <br> <span class="hljs-number">4'd4</span> : <span class="hljs-comment">// 接收第3位,保存到R_para_data_reg[3]</span><br> <span class="hljs-keyword">begin</span><br> R_para_data_reg[<span class="hljs-number">3</span>] <= I_rs232_rxd ;<br> O_rx_done <= <span class="hljs-number">1'b0</span> ; <br> R_state <= R_state + <span class="hljs-number">1'b1</span> ;<br> <span class="hljs-keyword">end</span> <br> <span class="hljs-number">4'd5</span> : <span class="hljs-comment">// 接收第4位,保存到R_para_data_reg[4]</span><br> <span class="hljs-keyword">begin</span><br> R_para_data_reg[<span class="hljs-number">4</span>] <= I_rs232_rxd ;<br> O_rx_done <= <span class="hljs-number">1'b0</span> ; <br> R_state <= R_state + <span class="hljs-number">1'b1</span> ;<br> <span class="hljs-keyword">end</span><br> <span class="hljs-number">4'd6</span> : <span class="hljs-comment">// 接收第5位,保存到R_para_data_reg[5]</span><br> <span class="hljs-keyword">begin</span><br> R_para_data_reg[<span class="hljs-number">5</span>] <= I_rs232_rxd ;<br> O_rx_done <= <span class="hljs-number">1'b0</span> ; <br> R_state <= R_state + <span class="hljs-number">1'b1</span> ;<br> <span class="hljs-keyword">end</span><br> <span class="hljs-number">4'd7</span> :<span class="hljs-comment">// 接收第6位,保存到R_para_data_reg[6]</span><br> <span class="hljs-keyword">begin</span><br> R_para_data_reg[<span class="hljs-number">6</span>] <= I_rs232_rxd ;<br> O_rx_done <= <span class="hljs-number">1'b0</span> ; <br> R_state <= R_state + <span class="hljs-number">1'b1</span> ;<br> <span class="hljs-keyword">end</span><br> <span class="hljs-number">4'd8</span> : <span class="hljs-comment">// 接收第7位,保存到R_para_data_reg[7]</span><br> <span class="hljs-keyword">begin</span><br> R_para_data_reg[<span class="hljs-number">7</span>] <= I_rs232_rxd ;<br> O_rx_done <= <span class="hljs-number">1'b0</span> ; <br> R_state <= R_state + <span class="hljs-number">1'b1</span> ;<br> <span class="hljs-keyword">end</span> <br> <span class="hljs-number">4'd9</span> : <span class="hljs-comment">// 接收停止位,但不保存,并把R_para_data_reg给输出</span><br> <span class="hljs-keyword">begin</span><br> O_para_data <= R_para_data_reg ;<br> O_rx_done <= <span class="hljs-number">1'b1</span> ; <br> R_state <= <span class="hljs-number">4'd0</span> ;<br> <span class="hljs-keyword">end</span> <br> <br> <span class="hljs-keyword">default</span>:R_state <= <span class="hljs-number">4'd0</span> ; <br> <span class="hljs-keyword">endcase</span> <br> <span class="hljs-keyword">end</span><br> <span class="hljs-keyword">end</span><br> <span class="hljs-keyword">else</span><br> <span class="hljs-keyword">begin</span><br> O_rx_done <= <span class="hljs-number">1'b0</span> ;<br> R_state <= <span class="hljs-number">4'd0</span> ;<br> R_para_data_reg <= <span class="hljs-number">8'd0</span> ;<br> O_bps_rx_clk_en <= <span class="hljs-number">1'b0</span> ; <span class="hljs-comment">// 接收完毕以后关闭波特率时钟使能信号</span><br> <span class="hljs-keyword">end</span> <br><span class="hljs-keyword">end</span><br><br><span class="hljs-keyword">endmodule</span><br></code></pre></td></tr></table></figure><p>对于接收到的并行信号,可以对其做写入or打印的处理。</p><h2 id="what-after?"><a href="#what-after?" class="headerlink" title="what after?"></a>what after?</h2><p>verilog的基本实现已经完成了。我们可以例化一个顶层模块,把这三个东西都放进去,然后连接输入输出。现实中,我们将用FPGA开发板实现这一点。但是在完成这一步之前,我们可以使用vivado的仿真工具先验证一下我们的猜想和代码是否正确。这一块我会再下一个博客中写出。</p>]]></content>
<categories>
<category>tech</category>
</categories>
<tags>
<tag>tech</tag>
</tags>
</entry>
<entry>
<title>zsh踩坑记</title>
<link href="/tech/2021.08.21.07/"/>
<url>/tech/2021.08.21.07/</url>
<content type="html"><![CDATA[<h2 id="草,原来除了bash还有其他的壳程序啊"><a href="#草,原来除了bash还有其他的壳程序啊" class="headerlink" title="草,原来除了bash还有其他的壳程序啊"></a>草,原来除了bash还有其他的壳程序啊</h2><p>暑假去公司写了大概三个月的java,其中一半以上的时间在改shell的参数,跑测试,etc。不得不说,shell这玩意的语法真的邪门,终于知道为什么那么多工程师喜欢用python写脚本了,写了半天./xxx.sh之后告诉你command not found真的很折磨.jpg</p><p>不过体验最深的是,bash太丑了,不行!但是只能说以前的自己实在是too young too simple, sometimes naive,需要学习一个;到了今天我才知道,除了bash,还有这么多好康的壳程序,实在是离了大谱了。总的来说,bash之所以叫“bash”,并不说因为这个壳程序想要揍你一拳,而是bash这个词是<strong>B</strong>ourne-<strong>A</strong>gain <strong>SH</strong>ell的acronym。bourne shell,即“伯恩壳”(没错,就是谍影重重的那个男主角的名字,当然不是同一个人),是由<a href="https://zh.wikipedia.org/wiki/AT%26T">AT&T</a><a href="https://zh.wikipedia.org/wiki/%E8%B4%9D%E5%B0%94%E5%AE%9E%E9%AA%8C%E5%AE%A4">贝尔实验室</a>的<a href="https://zh.wikipedia.org/wiki/%E5%8F%B2%E8%92%82%E5%A4%AB%C2%B7%E4%BC%AF%E6%81%A9">史蒂夫·伯恩</a>在1977年在<a href="https://zh.wikipedia.org/wiki/Version_7_Unix">Version 7 Unix</a>中针对大学与学院发布的,也是先行各种linux的distro的默认shell。</p><p>当然,除了bash之外,还有很多shell程序,它们都是以-sh结尾的(shell)。比如说,sh,bash,<strong>zsh</strong>,fish(?),etcsh…</p><p>嗯,没错。今天就是要来使用一下zsh。</p><h2 id="zsh是什么"><a href="#zsh是什么" class="headerlink" title="zsh是什么"></a>zsh是什么</h2><p>zsh,即Z shell的缩写,是保罗·弗斯塔德在1990年纪念他的老师邵中(<strong>Z</strong>hong <strong>Sh</strong>ao)而写的,很明显的一个中文名字。而zsh的发扬光大,是github上的一个社区项目oh-my-zsh发扬光大的,有了oh-my-zsh,这个shell包含了上百种主题,加上许多可执行插件,如vim一样充满生命力。</p><h2 id="安装和使用"><a href="#安装和使用" class="headerlink" title="安装和使用"></a>安装和使用</h2><p>想要使用oh-my-zsh的美观主题和各种插件,步骤是这样的:</p><figure class="highlight awk"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs awk">git clone https:<span class="hljs-regexp">//gi</span>thub.com<span class="hljs-regexp">/robbyrussell/</span>oh-my-zsh.git ~/.oh-my-zsh<br>cp ~<span class="hljs-regexp">/.oh-my-zsh/</span>templates<span class="hljs-regexp">/zshrc.zsh-template ~/</span>.zshrc<br>chsh -s <span class="hljs-regexp">/bin/</span>zsh<br></code></pre></td></tr></table></figure><p>克隆,复制.zshrc文件,更改主题,完事。</p><p>可惜的是,因为我是尝试在我们学校的HPC节点上运转(which uses LDAP login),我估计没有权限更改系统的shell,所以也许只能在.bashrc里面添加一条zsh</p><p>.zshrc是zsh的用户定义配置文件,在里面可以更改主题。记住oh-my-zsh已经提供了许多美观耐用的主题,修改名字并source一下就能奏效了。</p><p>在.zshrc里面同样放着plugins的定义描述,对其修改也能起到对应的效果。</p><h2 id="command-not-found-compdef"><a href="#command-not-found-compdef" class="headerlink" title="command not found: compdef"></a>command not found: compdef</h2><p>这是我在使用过程中踩到的一个坑点。实际上,compdef是zsh内置的一个function,如果冒出这种情况多半是因为zsh的函数环境变量改了,可以在.zshrc里面添加fpath来修改这个问题。</p><p>对于我来说:</p><figure class="highlight awk"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs awk">fpath=(<span class="hljs-regexp">/usr/</span>share<span class="hljs-regexp">/zsh/</span><span class="hljs-variable">$ZSH_VERSION</span><span class="hljs-regexp">/functions/</span> <span class="hljs-variable">$fpath</span>)<br></code></pre></td></tr></table></figure><p>在fpath里面加上/usr/share/zsh/$ZSH_VERSION/functions/,这个问题就解决了。</p>]]></content>
<categories>
<category>tech</category>
</categories>
</entry>
<entry>
<title>一台树莓派到底能拿来干什么?</title>
<link href="/tech/2021.05.07.05/"/>
<url>/tech/2021.05.07.05/</url>
<content type="html"><![CDATA[<p>哪个年轻人不想拥有自己的一台树莓派呢?这是一个非常值得讨论的问题。截至2019年底,树莓派的销售量已经到达三千万台。虽然这玩意并不能真正意义上拿来当作办公用电脑,但是手握一台信用大大小的单片机着实是一件很酷的事情,尤其是当这台机器可以完成大多数电脑也能干的事情的时候。套用那句非常非常老的话,就是用过树莓派基本不会失望,没用过树莓派不知道自己之后不会因此而失望。</p><p>我是今年年初的时候,因为要做arduino相关的一个项目,被朋友忽悠了入的。后来发现,我是用五百RMB换来一台属于自己的服务器!如果说IPV6推广的话,那么事实上我已经不需要购置其他厂商的VPS了,因为这玩意基本上可以完成所有VPS能干的事情,如果说他有公网IP的话。</p><h1 id="intro"><a href="#intro" class="headerlink" title="intro"></a>intro</h1><p>树莓派是什么?简而言之,树莓派就是一台电脑,只不过非常之小,小到可以揣在口袋里带走。</p><p>它好在哪里?它好就好在他的CPU性能不俗,功耗低,便宜。你只要花上大概四百到五百人民币的价格,就能把这台小巧的卡片计算器带回家。也就是说,一台surface book2大概顶的上20台树莓派。如果说你买电脑只是为了一个文本编辑器,为什么不买一个树莓派呢?</p><p>它的另外一些好处有,你可以一直开着它,让他一直运行一些服务。普通的电脑你不用的时候通常会把他关机。</p><h1 id="基本配置"><a href="#基本配置" class="headerlink" title="基本配置"></a>基本配置</h1><p>当树莓派到手的时候,你需要干的事情有:</p><ol><li>买树莓派和对应的SD卡。一般来说32G的就已经很够用了。</li><li>组装外壳。</li><li>给你的SD卡刷好系统,并添加ssh文件(强烈建议)</li><li>插入SD卡。</li><li>通电。</li><li>使用ssh登录你的树莓派。</li><li>爱干嘛干嘛~</li></ol><p>这样就完成了。是不是非常简单!</p><h2 id="刷系统"><a href="#刷系统" class="headerlink" title="刷系统"></a>刷系统</h2><p>树莓派是有属于自己的操作系统的。这个os被称作Raspberry Pi OS,之前也叫raspbian,因为是基于debian的类unix操作系统。从2015年开始,树莓派基金会就已经宣布raspberry pi os作为树莓派的首选系统。</p><p>这个系统最早是由Mike Thompson和Peter Green两位大佬在一个独立的项目里于2012年六月编译出来的。</p><p>为了把系统放进你的树莓派里充当软硬件的沟通媒介,你需要一个专有的写入程序。你可以在<a href="https://www.raspberrypi.org/software/">这个界面</a>下载安装程序,里面会自带镜像文件。</p><p>用读卡器连接SD卡与你的电脑,并选择这个SD卡作为你的目标硬盘。选择你将要安装的操作系统,等待就OK。</p><h3 id="ssh文件"><a href="#ssh文件" class="headerlink" title="ssh文件"></a>ssh文件</h3><p>一般来说,搞定之后的树莓派里面是没有ssh文件的。但是如果要便捷地控制树莓派的话,ssh往往是最好的方式。没有人想把自己的显示屏拆下来再用hdmi线连上这台机器。</p><p>要激活树莓派的ssh功能也非常简单。直接在根目录里面新建一个ssh文件,问题就解决了。你也可以通过一些其他方式来打开树莓派本身的ssh,但是我觉得这个方法最简单。</p><p>事实上,这说明了raspberry pi os是自带openssh的,只是没有启用而已。</p><h2 id="登录树莓派"><a href="#登录树莓派" class="headerlink" title="登录树莓派"></a>登录树莓派</h2><p>要登录树莓派非常容易。前提条件是你需要知道你的树莓派的IP地址。</p><p>要使你的树莓派的ssh可用,你必须把他接上互联网。最简单的方法是插到路由器的LAN口,这样他就和你的电脑处于同一内网下……前提是你的电脑也连到了这个路由器。</p><p>查询路由器的IP表就可以知道树莓派的IP地址了。在个人PC上使用 ssh连接:</p><figure class="highlight excel"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs excel">$ssh <span class="hljs-built_in">pi</span>@${ip <span class="hljs-built_in">address</span>}<br><span class="hljs-built_in">pi</span>@${ip <span class="hljs-built_in">address</span>}'s passwo<span class="hljs-symbol">rd:</span><br></code></pre></td></tr></table></figure><p>注意,一定要用pi用户登录。这是raspberry pi os的一个内置用户。用root是无法登录的。</p><p>当你没有做任何修改的时候,默认密码就是raspberry。</p><figure class="highlight livescript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><code class="hljs livescript">Linux raspberrypi <span class="hljs-number">5.10</span>.<span class="hljs-number">17</span>-v7l+ <span class="hljs-comment">#1403 SMP Mon Feb 22 11:33:35 GMT 2021 armv7l</span><br><br>The programs included <span class="hljs-keyword">with</span> the Debian GNU/Linux system are free software;<br>the exact distribution terms <span class="hljs-keyword">for</span> each program are described <span class="hljs-keyword">in</span> the<br>individual files <span class="hljs-keyword">in</span> <span class="hljs-regexp">/usr/share/doc/</span>*/copyright.<br><br>Debian GNU/Linux comes <span class="hljs-keyword">with</span> ABSOLUTELY NO WARRANTY, <span class="hljs-keyword">to</span> the extent<br>permitted <span class="hljs-keyword">by</span> applicable law.<br>Last login: -<br><br>SSH <span class="hljs-keyword">is</span> enabled <span class="hljs-keyword">and</span> the <span class="hljs-keyword">default</span> password <span class="hljs-keyword">for</span> the <span class="hljs-string">'pi'</span> user has <span class="hljs-keyword">not</span> been changed.<br>This <span class="hljs-keyword">is</span> a security risk - please login <span class="hljs-keyword">as</span> the <span class="hljs-string">'pi'</span> user <span class="hljs-keyword">and</span> type <span class="hljs-string">'passwd'</span> <span class="hljs-keyword">to</span> set a <span class="hljs-keyword">new</span> password.<br><br><br>Wi-Fi <span class="hljs-keyword">is</span> currently blocked <span class="hljs-keyword">by</span> rfkill.<br>Use raspi-config <span class="hljs-keyword">to</span> set the country before use.<br><br>pi@raspberrypi:~ $<br></code></pre></td></tr></table></figure><p>如果你可以看到这些提示信息,那么恭喜你。</p><h1 id="你可以用它来干什么?"><a href="#你可以用它来干什么?" class="headerlink" title="你可以用它来干什么?"></a>你可以用它来干什么?</h1><p>刚才说过,树莓派实际上和你的个人电脑没有什么区别,除了它小了点,运算效果差了点之外,操作系统不那么习惯而已。</p><p>实际上,如果你给他分配一个公网的IP地址,它可以胜任所有VPS能干的事情。比如说科学上网的服务器,只要你的公网IP不在合法区域。比如说你可以拿他来跑我上篇文章里写的机器人程序,或者用它来运行这个网站。</p><p>贴一张图~</p><p><img src="/img/raspi.jpg"></p><p>这玩意竟然有RGB,真是让人感慨。</p>]]></content>
<categories>
<category>tech</category>
</categories>
<tags>
<tag>tech</tag>
</tags>
</entry>
<entry>
<title>关于telegram bot的琐碎</title>
<link href="/tech/2021.04.29.10/"/>
<url>/tech/2021.04.29.10/</url>
<content type="html"><![CDATA[<p>前因:</p><blockquote><p>Patchy<br>隔壁之前有人弄个单纯随机复读的</p><p>Patchy<br>已经通过了群友的人类认可</p><p>Cedar<br>就是听了您的那个,觉得很有意思</p><p>Cedar<br>所以手撸了一个</p></blockquote><hr><p>笑死,根本笑不死。</p><p>俺敲代码从来没有一个目标的,因为我就是门外汉(自豪)</p><p>之前听群友说,隔壁群曾经出了一个bot,是不是复读群友消息结果没有人发现这玩意是bot,我直接宣布这个bot通过图灵测试(迫真)</p><p>所以说,自己想搞一个自己的版本,不仅能复读,还能有其他生草功能。顺便一窥telegram的bot是怎么实现的。</p><h1 id="bot的出生"><a href="#bot的出生" class="headerlink" title="bot的出生"></a>bot的出生</h1><p>bot是从bot中生出来的,<strong>生殖隔离确认</strong></p><p>这个生bot的bot是telegram的一个官方bot,名叫<a href="https://t.me/BotFather">@botfather</a> .管生bot的人叫father无论如何都很奇怪吧。</p><p>当你向他输入/newbot指令的时候,一个bot的诞生就开始了。跟随他的指令,命名你的新bot。你输入的名字将会成为这个bot的用户名。</p><p>当bot生成之后,你可以通过/mybots来查看或者编辑这个bot的相关信息。</p><p>最重要的是,botfather在创建完这个bot之后,会给予一个独一无二的identifier,那就是这个bot的token。只有在token对应的时候,你才可以指挥你的bot。</p><h1 id="pytelegrambot相关"><a href="#pytelegrambot相关" class="headerlink" title="pytelegrambot相关"></a>pytelegrambot相关</h1><p>我是用pytelegrambot这个库写的,这个库十分优雅而强大,足够应付所有你想实现的功能。</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs python">pip install pyTelegramBotAPI<br></code></pre></td></tr></table></figure><p>安装方法如上。当你安装好了之后,新建一个python文件,在顶部写上:</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs python"><span class="hljs-keyword">import</span> telebot<br><br>bot = telebot.TeleBot(<span class="hljs-string">"TOKEN"</span>, parse_mode=<span class="hljs-literal">None</span>)<br></code></pre></td></tr></table></figure><p>这样,bot就以token的形式实例化出来了。</p><p>根据pytelegrambot的官方文件,一个bot的例子是:</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs python"><span class="hljs-meta">@bot.message_handler(<span class="hljs-params">commands=[<span class="hljs-string">'start'</span>, <span class="hljs-string">'help'</span>]</span>)</span><br><span class="hljs-keyword">def</span> <span class="hljs-title function_">send_welcome</span>(<span class="hljs-params">message</span>):<br>bot.reply_to(message, <span class="hljs-string">"Howdy, how are you doing?"</span>)<br></code></pre></td></tr></table></figure><p>这里定义了一个函数,对于/start和/help这两个指令,bot将会执行send_welcome这个函数,并发送信息”Howdy, how are you doing?“。</p><p>这里,pytelegrambot提供了一个十分友好的装饰器@bot.message_handler,可以对发给bot的消息进行筛查。查阅源码可知:</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br></pre></td><td class="code"><pre><code class="hljs python"><span class="hljs-keyword">def</span> <span class="hljs-title function_">message_handler</span>(<span class="hljs-params">self, commands=<span class="hljs-literal">None</span>, regexp=<span class="hljs-literal">None</span>, func=<span class="hljs-literal">None</span>, content_types=<span class="hljs-literal">None</span>, **kwargs</span>):<br> <span class="hljs-string">"""</span><br><span class="hljs-string"> Message handler decorator.</span><br><span class="hljs-string"> This decorator can be used to decorate functions that must handle certain types of messages.</span><br><span class="hljs-string"> All message handlers are tested in the order they were added.</span><br><span class="hljs-string"></span><br><span class="hljs-string"> Example:</span><br><span class="hljs-string"></span><br><span class="hljs-string"> bot = TeleBot('TOKEN')</span><br><span class="hljs-string"></span><br><span class="hljs-string"> # Handles all messages which text matches regexp.</span><br><span class="hljs-string"> @bot.message_handler(regexp='someregexp')</span><br><span class="hljs-string"> def command_help(message):</span><br><span class="hljs-string"> bot.send_message(message.chat.id, 'Did someone call for help?')</span><br><span class="hljs-string"></span><br><span class="hljs-string"> # Handle all sent documents of type 'text/plain'.</span><br><span class="hljs-string"> @bot.message_handler(func=lambda message: message.document.mime_type == 'text/plain', content_types=['document'])</span><br><span class="hljs-string"> def command_handle_document(message):</span><br><span class="hljs-string"> bot.send_message(message.chat.id, 'Document received, sir!')</span><br><span class="hljs-string"></span><br><span class="hljs-string"> # Handle all other messages.</span><br><span class="hljs-string"> @bot.message_handler(func=lambda message: True, content_types=['audio', 'photo', 'voice', 'video', 'document', 'text', 'location', 'contact', 'sticker'])</span><br><span class="hljs-string"> def default_command(message):</span><br><span class="hljs-string"> bot.send_message(message.chat.id, "This is the default command handler.")</span><br><span class="hljs-string"></span><br><span class="hljs-string"> :param commands: Optional list of strings (commands to handle).</span><br><span class="hljs-string"> :param regexp: Optional regular expression.</span><br><span class="hljs-string"> :param func: Optional lambda function. The lambda receives the message to test as the first parameter. It must return True if the command should handle the message.</span><br><span class="hljs-string"> :param content_types: This commands' supported content types. Must be a list. Defaults to ['text'].</span><br><span class="hljs-string"> """</span><br></code></pre></td></tr></table></figure><p>这个装饰器可以用指令,正则,lamda函数以及内容的方式对发给bot的信息进行筛查,并确定是否执行你所定义的函数。</p><p>但是,当你执行这个python文件,bot并不会启动,这是因为这只是个定义性的代码文件,而并没有让bot跑起来。你需要在结尾加上:</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs python">bot.polling()<br></code></pre></td></tr></table></figure><p>这个polling方法可以让这个bot不断监听进入的消息,并按照不同情况执行上文所提到的message handler.但是这个方法实际上有坑;如果说进入的消息过多的话,服务器会认定受到了攻击,并停止这个bot。此时你的python文件会以”远程服务器强制终止了一个现有链接“停止。</p><p>为了避免这种情况的出现,pytelegrambot的api十分贴心地提供了另外一个方法:</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs python">bot.infinity_polling()<br></code></pre></td></tr></table></figure><p>从这个名字就可以看出来,当polling失败的时候,这个bot会重新建立连接,周而复始。</p><h1 id="what-now"><a href="#what-now" class="headerlink" title="what now?"></a>what now?</h1><p>在了解了这些基本的操作之后,你已经可以写一个复读机bot了。原理十分简单,如果要使复读是随机的话,你只需要求助于random库即可。</p><p>pytelegrambot还提供了其他好用的api,比如说发meme,发图片,甚至是让bot在群组中执行管理员权限,等等。限制你发挥的仅仅是你的想象力。</p><p><a href="https://t.me/cedar_234_bot">我的bot</a>能做到的事情有,时不时以<em>某种方式</em>复读,时不时发怪图,时不时说怪话。</p><p>你可以尝试和他对话,或者把他丢到某个群里。</p><p>你也可以在<a href="https://github.com/cedarsaigyouji/nonsense_chat_bot">我的github仓库</a>里面找到这玩意。</p><p>以上。</p><h1 id="题外话"><a href="#题外话" class="headerlink" title="题外话"></a>题外话</h1><p>对了,你如果要让这个bot一直开着,你就得让这个程序一直开着。如果你只有一台电脑的话,那就意味着你这台电脑没法关机。</p><p>而我直接整了个raspi4b,放在上面就跑这玩意。下次聊聊我还用树莓派干了些什么。</p>]]></content>
<categories>
<category>tech</category>
</categories>
<tags>
<tag>tech</tag>
</tags>
</entry>
<entry>
<title>编译第一条MIPS指令</title>
<link href="/tech/2021.02.16.04/"/>
<url>/tech/2021.02.16.04/</url>
<content type="html"><![CDATA[<p>本文摘自<a href="https://blog.csdn.net/qq_42650988/article/details/103532682">https://blog.csdn.net/qq_42650988/article/details/103532682</a></p><hr><h2 id="Linux学习的点点滴滴(二)"><a href="#Linux学习的点点滴滴(二)" class="headerlink" title="Linux学习的点点滴滴(二)"></a>Linux学习的点点滴滴(二)</h2><p>其实本文跟Linux关系并不是那么大,是我在自己写CPU的过程中总结的东西,之前只用Word写在自己电脑里了,想着哪天放到博客上。<br>本文是在写CPU进行测试的时候需要将汇编翻译成机器码的过程,刚开始学的时候,也遇到了一些小问题,在此记录。</p><h3 id="一、安装GNU工具链"><a href="#一、安装GNU工具链" class="headerlink" title="一、安装GNU工具链"></a>一、安装GNU工具链</h3><p>gcc编译器使用的是龙芯公司的,使用了MIPS架构。<a href="http://ftp.loongnix.org/toolchain/gcc/release/gcc-4.3-ls232.tar.gz">下载地址</a><br>进入Linux虚拟机的<code>/opt</code>文件夹(其实哪个都无所谓),在终端输入<code>tar -zxvf gcc-4.3-ls232.tar.gz</code>,这里<code>tar -zxvf</code>是<code>.tar.gz</code>文件的解压缩命令,后面会详细介绍其他的<a href="https://blog.csdn.net/qq_42650988/article/details/103532682#tar">解压缩命令</a><br>解压缩之后,首先配置环境变量,找到当前用户的文件夹下的隐藏文件<code>.bashrc</code>,如果遇到权限不够,用<code>chmod</code>修改权限之后,打开文件,在文件最后一行加上<br><code>export PATH=”$PATH:password/opt/gcc-4.3-ls232/bin”</code><br>在终端输入<code>echo $PATH</code>查看已经配好的环境变量,(echo是回显命令,是常见的脚本命令)<br><img src="https://img-blog.csdnimg.cn/20191213201547316.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNjUwOTg4,size_16,color_FFFFFF,t_70" alt="echo"><br>然后输入<code>mipsel-linux-gcc -v</code>,如下图表示GNU工具链安装完成:<br><img src="https://img-blog.csdnimg.cn/20191213201800255.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNjUwOTg4,size_16,color_FFFFFF,t_70" alt="GNU"><br>有个很坑的地方,如果提示:bash ./ 没有那个文件或目录,是因为Ubuntu是64位的,没有32位的运行库,安装一个32位运行库即可:<code>apt-get install lib32z1</code><br>至此基本的准备工作就完成了,但是在此过程中不熟悉Linux系统会导致一些列问题,在此总结一下。</p><h3 id="二、解压缩命令"><a href="#二、解压缩命令" class="headerlink" title="二、解压缩命令"></a>二、解压缩命令</h3><p>常见的解压缩命令</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br></pre></td><td class="code"><pre><code class="hljs shell">tar<br>-c: 建立压缩档案<br>-x:解压<br>-t:查看内容<br>-r:向压缩归档文件末尾追加文件<br>-u:更新原压缩包中的文件<br>这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。<br><br>-z:有gzip属性的<br>-j:有bz2属性的<br>-Z:有compress属性的<br>-v:显示所有过程<br>-O:将文件解开到标准输出<br>下面的参数-f是必须的<br>-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。<br>tar -cf all.tar *.jpg<br>这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。<br>tar -rf all.tar *.gif<br>这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。<br>tar -uf all.tar logo.gif<br>这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。<br>tar -tf all.tar<br>这条命令是列出all.tar包中所有文件,-t是列出文件的意思<br>tar -xf all.tar<br>这条命令是解出all.tar包中所有文件,-t是解开的意思<br><br>//压缩<br>tar -cvf jpg.tar *.jpg //将目录里所有jpg文件打包成tar.jpg <br>tar -czf jpg.tar.gz *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz<br>tar -cjf jpg.tar.bz2 *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2<br>tar -cZf jpg.tar.Z *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z<br>rar a jpg.rar *.jpg //rar格式的压缩,需要先下载rar for linux<br>zip jpg.zip *.jpg //zip格式的压缩,需要先下载zip for linux<br><br>//解压<br>tar -xvf file.tar //解压 tar包<br>tar -xzvf file.tar.gz //解压tar.gz<br>tar -xjvf file.tar.bz2 //解压 tar.bz2<br>tar -xZvf file.tar.Z //解压tar.Z<br>unrar e file.rar //解压rar<br>unzip file.zip//解压zip<br><br>//总结<br>1、*.tar 用 tar -xvf 解压<br>2、*.gz 用 gzip -d 或者gunzip 解压<br>3、*.tar.gz 和 *.tgz 用 tar -xzf 解压<br>4、*.bz2 用 bzip2 -d或者用bunzip2 解压<br>5、*.tar.bz2 用 tar -xjf 解压<br>6、*.Z 用 uncompress 解压<br>7、*.tar.Z 用tar -xZf 解压<br>8、*.rar 用 unrar e解压<br>9、*.zip 用 unzip 解压*<br>12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152<br></code></pre></td></tr></table></figure><h3 id="三、关于环境变量"><a href="#三、关于环境变量" class="headerlink" title="三、关于环境变量"></a>三、关于环境变量</h3><p>类似于Windows下的环境变量,本质含义就是让系统运行一个程序时,不仅仅要在当前目录下面寻找,还要到PATH指定的路径下寻找,此操作实际简化了程序执行的复杂度,提高了效率。<br>以上面的GCC路径为例,我们写入的PATH路径为:<code>export PATH=”$PATH:/opt/gcc-4.3-ls232/bin”</code><br>什么意思?可以把PATH看成一个字符串,用<code>“/”、“:”、“\$”</code> 等符号进行划分,系统根据划分的字符串寻找目标地址。因为PATH是一个字符串,用“$PATH”表示引用这个字符串,就是表示PATH所指的内容;<code>:</code>是Linux中分隔符,相当于Windows中的<code>;</code>,因此该语句表示在原有的PATH路径下再加上<code>/opt/gcc-4.3-ls232/bin</code>路径,我们在终端中检验一下:<br><img src="https://img-blog.csdnimg.cn/20191213203136581.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNjUwOTg4,size_16,color_FFFFFF,t_70" alt="在这里插入图片描述"><br>实际上,若要仅仅配置GCC,不需要加上之前的PATH路径,因此只要这样写即可:<br><code>export PATH=”/opt/gcc-4.3-ls232/bin"</code>.我们在终端中再次输入echo $PATH,结果证明是正确的,gcc安装无误:<br><img src="https://img-blog.csdnimg.cn/20191213203218185.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNjUwOTg4,size_16,color_FFFFFF,t_70" alt="在这里插入图片描述"></p><h3 id="四、编译汇编指令"><a href="#四、编译汇编指令" class="headerlink" title="四、编译汇编指令"></a>四、编译汇编指令</h3><p>我们先编写一组汇编指令,命名为<code>inst_rom.S</code><br><img src="https://img-blog.csdnimg.cn/20191213203317375.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNjUwOTg4,size_16,color_FFFFFF,t_70" alt="在这里插入图片描述"><br>然后我们在终端中输入指令:<br><code>mipsel-linux-as -mips32 inst_rom.S -o inst_rom.o</code>,表示用as工具将inst_rom.S文件编译成<code>inst_rom.o</code>文件再输入:<br><code>mipsel-linux-ld -T ram.ld inst_rom.o -o inst_ram.om</code>,表示将<code>inst_rom.o</code>文件链接成<code>inst_rom.om</code>文件。再输入:<br><code>mipsel-linux-objcopy -O binary inst_rom.om inst_ram.bin</code>,根据.om文件得到了bin文件,再输入:<br><code>mipsel-linux-objdump -D inst_rom.om > inst_ram.asm</code>,对汇编指令进行反汇编,得到与机器指令对应的二进制字。<br>最后将Bin2MEM.exe拷贝到与inst_rom系列文件相同的目录下,执行<br><code>./Bin2Mem.exe -f inst_rom.bin -o inst_rom.data</code><br>第一次执行应该需要修改Bin2Mem.exe文件的权限,输入:<br><code>Chmod 777 Bin2Mem.exe</code>,最终转化为与Vivado程序中读入的文件类型(.data),执行结果如图:<br><img src="https://img-blog.csdnimg.cn/20191213203518724.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNjUwOTg4,size_16,color_FFFFFF,t_70" alt="没有描述~~~"><br>生成的文件:<br><img src="https://img-blog.csdnimg.cn/20191213203550517.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNjUwOTg4,size_16,color_FFFFFF,t_70" alt="在这里插入图片描述"><br>我们打开inst_rom.data文件查看:<br><img src="https://img-blog.csdnimg.cn/20191213203609232.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNjUwOTg4,size_16,color_FFFFFF,t_70" alt="在这里插入图片描述"><br>这便是我们一开始那几条汇编指令的机器指令。</p><h3 id="五、大小端地址"><a href="#五、大小端地址" class="headerlink" title="五、大小端地址"></a>五、大小端地址</h3><p>大端(存储)模式:是指一个数据的低位字节序的内容放在高地址处,高位字节序存的内容放在低地址处。<br>小端(存储)模式:是指一个数据的低位字节序内容存放在低地址处,高位字节序的内容存放在高地址处。(可以总结为“小小小”即低位、低地址、小端)<br>在上述的例子中,我们发现原来的机器指令34011100变成了00110134,高位数据放在了地址的高位,是小端存储,这样看上去不是很方便,我们可以修改编译指令改变最终编译的结果,输入<code>mipsel-linux-as -help</code>查看帮助:<br><img src="https://img-blog.csdnimg.cn/20191213203859994.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNjUwOTg4,size_16,color_FFFFFF,t_70" alt="在这里插入图片描述"><br><img src="https://img-blog.csdnimg.cn/20191213203906390.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNjUwOTg4,size_16,color_FFFFFF,t_70" alt="在这里插入图片描述"><br>我们修改指令:<br><img src="https://img-blog.csdnimg.cn/2019121320391995.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNjUwOTg4,size_16,color_FFFFFF,t_70" alt="在这里插入图片描述"><br>查看inst_rom.data文件:<br><img src="https://img-blog.csdnimg.cn/20191213203929149.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNjUwOTg4,size_16,color_FFFFFF,t_70" alt="在这里插入图片描述"><br>已经修改为大端模式了。我们需要修改为大端模式,因为该OpenMIPS就是大端模式。</p><h3 id="六、Make工具"><a href="#六、Make工具" class="headerlink" title="六、Make工具"></a>六、Make工具</h3><p>每次都输入四个(加上.asm一共五个)指令显得很麻烦,我们可以编写一个脚本来自动执行命令。<br>make便是Linux上的一个脚本,当我们只输入make命令的工作流程是:</p><ol><li>make会在当前目录下找名字叫“Makefile”或“makefile”的文件;</li><li>如果找到,它会找文件中的第一个目标文件(target),在上面的例子中,他会找到“inst_rom.data”这个文件,并把这个文件作为最终的目标文件;</li><li>如果inst_rom.data文件不存在,或是.data所依赖的后面的 .om 文件的文件修改时间要比.data这个文件新,那么make会执行下面定义的命令来生成.data文件;</li><li>如果.data所依赖的.om文件也存在,那么make会在当前文件中找目标为.om文件的依赖性,如果找到再根据命令生成.om文件(这是一个递归的过程);</li></ol><p>如果在找寻的过程中,出现了被依赖的文件找不到的错误,那么make就会直接退出,并报错。<br>如果在一条依赖链中,比如:A依赖B,B依赖C,C依赖D。那么当D更新后,make发现D比C新则会重新构建C,以此类推,最终A也会被更新。<br>简单的说,makefile带来的好处就是——自动化编译,只要一个make命令,所有工程和文件自动编译,类似于Shell的.sh和cmd的.bat</p><p>我们编写如下代码:</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br></pre></td><td class="code"><pre><code class="hljs shell">ifndef CROSS_COMPILE<br>CROSS_COMPILE = mipsel-linux-<br>endif<br>CC = $(CROSS_COMPILE)as<br>LD = $(CROSS_COMPILE)ld<br><br>OBJCOPY = $(CROSS_COMPILE)objcopy<br>OBJDUMP = $(CROSS_COMPILE)objdump<br><br>OBJECTS = inst_rom.o<br>export CROSS_COMPILE<br>all:inst_rom.data inst_rom.om inst_rom.o inst_rom.bin inst_rom.asm<br><span class="hljs-meta prompt_"></span><br><span class="hljs-meta prompt_">%</span><span class="language-bash">.o:%.S</span><br><span class="hljs-meta prompt_">$</span><span class="language-bash">(CC) -mips32 -EB $< -o <span class="hljs-variable">$@</span></span><br><br>inst_rom.om:ram.ld $(OBJECTS) <br><span class="hljs-meta prompt_">$</span><span class="language-bash">(LD) -EB -T ram.ld $(OBJECTS) -o <span class="hljs-variable">$@</span></span><br><br>inst_rom.bin:inst_rom.om<br><span class="hljs-meta prompt_">$</span><span class="language-bash">(OBJCOPY) -O binary $< <span class="hljs-variable">$@</span></span><br><br>inst_rom.asm:inst_rom.om<br><span class="hljs-meta prompt_">$</span><span class="language-bash">(OBJDUMP) -D $< ><span class="hljs-variable">$@</span></span><br><br>inst_rom.data:inst_rom.bin<br>./Bin2Mem.exe -f $< -o $@<br><br>clean:<br>rm -f *.o *.om *.bin *.data<br>123456789101112131415161718192021222324252627282930<br></code></pre></td></tr></table></figure><p><img src="https://img-blog.csdnimg.cn/20191213204254687.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNjUwOTg4,size_16,color_FFFFFF,t_70" alt="在这里插入图片描述"><br>其中 <code>$<</code> 表示第一个依赖文件的名称,<code>$@</code> 表示目标的完整名称</p><p>至此,我们用gcc编译汇编指令生成机器码的过程就做完了。</p><h3 id="七、ram-ld链接代码"><a href="#七、ram-ld链接代码" class="headerlink" title="七、ram.ld链接代码"></a>七、ram.ld链接代码</h3><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br></pre></td><td class="code"><pre><code class="hljs shell">MEMORY<br> { <br> ram(RW) : ORIGIN = 0x00000000, LENGTH = 0x00001000<br> }<br>SECTIONS<br>{<br> /*<br> For some reason the linker script can't see the _reset_vector symbol <br> (even if we declare it global), so we explicitly set it. */<br>.text :<br> {<br> *(.text)<br> } > ram<br><br> .data :<br> {<br> *(.data)<br> } > ram<br> .bss :<br> {<br> *(.bss)<br> } > ram<br> .stack ALIGN(0x10) (NOLOAD):<br> {<br> *(.stack)<br> _ram_end = .;<br> } > ram<br>}<br>ENTRY (_start)<br>1234567891011121314151617181920212223242526272829<br></code></pre></td></tr></table></figure><h3 id="八、Bin2Mem-c代码"><a href="#八、Bin2Mem-c代码" class="headerlink" title="八、Bin2Mem.c代码"></a>八、Bin2Mem.c代码</h3><figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br></pre></td><td class="code"><pre><code class="hljs c"><span class="hljs-meta">#<span class="hljs-keyword">include</span> <span class="hljs-string"><stdlib.h></span></span><br><span class="hljs-meta">#<span class="hljs-keyword">include</span> <span class="hljs-string"><stdio.h></span></span><br><br><span class="hljs-type">char</span> *option_invalid = <span class="hljs-literal">NULL</span>;<br><span class="hljs-type">char</span> *option_file_in = <span class="hljs-literal">NULL</span>;<br><span class="hljs-type">char</span> *option_file_out = <span class="hljs-literal">NULL</span>;<br><br>FILE *file_in_descriptor = <span class="hljs-literal">NULL</span>;<br>FILE *file_out_descriptor = <span class="hljs-literal">NULL</span>;<br><br><span class="hljs-type">void</span> <span class="hljs-title function_">exception_handler</span><span class="hljs-params">(<span class="hljs-type">int</span> code)</span> {<br> <span class="hljs-keyword">switch</span> (code) {<br> <span class="hljs-keyword">case</span> <span class="hljs-number">0</span>:<br> <span class="hljs-keyword">break</span>;<br> <span class="hljs-keyword">case</span> <span class="hljs-number">10001</span>:<br> <span class="hljs-built_in">printf</span>(<span class="hljs-string">"Error (10001): No option recognized.\n"</span>);<br> <span class="hljs-built_in">printf</span>(<span class="hljs-string">"Please specify at least one valid option.\n"</span>);<br> <span class="hljs-keyword">break</span>;<br> <span class="hljs-keyword">case</span> <span class="hljs-number">10002</span>:<br> <span class="hljs-built_in">printf</span>(<span class="hljs-string">"Error (10002): Invalid option: %s\n"</span>, option_invalid);<br> <span class="hljs-keyword">break</span>;<br> <span class="hljs-keyword">case</span> <span class="hljs-number">10003</span>:<br> <span class="hljs-built_in">printf</span>(<span class="hljs-string">"Error (10003): No input Binary file specified.\n"</span>);<br> <span class="hljs-keyword">break</span>;<br> <span class="hljs-keyword">case</span> <span class="hljs-number">10004</span>:<br> <span class="hljs-built_in">printf</span>(<span class="hljs-string">"Error (10004): Cannot open file: %s\n"</span>, option_file_in);<br> <span class="hljs-keyword">break</span>;<br> <span class="hljs-keyword">case</span> <span class="hljs-number">10005</span>:<br> <span class="hljs-built_in">printf</span>(<span class="hljs-string">"Error (10005): Cannot create file: %s\n"</span>, option_file_out);<br> <span class="hljs-keyword">break</span>;<br> <span class="hljs-keyword">default</span>:<br> <span class="hljs-keyword">break</span>;<br> }<br><br> <span class="hljs-keyword">if</span> (file_in_descriptor != <span class="hljs-literal">NULL</span>) {<br> fclose(file_in_descriptor);<br> }<br> <span class="hljs-keyword">if</span> (file_out_descriptor != <span class="hljs-literal">NULL</span>) {<br> fclose(file_out_descriptor);<br> }<br> <span class="hljs-built_in">exit</span>(<span class="hljs-number">0</span>);<br>}<br><br><span class="hljs-type">int</span> <span class="hljs-title function_">main</span><span class="hljs-params">(<span class="hljs-type">int</span> argc, <span class="hljs-type">char</span> **argv)</span> {<br> <br> <span class="hljs-type">int</span> i=<span class="hljs-number">0</span>,j=<span class="hljs-number">0</span>;<br> <span class="hljs-type">unsigned</span> <span class="hljs-type">char</span> temp1,temp2,temp3,temp4;<br> <span class="hljs-type">unsigned</span> <span class="hljs-type">int</span> option_flag = <span class="hljs-number">0</span>;<br><br> <span class="hljs-keyword">while</span> (argc > <span class="hljs-number">0</span>) {<br> <span class="hljs-keyword">if</span> (**argv == <span class="hljs-string">'-'</span>) {<br> (*argv) ++;<br> <span class="hljs-keyword">switch</span> (**argv) {<br> <span class="hljs-keyword">case</span> <span class="hljs-string">'f'</span>:<br> option_flag |= <span class="hljs-number">0x4</span>;<br> argv ++;<br> option_file_in = *argv;<br> argc --;<br> <span class="hljs-keyword">break</span>;<br> <span class="hljs-keyword">case</span> <span class="hljs-string">'o'</span>:<br> option_flag |= <span class="hljs-number">0x8</span>;<br> argv ++;<br> option_file_out = *argv;<br> argc --;<br> <span class="hljs-keyword">break</span>;<br> <span class="hljs-keyword">default</span>:<br> option_flag |= <span class="hljs-number">0x1</span>;<br> (*argv) --;<br> option_invalid = *argv;<br> <span class="hljs-keyword">break</span>;<br> }<br> }<br> argv ++;<br> argc --;<br> }<br><br> file_in_descriptor = fopen(option_file_in, <span class="hljs-string">"rb"</span>);<br> <span class="hljs-keyword">if</span> (file_in_descriptor == <span class="hljs-literal">NULL</span>) {<br> exception_handler(<span class="hljs-number">10004</span>);<br> }<br><br> file_out_descriptor = fopen(option_file_out, <span class="hljs-string">"w"</span>);<br> <span class="hljs-keyword">if</span> (file_out_descriptor == <span class="hljs-literal">NULL</span>) {<br> exception_handler(<span class="hljs-number">10005</span>);<br> }<br> <br> <span class="hljs-keyword">while</span> (!feof(file_in_descriptor)) {<br> <br> <span class="hljs-built_in">fscanf</span>(file_in_descriptor, <span class="hljs-string">"%c"</span>, &temp1);<br> <span class="hljs-built_in">fscanf</span>(file_in_descriptor, <span class="hljs-string">"%c"</span>, &temp2);<br> <span class="hljs-built_in">fscanf</span>(file_in_descriptor, <span class="hljs-string">"%c"</span>, &temp3);<br> <span class="hljs-built_in">fscanf</span>(file_in_descriptor, <span class="hljs-string">"%c"</span>, &temp4);<br><br> <span class="hljs-keyword">if</span>(!feof(file_in_descriptor)) {<br> <span class="hljs-built_in">fprintf</span>(file_out_descriptor, <span class="hljs-string">"%02x"</span>, temp1);<br> <span class="hljs-built_in">fprintf</span>(file_out_descriptor, <span class="hljs-string">"%02x"</span>, temp2);<br> <span class="hljs-built_in">fprintf</span>(file_out_descriptor, <span class="hljs-string">"%02x"</span>, temp3);<br> <span class="hljs-built_in">fprintf</span>(file_out_descriptor, <span class="hljs-string">"%02x"</span>, temp4);<br> <span class="hljs-built_in">fprintf</span>(file_out_descriptor, <span class="hljs-string">"\n"</span>);<br> } <br> }<br><br> exception_handler(<span class="hljs-number">0</span>);<br> <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>}<br></code></pre></td></tr></table></figure>]]></content>
<categories>
<category>tech</category>
</categories>
<tags>
<tag>tech</tag>
</tags>
</entry>
<entry>
<title>在wsl上搭建MIPS交叉编译环境</title>
<link href="/tech/2021.02.13.01/"/>
<url>/tech/2021.02.13.01/</url>
<content type="html"><![CDATA[<p>年初一晚上吃完饭回来想继续搞自己写了一丁点的MIPS32架构的CPU,看了一下教材想自己搞定一下GNU工具链完成对MIPS32架构汇编的编译。但是昨天把源码下到wsl里面跑了一下发现报错:</p><figure class="highlight smali"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs smali">-bash: /home/cedar/GNUworkfile/mips-2014.05/bin/mips-sde-elf-as: cannot<span class="hljs-built_in"> execute </span>binary file: Exec format error<br></code></pre></td></tr></table></figure><p>一拍脑袋,自己的PC是x86架构的,没法对MIPS进行编译。查了一下万能的stackoverflow,给我指了一条死路,让我去下一个ubuntu64 for arm试试看。今天早上起来丢进vmware,果然挂了;vmware也没法搞定arm架构的虚拟机。</p><p>下午甚至试了一下把树莓派装起来看看能不能跑,结果是同样报错。最后试了一下gcc和qemu交叉编译环境搭建,成功了,也是折腾的不行。</p><p>最后想了一下原因,树莓派是64位的,PC也是,但是目标CPU是32位base。</p><h1 id="配置环境"><a href="#配置环境" class="headerlink" title="配置环境"></a>配置环境</h1><p>先把qemu和配置的binfmt搞定:</p><figure class="highlight llvm"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs llvm">sudo apt install qemu-user-static<br>sudo update-binfmts --install <span class="hljs-type">i386</span> /usr/bin/qemu-<span class="hljs-type">i386</span>-static --magic '\<span class="hljs-keyword">x</span><span class="hljs-number">7</span>fELF\<span class="hljs-keyword">x</span><span class="hljs-number">01</span>\<span class="hljs-keyword">x</span><span class="hljs-number">01</span>\<span class="hljs-keyword">x</span><span class="hljs-number">01</span>\<span class="hljs-keyword">x</span><span class="hljs-number">03</span>\<span class="hljs-keyword">x</span><span class="hljs-number">00</span>\<span class="hljs-keyword">x</span><span class="hljs-number">00</span>\<span class="hljs-keyword">x</span><span class="hljs-number">00</span>\<span class="hljs-keyword">x</span><span class="hljs-number">00</span>\<span class="hljs-keyword">x</span><span class="hljs-number">00</span>\<span class="hljs-keyword">x</span><span class="hljs-number">00</span>\<span class="hljs-keyword">x</span><span class="hljs-number">00</span>\<span class="hljs-keyword">x</span><span class="hljs-number">00</span>\<span class="hljs-keyword">x</span><span class="hljs-number">03</span>\<span class="hljs-keyword">x</span><span class="hljs-number">00</span>\<span class="hljs-keyword">x</span><span class="hljs-number">03</span>\<span class="hljs-keyword">x</span><span class="hljs-number">00</span>\<span class="hljs-keyword">x</span><span class="hljs-number">01</span>\<span class="hljs-keyword">x</span><span class="hljs-number">00</span>\<span class="hljs-keyword">x</span><span class="hljs-number">00</span>\<span class="hljs-keyword">x</span><span class="hljs-number">00</span>' --mask '\xff\xff\xff\xff\xff\xff\xff\xfc\xff\xff\xff\xff\xff\xff\xff\xff\xf<span class="hljs-number">8</span>\xff\xff\xff\xff\xff\xff\xff'<br></code></pre></td></tr></table></figure><p>然后启动binfmt服务:</p><figure class="highlight elm"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs elm"><span class="hljs-title">sudo</span> service binfmt-sup<span class="hljs-keyword">port</span> start<br></code></pre></td></tr></table></figure><p>配置i386(32位)内核包:</p><figure class="highlight llvm"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs llvm">sudo dpkg --<span class="hljs-keyword">add</span>-architecture <span class="hljs-type">i386</span><br>sudo apt update<br>sudo apt install gcc:<span class="hljs-type">i386</span><br></code></pre></td></tr></table></figure><p>这一步很重要,因为实际上是从64位到32位出问题的。一会可以看到结果。</p><p>现在来试试。</p><figure class="highlight elixir"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs elixir">cedar<span class="hljs-variable">@cedar</span>-<span class="hljs-symbol">grandArchive:</span>~/assembly<span class="hljs-variable">$ </span>mips-sde-elf-as -mips32 inst_rom.S -o inst_rom.o<br>cedar<span class="hljs-variable">@cedar</span>-<span class="hljs-symbol">grandArchive:</span>~/assembly<span class="hljs-variable">$ </span>ls<br>inst_rom.S inst_rom.o<br></code></pre></td></tr></table></figure><p>非常nice.</p><p>试试把i386 support关了,然后再来一次;</p><figure class="highlight smali"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs smali">cedar@cedar-grandArchive:~/assembly$ sudo service binfmt-support stop<br>[sudo] password for cedar:<br> * Disabling additional executable binary formats binfmt-support [ OK ]<br>cedar@cedar-grandArchive:~/assembly$ mips-sde-elf-as -mips32 inst_rom.S -o inst_rom.o<br>-bash: /home/cedar/GNUworkfile/mips-2014.05/bin/mips-sde-elf-as: cannot<span class="hljs-built_in"> execute </span>binary file: Exec format error<br></code></pre></td></tr></table></figure><p>和预期一致。</p><h1 id="缺少32位库"><a href="#缺少32位库" class="headerlink" title="缺少32位库"></a>缺少32位库</h1><p>当然你还有可能出现这种情况:</p><figure class="highlight gradle"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs gradle"><span class="hljs-regexp">/lib/</span>ld-linux.so.<span class="hljs-number">2</span>: bad ELF interpreter: No such <span class="hljs-keyword">file</span> or directory<br></code></pre></td></tr></table></figure><p>这个报错是因为缺少ld-linux.so.2引起的,如果是用ubuntu的话可以用apt-get来安装。</p><figure class="highlight routeros"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs routeros">apt-<span class="hljs-built_in">get</span> update<br>apt-<span class="hljs-built_in">get</span> install ia32-libs<br></code></pre></td></tr></table></figure><p>这样就搞定了。nice job!</p>]]></content>
<categories>
<category>tech</category>
</categories>
<tags>
<tag>Awareness</tag>
</tags>
</entry>
<entry>
<title>庚子备忘录</title>
<link href="/essay/2021.02.12.10/"/>
<url>/essay/2021.02.12.10/</url>
<content type="html"><![CDATA[<blockquote><p>lmy: 在异地过年的时候 就想起你!</p><p>me: 我和朋友聊了一个晚上</p><p>没有家 过年的味道会慢慢淡去</p><p>逐渐模糊 变成只有一个符号</p></blockquote><h1 id="引"><a href="#引" class="headerlink" title="引"></a>引</h1><p>2020庚子年实在不是一个好年。从年头到年尾都充满了各种各样荒诞无经、无法预知的事件冲突。</p><p>大概从年初开始的疫情爆发,再到之后的项目研究,再到之后的关于科研方向的不断转移,我一直是陷在特别迷茫的状态。</p><p>有时候——不,是很经常,我会不由自主地陷在过往的回忆里面。想起自己的初中,高中,想起自己不知道为什么努力但是每天都在花时间的日子。</p><p>可能在这种情况下的充实感会给我一些心理上的慰藉?但是当决定权真的下到自己手上的时候,我真的愿意为自己所作的决定负责吗。</p><p>这是一个问题,嗯。我一直在想的一个问题。</p><hr><p>有时候和朋友聊天,会发现自己实际上充满了很多致命的弱点。比方说,自负,比方说,关于他人的看法云云。</p><p>我自己对诸如此类的性格深恶痛绝,但是又无法割裂。</p><p>之前在一个半夜和TS聊天,他和我聊了挺多东西,关于如何看待生活,看待自己的所作所为,看待他人对自己的评价。</p><p>我现在确实觉得,年龄越大,能交心的人越来越少了。这是实话。所以有时候碰到像TS这样的好人,我真的觉得特别珍贵。</p><p>不过这段聊天过程也是去年的一个很大的收获。也许成熟并不是一段一段的蜕变,而是重新审视并包容原本的自己。</p><hr><p>庚子年有很多的想法,关于去UCB交换,关于自己的实习,关于自己的科研,关于自己的实习。</p><p>我觉得,如果能把这些事情都搞定,那我真是太厉害了。确实是这样,很朴素的想法。</p><p>不得不说,现在有时候看自己过往的成就,有时候我爸会提醒我:这一切都不是你的成就。在你的所有achievements背后,都有某个人或者某些人在支撑你。或许是你的朋友,你的家人,甚至是你不喜欢的人。他们都会在某个地方,某种意义下给你一剂强心剂,或者给予你非常直接的帮助。</p><p>以前我不相信这句话,可能是因为我过于自负。不过愚蠢与自大往往源于无知,现在我觉得这句话很有道理。</p><p>因此对于以前曾经帮助过我的人,我希望你们都能在新的一年里活得有厚度。当然,我对于自己的生活的看法一直都没有变。我觉得,我很幸运,并且生活很踏实,也很有厚度。</p><p>就这样。诸事顺遂,得偿所愿。</p><p>谨贺新年。</p>]]></content>
<categories>
<category>essay</category>
</categories>
<tags>
<tag>whimsical</tag>
</tags>
</entry>
<entry>
<title>”蔚蓝“的山</title>
<link href="/essay/2021.02.01.04/"/>
<url>/essay/2021.02.01.04/</url>
<content type="html"><![CDATA[<iframe width="560" height="315" src="https://www.youtube.com/embed/1rwAvUvvQzQ" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe><p>在加拿大的温哥华岛上,有这么一座山,名叫Mount Celeste.</p><iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d1112662.7720402095!2d-125.75177882832826!3d49.62888403963422!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x548830cfd314931b%3A0xc6e4ad8d275b74a9!2sMount%20Celeste!5e0!3m2!1sen!2ssg!4v1612181311819!5m2!1sen!2ssg" width="600" height="450" frameborder="0" style="border:0;" allowfullscreen="" aria-hidden="false" tabindex="0"></iframe><p>这座山位于太平洋的东北角,在加拿大和美西的交界地。那么北的鬼地方,这座山无疑是座雪山。</p><p><strong>你如果说没有人想要爬这种鬼山,那你就错了。</strong>根据wikipedia的记录,在1934年的八月,Jack Horbury和Jock Sutherland完成了第一次有记载的攀登记录。</p><p>我很喜欢曾经攀登过珠穆朗玛峰的登山者乔治·马洛里说过的一句话,当年在他爬珠穆朗玛峰之前,有人问他为什么一定要登上那座山。</p><p>然后他回答,因为它就在那里。</p><p>这句话成为了千古名言,而乔治·马洛里也和他的这句话一起,葬在了珠穆朗玛峰的山顶。</p><p>第一位成功攀登珠穆朗玛峰而成功归来的人是埃德蒙·希拉里。希拉里在1953年登顶了这个世界最高之地,平安归来并且活到了2008年。这座世界渴望顶峰在英语里的惯称并不是藏语的音译<em>Chomolungma</em>,而是另外一个比较有深意的名字:Mount Everest。Ever-Rest, 永远安息。</p><p>回归正题。或许并不是每个人都有一个登山的梦想,但是每个人心中都会有恐惧。站在山脚下望着或许看得到或许看不到的珠穆朗玛峰顶部,登山者也许会发自内心的感到恐惧。从来没有人爬上过这座山——我可能成功吗?如果说我死了,那么谁来给我收尸呢?</p><p>但是他们依然奋不顾身地往上前进,然后死在那里。他们并没有爬上这座山并活着回来,但是他们战胜了内心的恐惧。也许这就足够浪漫了。</p><hr><p>玛德琳并不是一个经验丰富的登山运动员。她懦弱,胆小,深陷抑郁症。但是这次,她决定把自己的车子停在山脚下,把自己的通讯设备留下来,然后往上攀登,直到她登上这座名叫celeste的山的山顶。</p><p>“蔚蓝”(Celeste)讲的便是这么一个简单的故事。这个无论从什么方面都简单至极的游戏——对话,人物,操作,故事情节,设定,玩法——却惊人地进入了2018年的TGA候选名单,并夺得了最佳独立游戏与最具影响力游戏的桂冠。是什么让这个游戏如此具有魅力?是这座山,还是爬山的人,还是观看这个故事的我们?</p><p>故事从一个废弃的城市开始。游戏中值得称道的地方有很多,但是我最喜欢的还是引导式的游戏体验。这种不带教程的逐步设定实际上把教程和游戏内容联系在一起,而把这个手法用的最成熟的作品无疑还是Valve的看家神作之一——传送门(portal)。<strong>GLaDOS</strong>,传送门中的反派,在游戏初期扮演玩家的引导者,而在之后的游戏流程中不断给予指引,然而玩家可以明显地感觉到,指引由最早的不带感情色彩到逐步的不怀好意直到最后的摊牌。这种手法把教程给予者的身份给玩家下了一个第一印象,而当真相揭晓的时候玩家又颇有一种豁然开朗恍然大悟之感。而在蔚蓝中,这种引导手法不再由某个角色来执行,而是靠着地图的精妙设计。</p><p>地图的精妙是基于操作的简明完成的。身为一个活生生的人类,玛德琳可以爬墙,但是会失去体力。玛德琳可以走动,可以跳跃,但是不能二连跳。她唯一超乎常人的一点能力是滞空时的短距离冲刺,而这个能力成为了这个游戏的核心技能。通过完成这些简单的动作搭配,很多看上去无法完成的平台跳跃操作都能逐渐被玩家攻克。当然,在游戏的初期,地图简明易懂,通过爬墙跳跃一系列简单操作的上手过程之后,难度逐步加大,而在掌握了某种新的跳跃方式之后,玩家又要被强迫掌握这种新的方式——也就是说,通过上一个地图的特殊方式也许会成为下一个地图不可或缺的前置方法。</p><p>这种引导式的学习法实际上帮助玩家从无到有不知不觉地掌握了简单而精妙的享受游戏的过程。当然,这种引导方式往往被评价为“困难”,甚至成为了游戏的一个标签。上一个这种类型的游戏,是宫崎英高的“魂”系列。作为ARPG的风向标式的明星人物,宫崎先生很了解如何抓住玩家的心。通过不断设置逐步增加的困难关卡,玩家从0到1完成了游戏制作者要求的对游戏的掌握程度。根据宫崎本人的访谈,这种游戏方式实际上还原了本源的游戏手法。实际上在上世纪80年代,许多祖宗级别的电子游戏实际上早已经使用了这种方式——如魂斗罗之类的FC街机游戏等。因此近年来的魂系游戏崛起,只不过是对旧时光的一次文艺复兴行动而已。</p><p>玩家是很欲擒故纵的一种生物。实际上,近年来游戏的“傻瓜式”趋势,完全体现了游戏制作人对于玩家毫无下限的体贴,以及对于难度的无限制放宽。然而,心理学家早已证明,人的成就感的发散,与在剧烈运动之后的多巴胺的分泌某种意义上同源。也就是说,成就感源于对于每一次困难的攻克,而这种成就感会反过来促进对于下次困难的跃跃欲试之感。这是老生常谈的cliche。</p><p>另一种方面来说,信息时代的到来改变了信息来源。在早期的信息时代,发布媒体的只是一小部分人,因此大多数人听取一部分人的意见。互联网的广泛使用之后,大多数人都可以发表意见,因此是大多数人听取大多数人的意见。然而现在的媒体,在借助大数据的工具之后,完成了对每一个独立思考个体的思想封闭。早上在google上搜索了A,那么这个东西就会出现在晚上的推送里。如果你继续点击这个推送,那么类似的推送就会纷至沓来。因此在现今的信息时代,不是大多数人听取大多数人的意见,而是每个人都在听取自己的意见。</p><p>老话说兼听则明,偏信则暗。这也许就是为什么现在互联网上这么多喷子的原因。</p><p>而魂系游戏,相对于其他游戏而言,在游戏难度设定上便是采取了另外一种看法。如果给玩家难度的选择,那么大多数人都会选择简单。毕竟人就是这样懒惰的生物。那么如果说取消所有的难度评级呢?从某种意义上来说,这就是从玩家自己听取自己的意见,到玩家听取制作者的意见的时候了。这是另外一个方面的文艺复兴。</p><hr><p>这个游戏有很多寓意。从玛德琳对于这座山的看法变动,到她的内心具象化,再到最后她登上山顶战胜恐惧的过程。很多东西不必多说,故事由我们来书写。</p><p><strong>你如果说没有人想要爬这种鬼山,那你就错了。</strong>仅仅在2018年,这个精美的独立游戏就获得了50万的销量,而team上攀上顶峰成就的占比为40%,也就是说至少有二十万人已经征服了这座山,即使他们并没有物理意义到过加拿大。但是战胜自己,或者说获得自我救赎的旅程无疑更加精彩。</p>]]></content>
<categories>
<category>essay</category>
</categories>
<tags>
<tag>whimsical</tag>
</tags>
</entry>
<entry>
<title>Note::hello world</title>
<link href="/note/2021.01.29.08/"/>
<url>/note/2021.01.29.08/</url>
<content type="html"><![CDATA[<p>2021年1月30日,本站重启。</p><p>这里是cedar,写点自己想写的。</p>]]></content>
<categories>
<category>note</category>
</categories>
</entry>
</search>