Entries from 2009-07-01 to 1 month

続: C++で仮想メンバ関数テンプレートを使いたい話

C++ で仮想メンバ関数テンプレートを使いたい - kazuhoのメモ置き場 の続き。結局、関数の引数によるコンパイル時の多態性 (m) と、仮想関数による実行時の多態性 (n) を組み合わせようとした瞬間に、メンバ関数テンプレートが使えなくなって、必要な定義量…

C++ で仮想メンバ関数テンプレートを使いたい

class Base { public: template <typename T> virtual void print(const T& v) { ... } }; class Derived : public Base { public: template <typename T> virtual void print(const T& v) { ... } }; とか書きたい (けど動くわきゃない)。どうやれば書けるんだろうと思って、 #inclu</typename></typename>…

任意のイテレータを抽象型にラップするイテレータを書く話

C++ で仮想メンバ関数テンプレートを使いたい - kazuhoのメモ置き場の件、id:moriyoshi さんからトラックバックをいただきました。ありがとうございます。 それにしてもこの 2 つは本当に水と油だね。typeinfo 見てディスパッチする、というのがばっちりはま…

JavaScript で任意の漢字にマッチする正規表現を書く

重箱の隅で恐縮ですが。弾さんは (function(e){ e.innerHTML = e.innerHTML.replace( /東京都?([\u3200-\u4DBF\u4E00-\u9FFF\uF900-\uFAFF]+)/g, '首都$1東京' ) })(document.body)漢字を判定する正規表現が工夫のしどころでしょうか。[一-龠]はUnicode時代…

Q. UTF-8 の冗長性問題は、設計上の問題なのか?

UTF-8 は、逆方向へのスキャンが可能、バイナリ比較の結果が UCS と同じ、といった特徴をもつ一方、冗長なエンコーディングが可能という欠点をもっている。では、前者の特徴を活かしたまま、後者の問題をもたないエンコーディングを定義することはできるだろ…

STL のコンテナとか std::string の thread safety

SGI STL のマニュアルには、 The SGI implementation of STL is thread-safe only in the sense that simultaneous accesses to distinct containers are safe, and simultaneous read accesses to to shared containers are safe. If multiple threads acce…

おのこもすなる Objective-C といふものを (ry

Objective-C で hello world は以下のように書ける。 #include <stdio.h> int main(void) { puts("hello world"); return 0; } これをコンパイルするには以下のようにする。 gcc -Wall tokuhiro.m実行結果は以下のとおり hello worldC と同じなので簡単ですね (ぉ参考:</stdio.h>…

C++ でヘッダファイルだけでグローバル変数を定義する方法

今日、会社で出た話。C言語だとグローバル変数を (宣言ではなく) 定義するには、必ずソースファイル内を書かなければいけなくて面倒だけど、C++ なら簡単。テンプレートクラスを使えば、ヘッダファイルだけでグローバル変数を定義できる。以下、参考。 なの…

mysql と drizzle の負荷テストツール「skyload」が凄い!

tmaesakaさんがやってくれました。ずいぶん前からSQLのベンチマークを測定するのに使いやすいプログラムないかなーと思ってました。個人的にはmysqlslapというのを使ってたのですが、幾らか気に入らない所があったりコマンドラインオプションが複雑で毎回 --…

[MySQL] INFORMATION_SCHEMA から動的にテーブルを作るテストケースが動かなくて、はまってた件

lower_case_table_names=2 の環境のみ (= Win32, OSX) の話なんですが。大文字を含む名前をもつテーブルの INFORMATION_SCHEMA を読んじゃうと、以後 mysqld を再起動するまで同名の CREATE TABLE できなくなるという...バグとしては5月に報告されていたら…

C++ を書いていて boost に依存したくない理由

「boost 等、他の重たいライブラリに依存しない」boost 重いと思ったことないけど,そういう領域はあるんやろうなぁ はてなブックマーク - HISAMATSUのブックマーク / 2009年7月3日 おもしろい点だと思うので、こちらでフォロー。自分で使うプログラムを書い…

Atom のハイパースレッディングの効果

DELL の Inspiron Mini 9 を使っていて C++ のコンパイルに時間がかかるからハイパースレッディングの効果がどのくらいあるのかなーと思って試してみた。 コマンド 所要時間 (秒) make 30.825 make -j 2 22.501 おー速くなる速くなる。37% の速度向上。他の…