-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.xml
723 lines (696 loc) · 57.3 KB
/
index.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
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Murakumo-san is distributed now</title>
<link>https://renem2185.github.io/</link>
<description>Recent content on Murakumo-san is distributed now</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language>
<copyright>Rene Murakumo</copyright>
<lastBuildDate>Sat, 16 Mar 2024 16:53:28 +0900</lastBuildDate><atom:link href="https://renem2185.github.io/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Lisp (Scheme) に入門していたつもりが、いつの間にか WebAssemblyをかじっていた件</title>
<link>https://renem2185.github.io/posts/chicken2wasm/</link>
<pubDate>Sat, 16 Mar 2024 16:53:28 +0900</pubDate>
<guid>https://renem2185.github.io/posts/chicken2wasm/</guid>
<description>何を言っているかわからねーと思うが (ry TL; DR できたものは こちら Brainf*ck インタプリタですね 書いたコードが動くとたのしい 🫠 今回いつも以上に乱文になりそう、</description>
<content><p>何を言っているかわからねーと思うが (ry</p>
<img src="https://mi.tsujigoya.net/files/0c6702e2-0117-4256-a3f0-06febc6ef21a" alt="ブラウザでなにかが動いてる様子" class="left" />
<h2 id="tl-dr">TL; DR</h2>
<blockquote>
<ul>
<li>できたものは <a href="https://renem2185.github.io/bf/vectorbfi.html">こちら</a>
<ul>
<li><a href="https://ja.wikipedia.org/wiki/Brainfuck">Brainf*ck</a> インタプリタですね</li>
<li>書いたコードが動くとたのしい 🫠</li>
<li>今回いつも以上に乱文になりそう、ゆるして</li>
</ul>
</li>
<li><strong>最近の話が上手く飲み込めないときは過去の文脈を遡ろう</strong>
<ul>
<li>Dockerが分からないなら Chrootから学べばいいじゃない</li>
</ul>
</li>
</ul>
</blockquote>
<h2 id="モチベと背景">モチベと背景</h2>
<p>元はと言えば関数型プログラミングってなんぞや? ってなってたんですよね。</p>
<p>もっと言うと、流行りのプログラミング言語はよく
<a href="https://ja.wikipedia.org/wiki/%E3%83%9E%E3%83%AB%E3%83%81%E3%83%91%E3%83%A9%E3%83%80%E3%82%A4%E3%83%A0%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E">「マルチパラダイム」</a>
だと言われていて、特に関数型プログラミングの機能を部分的に取り入れていて~
って話題になりがちなのですが (要出典)、それ以前の元々の関数型言語ってどんな姿で、
それらはどんなアイデアをもとに書かれていたのだろう? みたいな。</p>
<h4 id="プログラミング言語-lisphttpsjawikipediaorgwikilisp">プログラミング言語 <a href="https://ja.wikipedia.org/wiki/LISP">Lisp</a></h4>
<p><del>え? Haskell? <a href="https://www.ohmsha.co.jp/book/9784274068850/">すごいH本</a>もいま読んでますんで……</del></p>
<p>文 (statement) を使わずとも式 (Expression)
さえあればプログラミングはできてしまうらしい。ただしCとはちょっと違う姿に。
後述。</p>
<p>数ある Lisp方言の中でも <a href="https://ja.wikipedia.org/wiki/Scheme">Scheme</a>
は変数スコープが工夫されているそうで。</p>
<p>あと、データ型が緩くて可変長の配列とか構造とかを好き放題いじくれるのやべえなって。</p>
<h4 id="chicken-schemehttpswwwcall-ccorg"><a href="https://www.call-cc.org/">Chicken Scheme</a></h4>
<p>Scheme → C言語 トランスパイラ兼コンパイラ。</p>
<p>先に述べた不思議な言語をCと組み合わせられると聞いて手を出した次第。</p>
<h4 id="brainfck">Brainf*ck</h4>
<p>プログラミング言語。読めない。
でも機能が少ない分コンパイラが比較的簡単に書けるらしい。
今回はインタプリタにしたけれど。</p>
<p>Lispはプログラミング言語 (のコンパイラとか実行環境)
の開発にも適すると風の噂で……</p>
<p><del>中々自分で書けなくてひとのコードでデバッグせざるを得なかった</del></p>
<h4 id="emscriptenhttpsemscriptenorg"><a href="https://emscripten.org/">Emscripten</a></h4>
<p>C/C++コードを WebAssembly実行ファイルにコンパイルし、
さらにそれをブラウザで読み込ませるJSのコードまで生成してくれるSDK、なのかな?
後述。</p>
<hr>
<h2 id="やっていて感じたこと">やっていて感じたこと</h2>
<h4 id="関数型プログラミング">関数型プログラミング……?</h4>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-scheme" data-lang="scheme"><span style="display:flex;"><span><span style="color:#75715e">; 8bit符号なし整数の範囲からちょっとズレた値を調整する</span>
</span></span><span style="display:flex;"><span>(<span style="color:#66d9ef">define </span>overflow
</span></span><span style="display:flex;"><span> (<span style="color:#66d9ef">lambda </span>(<span style="color:#a6e22e">x</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#66d9ef">cond </span>((&lt; <span style="color:#ae81ff">255</span> x) <span style="color:#ae81ff">0</span>)
</span></span><span style="display:flex;"><span> ((&lt; x <span style="color:#ae81ff">0</span>) <span style="color:#ae81ff">255</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#66d9ef">else </span>x))))
</span></span></code></pre></div><p>if文の()内によく <code>x &lt; 0</code>とかって書いたりしますが、
Lispでは<code>&lt;</code>とか<code>+</code>も前置する関数、
ここでは手続き (procedure) と呼ばれるものになるんですね (注1)。</p>
<p>それと <code>cond</code>は &ldquo;condition&quot;の略で、switch文みたいな分岐をしてくれる子です。
ただしこれも引数がいっぱいある「手続き」になっていて、
マッチした条件式のあとの式が評価されて返されます。</p>
<p>また、一度束縛した変数は基本的に不変 (immutable) で、
必要に応じて <code>set!</code>のような <code>!</code>マークの付いた手続きで上書きも一応は可能、
くらいのスタンスらしいです (注2)。</p>
<p>というのもループなどを含めそもそも破壊的変更が必要なシーンが無いんですね
(それこそパフォーマンスの都合でメモリを上書きしたい、とかそんくらいかもしれない)。
例えば再帰呼び出しする関数も、
その関数単体は引数が同じなら同じものが返るやつ、みたいなイメージ?</p>
<p>他にも、<a href="https://ja.wikipedia.org/wiki/%E9%81%85%E5%BB%B6%E8%A9%95%E4%BE%A1">遅延評価</a>
や<a href="https://ja.wikipedia.org/wiki/%E7%B6%99%E7%B6%9A%E6%B8%A1%E3%81%97%E3%82%B9%E3%82%BF%E3%82%A4%E3%83%AB">継続渡しスタイル</a>
といったコンセプトが有名らしいです。
前者はちょっとだけ今回も使っています。</p>
<p>言うまでもない話ではあるのですが、これらもいわゆる「銀の弾丸」ではなく、
ロジックがミスっていれば普通にコケます。上記のコードも、一度に <code>±1</code>
より大きく増減した数値に対しては思ったように動かないはずです。</p>
<h4 id="リスト操作は計算コストが大きめ">リスト操作は計算コストが大きめ</h4>
<ul>
<li>再帰的に参照してるのだからそりゃあそう</li>
<li>Brainf*ckインタプリタのメモリの実装をベクタに変えたら倍速くらいに
<ul>
<li>これはこれで多分ですが頻繫にヒープメモリを触っていて、
C言語の固定長配列よろしくスタックにものを置く実装より重いのでは
<ul>
<li>もちろん柔軟で便利ではある</li>
</ul>
</li>
</ul>
</li>
</ul>
<h4 id="別の話-特殊なことをしようとするとビルドがちょっと大変かも">別の話: 特殊なことをしようとするとビルドがちょっと大変かも</h4>
<p>最初は手元で Schemeのコードを動かしてキャッキャしてたんですけれども、
WebAssemblyにしたらインストール不要な形で公開できんじゃね?
と思い立ちあれこれ試していたら丸一日以上溶けました。</p>
<p><a href="http://wiki.call-cc.org/man/5/Deployment#distributing-compiled-c-files">参考: SchemeのコードをCのプロジェクトとして扱うチュートリアル</a></p>
<p>Schemeのソースファイルを Cのソースファイルに変換するまではいいけれど、
それを Clangでコンパイルさせるには……?? と
(まぁモジュールのソースコード読めばいいのですけれど、
最終的に今回は依存関係の解決を手動でやっちゃっていたという)。</p>
<p>Chickenで Emscriptenをやっているひとが中々見つけられず、
唯一見つけた例もモジュールがほぼ不要な
Hello Worldコードだったのでその先は試行錯誤しました。</p>
<pre tabindex="0"><code>/bin/ld: /tmp/vectorbfi-b5a9f6.o: in function `f_332&#39;:
vectorbfi.c:(.text+0x926): undefined reference to `C_srfi_2d4_toplevel&#39;
</code></pre><p>例えばこのエラーは <code>srfi-4</code>
というモジュールが不足している、という意味なのですが、
シンボルの名前が保持されていたりいなかったりで最初面食らっちゃいました。</p>
<p>最終的な手順はこちら:
<a href="https://gist.github.com/renem2185/eb907c6b0f554f95de929420d7d20a77">https://gist.github.com/renem2185/eb907c6b0f554f95de929420d7d20a77</a></p>
<p>ビルドとグルーコードの作成さえできちゃえば、
もう今回のように Hugoと GitHub Pagesでデプロイできちゃいますよと。最高ですね。</p>
<p>……多分、単に WebAssemblyをやりたいだけだったら Rustとか C++とか、
他に幾らでも選択肢はあるしその方が最適化できるんじゃないかな?</p>
<hr>
<h2 id="雑感">雑感</h2>
<ul>
<li>たのしい (小並感)
<ul>
<li>関数型プログラミングの心がちょっとだけわかった気がします</li>
<li>いくらか心身の快復を感じました、療養中なんでこんなもんでしょう</li>
<li>てか正直これ動くと思ってなかったので……</li>
<li>レガシーっぽい技術も深掘りすると面白い、かも</li>
</ul>
</li>
</ul>
<h2 id="残件">残件</h2>
<h4 id="chickenのクロスコンパイル機能を試す">Chickenのクロスコンパイル機能を試す</h4>
<ul>
<li>Chicken側でも Clangのオプションが使えるらしい
<ul>
<li>つまり Scheme → LLVM IR → WASM みたいな手順で楽にコンパイルできるのでは</li>
<li>Emscriptenに頼らない方が楽という説も</li>
<li>ついでに WebAssemblyインスタンスのメモリが不足する? 問題も調べたい</li>
</ul>
</li>
</ul>
<h4 id="chickenのffiを試す">ChickenのFFIを試す</h4>
<ul>
<li>Scheme視点からCのコードを includeする例は公式サイトにあった</li>
<li>なんとかして Schemeの関数をWASM側に公開できないかな~?</li>
</ul>
<h4 id="brainfckコンパイラは書かないの">Brainf*ckコンパイラは書かないの?</h4>
<ul>
<li>気が向いたら</li>
</ul>
<h4 id="ここまで来たら他のプログラミング言語も習得できるはず">ここまで来たら他のプログラミング言語も習得できるはず!</h4>
<ul>
<li>そもそも Rustとかの予習を意図していた
<ul>
<li>あとは C++のスマートポインタとかかな</li>
</ul>
</li>
</ul>
<h2 id="脚注">脚注</h2>
<ol>
<li>ここでいう手続き (procedure) はSQLのそれとは別物。大抵何かしら返ってくる。</li>
<li>実装によるみたい? <a href="https://practical-scheme.net/wiliki/wiliki.cgi?Gauche%3Aimmutable%E3%81%AA%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E6%B3%A8%E6%84%8F%E7%82%B9">参考: Gauche:immutableなデータの注意点</a></li>
</ol>
</content>
</item>
<item>
<title>ゲーム遍歴 (2023年まで)</title>
<link>https://renem2185.github.io/posts/played_games_2023/</link>
<pubDate>Sun, 14 Jan 2024 19:19:10 +0900</pubDate>
<guid>https://renem2185.github.io/posts/played_games_2023/</guid>
<description>これ とか これ がちょっと面白そうだったので。 スマホ プロセカ ド初心者。というか音ゲーそのものが初挑戦。 ただキャラの造形があまりに良すぎるのでもう</description>
<content><p><a href="https://whiteblackspace.hatenablog.com/prof">これ</a>
とか
<a href="https://docs.google.com/spreadsheets/d/1y8LQNXrtJ9Wy2nZVFOYO1u1Fuk3h15LpGu6oyyPiAJo/edit?usp=drivesdk">これ</a>
がちょっと面白そうだったので。</p>
<hr>
<h3 id="スマホ">スマホ</h3>
<h4 id="プロセカ">プロセカ</h4>
<p>ド初心者。というか音ゲーそのものが初挑戦。
ただキャラの造形があまりに良すぎるのでもうちょっとお話を読んでファンアートを描き散らかしたい。</p>
<h4 id="アークナイツ">アークナイツ</h4>
<p>新米ドクターから抜け出せないまま、最近リアル理性が足りなくて遊べていない。</p>
<p>パフューマーさんだけようやく昇進2にできた。後方勤務希望なのにごめんね。</p>
<h4 id="clash-of-clans">Clash of Clans</h4>
<p>すんごい前。当時なかなかガチャという文明が好きになれず。
でもこれはこれでソーシャルゲーム(原義)むずいなぁってなった記憶(^1)。</p>
<hr>
<h3 id="pc">PC</h3>
<h4 id="原神">原神</h4>
<p>始めたばっかり。スクロースさんかわいい。けど人となりがまだ見えてこない。</p>
<h4 id="minecraft">Minecraft</h4>
<p>エンダードラゴン未討伐。TNTキャノン開発に明け暮れていた時期がある。
地図かデバッグ画面を見ないとすぐ迷子になる。</p>
<h4 id="besiege">Besiege</h4>
<p>パンジャンドラムを転がしたり飛行機を飛ばしてばっかりでステージを全然攻略していない。</p>
<h4 id="automation---the-car-company-tycoon-game">Automation - The Car Company Tycoon Game</h4>
<p>自動車メーカー経営シムのはずなのだけれど自動車設計パートの熱量がおかしい(^2)。</p>
<p>あと生産計画をミスるとリコールまみれになるけれどそれを握りつぶす選択肢まである。タイムリーですね(?)。</p>
<h4 id="beamngdrive">BeamNG.drive</h4>
<p>自動車シム。↑で作ったぽんこつマシンを自分で運転できる。単品でもずっとやってられる。</p>
<h4 id="ets2">ETS2</h4>
<p>運転たのちい。画面酔いが気にならなくて大変ありがたい。</p>
<h4 id="dirt-rally-20">DiRT Rally 2.0</h4>
<p>コーナーを綺麗にクリアできるとほんと気持ち良いんだけれど神経の損耗が激しすぎる。</p>
<h4 id="hoi4">HoI4</h4>
<p>地図を眺めて兵隊さんを動かして~ってやってるだけで何百時間も溶ける。危険。</p>
<h4 id="apex-legends">Apex Legends</h4>
<p>ド初心者。初めて遊んだFPSがこれなのは流石にどうだったんだろう。不思議と画面酔いしない。</p>
<h4 id="portal-2含め">Portal (2含め)</h4>
<p>エンディングは拝めたけれどどうしようもなく画面酔いするのでもういいかな……</p>
<h4 id="half-life">Half-Life</h4>
<p>なんで先に2をやろうとしちゃったんだろ……(あとで初代買います)</p>
<hr>
<h3 id="pc向けの中でもインディーゲーっぽいの">PC向けの中でもインディーゲーっぽいの</h3>
<h4 id="undertale">Undertale</h4>
<p>そういえばGルートとやらが残っているらしい。</p>
<h4 id="tower-of-heaven">Tower of Heaven</h4>
<p>ゲームボーイ風の音楽がほんと好きで。</p>
<h4 id="洞窟物語">洞窟物語</h4>
<p>初めて遊んだインディーゲーム。
自分でもプログラミングをしてみたくなった切っ掛けの一つかもしれない。</p>
<p>聖域の最後のボスだけまだ倒せていない。</p>
<h4 id="うみとまもののこどもたち">うみとまもののこどもたち</h4>
<p>これ村雲さんイチオシ。GBA辺りの雰囲気が好きなひとには刺さるのではないでしょうか、
とりあえず「ボスバトル」って曲を聴いてくれ。</p>
<p>難易度「ちょうどいい」でクリア済み。「むずかしい」だと戦闘システム自体にテコ入れが入るらしい。</p>
<h4 id="a-short-hike">A Short Hike</h4>
<p>これ、短めだけれどのんびりした雰囲気でとてもほっこり、というか満足度が高かったやつ。
アイテム収集とかまだ拾い忘れがある気がするけど。</p>
<h4 id="elona">Elona</h4>
<p>ローグライクゲームのはず。ノースティリス大陸をうろうろしてるだけで何百時間も溶ける。危険。
キャラの育て方が今一つ分かっていなくて積んでいる。</p>
<h4 id="cdda">CDDA</h4>
<p>難しすぎて1、2日しか生存できてないけれど終末ゾンビサバイバルのワクワク感があまりにもよい。
鉄パイプを曲げてバールのようなものを作るとこから始まるの本格派すぎませんかね?</p>
<h4 id="魔女の家">魔女の家</h4>
<p>もう一つエンディングがあるってまじですか?</p>
<p>多分初めてのホラゲー。思っていたより耐性があるかも?</p>
<h4 id="cookie-clicker">Cookie Clicker</h4>
<p>最近やってないわ。</p>
<h4 id="getting-over-it">Getting Over It</h4>
<p>これクリアできるんですか……?</p>
<hr>
<h3 id="任天堂ハード">任天堂ハード</h3>
<h4 id="星のカービィ-ディスカバリー">星のカービィ ディスカバリー</h4>
<p>ポストアポカリプスな舞台とカービィさんの対比が最高すぎて。</p>
<p>エンディングは見た。がまだなんかある。あとスタアラも100%じゃないけど一応クリア済み。
逆に達成済みなのは記憶が正しければ夢の泉、鏡の大迷宮、USDX辺りだったはず。</p>
<h4 id="ポケモン剣盾">ポケモン剣盾</h4>
<p>剣のほう。DLC未プレイ。SMもだけれど「遊べるアニメ」って感じのグラフィックが素敵。</p>
<p>知識がウルトラムーンで止まってる。てかXYと赤緑もやってないわ。</p>
<h4 id="ポケダン空">ポケダン空</h4>
<p>青春(?)。冗談抜きで性癖か何かをあれにやられた気がする。
ただ当時はまだゼロ島のような正統派ローグライクにハマるには幼すぎた。小学生とかやし。</p>
<h4 id="あつ森">あつ森</h4>
<p>ちょうどコロナ禍の時期で遠方のパートナーさんと通話しながらやったのが懐かしい。</p>
<h4 id="rfa">RFA</h4>
<p>引っ越して騒音問題が解決したのでまた始めたい。</p>
<h4 id="モンハンライズ">モンハンライズ</h4>
<p>初めてのモンハン。ガンランスってなに?</p>
<p>とりあえずマガイマガドさんは倒せたのでまんぞく。</p>
<h4 id="fortnite">Fortnite</h4>
<p>あれ上手いひとほんとに脳みそ何コアあるんだろう。</p>
<h4 id="プチコン">プチコン</h4>
<p>村雲さんが初めて手にしたプログラミング環境。ほかの人が結構ゲームを作ってるので実質ゲームソフト。
古のBASIC方言かと思いきや意外と近代化改修が入っている。でもDATA文の扱いが未だによく分からない。</p>
<p>Switch版の4ならリモコンの加速度とかも取れて楽しい。</p>
<h4 id="メイドイン俺">メイドイン俺</h4>
<p>自分で作るやつ繋がり。当時ゲームを買う小遣いが足りないときにゲームを自給していた。
こちらはビジュアルプログラミングとイベント駆動って感じ。使えるオブジェクトが極端に少なかったけど。</p>
<h4 id="fe聖魔">FE聖魔</h4>
<p>クリア済みと書きかけたところで別ルートの存在を思い出すなど。</p>
<p>ポケモンもですが思い描いた戦い方が綺麗にハマると脳汁がドバドバするほうなのかも。
実際に戦うのはほら、優秀な魔導士さん(^3)とかいらっしゃいますし。</p>
<p>最近覚醒も買っちゃった。そのうちやる。</p>
<h4 id="ゼルダの伝説-夢を見る島dx">ゼルダの伝説 夢を見る島DX</h4>
<p>タルタル山脈のBGMが好きすぎて先日とうとうゲームボーイカラー実機を買ってしまった。</p>
<p>(と言いつつまだカセットを買ってないので先にポケモンのクリスタル版やりたい)</p>
<h4 id="メトロイド-フュージョン">メトロイド フュージョン</h4>
<p>どうみてもホラゲーです本当にありがとうございました。</p>
<p>初代とスパメトも一応クリア済み。探索たのちい。新作買おうかな?</p>
<h4 id="スーパーマリオギャラクシー">スーパーマリオギャラクシー</h4>
<p>クリアしたのはそれこそ小学生くらいの頃だけれど、
周年記念パックみたいなやつでSwitchに移植されたので思わず買っちゃった。懐かしいわね。</p>
<p>そういえば当時も画面酔いしてたわ。</p>
<p>あと2Dの作品だと2とか3とかで滅茶苦茶に時間を溶かした記憶が。
ワープとか覚えちゃうからなおさらワールド8でひたすら沼るみたいな。</p>
<p>マリオカートも好きだけれどWii止まり。</p>
<h4 id="f-zero">F-ZERO</h4>
<p>最近バトロワになった。確かfor GBAってやつなら一通りクリア済み。</p>
<h4 id="スマブラx">スマブラX</h4>
<p>for 3DSもちょびっとだけ。これやるまでFEとか知らんかった。</p>
<h4 id="mgs3-3ds版">MGS3 (3DS版)</h4>
<p>森の奥深くで鳥が鳴いていたり植物が掠れていたり、
警備兵の物音がしていたりすればもうそれだけで最高に緊張感溢れるBGMになるんやなって。</p>
<h4 id="イナズマイレブン">イナズマイレブン</h4>
<p>初代はアニメで観ただけかも。当時クラスメイトとよく対戦してた。</p>
<hr>
<h3 id="プレステ">プレステ</h3>
<p>時々父から借りていました</p>
<h4 id="gt4-5-6">GT4, 5, 6</h4>
<p>私的にレースゲームと言えばこれだったので、初めてマリオカートを遊んだとき逆に戸惑った。</p>
<h4 id="首都高バトル">首都高バトル</h4>
<p>これを作ったスタジオは後にこれを基にゲーセンの湾岸ミッドナイトを開発したとかなんとか。
ちょっと気になってる。</p>
<hr>
<h3 id="注釈">注釈</h3>
<ol>
<li>
<p>タイトル通りと言えばそうなのですがチーム戦みたいなのもあり……</p>
</li>
<li>
<p>車体はもちろんエンジンのボアストローク比率、吸排気、ターボなどなど車両特性をかなり自由に弄れる。
極端な例を挙げるとフィアット500風のボディにRRレイアウトのまま2Lターボエンジンを載せてしまい、
パワーウェイトレシオは良好なのに加速も旋回もままならない子が爆誕するなど</p>
</li>
<li>
<p>ルーテさんとアスレイさんのカp&hellip;同郷コンビ良くないですか?</p>
</li>
</ol>
</content>
</item>
<item>
<title>Misskey個人サーバを立てたあとの管理みたいな話</title>
<link>https://renem2185.github.io/posts/after_misskey_startup/</link>
<pubDate>Thu, 07 Sep 2023 21:03:48 +0900</pubDate>
<guid>https://renem2185.github.io/posts/after_misskey_startup/</guid>
<description>鯖缶の務め is 何? はじめに おつかれさまです、村雲です。 ここしばらくは本当に色々あり、Misskeyはよき現実逃避として機能していたかと思われま</description>
<content><blockquote>
<p>鯖缶の務め is 何?</p>
</blockquote>
<h2 id="はじめに">はじめに</h2>
<p>おつかれさまです、村雲です。</p>
<p>ここしばらくは本当に色々あり、Misskeyはよき現実逃避として機能していたかと思われます。
関わってくださった皆様、いつもありがとうございます。いや本当に。</p>
<p>辛うじて動ける隙間時間みたいなものをかき集めて自分の個人鯖を構築してからは、
こちらのブログもどきそっちのけでマイクロブログのほうをやっちゃっておりますね。
こちらのほうが私に合っているのでしょうか?</p>
<p>ともかく、今回は私のできたてほやほやな個人鯖
<a href="https://mi.tsujigoya.net/">「つじごや」</a>
の運用について書いていこうかと。
と言ってもおひとりさま前提の手抜き仕様なんですけど。</p>
<h2 id="背景-うちの構成">背景: うちの構成</h2>
<p>本編の前に、うちの現環境について軽くさらっていこうかと。</p>
<img src="https://renem2185.github.io/img/misskey_topology_1.png" alt="つじごや鯖構成図" class="left" />
<p>リバースプロキシだけさくらのVPSに置き、残りをオンプレミス (越したばかりの自室) で構築、
両者をWireGuard VPNのトンネルで繋ぐようにしました。</p>
<p>一応はVのものを自称している以上、
グローバルIPアドレスは隠しておきたいなっていう意図です。</p>
<h4 id="vps側">VPS側</h4>
<p>さくらのVPSの最安である <code>512M</code> プランですが、Nginxだけ、かつ今の規模なら余裕そうです。
おかげさまでIPv4 / IPv6両方のグローバルアドレスを持った子が月643JPYです。
お得 (<a href="#%E6%B3%A8%E9%87%88">注1</a>)。</p>
<p>それと初めてRocky Linux 9を使いました。
そこそこ新しいパッケージが降ってくるCentOS、みたいな使用感?</p>
<h4 id="オンプレ側">オンプレ側</h4>
<p>DeskminiっていうミニPCなのですが、以前VMを試していたらちょっと重く感じたので、
より軽量なLinux Container (LXC) とLXDで仮想化しています。
DeskminiというかCPUがちょっと古くて4コア8スレッドなので多分それなんですけれども
(<a href="#%E6%B3%A8%E9%87%88">注2</a>)。</p>
<p>それとホストOS側・コンテナ側共にディストロはOpenSUSE Tumbleweedにしました。
<del>Btrfsが使えれば何でもいい説はある。</del></p>
<h2 id="ほんへ">ほんへ</h2>
<p><strong><a href="https://log.sda1.net/blog/misskey-advent-2022/">nexryaiさまのこちらの記事</a></strong>
がたいへん充実しておりますので、ぜひご一読を。</p>
<p>以下に私の<del>ガバガバ</del>運用をまとめます。</p>
<ol>
<li><a href="#1-%E5%85%AC%E9%96%8B%E3%82%B5%E3%83%BC%E3%83%90%E3%82%92%E5%AE%89%E5%85%A8%E3%81%AB%E3%81%99%E3%82%8B">ファイアウォール</a></li>
<li><a href="#2-%E3%83%90%E3%83%83%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97%E3%82%92%E5%8F%96%E3%81%A3%E3%81%A6%E3%82%A4%E3%83%B3%E3%82%B7%E3%83%87%E3%83%B3%E3%83%88%E3%81%AB%E5%82%99%E3%81%88%E3%82%8B">バックアップ</a></li>
<li><a href="#3-%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E3%82%92%E6%96%B0%E3%81%97%E3%81%8F%E3%81%99%E3%82%8B">パッケージ更新</a></li>
</ol>
<p>みたいに分けてみました。</p>
<h3 id="1-公開サーバを安全にする">1. 公開サーバを安全にする</h3>
<p>セキュリティなんもわからん……</p>
<p>うちの場合、主に直接外に公開しているVPS側の対策になります。</p>
<h4 id="sshポートを外部から隠す">SSHポートを外部から隠す</h4>
<p><code>22/TCP</code>以外に変更しても <code>/var/log/secure</code>が埋まりがちだったので、
グローバルIPへ直接SSHしに行くのではなく、トンネルを経由させるようにしました。</p>
<p>うちだと少々回りくどいですが、
上図のメインPCから一度LXCインスタンスを踏み台にして、
それからトンネルの向こうの鯖に、といった具合に。</p>
<p>↓ Main PC: <code>~/.ssh/config</code></p>
<pre tabindex="0"><code class="language-conf" data-lang="conf">Host さくらのVPS # お好きな名前で
ProxyJump LXCインスタンス # 別途configに記述
Port SSHのポート番号 # 22番に戻していない
Hostname A.B.C.D # VPSのLAN用アドレス、今回はDummy I/Fを使用
User ログインユーザ名
IdentityFile /path/to/鍵_ed25519
IdentitiesOnly yes
</code></pre><p>そしたらファイアウォールでSSHのポートを塞いじゃいましょう。
Rockyの標準であるFirewalldを使っています。</p>
<pre tabindex="0"><code>## さくらのVPSにて
# firewall-cmd --remove-service=ssh --zone=public
## 一時的に塞いでもSSHが途切れないことを確認してから
# firewall-cmd --remove-service=ssh --zone=public --permanent
</code></pre><p>それと<em><strong>トンネルはトンネルで</strong></em> 公開ポート番号をデフォルトから変更するとか、
時々更新をチェックするとか、必要な対策を施せるとよいかなと。</p>
<h4 id="wireguardのログを確認する">WireGuardのログを確認する</h4>
<p>デフォルトだと記録されないようですが、
ダイナミックデバッグなるものを有効化することでカーネルリングバッファに出力させて
<code>dmesg</code>で読めるようになります。</p>
<pre tabindex="0"><code>## さくらのVPSにて、設定をする
# echo module wireguard +p &gt; /sys/kernel/debug/dynamic_debug/control
## ログを読む
$ dmesg | grep wireguard # インターフェース名で絞ってもいいかも
</code></pre><p>例えば自分以外の誰かが侵入を試みていたら</p>
<pre tabindex="0"><code>$ dmesg | grep wg0 | grep -v Keypair | grep -v 自分の端末のIPアドレス
</code></pre><p>みたいな感じで絞れば気づけるかも? (まだ観測していない)</p>
<h4 id="firewalldでブラックリストを作る">Firewalldでブラックリストを作る</h4>
<p>さっきのWireGuardや <code>/var/log/nginx/access.log</code>などで怪しい履歴を見つけたら、
IPアドレス単位でアクセスを拒否できるようにしましょう。</p>
<pre tabindex="0"><code>## さくらのVPSにて、IPv4用のipsetを作成し対象をdropさせる
# firewall-cmd --permanent --new-ipset=blacklist4 --type=hash:ip
# firewall-cmd --permanent --zone=public --add-rich-rule=&#39;rule source ipset=blacklist4 drop&#39;
## IPv6用はこんな感じ
# firewall-cmd --permanent --new-ipset=blacklist6 --type=hash:net --option=family=inet6
# firewall-cmd --permanent --zone=public --add-rich-rule=&#39;rule source ipset=blacklist6 drop&#39;
## ブラックリストへの登録 (IPv6のほうもipsetを合わせるだけ)
# firewall-cmd --permanent --ipset=blacklist4 --add-entry=A.B.C.D
</code></pre><h4 id="selinuxを有効にする">SELinuxを有効にする</h4>
<p>これどっちかと言うと構築時の話ですね。
さくらのVPSのスタートアップスクリプトのほうで有効化しちゃったので。</p>
<p>その場合、sshdやnginxがブロックされてしまわないように
コンテクストやブールをいじってあげる必要があるんですね。</p>
<p>以下を読みながらなんとかしました。
CentOS用の記事がまんま使えてよきですね。</p>
<ul>
<li><a href="https://milestone-of-se.nesuke.com/sv-basic/linux-basic/audit-log-ausearch/">https://milestone-of-se.nesuke.com/sv-basic/linux-basic/audit-log-ausearch/</a></li>
<li><a href="https://tex2e.github.io/blog/selinux/dns-bind-change-port-with-selinux">https://tex2e.github.io/blog/selinux/dns-bind-change-port-with-selinux</a></li>
<li><a href="https://qiita.com/worthmine/items/2bb6563fece396473ffc">https://qiita.com/worthmine/items/2bb6563fece396473ffc</a></li>
</ul>
<hr>
<h3 id="2-バックアップを取ってインシデントに備える">2. バックアップを取ってインシデントに備える</h3>
<p>ことActivityPubサーバに関しては、
DBが吹っ飛ぶと同じドメインネームが使えなくなる仕様があり。
先ほどの図のオンプレ側をいじります。</p>
<h4 id="コンテナを丸ごとバックアップする">コンテナを丸ごとバックアップする</h4>
<p>LXCのストレージバックエンドでもBtrfsを使わせることで、
スナップショット機能がこれを利用したものになるはずです。多分。</p>
<p>コンテナの一時停止・スナップショット取得共に時間は掛からず、十数秒のダウンタイムで済みそうです。
ただ、これだけではストレージ破損で逝ってしまうので
(<a href="#%E6%B3%A8%E9%87%88">注3</a>)、</p>
<ol>
<li>スナップショット取得</li>
<li>スナップショットからイメージを生成</li>
<li>それを別のSSDにエクスポート</li>
</ol>
<p>までSystemd Timerで毎日実行しています。</p>
<p>↓ Deskmini: <code>~/work/backup_lxc.sh</code></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#75715e">#!/bin/bash
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>
</span></span><span style="display:flex;"><span>instance<span style="color:#f92672">=</span>$1 <span style="color:#75715e"># コマンドラインから渡してね</span>
</span></span><span style="display:flex;"><span>now<span style="color:#f92672">=</span><span style="color:#66d9ef">$(</span>date +%y%m%d_%H<span style="color:#66d9ef">)</span>
</span></span><span style="display:flex;"><span>dir<span style="color:#f92672">=</span>/mnt/別のSSD/exported/$instance/
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>lxc snapshot $instance $now
</span></span><span style="display:flex;"><span>lxc publish $instance/$now --alias $instance_$now
</span></span><span style="display:flex;"><span>lxc image export $contain_$now $dir
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>lxc image delete $contain_$now
</span></span></code></pre></div><p>先日レストア試験で復旧できそうってこともざっくりですが確認が取れました (N=1)。</p>
<h4 id="添付ファイルを別途rsyncする">添付ファイルを別途rsyncする</h4>
<p>これまたLXDの機能お試しを兼ね、ストレージボリュームなる仮想ディスクをさっきの別SSDの上で作り、
コンテナにattachしています……つまりさっきのコンテナのデータとは別に管理しているんですね。</p>
<p>コンテナの中からはいつも通りmountしているように見えるので、画像など添付ファイルを置いている
<code>misskey/files/</code>をシンボリックリンクにしてあげるとその保存先を変えられる訳ですね。</p>
<p>こちらは将来的に肥大化することも考え、ただの<code>rsync</code>で別のPCと同期させることにしました。
メインPCのHDDに (比較的) 余裕があったので「たまにうっかり電源切ってて失敗してもええか」
くらいの気分で
(<a href="#%E6%B3%A8%E9%87%88">注4</a>)。
毎晩22時なら起きているでしょう。多分。</p>
<p>↓ LXC instance: <code>/etc/systemd/system/mi-data-bak.service</code></p>
<pre tabindex="0"><code class="language-conf" data-lang="conf">[Unit]
Description = Backup https://mi.tsujigoya.net/ media files
[Service]
Type = oneshot
User = misskey
Group = misskey
ExecStart = /usr/bin/rsync -auv /mnt/ストレージボリューム/ メインPC:/mnt/d/バックアップ/
</code></pre><p>↓ LXC instance: <code>/etc/systemd/system/mi-data-bak.timer</code></p>
<pre tabindex="0"><code class="language-conf" data-lang="conf">[Unit]
Description = Backup https://mi.tsujigoya.net/ media files
[Timer]
OnCalendar=*-*-* 22:00:00
Persistent=true
[Install]
WantedBy=timers.target
</code></pre><p>rsyncのリモートホスト名には、<code>~/.ssh/config</code> で設定したものが使えます。
パスワード入力を不要にしておけば簡単に自動化できるという寸法ですね。</p>
<p>先述のコンテナバックアップも <code>ExecStart</code>と時間が違うくらい。長いので省略。</p>
<hr>
<h3 id="3-パッケージを新しくする">3. パッケージを新しくする</h3>
<p>手動。再起動が必要になったりしますからね。</p>
<p>まれにニュースサイトやTLで脆弱性や障害について情報が流れてくることもあるので、
それとな~く普段から意識しておくのも良いかもしれません。</p>
<h4 id="osのパッケージマネージャで更新をかける">OSのパッケージマネージャで更新をかける</h4>
<p>RockyはともかくTumbleweedに関しては、
同じローリングリリースのArch Linuxを1年ほど放置した結果キーイングに失敗して
「あれ鍵の再生成どうやんだっけな~?」
とかいって調べ始める、みたいなあるあるネタがあるのでちょっと用心した方がいいかも。</p>
<p>なお、OpenSUSEの場合は<code>zypper up</code>のタイミングで勝手にスナップショットしてくれます。
心臓に優しいですね。</p>
<h4 id="misskey側の更新をかける">Misskey側の更新をかける</h4>
<p>手動インストールなので <a href="https://misskey-hub.net/docs/install/manual.html">https://misskey-hub.net/docs/install/manual.html</a> の通りですね。</p>
<p>「Node.jsとかどうやって入れたっけ?」
なんてのも忘れないようメモっておくと後々困らないでしょう。</p>
<hr>
<h2 id="今後やりたいこと">今後やりたいこと</h2>
<p>先述のとおりだいぶやっつけなもんで……</p>
<p>例えば今後オンプレ側でMisskey以外のサービスを増やして、
それを同じリバースプロキシで公開するなら、
WireGuardは別のコンテナに分けたほうがよいでしょうね。</p>
<p>あとストレージが今までそれほど使っていなかった分、
あまり手元に残っていないのでNASが欲しくなってきました。</p>
<p>サーバの負荷 (ロードアベレージ) やRAMの使用率はかなり余裕があるので、
もし私の体調が良くなったりしたら、
招待制のまま利用者を募って実際にユーザを収容してみるのもいいかもしれません。</p>
<h2 id="おわりに">おわりに</h2>
<p>思ったより長くなっちゃいましたね。3,000字とか久々に書きました。</p>
<p>また140字くらいに収まるつぶやきがメインになりそうですが、
たまにはこうしてマイクロじゃないほうのブログをやってみるのも楽しいものですね。
ともかく、これからも気ままにやっていく所存でございますので、どうぞよしなに。</p>
<p>あっ、よろしければチャンネル登録の代わりに
<a href="https://renem2185.github.io/posts/links">SNSのフォロー</a>をお願いいたします。村雲ルネでした。</p>
<hr>
<p>2023.09.09 投稿、直後に誤字修正、注釈追加</p>
<h2 id="注釈">注釈</h2>
<ol>
<li>
<p>ぶっちゃけ好み。探せばもっと安いVPSサービスは幾らでもあるはず、
でも「最安プランだとIPv6非対応」なんてのもちょいちょい見かけるような?</p>
</li>
<li>
<p>当時Deskmini A300に載せられるもので一番良さそうだった Ryzen 5 3400Gという石です。</p>
</li>
<li>
<p>Btrfsについてはこちらの資料が詳しいです。ソフト的な変更をすぐに巻き戻せるイメージ。
<a href="https://event.ospn.jp/osc2020-online-spring/session/61353">https://event.ospn.jp/osc2020-online-spring/session/61353</a></p>
</li>
<li>
<p>今回WSL2めがけてSSHしているのですけれども、
Windows側でファイアウォールを開けつつnetshでポートフォワーディング……でよかったのかなこれ?</p>
</li>
</ol>
</content>
</item>
<item>
<title>Links</title>
<link>https://renem2185.github.io/posts/links/</link>
<pubDate>Sat, 26 Aug 2023 19:48:00 +0900</pubDate>
<guid>https://renem2185.github.io/posts/links/</guid>
<description>だいたいこの辺におります Fediverse Mastodonなどからでもフォローできます つじごや (個人鯖) みすほわいと (Misskey) がっきー (Firefish) Nostr こっちにも分散してたりして</description>
<content><p>だいたいこの辺におります</p>
<h3 id="fediverse">Fediverse</h3>
<p>Mastodonなどからでもフォローできます</p>
<ul>
<li><strong><a href="https://mi.tsujigoya.net/@renem2185">つじごや (個人鯖)</a></strong></li>
<li><strong><a href="https://mi.mashiro.site/@rene_murakumo">みすほわいと (Misskey)</a></strong></li>
<li><strong><a href="https://calckey.aokaga.work/@renem2185">がっきー (Firefish)</a></strong></li>
</ul>
<h3 id="nostrhttpsnjumpmenpub1qzf2ezeurw79g22wsrt9j8s3d487kkxxa86yrd77fsvtk8y0tpssgzjdh3"><a href="https://njump.me/npub1qzf2ezeurw79g22wsrt9j8s3d487kkxxa86yrd77fsvtk8y0tpssgzjdh3">Nostr</a></h3>
<p>こっちにも分散してたりしていなかったり</p>
<h3 id="x-twitterhttpstwittercomrene_murakumo"><a href="https://twitter.com/rene_murakumo">X (Twitter)</a></h3>
<p>RTが多めだけど許して</p>
<h3 id="notehttpsnotecomrene_murakumo"><a href="https://note.com/rene_murakumo">note</a></h3>
<p>作文して~!</p>
<h3 id="pixivhttpswwwpixivnetusers70132785"><a href="https://www.pixiv.net/users/70132785">pixiv</a></h3>
<p>絵も描きて~!!</p>
<h3 id="youtubehttpswwwyoutubecomrene_murakumo"><a href="https://www.youtube.com/@rene_murakumo">YouTube</a></h3>
<p>動画も作りて~!!!</p>
<h3 id="niconicohttpswwwnicovideojpuser89913194"><a href="https://www.nicovideo.jp/user/89913194">niconico</a></h3>
<p>VTuber活動にこだわらずにやっていき</p>
<h3 id="githubhttpsgithubcomrenem2185"><a href="https://github.com/renem2185">GitHub</a></h3>
<p>これから使う予定</p>
<h3 id="togetterhttpstogettercomidrene_murakumo"><a href="https://togetter.com/id/rene_murakumo">Togetter</a></h3>
<p>だいぶ前のツイートとか</p>
</content>
</item>
<item>
<title>近況とか私の身体についてとか</title>
<link>https://renem2185.github.io/posts/about_my_health/</link>
<pubDate>Sat, 06 May 2023 00:44:53 +0900</pubDate>
<guid>https://renem2185.github.io/posts/about_my_health/</guid>
<description>おつかれさまです、村雲ルネです。 私が大学院に進んだ辺りから療養と復帰を繰り返している件について、 一応書いておこうって思いまして。備忘録も兼ね</description>
<content><p>おつかれさまです、村雲ルネです。</p>
<p>私が大学院に進んだ辺りから療養と復帰を繰り返している件について、
一応書いておこうって思いまして。備忘録も兼ねて。</p>
<blockquote>
<p><em><strong>NOTICE</strong></em></p>
<p>私は医師ではありません; ご自身の健康問題に関しては、専門の医療機関に相談してください</p>
</blockquote>
<h2 id="tldr">TL;DR</h2>
<p>実のところ、2021年夏頃に以下の診断を受けていました:</p>
<ul>
<li><strong>片頭痛 (緊張型頭痛との混合型)</strong></li>
<li><strong>起立性調節障害 / 起立性低血圧</strong></li>
</ul>
<p>特に後者は5軒目くらいのお医者様でようやく判ったり、
一度よくなったと思いかけたところでまた悪化したり、
とまぁ学業がつらい状況がかれこれ1年以上続いたんですね</p>
<p>(もっと言うと20歳を過ぎて診断されるのは割と珍しいみたい?)</p>
<p>それで、今年の3月から始めたお薬が合いそうってことがようやく分かって、
ちょっとずつ動けるようになって、
少しずついい方向に進み始めたのかな?</p>
<hr>
<h2 id="つらいってのは具体的にどういう">つらいってのは具体的にどういう?</h2>
<blockquote>
<ul>
<li>めまいと吐き気で立っているのも座っているのもきつい</li>
<li>頭痛で直前に何をしていたか忘れる、痛み止めは効くがそれまでは横になっているしかない</li>
</ul>
</blockquote>
<p>……動ける日は動けるのですが、そうでない日はまあこんな感じでして、
まず大学に辿りつけないわ、
無理に行ったところでおよそ使い物にならないわ、っていう。</p>
<p>あと前者については血圧を上げる薬で対処……しているはずなのですが、
まぁだめな時はだめとしか。</p>
<h2 id="何に気を付けて生活しているの">何に気を付けて生活しているの?</h2>
<p>病名でggってもおよそ「医者にかかって生活習慣を改善しましょう」
としか出てこないです。具体的には? っていうのはきっとひとによるのでしょう。</p>
<h3 id="朝の支度とか">朝の支度とか</h3>
<p>なるべく決まった時間に起きて朝ごはんを食べてお日様を浴びて……
というのが理想なのですが、これがなかなか一筋縄ではいかないのですよね。</p>
<p>強いて言えば、敷きパッドを追加してベッドの硬さを調整したり、
枕をちょっといいやつに変えてから、多少はマシになったような? [要出典]</p>
<p>それと、ノイズキャンセリングヘッドフォンを持ち歩くようになりました。</p>
<p>片頭痛で聴覚が過敏になる場合があるそうで、
工事の音や公共スペースのテレビみたいな物音が、
自分で思っている以上に負担になってしまうようです。</p>
<p>それと運動。散歩とか、ラジオ体操とか?</p>
<p>それでも気温差とか気圧とか前日の疲労、
その他諸々でだめなときはどうしてもあるので
まぁなんというか、無理はしないっていう心持ちで。</p>
<h3 id="学業とか">学業とか</h3>
<p>まだ週5で通うのは当面難しそうなので、
リモートワークを交えながら少しずつ研究を再開、
みたいな感じで教授とも概ね話がまとまりました (まじでよかった)</p>
<p>職探しは一旦後回しで。しゃーなし。</p>
<p>あとは座りっぱなしを避け、時々立ってストレッチをしたり、
水分をこまめに摂ったり、みたいな感じでおります。</p>
<p>それでも軽めの頭痛とかは――私の場合ほぼ毎日来るので、
痛み止めを服用しつつ「頭痛ダイアリー」に記録を残すことで
次に繋げられるようにできたらなぁって。</p>
<p>最近は朝起きた時間とか活動量なんかもまとめて記録して、
お医者様に見せられるようにしています。</p>
<h3 id="家に帰った後とか">家に帰った後とか</h3>
<p>重要なのはお風呂ですかね、湯船できちんと身体を温めること。</p>
<p>自転車で行ける距離の場所にサウナがあるので、
時々通うようにしたら良い感じになったりしないかな……?</p>
<p>それにご飯を摂ること。もとが小食なので、これも意識的に
やっていく必要があるようです。</p>
<p>ただこれ、沢山食べても胃腸で消化吸収できないといけないみたいで。
私の場合は漢方薬局に相談しにいって初めて気づけたのですよね。
これまた長い目でやっていく必要がありそうです。</p>
<p>あと22時以降はブルーライトを控える――
これはまだ上手くいってませんね、ついつい呟きを……</p>
<hr>
<h2 id="future">Future</h2>
<p>ちょっとずつ創作もやってきたいなぁ、
という気持ちは今も変わらず持ち続けております。
落書きなんかはこれからもぼちぼち投下していきたいですね。</p>
<p>ただ自分の身体のことを優先せざるを得ないということもあって、
例えばVTuberっぽい活動、とかってなるとなかなか先の長い話になりそうですね、
これは前にも言った気がしますが。</p>
<p>こんな私を忘れずにいてくださったかた、
最近になって私を見つけてくださったかた、
皆さまに感謝を込めて。</p>
<p>2023.05.06 村雲ルネ</p>
</content>
</item>
<item>
<title>About</title>
<link>https://renem2185.github.io/posts/about/</link>
<pubDate>Thu, 04 May 2023 18:40:00 +0900</pubDate>
<guid>https://renem2185.github.io/posts/about/</guid>
<description>村雲ルネ (Rene Murakumo) と申します ひとのふりをして大学院生をやっているひつじです</description>
<content>
<img src="https://renem2185.github.io/img/5kY6_cEZ_400x400.jpg" alt="Rene M. Portrait" class="left" style="width: 200px; height: 200px;" />
<p>村雲ルネ (Rene Murakumo) と申します</p>
<p>ひとのふりをして大学院生をやっているひつじです</p>
</content>
</item>
</channel>
</rss>