カスタム検索

2009年7月14日火曜日

GoogleMapとジオコーディング(住所検索)について

GoogleMapAPIを登録すると、以下のようなサンプルが表示されます。
デベロッパーガイドを見ていても大体同じような感じです。


<script src="http://maps.google.com/maps?file=api&v=2&&key=xxxxxxxxxxx" type="text/javascript"></script>


これで大体の場合は普通に使えるのですが、ジオコーディングを使う場合は注意が必要です。
ロケールの指定というのがあるのですが、 http://maps.google.com から取得するとこれが日本になっていません。
日本になっていない場合でも大概はうまくいくのですが、以下のように違う場所を表示したりする場合があります。
(ブラウザによっては同じ表示になる場合があるようです、Firefoxでは違う位置になりました)

以下の二つをFirefoxで見ると数値が違うのがわかると思います。(リンクだとうまくいかないのでコピーペーストして下さい。)
http://maps.google.com/maps/geo?q=%E6%BB%8B%E8%B3%80%E7%9C%8C%E8%8D%89%E6%B4%A5%E5%B8%82
http://maps.google.co.jp/maps/geo?q=%E6%BB%8B%E8%B3%80%E7%9C%8C%E8%8D%89%E6%B4%A5%E5%B8%82

ちなみに二つの位置を地図で表示すると、以下のようにずれています。




これはJSON以外にもXMLやJavaScript(GClientGeocoder)で取得する場合も同じです。
日本の指定にはAPIのパラメーラーに hl=ja をつけるか、 http://maps.google.co.jp/maps で取得すればOKです。
日本国内の使用に関しては設定しておいた方が良さそうです。

2009/7/21 ずれがわかりにくかったので修正しました。

2009年7月12日日曜日

Grailsで簡単暗号化! Grails Codecを使ってみよう!

Grailsで暗号化をするのは凄く簡単です。
公式ドキュメントにも乗っていますが、Objectに encodeAsBase64() というのが注入されています。
複合は decodeBase64() を使います。

なので hoge を暗号化すると、以下のコードになります。

def key="hoge".encodeAsBase64() //暗号化
println key
println new String(key.decodeBase64()) //複合化


decodeBase64() では byte配列が返ってくるので、new Stringしてやると文字列として読み取れる形式になります。

これをGroovyだけでやると以下のようになります。

def bytes="hoge".getBytes()
def key=bytes.encodeBase64().toString()
println key
println new String(key.decodeBase64())


ところで、GrailsにはencodeAsBase64()以外にも色々なCodec(encode,decode出来るもの)が用意されています。
(encodeAsHTML()などはscaffoldしたgspにかかれていますね)
更にCodecは自分で追加する事が出来ます。
grails-app/utilsフォルダへ HogeCodec.groovy というファイルを追加し、 encode、decodeというStaticメソッドを用意します。
(Codecファイルを作るスクリプトがあってもいいと思うのですが見当たりませんでした・・・)


class HogeCodec {
static encode = { theTarget ->
return "hoge encode!!!"
}

static decode = { theTarget ->
return "hoge decode!!!"
}
}


これでObjectへ encodeAsHoge() と decodeHoge() が注入されます、簡単ですね!

2009年7月7日火曜日

GlassFishで管理コンソールのURL(コンテキスト)を変更する

リモート管理用で1IP割り当てられた状況から複数のGlassFishを触るという機会があったのでやってみました。

glassfish/domain/domain1/config/domain.xml の以下、赤字部分を編集します。


<web-module availability-enabled="false"
context-root="/gfadmin"

directory-deployed="true" enabled="true"
location="${com.sun.aas.installRoot}/lib/install/applications/admingui/adminGUI_war"
name="admingui" object-type="system-admin">
<!-- System Web Module - DO NOT DELETE! -->
</web-module>


ちなみにポートが自由に使えるのであれば、ポートを変更する方法もあります。
設定 > HTTPサービス > HTTPリスナー > admin-listener のポートを変更して再起動です。

2009年7月2日木曜日

Grails/Groovy勉強会やります

JGGUGの第2回名古屋支部イベント「Grails/Groovy勉強会」でスピーカーをやる事になりました。

詳細はこちら

「Grailsで{さくさく}作るRIA」ですが、内容は入門編です。
続きも考えて居ますので、興味ある方は無料なんで是非ご来場下さい :)