タグ

ブックマーク / labs.cybozu.co.jp (4)

  • mitsunari@cybozu labs

    Visual StudioのC++開発環境ではsizeof(wchar_t) == 2なのでstd::wstringではサロゲートペアを考慮する必要があります. それを避けるためにUTF32文字列で文字列処理を行いたい場合があると思います.その場合, typedef unsigned int uint32_t; typedef std::basic_string<uint32_t> u32stirng; などの定義をして文字列を使うことになるでしょう.これらの型はC++0xでは標準になる予定です. 実際には利便性のためにchar*との自然な変換メソッドなどを追加すると思いますが,ここでは省略します. boost::regexでもstd::stringと同様にテンプレートパラメータに文字の型を与えることができ, typedef boost::basic_regex<uint32_t> u32

    hitsujibane
    hitsujibane 2009/11/08
    VCでUTF32文字列に対してboost::regexを使う
  • Pixel City – 人工の3D夜景を作るチュートリアル&ソース

    Pixel Cityは、コンピュータ上で存在しない都市の夜景を、毎回リアルタイムで、ランダムに生成するというプロジェクトで、上記の動画はその作っていく過程と最終的な夜景を収めたもの。 Twenty Sidedというブログ […] Pixel Cityは、コンピュータ上で存在しない都市の夜景を、毎回リアルタイムで、ランダムに生成するというプロジェクトで、上記の動画はその作っていく過程と最終的な夜景を収めたもの。 Twenty Sidedというブログで4月から5月にかけて、その手順が詳細に書かれている。 Windows+OpenGLベースで、実際に制作にかけた時間は合計で30時間ということ。以下に各記事を示す。 Part 1: はじめに Part 2: ビル壁面のテクスチャを作る Part 3: 新旧デザインのビルを作る Part 4: 都市計画(街路と大小ビルの配置) 休憩 Part 5:

  • Kazuho@Cybozu Labs: C++ テンプレートを使って MBCS と Unicode ちゃんぽんなコードを書く話

    « Greasemetal (Google Chrome 用 Greasemonkey) を公開しました | メイン | Greasemetal 0.2 をリリースしました » 2008年09月12日 C++ テンプレートを使って MBCS と Unicode ちゃんぽんなコードを書く話 あちこちから寄せ集めたコードを組み合わせるようなプログラムを書いていると (Greasemetal のことですね)、プログラム内に MBCS 前提のコードと UTF16 前提のコードが混在することが往々にして発生します。 C++ の世界のみで完結できるのであれば、型テンプレートと関数の多重定義を使って総称的なコードを簡単に書けるのですが、実際は、MBCS 版と UTF16 版で関数の名称が異なる C API を呼び出す必要が出てきたりします。具体的には、RegQueryValueExA と RegQuer

  • Kazuho@Cybozu Labs: MySQL (InnoDB) に直接アクセスしてタイムライン処理を高速化する話

    « フレンド・タイムライン処理の原理と実践 | メイン | MySQL の ORDER BY を高速化 » 2008年06月12日 MySQL (InnoDB) に直接アクセスしてタイムライン処理を高速化する話 フレンド・タイムライン処理の原理と実践 の続きです。 先のエントリでは、プルモデルの速度が当初予測していたよりも遅かった (というより SQL レイヤでのオーバーヘッドが大きそうだった) ので、MySQL Internals メーリングリストで質問したりしながら、C++ で直接 InnoDB にアクセスするようなコードを書いてみました。 タイムライン構築速度 タイムライン/秒 SQL そしたら、10倍以上高速に! ベンチマークを perl ベースのものから mysqlslap に変えたのですが、プッシュモデルの 2/3 の速度が出ています。これなら、データサイズが約 1/10 にな

  • 1