知見

EchoサーバーをI/O Multiplexingに育てる

グリーンスレッドの実装を考えていたらいつの間にかタイトルのようなことをやっていた。 実装した全部載せはリポジトリに置いてあるので、何を考えたかを吐き出す。 github.com simple echo echo サーバー( "hello" と受け取って "hello" と返す)のように…

Rack::Timeout::RequestTimeoutException の仕組み

Ruby の webserver に使われるミドルウェアである Rack に、timeout を管理する拡張 gem の rack-timeout がある。 その仕事として例えば、レスポンスを返すまでに指定した秒数以上の時間がかかる場合、その秒数で Rack::Timeout::RequestTimeoutException …

Big bag of pagesで型情報を節約する

言語実装アドベントカレンダー20174日目の記事です。 言語実装、特に動的型付け言語の実装においては、実行時に値を扱う際、値本体の他に型などのメタ情報を持たせる必要がある。 静的に解析が可能な言語と違って実行時にしか解析ができないからだ。 しかし…

NGINX unit v0.1 と所感

せっかくなので動作までの作業ログと所感をまとめて書いておく。最新のインターフェースや環境構築については公式README.mdのほうが詳しいので参考程度に。記事内リンクについてはv0.1時点のものを引用しているためmasterとは差分があるので注意。 www.nginx…

Linear is Uniqueness ?

説明の内容に不足があるので追記をする予定です(これが記載されている時点では未追記) 幾つかの言語では線形型システム(Linear type system)を採用することによって、線形型を持つオブジェクトを正確に一度だけ使用するということを型システム上で検査し…

References will be Garbage

参照カウント方式のメモリ管理機構ではメモリ解放のプロセスを分散できるために、他のメモリ管理と比べて目に見える停止時間が少ない。 ただ、純粋な参照カウント方式では全てのオブジェクトの状態を管理することは難しくて、例えば循環参照などの問題が発生…

個人的 git メモ

たまに使うんだけど、忘れがちなコマンドたち。 見つけるたびに逐一追加していこうと思う。 commitのコメントミスった $ git commit --amend 実行でデフォルトのエディタが開いてコメント修正 ログの差分表示 $ git log -p diffがそれぞれ表示 変更を消さな…

TSP×最近追加法

注記 この記事は2016年7月に更新されてます。過去の記事の内容にプラスしてきちんとしたものにしました。 過去の内容には誤りがありました。すみません。 最近追加法 別称で最近隣接法とか存在するけれど、自分は最近隣接法とは区別している。最近隣接法は経…