プログラミング

テンプレート版 noncopyable を使うときは要注意

コピーを禁止するクラスを定義する際に Boost の noncopyable クラスや同様の自作クラスを使うことは多いと思う。 Boost の noncopyable は継承するだけで OK という手軽さがいいんだけど、More C++ Idioms/コピー禁止ミックスイン(Non-copyable Mixin) によ…

omake: Symbol `FamErrlist' has different size in shared object, consider re-linking

OMake を使うと下のような謎のエラーが出る。 omake: Symbol `FamErrlist' has different size in shared object, consider re-linking ビルドはちゃんとできているようだけど、どうも気持ち悪いのでなんとかしたい。 単刀直入に言うと、下記コマンドで直っ…

汎用(?)OMakefile を作ってみた

autotools(autoconf/automake/libtool) の設定のあまりの複雑さに挫折してしまった人にとって、OMake は救世主といっても過言ではないはず。 OMake とはなんぞやという人は以下のサイトを見るといいかも。 OMake つかったらC言語でプログラム書く手間がバカ…

簡易版 Boost.Xpressive、Boost.Spirit の正規表現対応表

以前、Boost.Xpressive と Boost.Spirit の速度比べをした際にちょっと調べたのでまとめておこう。 この書き方しかないわけではないので、もっと実行効率のいいルールを探すのもいいかもね。 ただ、Boost.Spirit は網羅的なマッチングをしないので要注意*1。…

TBB3.0 scalable_allocator vs. TCMalloc

Intel TBB 3.0 の exampels を見ていると、scalable_allocator と stdmalloc の性能比較ができるサンプル (exmaples/task/tree_sum) があったので、ついでに Google 謹製 tcmalloc とも比較してみた。 比較に使った PC のスペックは CPU: Core i5 750@2.67GH…

Boost.XpressiveとBoost.Spiritの速度比べ

ちょっとした構文解析なら Xpressive でも充分だけど、ちゃんとした(?)構文解析器の Spirit と比べてどれだけ性能の差があるのか調べてみた。 どうせ比較するなら実用的なもので、というわけで RFC 2616 やらを参考に HTTP のリクエストヘッダをパースさせて…

boost::xpressiveのrangeでハマる

boost::xpressiveを使って「コントロール文字を除いたUS-ASCII文字(0x20〜0x7e)」以外か判定しようとしたら、かなり恥ずかしい間違いをしたのでメモ。 元々次のような正規表現で判定をしようと思っていた。 #include <iostream> #include <boost/xpressive/xpressive.hpp> int main() { using namespac</boost/xpressive/xpressive.hpp></iostream>…

LD_PRELOADで他プロセスのバッファリング無効化

pipe や popen を使っていると、本来なら出力済みのはずの他プロセスの出力がなかなか取得できないことがある。 最初はpopenやpipeのせいかと思っていろいろ調べたけど、どうも出力時のバッファリングの影響のようだ。 自分のプログラム中でバッファリングの…

boost::units を少し使いやすくする

boost::unitsを使う場合、下記のようになる。 #include <boost/untis/systems/si.hpp> #include <boost/units/systems/prefixes.hpp> using namespace boost::units; quantity<si::time> x(1.0*si::second); // 1 s quantity<si::time> y(1.0*si::milli*si::meter); // 0.001 s この書き方にはいくつか気になる点がある。 まず、quantityで使って</si::time></si::time></boost/units/systems/prefixes.hpp></boost/untis/systems/si.hpp>…

DI可能なSingleton

Singletonを使うとユニットテストが難しいよねという話。 実際は自分流のSingletonの書き方の変遷をまとめただけ。