Hatena::Groupsubtech

ういはるかぜの化学

Wednesday, February 23, 2011

MSMQ (Microsoft Message Queuing)を使う。 13:35  MSMQ (Microsoft Message Queuing)を使う。 - ういはるかぜの化学 を含むブックマーク はてなブックマーク -  MSMQ (Microsoft Message Queuing)を使う。 - ういはるかぜの化学

ちょっと.NETから簡単にメッセージキュー的なものを使いたいんだけど、何かないかなーと思って探したらMSMQの存在を思い出したので使ってみたり。

使い方があっているかよくわからないですが何となくサンプルコードを書いてみました。あ、ちなみにMSMQを使うにはWindowsの機能の有効化からMSMQのメッセージキューサーバーを有効化する必要があります。

static void Main(string[] args)
{
    // MessageQueueの名前。ローカルコンピュータのプライベートキュー(外部から使わないので)のTestQueue
    var queueName = @".\Private$\TestQueue";
    
    // MessageQueue がない場合にはを作る
    if (!MessageQueue.Exists(queueName))
    {
        MessageQueue.Create(queueName);
    }

    // 引数が指定されていなければ受け側として、指定されていたら送信側として動作
    if (args.Length == 0)
    {
        Console.WriteLine("Waiting...");
        // 受信用のMessageQueue
        var messageQueue = new MessageQueue(queueName);
        // 既定のメッセージフォーマッタはXmlMessageFormatterなのでそれで String 型を戻せるようにする
        messageQueue.Formatter = new XmlMessageFormatter(new []{ typeof(String) });
        // 非同期で受信開始
        messageQueue.BeginReceive();
        messageQueue.ReceiveCompleted += (sender, e) =>
                                         {
                                             // メッセージ受信イベント
                                             Console.WriteLine("Message Received");
                                             
                                             // メッセージ取出し
                                             var receivedMessage = messageQueue.EndReceive(e.AsyncResult);
                                             Console.WriteLine(receivedMessage.Body);
                                             
                                             // なんか長い処理
                                             Thread.Sleep(new Random().Next(500, 1000));
                                             
                                             messageQueue.BeginReceive();
                                         };
        Console.ReadLine();
    }
    else
    {
        // 適当に10個ほどメッセージを送信する
        Console.WriteLine("Queue Message");
        Parallel.For(0, 10,
                    new ParallelOptions {MaxDegreeOfParallelism = 4},
                    i =>
                    {
                        var mq = new MessageQueue(queueName);
                        mq.Send(i.ToString() + ": " + args[0]);
                    });
    }
}

引数に何も渡さず起動すると受信モードで、引数を渡すとそれをキューに放り込みます。

とりあえずコンパイルして2つぐらい引数なしで起動して、さらに別なコマンドプロンプトから ConsoleApplication1.exe Hauhau みたいに叩いてあげると何となくわかるかもしれません。

あ、あと遊んだあとはMessageQueue.Deleteしといたほうがいいかもしれませんね。

トラックバック - http://subtech.g.hatena.ne.jp/mayuki/20110223

Sunday, February 20, 2011

エル・プサイ・コングルゥ 23:44 エル・プサイ・コングルゥ - ういはるかぜの化学 を含むブックマーク はてなブックマーク - エル・プサイ・コングルゥ - ういはるかぜの化学

Steins;Gate はじめました。

3週間ぐらい前にそそのかされて買ってインストールしたものの忙しくて放置してました。そしてまだいろいろあるのに起動して始めてしまったという…。

なんかクイックロードしたり終了するとに必ずクラッシュするんですけどこれも"機関"の妨害なのでしょうか。

トラックバック - http://subtech.g.hatena.ne.jp/mayuki/20110220

Tuesday, February 15, 2011

ブラウザのタブとアドレスバー 13:04 ブラウザのタブとアドレスバー - ういはるかぜの化学 を含むブックマーク はてなブックマーク - ブラウザのタブとアドレスバー - ういはるかぜの化学

f:id:mayuki:20110215125953p:image

IE9Chromeっぽいなーと思っていたけど、ほかのブラウザも並べてみたら思ったより違った。

トラックバック - http://subtech.g.hatena.ne.jp/mayuki/20110215

Thursday, February 10, 2011

[]Internet Explorer 9 RCの変更点 02:45 Internet Explorer 9 RCの変更点 - ういはるかぜの化学 を含むブックマーク はてなブックマーク - Internet Explorer 9 RCの変更点 - ういはるかぜの化学

RCもでたし折角なので簡単に変更点をまとめてみます。

大きな機能はまあ誰かやメディアなどで解説があると思うので細かいところとか。

Geolocation対応

テストしようがないのでよくわからないけど、Windows Phone 7への準備だと思いたいですね!

Wi-Fiを使ったりしてるみたい。Windows 7のSensors APIGPSがあれば動くんですかねー?

従来のようにタブを下の段に表示できるようになりました

タイマーの分解能が上がって、バッテリ駆動時とAC電源時で異なるように

AC電源で動作しているときには4ms程度になりますが、バッテリ駆動に切り替わるとシステムデフォルトの15ms程度になります(ただし「パフォーマンス優先」設定の場合には変わりません)。

そのためAC電源の時は従来よりも早い割り込みを期待できるようになります。

http://www.misuzilla.org/~mayuki/misc/20110211/timer にアクセスして、電源の設定を省電力にして線をひっこぬいてみましょう。

:visitedのスタイルを変更できなくなります

これはChromeSafariFirefoxでも行われている変更で、スタイルを監視することで履歴を取得されてしまうことから保護するためのアレです。これはIE9IE8などのモードを問わず発動します。

これに該当するものがある場合コンソールに以下の一文が表示されます。

SEC7115: :visited and :link styles can only differ by color. Some styles were not applied to :visited.

SEC7115: :visited:link スタイルは、色のみを変更できます。一部のスタイルは :visited に適用されませんでした。

Tracking Protection

トラッキングをアレソレするアレです。

Active X Filtering

Active Xコントロールを無効にしてブラウズする機能です。FlashとかSilverlightとかQuickTimeとかですね。

no title

documentの再定義ができなくなります

documentを再定義しようとすると他のブラウザと同様にスクリプトエラーとなります。これはIE9標準モードに影響します。

一部のサイトではIEでのパフォーマンス向上のために以下のようなコードを記述している場合がありますがこれはエラーとなります。

/*@cc_on var doc = document; eval('var document = doc'); @*/
  • const 'document' が再定義されています。
  • "Redeclaration of const 'document'

window.msPerformanceがプレフィックス無しのwindow.performanceになりました

固定サイト

イメージをドラッグして固定する機能が増えました

no title

初回アクセスかどうかを取得するメソッドが増えました

no title

Canvas 2DのglobalCompositeOperationに対応しました

メディア要素に代替コーデックを使えるようになりました(WebM)

Ctrl+Shift+LでクリップボードのテキストをURLとして開いて移動ができるようになりました

「新しいタブ」をティアオフできる(引っぺがせる)ようになりました

トラックバック - http://subtech.g.hatena.ne.jp/mayuki/20110210

Thursday, February 03, 2011

Mac OS XGPTとして初期化したディスクをWindowsで操作できない場合 04:14 Mac OS XでGPTとして初期化したディスクをWindowsで操作できない場合 - ういはるかぜの化学 を含むブックマーク はてなブックマーク - Mac OS XでGPTとして初期化したディスクをWindowsで操作できない場合 - ういはるかぜの化学

ディスクユーティリティでGUID パーティション(GPT)としてディスクを初期化して、システムパーティションを作るとWindowsの「ディスクの管理」画面からは解放も初期化も新規作成もできない状態になってしまいます。

そんなときはDISKPARTコマンドで一旦パーティションを削除します。

DISKPART> list disk

  ディスク      状態           サイズ   空き   ダイナ GPT
  ###                                          ミック
  ------------  -------------  -------  -------  ---  ---
* ディスク 0    オンライン           298 GB      0 B
  ディスク 1    メディアなし             0 B      0 B
  ディスク 2    メディアなし             0 B      0 B
  ディスク 3    オンライン          7648 MB  7446 MB        *

DISKPART> select disk 3

ディスク 3 が選択されました。

DISKPART> list partition

  Partition ###  Type                Size     Offset
  -------------  ------------------  -------  -------
  Partition 1    システム               200 MB    20 KB

DISKPART> select partition 1

パーティション 1 が選択されました。

DISKPART> delete partition

仮想ディスク サービス エラー:
force protected パラメーターを設定しないと、保護されたパーティションは削除できません。

DISKPART> delete partition override

DiskPart は選択されたパーティションを正常に削除しました。

これで「ディスクの管理」からパーティションを作れるようになります。

トラックバック - http://subtech.g.hatena.ne.jp/mayuki/20110203