Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
shin1x1のブックマーク - はてなブックマーク
[go: Go Back, main page]

タグ

shin1x1のブックマーク (9,619)

  • 「抽象化という思考のツール - 理解と活用 -」を PHP カンファレンス関西 2025 で発表しました - Shin x Blog

    2025/07/18-19 に神戸駅前研修センターで開催された PHPカンファレンス関西2025 にて、「抽象化という思考のツール - 理解と活用 -」を発表してきました。 発表資料 私なりの抽象化の考え方や活用方法などについてお話ししました。 誰もが日頃から自然に行なっている抽象化ですが、抽象化には文脈や目的という視点があり、特にソフトウェア開発など達成するゴールがあるシーンではそれらを意識することでより効果的に活用できるのではないかという内容です。 発表後には X や立ち話で色々な方と抽象化や好きな抽象(!)についてフィードバックをいただきました。自分なりの考えを発表して、それを題材に後で色々な意見を聞いたり話したりできるのは楽しいですね。今後のソフトウェア開発の現場で、抽象化を活用するきっかけになれば嬉しいです。 posfie: https://posfie.com/@shin1x1

    「抽象化という思考のツール - 理解と活用 -」を PHP カンファレンス関西 2025 で発表しました - Shin x Blog
    shin1x1
    shin1x1 2025/07/24
    書きました
  • WebAPI の自動テスト戦略 - Shin x Blog

    テストコードを実装する際に単体テストで書くか、統合テストで書くか迷う場面はないでしょうか。エントリでは、私なりのテスト戦略についての考えをまとめました。 概要 対象アプリケーション エントリにおける単体テストと統合テスト 単体テスト(ユニットテスト) 統合テスト(結合テスト、API テスト、フィーチャテスト) 単体テストと統合テストの特徴 テスト方針 テスト戦略 単体テストのみ 統合テストのみ 単体テストと統合テストを組み合わせる コンポーネント別のテストガイドライン 統合テストによるテスト テストピラミッドとテストダイヤモンド 統合テストの懸念 統合テストが無い 共有データセットが辛い 実行時間が遅くなりそう まとめ 参照 概要 単体テストと統合テストの特徴 テスト戦略 統合テストの懸念への対応 NotebookLM による音声概要を作成しました。よくまとまっているのでこちらもどうぞ

    WebAPI の自動テスト戦略 - Shin x Blog
    shin1x1
    shin1x1 2025/05/07
    書きました
  • 「php-fpm がリクエスト処理する仕組みを追う」を PHPerKaigi 2025 で発表しました - Shin x Blog

    2025/03/21-23 に中野セントラルパークカンファレンスで開催された PHPerKaigi 2025 にて、「php-fpm がリクエスト処理する仕組みを追う」を発表してきました。 発表資料 AI ツールの活用 事前確認 登壇サポート さいごに 発表資料 php-fpm が FastCGI リクエストを処理する仕組みを gdb によるステップ実行デモを中心にお話ししました。 gdb を使ったデモは概ね好評だったようで、仕組みを知ることの楽しさが共有できて嬉しかったです。技術の楽しさを共有できるのはこうしたイベントの良さの一つですね。構想段階ではデモは一部のみにして、スライドによる解説をメインにしようと思っていたのですが、紆余曲折を経てデモをメインにすることにしました。デモは見る側としても面白いですし、やっていても楽しいです。その場の状況に応じて臨機応変に対応しやすいのも良いですね。

    「php-fpm がリクエスト処理する仕組みを追う」を PHPerKaigi 2025 で発表しました - Shin x Blog
    shin1x1
    shin1x1 2025/04/14
    書きました
  • php-fpm がリクエスト処理する仕組みを追う / Tracing-How-php-fpm-Handles-Requests

    2025-03-23 PHPerKaigi 2025

    php-fpm がリクエスト処理する仕組みを追う / Tracing-How-php-fpm-Handles-Requests
    shin1x1
    shin1x1 2025/03/26
    発表しました
  • 「PHP ユーザのための OpenTelemetry 入門」を PHP カンファレンス 2024 で発表しました - Shin x Blog

    2024/12/23 にお馴染み PIO で開催された PHP カンファレンス 2024 にて、「PHP ユーザのための OpenTelemetry 入門」を発表してきました。 発表資料 PHP アプリケーションを OpenTelemetry で計装するための第一歩として、オブザーバリティやテレメトリデータなどの用語や OpenTelemetry について、そして PHP アプリケーションへの組み込みについてお話ししました。 はじめて OpenTelemetry を知る人にとっては用語など聞き馴染みが無いかもと思い、解説を入れつつだったので 25 分におさめるために苦心しました。OpenTelemetry については特に仕組み周りでネタがあるので機会があればお話ししたいです。 OpenTelemetry やオブザーバビリティに関心を持っていただく機会になれば嬉しいです。 セッションに参加し

    「PHP ユーザのための OpenTelemetry 入門」を PHP カンファレンス 2024 で発表しました - Shin x Blog
    shin1x1
    shin1x1 2024/12/23
    書きました
  • PHP アプリケーションのトレース計装ではじめる OpenTelemetry 入門 - Shin x Blog

    OpenTelemetry を利用して PHP アプリケーションのテレメトリデータを計装する方法をまとめました。 エントリのコードは下記で公開しています。 github.com OpenTelemetry とは 用語 PHP アプリケーションのマニュアル計装(手動計装) 構成 OTel Collector Jaeger 動作環境 必要なパッケージ PHP コード 設定 実行 PHP アプリケーションのゼロコード計装(自動計装) 必要な拡張とパッケージ 設定 PHP コード 実行 さいごに 参照 OpenTelemetry とは opentelemetry.io OpenTelemetry は、サービスやアプリケーションのテレメトリーデータ(トレース、メトリクス、ログなど)を計装、生成、収集、送信するためのオブザーバビリティフレームワークです。ベンダーニュートラルな OSS であり、CNC

    PHP アプリケーションのトレース計装ではじめる OpenTelemetry 入門 - Shin x Blog
    shin1x1
    shin1x1 2024/08/30
    書きました
  • OPcache オペコードキャッシュの仕組み - Shin x Blog

    エントリでは、PHP の内部実装(php-src)から OPcache のオペコードキャッシュの仕組みを見ていきます。 OPcache にはいくつかの機能がありますが、ここでは共有メモリへのオペコードキャッシュと preload が対象です。ファイルベースのキャッシュと JIT については触れません。 サマリ オペコードキャッシュ preload オペコードキャッシュと preload の比較 オペコードキャッシュ キャッシュデータレイアウト グローバル変数、マクロ キャッシュデータ構造体 オペコードキャッシュ: ZCSG(hash) キャッシュエントリ: zend_accel_hash_entry キャッシュデータ初期化 OPcache 処理の有効化 PHP ファイルコンパイル処理でのキャッシュ制御 persistent_compile_file() の主な処理 zend_accel_

    OPcache オペコードキャッシュの仕組み - Shin x Blog
    shin1x1
    shin1x1 2024/07/24
    書きました
  • PHP に新しい演算子を実装するチュートリアル - Shin x Blog

    PHP に新しい演算子を実装するチュートリアルの紹介です。 www.sitepoint.com 新たなトークン、AST ノード、オペコードを実装するための修正ポイントや、PHP コードからオペコード実行までの実装を(部分的ですが)手軽に知ることできる良い内容でした。 ここでは PHP 8.3.9 をベースに手順をなぞっていきます。変更箇所の詳細は元エントリに解説があるので、そちらを参考にしてください。 実装仕様 PHP コードの実行 Scanner の変更 Zend/zend_language_scanner.l Zend/zend_language_parser.y 動作確認 Parser の変更 Zend/zend_language_parser.y Zend/zend_ast.h Compiler の変更 Zend/zend_compile.c Executor の変更 Zend/z

    PHP に新しい演算子を実装するチュートリアル - Shin x Blog
    shin1x1
    shin1x1 2024/07/17
    書きました
  • PHP のオートロードはいつ実行されるか - Shin x Blog

    下記エントリを書いたところ、ではいつオートローダによって PHP ファイルが読み込まれるのかという質問をいただきました。 blog.shin1x1.com このエントリでは、オートロードの仕組みを交えて、どのようなケースでオートローダが実行されるかをまとめました。 なお、このエントリではクラスの名称をクラス名としていますが、これはインターフェイス、トレイト、enumの名称も含んでいます。 オートローダが実行される条件 オートロード関数の登録 オートローダが実行される PHP コード オートローダが実行されない PHP コード 引数によってオートローダが実行される関数 オートローダ実行の仕組み zend_lookup_class_ex() spl_perform_autoload() 型検査 さいごに オートローダが実行される条件 オートローダは以下の条件を満たした時に実行されます。 spl

    PHP のオートロードはいつ実行されるか - Shin x Blog
    shin1x1
    shin1x1 2024/06/19
    書きました
  • php-fpm リクエストサイクル - Shin x Blog

    php-fpm がリクエストを処理しているサイクルをざっくりとまとめました。 php-fpm ワーカープロセスの生成 リクエストループ 1) リクエスト接続待ち listen_socket の生成 FastCGI リクエスト 2) リクエスト開始処理 実行PHPファイルパスの決定 スーパーグローバルへの格納 3) PHPファイル実行 4) リクエスト終了処理 PHP コード実行リソースの解放 max_requests チェック FastCGI クライアントとの通信 接続開始 リクエスト読み取り レスポンス書き込み 接続終了 さいごに php-fpm ワーカープロセスの生成 php-fpm は FastCGI リクエストを処理する SAPI 実装の一つです。いわば、PHP コードを実行する FastCGI サーバです。prefork 型となっており、nginx 等からの FastCGI リク

    php-fpm リクエストサイクル - Shin x Blog
    shin1x1
    shin1x1 2024/06/12
    書きました
  • use 文は PHP ファイルを読み込まない - Shin x Blog

    PHP の use 文では、クラス名や関数名、定数、名前空間などのエイリアスを設定できます。 <?php use App\Foo; use App\Bar as ABar; $foo = new Foo(); $bar = new ABar(); https://www.php.net/manual/ja/language.namespaces.importing.php この use 文は指定したシンボルにエイリアスを設定する、言い方を変えると名前空間をインポートするもので、オートロードでクラス定義 PHP ファイルを読み込むものではありません。*1 例えば、上記コードの場合、use 文の時点で App\Foo や App\Bar に対するオートロードは動作しません。 この動きを確認してみます。 use 文のみを実行 use 文でオートロードが動作するかは下記のようなコードで簡単に確かめ

    use 文は PHP ファイルを読み込まない - Shin x Blog
    shin1x1
    shin1x1 2024/06/05
    書きました
  • php-fpm(php) をビルドして gdb でデバッグ実行できる Docker Compose 環境を作った - Shin x Blog

    php-fpmphp コマンドを php-src からビルドして、gdb コマンドでデバッグ実行できる Docker Compose 環境を作りました。 github.com 利用方法 gdb コマンド php-src の .gdbinit PHP関数によるダンプ さいごに 利用方法 リポジトリを git コマンドでチェックアウトして、make コマンドを実行します。make コマンドを実行すると、php-src からソースをチェックアウトして、Debian の Docker コンテナで php-fpmphp コマンドをビルドします。 $ make # ビルド完了後 $ docker compose run --rm php-fpm /php-src/php/bin/php -v PHP 8.3.8-dev (cli) (built: Jun 1 2024 04:00:02)

    php-fpm(php) をビルドして gdb でデバッグ実行できる Docker Compose 環境を作った - Shin x Blog
    shin1x1
    shin1x1 2024/06/04
    書きました
  • Docker Compose で php-fpm が発行するシステムコールを見る - Shin x Blog

    php-fpm の挙動を確認するために発行されるシステムコールを簡単に確認できる Docker Compose 環境を作りました。 github.com システムコール strace-php-fpm strace オプション php-fpm が発行するシステムコール例 ini ファイルの探索 nginx からの FastCGI リクエスト PHP ファイルの読み込み さいごに 参考 システムコール システムコールは、php-fpm のようなユーザプログラムが、ファイル操作やネットワーク通信、プロセス制御のようなカーネルが提供する機能を利用する仕組みです。PHP コードは PHP(ここでは php-fpm)で実行する必要があるので、php-fpm が発行するシステムコールを確認することで php-fpmPHP コードがどのように動作しているかを知る手掛かりになります。 システムコールを

    Docker Compose で php-fpm が発行するシステムコールを見る - Shin x Blog
    shin1x1
    shin1x1 2024/05/21
    書きました
  • 「PHPコードの実行モデルを理解する」をPHPカンファレンス香川2024で発表しました - Shin x Blog

    2024/05/11 に玉藻公園内 披雲閣で開催された PHP カンファレンス香川 2024 にて、「PHPコードの実行モデルを理解する」を発表してきました。 発表資料 日頃実行している PHP コードがどのように実行されているかをざっくりとイメージして頂くために、PHP コードの実行モデルと、身近な SAPI である php-fpm(mod_php)と php コマンドの実行モデルをご紹介しました。 X や発表後の会話では、やはり php-fpm(mod_php) の Laravel アプリケーションではリクエスト毎に 400 ファイル以上をコンパイルしている(OPcache 未使用の場合)話の反応が多かったです。 カンファレンスのような多様な人が集まる場では、知っている人にとっての「当たり前」を共有する発表も大事だなとあらためて感じました。こういった発表もやっていきたいですね。 Tog

    「PHPコードの実行モデルを理解する」をPHPカンファレンス香川2024で発表しました - Shin x Blog
    shin1x1
    shin1x1 2024/05/14
    書きました
  • 「制約の力 - 状態を限定する -」を PHP カンファレンス福岡 2023 で発表しました - Shin x Blog

    2023/06/24 に福岡ファッションビルで開催された PHP カンファレンス福岡 2023 にて、「制約の力 - 状態を限定する -」を発表してきました。 発表資料 Togetter: https://togetter.com/li/2173469 制約を活用して、状態を想定されたものに限定して、不要な複雑さを排除しようという内容でした。 発表では、状態を限定されたものにするという考え方を伝えたいと思っていたので、制約の活用例については、発表時間を考慮してカットしていました。公開している資料では、カットした部分や補足なども加えています。 開発を行なっていく中で、考慮しないとならないは増えていく一方ですので、考えることをいかに減らすかという視点は長くシステムを運用していく上で大切になってくるポイントの一つだと思います。(不要な複雑さを抱えたままのシステムをメンテナンスしていくことの大変さ

    「制約の力 - 状態を限定する -」を PHP カンファレンス福岡 2023 で発表しました - Shin x Blog
    shin1x1
    shin1x1 2023/06/27
    書きました
  • 現代のソフトウェア工学を示す「継続的デリバリーのソフトウェア工学」 - Shin x Blog

    年末年始に「継続的デリバリーのソフトウェア工学」を読みました。新年を迎えて、気分を一新して開発を始めるのに良いでした。 ソフトウェア開発に役立つプラクティスを示した 学びのエキスパート 複雑さ管理のエキスパート 実践的なツール データに基づく指標 ソースコードに限らずに広く適用 ソフトウェア開発者としての矜持 TDD あちら側とこちら側 「継続的デリバリー」は 1 要素 さいごに ソフトウェア開発に役立つプラクティスを示した ソフトウェア工学とは、ソフトウェアの実際的な問題に対する効率的、経済的な解を見つけるための経験的、科学的アプローチの応用のことである。 1.2 「ソフトウェア工学と何か」 書では、ソフトウェア開発の現場で役立つプラクティスを、ソフトウェア工学としてまとめています。ここでいう科学的アプローチとは、「特徴づけ」「仮説の定立」「予測」「実験」という形で思考を組み立て

    現代のソフトウェア工学を示す「継続的デリバリーのソフトウェア工学」 - Shin x Blog
    shin1x1
    shin1x1 2023/01/08
    書きました
  • Apple Silicon Mac 時代の PHP 開発環境構築 2021 / php-dev-env-on-m1-mac-era

    Apple Silicon Mac 時代の PHP 開発環境構築 2021 / php-dev-env-on-m1-mac-era

    Apple Silicon Mac 時代の PHP 開発環境構築 2021 / php-dev-env-on-m1-mac-era
    shin1x1
    shin1x1 2021/12/21
    発表しました
  • GitHub Actions で amd64/arm64 両対応の Docker イメージをビルド - Shin x Blog

    PHP 開発環境の Docker イメージとして公開している shin1x1/php-dev イメージの arm64 対応を行いました。従来の amd64 も必要なので、マルチアーキテクチャビルドでイメージを生成するようにしています。 shin1x1/php-dev については下記を参照で。 blog.shin1x1.com Docker Buildx による multi-arch ビルド Docker Buildx は Buildkit でビルド機能を拡張する Docker CLI プラグインです。Buildx にはマルチアーキテクチャビルド機能があるので、これを利用します。 docs.docker.com 実行の流れを掴むために M1 MacDocker DesktopBuildx を利用してビルドしてみます。Docker Desktop 4.3.1 には Buildx が

    GitHub Actions で amd64/arm64 両対応の Docker イメージをビルド - Shin x Blog
    shin1x1
    shin1x1 2021/12/15
    書きました
  • 「ドメインをモデリングして PHP コードに落とし込む」を発表しました / PHP カンファレンス 2021 - Shin x Blog

    2021/10/02, 03 にオンラインで開催された PHP カンファレンス 2021 にて「ドメインをモデリングして PHP コードに落とし込む」を発表しました。 発表資料 Sample code: https://github.com/shin1x1/domain-modeling-with-php Togetter: https://togetter.com/li/1783062 joind.in: https://joind.in/talk/650b0 ドメインモデルという共通概念をモデリングし、それをコードに反映するという内容です。 去年は事前に録画して自分で再生した のですが、今年はライブでやりました。やっぱりライブは良いですね。話し出しはモニタに向かって話す違和感がありましたけど、途中から調子が掴めてきました。 Discord をチラ見していたのですが、リアルタイムでどんど

    「ドメインをモデリングして PHP コードに落とし込む」を発表しました / PHP カンファレンス 2021 - Shin x Blog
    shin1x1
    shin1x1 2021/10/06
    書きました
  • level=0 から始める PHPStan(Larastan) 導入ガイド - Shin x Blog

    PHP にはアプリケーションを実行せずに静的にコード品質をチェックする静的解析ツールがいくつかあります。有名なところでは、PHPStan や Psalm、Phan、PHPMD などがあります。エントリでは、まだこうした静的解析ツールを導入していないプロジェクト向けに PHPStan 導入の流れをまとめてみました。 3(4) 行まとめ サンプルコード PHPStan とは 適用方針 Playground PHPStan のインストール Composer Composer(Larastan) Docker 設定ファイルの作成 PHPStan の実行 主なエラー(level=0) baseline ファイルの作成 baseline ファイルの修正 CI での自動実行 GitHub Actions の設定 ブランチ保護ルール さいごに 3(4) 行まとめ composer もしくは Docker

    level=0 から始める PHPStan(Larastan) 導入ガイド - Shin x Blog
    shin1x1
    shin1x1 2021/08/25
    書きました