とある事情でブラウザ上のデータの一部を expire したくなった。イメージとしては cookie の expire みたいなものなんだけど cookie でサーバに送る必要もないし、数が増える可能性があるので localStorage でやりたい。
まず、基本を調べてみると
- cookie は「localhostのcookieをブラウザの機能を使わずにクリアしたくてRFC 6265を勉強したけど無理だった - あーありがち(2016-10-02)」で調べたけど、name=value が基本で、 value の中に文字列で expires を指定することができるが、例えば value が構造を持ったデータだとしたらその中の一部だけ expire するといったことは標準の機能では不可能
- いくつもデータを持ちたい場合は cookie の数が増えてあまり面白くない1
- localStorage には expire の仕組みはない
- sessionStorage は page を開いてから閉じるまでの寿命なので再訪した場合には残っていない
ということになっている。
あれこれ探してみたけど、扱いやすそうなのは
かな。あと見つけたのは
- pamelafox/lscache: A localStorage-based memcache-inspired client-side caching library.
- Radyushin/vue-localstorage
で、有名っぽそうに見える
にはそういう API はなかった。
なるほど。需要がないとはあんまり思わないんだけど、JS は Model 周りがまだまだ弱いのか、自分の探し方が悪いのか。とりあえず localstorage-ttl 試してみようかな。
昨今のブラウザでは気にする必要ないんだっけ? ↩
今さらだけど今年は
- Twitter 以外の follow を増やす
- 具体的にまずは github と slideshare で増やす
ということをなんかどこかで思ったような気がしていて、その流れでなんとなく Twitter の API を眺めていたのが 1/4 の話。
18:13:38 followeeが持ってる他のサービスのアカウントを効率的に集める方法
ないかな
18:29:51 Streaming API と User Streams ってベツモノなのか。そんなことす
ら知らない。
21:14:54 昔と違ってfollowerを200ずつしか取得できないとかないんだな
21:16:08 でもidしか取れないし、これ全部screen_nameと照合させようとする
とひどいことになるな
21:36:53 対応表作るには認証は要らないのか。鍵垢でもアカウント情報だけな
ら取得できる。あとはこれを保存しつつ適当なタイミングで動かすと
diffも出せるな。そこまでやるかどうか分かんないけど。
この時点で followee で考えていたものを認証が面倒くさいので follower に変更したらしい。
で、実際に書いたのが昨日。よく考えると金曜の夜のタリーズで何してるんだろう、おれ。
wtnabe/twitter2github - GitHub
github の方の API の確認はたぶん前日に小一時間やって、ざっと調査で1〜2時間くらい。で、コード書くのに2時間半くらい、なんだかんだ整えて github に上げるのに 2時間くらい、かなぁ。README 書くのって時間掛かる。もっとなんでも速く書けるようになりたい。
これ使って手動で github で follow しまくったので、github の dashboard がオレだらけになったみなさんごめんなさい。follow 返しお待ちしております。(引くくらい反響ないっす。ははは。)
特徴
- Twitter も github も認証を要求しない
- github のアカウントを一つ一つ確認するので結構時間掛かる
使い方
$ git clone git://github.com/wtnabe/twitter2github.git
$ cd twitter2github
$ bundle install
$ bundle exec ./bin/twitter2github -u TWITTER_USER > TWITTER_USER.csv
考えてないこと
- follower が多すぎていっぺんに取得できなかった場合
- 自分のアカウントでテストして ok だったけど 1000 くらいに壁がありそうな気がする
- follower が多すぎて github の 5000 reqs/hour の制限を超えてしまった場合
基本的な流れ
- TIG から tig.rb に移行しようと思い立った
- tig.rb が先日の DNS 障害の件を受けて SSL の証明書をちゃんと検証するようになった
- 自宅サーバの FreeBSD 上の Ruby で CA証明書が認識されておらず、結果 twitter.com のサーバ証明書を検証できずにコケていた。
tig.rb のアップデート - 冬通りに消え行く制服ガールは、夢物語にリアルを求めない。 - subtech
を読む前にハマってました><
だらだらと言い訳
- 本番と検証で3種類のRubyを使っていた
- ports ( Ruby 1.8.7 ) on FreeBSD
- MacPorts ( Ruby 1.8.7 ) on MacOSX
- Fink ( Ruby 1.8.6 ) on MacOSX
- ports のものだけ証明書がインストールできてなかった
- たまたま ports のものだけ tiarra と組み合わせていたので tiarra にあらぬ疑い
- ここでしばらくハマる
- 最終的には RFC と tig.rb の中身を読んで tiarra を除外、エラーメッセージを検索して Net::HTTP に矛先が
最初はバグを疑った。
14:25:09 >wtnabe< http://bit.ly/4tHhtN この patch 適用したら
OpenSSL::SSL::SSLError 例外に出会えた。
- Twitter / wtnabe: http://bit.ly/4tHhtN この pa …
- Bug#564168: net/http.rb: Error on page fetch exception (regression) - linux.debian.bugs.dist | Google グループ
このパッチを当ててみた。すると OpenSSL 周りの例外が出てきたので、とにかく SSL の問題だということで落ち着く。tig.rb を読むと SSL の verify_mode をセットしている部分があったので試しにこれを外してみたら動いた。
Twitter / wtnabe: さっきのパッチ当てた状態で tig.rb を htt …
14:38:26 >wtnabe<さっきのパッチ当てた状態で tig.rb を
http://gist.github.com/276924 こうしたら動いた。ここまできて残りは証明
書か。とりあえず tiarra のせいでもなんでもなかった。
Twitter / wtnabe: net/http を元に戻しても動いた。ということで …
net/http を元に戻しても動いた。ということで openssl で使う証明書の問題
だった。もしくは tig.rb で証明書をまともにチェックしないようにしちゃう
か、どっちか。
この状態で Net::HTTP を元に戻してみたがやはり正常に動作した。ということは本当に単なる SSL の問題。
その後、
Twitter / : @wtnabe tig.rb動かしてるのがFreeB …
18:18:54 <otsune> @wtnabe tig.rb動かしてるのがFreeBSDだったので
security/ca_root_nssいれた
と @otsune に情報をいただいたので、security/ca_root_nss を入れたけど、うまく動かず。最終的にはインストールされていたパスの問題で、
Twitter / wtnabe: VERIFY_PEER でも /usr/local/ …
00:05:34 >wtnabe< VERIFY_PEER でも /usr/local/openssl/cert.pem@ ->
/usr/local/share/cert/ca-root-nss.crt の link で動いたっぽい。
ということで tig.rb を元に戻して link 張って解決。長かった!
結局、インストールしていた証明書を正しく認識していなかっただけ。でも Net::HTTP のエラーの出方も分かりにくいよねぇ?
ちなみに他にもハマっていた人が。
Twitter / Yugui (Yuki Sonoda): このRubyはどのOpenSSLとリンクされるんだー …
※ Ruby 1.9 の方は Ruby 1.9 - Feature #2579: Net::HTTP.start("www.ruby-lang.org", use_ssl: true) で SSL 利用を可能に - Ruby Issue Tracking System で証明書の検証をデフォルトで行うようになる新 API が入りました。
残り関連のログをコピペ。
2010-01-15:12:05:40 @yugui favられてたのでちょっとまとめる時間を端折っ
てお伝えしますと、RubyのNet::HTTP.new()はSSLの検証に失敗したときに
@socketがnilのままになるんだけど、考慮されてないパターンがあるという問
題でした。
http://groups.google.co.jp/group/linux.debian.bugs.dist/browse_thread/thread/27dae518c1c5d617
2010-01-15:12:19:11 @yugui SSLの検証失敗をどうやって知るのか、という意
味では.request()がnil.closed?()になってしまうとか、あるいはinspectした
ときのopen=falseだけだとちょっと分かりにくいかなとは思います。
「Mac miniはお買い得」は本当か (CNET Japan)
これ書いてる時点で TrackBack でも触れられている記事がなさげなので触れておくと、なんで今のレートで $500 マシンが 6万になるの?ってのが素朴な疑問でしょうよ。なんでこれみんな気にならないんだろう。5万で売ってよ。
あと、価格対性能比で話をずんずん進めちゃうのもどうなんだろうなぁ、と。だっていくらオプション積んだって市販 PC が Mac mini 並みに小さくなることってないし、逆に自作してこのサイズである程度性能を出そうと頑張ると、結構大変ですよ。
普通の人ってそんなに価格対性能比なんて気にするもんかなぁ。仕事に必要だから安いものの中から選びますとかっていうんなら別だけど、自分のモノを自分のカネで買うときは財布と所有欲が対決するだけだと思うんだけど。まぁ個人的には正直ほしいけど、SONY と同じで Apple のハツモノに手を出す度胸はない。
ただこれ、U2 バージョン出ないの? 日本限定で U2 バージョン出すといいと思うんですよ。そう、テーマは重箱。2台以上限定販売です。
2 に無理矢理こじつけて Mac mini 1台の値段で2本買える MIFES 7。標準価格3万、バージョンアップで1万するのにエディタっていうのはイマドキどうなんだーと思うんですが。まぁエディタは確かに重要ですけどね。MIFES にこだわる理由がないと思うんだな。それこそ価格対性能比で考えたらフリーのでいいじゃんとか思うわけで。
Help Test mod_perl 2 Release Candidates (slashdot.org)
えー知らなかった。数週間でリリースになりそうってことだそうです。
っていうフォームの項目が HTML で作れたら楽なのに。
なんのこっちゃ分かりませんね。
いえね、わたしゃ去年の冬(2002-02?)くらいから Zope というシステムに大変興味を持っているのです。ところが、最初かじってみたときは Management Interface をちょっといじって、ほうほう、と思って、そこまでで挫折していたのです。よく分からんな、と。というか「なんだかすごそう」とは思うけど「具体的な使い方が想像つかない」状態でした。あと、なんとなくPython がいや、とか(笑)
それが、ここ最近の DAV とバージョン管理の話でふと思い出したのです。Zope の ZODB は自動的に履歴情報を残してくれるし、Zope は標準で DAV サーバじゃん、て。
そうです。Zope をコンテンツマネジメントだけで利用したらええんちゃうの、ということです。もちろん問題はあります。Zope に放り込んだデータを「実際のファイルに起こさないと」Apache だけで運用しているサイトには使えません。ZODB が更新されたら自動的にファイルを起こす仕掛けがあればいいんですが、そんなもの作ってる人はいないか。フツー、ZODB だけ利用する人なんていないし、ZODB だけ利用したいならわざわざ ZServer 経由にすらする必要がない。(おまけに ZODB 自身は信頼性の高さとかスピードとか求める場合には向いていない。)
でも、アイディアとしては悪くないような。これなら各ユーザーに CVS の使い方を教えることなく、ssh port forwading なんかを教えることなく、変更履歴の残る編集をセキュアに行えるじゃないですか。(本格的なバージョン管理システムほどの機能や使い勝手は求めませんよ、もちろん。)
いや、僕はファンの方々にはとても感謝しているよ。ほとんどの人はとてもいい人なんだ。でもごく一部にはとても変わった人がいてね…
なんて当然人間の話じゃーなくて。冷却ファンです。岡持ベアボーンを一つ動かしたのですがね、これがけっこううるさいんですよね。普段ノートと古いデスクトップしかフツーの家ではいじっていなかったので、最近のマシンのうるささがよく分かっていませんでした。これはうるさい。
というわけでこんなの見つけました。これ簡単でいいかも。ベアボーンでも十分使えるくらい小さいし。