妙に反応のあった Syslog サーバですが
コードは大体動くようになっているのですが
まだドキュメントがほとんど存在してません(笑)

試行錯誤したい方はメールやらメッセンジャやらでご連絡を...
# あと Contact ページも使えます

ご希望な方には現在のビルドをお送りします

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

きれいな XML を吐き出させたくて
DOM を Save() して LoadXml() してまた Save() させました

出てくる XML はきれいになったのですが
コードはどうも美しくないんですけど(爆)

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Saving XmlDocument

2004-02-13

XmlDocument の内容を保存したいときにSave() メソッドと WriteTo() メソッドがありますが
DOM に XmlDeclaration が存在してエンコーディングがすでに指定されていると
WriteTo() メソッドは XmlTextWriter のエンコーディング指定 (コンストラクタにファイル名とともに渡している) を無視して
XmlDeclaration のエンコーディング属性を使ってそのまま出力するようです

Save() メソッドの場合は XmlDeclaration のエンコーディング属性は関係なく
XmlTextWriter のエンコーディング指定を尊重して利用し
XmlDeclaration のエンコーディング属性を書き換えて出力してくれます

どちらの動作が好ましいのかはちょっと判断できませんが
同じような動作をする2つのメソッドで結果が異なるというのはややこしいですね

それに DOM で XmlDeclaration を書き換える方法もよく分からないし...(^^;;

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

EventLog のエントリには 32bit のインデックス値が割り当てられているのですが
インデックスはシーケンシャルに増えているので Int32.MaxValue を超えるログが書き込まれた後
いったいどうなるのかというのがちょっと気になります

突然全部のインデックス値がリセットされて 0 から再割り振りされるのか
それともインデックス値はリセットされずにオーバーフローしたエントリから 0 が割り振られていくのか...

ループでひたすらエントリを追加して再現しようと思いましたが
あまりに Int32.MaxValue が大きすぎていつ終わるかわからない状態だったので止めました(爆)

どこかにドキュメントあるかな~と検索中...

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

列挙値を UI に表示したいときに数値で表示するわけにいかないので
どうしようかと結構悩んでいたのですが
System.Enum.GetName(typeof(EnumTypes), EnumValue)
とすると列挙値の名前が表示されます

さらに文字列から列挙値に変換するには
(EnumTypes) System.Enum.Parse(typeof(EnumTypes), EnumString, true)
とするだけでOKです

これってすごい便利ですね(^^;;

惜しいところは
System.Enum.ToString(format, formatProvier)
として IFormatProvider を指定して
日本語名などに変換できないとなっていることでしょうか
なぜか IFormatProvider の引数は予約済みとなっています

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Syslog サーバに実装した Eventlog to Syslog 機能ですが
サービスが実行されていないときに書き込まれたログは読み取らないんですよね

これだとシステムがリブートしてしまったときなどに
そのログを読み取れない可能性が高かったりしますね
# 突然色々なサービス起動のログが飛んできて気づく可能性はありますけど

やはり終了前の最後に読み込んだログよりも新しいものは
サービスの再起動時にすべて読み込むようにするべきかな?
でもある程度制限しないと予期しない大量のログが送られる可能性もあるし...

48時間以内の読み取られていないログというような感じで
範囲を制限しつつ読み取るというのが無難ですかねぇ

http://cham-reo.com/blog/archive/2004/01/29/841.aspx

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Process.StandardOutput で他のプロセスの標準出力を読み取れるということで
これは便利に使えそうと思っていたのですが
これってすでに起動しているプロセスの標準出力にはアクセスできないんですね

Process.StartInfo に RedirectStandardOutput という設定があって
あらかじめこれを有効にした上でプロセスを起動していないとダメらしいです

これで手軽にプロセス間通信ができるかと思ったのに(しくしく)
# どうしても .NET Remoting を使えということか...

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Windows Form でデータをリスト表示するときに
主に DataGrid と ListView が使えると思いますが
どちらが好みですか?

私は多少使いづらい部分もあるのですが
ListView の Detail View が好きですね

DataGrid は編集などには向くのかもしれませんが
単純にデータを表示するだけにはちょっと使いにくい気がします

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

XML ビューアとして Windows Form にブラウザコントロールを使ってみたのですが
これをフォームに貼り付けると Windows XP のテーマが適用されないんですね

ブラウザコントロールを削除するとボタンなどが Windows XP スタイルに戻りますが
これはちょっとショックかも

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Windows Form に追加した Timer コントロールで発生したイベントから
フォームをいじりたい時ってそのまま触って大丈夫なんでしょうか?

サンプルとかみると直接アクセスしてますけど...
ということで大丈夫とふんで書きました(ぉぃ)

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Managed Syslog Server ですが Windows サービス としてでなく
普通にコンソールから起動して動作できるようにしてみました
設定ファイルのチェックなどに便利...かな?

ちなみにやっていることは単純で引数をみてコンソールモードでの動作が指定されていたら
直接メイン処理クラスのインスタンスを作成して実行させてます(^^;;

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

文字コードの自動認識はちょっと大変そうなので
とりあえず Syslog パケットの送信元ごとに利用する文字コードを変更できるようにしてみました

これで異種混在環境でも利用可能に!?
# 日本語以外の文字コードももちろん使えます

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

リリース用 app.config とは別にデバッグ時だけの app.config を
指定できる機能がVS.NET にあった気がするんですよね

どこに書いてあったんだろう...
# 元々そんな機能なかったりして(笑)

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

バイト配列から文字コードを判定できるコンポーネントがあるといいですね

System.Text.Encoding 付近には Unicode の BOF で判定する機能があるくらいで
日本語の Shift_JIS, euc-jp を判定できるような機能がないですね

もちろん 100% の精度なんて必要ないですけど
Internet Explorer 程度というかもう少し文字コードを推測できる機能が欲しい感じです

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Syslog Forwarder

2004-01-30

とりあえず UdpClient で適当に転送できるように実装しました

送信先サーバは複数設定できるようにしておきましたが
すべてのメッセージを垂れ流しでそのまま転送します(^^;;
まあ他にフィルタ機能をつけているのでそれと連動すれば簡単なフィルタは可能ですけど

ちなみにループ対策はまったくしていないので
自分自身に送ったりするとDoS攻撃できます(爆)
ご注意ください...

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5