2011年3月14日月曜日

googleで地名から緯度経度を取得

$  curl "http://maps.google.com/maps/geo?q=千代田区外神田"
{
  "name": "千代田区外神田",
  "Status": {
    "code": 200,
    "request": "geocode"
  },
  "Placemark": [ {
    "id": "p1",
    "address": "Japan, Tokyo Chiyoda外神田",
    "AddressDetails": {
   "Accuracy" : 4,
   "Country" : {
      "AdministrativeArea" : {
         "AdministrativeAreaName" : "東京都",
         "Locality" : {
            "DependentLocality" : {
               "DependentLocalityName" : "外神田"
            },
            "LocalityName" : "千代田区"
         }
      },
      "CountryName" : "日本",
      "CountryNameCode" : "JP"
   }
},
    "ExtendedData": {
      "LatLonBox": {
        "north": 35.7100074,
        "south": 35.6918852,
        "east": 139.7856097,
        "west": 139.7215803
      }
    },
    "Point": {
      "coordinates": [ 139.7535951, 35.6940027, 0 ]
    }
  } ]
}

2011年3月11日金曜日

hadoop side effect file

hadoopではファイルを正式なアウトプットの他に作ることができる。 getWorkOutputPath を使う。ディレクトリは正式なアウトプットの出力先と同じなので注意。
 public static class R1 extends
 Reducer {
  public void reduce(Text key, Iterable values,
  Context context) throws IOException, InterruptedException {
   context.write(key, values.iterator().next());
   Path path = FileOutputFormat.getWorkOutputPath(context); 
   Path fpath = new Path(path, "sidefile" + key.toString());  
    OutputStream os = fpath.getFileSystem(context.getConfiguration()).create(fpath);
   PrintWriter pw = new PrintWriter(new OutputStreamWriter(os));
   pw.println("hello");
   pw.flush();
   pw.close();
   os.close();
  }
 }

2011年3月9日水曜日

Hadoop job 管理

ps 相当
> hadoop job -list
kill
> hadoop job -kill xxxxxxxx

2011年3月8日火曜日

screen

設定

デフォルトだとC-aがエスケープなのだけど、emacsとコンフリクトするのでC-zに設定し直す。下記を~/.screenrc に。
escape ^z^z

デタッチ と アタッチ

C-z d でデタッチ。screen -ls で確認すると、セッションが見える。 >|| $ screen -ls There is a screen on: 6398.pts-11.xxxx (Detached) 1 Socket in /var/run/screen/S-xxxx. ||< screen -r でアタッチ。複数のセッションがある場合には先頭のpts番号(この場合は6398)を指定。

仮想画面

  • C-z c で仮想画面追加
  • C-z w で仮想画面のリストを最下段に表示
  • C-z 番号 でその番号の仮想画面に移動。
  • C-z space で順番に仮想画面を移動。
  • C-z n, C-z p で前後に移動。 nはspace と同じ。

コピーモード

screen ではスクロールをscreenが処理してるので端末のスクロールバーが使えない。面倒。 そのかわりコピーモードというのがあってそれで過去のログをみることができる。 C-z [ でコピーモードに入る。エスケープで抜ける。

2011年2月4日金曜日

hadoop でjava のserializableを受け渡すには

何らかの方法でシリアライズするわけだが、hadoop はデフォルトではJavaのシリアライズではなく 独自のシリアライザを使うようになっている。これはJavaのシリアライズが重いため、だそうだ。

しかしもちろんシリアライザの実装を変更することができ、Javaのシリアライザを使うように 指定することもできる。それには、こうする。

Configuration conf = new Configuration();
conf.set("io.serializations", 
  org.apache.hadoop.io.serializer.JavaSerialization.class.getName() + "," +
  org.apache.hadoop.io.serializer.WritableSerialization.class.getName());
要するにSerialization クラスをカンマで区切って、 io.serializations にセットするのだけど、JavaSerialization だけだと、Textとかが デコードできなくなっちゃうので、デフォルトのWritableSerialization も書いておくこと。

2011年1月18日火曜日

mac os JISキーボードをUS配列で

これまで、JISキーボードをUS配列で使うために、 こちらの JANSIマップというのを使っていた。 これは、キーマップを追加するもので、 日本語入力とUS入力の他にJANSIマップをつかって入力する形になる。 これはこれでいいのだけど、日本語入力では結局JIS配列になるし、気がついたら USになっていたりして、発狂寸前。

ということで、別の方法を模索したところ、Emacs bind化にもつかえる KeyRemap4MacBookで出来ることが判明 さらに、スペースとコマンドキーの間にあってウザかった「英数」キーをコマンドキーに変えたので 大変に快適に! ありがたいことだ。

2010年11月29日月曜日

frameset と bodyタグ

いままで見えていたフレームが見えなくなったので調査。原因はChromeに変えたからだった。 どうも、フレームをbodyタグの中に書いていたのがまずかったらしい。bodyの 中だと無視されてしまうようだ。 Chromeの挙動がたぶん仕様的にはただしいんだろう。 でも、FirefoxでもSafariでも動いちゃうだけに、なんかなあ。
<BODY>
<FRAMESET rows="70,100%">>
...
</FRAMESET>
</BODY>;
これだとレンダリングされない