tag:blog.nsfisis.dev,2021:all REPL: Rest-Eat-Program Loop nsfisis 2025-06-15T00:00:00+09:00 urn:uuid:127019eb-e83f-4c9e-ab54-2021124f1bbb 最高のパズルゲーム Baba Is You をやれ Baba Is You という最高のパズルゲームをクリアした。是非プレイしてほしい。 2025-06-14T00:00:00+09:00 2025-06-15T00:00:00+09:00 urn:uuid:64f5e1a6-2f5c-4d5d-b1c8-8346a66c1d40 セルフホスト可能な C コンパイラを作った ゴールデンウィークを使って、セルフホストできる C コンパイラを開発した。 2025-05-05T00:00:00+09:00 2025-05-05T00:00:00+09:00 urn:uuid:087e98f2-743c-48d8-9f67-e9b57e354845 【Composer】 composer-patches v2 では macOS でも GNU patch のインストールが不要になる (予定) composer-patches は BSD patch に対応しておらず、一部のパッチの適用に失敗する。現在ベータ版である v2 では patch コマンドに依存しなくなり、macOS で使うときのストレスが解消される見込み。 2025-04-24T00:00:00+09:00 2025-04-24T00:00:00+09:00 urn:uuid:039b3dff-3b75-46b7-a731-9a3a0ff8e21f RubyKaigi 2025 の TRICK で入賞した RubyKaigi 2025 で開催された TRICK において、『最もRuby on Ruby賞』として審査員賞をいただいた。 2025-04-20T00:00:00+09:00 2025-04-20T00:00:00+09:00 urn:uuid:c6c7c241-46c1-44b5-95b2-c30c3a500df3 PHP 8.x 時代のクラス設計(property promotion から property hooks まで) 登壇: PHP カンファレンス小田原 2025 (レギュラートーク (20分)) 2025-04-12T00:00:00+09:00 2025-04-12T00:00:00+09:00 urn:uuid:046e4412-bee8-4ffe-9876-6cbeaa0caf6b 【HTTP】HTTP/1.1 で同じヘッダを2回送るとどうなるか HTTP/1.1 で同じヘッダを2回送ったときの挙動について仕様を読んでまとめた。 2025-03-28T00:00:00+09:00 2025-03-28T00:00:00+09:00 urn:uuid:99111377-27e7-427b-9dc5-a23f621fa826 zip 関数のようなコマンド paste zip 関数のような動きをする paste コマンドについてのメモ。 2025-03-27T00:00:00+09:00 2025-03-27T00:00:00+09:00 urn:uuid:ec7f4462-ae56-4bbf-aac7-cbd32bbbeb29 PHPで作るPHP~セルフホストできる言語処理系を作ろう~ 登壇: PHPerKaigi 2025 (レギュラートーク (40分)) 2025-03-23T00:00:00+09:00 2025-03-23T00:00:00+09:00 urn:uuid:13174dc7-c1a3-465f-9ba6-14f0bc6f5961 PHP カンファレンス名古屋 2025 参加レポ 2025-02-22 に開催された、PHP カンファレンス名古屋 2025 に参加した。 2025-02-24T00:00:00+09:00 2025-02-24T00:00:00+09:00 urn:uuid:9172fbef-c812-4ade-86f5-eaa12c966708 PHP 処理系の garbage collection を理解する~メモリはいつ解放されるのか~ 登壇: PHP カンファレンス名古屋 2025 (レギュラートーク (30分)) 2025-02-22T00:00:00+09:00 2025-02-22T00:00:00+09:00 urn:uuid:da2a0cec-74b3-4c5e-b2a2-47fe79ef49f9 【YAML】YAML 1.1 と YAML 1.2 の主な破壊的変更 データ記述言語 YAML におけるバージョン 1.1 と 1.2 の主な破壊的変更をまとめた。 2025-01-26T00:00:00+09:00 2025-01-26T00:00:00+09:00 urn:uuid:ce8f20e8-c79f-48f8-982d-53edd4d20483 PHPerKaigi 2023 トークン問題解説 (1/5) PHPerKaigi 2023 でデジタルサーカス株式会社から出題した問題を解説する。全5問中の第1問。 2025-01-08T00:00:00+09:00 2025-01-11T00:00:00+09:00 urn:uuid:d7f98354-83fc-4cf1-8769-2784f0ebb6c8 2024年の振り返り 2024年にやったことを振り返る 2025-01-02T00:00:00+09:00 2025-01-02T00:00:00+09:00 urn:uuid:ea0593d3-691c-4e08-8db4-98b8925717ec 紅白ぺぱ合戦に参加&LTしました 2024-11-30 に開催された紅白ぺぱ合戦に参加し、ぺ陣営のメンバとして LT しました。 2024-12-04T00:00:00+09:00 2024-12-05T00:00:00+09:00 urn:uuid:e1ca4664-f6f1-4de2-b4a5-ea2b64006708 プログラミングマナー講座 登壇: 紅白ぺぱ合戦 (LT) 2024-11-30T00:00:00+09:00 2024-11-30T00:00:00+09:00 urn:uuid:a84100cf-8c92-4856-addf-81a7c5547074 PHP で PHP を作る (縮小版) 登壇: PHP 勉強会@東京 第169回 (レギュラートーク (20分)) 2024-10-30T00:00:00+09:00 2024-10-30T00:00:00+09:00 urn:uuid:ee7289ee-ff2e-439d-b343-7f87504192fd MN-Core Challenge #1 参加レポ 2024-08-28 から 2024-09-24 にかけて開催された MN-Core Challenge #1 に参加した。 2024-09-28T00:00:00+09:00 2024-09-28T00:00:00+09:00 urn:uuid:eed112e4-3227-4b3f-9991-7e11c288ee2b 【Go】 text/template の with や range の内側から外側の "." にアクセスする Go言語の text/template における with や range は "." を上書きする。これらの内側から外側の "." にアクセスする方法を調べた。 2024-08-19T00:00:00+09:00 2024-08-19T00:00:00+09:00 urn:uuid:222488dd-cf07-4961-83aa-a014b05369ff reparojson: 文法エラーを直すだけの JSON フォーマッタを作った 文法エラーだけを直し、空白の削除や挿入といった整形処理を一切おこなわない JSON フォーマッタを作成した。Neovim と連携させる設定例も紹介する。 2024-07-19T00:00:00+09:00 2024-07-19T00:00:00+09:00 urn:uuid:eec495b5-45e2-4c6f-a725-e62b1e0a7ad5 PHPerKaigi 2024 で発表した WebAssembly ランタイムのその後 登壇: PHP 勉強会@東京 第166回 (レギュラートーク (20分)) 2024-07-18T00:00:00+09:00 2024-07-18T00:00:00+09:00 urn:uuid:8d6f3690-3da3-4235-a81b-b9707cee22ad ScalaMatsuri 2024 参加レポ 2024-06-08 から 2024-06-09 にかけて開催された、ScalaMatsuri 2024 に参加した。 2024-06-19T00:00:00+09:00 2024-06-19T00:00:00+09:00 urn:uuid:f13aa9d6-4533-4a15-872a-c298ab2090db PHP カンファレンス香川 2024 参加レポ 2024-05-11 に開催された、PHP カンファレンス香川 2024 に参加した。 2024-05-11T00:00:00+09:00 2024-05-11T00:00:00+09:00 urn:uuid:9b26c1ed-45c3-4cad-9476-cbf2cf2e4de7 【Zsh】 Composer のカスタムコマンドに対する Zsh 補完で引数にファイルを補完させる Zsh の Composer に対する補完はカスタムコマンドやその引数を補完しない。カスタムコマンドの引数としてファイルを補完させる方法を調べた。 2024-04-29T00:00:00+09:00 2024-04-29T00:00:00+09:00 urn:uuid:6cf84106-cc69-4d87-b957-9d58d7e585bb Tracing JIT の発動条件 登壇: PHP 勉強会@東京 第163回 (LT) 2024-04-25T00:00:00+09:00 2024-04-25T00:00:00+09:00 urn:uuid:a4c326a6-5ffe-450c-abf2-45833c5efb6a 【GitLab】 GitLab CI/CD 上での bash/sh は pipefail が有効になっている GitLab CI/CD で bash/sh スクリプトを動かすと、pipefail オプションが有効になった状態で実行される。 2024-04-21T00:00:00+09:00 2024-04-21T00:00:00+09:00 urn:uuid:be9c896d-7efa-42dd-a50a-dda5fd3a7f5c PHP カンファレンス小田原 2024 参加レポ 2024-04-13 に開催された、PHP カンファレンス小田原 2024 に参加した。 2024-04-14T00:00:00+09:00 2024-06-01T00:00:00+09:00 urn:uuid:69e1694b-5ddb-41a5-a7f4-138ce82a78b2 来る新 JIT エンジンについて知った気になる 登壇: PHP カンファレンス小田原 2024 (レギュラートーク (15分)) 2024-04-13T00:00:00+09:00 2024-04-13T00:00:00+09:00 urn:uuid:6b749793-c760-4597-8a4c-b32d027b7585 死ぬまでに作る自作○○一覧あるいは人生の TODO リスト 駄文 2024-03-20T00:00:00+09:00 2024-04-07T00:00:00+09:00 urn:uuid:750be5c8-ca52-4cbd-86fe-5645b06bde95 PHPerKaigi 2024 参加レポ 2024-03-07 から 2024-03-09 にかけて開催された、PHPerKaigi 2024 に参加した。 2024-03-17T00:00:00+09:00 2024-07-07T00:00:00+09:00 urn:uuid:da7b1d5a-70df-4c4a-936c-1b49ca1a7c37 CLI の PHP プログラムを限界まで高速化してみる 登壇: Ya8 2024 (レギュラートーク (60分)) 2024-03-15T00:00:00+09:00 2024-03-15T00:00:00+09:00 urn:uuid:cee40048-f3c5-4043-9ef8-a4ee2ae7cf0e WebAssembly を理解する 〜VM の作成を通して〜 登壇: PHPerKaigi 2024 (レギュラートーク (40分)) 2024-03-08T00:00:00+09:00 2024-03-08T00:00:00+09:00 urn:uuid:fd8fcb03-8e4d-4ca7-8499-0674accc51a9 PHPカンファレンス関西 2024 参加レポ 2024-02-11 に開催された、PHPカンファレンス関西 2024 に参加した。 2024-02-21T00:00:00+09:00 2024-02-21T00:00:00+09:00 urn:uuid:230a0048-93c0-4aac-91ef-bb3108f3e587 YAPC::Hiroshima 2024 参加レポ 2024-02-10 に開催された、YAPC::Hiroshima 2024 に参加した。 2024-02-10T00:00:00+09:00 2024-02-10T00:00:00+09:00 urn:uuid:210673d0-c19e-4195-a280-968a0729dd41 【備忘録】 個人用サーバに WireGuard を導入する 個人用サービスのセルフホストに使っているサーバに WireGuard を導入する作業をしたメモ 2024-02-03T00:00:00+09:00 2024-02-17T00:00:00+09:00 urn:uuid:82db7893-983a-4631-8bee-d0725d078252 PHPStan の力で Algebraic Data Types を実現する 登壇: PHP 勉強会@東京 第160 回 (レギュラートーク) 2024-01-24T00:00:00+09:00 2024-01-24T00:00:00+09:00 urn:uuid:05cb16e1-05bc-4359-bc06-88ac20510740 【Neovim】 空の PHP ファイルに namespace 宣言を挿入する Neovim で空の PHP ファイルを開いたとき、ディレクトリの構造に基づいて自動的に namespace 宣言を挿入するようにする。 2024-01-10T00:00:00+09:00 2024-01-10T00:00:00+09:00 urn:uuid:bfdeed72-dd32-4d55-887f-ba004701ff4c 2023年の振り返り 2023年にやったことを振り返る 2023-12-31T00:00:00+09:00 2023-12-31T00:00:00+09:00 urn:uuid:d0c404bb-4700-4a6f-9911-621e9872d8c6 ISUCON 13 に参加した ISUCON 13 に参加した。チーム名「うつしもゆ」、最終スコア 13,580 点 2023-12-03T00:00:00+09:00 2023-12-03T00:00:00+09:00 urn:uuid:6c377f3f-6f52-4074-b690-c79d02050562 PHP コードを隔離された環境で安全に動かす (on WebAssembly) 登壇: PHP 勉強会@東京 第157 回 (LT) 2023-10-25T00:00:00+09:00 2023-10-25T00:00:00+09:00 urn:uuid:78419bf2-a1e6-421f-875b-3d93e777b04f 放送大学に入学しました 放送大学に入学しました。頑張ります。 2023-10-13T00:00:00+09:00 2023-10-13T00:00:00+09:00 urn:uuid:0ed1ccc8-d437-481c-8cca-2131ce800cc0 PHP の処理系を Emscripten で WebAssembly にコンパイルする PHP の処理系 (php/php-src) を Emscripten で WebAssembly にコンパイルし、任意のコードを隔離された環境で評価できるようにした。 2023-10-02T00:00:00+09:00 2025-04-23T00:00:00+09:00 urn:uuid:d6118e00-5fb1-4230-9d94-854260beae04 PHP 3.0 の処理系のソースを読んでみる 登壇: PHP 勉強会@東京 第155 回 (LT) 2023-08-24T00:00:00+09:00 2023-08-24T00:00:00+09:00 urn:uuid:669de08d-9e02-44c5-ac3f-35972112e706 言語間で比較するエラーの通知と処理 登壇: PHP 勉強会@東京 第154 回 (レギュラートーク) 2023-07-26T00:00:00+09:00 2023-07-26T00:00:00+09:00 urn:uuid:e1568c4c-9bdd-47b9-8b39-939ade4f3ba0 PHP カンファレンス福岡 2023 参加レポ 2023-06-24 に開催された、PHP カンファレンス福岡に参加した。 2023-06-25T00:00:00+09:00 2023-06-25T00:00:00+09:00 urn:uuid:72244d87-4cf0-41c4-a074-bcc37acaa678 巨大なコードベースへ突撃するために 登壇: PHP カンファレンス福岡 2023 前夜祭 (非公式) (レギュラートーク) 2023-06-23T00:00:00+09:00 2023-06-23T00:00:00+09:00 urn:uuid:6016d501-b9c9-474a-a304-1ec1295e049a テキストファイルの末尾には改行コードを入れよう 登壇: PHP 勉強会@東京 第153 回 (LT) 2023-06-21T00:00:00+09:00 2023-06-21T00:00:00+09:00 urn:uuid:fe75bb63-1cd9-457e-8244-c444307cd40a list でない array の末尾を探す 登壇: PHP 勉強会@東京 第151 回 (LT) 2023-04-12T00:00:00+09:00 2023-04-12T00:00:00+09:00 urn:uuid:21ce39f0-d613-45f2-a760-89c368892d77 PHPerKaigi 2023 参加レポ 2023-03-23 から 2023-03-25 にかけて開催された、PHPerKaigi 2023 に参加した。 2023-04-04T00:00:00+09:00 2023-06-28T00:00:00+09:00 urn:uuid:ed36e185-5bfa-42e1-8358-0b1da9b0a063 PNG 画像の最小構成エンコーダを実装する PNG 画像として valid な範囲で最大限手抜きしたエンコーダを書く。 2023-04-01T00:00:00+09:00 2023-04-01T00:00:00+09:00 urn:uuid:3cce70d8-cee9-4e0e-8b38-6ef1e0a8a278 PHPer チャレンジ解説 (デジタルサーカス株式会社) 登壇: PHPerKaigi 2023 (トークン解説セッション) 2023-03-25T00:00:00+09:00 2023-03-25T00:00:00+09:00 urn:uuid:2dce7e27-1eaf-4ca4-8037-e9a3ead18b48 詳説「参照」PHP の参照を完全に理解する 登壇: PHPerKaigi 2023 (レギュラートーク) 2023-03-24T00:00:00+09:00 2023-03-24T00:00:00+09:00 urn:uuid:9376560b-250a-4697-ac10-0903ad16acee 明日のあなたの役に立たない PHP コーディング技法~細長い FizzBuzz を書く~ 登壇: PHP 勉強会@東京 第150 回 (LT) 2023-03-15T00:00:00+09:00 2023-03-18T00:00:00+09:00 urn:uuid:12512894-05d8-42c6-950e-8f5d60f984d8 このブログのジェネレータを書き直した このブログのジェネレータを書き直したので、やったことを書き記しておく。 2023-03-10T00:00:00+09:00 2023-03-10T00:00:00+09:00 urn:uuid:f23ea81c-5996-4b7e-aab0-4e9f23b172c2 PHPerKaigi 2023 のトークン問題でボツにした問題を供養する 登壇: PHP 勉強会@東京 第149 回 (LT) 2023-02-15T00:00:00+09:00 2023-02-15T00:00:00+09:00 urn:uuid:693a4c2e-6f21-4840-b793-4e3644a8ec22 明日のあなたの役に立たない PHP コーディング技法~polyglot~ 登壇: PHP 勉強会@東京 第148 回 (LT) 2023-01-18T00:00:00+09:00 2023-01-18T00:00:00+09:00 urn:uuid:89722cfb-7f4b-4e96-80bc-e0096e5eeef6 PHPerKaigi 2023: ボツになったトークン問題 その 3 来年の PHPerKaigi 2023 でデジタルサーカス株式会社から出題予定のトークン問題のうち、ボツになった問題を公開する (その 3)。 2023-01-10T00:00:00+09:00 2023-01-10T00:00:00+09:00 urn:uuid:10fe9c47-7029-4874-82bd-b4dc50e07809 PHPerKaigi 2023: ボツになったトークン問題 その 2 来年の PHPerKaigi 2023 でデジタルサーカス株式会社から出題予定のトークン問題のうち、ボツになった問題を公開する (その 2)。 2022-11-19T00:00:00+09:00 2022-11-19T00:00:00+09:00 urn:uuid:673cb872-af2d-41a3-9fb0-60f1afcedb0d 【備忘録】 このサイト用の VPS をセットアップしたときのメモ GitHub Pages でホストしていたこのサイトを VPS へ移行したので、そのときにやったことのメモ。99 % 自分用。 2022-10-28T00:00:00+09:00 2023-08-30T00:00:00+09:00 urn:uuid:46e0d5db-b17e-464c-a723-8c3e01af7d1d PHPerKaigi 2023: ボツになったトークン問題 その 1 来年の PHPerKaigi 2023 でデジタルサーカス株式会社から出題予定のトークン問題のうち、ボツになった問題を公開する (その 1)。 2022-10-23T00:00:00+09:00 2022-10-23T00:00:00+09:00 urn:uuid:42f0b29b-1e44-4dbe-9864-69abe3bb1e6e 【PHP】 fizzbuzz を書く。1行あたり2文字で。 PHP で fizzbuzz を書いた。ただし、1行あたりに使える文字数は2文字まで。 2022-09-28T00:00:00+09:00 2022-09-29T00:00:00+09:00 urn:uuid:cd16debe-8077-4edf-aec0-b1d45955a0e2 弊社の PHP Foundation への寄付に寄せて 先日、私の勤めるデジタルサーカス株式会社が、PHP Foundation へ寄付をおこないました。本件を社内でしつこく推進した1人として、推進の理由等を書き残しておきます。 2022-08-31T00:00:00+09:00 2022-08-31T00:00:00+09:00 urn:uuid:bb71bb5d-361b-44cb-9753-81d14583d860 PHP カンファレンス沖縄で出題されたコードゴルフの問題を解いてみた PHP カンファレンス沖縄の懇親会 LT で出題されたコードゴルフの問題を解いてみた。 2022-08-27T00:00:00+09:00 2022-08-27T00:00:00+09:00 urn:uuid:9211e1fe-bca3-43c4-ba4e-c67d62f3fed0 PHPerKaigi 2022 2022-04-09 から 2022-04-11 にかけて開催された、PHPerKaigi 2022 に参加した。 2022-05-01T00:00:00+09:00 2022-05-01T00:00:00+09:00 urn:uuid:42cf2829-b897-4748-bc22-80dd734a3c09 term-banner: ターミナルにバナーを表示するツールを書いた ターミナルに任意の文字のバナーを表示するためのツールを Go で書いた。 2022-04-24T00:00:00+09:00 2022-04-27T00:00:00+09:00 urn:uuid:f4985d54-0907-4449-8101-0fcd382f9e02 PHPerKaigi 2022 トークン問題の解説 PHPerKaigi 2022 で私が作成した PHPer チャレンジ問題を解説する。 2022-04-09T00:00:00+09:00 2022-04-16T00:00:00+09:00 urn:uuid:69863d75-ef21-42db-b743-5958f7c86827 【C++】 属性構文の属性名にはキーワードが使える C++ の属性構文の属性名には、キーワードが使える。ネタ記事。 2021-10-02T00:00:00+09:00 2021-10-02T00:00:00+09:00 urn:uuid:e1aff84c-d6d4-4dea-bc45-9c41e6445006 【Python】 クロージャとUnboundLocalError: local variable 'x' referenced before assignment Python における UnboundLocalError の理由と対処法。 2021-10-02T00:00:00+09:00 2021-10-02T00:00:00+09:00 urn:uuid:e1456a50-4fc6-42ef-89f3-8be78e01da13 【Ruby】 自身を実行している処理系の種類を判定する Ruby には複数の実装があるが、自身を実行している処理系の種類をスクリプト上からどのように判定すればよいだろうか。 2021-10-02T00:00:00+09:00 2021-10-02T00:00:00+09:00 urn:uuid:87455008-fe5b-49bf-af5a-b875264f8326 【Ruby】 then キーワードと case in Ruby 3.0 で追加される case in 構文と、then キーワードについて。 2021-10-02T00:00:00+09:00 2021-10-02T00:00:00+09:00 urn:uuid:91c61980-c262-4e8d-89b0-4304e7f6d644 Rust のプリミティブ型はどこからやって来るか Rust のプリミティブ型は予約語ではなく普通の識別子である。どのようにこれが名前解決されるのかを調べた。 2021-10-02T00:00:00+09:00 2021-10-02T00:00:00+09:00 urn:uuid:44171f75-c312-4c92-9927-3d260e162175 【Vim】 autocmd events の BufWrite/BufWritePre の違い Vim の autocmd events における BufWrite/BufWritePre がどう違うのかを調べた結果、違いはないことがわかった。 2021-10-02T00:00:00+09:00 2021-10-02T00:00:00+09:00 urn:uuid:665de47e-0ed6-405e-ad30-81c3c4592d45 Vimで選択した行の順番を入れ替える Vim で選択した行の順番を入れ替える方法。 2021-10-02T00:00:00+09:00 2021-10-02T00:00:00+09:00 urn:uuid:3fbe0b8c-216e-48f6-b905-c0d361b94542 PHPerKaigi 2021 2021-03-26 から 2021-03-28 にかけて開催された、PHPerKaigi 2021 に参加した。 2021-03-30T00:00:00+09:00 2025-04-09T00:00:00+09:00 urn:uuid:6e9c71fd-bc8d-43ce-99c5-13d9f5b87ed2 My First Post これはテスト投稿です。これはテスト投稿です。これはテスト投稿です。 2021-03-05T00:00:00+09:00 2025-05-12T00:00:00+09:00