最近どうよ

  • 今日はつらかったです
  • ずっと辛い。そろそろ仕事辞めたい。そろそろもクソもずっと言ってるよな。五年前くらいから言ってる。限界が来たんだよ。五年間限界突破更新中という呪い
  • うっかりギター買ってしまった。落札できないと思って適当に出来心で寝る前にぽっちとしたら落札できていたという夜更け
    • 今は、YF-O18Bが手元にあるわけだが、RF-65が数日中に来るらしいぞ
    • YF-O18Bを売れば実質無料でRF-65をお迎えできそう
    • 問題はレッドサンバースト的な色なんだよな。ナチュラルカラーなら透けピックガードも妥協できるが...
  • 画像生成AIがやばいことになってる
    • 素人がそれっぽい絵をなんとなく生成して自分の文脈の素材に使えるというツール感が一般化しそう
    • いらすと屋淘汰されそう
    • しかし、生成の呪文や元絵など学習することはじゃっかんあるし、がちゃ要素もある
    • ツールとしてなじんでいくのだろうな
    • AIの学習素材に自分の絵を使うなという主張あり。なるほど
    • 人の学習素材に使った絵をAIが学習素材として使っていた場合、AIがただの上位互換になりうる
    • 人の営みもパクリみたいなもんすよね。
    • あ、はい。
  • くそツイしてる
    • ブログに書けばいいのにもったいないな
  • 新しいブログ作りたい
    • deno/freshを使いたいだけなのでは説
    • AWS/amplifyを使いたいだけなのでは説
    • スマホからも投稿したいな。今でもGithubにpushするだけだからできないことはないが、はてなと連動してないんだよな
    • GithubActionsとかでできそう。しらんけど
  • zigでゲームボーイエミュレーター書いてる
    • 一週間ほどでテストROMがとりあえずうごいたが、たぶんTimerで死んでる。なぜIMEをオンにせずにInterruptを待っているのか。スタックしてる。
    • ビルド早すぎて草。HaskellとはRustとはなんだったのか。
    • HaskellGBEもCPUまで書いたんだけど、ビルドに10秒くらいかかるくせに、昔書いたdeno/TS版より4倍くらい遅くて心折れた。なんでなん。
    • TSで書く前にRustで最初始めたんだけど、マクロごりごりやったのででコンパイルくっそ遅くなって、なげたんだよな。
    • zig、素直で簡単でめっちゃ楽。
  • 書きたくないこともあるよな
    • ある妄想に3月おわりくらいから取り憑かれている。人生が豊かになっている音がする。どうやったってクソだ
  • エアコンから水めっちゃ飛ぶ
    • 上に通気孔がある32インチ4kモニターにダイレクトアタックなんだが、とても良くない気がする
    • コップの中にも飛んでそうな気がするんですが、お腹ゆるいのはそのせいでしょうか
  • ヒロアカまとめ買いして読んだ
    • めっちゃよかった
  • 東京グールReまた読んでる
    • 有馬さん

時間切れだ。

Zigでマンデルブロ集合

zigが流行ってると聞いて。人類に手動メモリ管理はまだ早いんだよな。もっと脳が進化してくれないと難しい。足りない脳でやってくしかないのだ現代人たる我(々?)は。

SDLのビルドでつまづいたりした。自分でbuild.zigいじるのいやだったので、パッケージマネージャーであるところのgyroを使ってみたけどうまく動かなかった。直接git cloneして/libsにでも突っ込んどけばなんとかなるっぽい。SDL2-develもルートに置いとけば勝手に見てくれるっぽい。SDL.zigがビルド用のSdkを用意してくれてるのでそれ任せ。

const std = @import("std");
const SDL = @import("sdl2");
const math = std.math;
const complex = math.complex;

pub fn main() !void {
    try SDL.init(.{
        .video = true,
        .events = true,
        .audio = true,
    });
    defer SDL.quit();

    const height = 800;
    const width = 800;

    var window = try SDL.createWindow(
        "SDL.zig",
        .{ .centered = {} },
        .{ .centered = {} },
        width,
        height,
        .{ .vis = .shown },
    );
    defer window.destroy();

    var renderer = try SDL.createRenderer(window, null, .{ .accelerated = true });
    defer renderer.destroy();

    var texture = try SDL.createTexture(renderer, .rgba8888, .streaming, width, height);
    defer texture.destroy();

    var buf = std.mem.zeroes([width * height * 4]u8);
    var y: f32 = -2;
    var x: f32 = -2;
    var i: usize = 0;
    while (i < width * height * 4) : (i += 4) {
        const m = mandelbrot(x, y, 255);
        const c = @intCast(u8, m);
        const b = @floatToInt(u8, @fabs(@floor(x * @intToFloat(f32, m))) / 255);
        buf[i + 0] = c;
        buf[i + 1] = b;
        buf[i + 2] = c;
        buf[i + 3] = c;

        x += 0.005;
        if ((i / 4) % width == 0) {
            x = -2;
            y += 0.005;
        }
    }

    try texture.update(&buf, 4 * width, null);

    mainLoop: while (true) {
        while (SDL.pollEvent()) |ev| {
            switch (ev) {
                .quit => {
                    break :mainLoop;
                },
                .key_down => |key| {
                    switch (key.scancode) {
                        .q => break :mainLoop,
                        else => {},
                    }
                },
                else => {},
            }
        }

        try renderer.setColorRGB(0, 0, 0);
        try renderer.clear();
        try renderer.copy(texture, null, null);
        renderer.present();
    }
}

fn mandelbrot(x: f32, y: f32, limit: u32) u32 {
    const c = math.Complex(f32).init(x, y);
    var z = math.Complex(f32).init(0.0, 0.0);
    var n: u32 = 0;
    while (n < limit) : (n += 1) {
        z = z.mul(z).add(c);

        if (complex.abs(z) > 2) {
            return n;
        }
    }
    return 0;
}

Pop_OSインストールしたら夕暮れを壁を挟んで三回背にしてた

PopOSをインストールして環境設定してたらくそめんどくさかったんだけど、何一つメモ残してないから何がめんどくさかったのかわからないまま、ブログアップロードテストを迎えてしまったらいなう。

  • GドライブのSSDのフォーマットがMBRだったのでハマる
    • 音楽とゲームのデータ置き場だったんだけど、なぜかMBRだった。データ移して、GPTにフォーマットし直して、データ戻して、パーテーション切って解決
  • nvideaのドライバー付きのISOだったはずなんだけど、インストールしてリブートしたら画面真っ黒でハマる
    • リブート前にドライバー再インストールしたら直太朗
  • 日本語入力できずハマる
    • Preonic/qmkの設定が悪いのだろうと思い込んでて、GUIからちゃんと設定できるやつ見逃してた
    • mozcにIMEの有効化無効化を変換無変換に割り当てるも、そもそも入力ソースにmozcを使う設定になってなかった
  • dfu-utilがキーボードを認識せずハマる
    • qmkの設定変えようとするもdfu-utilがCannot Open Device
    • util/udev/50-qmk.rulesを/etc/udev/rules.d/に入れる
    • sudo udevadm control --reload-rules
    • sudo udevadm trigger
    • でなんとかなった気がする。色々やってて気がついたら治ってたパターン
  • githubに接続できずハマる
    • sshキー設定してつなぐも違うfingerprintが帰ってきて戸惑う
    • 無視してEnter。つながった。これは大丈夫なのだろうか...
  • nvim-qtがバッククォート表示しない
    • なんでや
  • みんな大好きVimIME。今更再びハマる。
    • fcitx5-mozc
    • autocmd InsertLeave * call system('fcitx5-remote -c')
    • autocmd InsertEnter * call system('fcitx5-remote -o')

設定するだけしてやることない問題

QMKにNICOLA配列でも設定するか

keymap

PreonicのQMKに定義してみた。一年ほど前に。キーマップ書いて一切練習してなかったのを思い出してちょっとやってみるかっと思ってファームウェア書き込んだら、修飾キーあたりが動かんくてなるほど、それで練習しなかったのかとなっとく。調べてみたもののこれでいいはずなんだけどなーってやつが思い通り動いてくれないので、NICOLAモード中にAltやCtrlを使えないという雑な作りでもういいや状態になってしまった。


とかなんとか書いていて、ふと思いついた修正をいれてみたら直ったぞ。まぁよかった。

Unicode Support

話を戻して、rules.mkUNICODEMAP_ENABLE = yesとしてUnicodeMapをわーと日本語の定義を書いて、ってこれぜったいどっかにあるだろ。自分で書くなよ。と思いつつも書いて。NICOLA配列もわーとならべて。いくぜーとフラッシュしても全然文字化けしてて。えーと思いつつぐぐると設定がもうひとつたりてなくて。UnicodeのInputModeを指定する必要があるらしく、しかしWindowsのビルドインメソッドはおすすめしないよと書いてあって、代わりに書いてあったのが、WinComposeというアプリを使えと。それインスコして、matrix_init_userset_unicode_input_mode(UC_WINC)を追加しておつかれさまでした。