.NET

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>…

nsoup

jsoupの.net版http://nsoup.codeplex.com/ スクレイピングするときに便利

ListViewにソート用アイコンを表示する

http://stackoverflow.com/questions/254129/how-to-i-display-a-sort-arrow-in-the-header-of-a-list-view-column-using-c?answertab=votes#tab-topまだWinFormなんだが

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…

IEqualityComparer ラムダ式で実装

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

オレオレ証明書回避

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

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…

弱いイベント パターン

.netはメモリーリークがないというのは都市伝説 やっぱり一番ネックになるのはイベントかなーなどと思っていたらWPFではこんなの使ってるのか弱いイベント パターン | Microsoft Docsやっぱりコード書かないとついていけないな

TreeViewをxmlファイルとしてエクスポート

TreeViewをxmlファイルとしてエクスポート public static void ExportToXml(TreeView tv, string filename) { var doc = new XmlDocument(); doc.CreateXmlDeclaration("1.0", "utf-8", null); foreach (TreeNode node in tv.Nodes) { var element = doc.Cre…

SecureString

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

URLデコード、エンコードでHttpUtilityの代わりに使うメソッド url decode encode

いままでURLデコード、エンコードはHttpUtilityを使ってたんだけど windowsアプリの場合で.net 4.0だとデフォルトではclient profileしか入らないのでHttpUtilityがつかえないことがわかった。んで、代わりに使うのは Uri.UnescapeDataString(デコード)Uri…

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

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

Debug.WriteLine をコンソール出力する。

設定ファイルを作成。 <configuration> <system.diagnostics> <trace> <listeners> <add name="debugListener" type="System.Diagnostics.ConsoleTraceListener" /> </listeners> </trace> </system.diagnostics> </configuration> こういうのって普通設定ファイルじゃないの?コンソールでなくてファイルなら

Thread wcf

System.Windows.Threading.Dispatcher http://msdn.microsoft.com/ja-jp/magazine/cc163328.aspxtodo

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>…

'System.AppDomain.GetCurrentThreadId()' は古い形式です

なぜ廃止なのかよくわからない。間違った使い方する人がいたから? どうしてもWinApi使うなら必要な場面があるじゃないか。 WinApi使うならWinApiで完結しろってことなのかはよくわからないけど。もっと古い形式を使うか.netで完結させたい場合は Process.Ge…

ProcessクラスのGetHash

何で比較してるのかよくわからんけど同じプロセスでも取得タイミングでハッシュコードが変わる。Idと名前が一緒くらいでいいじゃん。 var deleteProcesses = lastProcesses.Except( currentProcesses , new LambdaComparer<Process>( ( v1, v2 ) => v1.Id == v2.Id &&</process>…

IEqualityComparerとかめんどい

Linqでの差分抽出しようと思ったら え、クラス作らなきゃいけないの?匿名クラスでIF継承とか思ったけどやっぱりそんなものなかった。で、調べてみたら似たようなことをやっぱり思ったひとがいて汎用的なクラス作ってた。 http://brendan.enrick.com/post/li…

JSONを.netで使うなら

CodePlex ArchiveUsing type dynamic - C# Programming Guide | Microsoft DocsJavaScriptSerializer Class (System.Web.Script.Serialization) | Microsoft Docs

正規表現で指定したタグ以外を取り除く

指定したタグ以外を取り除く Regex reg = new Regex( "</?(?!table|link|p|br|tr|th|td|a{1}(?!\\w+))\\w+(\\s+.*?)?>", RegexOptions.IgnoreCase | RegexOptions.Singleline | RegexOptions.Compiled );

.netで圧縮

なぜMicrosoftは.netでzip圧縮のサポートをしないのかよくわからないけど。標準(?)で使えるのもを幾つか。 ZipPackage ただ、これは本来のzip圧縮とは少々異なり実用には耐えられない。 変なファイルが出来るとか、圧縮率が悪いとか。暗号化とか。 using ( v…

Reflector終了につきJustDecompileへ

フリー的な意味で といってもReflectorのv6.8は今後も使えるらしいが。代わりに使えるのがJustDecompile http://www.telerik.com/products/decompiling.aspx

Assembly version

Assembly.GetEntryAssembly().GetName().Version AssemblyNameって微妙だよな

Windows form でもコンソール出力

[DllImport("kernel32")] static extern bool AllocConsole();

コンソールで文字化けする。

環境によっては化ける時があったらエンコードを指定すればok。 Console.OutputEncoding で解決。 Console.WriteLine("ああああ"); // ???? Console.OutputEncoding = Encoding.UTF8; Console.WriteLine("ああああ"); // ああああ

AD オブジェクト1000件以上を取得

DirectorySearcher.PageSizeを増やす。デフォルトは0。 DirectorySearcher.SizeLimitは増やしたところで最高値はサーバーの設定が優先される。デフォルトは0。サーバーのデフォルトが1000。

P/Invoke ツール

VS2008ではアドインのPInvoke.net使えなかったんで。 P/Invoke Interop Assistant http://www.codeplex.com/clrinterop/Release/ProjectReleases.aspx?ReleaseId=14120 結構いいね。 ネットならpinvoke.net http://www.pinvoke.net/

マネージオブジェクトのポインタ変換

マネージオブジェクトからIntPtrに変換 GCHandle gch = GCHandle.Alloc( targetObject, GCHandleType.Pinned ); IntPtr ptr = gch.AddrOfPinnedObject();配列からIntPtrに変換 Marshal.UnsafeAddrOfPinnedArrayElement( targetArray, 0 );これで先頭ポインタ…