xin9le.net

Microsoft の製品/技術が大好きな Microsoft MVP な管理人の技術ブログです。

Rx

ReactiveSignalR を ASP.NET Core SignalR に対応させました

ASP.NET SignalR 時代に作り、ASP.NET Core SignalR が出てからも長らく放置していた ReactiveSignalR を ASP.NET Core SignalR 向けに作り直しました!ということで、晴れて v1.0 をリリース!バージョン番号なんて特に意味はないんですが...。 ASP.NET Sig…

Bug Fixed : n 秒間押し続けたらイベント発火するボタンを作る

前回 (というか昨夜)「3 秒押し続けたらイベント発火するボタン」を作ってみたのですが、朝起きてみたら早速以下のようなバグが発見されていました...(oh いつも参考にさせて頂いています!こういうケースZipだと、DownしたけどUpしなかった(Atl+Tabで別ウィ…

3 秒間押し続けたらイベント発火するボタンを作る

Twitter で @amay077 さんが以下のような内容を呟いていたのを見て、頭の体操と思って Rx を使って解決してみました。 3秒間押し続けてないと onClick 発火しないボタン的なの作りたいけど何が手っ取り早いかなー?エフェクト考えなくてもまあまあめんどいな…

Rx入門 (29) - メソッドの別名を提供するRx-Aliases

Rx

これまで全然気付いてなかったのですが、NuGet パッケージマネージャを眺めていたら Rx-Aliases というパッケージがあることに気付きました。約 1 年程前からリリースされているようですが、ダウンロード数が 500 に到達していないあたりメジャーでない感じ…

Room metro #23 資料

2014年3月1日 (土) に開催されたRoom metro #23 大阪 & Windows Phone Arch特別編に参加してきました。関西方面の勉強会は初めて。これまでの勉強会ではお会いすることがなかったMVPさんや初めてお会いするエンジニアさんばかりで、とても刺激的でした。勉強…

Rx入門 (28) – Disposables名前空間まとめ

Rx

Rx入門を書いてから早2年。当時はVersion 1だったRxも今ではVersion 2。考え方は変わらないものの、いくつかObsoleteになってしまった機能もあり、参考にして頂いている方には多少なり申し訳なさがあります...。あれからC#自体にも言語機能として非同期処理 …

Hokuriku.NET vol.13 資料

2014年1月25日 (土) に開催されたHokuriku.NET vol.13 in 富山に参加してきました。運営側として、またLT担当として協力させて頂き、とても楽しく有意義な時間を提供できたのではないかと実感しています。参加して下さったすべての方に感謝申し上げますm( )m…

ReactiveSignalR

Happy Merry X'mas!! C# Advent Calendar 2013、23日目担当の@xin9leです。誰が何と言おうと23日目です。先の3連休を高校の同級生と夜通しカタンで遊び過ぎたせいで担当記事の公開が間に合わなかったなんてことは...あるようなないような...。関係各位、誠に…

非同期メソッド入門 (11) - Rxとの相互運用

Rx (=Reactive Extensions) は、イベントや非同期処理をLINQの形で統一的に記述できる準標準 (=.NET Frmaeworkに標準搭載されていないMicrosoft純正の) ライブラリです。これまでRxは.NET Framework 3.5 / .NET Framework 4環境下では非同期処理をするための…

Special Seminar #1 資料

8月の終わり、ignoteの代表取締役社長である@hIDDEN_xvさんから半ば強引に(謎)出張セミナーのお誘いを受けました。 @xin9le ウェルカム!— 那珂にしちゃんは大丈夫です (@hIDDEN_xv) 2012, 8月 30 @xin9le じゃ何か勉強会でもしましょうか!— 那珂にしちゃん…

Rx入門

Rx

非同期/イベント/時間に関する処理を LINQ の形式で簡潔かつ宣言的に記述することができるライブラリ、Reactive Extensions についての連載インデックス

Rx入門 (27) - 入力文字のサジェスト

Rx

昨今の検索ボックスは優秀で、当たり前のようにサジェスト機能が付いてますね。やはりサジェスト機能があると便利です。ということで、今回は文字入力におけるサジェストをやってみます。とはいえ、オートコンプリートを完璧に実装するのは結構手間なので今…

Hokuriku.NET C# -Rx入門- 資料

Hokuriku.NET C# Rx入門の資料を公開します。Rx入門の内容をベースに、C#/LINQを利用したコーディングができる方向けにRx全体をイチから紹介しました。参加された方で復習したい方、実践部分に触れたい方はぜひぜひ参考にしてください。また、間違ってるとこ…

Hokuriku.NET vol.9 資料

Hokuriku.NET vol.9のLTで発表したときの資料を公開します。「Rxって聞いたことあるけどどんなものか知らない」とか、「Rxって何?」と思っている人に興味を持って頂けたらいいなと思い、サンプルアプリ中心の内容にしました。興味を持たれた方は、ぜひRx入…

Rx入門 (26) - .NETイベントへの変換

Rx

以前、Rx入門 (11) - イベントのシーケンス化で.NETネイティブなイベントをIObservable<T>に変換する方法について触れました。「.NETイベントをIObservable<T>に変換できるなら、その逆もできていいんじゃないか?」と思った方、正解です!今回はIObservable<T>を.NET</t></t></t>…

Rx入門 (25) - デッドロックに注意

Rx

IObservable<T>は時間軸を基本としたデータを扱うことができます。これまでも述べてきたように、その枠内で非同期処理を扱うことができます。そして、非同期処理で忘れてはならないのがデッドロックです。Rxにおいてもデッドロックが発生するケースがもちろんあ</t>…

Rx入門 (24) - まとめてDispose

Rx

「Hot Observableなどに関連付けした複数のオブザーバーを一括して解除したい!」と思ったことはありませんか?今回はこれの実装を少しばかり簡単にする方法について見ていきたいと思います。 List<T>などを利用する場合 まず、一般的なコレクションを利用した</t>…

Rx入門 (23) - メソッドチェイン中の例外

Rx

今回はメソッドチェイン中に例外が発生した場合について見ていきます。これまでの連載中は基本的に例外は起こらないものとして解説してきたので、OnErrorメソッドはほとんど使っていませんでした。とは言え例外発生時の挙動について知っておくことは重要なの…

Rx入門 (22) - TwitterのTimelineを表示

Rx

今回はTwitterのタイムラインを表示するサンプルを紹介します。なんという事はなく、WebClientクラスのDownloadStringAsyncメソッドをRxに乗せてみた、というやつです。Twitterからのタイムライン取得はAtomフィードを利用しています。 サンプルコード まず…

Rx入門 (21) - Webの画像をスライド表示

Rx

今回は、Web上の画像をダウンロードしてスライドショー形式で表示するサンプルを紹介します。先日自然気胸で入院していたときに@ch3cooh先生作のWindows Phone 7アプリ某時計に触発されて作ったものの一部で、super bijin-tokeiの画像を3秒間隔 (1分間隔でな…

Rx入門 (20) - Drag & Dropでの落書き

Rx

今回はDrag & Dropでキャンバスに落書きを行うサンプルを紹介します。通常のDrag & Drop処理と比較して、どれほど簡単に書けるのか比較してみましょう。 Rxを利用しないDrag & Drop処理 まず、Rxを利用しない場合のサンプルコードを示します。以下のように、…

Rx入門 (19) - マウス位置のトラッキング

Rx

今回は、ボタン上の一部でマウス位置のトラッキングを行うというだけの (つまんない) サンプルを紹介します。CAD系のソフトだとステータスバーにマウスの座標位置が表示されるものがありますが、そう言ったケースで応用が利くかもしれません。 サンプルコー…

Rx入門 (18) - 効率的な表示更新

Rx

今回は、Explorerなどでよく見かけるMaster-Detailパターンでの効率的な表示更新のサンプルを紹介します。「とあるオブジェクトの一覧がリストに表示されていて、選択されているものの内容の詳細が横に表示される」というアレです。 詳細表示の描画に時間が…

Rx入門 (17) - 入力文字の遅延表示

Rx

しばらく空いてしまいましたが、落ち穂拾いと称してマッタリのんびりゆったりとやっていこうと思います。今回からはRxを利用した簡単な応用例をいくつか載せて行こうと思います。サンプルコードはサンプルコード集の中に随時追加して行きますので、ぜひ実際…

Rx入門 (16) - おわりに

Rx

ここまで15回に渡ってRxについて見てきました。今回もTPLのとき同様、個人的に勉強したことの備忘録でしかありませんが、読まれた方々が少しでもRxについて興味を持ってくださったり、理解を深めるキッカケになっていれば幸いです。 ソフトウェアエンジニア…

Rx入門 (15) - スケジューラの利用

Rx

今回で入門記事の連載も (一応名ばかりの) 最後です。今回はスケジューラの利用について見ていきます。残念ながら、これについてはだいぶ自信がありません。今わかっている範囲、そうだろうと思っている範囲で書きます。 スケジューラ スケジューラとは、処…

Rx入門 (14) - Cold to Hot変換

Rx

Push型配信の特徴は情報の分配 (同じデータを複数の購読者に送信すること) です。しかし、前回の内容の通り、ColdなObservableでは分配をすることができません。Rxの旨みを最大限に引き出すためには、ColdなObservableをHotなObservableに変換する必要があり…

Rx入門 (13) - HotとCold

Rx

IObservable<T>には、HotとColdと呼ばれる2つの性質があります。実はこれまで触れてきた記事のサンプルにもHotなものとColdなものが出てきていました。これらの性質の違いを把握することはRxを利用する上で非常に重要です。今回はこれらについて見ていきます。 </t>…

Rx入門 (12) - 非同期処理のシーケンス化

Rx

今回は、同期メソッドを非同期に実行し、それをIObservable<T>シーケンスとして受ける方法や、非同期処理として提供されているメソッドをIObservable<T>シーケンスに変換する方法ついて見ていきたいと思います。これが使えるようになれば、きっと非同期処理も怖く</t></t>…

Rx入門 (11) - イベントのシーケンス化

Rx

Rx入門 (2) - オブザーバーパターンの最後にもチラッと書きましたが、イベントはオブザーバーパターンの一実装です。なので、イベントをIObservable<T>に乗せ、イベントに対応する処理を記述することができます。そこで今回は、イベントをIObservable<T>シーケンス</t></t>…