LDRがなくなるとのことがなくなったけど俺用フィードリーダー作った
mizchiさん(LDRがなくなるとのことで俺用フィードリーダー作った - mizchi's blog)のパクリです。はい。
実際LDRがなくなると、いずれは他のフィードリーダーも終わっていくんじゃないの? という不安がある。
なので、ローカルで動くものを持っておくのも仕方がないことなのかもしれないとモヤモヤしていたところで、mizchiさんのオレオレフィードリーダーが出てきた。
ごちゃごちゃ悩んでないでとりあえず作るべき。
パクる
LDRに準拠したキーバインドとかマウス操作に対応させないとか、僕にとって重要でパクれるところはパクった。
既読管理の方法は違っていて、インメモリではなくleveldbにアウトソースしてる(下記参照)
ブラウザ上では未読/既読の管理はしてない
localStorageではLDRでいうところのピンのような機能を持たせることに。npmライブラリの localstorage-down 使ってみた。
localstorage-down は ユーザが触れるapiのところがleveldbのapiと同じlevelupを使うのでバックエンドとフロントエンドで同じapiでいい感じ。
leveldbはポータブルに使えるので今回の要件にはマッチしてたので使ってみた。
実装の方針
opmlファイルの読み込みからフィードエントリーをクライアントへ届けるまでStreamのパイプで直列化できるんじゃないの? という発想から後先考えずに mkdir -p feedr/{lib,node_modules,t} したので、ストリームインターフェイスのモジュールを書く。機能毎に小分けにしたストリームを書く。
Streamについて
わりと手間がかかる
でもStream1より実装者がコードを書く量が少ないのはいい
.onpipe時にwritableに例外が投げられると.unpipeされるので例外処理重要!