Not your computer? Use a private browsing window to sign in. Learn more about using Guest mode
Not your computer? Use a private browsing window to sign in. Learn more about using Guest mode
C++ Advent Calendar jp 2010の記事です。 今回は、Boost Fusion Libraryを紹介します。 Boost Fusion Libraryは、タプルのデータ構造とアルゴリズムを提供するライブラリです。 Fusionでは、2つの重要な概念を与えます。 1つは、タプルを異なる型のリストと見なしイテレートする、Fusion Sequenceという概念。 もうひとつは、タプルを名前のないユーザー定義型、ユーザー定義型を名前ありタプルと見なし、それらを相互運用可能にするという概念です。 まず、基本的な使い方を見ていきましょう: #include <iostream> #include <string> #include <boost/fusion/include/vector.hpp> #include <boost/fusion/include/for_each.
はじめてまじめに ...といってもたぶん 500 行くらい... WebKit ではなく Chromium 側のコードを書いている. まだレビューをとおってないため現在形. でかすぎてビルドの遅い Chromium より Mac WebKit をいじる方が快適という同僚もいたけれど, コード自体は Chromium の方がだいぶモダンだよなあ. 普通に unit test が書けるありがたさといったらない. Developer testing まず gtest が良くできていて感心する. static initializer を使ってケースの登録を分散化したり, コマンドラインフラグでテストケースを一覧選別できたり, プロセスを分離してクラッシュに強くしたり, クラッシュしたテストケースの backtrace をだしたり. でかい C++ のコードベース相手にテストをスケールするための工夫
これまで書いてきた Boost.statechart のまとめです。 まずこれまで書いたのは以下の 6 エントリです。本記事を入れて全 7 エントリとなります。 Boost.statechart 事始め Boost.statechart でイベントを受け取る Boost.statechart で状態のネストを定義する。 Boost.statechart で現在の状態を確認する。 Boost.statechart で複数状態を持つマシンを実装する。 Boost.statechart で CSV を読む。 主に参照したドキュメントはこちら。 The Boost Statechart Library 状態のモデリングは「State パターン」というそれっぽい名前がついているぐらいなのでプログラマなら誰もが一度は意識した事があるかと思います。 で、僕もご多分に漏れず状態をそれっぽく表現しようと試み
■ [ruby-list:47852] Re: ruby1.9での文字列について タイミングを外したのでここで。packなら1.8でも1.9でもいけるはずだ。 % /usr/bin/ruby -rnkf -ve 'p [s1="あ", NKF.nkf("-j",s1)].pack("A*A*")' ruby 1.8.7 (2010-06-23 patchlevel 299) [x86_64-linux] "\343\201\202\e$B$\"\e(B" % ruby -rnkf -ve 'p [s1="あ", NKF.nkf("-j",s1)].pack("A*A*")' ruby 1.9.3dev (2011-02-11 trunk 30836) [x86_64-linux] "\xE3\x81\x82\e$B$\"\e(B" ■ ON bit fixed これは適当に1から順番に生成
今回は uBLAS の遅延評価について説明します. uBLAS が他の数ある行列演算ライブラリと比べもっとも性質を異にしているものがこの遅延評価です. これは uBLAS 最大の特徴であり,Expression template という技法により実現されています. その実装はとても複雑ですが,実際に uBLAS を利用するユーザはそのことを意識しなくてもよい作りになっています. Expression template については以下が詳しいです. Expression Template しかし効率的なプログラムを書くという点で,この uBLAS の遅延評価について知っておくことは決して損にはならないでしょう. さて,次のようなコードを考えます. matrix A, B; prod(A, B); 何が起きるでしょうか?普通のライブラリなら prod 内で行列 A と行列 B の乗算が行われ,
Not your computer? Use a private browsing window to sign in. Learn more about using Guest mode
はじめに¶ このページは,Google Mock のドキュメント類を日本語訳したものです.翻訳に関しては,誤りのないように配慮しておりますが,至らない点も多々あるかと思います. 誤訳・誤字・脱字や不適切な表現を発見されましたら, ご連絡頂ければ幸いです( http://opencv.jp/forum ). 原文は英語であり,この訳文はオフィシャルなものではありません.なお,免責事項として,本訳を利用者が利用するにあたり,いかなる損害に対しても訳者はその責を負いません. Google Mock プロジェクトページ: http://code.google.com/p/googlemock/ ドキュメント¶ Google Mock のドキュメント(SVN trunk 版) このページには,Google Mock の SVN trunk 版 に対するすべてのドキュメントページが挙げられています.
ある程度大きな C++ のコードを書いたことがある人なら大抵はこの問題について考えますよね。まして Boost なんて使っていた日には「コンパイル時間が Boost される」とか言われる訳です。 コンパイル時間を活用してコーヒー入れたりトイレ行ったりブラウジングしたり Twitter に「リビルドなう」とか Post したりといった素晴らしい方法もありますが、ここではビルド時間を短縮する方法を考えていきます。 事前知識 多分どこでも言われてることだと思いますし、結構適当に書いてるので読み飛ばしてもいいと思います。 コンパイルが遅い原因 C++ のコンパイル時間の多くは、プリプロセッサにあります。プリプロセス時に行われる include やマクロの展開でかなり多くの時間を取っています。 きっと Boost.PP なんて使っていた日には「コンパイル時間が Booooooooooooooooos
は、Boost.Testライブラリのビルド不要で使用できる小さなテストライブラリとなっています。 #include <vector> #include <boost/test/minimal.hpp> int test_main(int argc, char* argv[]) { std::vector<int> v; BOOST_CHECK(v.empty()); BOOST_REQUIRE(v.size() == 0); return 0; } **** no errors detectedminimal testで用意されているのは以下の4つ: BOOST_CHECK(predicate) : 条件式を引数にとり、失敗時でもテストを続行します。 BOOST_REQUIRE(predicate) : こちらは、失敗時に例外を投げてテストを終了するので、失敗したら続行不可能なケースで使用
を作りました。 http://github.com/tanakh/cmdline 何か コマンドライン引き数の解析を助けるライブラリです。同じ目的のライブラリに、Cの標準関数であるgetoptやgoogleのgflagsなどがありますが、cmdlineは適当に使えてそこそこ便利というのを目指しています。getoptは使いにくいし、usageも自分で書く必要がある。gflagsはライブラリをインストールしたり、リンクしたりちょっと大掛かり。cmdlineは、1ヘッダファイルで、コピーするだけで使えて、修正BSDライセンスで公開しているので、自由にプログラムに取り込んでいただけます。 コードサンプル #include "cmdline.h" int main(int argc, char *argv[]) { cmdline::parser p; p.add("hoge", 'h', "hog
2010-06-20 Objective-C 2010-06-05 FrontPage DirectX その他(DirectX) RecentDeleted 2010-05-18 GameScript MenuBar 2010-01-21 iPhone 2009-12-12 メモ 2009-11-21 Mac 2009-06-16 test 2009-06-08 WPF 勉強会 2009-04-26 Squirrel 2009-04-09 テンプレートメタプログラミング関連 C++ C++言語仕様 2009-03-01 Lua 2009-01-13 C#サンプルとか 2009-01-11 C#言語仕様
たまには何か書きます。C/C++のマルチスレッドなプログラムのユニットテストでバグを効率的に見つけるためのライブラリ?の作成について。 IBM dWのConTest はてなブックマークを眺めていたら、「ConTestを使用したマルチスレッド・ユニットのテスト - 並列テストが困難な理由とConTestの活用」というIBM developerWorksの記事が話題になっていました。 「(Javaの) 並列プログラム上での単体テストの問題点を解決する補助的なテスト手法」だそうで、例としてあがっているのは次のようなケースです。 名前を印刷するのに3つのスレッドを用意する それぞれ、「姓」「スペース」「名」を印刷する 3つのスレッドは同期を取っていない。つまりバグがある しかし、単体テストを行っても、ほぼ毎回、「姓」「スペース」「名」という正しい順序で(スレッドが実行)されてしまい、バグを検出でき
August 2011 (1) July 2011 (1) June 2011 (2) April 2011 (2) March 2011 (2) February 2011 (2) January 2011 (6) December 2010 (6) November 2010 (5) October 2010 (8) September 2010 (2) August 2010 (3) July 2010 (9) June 2010 (4) March 2010 (1) February 2010 (7) January 2010 (2) std::stringstreamとは C++の標準ライブラリ(STL)で定義されている文字列ストリームで、色々な型を文字列化する際に重宝するクラスです。 JavaのStringBufferクラスに似ています。 まず、簡単な使い方から見てみましょう
未踏プロジェクトの支援を受けて開発していた、C/C++のための開発援助ツールGCCSenseをリリースしました。配布物やドキュメントは次のURLから入手できます。 http://cx4a.org/software/gccsense/index.ja.html 開発援助ツールと銘打っていますが、現状利用できる機能はコード補完と自動構文チェック(Emacsのみ)だけです。将来的には関数ヘルプ機能や型表示機能を実装する予定です。 GCCSenseはコード補完などの機能を搭載した独自のGCCを利用しているため、インストールがかなり面倒です。ドキュメントによってある程度カバーしたつもりですが、環境によってまちまちなのでインストール時に問題が出てくるのは必至だと思います。その際は私に連絡してください。 また、独自GCCを利用している関係上、現状ではWindowsでの利用はできません。自由なソフトウェア
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く