マイクロソフトより「Windows Live SkyDrive」と言うサービスがリリースされました。
無料で利用できるファイル共有サービスなんですが、最大容量が5GBある上に、1つのファイルの最大サイズが50MBのため、通常考えられるファイルはほとんどUPすることが出来ます。
また、ファイル操作用のActiveXをインストールすると、ブラウザにドラッグ&ドロップでファイルをアップロードすることが出来ます。
難点とえいば、フォルダ単位でのアップロード・ダウンロードが出来ない点です。このへんは今後のバージョンアップに期待しましょう。
GDDとは「Gut's Driven Development」の略です。簡単にいうとガッツ駆動方式のシステム開発です。
えぇまぁ、私の開発スタイルです。このBlogでは、そんなシステム開発の作業で発見したことを記録していきます。
バイク関連の記事もちょいちょい書き出しました。皆さんの参考になると幸いです。
(Google Developer Daysとか、Game Design Documentとはなんの関係ありません。)
2008年2月28日木曜日
2008年2月26日火曜日
[.NET]引数がポインタのWinsdowsAPIを呼び出す
引数がポインタのWindowsのAPIを呼び出す場合、C#では以下のような宣言をします。 GetMailslotInfoの場合
となります。しかし、pinvoke.netで生成できる宣言はref uintの部分がIntPtrとなります。
ほかにもっとよい方法があるのかもしれませんが、これでもとりあえず動作しますね。
[DllImport("kernel32.dll")]
static extern bool GetMailslotInfo(
SafeFileHandle hMailslot, //メールスロットのハンドル
ref uint lpMaxMessageSize, //最大メッセージサイズ
ref uint lpNextSize, //次のメッセージのサイズ
ref uint lpMessageCount, //メッセージ数
ref uint lpReadTimeout); //読み取りタイムアウトの間隔
static extern bool GetMailslotInfo(
SafeFileHandle hMailslot, //メールスロットのハンドル
ref uint lpMaxMessageSize, //最大メッセージサイズ
ref uint lpNextSize, //次のメッセージのサイズ
ref uint lpMessageCount, //メッセージ数
ref uint lpReadTimeout); //読み取りタイムアウトの間隔
となります。しかし、pinvoke.netで生成できる宣言はref uintの部分がIntPtrとなります。
ほかにもっとよい方法があるのかもしれませんが、これでもとりあえず動作しますね。
2008年2月25日月曜日
[.NET].NET Frameworkソース公開(VS2008)
去年の10月ごろ、アナウンスされていた.NET Frameworkのソースコード公開されるというニュースがありましたが、ついにリリースされたようです。
ただし、アドオン機能同様に、Express Editionではサポートされないようです。
残念ならが製品版を持っていないので、私は見ることができません。。。
@ITに詳しくまとめられています。
ただし、アドオン機能同様に、Express Editionではサポートされないようです。
残念ならが製品版を持っていないので、私は見ることができません。。。
@ITに詳しくまとめられています。
2008年2月20日水曜日
[.NET]キーボードステータスの取得
会社用なのですが、スタートアップとシャットダウンの時に時刻を記録して集計するツールがあります。
基本的に自動的に画面を開き保存が終わると自動的に画面を閉じます。
で、土曜日など稼動日ではない場合には、念のため確認の画面を表示します。
しかし、帰る前に雑務などで、時間を記録したくないときも時刻を記録してしまうという難点がありました。そこで、シフトキー押下されていたら記録しない。というモードを追加しようと思い調査してみました。
が。.NET Framework2.0では残念ながらサポートされていないっぽいことがわかりました。
で、仕方が無いのでp/invokeです。実装はこのようなかんじ。
基本的に自動的に画面を開き保存が終わると自動的に画面を閉じます。
で、土曜日など稼動日ではない場合には、念のため確認の画面を表示します。
しかし、帰る前に雑務などで、時間を記録したくないときも時刻を記録してしまうという難点がありました。そこで、シフトキー押下されていたら記録しない。というモードを追加しようと思い調査してみました。
が。.NET Framework2.0では残念ながらサポートされていないっぽいことがわかりました。
で、仕方が無いのでp/invokeです。実装はこのようなかんじ。
[DllImport("user32.dll")]
static extern short GetAsyncKeyState(int vKey);
const int VK_SHIFT = 0x10;
private void Form_Load(object sender, EventArgs e)
{
if (GetAsyncKeyState(VK_SHIFT) != 0)
{
MessageBox.Show("緊急停止!!");
}
}
static extern short GetAsyncKeyState(int vKey);
const int VK_SHIFT = 0x10;
private void Form_Load(object sender, EventArgs e)
{
if (GetAsyncKeyState(VK_SHIFT) != 0)
{
MessageBox.Show("緊急停止!!");
}
}
2008年2月14日木曜日
[.NET]C#のparams
C#2.0には、可変長の引数をサポートする、paramsというキーワードが追加されました。
実装は以下のようなかんじ。
呼び出し側はこんなかんじ
paramsは引数の最後という条件はありますが、実装側は、p2が配列として受け取れます。
で、気になったのですが、たとえば
のような呼び出しが可能か?ということでやってみました。結果はコンパイルエラー。
・・・えぇまぁせっかく実験したので、blogに書いてみました。ただそれだけです。
実装は以下のようなかんじ。
public void TestFunc(string p1, params string[] p2)
{
StringBuilder sb = new StringBuilder();
sb.Append("p1=").AppendLine(p1);
foreach(string sp2 in p2){
sb.Append("p2=").AppendLine(sp2);
}
textBox1.Text = sb.ToString();
}
{
StringBuilder sb = new StringBuilder();
sb.Append("p1=").AppendLine(p1);
foreach(string sp2 in p2){
sb.Append("p2=").AppendLine(sp2);
}
textBox1.Text = sb.ToString();
}
呼び出し側はこんなかんじ
TestFunc("p1", "p2-1", "p2-2", "p2-3");
paramsは引数の最後という条件はありますが、実装側は、p2が配列として受け取れます。
で、気になったのですが、たとえば
string[] p2 ={ "p2-1", "p2-2", "p2-3" };
TestFunc("p1", "p2-0", p2);
TestFunc("p1", "p2-0", p2);
のような呼び出しが可能か?ということでやってみました。結果はコンパイルエラー。
・・・えぇまぁせっかく実験したので、blogに書いてみました。ただそれだけです。
2008年2月12日火曜日
[.NET]VS.NETのショートカットキー
VS.NETにはいろいろなショートカットキーが設定されています。代表的なヤツではCtrl+Spaceで入力候補の表示など。でも、たくさんありすぎて覚え切れません。
で、とあるサイトで「MSDNに一覧があるよ」と記載されてましたので、コレをメモ。
一通り眺めておきたいですね(覚えられるかなぁ)。
JavaのツールEclipseであればCtrl+Shift+Lで一覧形式で選択できますね。
で、とあるサイトで「MSDNに一覧があるよ」と記載されてましたので、コレをメモ。
一通り眺めておきたいですね(覚えられるかなぁ)。
JavaのツールEclipseであればCtrl+Shift+Lで一覧形式で選択できますね。
2008年2月11日月曜日
[.NET]CSVを簡単に処理する方法
よく外部とのファイル連携でCSVを使うことがあります。いまどきはXMLかもしれませんが大量のデータをバッチ処理する場合など、今でもCSVのほうが多いのではないでしょうか。
しかしこのCSVは意外とクセモノで、メンドウな処理が結構あります。たとえば
@itに紹介の記事があります。MSDNを見た後ここを参考にするとわかりやすいと思います。
[追記]タイトルがCVSだったのをCSVに変更。ご指摘ありがとうございます。>匿名さん
しかしこのCSVは意外とクセモノで、メンドウな処理が結構あります。たとえば
- 文字列は"文字"のようにダブルコーテーションで区切る
- 基本は,(カンマ)で区切るが"(ダブルコーテーション)中の場合、データとして扱う
- "(ダブルコーテーション)中の改行はデータの一部として扱う
などなど。そんな時、TextFieldParserという便利なクラスを使用すると良いです。
このクラス名前空間がVB.NETのものになっているので、C#派にはちょっと抵抗があるかもしれません。しかし、見る限り便利すぎるので知ったからには使うしかありませんね。
@itに紹介の記事があります。MSDNを見た後ここを参考にするとわかりやすいと思います。
[追記]タイトルがCVSだったのをCSVに変更。ご指摘ありがとうございます。>匿名さん
登録:
投稿 (Atom)