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

リンク
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

goでぐるぐるまわしてみた

forで10億回まわすだけみたいのをC言語と比較してみた。
実行は5回。(Ubuntu Linux 9.04 2.6.28-16-generic i686)
なんと平均でgoの方が2.6倍くらい速かった。

平均 min max
go real 1.711 1.097 2.228
user 1.312 1.084 1.524
sys 0.002 0.000 0.012
C real 4.442 3.776 4.703
user 2.828 2.612 3.120
sys 0.001 0.000 0.004

(単位:秒)


まあ、C(gcc)は最適化したら一瞬で終わったのであれだが、
とりあえずgoはかなり速いらしい。
コンパイルは8g,8lで行った。


あとgoは実行ファイルがかなり大きめになった。

$ ls -l c/for3c gotest/for1go 
-rwxr-xr-x 1 **** ****  9112 Nov 18 00:52 c/for3c
-rwxr-xr-x 1 **** **** 68432 Nov 18 00:44 gotest/for1go

でfileしてみたが既にstripされてるらしい。

$ file gotest/for1go
gotest/for1go: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), stripped