2009-01-01から1年間の記事一覧

天体の一部としての知的生命活動という自然観

地球に隕石が迫る。何らかの対策が講じられる。かくして隕石の地球への衝突は回避され、人類は難なきを得た。一見それだけの話にしか聞こえないかも知れないが、考えてみると不思議な話だ。 地球はもともとはただの岩の塊だった。それがあるとき飛来し接近す…

アバターを見に行こう

みんな映画アバター(AVATAR)を見よう。3Dで見られるうちに映画館に見に行こう。映画館でもいい席に座らないとあまり飛び出して見えないからもったいないぞ。ちゃんといい席で見れるように必要なら夜中とか平日とかに見に行くのもいい考えだ。 未開の星の青肌…

日付と時刻とメモ帳とワードパッド

プログラムの開発記録日記や、各種文書フォルダの説明用テキストとして、メモ帳またはワードパッドで覚書をつけることが多い。「XX日記.txt」みたいな名前のテキストファイルをあちこちに作成し、保存している。 その際、必ずその日の日付を西暦から曜日に…

Twitterが少しわかった

ずっとよくわからんかったTwitterの使い方および存在意義は、今回SIGGRAPHASIA2009に出席することでようやくわかっちゃった気がする。よーするにTwitterがすごいと思ったのは、生の情報がすぐ見れるっていうかわかるってことだと思った。 例えば自分が足を運…

マイクロソフト「忘年会2007」vs 「GOOGLE 忘年会 beta」

やあみんな、もう今年も終わりだね。みんなはどんな一年だったかな。おじさんは今年は粒子法の冒険から始まっていろいろと充実した年だったかも知れないな。さて、今日は忘年会とITについて考えてみたよ。忘年会を執り行うにあたってITがどのくらい活躍して…

GDIPlusってのがあったんだ

へー、VC2008SP1とかだともう #include <gdiplus.h> using namespace Gdiplus; とかやって、もういきなりGDIPLUSなるものが使えちゃうんだ。しかもそしたらいきなりGradientFill()とか使って上の図みたいに矩形領域のグラデーションペイントができるようになるんだへー</gdiplus.h>…

GetDC()について

以下、自分用のメモなので。GDIとか詳しくなかったんで。 for( int i=0; i<10; ++i ){ HDC dc = ::GetDC( this->m_picbox2.GetSafeHwnd() ); }// i とすると、同じウィンドウのデバイスコンテキストを取得してると思うのだが、様々に異なる値が10回返されて…

リストビューのオーナードロー日記

またまたMFCです。こんなの作ってみた。でもどのみちスムーススクロールしないので、いやスムーススクロールへの道はないことがわかったので、敗北感たっぷりなのだが。以下はリストビューのオーナードローのメモ。流れとしては 基本クラスを継承し、 DrawIt…

リストビューでスムーススクロール

こんだけiPhoneとかマルチタッチだとか、UIの充実っぷりの重要さが盛り上がってきているのに、MFCから.NETはおろか、Qt、WPFに至るまで、ドット単位でスムースにスクロールするカッコいい&気持ちいいListViewウィジェットがないのはとても不思議。 世の中ユ…

普遍性の高い部品処理の開発はとてもリスキーだね

例えばあるシステムを作っている職場で、そのシステムで共通して利用される特定の処理や専用アルゴリズムといった、「コアロジック」を専門にやる業務があったとする。そのような業務に携わるのはいいのだがこれに「特化する」してしまうのは、極めてリスキ…

BitBltについて

BitBlt(ビットブリット)とは、単なるWin32のGDIのAPIの一メソッド名だとばかり思っていたが、どうやらコンピュータグラフィックスにおける画像情報ブロック転送の概念を意味するれっきとした概念だったらしい。ちょっとだけまた一つWin32APIに対する親しみ…

MFCリストビューの簡易ラッパークラスを作ってみたよ

今日はMFCのリストビューに関する覚書だよ。 上図のように、MFCリストビューのレポート描画において、カラムやアイテムの追加が簡単にできるラッパーテンプレートクラスを作成したよ。 #include <sstream> class ListCtrl { public: ListCtrl( CListCtrl* lv ) : _lv(</sstream>…

STLPortパフォーマンス計測

C++

みんな元気にしてたかい。vector, list, deque, setのパフォーマンス実験を再びやってみたよ。前回との違いは以下の点だ。 findやinsertをテストする箇所は、コンテナの中の固定位置に対してのみ行っていたが、今度は乱数を使ってコンテナの中のランダムな場…

koten

100年後くらいには今書いてるブログとかどうなるんだろう。インターネット側のサービスが安定して存続し続けたとして考えてみると、容量は増えてるだろうからあえて削除する必要とかもなくなってるだろうし、内容もそれなりのものは骨董的な価値が生まれたり…

書き込み専用コード

C++

Effective STL 47項「書き込み専用コードの作成は避けよう」は、なかなか味のある項だと思う。そこに書いてある内容は、まさに読み手側に立ったコード記述をしようという内容だ。とまあそれだけならどこにでもある話なのだが、ここで触れられているのはつま…

STLport使用環境設定覚書

C++

STLportを試してみたよ。以下、自分用のメモ。 解凍先フォルダにてconfigure --helpを読んだ後、configure msvc9 実行、build/lib に移動、そこに、vsvars32.batを、コピーしてきて実行。そこでnmake clean installを実行すると、ビルドが始まる。 hello.sln…

AABBと無限開平面との交錯判定

C++

3次元空間にAABB(AxisAlignedBoundingBoxのことな)がそうだなー、5万個くらいあると思ってくれ。ある点を始点として、任意2方向に半直線を2本伸ばした際に、線と線の間に張られる無限開平面と、AABBとの交錯判定を高速に行う方法を考えています。AABBと半直…

STL:私がすぐアルゴリズムを使いたがる理由

C++

普通のfor分を書くのに比べてどうしてfor_eachなどの高階関数で書いた方が安心できるのか、その理由をなかなか明確な言葉にできなかったのだけど以下のようなことなんじゃないかと思い始めています。(その他さまざまな理由がEffectiveSTLとかにもたくさん書…

sgi::unary_composeっていうのがあった..orz

C++

ガーン。NestCallやNestCall1を作って自慢したりしてきたわけだが、すでにSTLのSGI拡張として、unary_compose なるものが存在したらしい。いやいやむしろ朗報ですよ、NestCall同等の機能が標準として存在してるのならそっちの方がいいよ、うんうん。俺だって…

ちょっと待った!そのbind1stに渡す拘束値、本当に実体渡しでいいのかもう一度考えよう

C++

当然のことなのですが、自分用なのでちょっとメモ。 vector< int > va(12); fill( va.begin(), va.end() , 77 ); vector< int > vb; こういう状況があるときに、 for_each( va.begin(), va.end(), my_bind1st_ref( mem_fun1( &vector< int >::push_back ), &…

remove_modifier

C++

template< class S > struct remove_modifier { template< class T > struct remove_constref_sub{ typedef T out_type; }; template< class T > struct remove_constref_sub< const T >{ typedef T out_type; }; template< class T > struct remove_constre…

本日の関数アダプタnurs::bind_binary

C++

今日はnurs::bind_binary の紹介だよ。bind_binaryは、予め渡されたbinary_functionを、unary_functionとして呼び出せるようにするための関数アダプタだよ。前回のNestCall1と併用することによってこれまた高階関数で記述できる処理の幅がぐっと増すことにな…

NestCall の1引数版、NestCall1

C++

今日は無限階層呼び出しNestCallの1引数受け取りバージョンである、NestCall1の紹介だよ。まずは以下がnurs::nest_call1のソースだ。 // nest_call1 template< class Fnc1, class Fnc2 > struct nest_call1_t: public binary_function < typename Fnc1::arg…

通し番号をキーにしたmapは構築しないで!

C++

やあ子供たち元気にしてるかい。今日は複数のオブジェクトがあるとき、それぞれのオブジェクトに通し番号をつけて、その通し番号でオブジェクトを逆に検索したい、なんていう場合の話だよ。こういうときに、int値の集合をキーにしたmapを構築してしかもそれ…

VS2008SP1のKB960075v2 hotfixを君はもう当てたか?

VisualStudio2008SP1で、どうも出力ウィンドウを独立表示移動したりして、終了すると、どーも必ずIDEが異常終了するなーと不愉快に思っていた。 そこで、いつもの落ちる画面を良く見ると「解決策を探しています」と出てるから期待せずにそのままにしておくと…

nurs::parse_tuple

C++

昨日のParseFloatVec は、何も浮動小数点に限った話ではないので、parse_tupleに改名。float_typeはatom_typeに改名。さらに、remove_modifierを使用(091012)。 namespace nurs{ template< class Func > struct parse_tuple_t { typedef typename nurs::remo…

浮動小数点数配列パース用ファンクタ

C++

今日のネタは浮動小数点数の1次元配列を便利に読み込みできるファンクタだよ。浮動小数点数の一次元配列があって、2つずつ読んで数値ペアとして解釈したりとか、3つずつ読んで、3次元ベクトルの3つの軸成分として解釈したりとか、みたいなそういう浮動小…

PrevRef: 前回値参照ループをサポートする汎用ファンクタ

C++

今回は前回に考えたPrevsMustGoクラスの抽象度を上げたクラスを考えてみるぞ。PrevsMustGoは、前回値を参照するループ処理を、for_eachで行えるようにするための試みなんだったね。今日発表するPrevRef ファンクタ(ソースは以下)はその汎用性を高めたもの…

前回値prevを使ったループ処理もfor_eachで

C++

やあみんな元気にしてるかい。忘年会の会場となる店が今日やっとこさ決まって今年の幹事を任されているおじさんとしてもやっとこさ一息ついているところだよ。ところで for_eachでだって、前回値を使ったループ処理が可能だ。これでコンテナを引数にとるアル…

キャストしてくれるだけのファンクタ

C++

ってないのかな、みたいな。あるいは簡単に作れるとか。 std::transformなどに渡すための、各種キャスト演算子の機能をファンクタにしたいと思ったのですが、どうも ptr_fun( static_cast< int > )(); などとやってみてもコンパイラに「ハァ」?と言われてし…