ISUCONに出た

「初めて蟹を見た kofuk」というふざけた名前のチームで @uta8a と ISUCON13 に出ました。 当日のリポジトリも公開しています。 GitHub - uta8a/isucon13q-2023-11-25: ISUCON 13 https://github.com/uta8a/isucon13q-2023-11-25 ISUCON 13. Contribute to uta8a/isucon13q-2023-11-25 development by creating an account on GitHub. パフォーマンスに詳しくない人がほとんど準備せずに行くとこういう景色になるという感じで、結果は褒められたものではなかったです。 ただ ISUCON は人それぞれのレベルで頑張れるイベントで知識が薄くても暇になるということはないという感じで、良いイベントだなーと思いました。 めちゃくちゃ楽しかったです。 ちなみにチーム名はこれ↓が元ネタです。 蟹を初めて見た上田晋也みたいなツイートを見て電車で大笑いしていてマジで恥ずかしい — kofuk (@man_2_fork) April 14, 2023 uta8a が詳しくブログに書いてくれました。 ISUC

Daidoquer2(Discord読み上げボット)を使った記録

Daidoquer2 (ddq2) という艮鮟鱇さんが作った読み上げボットをローカルのマシンで立ち上げ、 Discord のテキストチャンネルに書いた内容がボイスチャンネルで読み上げられるようにしたという記録です。 割と苦戦して、艮鮟鱇さんにヘルプ求めまくりながらやったところなんとか動くようになりました。 問題の原因はほとんど使っていた Docker イメージが古かっただけということもしなくもない。 TL; DR 的なサムシング 書いていたら思いの外前置きが長くなったので、(たぶん)順当に構築できた場合の手順との差分を最初に書いておきます。 docker-compose.yml が指しているイメージを最新にする ddq2 の images のところを書き換え ここを見て最新のやつを使ったほうが良さげ 他の人が喋っていたら音量を下げる機能

Arch Linuxでext4のrootfsをLUKSで暗号化する

既存のファイルシステムを暗号化もできるらしい。 とりあえず使い捨ての環境でやってみたのでメモしておく。使ってる環境でやるならバックアップ取ってからやった方がいいと思う。 まず、Arch のインストールメディアで起動する。 ここでは /dev/nvme0n1p2 に rootfs があって、それ以上は分割されていないものとする。 複数のパーティションを 1 つの暗号化パーティションに入れることができるかは分からない。 LUKS のヘッダ分のスペースを空けないといけないので、まず ext4 のファイルシステムを縮小する。 僕はデータが入り切る最小サイズまで縮小した。計算が得意な人はギリギリのサイズに縮小してもいいと思うけど、 ext4 だとデータはあんまりバラけてないはず(多分)なので

Arch Linuxを暗号化したディスクにインストールする

Arch Linux を LVM on LUKS の root filesystem にインストールしたのでメモ。 LVM を使うこと自体は完全にオプションで、LUKS の上に ext4 のファイルシステムを作っても別に良い(はず)。 これがどういう構成かというと、物理パーティションの上に LUKS で暗号化したパーティションを作り、 その上の LVM2 の LV の上の ext4 のパーティションに rootfs を作るというもの(オフチョベットしたテフをマブガッドしてリットにしてそうな説明)。 (意外にもとハマらずにできたので情報としての価値は低めです。) インストールガイド に従ってパーティションを切るところまでやる。 パーティションはこんな感じで切った。 ディレクトリ 範囲 説明 /boot 1 MiB–1 GiB ブートローダとか諸々用 / 残り全部 残りのディレクトリ用

LinuxのLVMに入門したのでいろいろメモ

LVMというのは抽象化したレイヤーを通して物理的なストレージにアクセスするというやつ(適当)。 物理的なストレージを直接使うよりもいろいろ変なことができるので嬉しいらしい。 雑に概念を説明 LVM には PV(Physical Volume)、VG(Volume Group)、LV(Logical Volume) という概念がある。 まず、PV というのは物理的なストレージに一対一で対応する概念で、SATA 接続のストレージだと /dev/sda1 で一個、 /dev/sda2 で一個みたいになる。 SSD をパーティションで区切っていない場合は /dev/sda で一個の PV とか。 次に、VG というのは、普通にストレージを使っているときは 1 個のストレージデバイスに対応する概念(のような気

Ubuntuの/tmpをtmpfsにする方法

systemd のデフォルトでは /tmp は tmpfs でマウントされるようになっている。 でも Ubuntu では /tmp で tmpfs を使わないようにしてある。何度か /tmp を tmpfs にする試みはあったらしい1が……。 まあどうでもいいといえばどうでもいいが、Ubuntu の /tmp を tmpfs にする方法。 $ sudo systemctl enable /usr/share/systemd/tmp.mount $ sudo reboot これだけ。 通常、systemd では /tmp は tmp.mount でマウントされる。 Ubuntu でもこのファイルは /usr/share/systemd にインストールされるようになっていて、ユーザの好みに合わせて使える。 ただし、ここはユニットファイルの検索パスに入っていないので普通に指定すると有効化できない。 というわけで、フルパスを指定して mount unit を有効化することで、直接使えるようにしている。 起動中に /tmp をマウントし直すと中に置いてあるファ

Emacsのマグカップを買った

FSF のショップにある Emacs のマグカップを買ってみました。 テカテカで映り込みそうなのであんまり写真は上げていないんですが、なかなか良いです。 ロゴの色は FSF のページの写真よりちょっと青っぽいですね。これは個体差なんでしょうか。 これを注文したのは 11/29 とかだったのですが、届いたのは年が明けて 1/25 とかでした。 箱に何故か中国郵政のステッカーが貼ってあったので、誤配送で中国を経由してしまった説はあります。 (一番安い配送オプションを選んだせいもあると思います。) 1 ヶ月後に控えた引っ越しに間に合うかとビクビクしていたんですが、何もメールが来なかったのは FSF に登録しているメールアドレスを 更新し忘れていたせいだと後で気づきました

Linuxのreadとrecvは何が違うのか

man 2 recv [Enter]ターン The only difference between recv() and read(2) is the presence of flags. With a zero flags argument, recv() is generally equivalent to read(2) (but see NOTES). (適当な訳) recv() と read(2) の違いは flags の有無のみです。flags が 0 のとき、recv() はほとんどの場合 read(2) と等価になります。 おわり というのもアレなので Linux kernel のソースを読んでどうなっているのか見てみることにしました。 僕は Linux ニワカなので見当違いなことを言っている可能性もあるのでまあそういうつもりで読んでいただけると……。 Linux のソースコードはたまたま手元にあったやつなので超適当ですが、よく見たら 2020 年のやつでした(思ったより古かった) Linux のシステムコールは SYSCALL_DEFINEn みたいなマクロで定義するので、適当に grep します。 すると read は fs/read_write.c recv は net/compat.c にあることが分かりま

Mesonのコードを読む (1)

お久しぶりです。 どうでもいいことを気軽に書けるように(ブログサービスではなく)自分のブログを作っているのに、あんまり気軽に書けてないなと感じている今日この頃です。 で、普段からどうでもいいことを書いていないとどうでもいいことも書きづらくなってしまうな(?)と思ったわけで、質にはこだわらずにどうでもいい記事をぽんぽん出していこうと 思ったわけですね。でも書くからには何かネタがないと厳しいなというわけで、適当にそのへんの OSS のコードを読んでそれを記事にするというのをひとまず続けてみようと思っています。 コード読んで解説くらいだったらそんなに負荷も高くないので続けられそうという希望的観測もあります。 あと他人

Meson で subproject のオプションを指定する方法

備忘録。 出てこないなーとか思ってたら普通に書いてあった。 単に -D で指定するときに subproject名:オプション名 というふうに指定すればいいだけだった。 例えば subproject hoge でだけ warning_level を 3 にしたい場合は $ meson configure -Dhoge:warning_level=3 のように指定すれば ok。 ちなみにモジュール (meson.build の中で import とかして使うやつ) ごとのオプションは . で区切る。 なので pkgconfig の relocatable を true にする場合とかは -Dpkgconfig.relocatable=true とかを指定すればいい。 参考 Built-in options