昨日の地震

地震のときは品川シーサイドの会社で、ビルが高いため長い間揺れていました。
(緊急地震速報出てなかったよね?あの地震がわからないなら結局役に立ってないような。)
最初は喜んでいるやつもいましたが、縦ゆれが何度か来た時点で僕は普通じゃないと思いました。
その時点で頭をかばったのですが、収まらないのでやばいと判断して机にもぐったりしました。
ミシミシ、パラパラという音が聞こえたためビルもダメージを受けてるなと思ったら
あとで少しひびが入って塗料が落ちているところをいくつか確認しました。
地震情報を確認して、やっぱり宮城沖で震度7だということを確認しました。


そのときは何度も余震がきて少し怖いのと、
どことどこが壊滅だとか適当なことを大きな声で笑いながら言ってる人がいるのにも耐えられなかったので、外に1時間くらい非難していました。
一緒に出た子は地元が仙台で、僕は嫁の実家が石巻
お互い現地に連絡を取れず不安を隠せませんでした。
避難命令があった会社もあるようで人がたくさんいました。
お台場の方?から煙があがってました。
エレベーターが止まっていて上まで戻るのが辛かった。。


そのあと帰っていいという連絡が来たのですが、JRが運転を止めていて帰れません。
バスもタクシーも道の異常な混雑でおそらく使えない感じでした。
JRは初動が遅すぎると思います。
なにかあったときに弱すぎて、JRが二次災害を起こしていることに気づきましょう。
しばらくどうにもできなくて夜にジャスコにいきました。
やはり会社の人がごちゃごちゃいて売り切れ続出でどこも30分待ち。
すぐに食べに行った連中は頭いいなと思いました。


で、しばらく品川シーサイドから所沢に帰る手段が見つからなかったのですが
夜になって少しずつ地下鉄が復活して、大江戸線が復活した時点で帰ろうと思いました。
新宿から練馬までいけるので。
そのあと少し様子見してると半蔵門線西武線が運転しだしたので
渋谷まで歩いてから帰ることを決意しました。



同じ方面の人3人(所沢、自由が丘、池袋方面のその日で会社最後の方もいたり)と
22時くらいに一緒に渋谷に向かいました。そのときまだ会社には同じ部署の人は10人弱くらい残っていました。
道ではとくに混乱はありませんでした。さすが日本。
車は混んでました。大崎あたりは一瞬空いてました。
同じような人が数人いて、抜きつ抜かれつして進む程度でした。


30分程歩いたくらいで嫁から連絡があり、親戚が両親と連絡が取れたとの連絡があり喜びました。
それから少しして電話の電池が切れました。危なかった。買い換えようかな。。
1時間ほど歩いて大崎の手前で巨大な集団とすれ違いました。どこかの僕らとは関係ない駅に向かってる集団のようでした。
僕らが大崎を過ぎた、あたりでだんだん人が増えて車も異常に増えてきました。
途中長い上りがきつかったんですが(五反田あたりだったかな?)、
出てから1時間半程で目黒について、南北線が動いていて、駅員は東西線有楽町線も動いている情報はないと言ってたけどTwitterで動いていることが確認できていたので、渋谷に向かう一人とは別れて南北線に乗りました。


Twitterすげーっす。情報が一番速くて当事者がつぶやくのである程度信用できます。マスコミよりいいかもね。


南北線は1本東西線が来て、少し待ってる人が大目でしたが、座ろうと思えば座れるくらいに最初空いてました。
僕らは立ってたんですが、途中でどんどん人が乗ってきて、青山一丁目あたりからぎゅうぎゅうで、永田町でピークに達しました。
飯田橋で頑張って降りて有楽町線に乗り換え。
池袋についたときは西武線も動いている情報があったので、ゲームをクリアしたような達成感でした。
ただ、池袋には大量に人がいました。老若男女が隙間がないくらいにたくさん。
JRが動かなくて帰れない人か、池袋近辺で働いてた人だと思います。
情報があれば私鉄で帰れる人もいるんじゃないかなとも思ったりしました。
僕らは一緒に屯ちんでラーメンを食べて、池袋の人にはお世話になりましたと言って別れました。


所沢には西武池袋線が終夜運行してくれてたので問題なく帰れました。
すっごい眠かった。
家に着いたのはたしか2時半くらいでした。


ついてからテレビを見て衝撃でした。特に気仙沼の映像が。
さすがに疲れてテレビを見ながら寝てしまいました。


今はなるべく電気を使わないようにしながらTwitterで情報を探したりRTしたりしてます。

地震被災情報リンク 石巻を中心に

リンク
Google Person Finder (消息情報): 2011 日本地震http://japan.person-finder.appspot.com/


http://www.kraftwerk.jp/news/2011/03/12/262/http://www.kraftwerk.jp/news/2011/03/12/262/


「paper:plustic: 石巻とその周辺被災地 現地から発せられていると思われる情報まとめ」 http://paperplustic.blogspot.com/2011/03/blog-post.html


「みんなで仲良く石巻を語ろう53回」 http://tohoku.machi.to/bbs/read.cgi/touhoku/1298901197/l50 (3/13 06:19 追加)


「【石巻の皆がんばれ!】石巻地震津波災害情報、避難状況のまとめ」 http://blog.nexyzbb.ne.jp/rciel/ (3/13 6:57追加)


東北地方太平洋沖地震 | Hang in there TOHOKU」 http://www.geocities.jp/saveeq311/ (3/14 17:28追加)


Picasa ウェブ アルバム - Google Japan」(避難者リスト) http://picasaweb.google.com/tohoku.anpi (3/15 2:29追加)


現地のアカウント
(殺到すると良くないので彼らに直接質問したりするのはなるべくやめてください。)


宮城県石巻市
@ 石巻出身の在京の方(3/13 06:19 追加)
@ (3/15 2:08追加)
@ (3/15 2:08追加)
@ (3/15 2:08追加)
@ (3/15 2:08追加)
@ (3/15 2:08追加)
@ (3/15 2:08追加)
@ (3/15 2:08追加)
@ (3/15 2:08追加)
@ (3/13 06:19 追加)不明?繋がらない
@ (3/16 0:20追加)
石巻
@ 佐々木輝さん (3/13 6:57追加)
宮城県石巻市蛇田
@ 石森洋史さん? (3/13 06:19 追加)
@ (3/13 06:19 追加)
宮城県石巻市千石町
@ (3/13 06:19 追加)


宮城県東松島
@ (3/13 06:19 追加)


宮城県大崎市
@ (3/13 06:19 追加)


宮城県仙台青葉区
@ (3/13 06:19 追加)
@ (3/13 06:19 追加)


仙台
@ (3/13 6:57追加)
@ 東北放送ラジオのひろぽんさん(3/13 7:04追加)
@ (3/15 2:08追加)


石巻→仙台
@ (3/15 2:08追加)


塩竈市
@ (3/15 2:08追加)


場所不明
@ (3/13 7:16追加)


放射線モニタ結果
高エネルギー加速器研究機構(KEK)の一宮さんが立ち上げられた、放射線モニターデータのまとめページ(情報を俯瞰できる)
「radmonitor311」 https://sites.google.com/site/radmonitor311/home


経済産業省のモニタ結果
「報道発表(METI/経済産業省)」 http://www.meti.go.jp/press/


関東のモニタ結果
文部科学省ホームページ」 http://www.mext.go.jp/

単純ファイル集計の各言語ベンチマーク


いろんな言語でファイルを単純に集計するという処理のベンチマークをとってみました。


処理はタブ区切りのkey-valueの羅列のファイルからkeyごとにvalueを合計するというモノ。
但し家で環境もないのでだいたいcygwinの結果です。
Javaだけ素で動くからちょっと有利な結果になってるのかも。

Language Version Src[Byte] Src[line] 100000行[s] 1000000行[s] 10000000行[s]
gawk 3.1.6(cygwin) 108 9 0.229 1.634 15.552
Python 2.5.2(cygwin) 277 12 0.634 4.644 47.492
Java 1.6.0_22-b04 1046 24 0.83 7.027 46.492
Perl v5.10.0(cygwin) 141 8 1.395 12.755 129.764
Ruby 1.8.7(cygwin) 243 14 1.928 19.656 192.643


<グラフとか追加したい>


単純処理はgawkが速いようです。(一般的にはあまり言語と思われてないのかな?)
件数がもうちょっと行くと、おそらくJavaPythonに勝ちそうです。
※だいぶUpdateしてないのでバージョン古めかもしれません。ck使えなくなると嫌なので


ソースの量も比較したかったので、けっこう詰めて端折って書いています。## マネしないでね
以下、ソース。



gawk

#!/usr/bin/awk -f
{
    total[$1]+=$2
}
END{
    for(key in total){
        print key"\t"total[key]
    }
}


Perl

#!/usr/bin/perl
while(<>){
    @rec = split();
    $table{$rec[0]} += $rec[1];
}
for $key(keys(%table)){
    print "$key\t$table{$key}\n";
}


Python

#!/usr/bin/env python
import sys
total={}
for line in open(sys.argv[1], 'r'):
    items=line[:-1].split('\t')
    if items[0] in total:
        total[items[0]]+=int(items[1])
    else:
        total[items[0]]=int(items[1])

for key in total:
    print key+"\t"+str(total[key])


Ruby1.8

#!/usr/bin/ruby
total={}
while a=gets
    a.chomp!
    b=a.split("\t")
    if total[b[0]]==nil
        total[b[0]]=b[1].to_i
    else
        total[b[0]]+=b[1].to_i
    end
end
for key in total.keys
    print key+"\t"+total[key].to_s+"\n"
end


Java

package sample;
import java.io.BufferedReader;
import java.io.File;
import java.util.HashMap;
public class SimpleSum {
    public static void main(String[] args) {
        try {
            BufferedReader reader = new BufferedReader(new java.io.FileReader(new File(args[0])));
            java.util.Map<String, Integer> map = new HashMap<String, Integer>();
            String line;
            while ((line = reader.readLine()) != null) {
                String[] record = line.split("\t");
                int val = Integer.parseInt(record[1]);
                map.put(record[0], map.containsKey(record[0])?map.get(record[0])+val:val);
            }
            for (String key : map.keySet()) {
                System.out.print(key + "\t" + map.get(key) + "\n");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

# 今見ると直せるところいっぱいあるな。。今度直して計りなおしたい。正規表現系とかも。

タイトル・URLコピー系ブックマークレット

「タイトル」 URL(短縮しない)表示ブックマークレット

  • 「タイトル」 URL(短縮しない) をpromptで表示します。
javascript:var x=prompt('Copy this!','「' document.title '」 ' location.href);

「タイトル」 URL(bit.ly短縮)表示ブックマークレット

直接webのtwitterに投稿するブックマークレット。これがないとたぶんできなかった。
2010-03-07 - notes plastiques


僕は直接投稿じゃなくてコピーしたいのでちょっと改変してみました。

利用にはbitlyアカウントが必要ですので「http://bit.ly」でアカウントを作成してください。当然ながらtwitterアカウントも必要です。

そしたら

でbitlyのAPIkeyを取得してくだしあ。


注意!このブックマークレットの"http://bit.ly/javascript-api.js?version=latest&login=bitlyapidemo&apiKey=R_0da49e0a9118ff35f52f629d2d71bf07"のlogin=〜とapiKey=〜の部分は先程取得しましたbitlyのapikeyに書き換えてください!

javascript:var%20JSLoader=function(options){var%20options=options||{};this.pointer=0;this.finish=options.finish||function(){};this.append=options.append||null;this.queue={length:0,list:[],push:function(arg){this.list.push(arg);this.length++;}};return%20this;};JSLoader.prototype={next:function(){var%20self=this;var%20loader=new%20JSLoader({append:self.append,finish:function(){self._next();}});var%20args=[];for(var%20i=0,l=arguments.length;i<l;i++){loader.assign(arguments[i]);}self.assign(function(){loader.run();});return%20this;},_next:function(){var%20func=this.queue.list[this.pointer++];if(func){func();}},assign:function(arg){var%20self=this;switch(typeof%20arg){case'string':this.queue.push(function(){self.load(arg,{append:self.append,onload:function(){self.report();}});});break;case'function':this.queue.push(function(){arg();self.report();});break;}},report:function(){this.queue.length--;if(this.queue.length==0){this.finish();}},start:function(){this._next();},run:function(){for(var%20i=0,l=this.queue.length;i<l;i++){this.queue.list[i]();}},load:function(src,options){var%20options=options||{};var%20element=options.append||document.body||document.documentElement;var%20script=document.createElement('script');script.src=src;script.type=options.type||'text/javascript';script.onload=options.onload||function(){};if(options.charset)script.charset=options.charset;if(document.all){script.onreadystatechange=function(){switch(script.readyState){case'complete':case'loaded':script.onload();break;}};}element.appendChild(script);}};function%20responder(data){var%20s='';var%20first_result;for(var%20r%20in%20data.results){first_result=data.results[r];break;}var%20x=prompt('Copy%20this!','%E3%80%8C'+document.title+'%E3%80%8D%20'+first_result["shortUrl"].toString());}new%20JSLoader().next('http://bit.ly/javascript-api.js?version=latest&login=bitlyapidemo&apiKey=R_0da49e0a9118ff35f52f629d2d71bf07').next(function(){BitlyClient.shorten(location.href,"responder");}).start();

第7回 データマイニング+WEB 勉強会@東京 資料まとめ

第7回 データマイニング+WEB 勉強会@東京 (Tokyo.Webmining #7) −機械学習・解析・セマンティックウェブ祭り− http://atnd.org/events/8164
ハッシュタグ: #TokyoWebmining http://search.twitter.com/search?q=%23TokyoWebmining
togetter第7回データマイニング+WEB 勉強会@東京 ( #TokyoWebmining #7 ) -機械学習・解析・セマンティックウェブ祭り- - Togetterまとめ


かなり面白かった。
部外者ですが資料まとめてみました。


↓正式なまとめはコチラ
第7回 データマイニング+WEB 勉強会@東京 ( #TokyoWebmining #7) −機械学習・解析・セマンティックウェブ祭り−を開催しました - hamadakoichi blog


O1.“Openinig Talk” (10分)
O2.“参加者全員自己紹介” (30分)

  • 「GAを用いた最適化の応用例:シミュレータ上のロボットの運動学習と体構造の進化」 (発表10分 + 議論10分)
  • 「ソーシャルアプリでの Amazon Elastic MapReduce 活用事例」(発表15分+議論15分)

twitterアプリを開発中

とりあえずJavaで。twitter4Jを使ってみてる。
Twitter4J - A Java library for the Twitter API


まず、コード例がほとんどベーシック認証くさいのでOAuthから攻める。
OAuthがかなりめんどくさいが、とりあえず投稿できるようになった。


だいたいここ(Twitter4J - コード例)のOAuthの例にある通りだが、
・最初はまずアプリをtwitterに登録して、
・consumerKey, consumerSecretが貰えるので、
・そいつをexampleにあるOAuthUpdate.javaに渡して実行して、
・出てくるURLにアクセスすると
・PINコードが出てくるので、
・そいつを打ち込むとOK


PINコードを使いまわすときはこんな感じでやるのが乙らしい(ヘルプ通りだとdeprecated になっちゃってるので)。

Twitter twitter = new TwitterFactory().getOAuthAuthorizedInstance(consumerKey, consumerSecret, new AccessToken(token, tokenSecret));
Status status = twitter.updateStatus("JavaからのOAuthテスト[thanx @tocci3]");
System.out.println("Successfully updated the status to [" + status.getText() + "].");

token, tokenSecretはOAuthUpdate.javaを実行すればだいたいわかるはず。


ここが参考になったけどAccessTokenHelperはよくわからず。
http://groups.google.com/group/twitter4j/browse_thread/thread/8128cc95d6861aa9


あとはこいつを使いまわすのみ。

[python][ad-es]ad-esにpython入れてみました
倒産しても好きなものは好きだっ
ということでad-esにpython入れてみました。


Python Windows CE port download | SourceForge.net
Pythonのページからたどり着けました。
わかりにくいですが Download Now! ではなく View all files から PythonCE-25-20061219.PPC2003_ARM.CAB ちゅうので入りました。
(ad-es operaだと白くなったりするのでリロードしたりして。)


ad-esでかりかりコードが書けたらいいなあ。


あとwilcomさん、僕が望んでるのはWS011SHのようなキーを押すタイプの機種です。
このまま変な機種出さずにそのままワンセグつけたりバージョンアップしてくれてたらもっと売れたと思いますよ。
つかシャープの問題なのかな。
あと画面はもうちと広い方がいいかな。
そういうの、他の会社でもいいから出してほしいw