- ある開発者の覚書 - ソフトウェア開発者が情報処理に関する雑多な話題をジャンルを問わずに書き留めています.未来の私、私と同類のgeekたちへ

2009-03-29

boost::tokenizer はコンテナのコピーを作成しない

一時オブジェクトを渡すと後でイテレータアクセスの際にアクセスバイオレーションになります。ご注意を

#include "stdafx.h"
#include <iostream>
#include <boost/tokenizer.hpp>

std::string funcReturnsString()
{
std::string ret = "hogege,gehoho";
return ret;
}

int _tmain(int argc, _TCHAR* argv[])
{
boost::char_separator<char> sep(",");
typedef boost::tokenizer< boost::char_separator<char> > CommaTokenizer;

//NG
CommaTokenizer tokens(funcReturnsString(), sep);
for(CommaTokenizer::const_iterator it = tokens.begin(); it != tokens.end(); it++){
std::cout<<*it<<std::endl;
}

//OK
std::string str = funcReturnsString();
CommaTokenizer tokens(str, sep);
for(CommaTokenizer::const_iterator it = tokens.begin(); it != tokens.end(); it++){
std::cout<<*it<<std::endl;
}

return 0;
}

2009-03-25

Windows Vista アクティベーション時のエラー 0x8007232B DNS 名がありません。

プロダクトキーが間違っていたのが原因とのこと。毎度のことですがWindowsのエラーメッセージはなぜこうもユーザに不親切なのか。ネットワーク設定まわりを疑って子一時間悩んでしまったよ、、、ダイアログ表示しないのなら、せめてイベントログに詳細なエラー内容を表示するぐらいやるべきでしょう。

2009-03-24

Visual C++ プリプロセッサ出力の確認方法

マクロのデバッグ時に展開結果を確認したい等、一時的に出力結果を取得したい場合はソースファイルのプロパティから

Configuration Properties → C/C++ → Command Line → Additional options:

に「/EP」を追加するのが手軽です。Output Viewに出力されるのでコピー&ペーストで好みのエディタに張り付けるとよいでしょう。

その他の参照サイト
http://members.ozemail.com.au/~geoffch@ozemail.com.au/samples/programming/msvc/cl/options/ep.htm
http://homepage1.nifty.com/yt-works/javaapp/newdoja.html

2009-03-23

Diamond Tweak設定後にエディットボックスの文字が表示されない

Touch DiamondのカスタマイズアプリケーションでDiamond Tweakというのがあります.以下の設定項目をEnableにするとLandscape表示のときにいくつかのアプリケーション(リモートデスクトップモバイルのユーザ名入力エディットボックス等)でエディットボックス内の文字が表示されないという問題が発生しました.

17.7Clear Type in landscape mode

カスタマイズの時にはつい一度にたくさんの項目をいじってしまって,後々問題がおきたときにどれが原因かわからないという状況になりがちです.お気をつけあれ

VMWare ESXiでリモートインストール

Windows2003 ServerにはネットワークからのOSインストールを行うリモートインストールサービスというものがあります.以前,VirtualPC上のWindows2003 Serverでこの環境を構築していたものをVMWare ConverterでVMWare ESXiに移動させました.このゲストOSのリモートインストールサービスを利用して別のゲストOSをリモートインストール可能か試してみたところ普通に可能でした.ゲストOSのBIOS設定のブートシーケンスでネットワークを最初にするだけです.

ブログ アーカイブ