入れてビルドを試みることに。インストールされるファイルの欠損がありビルドができない。アップグレードが完了したので、ビルドを開始する。ファイルの甘さがいくらかあることが判明。どのオプションが必須なのかを調査する。14:40オプションの指定を解明できた。時間がかかりそうなので、食事に出かける。15:00食事から戻る。ビルドは無事完了していた。言語仕様などを調べ始める。資料からコピペしてサンプルコードを動かすことに成功。16:00ソースコードの構成を学びはじめる。いうコンポーネントがあることがわかる。この部分で切り出すことでApacheモジュールに組み込めそうだという見込みを立てる。17:10Apacheモジュールのひな形を書き始める。apxsはそのまま使えないのでapxsから変数だけクエリしてあとはMakefileでやることにする。18:30催促される。生成できない問題の謎が解ける。オプションが必要だった)19:30ひな形にMozart2のコードの一部を組み込んだ形でコンパイルを通すことに成功する。コードではなかったのでリンクで失敗してしまう。ビルドしなおすことに。ビルドに時間がかかるので食事に出かける。20:00食事から戻り、作業再開。Apacheのconfigから得られた内容をVMの起動パラメータに変換する簡単なお仕事の開始。21:00I/Oスレッドの扱いに悩み始める。I/Oスレッドをひとまずpost_configフェーズで起動する形で実装。22:00handlerにVMを起動させるところまで来る、が、VMが起動しない。23:40ドはまりしたが、余計なパラメータを渡していることが原因と判明、修正し、リクエストURIで指定されたドキュメントルート配下のMozart2のバイナリを読み込んで実行することに成功する。この時点では、まだレスポンスを書き出すことはできていないので、標準エラー出力への実行結果の出力で確かめるのみ。24:00Apacheとのつなぎこみを始める。最初の難関である、VMの起動時にVMにrequest_recを渡すという部分への対応を開始する。渡しのアプリケーションURLのみ。突っ込むという強引なやり方で成功する。ビルトインプロシージャの作り方を調べる。C++のクラスの実装と、それをビルドシステムのブートストラップでclangのAPIを使ってパースしてスタブを生成するコードから成ることを解明して、スタブを自前で書くことで対応を開始する。26:00レスポンスを書き出すビルトインプロシージャを作るには、VM生成時に渡されたrequest_recをプロシージャの文脈で取得できなければならないが、しかし、エントリポイントは、スタティックメソッドである。VMからビルトインモジュール名を指定してモジュールを取得できそうなことが分かったので、その方法を調べる。配下のVM内部の実装を読み解き、ようやくモジュールを取得してもコンテキストは取れないので、代わりにビルトインプロシージャのスタブそのものへのポインタを取得する方法しかないことが判明する。実装ができ、ブラウザに文字を出力することに成功する。疲弊しきったため風呂に入る。28:001時間ほどの仮眠を試みるが、4時間寝てしまう。32:00Ozで何をするかを決めようとする。I/Oスレッドが独立していることから、それが正しく動いていることを確認するためのコードを書きたく、それをそのままネタにすることにする。32:10TCPでの通信の方法を調べはじめる。Apacheの文脈から外れて、Ozでスタンドアロンで通信をするコードを書く。サーバー側はGoで実装した。33:10Goで実装したサーバーとの通信に成功する。33:20通信した内容をApacheを通じてレスポンスとして返すことに成功する。ネタを仕込むための実装を始めるため、Ozの標準モジュールについていろいろ調べ始める。34:10通して動くようになる。レポジトリを作成して、push。2016最後にめでたい。フィルタモジュールです。コードに深刻な勘違いがあったので修正。よる拡張モジュールビルド時のメモソース見て調べたので間違ってるかも。