hogecoder

tsutaj 競技プログラミングの記録

Mac で CTF 用 x86_64 環境を作る

きのうから CTF をやり始めました。普段使ってる PC は M5 Mac なんですが、何もしないと x86_64 環境を前提としたバイナリが動かせなくてつらい!ということで、環境構築をしました。やったことを残しておきます。

作ったものはここに置いてあります。CTF をやるために、通常の開発では非推奨のフラグなどもつけてるので、利用は自己責任でお願いします。

github.com

Docker Desktop から Colima に移行する

自分の PC には Docker Desktop を元々入れてましたが、Colima に変えました。最初は変えなくてもいいかなと思ってたんですが、やってよかったです。

  • Docker Desktop 上で Ubuntu イメージを入れて使うと、gdb がうまく動かない
  • Colima だと VM を複数扱えるが(後述)、Docker Desktop だと多分できない

このあたりが理由です。下の記事に従えば移行できました(ありがたや)

qiita.com

Colima に x86_64 VM を入れる

上の記事に従って Colima を入れたところ、aarch64 (ARM) の VM のみが入りました。このままでも x86_64 の Ubuntu イメージを入れて使うことはできますが、VM から x86_64 に揃えておくと良さそうです。どの VM を使うかによって、手元では以下の違いがありました。

  • aarch64 の VM だと、gdb 使用時に ptrace 周りで warning が出る
  • x86_64 の VM だと出ない
# aarch64 の VM だとこれが出ていた
warning: Could not trace the inferior process.
warning: ptrace: Function not implemented

x86_64 の VM は次のようにして入れました。

$ brew install qemu lima-additional-guestagents

# x86_64 の VM を作成
$ colima start -p x86_64 --arch x86_64 --vm-type vz --vz-rosetta --mount-type virtiofs

# 環境が作られていることを確認
$ colima list
PROFILE    STATUS     ARCH       CPUS    MEMORY    DISK      RUNTIME    ADDRESS
default    Running    aarch64    2       2GiB      100GiB    docker     
x86_64     Running    x86_64     2       2GiB      100GiB    docker 

$ docker context list
NAME              DESCRIPTION                               DOCKER ENDPOINT                                    ERROR
colima *          colima                                    unix:///Users/tsutaj/.colima/default/docker.sock   
colima-x86_64     colima [profile=x86_64]                   unix:///Users/tsutaj/.colima/x86_64/docker.sock    
default           Current DOCKER_HOST based configuration   unix:///var/run/docker.sock     

docker コマンドを使う時に --context colima-x86_64 をつけると、x86_64 の VM を使ったうえで docker の各種操作ができます。
(常に x86_64 の VM を使うのでよければ、 docker context use colima-x86_64 のほうが手軽そう)

この記事も参考になります:

qiita.com

2025 年の振り返り

今年もお疲れ様でしたってことで、振り返りです。

去年 ↓ tsutaj.hatenablog.com

競プロ

JAG 夏合宿の運営&ICPC の手伝い

去年と同じく、ICPC 関連のイベントに関わってました。

夏合宿では、オリセン予約の事務周り(宿泊部屋とか食券とか懇親会とか)を色々やってました。スタッフ参加は 3 回目で、どういう作業がいるかも大体わかってきた感じ。あとはこれを次世代にどう引き継ぐかを考えたいね。

夏合宿の朝は早い(利用受付)

心のふるさとであるところのカフェテリアふじ

ICPC アジア地区の手伝いに行くのは今年で 4 回目。JAG で手伝いに来てる人も 3 分の 1 くらい年下になってきてて、時の流れを感じる・・・。今年も大会がつつがなく進行してよかった。

エントランス綺麗だなって毎回思ってる

手伝いにガッツリ参加できるのは、たぶん今年で最後なんで、もうちょっとだけ振り返りのほうを・・・
コロナ禍では夏合宿が中止になったり ICPC アジア地区がオンラインになったりと、例年通りの活動ができないときもありましたが、もう完全に乗り越えた気がしてて個人的には感慨深いです。生成 AI が進歩したとしても、ICPC は日頃の準備とチームワークを発揮できる場であり続けてほしいなぁと勝手に思ってるんで、なんらかのかたちで応援できたらいいな。

AtCoder ヒューリスティック 2051 → 2167

今年はあまり時間を割けなくてゆるふわ参加気味だったんですが、かろうじて上がってました。

今年の目標にしてた「GP30 正の得点を取る」は、達成しました!!(短期コンでラッキーパンチ 1 回)

来年は、タイパ重視で上達していきたいな。あんまり練習してないのにコンテストだけ漫然と出てた時期があったのが反省点で、コンテスト時間より復習に時間を使う意識でいきたい。

合唱

合唱団お江戸コラリアーず という団体で男声合唱をしてます。
というのを今年にこのアカウントで初めて言ってて、それを機に X(Twitter)のアイコンを自分の顔に変えました。

今年は発声が少し良くなった気がします。ボイストレーナーの先生の個人レッスンを受けられる機会があるんですが、そこで自分の悪い癖を矯正できたかなと。

合唱のどこが好きか?というのは、たぶん人によって色々ですが、自分の場合は「自分の声と周りの声とが溶け合って、良いハーモニーになるところ」が好きです。自分の声が良くなればハーモニーも多少は良くなるはずなんで、自分の声が合唱の面白さに直結してるともいえます。なので発声の改善は今後もぜひやっていきたいところ。

仕事

本業では、いくつかの開発領域で Tech Lead を担当するようになったり、Oncall を担当するようになったりと、良い意味で責務が増えた 1 年でした。

note.monoxer.com

「副業の時間を減らして、得られる知見の量を増やす」っていうのを今年の目標として掲げたんですが、副業の業務時間を計算してみたら、去年よりも 100 時間くらい少なかったです。
そのぶん得られる知見の量が増えたかって言われると、あまり自信はない・・・。本業に向き合う時間はそれなりに増えたけれど、読んだ本の数は去年より減ってるし、去年と違って資格は特に取ってないし。正直「今日は疲れたから明日やろう」って思っちゃった日が多かった気もします。来年はもう少し頑張れるといいかな。

あと、これは本業・副業で共通して言えるんですが、生成 AI の進歩がすごいなって感じた 1 年でした。
今年の初めに、提案のクオリティ微妙だな〜って思ってたプロダクトが、半年後にはかなり使えるものになってて、とにかくスピードが速かったですね。
生成 AI をうまく使いこなすにはどうすべきなのか、どこまでは AI にできてどこから人間の介在が必要になるのか、その辺はかなり興味があります。来年以降もぜひ追っていきたい。

来年の目標

2024 年末に立てた目標 はだいたい達成できてました。(副業の時間を減らしたぶん、知見の量が増えたのかは微妙だけど・・・)
来年は↓で行きます。

  • AtCoder ヒューリスティックで橙をとる
    • 瞬間最大風速的な目標はなんだかんだ達成できちゃうことが今年わかったから、ちゃんと向き合わないといけないようなチャレンジングな目標を立ててみる!!
  • (他に成し遂げたいことが特になければ、)副業の時間を今年よりも増やす

それでは、よいお年を〜