C#
HTML文書(a.html) <html> <head> <Title a="hoge">my title</Title> </head> </html> HTML文書をパースする XmlNodeList list; foreach(XmlNode node in list) { if(node.NodeType == XmlNodeType.Element) { if(node.Name == "title") { MessageBox.Show(node.InnerText); // my title } } }
HTML文書(a.html) <html> aaa </html> HTML文書をパースする MessageBox.Show(rootElement.InnerText); // "\naaa\n"
HTML文書をパースするために、DOMを使い倒す。 HTML文書(a.html) <html> </html> HTML文書をパースする XmlDocument document = new XmlDocument(); document.Load("a.html"); XmlElement rootElement = document.DocumentElement; MessageBox.Show(rootElement.Name); //…
3時間ぐらいずーっと悩んでしまった。HttpWebResponse でhttp接続して、どうやってクッキーの値を取得するのかが全然わからなかった。 string url = "http://...."; HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); req.CookieContainer = ne…
それ程こんなことがしたくなる機会はないと思うのだが、まぁ一応こんなこともできるんだよーっという紹介をしておく。 設定ファイル <log4net> <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%m%n" /> </layout> </appender></log4net>
ログファイルの出力フォーマットを ConversionPattern で指定する際に、%記号が何に変換されるかを解説しよう。とは言っても、http://codezine.jp/a/article.aspx?aid=71ここを参照すれば、ほぼわかるのだが、一応例とともに説明しておこう。 サンプルプログ…
設定ファイルから読み込ませる方法を解説したので、次は設定ファイルの書き方を説明しよう。といっても、設定ファイルはわりと直感的なので、詳しい説明は特に必要ないだろう。 設定ファイルのフォーマット <log4net> appenderの記述(1つ以上) root logger について</log4net>…
今までのように、コード内にAppenderの設定を書いていたら、ログ出力の設定を変更したい場合にリビルドしないといけなくなるので、それはちとやっかい。なので、設定ファイルからログ出力情報を操作できるようにしよう。 方法1:AssemblyInfo.cs に記述する A…
static void Main(string[] args) { /**************************************************************************/ // RollingFileAppender をインスタンス化し、色々とプロパティをセットする log4net.Appender.RollingFileAppender rfa = new log4net.A…
昨日の続き。 今度は日付によるローテーションだ。 yyyy : 西暦 MM : 月 dd : 日 に置換される File = "hoge" RollingStyle = Composite DatePattern = "'.'yyyyMMdd'.log'" MaxSizeRollBackups = 2 StaticLogFileName = false CountDirection = 1とすると、…
名前と受け付ける値が全然違うので、わかりにくいことこの上ない。 ぱっと見、string を受け付けるものと思いきや、実は boolean となっている。 なんじゃそれーー。お前、なに考えてるねん!まぁそれはともかく、このプロパティの意味は 書き出すログファイ…
もうね、Log4net のネーミングセンスは非常に奥ゆかしいものがあるのだが、特にこれはすごい。奥ゆかしすぎて、おかしいぐらいだ。 まぁそれはともかく、このプロパティの意味は ログファイルのローテーション時、ローテーションするファイル数が上限を超え…
ファイルのサイズが大きくなったり、日付が変わると、ログをローテートしてくれるAppenderでログを出力する。 これは非常にやっかい。心してかかれ! static void Main(string[] args) { log4net.Appender.RollingFileAppender rfa = new log4net.Appender.R…
これは結構簡単だ。 static void Main(string[] args) { log4net.Config.BasicConfigurator.Configure( new log4net.Appender.FileAppender(new log4net.Layout.SimpleLayout(), "a.log", true) ); log4net.ILog logger = log4net.LogManager.GetLogger("sam…
コンソールアプリを作成し、 static void Main(string[] args) { log4net.ILog logger = log4net.LogManager.GetLogger("sample"); log4net.Config.BasicConfigurator.Configure(); logger.Debug("hoge_debug"); logger.Error("hoge_error"); }と打ち込んで…
http://logging.apache.org/log4net/downloads.html こっからDLしてください。んで、解凍後、参照設定から bin/net/2.0/release/log4net.dll を追加してください
汎用的なログ出力プログラム(ライブラリ)です。非常に多機能で、ぱっと見面くらいっちゃいますけど、色々なプラットフォーム(JavaやPerlや他にもいっぱい)でサポートされているので、使えるようになっておくと結構便利な一品です。ログの出力先として、ファ…
DBからデータを取得した時にnullかどうかを判断するのには、System.DBNull を使用する。こんな簡単なことがなかなか見つからなかったのでイライラ。。 using System; using System.Data; using System.Data.SqlClient;class Class1 { [STAThread] static voi…
といっても、単なる紹介だけ・・ コードページ http://msdn.microsoft.com/library/en-us/intl/unicode_81rn.asp
はじめ、FlagsAttribute属性 ってやつは自動的にフラグの値を割り振ってくれるのかと思ってたのだが、全然そんな気の利いたことなんてしてくれず、単に利用者に「これはビット和で属性を付加できますよー」と教えるだけのものだったことがわかった。 それら…
Activator.CreateInstance (Type, Boolean) のサンプル // デフォルトコンストラクタのみ(ただし、コンストラクタがprotectedでもprivateでもOK) // 2つめの引数、false なら、コンストラクタがpublicでなければ例外になる // つまり、Activator.CreateInsta…
C#のリフレクションは強力すぎる。MSDNを読むと、こんなこともできるんかーってなことが余りにも多すぎて、覚えるのも一苦労である。 以下、自分で試した、サンプルである。 生成するクラス名はたいがいCである。 Activator.CreateInstance (Type) のサンプ…
Mathクラスは、名前のとおり、二乗とか対数の計算をしてくれるのだが、2つの値のうち、大きい方、または小さい方を返すメソッド、Max()、Min()というメソッドもある。Mathクラスにこれらのメソッドがあるのってでも、なかなか気づきにくいと思うんだけど、だ…
クラス設計って、ほんとに難しい。どういう使われ方をするかわからないもんだから、いっぱいメソッド作って、わかりにくーなクラスになることが多々ある。特にライブラリなんて、ほんと誰がどういう使い方をするかなんてわかんないから、とりあえず作っとけ…
文字列型を数値型に変換する方法 string s = "123"; int i = int.Parse(s); System.Console.WriteLine("i = " + i ); // わざと変換不可能な文字列を指定 try { i = int.Parse("hoge"); } catch(System.FormatException e) { System.Console.WriteLine(e.Mes…
デリゲートのサポートにより、JavaのThreadモデルより洗練されたものになっている、、と思う(^^;起動する関数には、制限があり、 戻り値は void 引数なし でないといけない。 作り方1 : 同じクラスのメソッドを別スレッドで起動する ThreadStart ts = new Th…
001 using System.Net; 002 003 IPAddress IP; 004 005 try 006 { 007 IP = IPAddress.Parse("127.0.0.1"); 008 } 009 catch (FormatException e) 010 { // IP アドレスのフォーマットが不正 011 } 012 catch (ArgumentNullException e) 013 { // null が指…
C#のスクロールバー HScrollBar と VScrollBar には、とりうる最大値と最小値をそれぞれ、Maximum、Minimum プロパティで取得できるのだが、どうもこの値と実際にいっぱいいっぱいまで目盛りをスクロールさせたときの値がことなるようだ。 Minimum = 0 Maxim…
これまたWin32APIのBitmapハンドルからでも使用できるようなインターフェースとなっている 参照(http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemdrawingimageclasstopic.asp) 構築方法 FromFil…
Win32APIを使用するときに、NULLを渡すことがよくある。C#では、Win32APIの関数宣言で(ウィンドウハンドルなどの)ポインタを受け取る場合、System.IntPtrを使用することになっているが、呼び出し側でNULLポインタを渡すときに、0 としては型が違うと怒られて…