C#

binary read

普通にバッファサイズをおもいっきりとって一回読むのでもいいのかなー public static byte[] GetData( this Stream input, int size ) { byte[] buffer = new byte[Math.Min( 1024, size )]; int totalSize = 0; using ( MemoryStream ms = new MemoryStrea…

Directory全部copy

File.Copyはあるのに! Static Classも拡張メソッドできたらDirectoryに突っ込みたい単純なCopyではなくて、複製?overwriteがtrueなら新しいファイルで上書き。こっちが古かったら上書きされる。CopyDirectoriesだけなら一方向そういえばWindows的にはFolde…

あるオブジェクトのプロパティを文字列で指定して呼び出す

あるオブジェクトのプロパティを文字列で指定して呼び出す拡張メソッド。 public static dynamic GetDynamicMember<T1>(this T1 target, string memberName) { if (target == null) { throw new NullReferenceException(); } var binder = Binder.GetMember(CSha</t1>…

C#でパケットスニファ

winpcap http://www.winpcap.org/SharpPcap http://sourceforge.net/projects/sharppcap/その他参考 http://sharppcap.sourceforge.net/htmldocs/index.html http://www.tamirgal.com/blog/page/SharpPcap.aspx http://sharppcap.git.sourceforge.net/git/gi…

ロックメモ

C#

ロック獲得できなければスルー static private object _lockObj = new object(); static public void Function() { if (Monitor.TryEnter(_lockObj)) { try { // 処理 } finally { Monitor.Exit(_lockObj); } } } ロック獲得できなければ待つ static private…

IEqualityComparer ラムダ式で実装

Dictionry.Constantsでラムダ受け付けてほしい IEqualityComparerとかめんどい - Memo+を拡張メソッドに改変 /// <summary> /// ラムダ式を受け付けるIEqualityComparerの実装を提供します。 /// </summary> /// <typeparam name="T">比較するオブジェクトの型。</typeparam> static public class LambdaComparer…

JAVAの日付に変換

C#

JSTのみ? private static readonly DateTime ORIGIN = new DateTime( 1970, 1, 1, 9, 0, 0, 0 ); private static DateTime JavaDateToDateTime( long javaDateTime ) { return new DateTime( ( javaDateTime ) * 10000 + ORIGIN.Ticks ); } private static …

オレオレ証明書回避

認証局信頼されていない自己証明書では↓の例外が出るSSL/TLS のセキュリティで保護されているチャネルに対する信頼関係を確立できませんでした ---> System.Security.Authentication.AuthenticationException: 検証プロシージャによると、リモート証明書は無…

クライアントからアップロード

/// <summary> /// ファイルをアップロードする /// </summary> class FileUploader { string _uploadUrl; string _postInputName; Encoding _encode; CookieContainer _cookies; /// <summary> /// 文字コード、アップロードのアクションを指定してImageUploaderのインスタンスを初期化</summary>…

Nullのときは値をいれてNullでないときはそのまま返す拡張メソッド

C#

なんとなく思いついたというか欲しかった。ナイの? 「IsNullOrEmptyはゆとり」と同レベル static public T IfNullUnderstudy<T>( this T source, T understudy ) where T : class { return source == null ? understudy : source; } Nullオブジェクトは大仕掛</t>…

Ctrl+AでtextBoxを全選択する

windows fromなんてオワコンデフォルトで出来なかったんだっけtextBoxのKeydownイベントに登録 private void Form1_Load( object sender, EventArgs e ) { textBox1.KeyDown += ( eventSender, eventE ) => { if ( eventE.Control && eventE.KeyCode == Keys…

SecureString

いまいち使いどころがわからないSecureString メモリ上にずっとパスワードを保持しないといけない場合に使うのだろうか。でもstringに変換しないと使えない(他のIFへパスワードを渡す)場合は意味あるの? とりあえず使い終わったstringには空文字でも入れ…

foreach ラムダ式

C#

以下の2つは等価 Array.ForEach( Path.GetInvalidFileNameChars(), c => fileName = fileName.Replace( c.ToString(), "" ) ); foreach ( var c in Path.GetInvalidFileNameChars() ) { fileName = fileName.Replace( c.ToString(), "" ); } 後者のほうがわ…

ニコニコ動画の動画をダウンロードする

エコノミー症候群なんでlowならlow消えるまでdl待つとかやりたいがために作った。WebClient.Downloadつ使いたかったけど。とりあえずこんなもんで。汎用性一切なし的な何か。ポイントはhttp://flapi.nicovideo.jp/api/getflvとかhttp://ext.nicovideo.jp/api…

Explorerの機能を使用してZipの解凍

以前圧縮について書いたけど、Explorerのzip機能を使うのがwindowsでは一番なのかもしれない。 ただし、Explorerの機能なんで上書きとかで問い合わせは発生する。解凍 Shell.Applicationを利用する。 static class ObjectExtentions { public static object …

SMTP AUTH LOGIN Cram-Md5認証をC#でやる

SMTP AUTH LOGIN Cram-Md5認証 public static void ConnectCramMd5( string server, int port, string user, string pass ) { var client = new TcpClient(); client.Connect( server, port ); var stream = new SslStream( client.GetStream() ); stream.Au…

最大数以上のアイテムを追加すると古いものから削除されるリスト

newとかあまり使いたくはないんだけど。すべてをラップするのはめんどいんで。 public class LimitedList<T> : List<T> { private int _maxItemCount; public int MaxItemCount { get { return _maxItemCount; } set { _maxItemCount = value; if ( Count > _maxIt</t></t>…

IntPtrから配列に変換

arrayはすでにカラの配列をセットしてあること。 T[] IntPtrToArray<T>(IntPtr ptr, T[] array ) { for ( int i = 0; i < array.Length; i++ ) { array[i] = (T)Marshal.PtrToStructure( ptr, typeof( T ) ); ptr = (IntPtr)( (int)ptr + Marshal.SizeOf( typeo</t>…

モニター、ディスプレイの一覧(解像度含む)取得

ディスプレイクラス class Display { [DllImport( "user32.dll" )] static extern bool EnumDisplaySettings( string deviceName, int modeNum, ref DEVMODE devMode ); [DllImport( "user32.dll" )] static extern bool EnumDisplayDevices( string lpDevic…

文字列配列から数値の配列へ変換

var line = new[]{ "1", "3" }; var intArray = Array.ConvertAll( line, new Converter<string, int>( s => int.Parse( s ) ) );</string,>

Google Calendarで日本の祝日を取得

前にちょこっと書いたものの実装編 struct Holiday { public DateTime Date; public string Title; public override string ToString() { return Title + ":" + Date.ToString("yyyy/MM/dd"); } } class Calender { private const string requestUrl = "http…

Array Copy

1,2次元配列のコピー拡張的な何か。配列のCopyToってなんで戻り値で返してくれないんだろうっていつも思ってる。 static class ArrayExtension { public static T[] CreateDeepClone<T>( this T[] source ) { if ( !typeof( T ).IsValueType ) { throw new A</t>…

カテゴリ並び替え

はてなのカテゴリは登録された順だから多くなってくると探すのに困るのでソートしてみた。 string c=@".NET ActiveDirectory ASP.NET"; var cs = c.Split('\n'); foreach ( var item in cs.OrderBy<string, string>( s => s ) ) { Console.WriteLine(item); } 「=>」は「goes</string,>…

多重起動抑制

コードに埋め込みたくなかったんで。 うーん。いまいちだな。 終了するときに開放だしあんまり気にしなくてもいいかと安易に思ってみたり。 class MultiInstanceBlocker { static Mutex _mutex; static public void Activate( string key ) { if ( IsActivat…

SMTP スタブ

とりあえず25番に反応してくれる人がいないと先に進まなかったので。SmtpServer 接続を待ち受ける人。 namespace SmtpStub { class SmtpServer { TcpListener _listener = new TcpListener( new IPEndPoint( IPAddress.Any, 25 ) ); List<MailProcessor> _processores = new</mailprocessor>…

Serialize

class SerializeHelper { static public void ExportObject<T>( string key, T o ) { XmlSerializer serializer = new XmlSerializer( typeof( T ) ); if ( ConfigurationManager.AppSettings[key] == null ) { throw new ArgumentException( key + " を key と</t>…

暗号化、復号化

文字列の暗号化ってよくやるよね。X.509 証明書は以下 方法: X.509 証明書で XML 要素を暗号化する | Microsoft DocsAESを使用した暗号化。 インスタンスの方はいらないかも。 /// <summary> /// 暗号化を行う機能を提供します。 /// </summary> public class Encryptor { /// <summary> </summary>…

UAC対策

無効にしたくはないけど、特定のプログラムは頻繁に立ち上げるんで聞かれたくないとか。アプリ内で昇格してしまおうという。 もちろんリスクにはつながるけど。 class Program { static void Main( string[] args ) { if( args.Length == 0 ) { return; } Ex…

Firewall のオープン設定

C#

ファイアウォールを通過させる設定を c# で。参照設定に COM の NetFwTypeLib が必要。(Vista以降?)OS によって名前違うかも。 private static INetFwMgr GetFirewallManager() { Type type = Type.GetTypeFromProgID( "HNetCfg.FwMgr" ); return (INetFw…

共有フォルダの作成、アクセス権の設定、編集。

中身はWMI 元ねたはどっかの海外サイト。(ごめんURL手元にないや) 参照設定は Systesm.Managemant vista 以降は管理者での起動が必要。 まずはアクセス権限 /// <summary> /// ユーザのアクセス権限 /// </summary> public enum ShareMode : uint { /// <summary> /// 読み取り。 /// </summary> …