C#

ツイッターの発言解析(2)

人の分類をするにも、身長や肌の色や体重といったようにいろいろな基準があるように、 確かにツイッターのユーザの分類はしてますが、いったいどういう基準で分類してるのですか? と疑問を持たれるかもしれませんが、その答えは以下です。 発言時において、…

ツイッターのログの解析

ログの解析結果を見るための手頃なビューアがなかったのでとりあえず作りました。縦軸は偏向具合、横軸は発言回数です。 右に行くほど発言が多くなります。 偏向具合が上あるいは下に寄っているほど特異なユーザということになります。 また、発言回数が多く…

ListView のメモ

C#

ListView 内のある item を確実に表示するには、ListView.EnsureVisible()を使います。 #Selected とか Focused とかを頑張っていじってしまった。

C# 版の memcpy, memset

C#

C# に C の memcpy にあたるような関数は、Buffer.BlockCopy や Marshal.Copy がありますが、、、、どうも引数が???で使いにくい。ということで、使いにくい関数を使うよりは作ってしまえということで、C# の unsafe を使って書いてしまうと以下のように…

C# 俺 dll 呼び出しのサンプル

C#

C# から、C++ で作った dll の呼び出しをよく使うのでサンプルを置いておこうっと。 wchar_t* pLog = NULL; //!< とりあえずのログを置く __declspec(dllexport) wchar_t* myTest(wchar_t* mes) { if( pLog != NULL ){ delete pLog; pLog = NULL; } int len …

C# ポインタ

C#

C# では、ポインタを使用してオブジェクトへアクセスするには、まずメモリアドレスを特定する必要があります。ところが、ガベージコレクションのために、オブジェクトへのアクセス中にメモリアドレスが変化しないとは限りません。そこで、キーワード fixed …

C# シリアル化

C#

MSDN の説明が一番分かりやすい。以下、参照。 シリアル化とは、オブジェクトの状態を永続化または転送できる形式に変換するプロセスのことです。シリアル化を補完するプロセスとして逆シリアル化があり、これは、ストリームをオブジェクトに変換するプロセ…

C# 非同期IO

C#

低速な記憶装置やネットワークに対して読み書きを行う際、同期させて行うならば、他の処理は長い時間待たなければなりません。もし、以下のように非同期で読み書きをすることができれば、読み書きの完了を待たずに他の処理を進めることができます。 public c…

C# スレッド

C#

ある副スレッドの実行が完了するまで、主スレッドの実行を待機させるとき、主スレッドを副スレッドに結合する、といいます。 以下は、myThreads というスレッドのコレクションがすでに定義されているものとして、このコレクションを走査していき、コレクショ…

C# マーシャリング

C#

プロセスとは、基本的に、稼動中のアプリケーションを意味します。 マーシャリングとは、プロセスのオブジェクトを境界越しに処理できるようにする過程のことです。例えば、Word のオブジェクトを Excel のスプレッドシート上に貼り付ける場合、プロセスの境…

C# アセンブリ

C#

アセンブリとは、.NET において、dll あるいは実行可能ファイルに見えるファイルのことです。アセンブリ内には、プログラムのコードに加え、gif などのリソースやコードのメタ情報なども含みます。 すべてのアセンブリはマニフェストを持ちます。マニフェス…

C# の属性、リフレクション

C#

属性とは、以下のように、メタデータを追加する仕組みのことです。 [assembly: AssemblyTitle("")] // AssemblyInfo.cs 内 [Serializable] Class MySerializableClass { } 以下のように独自の属性を作ることもできます。 public class BugFixAttribute : Sys…

C# のデリゲート

C#

デリゲートの機能は、C++の関数ポインタとほぼ同じものです。 public class MySort { public delegate int WhichIsBigger(Object o1, Object o2);//!<デリゲートの宣言 public void Run(Object[] arrObj, WhichIsBigger delFunc) //!<ユーザの作成したdelFun…

C# の例外

C#

例外がスローされると実行中のメソッドは停止されて、その例外に対する適切な例外ハンドラが見つかるまでスタックが巻き戻されます。 finally ブロックの処理は、例外が発生しようとするまいと実行されます。なお、finally ブロック内で、ブロックを抜け出す…

C# の文字列

C#

逐次的文字列リテラル "@" を使うと、字面どおりの文字として解釈されます。例えば、s1とs2、s3とs4は同じ文字列となります。 String s1 = "Hello\nWorld"; String s2 = @"Hello World"; String s3 = "C:\\Windows\\"; String s4 = @"C:\Windows\"; 関数 Str…

C# 配列、コレクション

C#

任意の数の引数を渡せるようにするには、以下のように params キーワードを使います。 public class Test { static public void ShowParams(params int[] vals) //!< params キーワード { foreach(int v in vals) { Console.WriteLine(v); } } static void M…

C# 任意の起動時のプロセスの引数の取得

C#

が、できてしまうので、プロセスの引数には、「パスワード」など大事な文字列を入れないようにしましょう! 他にどのような値が取得できるかは、以下の MSDN 内に詳しくあります。 Windows Management Instrumentation > WMI Reference > WMI Classes > Win3…

C# のインターフェイス

C#

メモ。 インターフェイスは、一つのクラスに複数に実装させることができます。 複数のインターフェイスを継承し、関数名が衝突した際には、少なくとも一方はインターフェイス名まで明示的に書く必要があります。 インターフェイス名を明示的に指定してメソッ…

C# の構造体は値型

C#

C#のクラスは参照型であるのに対し、C#の構造体は値型です。 ということは、以下のようなことが起こります。 public struct Thing { public String name; public Thing(String n) { name = n; } public override String ToString() { return "name=" + name;…

C# の変換演算子、キャスト

C#

C# でクラスに独自の変換を実装する場合、変換が成功することが保証されていて、何の情報も失われないならば、キーワード implicit を使いましょう。そうでなければ、explicit を使いましょう。 public class Fraction //!<分数クラス { private int numerat…

入れ子になったクラス

C#

C# では、クラスを入れ子にすることができます。以下は、サンプルプログラム。 public class Outside { private String name; public Outside( String n ) { name = n; } internal class Inside { public void Draw( Outside o ) { Console.WriteLine( "Name…

C# のコンストラクタなどについての雑記

C#

C# には、C++ のようなコピーコンストラクタはありません。 コピーを作成するには、ICloneable インターフェースを以下のように実装する必要があります。 浅いコピーとは、値型のオブジェクトに対しては値の複製を行い、参照型のオブジェクトに対しては参照…

C# の三項演算子

C#

あまり?全く?使わない三項演算子、こういう使い方が。 int One = 1; int Two = 2; int ValueMax = One > Two ? One : Two;

C# の goto文

C#

C# で goto 文使えるのか、知らなかった。以下は C# では無理だけど、 case 1: TakeSomeAction(); ///// 落ちることはできない、コンパイルエラー case 2: TakeSomeBehavior(); 以下なら可能と。 case 1: TakeSomeAction(); goto case 2; case 2: 戻ることも…

FormのKeyDown, KeyUp イベント

C#

テキストボックスのようなフォーカスを持つコントロールが配置されているフォームで、KeyDown, KeyUp のようなキーイベントを発生させるには、あらかじめプロパティの KeyPreview を True にしておきましょう。...こんなの知るか!

ログオフ時のProcess作成

C#

Windowsのログオフ時にも新しい Process を作っていると、 「(実行プログラム名)を初期化できませんでした」 というエラーが出ます。 イベント SessionEnding、FormClosing や WM_QUERYENDSESSION のトラップなどでログオフの検知できないかと頑張ってみたの…

C#のタイマー

C#

C#のクラスTimerは複数あります。 System.Threading:簡易なタイマー System.Timers:正確なタイマー System.Windows.Forms:シングルスレッドのタイマー 使用する際に、using *** を確認し、どれが使われているかを確認しないと。 特に、System.Windows.Forms.…