Entries from 2010-09-01 to 1 month
これも rails バージョン 2.3.8 の話です。セッションには遅延ロードの仕組みがありますが、SessionHash#has_key? などの一部のメンバの実装は、Hash#has_key? の実装と変わらないので、そのまま使うとちょっとまずいです。適切に SessionHash#has_key? をオ…
たまには仕事の話をします。rails バージョン 2.3.8 での話。通常 reset_session してしまうと、そのセッションの id は失われてしまいます。reset_session 後にセッションの id を取得したい場合には、request.session_options[:id] に自前で id を発行する…
gcc のメーリングリストに、enum の前方宣言に関するパッチが、未完成ながらも投げられています。簡単そうなので enum class と一緒に実装されててもいいのに、と思っていたんですが、割合面倒なようです。gcc の現在のツリー構造では「まだ enumrator list …
accumulator generator というものがあります。暇つぶしに C++0x で書いてみました。 #include <memory> #include <functional> template <typename Num> auto accgen(Num n) -> std::function<auto (Num) -> Num> { auto np = std::make_shared<Num>(n); return [np](Num i) -> Num { return (*np) += i; }; } ラ</num></auto></typename></functional></memory>…
先週、ようやく range-based for が gcc-4.6 に実装されました。めでたい。さて range-based for ですが、規格によると for ( for-range-declaration : expression ) statement と { auto && __range = ( expression ); for ( auto __begin = begin-expr, __…
http://ls-al.jp/blog2/?itemid=3477 より。色んな map を書いてみます。 template <typename F, typename A> std::vector<typename std::result_of<F(A)>::type> map(const F& f, const std::vector<A> &v) { std::vector<typename std::result_of<F(A)>::type> r; for(auto it = v.begin(); it != v.end(); it++) r.push_back(f(*it)); …</typename></a></typename></typename>
ちょっとずつ書こうかなと思います。誰も書いてくれやしない…とグズっていても仕方ないことに気がついてしまいました。悲しいね… 勿論ボクも全然知らないことだらけなので、調べながら少しずつ、になってしまうとは思いますが、ぼちぼちやってみようと思いま…
プログラミングの魔導書を読みました。面白かったところだけ、軽く感想など書いてみます。Hello, C++ World! は kinaba さんのこの話がよりまとまったもの。本が出る前にちらっと内容は伺っていたんですが、矢張り面白かったです。たまに思うんですが kinaba…
メタプログラミング ruby を読みました。よくまとまっていて、いい本だなあと思いました。 個人的にはあんまり ruby で実行時にメソッドやクラス、モジュールを操作することはメタじゃないと思っているんですが…それはうさつのとして…折角なのでメタっぽい話…
FCD によると、C++0x では少なくとも 1024 回の再帰的なテンプレートの実体化が保証されることになっています。 1024 回というのは、通常は十分に大きく問題のない数字なのですが、メタプログラミングな気分の時には、ちょっと少ないカナ?という気持ちに、…