2008年11月29日土曜日

テンションダウン

 結局、利用する予定だったモジュールは不安定で遅いので、一部自分で書いたやつを使う事にしました・・・。その方が10倍速いし安定している・・・。しかし、今後の展開を考えると面倒くさい・・・。仕事山積・・・。

うけけ

 明け方ハイ~!冴えてる~ハイ!

んがーーーーーー

 仕事かかえ杉だろーーーーーーーーーーーーーーーー。

2008年11月27日木曜日

nested_exception の例

 nested_exception の良い例を作成せよと、指令が出ていたけど、漫然と思い当たるところを書き散らしてみる。ちなみに、良い例なんて思いつきません(爆)。

 外部から安全にスレッドを中断させる方法が無い Windows では、boost::thread のinterruption において、例外を流用するというトリッキーで賢い方法を採用しています。

class BOOST_THREAD_DECL thread_interrupted
{};

std::exception から派生すると、途中で例外をキャッチした後に、thread_interrupted かどうかを調べて、例外の再送をしないといけないので面倒です。MIXIN 用との事だけど、このように例外もグループ化できれば、さぞかし便利な場面があるのかもしれない・・・という感覚だけは残ります。

 で、更に進めて、階層化できた方が面白いんじゃなかろうか?って感じて、考えたのが下。

template<int LEVEL>
class level_exception : public std::nested_exception {
public:
int level() const { return LEVEL; }
bool deeper( int level ) const { return level >= LEVEL; }
};

階層で捕まえたければ

} catch( level_exception<3>& le ) {
...
}

ネストで捕まえたければ

} catch( nested_exception& ne ) {
if( ne.deeper( 3 ) ) {
...
} else {
throw;
}
}

と、こんな感じ。あんまり面白くないか…。

2008年11月26日水曜日

線引き

 何について書いたら良いのか悩みますが、今回は、インターネットを使う上での線引きを自分の中ではしているので、その点について書いてみます。
 絶対に避けているものが3つ。
  1. クラウドの世界をデスクトップに持ち込む事
  2. 携帯電話で個人情報を入力する事
  3. オンライン・バンクインターネット・バンキング(銀行)
 1は、例え個人情報保護方針やプライバシーポリシで、デスクトップの情報を収集する事が無いと表明されていても、サードパーティ(具体的にはGoogleDesktop)にデスクトップの検索まで任せる事はしていません。昨日テレビで(忙しくてテレビ自体を見る事も珍しい状況ですが)GMail をもっと活用すれば良いなどとワールドビジネスサテライトで紹介されていましたが、どこまでを委ねるか線引きをしておくべきだと強く思います。ウィンドウズのOS上でマイクロソフトがデスクトップ検索機能を提供するのと、無料でGoogleが検索機能を提供するのとでは、意味合いが全く異なります。いつ方針転換するか、信用できたもんじゃないです。JavaScriptを埋め込むだけでサービスを享受できるものをカヌークラブのサイトに入れてみた事がありました。ある日、そのJavaScriptが牙を剥いたのです(サイトのデザインを変更して、情報を収集するための検索ボックスを邪魔な位置にドカンと表示するようになった)。裏切られても大丈夫な線はどこか?考えてみてはどうでしょうか?「クラウドにあるから安全」という論調は、悪意に満ちた一面に対して目をつぶっていると言えます。

 2は、携帯電話における個人情報の取り扱いは出鱈目もいいところで、基本の設定は固有IDを送信します。私はAUの携帯を利用していますが、IDを非送信にするURLは非公開ですし、アクセスしてもエラーを頻発するような代物で、DoCoMoに関しては ?GUID=ON のパラメータを付加すれば問答無用で固有IDを送信する状況です。クッキーが無いので、これをサービス提供側(コンテンツ配信側)がアクセス解析に利用するのは自然な流れで、ここまでは私も問題にせずEZウェブも利用しています。しかし、携帯電話に個人情報を入力するとなると話は別です。携帯電話のメールアドレスを使ってサービスを享受するとか、個人情報を必要とする会員制サイトは、全く利用していません。

 3は、利用しても良いとは思っているけど、ITのプログラミングを職業とするプロでさえオンライン・バンクインターネット・バンキングを安全に利用する自信が持てないという事です。私の所属するカヌークラブにて、会費をオンラインバンクを利用して収集できればいいのでは?という話になったことがありました。しかしプロの立場から見て、パワーユーザ以下のユーザがオンラインバンクインターネット・バンキングをするのは、極めて危険が高いという判断から、導入させませんでした。実際、多くの知り合いがスパイウェアの類に感染しておりました。

Windows Vista は眠らない その3

 前回からの続き、UACを無効にしたものの状況は改善しているとは言えない。もちろん、くそUACにはサッサと逝ってもらって良かったと思っている。しかし、相変わらず、いつまでたってもシャットダウンやログオフできない時がある。あれからも、電源ボタンを長押しして強制オフの刑を実行し、強制チェックディスクの刑を頻繁に食らったりしている。
 パソコンを買うときに、WindowsXPへのダウングレード権は、人間らしいパソコン生活を送るためには欠かせない権利だとしか言いようがない。頼むよ、マイクロソフト。

2008年11月25日火曜日

boost thread interruption


#include <iostream>
#include <boost/thread.hpp>

void f() {
while( 1 ) {
std::cout << "interrupt OK" << std::endl;
{
boost::this_thread::disable_interruption di;
std::cout << "interrupt NG" << std::endl;
boost::this_thread::interruption_point();
{
boost::this_thread::restore_interruption ri(di);
std::cout << "interrupt OK" << std::endl;
}
std::cout << "interrupt NG" << std::endl;
}
std::cout << "interrupt OK" << std::endl;
boost::this_thread::interruption_point();
}
}

int main() {
boost::thread t(f);
t.interrupt();
t.join();
return 0;
}

おおーっ、スゲー。windowsでも中断するよ!disable_interruption の意味がいまいち、よくわかんねーけど、規模が大きくなったら効いてくるのかな?