テスト用のドライバを作成していたのですが、プロパティーグリッドを表示しっぱなしにしておくと、画面が狭くなってしまうので、ドッキングウィンドウにできないかと思って調査してみました。
調査すると1つめにヒットするのは「.NETでDocking Windowを使う」ですが、そこに乗っていない「DigitalRune Docking Windows for .NET」というライブラリを使ってみました。
使い方は簡単でした(コード割愛)ドッキングされる側のウィンドウはFORMなんですが、基本クラスを手動で変更する必要がありました。
その他は、サンプルがついているので、必要な部分をカットアンドペーストでいけると思います。
このライブラリは商用で使うには有償になりますが、フリーウェアではフリー?になるようです。
ライセンス関係の規約がPDFで提供されています。私の低レベルな英語力ではフリーになると読み取れました。。。ご利用の際はご確認ください。
その他、エディタのライブラリなどあるようです。今度調べてみよう。
GDDとは「Gut's Driven Development」の略です。簡単にいうとガッツ駆動方式のシステム開発です。
えぇまぁ、私の開発スタイルです。このBlogでは、そんなシステム開発の作業で発見したことを記録していきます。
(Google Developer Daysとはなんの関係ありません。)
2010年8月31日火曜日
2010年8月23日月曜日
[.NET]QRコード関係のライブラリ
QRコード関係のライブラリを探していたのですが、フリーで使えてかつ、エンコードとデコードの両方をサポートしているものがありました。
QRコードをアプリケーションで作成するには?[C#、VB]
備忘録用にメモ。
QRコードをアプリケーションで作成するには?[C#、VB]
備忘録用にメモ。
2010年8月19日木曜日
[.NET]メモリマップファイル
C#4.0から使えるようになったメモリマップファイルですが、興味本位でちょっと触ってみました。
コードはこんな感じ。
結果、プロセス間で情報を共有できました。
しかし、System.IOとの連携というか、私が見つけられなかっただけなのかもしれませんが、Stream系のクラスとうまく連携できないようです。
そのあたり今度調査してみよう。
コードはこんな感じ。
private void button1_Click(object sender, EventArgs e)
{
//using System.IO.MemoryMappedFiles;
MemoryMappedFile mmf = MemoryMappedFile.CreateOrOpen("TestMMF", 1024);
using (MemoryMappedViewAccessor mmfa = mmf.CreateViewAccessor())
{
var data = "1192つくろう鎌倉幕府! " + DateTime.Now.ToString();
var byteData = Encoding.UTF8.GetBytes(data);
mmfa.WriteArray(0, byteData, 0, byteData.Length);
mmfa.Flush();
}
}
private void button2_Click(object sender, EventArgs e)
{
MemoryMappedFile mmf = MemoryMappedFile.CreateOrOpen("TestMMF", 1024);
using (MemoryMappedViewAccessor mmfa = mmf.CreateViewAccessor())
{
var buf = new byte[1024];
mmfa.ReadArray(0, buf, 0, buf.Length);
int len = 0;
for (len = 0; len < buf.Length; len++)
{
if (buf[len] == 0x00)
{
break;
}
}
var str = Encoding.UTF8.GetString(buf, 0, len);
MessageBox.Show("結果=[" + str + "]");
}
}
{
//using System.IO.MemoryMappedFiles;
MemoryMappedFile mmf = MemoryMappedFile.CreateOrOpen("TestMMF", 1024);
using (MemoryMappedViewAccessor mmfa = mmf.CreateViewAccessor())
{
var data = "1192つくろう鎌倉幕府! " + DateTime.Now.ToString();
var byteData = Encoding.UTF8.GetBytes(data);
mmfa.WriteArray(0, byteData, 0, byteData.Length);
mmfa.Flush();
}
}
private void button2_Click(object sender, EventArgs e)
{
MemoryMappedFile mmf = MemoryMappedFile.CreateOrOpen("TestMMF", 1024);
using (MemoryMappedViewAccessor mmfa = mmf.CreateViewAccessor())
{
var buf = new byte[1024];
mmfa.ReadArray(0, buf, 0, buf.Length);
int len = 0;
for (len = 0; len < buf.Length; len++)
{
if (buf[len] == 0x00)
{
break;
}
}
var str = Encoding.UTF8.GetString(buf, 0, len);
MessageBox.Show("結果=[" + str + "]");
}
}
結果、プロセス間で情報を共有できました。
しかし、System.IOとの連携というか、私が見つけられなかっただけなのかもしれませんが、Stream系のクラスとうまく連携できないようです。
そのあたり今度調査してみよう。
2010年8月15日日曜日
2010年8月12日木曜日
[.NET]大文字小文字を区別しないで一括置換する
テストのドライバで、結果で指定されているURLプロトコルをHTTPSからHTTPに一括置換していました。
まぁローカルのIISでHTTPSを使えるようにするのが面倒だったのが理由なんですが。
で、とりあえず、string.Replaceで簡単に実装していました、時々httpsとなっているものがあり、置換されず通過してくるケースがありました。
で、置換する必要のある文字のパターンも増える可能性があり、大文字・小文字の区別なく一括置換できないものかと調べてみると、正規表現でいけることがわかりました。コードはこんな感じ。
いやー意外と簡単。
まぁローカルのIISでHTTPSを使えるようにするのが面倒だったのが理由なんですが。
で、とりあえず、string.Replaceで簡単に実装していました、時々httpsとなっているものがあり、置換されず通過してくるケースがありました。
で、置換する必要のある文字のパターンも増える可能性があり、大文字・小文字の区別なく一括置換できないものかと調べてみると、正規表現でいけることがわかりました。コードはこんな感じ。
private void button1_Click(object sender, EventArgs e)
{
//using System.Text.RegularExpressions;
var str = "abc/ABC/aBcC/aAaB/aABCc";
System.Diagnostics.Debug.Write(Regex.Replace(str, "abc", "123", RegexOptions.IgnoreCase));
// 出力は↓こんな感じ
// 123/123/123C/aAaB/a123c
}
{
//using System.Text.RegularExpressions;
var str = "abc/ABC/aBcC/aAaB/aABCc";
System.Diagnostics.Debug.Write(Regex.Replace(str, "abc", "123", RegexOptions.IgnoreCase));
// 出力は↓こんな感じ
// 123/123/123C/aAaB/a123c
}
いやー意外と簡単。
2010年8月10日火曜日
[他]VS2010Expressでは、.NET Frameworkへのステップインが可能?
先日何気なく、C#2010の設定画面を見ていると、デバッグの設定で「シンボル」というのがあることに気づきました。これって、2008のときにexpressより上位のエディションに搭載された.NET Frameworkにステップインする機能では?
ということで、早速設定してみました。でデバッグしてみたんですが、ステップインしませんでした(textBox1.Refresh())。キャッシュのフォルダも空。何か条件があるのだろうか?
ということで、早速設定してみました。でデバッグしてみたんですが、ステップインしませんでした(textBox1.Refresh())。キャッシュのフォルダも空。何か条件があるのだろうか?
2010年8月2日月曜日
[SQL]大文字・小文字が異なる場合のみを抽出する(SQLServer)
SQLServerでは大文字と小文字を区別しません。Oracleはどうなんだろう?
で、先日、大文字で登録されたデータと小文字で登録されたデータの混在があり、困っている。と相談されました。
SQL上では'A'='a'がなりたちますが、プログラム側では'A'≠'a'なので、その辺で困っている模様でした。
とりあえず、
でできるんじゃない?と教えてあげたのですが、対象のレコードと個数が知りたい。とのことでした。
ということで、これで、いかが?と提示したところ、喜んでかえって行きました。
convertのvarbinaryは、指定の値を16進数で表現します。ソレをUPPERと組み合わせて差が出たものが対象。という事になります。
他のDBでも同じようなストアド・関数があれば実現できると思います。
で、先日、大文字で登録されたデータと小文字で登録されたデータの混在があり、困っている。と相談されました。
SQL上では'A'='a'がなりたちますが、プログラム側では'A'≠'a'なので、その辺で困っている模様でした。
とりあえず、
update T_TEST2 SET text1=upper(text1)
でできるんじゃない?と教えてあげたのですが、対象のレコードと個数が知りたい。とのことでした。
ということで、これで、いかが?と提示したところ、喜んでかえって行きました。
--だめな例
--select * from T_TEST2 where text1<>upper(text1)
--OKな例
select * from T_TEST2 where convert(varbinary,text1)<>convert(varbinary,upper(text1))
--select * from T_TEST2 where text1<>upper(text1)
--OKな例
select * from T_TEST2 where convert(varbinary,text1)<>convert(varbinary,upper(text1))
convertのvarbinaryは、指定の値を16進数で表現します。ソレをUPPERと組み合わせて差が出たものが対象。という事になります。
他のDBでも同じようなストアド・関数があれば実現できると思います。
2010年8月1日日曜日
[Excel]セル内の箇条書きの個数を判別する
Excelで表を作成したときに、1のセル内に、とある条件を箇条書きにしたものと、箇条書きの個数を1行に表現したいということがありました。
もちろん手入力すればいいのですが、後で修正するのが面倒だし、間違える恐れがあるので、コレの自動化を考えてみました。
もちろんマクロを使えば計算できることはわかっていたのですが、マクロを使わずにできないか。と考えて実施してみました。答えは単純で、特定の文字を除いたレングスを取ればよい。という事になります。
たとえば、A1セルに「・」で表現した箇条書きがあり、A2セルに個数を表現する場合、以下のとおりです。
もちろん手入力すればいいのですが、後で修正するのが面倒だし、間違える恐れがあるので、コレの自動化を考えてみました。
もちろんマクロを使えば計算できることはわかっていたのですが、マクロを使わずにできないか。と考えて実施してみました。答えは単純で、特定の文字を除いたレングスを取ればよい。という事になります。
たとえば、A1セルに「・」で表現した箇条書きがあり、A2セルに個数を表現する場合、以下のとおりです。
=LEN(A1)-(LEN(SUBSTITUTE(A1,"・","")))
登録:
投稿 (Atom)