突然質問です。



問題が発生したことを知るためには、どこにログを出力しますか?




テキストファイル?


イベントログ?


データベース? ・・・ う・・・ まぁ、いいかもしれません。



・・・



他にはありませんか?




実は、意外と知られていないですが、ログの出力にとても有効な場所があるんです




特に内部データ出力、内部動作のトレースログなど、データ量が多いものは、


テキストに落としては重い。


リアルタイムに見られない



という問題があります。




そういう時に、とても有効です。

リアルタイムに見られて、「軽い」 場所があるんです。




それはズバリ、デバッガです。





「え? だどさん、開発のときの話だったの?リリースしてからだと思ったよ」




いえいえ。



もちろん、開発時も使えますが、開発時の話だけではありません。



本番環境にリリースしてからも有効なんです。




Windows API には OutputDebugString という API があり、これを呼び出すとデバッガにトレースログを出力することが出来ます。



こんな型です。


void WINAPI OutputDebugString(
__in_opt LPCTSTR lpOutputString
);


OutputDebugString をプログラムから呼ぶと、デバッガがあるときだけ、デバッガがそれを捕らえて、トレースログを表示します。デバッガが無いときは何もしません。



デバッガというと、WinDbg、CDB、Visual Studio IDE などいろいろありますが、OutputDebugString からの出力を見るだけなら SDK ツールの DbMon や、DebugView などのツールを使えばログをみることが出来ます



ちなみに、.NET Framework では System.Diagnostics.Debug.Write 等が同様のことをします。




よくやるのは、開発者用のレジストリや構成ファイルに DebugLog 値を設定しておき、運用時に障害が発生したときだけそれを True にするとデバッグトレースが出力される、というようなことです。




あなたの設計パターンのひとつに、ぜひ入れておいて下さい!



それではまた!!







Windows プログラミング、Web プログラミングを極めるなら、元マイクロソフトの技術主任が書いた Windows の徹底解説サイト


プログラミング徹底解説



Windows での文字の扱い方は、とてもややこしいですよね?




今回、Windows プログラミング入門の一環として、整理してみました・・・・



文字列の扱い方



・・・が、うまく説明できてる気がしません・・・(涙)



全部整理しようとすれば、かえってややこしくなるし、簡潔に書きすぎてもなんのことやら、、

となりますし。。。


難しいですね。


ともあれ、てこずった項目もこれで終了です。



疑問・質問があったら、教えてください!




ちょっと古い本ですが、今でも通用する Windows の基本書です。



Advanced Windows 改訂第4版



とにかく、どの項目も他に類を見ない解説が山盛りで、本当に目からウロコが落ちました



真面目に Windows を理解したい人は、絶対に読むべきです。



ただし、この本、正直ちょっと古いです。


英語版では第5版に相当する WINDOWS VIA C/C++ も出てます。


洋書が苦にならない人は、新しいほうで良いと思います。


和書の新しいのは無いのでしょうか・・・?



とはいえ、当時のものの方がシンプルで、理解しやすいはずだと思いますし、それで概要を掴んでから洋書で新しいトピックに取り掛かるのも良いと思います。内容がそう簡単ではありませんから、日本語のメリットは大きいです。


現在アマゾンで在庫5冊だけだそうです



買うならお早めに!!



まずは、こちらをご覧下さい→ ソフトウェア開発情報



ご覧の通り、自分のウェブサイトに、ブログの最新情報を取り込みました!



こういうのは、ミクシィでもみられますし、多くのブログランキングサイトでも見られます。


プロの方なら、ご存知と思いますが、ブログや、ウェブサイトは、RSS という更新情報を提供する仕組みを持っているのが普通です。RSS を取り込むことで、そのサイトの更新情報だけを効率よく取得することが出来ます


さらに、ブログ用の Ping というのもありまして、ブログを更新したときに更新通知を送受信仕組みもあります。


これらを組み合わせて、今回は自動的に RSS を取得してウェブサイトを自動的に更新する仕組みを作ってみました



意外と簡単で、ほんの数時間でできあがりました~。



PHP は柔軟で、楽でいいですね。



詳しい仕組みは、またいつか書こうと思います!





今日のテーマはズバリ、自分で Web サーバーを作ろう! です。



以前はネットワークプログラミングといえば、ソケットでゴリゴリ自分で書かないといけなかったのですが、最近(といっても数年前) HTTP API というのがあるので、簡単にサーバーを作ってみることが出来るようになりました。



こちらの記事↓に HTTP API のサンプルコードと解説を書いてます


Web サーバーの作成 ~ HTTP API 入門



良かったら見てください!


ちなみに、記事には書いていませんが、これからさらに I/O Completion Port などを組み合わせて、もう少しスケーラブルなサーバーに変えていくこともそんなに難しくありません


ぜひお試しください!