私は母語が BASIC でして、だからなのか VB のほうをよく使っていて、ゆえに C# を書こうとすると戸惑うことがあり、event も書き方をよく忘れるのでメモ(汗 以下はほぼ等価なイベントを使ったサンプルコード […]
VB.NET で JSON を使ったシリアライズ/デシリアライズの例。 Json.DataContractJsonSerializer は .net 4 系で追加されたようなので、.net 2 系では動作しません。 […]
サーバー側 tcp ポート 8000 番を使ってリモートプロシージャコールを行ってみた例のメモ。 3つのプロジェクトを作ります。 RemoteClass プロジェクト (呼び出される処理) RemoteServer […]
かつてターミナルとかコンソールの時代は、テキストの装飾というと色指定か色反転 (=Inverse) か点滅かのいずれかしかなかったわけですが。 HTML にしても XAML にしても、色指定は Foreground […]
浮動小数点型と整数型で、互いに誤差なく交換できる最大の整数がいくらなのかを確認。 結論は以下。 ・倍精度浮動小数点の場合は ±9007199254740992 (2^53) ・倍精度浮動小数点の場合は ±16 […]
たとえば、以下のようなプログラムを実行します。 Sub Main() Dim sw = New Stopwatch sw.Start() For i = 1 To 1000 ' 1ms 待ち Threading.Thr […]
Visual Studio でアイコンファイル(ico) の作り方が分からず、GIMP で作ったときのメモ。 アイコンに必要な画像の確認 まず、アイコン画像は 16px / 24px / 32px / 48px / […]
System.Text.Encoding.Default は使わないほうがよいです。 正確には「真にその挙動が得たいときには Encoding.Default を使えばよいのですが、多くの場合はその挙動を期待している […]
Raspberry PI の GPIO(General Purpose Input/Output) は Shell Script から リダイレクトで操作できるらしい。 ということは、ストリーム入出力を使えば mon […]
Linux 系でも mono を使用すれば C# などのプログラムは動作するよね?ということですが、Raspberry Pi (Raspbian) でも動作するんですかね?ということで試してみました。 まず導入。これ […]
いまだに、VB6 (旧Visual Basic) は偉大だったな、と感じていて、今だそれを超える処理系は Windows 系では出てきていないと思っている。 ということで、偉大だなと思うその理由についてまとめてみる。 […]
Date型 (C# では Datetime 型) でタイムゾーンを意識する場合、注意が必要です。 まず Date 型は 3つのタイムゾーン(モード)を持っています。 ローカル時 (.Kind = DateTimeKi […]
ODP.NET を使用して MERGE 文を実行したところ、AccessViolationException が発生しました。 原因は不明。また、どんな環境でも再現するかどうかは不明ですが、その環境では再現性があった […]
XML のデータを検索してみる。 前エントリで書いたように、どう書けば何が選択されるかがわかると割と平易になってきます。 Sub Main() Dim xdoc = <?xml version="1.0" en […]
VB で Linq2XML で… というか XDocument をアクセスしてみる。 ポイントは以下。 要素名は不等号でくくる 属性名は@を先頭につける 要素名と要素名の間、要素名と属性名の間は . で区切る VB […]
VB から Powershell Script を呼び出す方法についてのメモ。 まずは参照設定を行います。 (Windows 8 x64 の場合) C:Program Files (x86)Reference Asse […]
WinForms で 最大化ボタン、最小化ボタンを個別に消したり、コントロールボックス全体(最大化/最小化/閉じる、タイトルバー左端のアイコン)を消すことはできます。 しかし「最大化ボタンは有効にしつつ」「閉じるボタ […]
R.NET を使用して R の変数にアクセスする際、変数名が "c" の場合にメモリアクセス違反が発生するので、ここにメモる。 多分ベクトル作成時に使用する c とかぶっているのではないかと予想。 ただ実際問題、サ […]
VB.NET は行列計算と同様、標準の回帰分析ライブラリを持っていないので、その対策として R を使用する例。 重回帰でも「c3
VB.NET は、標準の行列計算ライブラリを持っていないので、その対策として R を使用する例。 まずは前準備として、nuget で R.NET を入手します。 以下コード例。 注意点としては、結果を得る際に . […]
たとえば、当日8:00~翌日8:00 までを、操業日として管理することがあります。現在時刻から操業日付を求めたい場合、現在時刻から操業日付の区切りの時刻を差し引くことで求めることができます。 以下は、操業日付の区切り […]
与えられた文字列が数値であるかどうかを判定するのに、型.TryParse() を使う方法がありますが、おなじ数値判定でも型によって結果が異なります。 ' 数値判定 For Each x In {"100", "+0", […]
以下のコードを実行すると True が表示されます。 Module Module1 Sub Main() Dim isExist = IO.File.Exists("C:WindowsSystem32driverset […]
たとえば以下の xml ファイル (test.xml) があり、/root/node/leaf の内容を列挙したいと考えたとします。 <Root> <Node> <Leaf>あ< […]
通知領域にバルーンヒントを表示させたい場合は、Win Form にツールボックスから NotifyIcon を貼り付け、以下のコードを実行かすれば表示できます。 Private Sub Button1_Click(.. […]
標準入力を使用しない呼び出しの場合、ProcessStartInfo の .WindowStyle を ProcessWindowStyle.Hidden とすれば、黒い画面(cmd.exe)が表示されなくなるのですが […]
VB.NET で Dapper を使って Oracle に接続してみました。 Dapper というのは .net 用の MicroORM のことです。概要はこちらを。 SELECT の場合(動的オブジェクトで戻しても […]
http://ooltcloud.sakura.ne.jp/blog/201406/article_11235313.html を改良してみた。修正点は以下。 Either を Interface から Super C […]
Either 型っぽいものが VB で実装できないか、ちょっと試してみた。 ' Either型 Interface Either(Of A, B) End Interface ' Either.Right型 Class […]
半角カナのみ全角カナに変換するサンプル。 単純に StrConv の VbStrConv.VbStrConv.Wide を指定するだけだと、英数字も全角になってしまうのでその対策。 ''' <summary&g […]
TcpClient などで通信する際、相手先の IP アドレス(Net.IPAddress のインスタンス)を得る必要があります。 ところが、Net.IPAddress を直接 new しようとすると、コンストラクタ […]
色を app.config に保存している場合などで、色コードの文字列を Parse して色コードを取得する方法について。 Windows Form の場合。ColorTranslator.FromHtml メソッド […]
指定のグループに指定のユーザーが参加しているをプログラムから知る方法。 (指定ユーザーが所属しているグループの一覧を得るわけではない点に注意) 事前準備 .NET の参照設定で、System.DirectorySer […]
VB では 16進数リテラルとして &H、8進数リテラルとして &O があるのですが、2進数リテラルがありません。MSX-BASIC だと &B というのがあったのですが… (ぐぐると LotusScript にも & […]
VB.NET には「リテラル型文字」というものがあって、リテラルに変数型を指定することができます。 http://msdn.microsoft.com/ja-jp/library/s9cz43ek.aspx 多くの […]
浮動小数点型を使用した丸め処理を行う場合、意図しない結果になる場合があります。 たとえば以下。5.015 を小数点以下2桁としたいので、期待する結果は 5.02 ですが、結果は 5.01 になります。 Dim r A […]
プログラム中で切り上げ/切り捨てをしたい場合があります。 切り捨てをする場合は Math.Floor、切り上げをする場合は Math.Ceiling、という関数を使用すると良い、という話を聞くわけですが、これらの関数 […]
VB の CInt で実数を整数にする場合、四捨五入されるのではなく、偶数丸めと呼ばれる方法で丸められます。また、Convert.ToInt32 を使用しても同様の動作をします。 String.Format などでフ […]
親クラスに定義したイベントを、直接子クラスから呼び出すことはできません。(子クラスから親クラスのイベントを直接 RaiseEvent することはできません。) そのようなことをしたい場合は、親クラスに Protect […]
Window.Show の後に Window.Owner を設定すると、タスクバーアイコンがなぜか表示されません。 Window.Owner を設定したのちに Window.Show を実行すると、タスクバーアイコン […]
「End の使用は信頼を裏切る」(http://ooltcloud.sakura.ne.jp/blog/201312/article_11223915.html)の続きエントリーです。 アプリケーションをコードから終 […]
参照型は同じ実体に対して、異なる変数名を持つことが可能になるので、油断すると容易く一筋縄では追えないコードを生成することができてしまいます。ということの実験。 以下は、Class5.Init() の a.A で設定し […]
DataGrid の ComboBox に固定のリストを割り当てる例。 ポイントは、DataGridComboBoxColumn には ComboBox (DataGridComboBoxColumn でない普通の […]
VB には BASIC の時代から連綿と語り継がれている命令がありまして、End 命令もその一つ。しかしこの End 命令を安易に使うとひどい目にあう場合があります。 たとえば最近の言語では例外機構が装備されていて、 […]
Windows 7 以降ではタスクバーアイコンにプログレス表示ができるようになりましたが、その実装例。 XAML 側。ProgressState を Normal にすることで表示されるようになります。 <Wi […]
右クリックするとその場所に表示されるポップアップメニューが欲しい場合、ContextMenu を実装することで実現できます。 実装例は以下。 <Window x:Class="MainWindow" xmlns […]
マウスをクリックした箇所の座標を取得する場合、以下のように記述すると、クリックした位置を取得することができます。 (以下は右クリックを押した時の例) Private Sub Window1_MouseRightBut […]
業務アプリにありがちな、シングルウインドウで画面展開していき、子画面を閉じると親画面が表示される系の実装例。いわゆるパンくずリスト。(まあ以下の実装はリスト表示ではないので、正確にはパンくずリストではないですが) 具 […]
Enum の要素数、あるいは最大値が欲しい場合、以下のように書きます。 また、要素数のほうはそのまま .Length メソッドで取得できますが、最大値のほうは Cast してやらないと .Max メソッドが使えません […]
Shared (Static) なメンバー変数の初期化を、各メンバー変数の初期化子で行うのではなく、まとめてどこかで…という場合には、静的コンストラクタに書けばよいらしいです。 たとえば以下のように書きます。 ポイ […]
.net Framework 4 からなのか、ExpandoObject という、動的にメンバーが追加できる型ができたようです。 Dim person As Object = New Dynamic.ExpandoOb […]
以下のようなクラスがあったとして。 ' 親クラス Public MustInherit Class SuperClass Private _superClassField As Integer = 1 Private […]
WPF の TextBox をマウスでクリックして選択した場合、クリックした箇所に近い文字間にキャレットが挿入されます。 そうじゃなくて、IE の URL を入力するところのように、テキストを全選択したい…というケー […]
Windows Forms だと Me.ControlBox = False 一発で消せるコントロールボックスですが、WPF だとそのようなプロパティは用意されておらず、結局のところ Win32API に頼る以外に方法 […]
キーボードでのコントロールの移動は、基本は TAB 押下で移動させるのが Windows のデザインのはずですが、Enter で移動させたい(あるいはさせていた)という場合があります。 その場合は、以下の Enter […]
テスト用のモックを作りたい時など、メソッドの内容をテスト用のものに差し替えたい場合があります。 これを実現するために RealProxy を使用する方法があります。 大前提として、以下の Import を追加してお […]
たとえばこんなクラスがあったとして。 ' 親クラス Public MustInherit Class SuperClass Private Function SuperClassMethod() As String R […]
Enumerable.Repeat は 第一引数で得た値を、第二引数の指定数、繰り返し代入します。 気を付けなくてはならないのは、第一引数の処理の実行は1回だけという点です。第一引数の処理が、第二引数の指定数だけ実行 […]
たとえば、テスト対象となる、こんなメソッドがあった場合。(ルート名前空間は "ClassLibrary1" であるとします) Public Class Class1 Private Function func1(sou […]
Linq で 列のデータを平均を求めた例。 以下のコードの場合、左側一列目 10,20,51 の平均(=27)を計算し、それを列分繰り返す。 Sub Main() Dim table()() = {New Doubl […]
VB.NETで空配列の生成したいときの記法。 ' 一次元配列の例 Public Property s1 As String() = New String(10) {} ' 二次元配列の例 Public Property […]
[VB.NET] ワーカースレッドから コントロール(UI スレッド)へのアクセス その1 で、プラットホームごとで書き方が違うよ…_| ̄|○ ということでしたが、書き方を共通にする方法があります。 以下のように書く […]
たとえばワーカースレッドを作って、ワーカースレッド上で重い処理を走らせ、その結果をコントロールに表示させようとします。 Private Sub Button1_Click(... Dim t = New Threadi […]
Invoke と BeginInvoke の動作の違いについて軽くまとめ。 Button1 を押したあとに Button2 を押して、作成されるメッセージの違いをみます。 Invoke の場合。 Public Cla […]
ViewModel で作成したクラスを ルート要素の Panel の DataContext にデータバインドする際の手順のまとめ。 ViewModel 用のクラスを作ります ViewModel 用のクラスを作ります […]
MVVM モデルで ViewModel から View を操作する場合は Messenger という仕組みを使う…らしいのですが、理解が難しかったので、自分なりにまとめなおしてみます。 結論的には、以下の 2 の内容 […]
WPF 扱うにあたって MVVM パターンをお勉強しておこうか…と思ったものの、思いのほか難しく半ば挫折したのでメモ(汗 元ネタはここ http://code.msdn.microsoft.com/windowsde […]
引き続き、回帰分析。 プロットしたデータから、n次の関数の係数を求めます。 y(),x() がプロットデータ、degree が関数の次数。 行列の演算には、http://ooltcloud.sakura.ne.j […]
ちょっと行列計算が入用になったので作成。 Double の二次元配列の 左側添え字を行/右側添字を列と見立てて計算します。 エラー処理なし、逆行列の計算では行列が正則であるかどうかのチェックとかもなし。 使う予定 […]
先(http://ooltcloud.sakura.ne.jp/blog/201307/article_15211613.html) のつづき。 先の例では、グリッドパネルの表示エリア一杯に描画のグラフを表示したので […]
WPF の XAML で関数グラフを描いてみる実験。 XAML で数式を設定すると勝手にグラフを描いてくれるような方法あるのでは?…と期待して調べたのですが、早々に断念(汗 結局、古典と同じく直線近似で描くのが現実 […]
Windows のユーザーとパスワードの検証。 以前、SecureString で怪しげなことを書いていますが、ユーザーとパスワードの検証だけであれば、PrincipalContext を使用することで検証できるよう […]
SecureStringというものがあるらしいことを知る。これを使って、パスワードが渡せるらしい。 これと、Process.Start を組み合わせることで、RunAs のようなことができる。 Dim pw As N […]
VB2010 (.net 4.0) から Tuple 型というのがあるようです。 どうも、元々は F# で複数の値を戻すための実装のようですが、VBでも使用できる模様。 たとえば以下のように書けば複数の値を戻せるよ […]
ディレクトリを移動する際に使用できるメソッドとして、 System.IO.Directory.Move(formDir,toDir) がありますが、これは同一ドライブでの移動のみに対応していて、ディレクトリのコピーや他 […]
オブジェクト初期化子の書き方と、匿名クラスの書き方のメモ。 Sub Main ' オブジェクト初期化子 Dim s = New aaaa With {.Value1 = 100D} ' 匿名クラス Dim r = Ne […]
上が Vsiual Studio 2010 Professional。下がVisual Basic 2010 Express。 微妙にせこい。ターゲットCPUの変更ができない。 そのくらいさせてよって感じ。 もっ […]
Visual Studio 2010の自動実装プロパティについてメモ。 自動実装プロパティが実装されたことで、コード入力時の振る舞いが VS2008 以前と違います。 最初。 "Property test"と打ち […]
故あって、サービスプログラム内で、自身のサービス名が欲しい状況が生まれたのですが、調べてもそんな事例が見つからず、かなり途方に暮れました。なのでメモ。 結果としては、以下のコードでサービス名を取得するようにしました。 […]
こんなコードを書いてみる。 で、デザイナで、TextBox1のTextプロパティに適当な値を、Form1は初期サイズ(300×300)からちょっとサイズを変更(例:300×212)にして、その上で最大化するように設定 […]
拡張メソッドを作ったみましたのでメモ。 Module Extensions <System.Runtime.CompilerServices.Extension()> _ Function Norm(ByV […]
以下のような感じで、呼び出し元メソッド名の取得が出来るようです。ログ記録に便利かも。 Public Shared Function GetMethodName(ByVal i As MethodLocation) Di […]
前回、最終的にこんなコードを書いたわけですが。 Dim source As Integer() = {1, 2, 3, 4, 5} Dim int2strConverter As New System.Converte […]
昨日、親戚の七七日法要があり、そして今日は彼岸(会法要の中日)と言うこともあり、まあそれに関する説法があったわけで。 印象に残ったのは「此岸は煩悩や迷いに満ちたこの世であり、彼岸は悟りの世界である」的な話があったわけ […]
なんとなく思いついたのでメモ。 そもそもだなー、という話はあるとしても、なんかどっかでいつかこんなバグではまる気がしてならない。 こんなのに遭遇したら、絶対にわからん。 Module Module1 Private […]
MUTEXによるプロセス間の排他制御。MUTEX使うの10年ぶりだ…ということでメモ。 Sub Main() Dim _mutex As System.Threading.Mutex ' 取得 _mutex = New […]
メモ。実行中のクラス名とメソッド名の求め方。 Module Module1 Sub Main() With System.Reflection.MethodInfo.GetCurrentMethod Console.W […]
Sharedインスタンスの実体化のタイミングを確認。 最初に操作/参照された瞬間に初期化が走るようですね。 Public Class Form1 Private Sub Button1_Click(...) Hand […]
今日、岡山のOITEC勉強会に出席したところ、small basic というのがあるらしく、そのセッションをしてました。 古き良き(?) BASIC を再現しているとかなんとか。 とりあえず、おもしろかったのでまと […]
String.Formatの危険性(改) その5です。「 [VB.NET] 正規表現のエスケープ 」からの続きです。 今回が最終回です。 前回を最終回にしようと思っていたのですが、「プログラマのための文字コード技術 […]
String.Formatの危険性(改) その4です。「[C#] ファイルからの入力の場合」からの続きです。 C# では"n"は書式文字列ではなく文字リテラルでした。というのが前回までの結論でした。 ところで、"n […]
String.Formatの危険性(改) その3です。「 [C#] 逐語的文字列」からの続きです。 #デスマってて、間が開いてしまいました… 本題のファイル入力の場合はどうなるか。実験しました。 プログラム cl […]
String.Formatの危険性(改) その1 です。「String.Formatの危険性(改) その0」からの続きです。 "n"とかは書式文字列ではなく文字リテラルです。ここが勘違いの大元でした。つまり、 str […]
元記事> http://ooltcloud.sakura.ne.jp/blog/201005/article_13015500.html 先日、上記記事で、 例えばメッセージ出力などで、String.Form […]
ふと、ビット演算をしようとしたとき、68000時代にはまったことを思い出した。 基本的に VB.net や C# (や C,C++ ) には算術シフト演算子しかなくて、論理シフトはできない。 論理シフトがしたい場合 […]
【追記】本エントリには誤りが含まれています。(以下赤字取消線の部分など) 訂正記事 別に危険でも何でもないのですが、呆けていると嵌るなと思ったのでメモ。 例えばメッセージ出力などで、String.Format の書式 […]
関係演算の AND は「And」なのは当然として、論理演算の AND ってなんだったっけ?と思って調べたみた。 …違いはないらしい。型( Boolean なのか 整数なのか) の違いということのようだ。 C や C# の […]
Boolean の整数化ですが、使う関数によって結果が異なります。要注意。 コード Imports System.Console Module Module1 Sub Main() Dim a As Boolean = […]
キャストです。Cとかで a = (char*)b とか書くあれ。 VB.NETではいくつか種類があるようなのでメモ。 1.型変換全般 型変換全般についてはここが詳しい模様。 http://msdn.microsoft.c […]
それでは、二次元配列にした場合はどうなるのか確認してみた。 具体的には、キャストの箇所で > 型 'System.Int32[*,*]' のオブジェクトを型 'System.Int32[,]' にキャストできません […]