memcached: Slab Allocator

僕の務める会社でも memcached はほとんどのサービスで利用されています。 今は業務も少ないので、ひまつぶしにmemcachedのコードを読んでいました。 Slab Allocatorの部分に興味を持ったので、それについてわかったことのメモ。 以下のサイトで事前知識を付けてからコードを読みました。 memcachedを知り尽くす:第2回 memcachedのメモリストレージを理解する Slab Allocator : メモリの確保・管理を行うメカニズム  ・メモリアロケーションでオーバーヘ…

Thrift + OpenCV

Thriftを利用してOpenCVの関数をスクリプトから呼んでみます。 といってもRPCで繋げるだけで特別なことをする必要はありません。 ここでは、画像の各チャンネルの平均値と標準偏差を求めてみます。 サーバ側でOpenCVの cvAvgSvd() を利用すればOK。 まず、最初にRPCのインタフェースをThrift IDLに書きます。 ここでは、平均と標準偏差を求める関数を2つ作ることにしました。 各チャンネルの値が欲しいので戻り値は list<double> に、 引数は画像ファ…

Thrift::例外処理

Thriftでの例外処理について。 macbookへのインストールについてはThriftインストールを参照。 hello, world 的な話はたくさん情報が公開されているのでそちらを参考するといいかと。 ここでは例外処理についてメモしておきます。 TException ThriftはRPCフレームワークです。 このRPCにおいてなんらかの理由でサーバと通信ができなかった時などの異常系処理。 ThriftではTExceptionという例外オブジェクトを送出します。 PerlとPHPの例を載せます…

Thriftインストール

Thriftを業務で今後利用するかもしれないので少し調べています。 ただ、インストールでつまづいてた。。 普通に公式サイトに書いてあるようにやれば上手くインストールできるのです。 FrontPage Thrift Wiki ただ、FAQもよく読んでおくべきだった。。それだけ。 一応メモ。 今回はMacbookにインストールしました。 Thriftはboostが必須なので注意。公式サイトにはSo please download the bzip2 of boost and unpack〜〜とか書い…

土曜は本屋へ

OpenCVの新しい書籍を立ち読みしてきました。 OpenCV プログラミングブック 第2版 OpenCV 1.1対応 第1版と違うところはやはり「機械学習」の項が増えたことでしょう。 内容はお約束のHaar-likeであまり新鮮味はありませんが、丁寧に書かれていたのは良いです。 巻末のリファレンスもしっかりしているのでお守り代わりに買っておくのもありだと思います。 (ディスプレイでHTMLリファレンスを読みたくない人にオススメ) ———- 最近は業務で簡単な…

typename

業務でつまづいたことメモ。 テンプレートパラメータの宣言でclassとtypenameの違いはないが、typenameにはもう一つの意味があって、これを使わなければならない場所がある。例えば、STLコンテナを引数に取る関数テンプレートを作る時、 [cpp] template void func(const T& container) { if(container.size() > 2) { T::const_iterator iter(container.begin()); // 型名…