2012-05-10
■ [ruby] ズッ友のソーシャルグラフ
メロスゎ走った…… セリヌンティウスがまってる…… でも……もぅつかれちゃった…でも…… あきらめるのょくなぃって…… メロスゎ……ぉもって……がんばった……でも……ネイル…われて……イタイょ……ゴメン……まにあわなかった……でも……メロスとセリヌンゎ……ズッ友だょ……!!
[拡散性ズッ友メロス - Togetterより引用]
最近Twitterでこのようなコピペが流行しているので、Twitterを「ズッ友」で検索して「AとBはズッ友だょ」のA及びBを抜き出し、graphvizでグラフにしてみた。
その結果が…これだ!

UTCで5月9日に該当する24時間のツイート、実に81105個。「ズッ友」だけでこれなんだから日本人はTwitterやりすぎである。
ソースと拡大画像: https://gist.github.com/2651392
分かったこと
- メロスとセリヌンの例を含め、一部の例外を除いて一方的にズッ友関係を宣言するケースがほとんどである
2012-04-21
■ [book] 『インターネットのカタチ』
「Geekなぺーじ」でおなじみのあきみちさんによる共著。誰もが知ってるが誰も全体を知らない「インターネット」というものを、いろいろな角度から眺めていく本。
あきみちさんがどこかで「物理層の話が一番食いつきがいい」みたいなことを書かれてた気がするけど、面白いから仕方ないですね。アルゼンチンやウルグアイのWebサイトも一瞬で表示される現代だけど、 それは魔法じゃなくて、実際に一本の線が地球の反対側まで繋がってるんだなぁという。(参考:http://www.submarinecablemap.com/ )
インターネットのカタチ―もろさが織り成す粘り強い世界―(あきみち/空閑 洋平)
以下メモ。
1. 壊れやすくて粘り強い
2. ネットワークのネットワーク
- p.17 インターネットの全体像を100.0%把握している人はこの世にいない。"何をもって「完全に止まった」と定義するかも難しそうです"
3. 仕様のデバッグ
4. 「名前」を巡る変化
- p.93 http://例え.テスト/
5. 物理的に切れた!
- p.101 "台湾周辺には非常に多くの光海底ケーブルが集中しています。中国と台湾の間の海は深さが足りないので、光海底ケーブル敷設には向きません。"
- p.107 インターネットに大きな障害があると「テロで光ケーブルが切断されたのではないか」という陰謀論が盛り上がったりするが、光ケーブルの切断は日常的に起きている (バックアップ回線のおかげで通常は気づかずに済んでいる)
- p.118 "[176]によると、地球温暖化によって漁業活動が行われる海域が変化していることも光海底ケーブル切断危機の要因として述べられています。"
- p.119 "光海底ケーブルは、光ファイバケーブルだけで構成されているわけではありません。光信号が光ファイバケーブルを通ると減衰するため、一定の距離ごとに光増幅中継器が必要になります。"
- p.123 "実は伝書鳩通信はイメージほど遅いわけではありません。日本でも、距離によってはADSLくらいの回線であれば勝つ場合があります。"
- p.131 衛星回線ならケーブル切断の恐れはない…と思いきや、通信衛星が軍事衛星と衝突するという事故が実際にあったりする
6. インターネットと国境
7. インターネットの大渋滞
- p.162 "電波に乗ったテレビ放送や衛星放送であれば、不特定多数の人々が同時に視聴しても配信側への影響はありませんが、Webの通信は不特定多数の人々が同じ瞬間に集中してアクセスすることに強いとはいえません。"
8. 論理的な通信の密集地帯
9. おわりに
2012-04-05
2012-04-01
■ [ruby] NHKのテレビ取材を受けました
弊社にもテレビカメラが入って、前田さんがEnumerator::Lazyの話をするシーンとかを撮っていかれました。
カメラが回ってると、なんとなく意識してしまいますね(笑)
■ [ruby][javascript] TANITAの体重計の出力をJSでグラフにした
「体重計の出力」って何だよと思われるかもしれませんが、SDカードにCSVでデータを記録してくれる体脂肪計というのがあるんです。
TANITA 【SDカード搭載】 & 【乗った人をピタリと当てる「乗るピタ機能」搭載】 体組成計 インナースキャン グリーン BC-569-GR
最上位機種だと無線LAN対応らしいけど、まあそこまででなくていいかなと。
実装
JSのライブラリについては、「javascript graph」で検索して、データ可視化のためのグラフ描画JavaScriptライブラリ20選 から適当にdygraphs JavaScript Visualization Libraryを選んだ。
サーバ側はRuby+Sinatra+Slim。
ソース
githubに置くまでもない気がしたので、gistに置いてみた。
「$ git clone git://gist.github.com/2310012.git」でまとめてダウンロードできます。
gistの各エントリは実は一つのgitリポジトリなので、「$ git remote add origin git@gist.github.com:2310012.git」とかすれば普通にpush/pullすることで、普段githubを使うのと同じワークフローでgistを更新できる。画面に全ファイルの中身が表示されるので、ファイル量が多いものには不向きだけど。
サンプル

2012-03-27
■ [javascript] Source MapはBiwaSchemeで使えるかと思ったがそうでもなかった
- 圧縮後のJavaScriptやコンパイル後のCoffeeScriptでも、ブラウザ上で元のソースを参照できる新技術「Source Maps」登場 − Publickey
- Introduction to JavaScript Source Maps - HTML5 Rocks
- Source Map Revision 3 Proposal - Google ドキュメント
最近はJavaScriptを書く代わりにCoffeeScriptを書いて生成させたり、そうでなくても複数のJSファイルを結合して圧縮するなんてことはよく行われている。 このとき問題になるのが、「エラーが起きたときに元ファイルのどこなのか分からなくてデバッグが大変」ということだ。
Source Mapはこの問題を解決するために検討されている案だ。元ファイルと生成ファイルをもとに「Source Map」と呼ばれるJSONデータを用意することで、 実行時エラーが発生した際に、発生箇所である生成ファイルのn行目が元のどのファイルの何行目なのかを表示できるようにするらしい。
この対応づけは結構大きくなりそうだが、データ形式を工夫することで元ファイルの2.5倍程度に抑えられるとのこと。
で、BiwaSchemeで使えるかなと思ってたんだけど、CoffeeScriptのように行単位でJSと対応づけられるものならともかく、 BiwaSchemeのようにJS上で完全に別の言語を実装するようなものにはあまり役に立たなさそうだということが分かった。
■ [ruby] rrのany_instance_ofとnew_instance_of
- rrはRubyでモックやスタブなどのTest Doubleを扱うためのライブラリである
- new_instance_of(C)はこれから作られるCのインスタンスを扱う。any_instance_of(C)は既に作られているCのインスタンスも含む
- が、最新版でnew_instance_ofを呼ぶとエラーになる
- とIssuesでも報告されているのが一年前
- READMEには「any_instance_ofとmockの組み合わせはうまく動かない」と書いてある
- AnyInstanceOfのソースにdeprecatedとか書いてある
- ソース全体が激しく断片化しててよく分からない
- 7ヶ月間コミットがない…
とりあえず「これから作られるCのインスタンスに限れば、any_instance_of(C)を使っても問題ないに違いない」と言い聞かせながらテストを書いている状況。
Ruby Toolboxでは(Rspec付属のを除けば)Mochaが人気のようだ。

□ wtnabe [rrの記法はとてもステキなんですけど、どうもイマイチな感じになってきてしまってますね…。どっぷり使っちゃってるんです..]