Skip to content

Instantly share code, notes, and snippets.

@masakielastic
masakielastic / README.md
Last active February 24, 2026 20:05
warp v0.4 で TLS なしの HTTP サーバー | PHP 拡張、ext-php-rs

warp v0.4 で TLS なしの HTTP サーバー | PHP 拡張、ext-php-rs

コード

Cargo.toml

[package]
@masakielastic
masakielastic / README.md
Created February 24, 2026 18:47
PHP 拡張モジュールで reqwest を扱う | ext-php-rs

PHP 拡張モジュールで reqwest を扱う | ext-php-rs

コード

Cargo.toml

[package]
name = "php_tokio_reqwest"
@masakielastic
masakielastic / README.md
Last active February 24, 2026 18:36
PHP 拡張モジュールで Tokio を扱う | ext-php-rs

PHP 拡張モジュールで Tokio を扱う | ext-php-rs

本拡張は、Rust 側で Tokio を用いた async/await 実装を行いつつ、PHP へは 同期(blocking)API として公開する方式を採用する。 PHP から見ると通常の関数呼び出しだが、内部では Tokio の非同期タスクを実行し、block_on により結果を待ち受けて返す。

コード

@masakielastic
masakielastic / README.md
Last active February 23, 2026 20:51
H2O で HTTP/2 サーバー (libuv)

H2O で HTTP/2 サーバー (libuv)

gcc server_h2_tls.c -o server_h2_tls \
  -I"$HOME/.local/include" \
  -L"$HOME/.local/lib" \
  -lh2o -luv -lssl -lcrypto -lm -lpthread
@masakielastic
masakielastic / README.md
Created February 23, 2026 20:08
H2O で HTTP/1 サーバー (libuv)

H2O で HTTP/1 サーバー (libuv)

gcc server.c -o server   -I"$HOME/.local/include"   -L"$HOME/.local/lib"   -lh2o -luv   -lssl -lcrypto   -lm -lpthread

server.c

#include <stdio.h>
@masakielastic
masakielastic / README.md
Last active February 24, 2026 10:16
nghttp2 でブロッキングな HTTP/2 サーバー

nghttp2 でブロッキングな HTTP/2 サーバー

gcc -O2 -Wall -Wextra server.c -o server -lnghttp2 -lssl -lcrypto
openssl req -x509 -newkey rsa:2048 -nodes \
@masakielastic
masakielastic / README.md
Last active February 23, 2026 19:07
nghttp2 でブロッキングな h2c サーバー (TLS なしの HTTP/2 サーバー)

nghttp2 でブロッキングな h2c サーバー (TLS なしの HTTP/2 サーバー)

gcc -Wall -Wextra -O2 server.c -o server $(pkg-config --cflags --libs libnghttp2)
masakielastic@penguin:~/http-server$ ./server
Listening on 127.0.0.1:8080 (h2c prior-knowledge)
Try: nghttp -v http://127.0.0.1:8080/ --no-tls --pri
@masakielastic
masakielastic / 01-README.md
Last active March 10, 2026 03:30
nghttp2 でブロッキングな HTTP クライアント (イベントループなし)

nghttp2 でブロッキングな HTTP クライアント (イベントループなし)

gcc -Wall -Wextra -O2 client.c -o client $(pkg-config --cflags --libs libnghttp2 openssl)
./client httpbin.org 443 /get
H: :status: 200
@masakielastic
masakielastic / README.md
Created February 23, 2026 16:22
HPACK を利用する (fluke-hpack) | Rust

HPACK を利用する (fluke-hpack) | Rust

Cargo.toml

[dependencies]
fluke-hpack = "0.3"
@masakielastic
masakielastic / README.md
Created February 23, 2026 10:18
tiny_http サーバーでシングルスレッドの HTTP/1 サーバー| PHP 拡張 | Rust

tiny_http サーバーでシングルスレッドの HTTP/1 サーバー| PHP 拡張 | Rust

Cargo.toml

[package]
name = "php_httpd_ext"
version = "0.1.0"
edition = "2021"