2009-01-01から1年間の記事一覧

弱い参照

キャッシュみたいな。ずっと持ってるとリソース的に負荷が高いものは弱い参照が有効。 static readonly Dictionary<string, WeakReference> _cache = new Dictionary<string, WeakReference>(); static object GetValue( string key ) { if ( !_cache.ContainsKey( key ) ) { _cache[key] = new WeakReferen</string,></string,>…

NTP64ビットタイムスタンプフォーマット

NTP 64ビットタイムスタンプフォーマットを DateTime に変換。 /// <summary> /// NTP 64ビットタイムスタンプ形式から DateTime に変換します。 /// </summary> /// <param name="ntpTimeStamp">NTP 64ビットタイムスタンプ。</param> /// <returns></returns> static private DateTime NtpTimeStampToDateTime( long ntpTimeStamp ) {…

読み取り専用配列を作るには。

ReadOnlyCollectionが有効。 public class ReadOnlyCollection<T> : ReadOnlyCollectionBase { public ReadOnlyCollection( IList<T> sourceList ) { InnerList.AddRange( (ICollection)sourceList ); } public T this[int index] { get { return (T)InnerList[ind</t></t>…

エンコード判別

↓の話もあって派生。 まぁなんつーか結局確定はできないみたいだな。http://www.geocities.jp/gakaibon/tips/csharp2008/charset-check3.html http://tech.ymirlink.co.jp/perl/cpan/Unicode/Japanese.html http://www.kanzaki.com/docs/jcode.html http://w…

Shared Source Common Language Infrastructure 2.0

CLIのソース。 Shared Source Common Language Infrastructure 2.0 http://www.microsoft.com/downloads/details.aspx?FamilyID=8c09fd61-3f26-4555-ae17-3121b4f51d4d&DisplayLang=enこれなんだけど。VS2008ではこいつをそのまま動かせないわけで。 http://…

MTU 取得

送信パケットの最大サイズ。 http://msdn.microsoft.com/ja-jp/library/system.net.networkinformation.ipv4interfaceproperties.mtu.aspx要はパケットを送る際はこの値に注意ってことだな。 そこまで考えるシステムって限られるけど。受信は MRU というらし…

MagicPacket

マジックパケット。いわゆる Wakeup On LAN(WOL)ブロードキャストで投げる。 届かないときは諦めが肝心。MagicPacket仕様 0xff * 6 MAC * 6 class MagicPacket { public MagicPacket() { } public void SendPacket( string macString ) { byte[] mac = new b…

マネージDirectX

DLL 'C:\Windows\assembly\GAC\Microsoft.DirectX\1.0.2902.0__31bf3856ad364e35\Microsoft.DirectX.dll' は、OS ローダー ロック内でマネージ実行を試行しています。 DllMain またはイメージ初期化関数内でマネージ コードを実行しないでください。この動作…

デバッガでステップ実行をしない

確実に信頼できるコードはステップ実行で追ってくのがめんどい。 DebuggerStepThrough 属性を使用 [DebuggerStepThrough] void StepThrough() { // ステップ実行でもとまらない。 } いざ使うときに忘れるんだよな。

違うTicks

TimeSpan span = new TimeSpan( stopwatch.ElapsedTicks );値がおかしかった。Stopwatch.ElapsedTicks プロパティ メモ : Stopwatch タイマ刻みは、DateTime.Ticks とは異なります。DateTime.Ticks 値の各タイマ刻みは、100 ナノ秒間隔を表します。ElapsedTi…

disposeパターンコードスニペット

IDisposeよく使うけどいつも書くのめんどいので。 コードスニペットについては IntelliSense コード スニペットの作成と使用 あたり参照 <CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"> <CodeSnippet Format="1.0.0"> <Header> <Title> Dispose pattern </Title> <Shortcut>dispose</Shortcut> </header></codesnippet></codesnippets>

コントロール作成時にデフォルトで必要そうなプロパティ

C#

[Category( "Appearance" )] [DefaultValue( "" )] [NotifyParentProperty( false )] [Description( "説明" )]

log4net 常にファイルをロックさせない。

appender の設定に以下を追加 <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /></lockingmodel>

javascript プロパティ一覧表示

function showProperties(obj) { var s = ""; for (var i in obj) { s += i + "," } s = s.substring(0, s.length - 1); alert(s); }

ASP.NET 負荷分散 クラスタ構成時に復号化でエラーが出る。

出るエラーはこんな感じ System.Security.Cryptography.CryptographicException: パディングは無効なので、削除できません。 場所 System.Security.Cryptography.RijndaelManagedTransform.DecryptData(Byte inputBuffer, Int32 inputOffset, Int32 inputCou…

IE8互換表示設定を指定

IE

IE8の互換モードにてIE7で表示するには <meta http-equiv="X-UA-Compatible" content="IE=7" /> ソース:ドキュメント互換性の定義>IE=edge を指定して、使用できる最高のモードを これを指定する意味がわからん。 今後確実に互換性が保持されるという保証がない以上つかえんだろ・・・。</meta>

oracle テーブル定義取得

テーブル名は大文字っぽい。upper('table')テーブルコンテンツ取得 select * from user_constraints where table_name = 'テーブル名' テーブルカラム取得 select * from user_tab_columns where table_name = 'テーブル名' インデックス取得 select * from …

ファイルがアセンブリであるかどうかを確認する。

ファイルがアセンブリであるかどうかを確認する。 >ファイルがアセンブリであるかどうかをプログラムによって確認するには >GetAssemblyName メソッドを呼び出し、テストするファイルの完全パスと名前を渡します。 >BadImageFormatException 例外がスローさ…

ユーザの偽装。

偽装処理 作ってた当事はいろいろ思うこともあったが、今は思い出せない。 とりあえずコードのみ。 /// <summary> /// 偽装処理を行うためのスコープを提供します。 /// </summary> public class ImpersonateScope : IDisposable { /// <summary> /// 偽装ユーザ。 /// </summary> private readonly…

文字列にサフィックスを付与。

頻出。コピペ用とか。 static string AppendSuffix( string suffix, IEnumerable<string> list ) { return string.Join(suffix, list); }</string>

Thread を簡単に使う。

引数取れないしめんどいよねっていう何か。 class ThreadHelper { private readonly Delegate _execute; private readonly Delegate _callback; private object[] _args; public ThreadHelper ( Delegate execute ) : this( execute, null ) { } public Thre…

デリゲートを使ったテンプレート

ある処理の最初と最後は共通なんだけど。とかいったときに。 /// <summary> /// テンプレート実行。 /// </summary> /// <param name="func">実行対象デリゲート。</param> /// <param name="args">デリゲートに渡す引数。</param> /// <returns>実行結果。</returns> public static object Execute( Delegate func, params object[] args ) { try { return…

ユーザの偽装。

http://d.hatena.ne.jp/fezg00/20090326/1238067327 でユーザがログインユーザと違うユーザでのアクセス時に必要。http://d.hatena.ne.jp/fezg00/20090409

共有フォルダ一覧取得 WMI版

WMIで書き直してみた。ユーザ認証も含んでる。こっちのほうが断然短い。 /// <summary> /// 指定されたサーバの共有フォルダ一覧を取得します。 /// </summary> /// <param name="serverPaht">サーバ名。</param> /// <param name="user">接続ユーザ名。</param> /// <param name="password">接続パスワード。</param> /// <returns>取得された共有フォルダの一覧。</returns> public static List<string></string>…

oracle文字化け対応

oracle の文字化け対応はクライアント側での対応不備らしい。 sqlplus ならクライアントの環境に合わせて NLS_LANG を設定。 dos コンソールなら shift-jis だな。 set NLS_LANG=Japanese_Japan.JA16SJIS DB 側の環境に合わせるものかと思ってはまった。それ…

共有フォルダ一覧を取得。

Directory.GetFiles()では共有フォルダの一覧が取れない。(共有フォルダの中身は取れる) 共有フォルダの一覧を取るには NetShareEnum を使う。 public class NetShare { const int NERR_Success = 0; const uint MAX_PREFERRED_LENGTH = 0xFFFFFFFF; enum …

デザインモードの判別方法。

デザインモード時は devenv.exe から呼び出されるアセンブリで判断。true でデザイン。(8.58) Assembly.GetCallingAssembly().GetType(this.GetType().ToString()) == null false でデザイン。(5.02 * 100) Assembly.GetCallingAssembly().GetTypes()[0].Equ…

source といえば

destination

UTF-8 の文字列をサイズで区切る。

/// <summary> /// Utf8 エンコードされたバイト文字列を指定されたサイズ以下にの適切な区切り位置を取得します。 /// </summary> /// <param name="buffer">Utf8 エンコードされたバイト文字列。</param> /// <param name="size">区切りサイズ。</param> /// <returns>取得された区切り位置。</returns> static int GetUtf8SplitIndex( byte[] buffer, int …

シリアライズ

シリアライズ形式 XmlSerializer SoapFormatter(System.Runtime.Serialization.Formatters.Soap) BinaryFormatter /// <summary> /// Xml テキスト取得。 /// </summary> /// <param name="obj">対象オブジェクト。</param> /// <returns>取得された Xmlテキスト。</returns> private static string ToXmlText( object obj ) {…