STLの罠 iteratorの動作

C++のSTLライブラリを使い出してから、面倒な処理を書く手間が緩和されるのを体感します(もっとも、ライブラリの汎用性のため見慣れぬ難解な構文になり、返って可読性が悪くなる場合もあります)

今日はVectorコンテナへifstreamからファイル内容を読み込んだときのアクシデントを紹介します。なんと汎用性を持たせたら速度が劇的に遅くなってしまったのでした!

Vector以外のコンテナで影響が出ないようにiteratorを使った例[460KBで11秒]

std::vector vctr;
std::ifstream ifs;

ifs.open(FileName.c_str(), std::ios::in | std::ios::binary);
vctr.assign(std::istreambuf_iterator(ifs), std::istreambuf_iterator());
ifs.close();

Vectorのメモリ空間をファイルサイズ分確保し一気読みした例[460KBで0秒]

ifs.open(FileName.c_str(), std::ios::in | std::ios::binary);
ifs.seekg(0, std::ifstream::end);
vctr.resize(ifs.tellg());
ifs.seekg(0, std::istream::beg);
ifs.read(&vctr[0], vctr.size());
ifs.close();

両者の違いは、前者が1バイトずつファイルアクセス、後者がファイルサイズ分1回だけのアクセスとなります。iteratorの実装により動作は変わるでしょうが、少なくともVC2005のistreambuf_iteratorは効率が悪いです。バイナリ読み込みには使わないほうがいいでしょう。

Vectorは配列のラッパークラスとして、連続したメモリ空間が仕様で保証されています。したがって、後者のような一見危険に見えるコーディングでもOKとなるのでした。

アニメ量産化による粗悪タイトル増加問題

キャラビジネス進化論! アニメは“量産化”の罠にはまった アニメ・ビジネス・フォーラム

ここ数年、1~2クールのアニメが非常に大量に作られては消える現実。面白いのが放映されても、すぐ風化してしまうんですよね。 勿体無い、非常に勿体無い。これではコンテンツを食いつぶしていくだけ。焼畑農業と同じです。

クリエイターの資源は限られており、人も予算もないところは、せっかくよい素材を扱っていても酷いアニメを作り、視聴者から愛想つかされる。このままでは安心して見られる番組がなくなってしまいます。

趣味が多様化した混沌の時代ですが、制作サイドには一つ一つの作品を丹精込めて仕上げて貰いたい。放送だけでも黒字になるビジネスを模索するべきではないでしょうか。

フロッピー・ディスクが市場から消える!

さよならフロッピー――記録メディアの移り変わり (itmedia)

ここ数年フロッピーなんて触ってませんでした。既に一般ユーザの間では淘汰されている感がありますね。

今やスマートメディアの価格が1GB3000円ほどに値下がり、データ持ち運びであれば強度、容量ともに十分実用に耐えられます。納品の必要があれば、1枚10~200円のCD-RやDVD±Rを使用すれば問題解決。1枚100~200円のフロッピーが売れないのも無理もありません。

10数年前、データ移動にフロッピー10枚ケースを持ち歩いていた日々を懐かしく思います。分割圧縮を施してしまい、1枚だけ読み取り不良で何度もリトライしたあの日。IPLが壊れフォーマットも不能になり、お楽しみデータを泣く泣く廃棄した苦い思い出。フロッピーディスクは私と共にありました。

現在使用中のPCには3モードFDDが備わっています。それも次に新調したときは最早存在しないでしょう。一時代を築いたメディアにお疲れ様、そしてありがとう。

余談:MOのデータコンバートサービスを安価で行ってくれるところは無いのでしょうか。学生時代のMOに何が入ってるのか知りたいです。

LiveCDでWindowsログインPASSを解析

LiveCDでWindowsログイン画面のPASSを解析する方法
Ophcrack

解析に時間かかるんだろうなって考えながら試しに実行。ものの数分で解析完了してしまいました。これは恐ろしい。

もっとも、万能かと思いきや、デフォルト設定のLiveCDでは特殊ブートローダーを認識しないのかHDD検出エラーでした。クラックされたくなければBIOSパスワードを設定するか、ブートローダーをマイナーなものに変えるしかないかもしれません。

Windowsでの根本的な解決方法は以下を参照してください。

Windows でパスワードの LAN Manager ハッシュが Active Directory とローカル SAM データベースに保存されないようにする方法 (Microsoft)

Shining Force EXA Makingは3Dモデラー必見

す、すごい。このキャラクター、ペインター塗りのまま動いてます。

メイキング映像を見る限りでは分かりにくいですが、モデリングに恐ろしいまでに手間をかけてます。コスト面を考えたら、この塗りで動かそうなんて考えないでしょう。それでも実行に移した開発陣に拍手。個人的に今後の参考になる価値があると思います。

ちなみに、モデリングは国産ソフトのメタセコイアのようです。