年末は28日に仕事終わったあと熱出して死んでた。
一時期38℃近くまで上がったんだが、一日寝まくって気合で治した。しかしコミケの一番行きたかった1日目に行けず。残念ながら仕方ない。
30日も半分寝てて夕方から飲み会へ。病み上がりなので体調大丈夫か不安ではあったものの外に出たらむしろ元気だった。
31日は昼頃ちょいコミケ行ってきて夕方の新幹線で帰省した。
あとはごろごろして猫にすりすりして4日夜に戻ってきた。まあいつも通りですね。
5日に仕事始めなんだけど、会社人居ねえ……。
Reactive Extentionsのお勉強を始めました。
PeerCastStationでTaskとasync/awaitを使ってたんだけど、度々思ってたけどこいつサーバー作るのに全く向いてねえなって。 せいぜいHTTPみたいに1リクエスト1レスポンスっていうすごい限られた形のサーバーでしか使えねえわ。
Reactive Extentionsの方が向いてそうなんだけど、中途半端に入れるのも難しいしなぁということで手を出せずにいたが、Taskとasync/awaitはやっぱり難しいよおというのを何度、いや何十度も言ったあとで、Reactive ExtentionsがPeerCastStationに入るかどうかはとにかく使い勝手を把握しないと判断しようもないなということで勉強を始めた。
とりあえず簡単なチャットサーバーを作ってみた。慣れるまではそれなりに時間かかったけど、分かったらそこそこいい感じ。
HotなObservableとColdなObservableというのが最初よくわかってなかったが、Observableのメソッド(拡張メソッド)で作ったObservableは基本Cold(Subscribeされるまで動かない)で、Subscribeされる度にチェーンの最初から起動されるようだ。IEnumerableと同じようなもんと思えば確かにその通りだな。
一つのObservableにやり直しなく複数Subscribeしたい時は、Subject(PublishSubject)を間に挟むとそれっぽくなる。 またSubjectのOnNextなどを直接呼ぶことによって外部ジェネレータ(?)としても使えそう。Subjectが便利だな。
いろんな便利Disposableクラスが用意されてるのも嬉しいね。
特定のスレッドでイベント処理をしたい時にはSchedulerを使うが、EventLoopShedulerを使うと、それ専用に立てたスレッドでシリアラアイズして処理してくれるので楽ちん。 ObserveOnをチェインするとそれ以降の処理が指定したスケジューラで実行される。
まだちょっとソースが汚いので整理して、一旦WebSocketのサーバーでも作ってみようか? ある程度上手くいったらPeerCastStationの整理に使いたい。