つれづれ日記 2010年12月

予定

毎日


2010年12月31日 (金曜日)

10:42:16 # Life はじめての apache module で自分の目標としていた機能が実現できた。一区切り。 ロックファイルを使って、 1 qps しか通さないというフィルタモジュールをつくってみた。 ロードバランスしてくれるリバースプロキシの挙動を確認するために使おうかとおもっている。 Apache httpd では、POSIXラッパー+STLのラッパー+Apache内部APIという趣きのAPRというライブラリが提供されていて、Apache moduleはその関数を使うことになっているっぽい。なにがよいかというと、それを使っておくと多分WindowsでもLinuxでも動く。 しかし、まだAPRの作法が十分わかっていないので、aprの利用は必要最小限、 Linuxでしかおそらく動かない感じにしている。 まだapache のドキュメント作法になれていないので 適切なドキュメントや関数に到達するのに時間がかかっている感じ。 modules.apache.orgをあさってみるといろいろとサンプルが出てきてよい。自分のやりたいのと似ている実装を探してきてどういう解決をしているのかを眺めると逆引きできてよい。 自分のやりたいことと似ている実装はどれかというのがわかりはじめるまでの学習曲線は厳しい気はする。 適切な入門書があればここはもうちょっと楽になる気がする。

22:07:24 # Life 関西Debian勉強会。 今年、8月、9月、12月と三回も参加したんですね。東京在住のはずなのに。

2010年12月29日 (水曜日)

16:14:41 # Life apacheの専門用語 Brigade + bucket. Apache module で filter を実装しようとすると、入力として渡されるデータ形式が brigade で、出力として期待されているのも brigadeっぽい。Brigadeって普通に考えると軍事用語で直感的ではないのでメモ。 HTTP サーバを素直に実装してみると、文字列操作がいくつか発生するのに気づくだろう。クライアントに返すためのヘッダを先頭に追加したり、途中にデータを挿入したり、そういう操作がいくつか発生する。ネットワークやディスクから取得したデータをネットワークで送出するまでの一連の流れで文字列操作をゼロコピーでできればいいな、と思うかもしれない。例えば、ファイルをネットワークに送信する場合は、ヘッダをメモリ上で作成して、その続きで送るファイルは中身をreadで読んでwriteで書き出す必要はなくて、カーネルにsendfileで送信させればよい。 Apache の内部で使われている brigade と bucket というコンセプトはそれの一つの解らしい。 bucket は入力情報の管理の単位で、 メモリ領域やファイルデスクリプタを管理する。 brigade は一連の bucket を管理する。

参考:

2010年12月28日 (火曜日)

17:57:46 # Life CACertに久しぶりにログインしてみた。 150ポイントをもっていることになっていて、 You have made 11 assurances which ranks you as the #2903 top assurer.とか出てきた。 設定を変更して、I don't want to be listed から I want to be listed に切り替え、これで東京在住の assurer として見つかるようになるのかな。 Assurer Challenge を受験したので無事 Assurer に復帰しました。

cats.cacert.org のログインにはクライアント証明書が必要らしいという噂。 Chromeからはクライアント証明書が使えなかった。 秘密鍵がブラウザに紐づけられるので、Chromeで生成した鍵はそのChromeでしかインストールできないっぽい。

現在、CACert で assurer になるためにはAssurer Challenge を通る必要がある。 この wiki page から必要そうなドキュメントにリンクが張ってあるが、ここに到達するまでが難しかった。

2010年12月27日 (月曜日)

21:21:18 # Life apache module の例とかを読んでみたいまのところの感想。 Apache のソースコードに入っているモジュールを読んでみる。 ApacheのモジュールとしてHTTPが扱いやすいフレームワークが用意されている、 という感じではなくて、 Apacheの処理の中にフックをいれることができるという仕組みのよう。fork/execしないでCGIを実装したいならモジュールを作る、とかそういう印象。 proxy まわりを読むとなんかHTTPってこんなことになっているのかという 混迷がむしろ深まる感じ。 Chunked-transfer encoding とか Range とか、使うのは便利だけど動的に生成する場合にはあまり扱いたくないなぁと思う。

2010年12月26日 (日曜日)

15:46:56 # Life hashがなぜ33の掛け算でよいのか、という点を追試してみた。 手元で0から255までの値をかけて足す場合について、256のバケツに振り分けた結果、大きさの標準偏差をとってみた。 テスト対象としては、英文のテキストファイル debian_policy.txt, cin から string を取り出す(空白区切り)処理をしてその文字列のハッシュをとるということをしてみた。 評価方法としては、256あるバケットに入っているアイテムの数をかぞえて、その標準偏差をとってみて、最小なものを探す、というようにしてみた。 それでみてみたところ、バケットあたり平均28.5156アイテム。 奇数の場合は標準偏差が 5 前後で、偶数の場合は標準偏差は5をあきらかに越える、という感じでした。 奇数はどれをえらんでもそんなにかわらんかんじで、33とか31が特にによいというわけではなかったです。 これは評価方法・評価関数がおかしいのかも。「1」とあまりかわらないというのはひどすぎ。

$ sort -n -k2 hoge.txt | nl
     1	151: 4.68372
     2	247: 4.74668
     3	195: 4.76721
     4	23: 4.8015
     5	87: 4.80232
     6	119: 4.87658
     7	89: 4.89576
     8	25: 4.94814
     9	111: 4.95524
    10	239: 4.96548
    11	67: 4.97962
    12	245: 4.99763
    13	223: 5.00544
    14	91: 5.03811
	

17:03:00 # Life C compiler の precompiled header でやろうとしていることって TeXのLaTeX でやっていることと同じだよなぁ。とふと思った。

17:09:15 # Life 64bit machine をそろそろ使いたいという話題が関西Debian勉強会で出た。 個人的にはDebian amd64 を使い始めたのはdx5150MT を買った2005年10月で、2010年にはいってから VAIO type P という 32bit のマシンを買うまでは 64bit でしか Linux を触っていなかったというのもあり、複雑な感じ。 flash がうごかなかったとかいうのは過去の話でいまはnspluginwrapper や 64bit flash plugin があるからいいし、 32bit binaryは ia32-libs と lib32* をインストールすれば動くし。

2010年12月25日 (土曜日)

15:25:34 # Life 冬休みの宿題ということで、Apacheのソースコードを読んでみている。 httpd-2.2.17/modules/cache/cache_hash.c に文字列に対してのハッシュ関数はなぜ 33の掛け算でよいのか、ということが説明してあってへぇ、と思った。 一見したら、33でかけるだけなんてなんてひどいんだ、という感想をいだくけど、 他の数字でかける場合と比べてこれは妥当らしい。 しかし、掛け算じゃない方法とは比べていないのでそこは注意。 どうやって評価するのがよいのかな。まずはハッシュ関数自体の速度を計測するのと、自分が利用しようとおもうデータ例の文字列の列にハッシュ関数をかけて、衝突の回数を計測すればよいのだろうか。 文字コードとかによってはハッシュ関数は変わると思うんだけどどれくらい変わるんだろ。

2010年12月19日 (日曜日)

10:58:12 # Life アンケートしてみたら。 CACertのセッションについてのアンケートで、 このセッションを人に勧められますか?という評価軸だと 「CACertを人に勧められるか」と勘違いするかもしれないと気遣っている人がいるみたい。 そんな勘違いあるのか? セッションの話題と議論についてだろ? と思うのだが、どうなんだろう。

2010年12月18日 (土曜日)

16:23:55 # Life 東京エリアDebian勉強会。 2010年12月の勉強会が荻窪にて開催されました。 参加者は、松鵜さん、前田さん、 山田(泰)さん、山本浩之さん、yyuuさん、野島さん、 やまねさん、岩松さん、あらきやすひろさん、 野首さん、本庄さん、吉田@板橋さん、上川の14人でした。


一次会会計:
(+
	  7100  ; 会費
	  -4645 ; 印刷費用
	  -2730 ; 会場費用
)

275円の赤字
	

2010年12月3日 (金曜日)

00:18:47 # Life appengineのメール送信。 一分間あたりのfree quotaのリミットがかなり少ない。アンケートメールが8人くらいにしか投げれなかった。SPAMしにくいようにつくられているのはわかるが、task queueをここで使うのか…


Junichi Uekawa

$Id: 201012.html.ja,v 1.13 2011/01/01 11:26:30 dancer Exp $