コンテンツにスキップ

2026-09-15 - 2026-09-21

読んだ記事

  • ASCII.jp:ラスボスCOBOLを倒すために、7チームはなにを選択し、なにを捨てたのか? (⅕)
    • GnuCOBOLまで行くところの方が大変だろうからな...
  • 本物そっくり“AI生成レシート“が経費精算の脅威に マネフォ「自力で見破るのは難しい」 企業はどう備える? - ITmedia NEWS
    • やー、現物の保管を義務化するにしてもこれは...
    • 社員用にクレカ貸与する方がマシかもしれない
  • mise の dotfiles 機能で chezmoi を代替できるか試した - Howdunit
    • mise、PHPが二級市民なのでちょっと印象が悪いんだよな...
      • 機能には文句ないから使ってるんだけど
  • そのプロジェクト、本当にNext.js必要? | ashunar0
    • いってることはそのとおりなんだけど、隣の部署と同じ技術スタックだと詰まったとき聞けて便利、っていうのもあるから一概には言えない
  • フロントエンドなんてバイブコーディングで良いこの時代に、私は - カミナシ エンジニアブログ
    • 手段の選択をすっ飛ばしてコードが出てきたとき、良し悪しはE2Eで判断するしかない
      • 筋の良い技術選択は、その選択肢を知らなければ原理的にできない
  • private な GitHub Pages に独自ドメインを当てるときに気をつけること
    • GitHub Pages、便利に使ってるんだけど仕組みがよくわかってない
  • Gitコミットに署名をつける - プププなテクブ
    • 署名、するか...
    • 社用と私用のアカウント分離も考えたい
  • 【Porffor】JavaScriptをCにコンパイルして圧倒的パフォーマンスを見せる #日本語訳 - Qiita
    • TypeScript→JavaScript→Cとかもできるのかな?
    • 公式ドキュメントのサイトが落ちてた
    • 一応動いたけど、なんだコレ...???
      ❯ cat hello.js
      console.log('hello, world');
      
      ❯ pnpx porffor@latest c ./hello.js
      #include <stdint.h>
      #include <stdio.h>
      
      typedef uint8_t u8;
      typedef uint16_t u16;
      typedef int32_t i32;
      typedef uint32_t u32;
      typedef int64_t i64;
      typedef uint64_t u64;
      typedef float f32;
      typedef double f64;
      
      f64 NAN = 0e+0/0e+0;
      
      struct ReturnValue {
        f64 value;
        i32 type;
      };
      
      char _memory[65536];
      
      i32 i32_load(i32 align, i32 offset, i32 pointer) {
        return *((i32*)(_memory + offset + pointer));
      }
      
      i32 i32_load16_u(i32 align, i32 offset, i32 pointer) {
        return *((u16*)(_memory + offset + pointer));
      }
      
      i32 i32_load8_u(i32 align, i32 offset, i32 pointer) {
        return *((u8*)(_memory + offset + pointer));
      }
      
      
      struct ReturnValue __Porffor_print(f64 x, i32 y) {
        i32 a = 0;
        i32 b = 0;
        i32 jjtypeswitch_tmpuu1cedd0d3f90a = 0;
      
        jjtypeswitch_tmpuu1cedd0d3f90a = y;
        // block
          // if
            if (jjtypeswitch_tmpuu1cedd0d3f90a == 0) {
              printf("%g\n", x);
              goto j0;
            }
          // end
          j1:;
          // if
            if (jjtypeswitch_tmpuu1cedd0d3f90a == 1) {
              // if
                if (((u32)x) != 0) {
                  putchar((int)(1.16e+2));
                  putchar((int)(1.14e+2));
                  putchar((int)(1.17e+2));
                  putchar((int)(1.01e+2));
                } else {
                  putchar((int)(1.02e+2));
                  putchar((int)(9.7e+1));
                  putchar((int)(1.08e+2));
                  putchar((int)(1.15e+2));
                  putchar((int)(1.01e+2));
                }
              // end
              j3:;
              goto j0;
            }
          // end
          j2:;
          // if
            if (jjtypeswitch_tmpuu1cedd0d3f90a == 3) {
              putchar((int)(1.17e+2));
              putchar((int)(1.1e+2));
              putchar((int)(1e+2));
              putchar((int)(1.01e+2));
              putchar((int)(1.02e+2));
              putchar((int)(1.05e+2));
              putchar((int)(1.1e+2));
              putchar((int)(1.01e+2));
              putchar((int)(1e+2));
              goto j0;
            }
          // end
          j4:;
          // if
            if (jjtypeswitch_tmpuu1cedd0d3f90a == 4) {
              // if
                if (((u32)x) != 0) {
                  putchar((int)(1.23e+2));
                  putchar((int)(1.25e+2));
                } else {
                  putchar((int)(1.1e+2));
                  putchar((int)(1.17e+2));
                  putchar((int)(1.08e+2));
                  putchar((int)(1.08e+2));
                }
              // end
              j6:;
              goto j0;
            }
          // end
          j5:;
          // if
            if (jjtypeswitch_tmpuu1cedd0d3f90a == 5) {
              putchar((int)(1.02e+2));
              putchar((int)(1.17e+2));
              putchar((int)(1.1e+2));
              putchar((int)(9.9e+1));
              putchar((int)(1.16e+2));
              putchar((int)(1.05e+2));
              putchar((int)(1.11e+2));
              putchar((int)(1.1e+2));
              putchar((int)(3.2e+1));
              putchar((int)(4e+1));
              putchar((int)(4.1e+1));
              putchar((int)(3.2e+1));
              putchar((int)(1.23e+2));
              putchar((int)(1.25e+2));
              goto j0;
            }
          // end
          j7:;
          // if
            if (jjtypeswitch_tmpuu1cedd0d3f90a == 66) {
              a = (u32)x;
              b = (i32_load(1, 0, a) * 2) + a;
              // loop
              j9:;
                putchar((int)((f64)(i32_load16_u(0, 4, a))));
                a = a + 2;
                if (a != b) {
                  goto j9;
                }
              // end
              goto j0;
            }
          // end
          j8:;
          // if
            if (jjtypeswitch_tmpuu1cedd0d3f90a == 82) {
              a = (u32)x;
              b = i32_load(1, 0, a) + a;
              // loop
              j11:;
                putchar((int)((f64)(i32_load8_u(0, 4, a))));
                a = a + 1;
                if (a != b) {
                  goto j11;
                }
              // end
              goto j0;
            }
          // end
          j10:;
          printf("%g\n", x);
        // end
        j0:;
      }
      
      int main() {
        _memory[4]=(u8)12;_memory[5]=(u8)0;_memory[6]=(u8)0;_memory[7]=(u8)0;_memory[8]=(u8)104;_memory[9]=(u8)101;_memory[10]=(u8)108;_memory[11]=(u8)108;_memory[12]=(u8)111;_memory[13]=(u8)44;_memory[14]=(u8)32;_memory[15]=(u8)119;_memory[16]=(u8)111;_memory[17]=(u8)114;_memory[18]=(u8)108;_memory[19]=(u8)100;
      
        __Porffor_print(4e+0, 82);
        putchar((int)(1e+1));
      
        return 0;
      }
      ❯ pnpx porffor@latest c ./hello.js >hello.c
      
      ❯ gcc hello.c -o hello
      hello.c:158:1: warning: non-void function does not return a value [-Wreturn-type]
        158 | }
            | ^
      1 warning generated.
      ld: warning: reducing alignment of section __DATA,__common from 0x8000 to 0x4000 because it exceeds segment maximum alignment
      
      ❯ ./hello
      hello, world
      
      [Verus で正しさが数学的に証明できる Rust コードの開発 | Amazon Web Services ブログ https://aws.amazon.com/jp/blogs/news/developing-provably-correct-rust-code-with-verus/]
          Rustコードの中に事前条件・事後条件が書けるのは良さそう
              まぁ、そこにバグを埋め込みそうな気もするけど...
      [【徹底解説】DeepSeek v4.1 Flashの内部構造【最適化したから解ること】|shi3z https://note.com/shi3zblog/n/n6d4fbe03218e]
          半分もわからんどころか1/10もわからん...
              行列、早々にさじを投げたからな...
      [バイブコーディングで GUI が壊れていく理由とその対策プロンプト https://zenn.dev/nrs/articles/9ba91aea587bf5]
          魔法のプロンプトを使うことはないだろうけど、このパターンに沿っているかは確認したほうが良さそう
      [自動テストが0件の現場で、人の確認を減らす側に倒した話 https://zenn.dev/ceres_tech_blog/articles/09aa8e17762d7e]
          リアリティがある
          自社で同じことをしようとしたら止めるけど、金がなくて結果が急いでほしい場面(スタートアップならほぼ毎日)はあるからな...
      [メモリに載らないGROUP BYをDuckDBはどう処理するのか https://zenn.dev/loglass/articles/7c140c6689d8c2]
          LambdaにDuckDB乗せて集計、とかのときはOOMにも気をつけないと駄目そうよね
      [文字列を捨てたモデル。Jevはなぜ桁で速いのか https://zenn.dev/1amageek/articles/typesafe-jev-system-one-model]
          急に流行り始めたJev
          早くて安いけど出力フォーマットに制限がある、っていうのは面白い制約よね
      [「Tailscaleやめたい」の7つの技術的指摘を2026年9月時点で再検証 | Velumesh https://velumesh.jp/blog/blog-2026-09-16.html]
          Tailscaleの日本正規代理店から返答blogがでてて面白い
      [エージェント用のmacOS環境を量産するGhostVMが良さげかも | kawarimidoll.com https://kawarimidoll.com/posts/202609181/]
          隔離環境を簡単に作れるのはいいなー
      [GitHub Actionsがキャッシュポイズニングリスクを制限するためにcache-modeを追加 | Socket https://socket.dev/blog/github-actions-cache-mode]
          また少し安全になった
      [人間はどの意思決定を手放せるのか - Speaker Deck https://speakerdeck.com/kawasima/ningen-ha-dono-ishi-kettei-o-tebanaseru-no-ka]
          Souther、すごいかも
      [マンガ原稿をクラウドに上げただけでGoogleアカウントBAN Gmailも道連れ……日本では合法なのになぜ?(1/2 ページ) - ITmedia NEWS https://www.itmedia.co.jp/news/article/2609/16/2000001527/]
          Proton Drive検討中
          Googleにはお金を払っているけど心配は尽きない
      [OpenAIのAIエージェントによるものとみられているRubyGemsへの不正なパッケージ大量投稿についてまとめてみた - piyolog https://piyolog.hatenadiary.jp/entry/2026/09/16/085611]
          OpenAIが制御できてないのがなぁ...
      [単一ノードのローカルS3におけるMinIOの代替手段 https://rmoff.net/2026/01/14/alternatives-to-minio-for-single-node-local-s3/]
          MinIO代替なー
          RustFSがGAしたって話を聞いたのでこれかなー
              [rustfs/rustfs | zdoc.app https://www.zdoc.app/ja/rustfs/rustfs]
      [AI sloppingのコツ|株式会社HERP公式note https://note.herp.co.jp/n/na751e51ea47f]
          気合よね
      [Local LLMを社内に提供! Local LLM Model as a Serviceとその取り組みについて - NTT docomo Business Engineers' Blog https://engineers.ntt.com/entry/202607-local-llm-maas/entry]
          これ、いずれ各社で必要になる気はするなー
      [terraform plan -minimal-refreshでplanを爆速にする #Terraform - Qiita https://qiita.com/minamijoyo/items/92c094b554d090b54a17]
          最近terraform planが遅いのが気になっていて早くGAしてほしい
      
      読んだ本

書いた

その他

- 横断支援組織でのAI活用の難しさ
    - 技術支援という立場なので、実施内容を説明できることが必須
        - AIエージェントを使ってもいいけど、質問されたら答えられる程度には提供するコードについて理解していないといけない
        - 一からAIに書かせてポン出しして理解できるわけないので、書きながら調べて動かして初めて理解できる
            - まぁ、テストはよく生成してるけど...

XPosts

#週報 <2026-09-08 - 2026-09-14 2026-09-22 - 2026-09-28>