最近の雑記

色々と長い期間を掛けてやりたいことがたくさんでてきて記事を書かなかった。今日も夜ご飯を食べることができなかったし、多分ちゃんと疲れているのだと思う。


壺で2:40を取得した。もう数秒を詰めるだけで大変だな、という気持ちの他、例えばfunitureあたりはかなりマシな動きができるようになったので、つまり僕の進化はまだ止まらない。

Glitchless in 2m 40s 852ms by naari3 - Getting Over It With Bennett Foddy - speedrun.com

www.youtube.com


「極味や」というお店でハンバーグを食べた。本当においしかった。並び始めが11時15分くらい、店が始まったのが11時30分、中に入れたのは12時過ぎあたりだった。

形を整えられただけの赤いハンバーグが目の前に出され、これを熱くなっている鉄板の上で焼く形式。店員さんに触ってもよい、と指示されたタイミングではまだ表面のみが熱された状態なので、自分たちで切り分けて鉄板で赤みがなくなるまで追加で熱して食べる。肉の味が凄くしっかりしていて、岩塩と白米が一番合うタイプのハンバーグだった。

とんかつの話にも通じるが、これも家庭のハンバーグとはレギュレーションが全く違うもので、これこそ外食でないと食べられない味なのだろうと思った。調理過程が本当に知りたい。できれば家で食べたい。


Minecraftをやった。葉月味というヤロウがSkyblockをやりたいと言い出したのでサーバーを立てた。進捗は以下のツイートのツリーをどうぞ。

こんなにも狭い土地は、現在はある程度の広さまで拡充されており、複数のTTが立っていたり、目覚ましい発展を遂げたと言える。最初に50個の目標が用意されるのだが、未達成のものはあとひとつとなった。絶賛苦労中なので、もし全てが埋まったらこれについての別の記事が書きたい。

初期に参加してくれた方々が皆Minecraftに対して深い理解を示していたのもあってかなり勢いの良いスタートダッシュを成功させた形に思える。現状までに特段荒れたようなこともなく、参加者の民度が良くて本当にうれしい。


↑のサーバーの話。

今回はOracle Cloud Infrastructureの異常に強力なAlways free枠を使って建てた。身内で遊ぶ分には充分すぎるスペックを無料で提供してくれて、ありがとう。

コンポーネントの準備について。普通にたてるのはつまらないし、何よりメンテナビリティを大きく損なうので、ある程度気軽に、だがそれなりに便利な docker-compose.yml を作った。→skyblock-minnna。以下これを説明する。

まず、今Minecraftサーバーを建てるのであれば確実にコンテナとして立ち上げたくなるだろう、ということで itzg/minecraft-server をつかう。これは、itzgさん*1の作った異常に便利なコンテナイメージで、環境変数を与えることで無限の機能が働く。例えば、ワールドデータのダウンロードだとか、各種プロパティの設定、果てにはPaperやFabricのサーバーまで驚くほど簡単に建てることができる。docker-compose.yml を見てもらえばなんとなくわかると思う。

バックアップは次のコマンドで、リストアはその逆を行えば良い。愚直で嬉しい。やはりコンテナは便利。

docker run --rm -v skyblock-minnna_mcbig:/data -v $(pwd)/backup:/backup alpine tar cvf /backup/backup-$(TZ=JST+15 date '+%Y%m%d%H%M').tar /data

次に、Discord用のbotを作成した。今回はDiscordのサーバー上に人を集めてから運用する前提のため、運用を手助けするためのbotが必要になった。まずは許可された人だけがDiscordからコマンドを実行できる機能を実装した。ゲーム上で自分にopを渡す、でもよかったが、これを行うとスポーンチャンクあたりが保護されてしまう。これはたいへん煩わしい機能な上、初期状態があまりにも狭いこのSkyblockでは最悪何もできなくなる可能性があったため、なんとしても避ける必要があった。また、コマンドをサーバーのメンバーに見える範囲で実行することである種の透明性を持たせたかった。

あとはホワイトリストに人間を追加するために「メッセージに記載されたminecraft nameに :heart: のリアクションを付けることでホワイトリストに追加する機能」を実装した。これは言わずもがな便利でしょう。

docker-compose.yml に記載のあるように、Minecraftがrconを受け付けること、DiscordのBot用tokenを渡すことの2つができれば起動することができるはず。今後も使い倒してどんどん便利な機能をつけていくぞ。

実装の詳細はまた今度書きたい。Rustが楽しかった話とか。


仕事でJenkinsをお膳立てするための環境を作っていた↓どこかでちゃんと記事を書きたい。

Configuration as Code というプラグインによって、Jenkinsのコード管理を実現している。ただ、本当はコード管理が大前提のBetter Jenkinsを求めている。誰か助けてください。


いつもmineoを使っていたんだけど、昼間の回線が常に重いという問題を抱えていたので、試しにpovoに乗り換えてみた。ちょっと前までは「どうせ全く外に出ないのだし、今真面目に考えてもなあ」とか思っていたんだけど、

  • 結局急な外出時に毎回↑の問題に当たってストレスを抱えてしまうこと
  • povoは基本料金が0円であること
  • 知り合いがデュアルSIMの2本目として契約した話を聞いたこと

が重なって、ついに乗り換えてしまった。povoと自分の所有しているiPhone 12 Pro MAXはどちらもeSIMに対応している。eSIMは物理のカードのやりとりをすることなく通信が可能な形態で、契約後に発行されるコードをiPhoneの設定で入力するだけで通信可能な状態となる。これがかなり良い体験だった。物理カードのやりとりをしなくてもよい、というのはお互いにとって大きなメリットだと思う。全てがRDB上のレコードで解決される雰囲気があり、スピード感がかなり良かった。実際、最初に必要な会員登録のメールが届いてから、利用開始連絡のメールが届くまでに15分も掛かっていなかった。たったこれだけの時間でmineoからのMNP転入→実際の通信開始までたどり着くことができた。過去に何らかの通信キャリアとの契約体験をしたことのある人間にとっては驚くべきスピード感だと思う。

契約時、知り合いの紹介コードを入力したので今日は一日通信し放題とのことだった。なのでWi-Fiを切ってずっと4Gで通信させているが、通信速度は一日を通して概ね良好に見えた。明日以降はクーポンという形式で配布されているデータ容量を購入することで高速な通信が可能になるらしい。通話についても、相手に掛けるより先に「n分間通話し放題」のクーポンを買わなければ割高になってしまうらしい。とはいえ、上述の通り基本的には家から出るないのでその時に気をつけることができればきっと問題ない。

もしpovoも遅かったらどうしよう、とか思っていたけど、最近はMNP転出に料金が掛からない上に、途中解約金のような概念も存在しないことが多い。povoはどちらも満たしているので、その気になればいつでもahamoに乗り換えることができるのだ。より純粋にサービスの質で戦うことができてるっぽいし、いい時代になったと思う。

ちな僕のコード→ L32JV087

*1:おそらくhypixelで働いている