読者です 読者をやめる 読者になる 読者になる

C++ ときどき ごはん、わりとてぃーぶれいく☆

Wonder Rabbit Projectのなかのひとのブログ。主にC++。

C++

C++ tips: Boost で demangling

RTTIで型情報を対話的に可視化したいと思うと、C++ではデマングルしないと割と読めません。extern "C"しておくとか邪悪臭いですし。 ところがデマングリングは処理系依存に触れる事になるので、ユーザーコードで扱いたいものではありません。そこで処理系依…

Color programming tips with C++ samples: RGB24(16777216色)に対しHSL24は十分な分解能を持っているか?

今回は色の話。PCでは長らく16777216色を誇るRGB24がディスプレイはじめ色を取り扱う際の標準として利用されてきた。RGBなのかBGRなのかなどは今回の本題では無いのでスルーする。また、制限された環境におけるRGB16やRGB15であるとか65536色中同時256色であ…

GCC4.7.1: C++11 と OpenMP のちょっと惜しい関係

C++11から言語仕様のスレッディング周りが強化され、thread、atomic、mutexなどなど言語標準機能として扱える様になり、ちょっとやそっとやそれなりの用途でもintel TBBやBoost.Threadに頼らずにマルチスレッディングソフトウェアを開発し易くなりました。 …

Boost.MultiArray メモ

std::valarrayだと基本的には1次元のデータ構造に対してスライスを考えて多次元要素集合としてアクセスする事になる。Boost.MultiArrayなら基本的には多次元のデータ構造に対して必要ならば1次元のRAWなデータ構造も用いる事ができる。多くの場合は後者の方…

openSUSE-12.2 に OGLplus を導入

OpenGL3以上のCなAPIをC++らしく扱う為のライブラリーOGLplusをopenSUSE-12.2に導入する。 OGLplus - a C++ wrapper for OpenGL® version 3 and higher. zypperに対応したパッケージは無いので普通にソースを拾ってビルドしてインストールする。 OGLplus ソ…

cpp_ac_2012_4th の particle_system そのもののベンチマーク; time, gprof, oprofile

Related Entries C++ Advent Calendar 2012 / day 4th : Native-client vs. HTML5 ; C++ in the web-client-world! - C++ ときどき ごはん、わりとてぃーぶれいく☆ After care: C++ Advent Calendar 2012 / day 4th : Native-client vs. HTML5 ; C++ in the …

QtCreator-2.5.0 + QtOpenGL + GLUT ==> teapot

(いちおう)エディターたるVimから、IDEたるQtCreatorでの開発を勉強中。先ずはお約束の第一歩、teapotの備忘録。 プロジェクトをQtの雛形から作成 File --> New file or Project (CTRL+N) Projects: Applications --> Qt Gui Application 以降、仮にプロジ…

After care: C++ Advent Calendar 2012 / day 4th : Native-client vs. HTML5 ; C++ in the web-client-world!

先日のC++ Advent Calendar 2012 / day 4th : Native-client vs. HTML5 ; C++ in the web-client-world! - C++ ときどき ごはん、わりとてぃーぶれいく☆の続き、その1です。ちょっとだけリファクタリングしたり、C++とJSのインターフェース部分のやっつけ感…

C++ Advent Calendar 2012 / day 4th : Native-client vs. HTML5 ; C++ in the web-client-world!

C++ Advent Calendar 2012 / 4th day (!) この記事はC++ Advent Calendar 2012の参加記事です ヽ(=´▽`=)ノ 記事の公開と本編内容が4th dayのリミットより数時間遅れてしまいました事をお詫び申し上げます。 Native-client vs. HTML5 ; C++ in web-client-worl…

std::array::empty()

必要なシーンに今まで遭遇していなかった事もあり、std::array::empty()の存在と動作なんて考えた事も無かった。実際問題としてstd::array::empty()が存在し使えるのかは規格書開くより実装確認した方が早いのでとりあえずideoneに入れてみた。http://ideone…

C++ の #include するファイル名について規格に基づいて実際に試してみた

C++の規格§2.9 Header names によれば、#include の や "fuga" におけるhogeやfugaの文字について、 hoge には > を除いて、 fuga には " を除いて、 ' \ /* // が含まれる場合は実装依存、またhogeのパターンの場合には " が含まれる場合にも実装依存と書い…

うさぎさんはトライグラフを使った!! → わけがわからなくなった

別に使う必要に迫られた訳では無いのですが、"トライグラフ"というものを使ったあるプログラミング言語のソースコードのごく初歩的で簡単なコードのサンプルがこちらになります。 ??=include <iostream> int main()??< unsigned a??(??)=??<1,2,3??>; std::cout< https</iostream>…

Crystal Space-2.1(trunk/svnversion:39000) を openSUSE-12.2 で試すなど

Crystal Space http://www.crystalspace3d.org/ 基本機能は3D描画ライブラリー。 使うまでの準備 ダウンロード http://www.crystalspace3d.org/main/Download openSUSE-12.2のリポジトリーには無いのでSVNなどでソースを拾ってライブラリーをビルドしてイン…

Android NDKを使う前に知っておいた方が良いメモ

執筆時点のAndroid NDK(r19)について。 知って措いた方良い事 JNIのCバインディングとC++バインディングはまったく別物 APIの名前は同じ挙句にC++版でも名前空間つこうて無かったりで、ありがちなC/C++対応と言いつつ実はCっていうパターンかと思いきやC++バ…

twitcurl - C++ Twitter Library てのが使い易いのではなかろうか

「Twitterを扱うC++のライブラリー」について何を使ったら良いか、最近Bjarne鈍器本日本語版を購入してC++の勉強を始めた学生さんに紹介する事になった。OAuthなりXAuthなりでTwitterをさっくり使える様になる、という条件はライブラリーを使うのだから当然…

Boost.GILでpng書きだそうと思ったらライブラリーにdefine足りて無いよメモ

boost1.49つこうてるけど発症した > Issue 8 - gilviewer - Boost:GIL / LibPNG 1.4; ‘int_p_NULL’ was not declared in this scope code.google.com/p/gilviewer/is…— 莉煎・優曇華院・因幡(実際うさぎ)さん (@USAGI_WRP) 6月 1, 2012と、いうわけで、Is…

NaCl tips; 開発環境のPepper APIを更新した後のChromiumの.nmf のリフレッシュ、特にglibc版を扱う際の注意

開発環境のPepper APIのバージョンを差し替えてもnewlibなら.nexeが更新されるだけで.nmfは変更が無い。しかし、glibc版を使っている場合にはrunnable-ld.soがリンクする.soのリビジョンがちまちまと変わる(hoge.so.12345がhoge.so.23456になるとか)のに追従…

NaCl tips; 標準出力でのログ採りが利く様なので

先日NaClでstd::coutするとホストしたウェブブラウザーのコンソールに出力が得られる事を確認しました。JavaScriptへメッセージングしてconsole.logへ出す方法も考えて居たのですが、只でさえ負荷を掛けたくないJavaScriptに大量のデバッグログをメッセージ…

NaCl tips; <fstream>は事実上使えないみたい。ついでにstd::endlについておまけ記載

std::cout/std::cerrを使えるのはわかったけどログをファイル出力したいなと思って一応試してみた。やはりPepper APIのファイルシステムしか使えないらしくstd::cin同様にコンパイルは通るが実行時に何も処理しないっぽい。 std::ofstream o("nacl-test.log"…

NaCl tips; <embed>のパラメーターをpp::Instanceで取得

NaClインスタンスをホストしたHTMLの<embed>のパラメーター群をホストされたNaClインスタンスで得られる。設置する人がニーズに併せて設置に応じたコンフィグレーションを適用できるようにする簡単な方法としては良い選択肢の1つですね。 得られるのはNaClをホスト</embed>…

NaCl tips; 入力イベントを捉える

NaClではPepper APIでキーボードやマウスからの入力の面倒を見てくれる。(JavaScriptで受けてメッセージングで飛ばすなんてダサい事は必要ないよ!やったね!!)ポイントは2つ。 pp::Instance::RequestInputEvents/pp::Instance::RequestFilteringInputEv…

NaCl tips; NaClの標準出力、標準エラー出力はどこに繋がっている?

NaClの標準出力、標準エラー出力はどこに繋がっているのか試したら手っ取り早く把握できた。 C++ source なんという事は無くどっかにstd::coutとstd::cerrを仕込んで試しただけ。 std::cout << "std::cout" << std::endl; std::cerr << "std::cerr\n"; std::…

NaCl tips; glibc使用で.nmfから複数ファイルをロードする様な場合のプログレスイベントの発生について

先の記事の様にnewlib→glibcにして.nmfから複数ファイルをロードする様になったなら、プログレスイベントの発生がnewlibと単一ファイルだった頃では想定外の状況が発生した。 問題 newlib仕様で単一の.nexeをロードすれば良いだけの場合ならば次の様にロード…

NaCl tips; newlib → glibc

NaClのツールチェインはnewlibとglibcを使える。これまではとりあえずnewlibを使ってた。でも、boost::lexical_castを使おうかと思ったらnewlibではどうもロケール周りの実装でコンパイルエラーがぽぽぽぽーんするのでglibcを使う事に。しかしglibcを使う場…

NaCl tips; JavaScriptサイドのNaClモジュール由来のイベント群

NaClモジュールに由来してそのembed要素に発生し得るJavaScriptイベント群について全て実装してみた。備忘録として今回もテスト中のLabyrinthian - Wonder Rabbit Projectのリポジトリにtag 0.0.2を打って措いた。 JS-sideのイベントシステムをすべて実装 · …

NaCl tips; NaClモジュール <==> JavaScript メッセージング

自分自身が作りたいと思っていたゲームのアイデアを実現したり、技術的なテストをオンラインで行うプラットフォームとすべく、 "Labyrinthian - Wonder Rabbit Project" を実装し始めました。実装というかテストしてるだけな感じですけど。 source NaClモジ…

NaCl tips; includeでふんわり把握するSDK同梱のライブラリー群

NaCl pepper_19 SDKのinclude以下はこんな感じ: EGL/ envlock.h langinfo.h reent.h strings.h GLES2/ envz.h libgen.h regdef.h sys/ KHR/ errno.h limits.h regex.h tar.h _ansi.h fastmath.h locale.h rpc/ termios.h _syslist.h fcntl.h machine/ sched.…

食塩と隕石と珈琲と

今考えている事のメモ。NaCl(食塩)とMeteor(隕石)でマイゲーム基盤を作ろうかと言う事。 ゲームのアイデアではなくて基盤技術の概要に関するメモだけど。 NaCl; Natice Client Native Client — Google Developers 概要 ウェブブラウザーでELFバイナリを安全…

Native Client // C++へ帰る日。ネイティブの空を遠いウェブの地からも仰ぎ見よう!

一般論としてよく、女子はキラキラしたものが好きだと言われる。たぶん同様に私の場合はマシンネイティブな対象が好きなんだと思う。HTMLとかJavaScriptとか、心の故郷から遠すぎる旅路が長くなると帰りたくなる、C++へ。例えまだ帰り付く街が03だったとして…

haskell の標準エラー出力、C++的に言うところの std::cerr 的なそれのメモ

Haskell で標準エラー出力 import System.IO main :: IO () main = case f of Right a -> putStr a Left a -> hPrint stderr a f :: Either String String f = ... ※EitherのLeftもRightもStringなのは、この例ではそれぞれ標準エラー出力と標準出力へと出力…

Dart vs. JavaScript vs. Haskell vs. C++ // n-body benchmarking!!

Dart と JavaScript と Haskell と C++ で n-body (多体問題)のベンチマークしたよー。時間測定は全て time ちゃんです。<※コメントにて runhaskell とコンパイル済みの .o 存在下の挙動について教えて頂き、 runhaskell について測りなおしました!> 結果…

Intel® Parallel Studio XE 2011とハードチーズと謎の高級中国茶と

インテルが「インテル® ソフトウェア開発製品を使って、アプリケーションを並列化、高速化しましょう!キャンペーン」とか言う事で2012年3月30日までキャッキャウフフなノベルティが貰えるよとかやっていた(・∀・) XLsoft エクセルソフト : インテル …

FLTKを実用するなら2.0がいいのかなぁ

FLTKはGUIツールキット。QtとかGtk+の影に隠れている感じがしますが、シンプルで扱い易く、ストラウストラップのプログラミング入門でもGUIの基本的なトコを教えるのに用いられています。 Fast Light Toolkit (FLTK) FLTK公式のロードマップを見ると、 1.1 …

community/wt 3.2.0-2 a C++ library ...

Wt という C++ のウェブフレームワークをご存知だろうか? Wt, C++ Web Toolkit 存在を知ったきっかけはBoostを使用しているプロジェクト - boostjp。ここのオープンソースライブラリに名前が上がっている。存在を知ってからというもの、度々興味を持ちなが…

C++11 <thread> GCC 4.6.2 は -pthread 付けないとダメよ

GCC4.6.2ではC++11のが凡そサポート済みという事になっている。ところが簡単なテストコードを書いてビルドしてみると std::system_error 例外がスローされる。whatには"Operation not permitted"。実はビルドする際に -std=c++0x の他に -pthread を付けない…

C++のstd::vectorはなぜ"vector"という名前なの?

この疑問を抱いた人は一定数居て、そして新たにC++を学習させた者もまたある程度の割合で同じ疑問を例え一刻であれ抱くと思う。そんなアナタはまだ理系とは言えないか、せいぜいとってもヒヨッコである。stackoverflowでの質問とその答えの一部を紹介しよう…

ブレースによる初期化と初期化リスト

#include <iostream> struct hoge_type{ hoge_type(int){ std::cout<<"A\n"; } hoge_type(std::initializer_list<int>&&){ std::cout<<"B\n"; } }; int main(){ int v = 1; auto a = hoge_type(v); auto b = hoge_type(std::move(v)); auto c = hoge_type{v}; auto d = hoge</int></iostream>…