RxJSを勉強した3
Reactive Programming With Rxjs: Untangle Your Asynchronous Javascript Code
- 作者: Sergi Mansilla
- 出版社/メーカー: Pragmatic Bookshelf
- 発売日: 2015/12/25
- メディア: ペーパーバック
- この商品を含むブログを見る
今日は4章と5章の入りまで終わりました。4章のコードは途中まで動いてたんですけどcode4.js辺りから動かなくなってそのままノー満足でフィニッシュです。WebSocketsとTwitter APIを扱うとこがあるのでどちらかだと思う(表示されたスタックトレースが浅すぎてわからなかった)。ちなみに付属サンプルコードも動かなかった。今までのやつは付属サンプルコードの方見たらそっちは正解だったりしたんだけどね。あと、付属サンプルコードはファイル・ディレクトリ配置が汚いです。
最後、Most.jsの情報がTLから流れてきたので見たら「RxJSより(APIの数が少なくて)ええやん!」となって浮気してました。mostはMOnadic STreamsのmostです。モッ、モッ、モナ〜! これを使ったCycle.jsの姉妹プロジェクトMotorcycle.jsというプロジェクトがあり、ひととおり勉強終わったらこっちにしようかな〜と考えています。ただ、Most.jsはAPIが足りてないんじゃ?という懸念があります。Motorcycle.jsの方も現時点でtodomvcのリポジトリが作られて24時間経っていないほどアツアツのプロジェクトですからね。楽に死なせてくれそうです。
うっし、RxJSの本続きやるぞ
— 生 (@babie) December 19, 2015
“Chapter 4
— 生 (@babie) 2015, 12月 19
Building a Complete Web Application”
— 生 (@babie) 2015, 12月 19
2章のリアルタイム地震表示アプリに場所・マグニチュード・時刻を含んだテーブルを付けた。
— 生 (@babie) 2015, 12月 19
お、Hot and Cold Observable出た。#rxjs
— 生 (@babie) 2015, 12月 19
Hot Observableは今の値が流れてくるけど、Cold Observableはシーケンスの最初から流れてくるんだな。#rxjs
— 生 (@babie) 2015, 12月 19
publishをかましたObservableを使えばproxyのように働いてCold ObservableをHot Observableにできると。publishされたObservableはConnectable Observableと呼ぶと。#rxjs
— 生 (@babie) 2015, 12月 19
ConnectableObservableはconnectするまではスタートしないのか。ふむふむ。#rxjs
— 生 (@babie) 2015, 12月 19
Cold Observableを2回subscribeすると2回処理が流れてしまうが、あらかじめshare()しておけば1回で済むのか。#rxjs
— 生 (@babie) 2015, 12月 19
Buffering Values #rxjs
— 生 (@babie) 2015, 12月 19
Cold/Hot変換オペレーターはここに一覧表がある。本にあったpublishもshareもある。 #rxjs
https://t.co/P2kMQYDKGd
— 生 (@babie) 2015, 12月 19
bufferWithTime()というものが出てきて、一定時間ごとに動くんだけど、前回と変わりなかったら空配列を返すという。これ使ってDOMの更新を必要以上にしないようにしてる。#rxjs
— 生 (@babie) 2015, 12月 19
Rx.helpers.identity(x)って関数が出てきてxを返すだけなんだけど、なんでこんなの使うのか全くわからなくて戸惑っている。#rxjs
— 生 (@babie) December 19, 2015
あ、無名関数書かなくていいってことか。#rxjs
— 生 (@babie) December 19, 2015
@ykzts なんかね
arr.map(function(x) { return true; })
を
var identity = Rx.helpers.identity;
arr.map(identity(true))
って書くためのものみたい。
— 生 (@babie) 2015, 12月 19
@ykzts arrの部分が「マウスオーバーされた要素全部」みたいなストリームだったりして絞ったり。なるほどですね。
— 生 (@babie) 2015, 12月 19
pairwise()っていう面白オペレーターが出てきた。シーケンスを組みで得られる。[1, 2, 3, 4]みたいなシーケンスがあったら[1, 2] -> [2, 3] -> [3, 4]みたいに得られる。えらい。#rxjs
— 生 (@babie) 2015, 12月 19
リアルタイム地震表示アプリ、表の列をマウスオーバーすると地図上の地震が赤くなるのと、列をクリックすると地図上のその地震にパンするのができた。#rxjs
— 生 (@babie) 2015, 12月 19
— 生 (@babie) 2015, 12月 19
WebSocketsやってる。#rxjs
— 生 (@babie) 2015, 12月 19
コードが動かないのでふて寝している #rxjs
— 生 (@babie) 2015, 12月 19
RxJSの本、第4章、動かないまま終わった。(配布コードも動かない)(ツイッターAPIの不調かな……)#rxjs
— 生 (@babie) 2015, 12月 19
RxJS本の配布コード、使わない空ディレクトリがあったりしておもろい。#rxjs
— 生 (@babie) 2015, 12月 19
5章、Bending Time with Schedulers. スケジューラーのお話ぞな。#rxjs
— 生 (@babie) December 19, 2015
6章しかないから明日には終わりそうズラ。#rxjs
— 生 (@babie) 2015, 12月 19
今日はあと半章ぐらいやりたいですね
— 生 (@babie) 2015, 12月 19
うっし、仮眠も取ったしやるか。
— 生 (@babie) 2015, 12月 19
Chapter 5 Bending Time with Schedulers、自分が使っているオペレーターが同期か非同期かどうやって知ればいいか、オペレーターがいつ通知をemitするのか、に答えてくれるようです。もしくは、考えないでいいように同期・非同期を操るのかも。#rxjs
— 生 (@babie) 2015, 12月 19
Rx.Observable.from()でスケジューラーを指定しない同期のよりRx.Scheduler.defaultを指定する非同期の方がクソ遅いって書かれてるんだけど、実行してみるとほとんど変わらないしむしろ後者の方がちょっと速いくらい。改良された可能性がある。#rxjs
— 生 (@babie) 2015, 12月 19
groupBy()が出てきた。distinct()があるんだから、あるよな〜。つーか元実装のC#はLINQだからな。#rxjs
— 生 (@babie) December 19, 2015
observeOn/subscribeOn出てきた。指定したスケジューラーのObservableを返してくれる。後者はsubscribeの中の処理の同期・非同期を切り替えたいときかな? #rxjs
— 生 (@babie) 2015, 12月 19
@bouzuya ちょうどスケジューラーの種類のとこに入ったのでナイスタイミングでした。(本ではimmediate/default/currentThreadの3つしか紹介しないっぽい)
— 生 (@babie) December 19, 2015
@bouzuya RxJS 5 は随分APIが変更されるんですねぇ
— 生 (@babie) 2015, 12月 19
@bouzuya queue/asapひどいw。もうsync/asyncでええやんと思った
— 生 (@babie) 2015, 12月 19
@bouzuya まだその2つの詳細読んでなかった。てへ
— 生 (@babie) 2015, 12月 19
Bacon.jsは遅いって記事があったな。Most.jsは速いんかな。
— 生 (@babie) 2015, 12月 19
most.js、パフォーマンスに気を使ってるっぽい。リポジトリにパフォーマンステストが入っている。
most/test/perf at master · cujojs/most: https://t.co/t4T86TXrec
— 生 (@babie) 2015, 12月 19
cycle-coreもcycle-domもRxへの依存少ないからmost.jsに切り替えたやつでワンチャンあるでと思った
— 生 (@babie) 2015, 12月 19
RxJSより良さそう。
cujojs/most: https://t.co/lWHcfPwLqB
— 生 (@babie) 2015, 12月 19
most.jsのmostはMOnadic STreamの略らしいです。
— 生 (@babie) 2015, 12月 19
モッ、モナー
— 生 (@babie) 2015, 12月 19
cycle.jsのmost.jsバージョン、cycle.jsの公式がやってた。ワンチャンなかった。
motorcyclejs/core: https://t.co/EAK16qkAi9
— 生 (@babie) 2015, 12月 19
motorcycle.js、todomvcリポジトリが23時間前に作られたぐらい熱々だった。
motorcyclejs/todomvc: https://t.co/Lz9fkB0AB3
— 生 (@babie) December 19, 2015
ついついmost.jsのAPIドキュメントを見入ってしまった。小一時間で読める分量なのがいいね!
most/api.md at master · cujojs/most: https://t.co/fSvq5j2tXc
— 生 (@babie) December 19, 2015