Google Maps API(V3) Geocoding API Web サービスで、座標を取得する

1月 16, 2011 · Posted in Google, Google Maps API, PHP · Comment 

前置き

ここ数年間、住所から座標(緯度・経度)を取得するために、Geocodingで提供されているAPIを利用していました。ジオコーディングデータを取得する為のサービスが、ある時期までGoogleから提供されていなかったため、Geocodingは、大変有益で有名なサービスとなりました。

が!!!

GoogleがGoogle Maps API Webサービスの一部として、Geocoding APIを提供開始したため、こちらを利用することにします。

注意事項(引用元
・Google Geocoding API の使用は、1 日あたり 2,500 件まで
・Geocoding API は Google マップと組み合わせて使用する場合にのみ使用できます。地図に表示せずにジオコーディングの結果のみを利用することは禁止されています。

概要

Web API呼び出しURL

http://maps.google.com/maps/api/geocode/output?parameters

パラメータ
output : 出力形式の指定
・json
・xml

parameters
・address or latlng
・bounds
・region
・language
・sensor

詳しくはここ

コード

住所から緯度・経度取得
PHP5+XMLで。

<?php
$address = rawurlencode("東京都港区台場1-1-1");
$url = "http://maps.google.com/maps/api/geocode/xml?address={$address}&sensor=false";

$xml = simplexml_load_file($url);

if($xml->error){
	return;
}

if((string)$xml->status != "OK"){
	return;
}

$lat = ((string)$xml->result->geometry->location->lat);
$lng = ((string)$xml->result->geometry->location->lng);

print $lat . " - " . $lng;
?>

結果
35.6351932 – 139.7763928

というわけで

・簡単
・ジオコーディング・逆ジオコーディング可能
・レスポンス高速

な、Geocoding APIを使いましょう。

セッションIDのふりなおし(Java, J2EE, resin)

1月 7, 2011 · Posted in J2EE, Resin · Comment 

目的

ユーザーのログイン前後で同じセッションIDが使われているのを、ログインのタイミングで新しいセッションIDを使うようにする。セッション・ハイジャック対策。

セッション・ハイジャックについて

セッションを用いたログイン管理を行なっているアプリケーションにおいて、攻撃者が用意したセッションIDをリクエストに含まされた正規の利用者が、正規の手順でログインすることで、不正なセッションIDを用いたログイン認証が行われてしまう。

環境

言語:java(J2EE)
サーバー:resin(http://www.caucho.com/)

結論

${RESIN_HOME}/conf/resin.confのsession-configに、

<reuse-session-id>false</reuse-session-id>

を追加。

流れ

某ECサイトで、ログイン前後で(というか、cookieの期限がすぎるまで)、同一のセッションIDがずっと使いまわされていることが判明。

ソースチェック。ログイン処理の際に、セッション無効化処理がコーディングされていることを確認。ということは、アプリケーションじゃなくて環境の問題?

request.getSession().invalidate();


ローカルでデバッグしてみたら、セッションIDがふりかわっていることを確認。

少し考えた末に、ローカルはTomcat, サーバではResinを使用していることを思い出す。

ドキュメントチェック

発見(http://www.caucho.com/resin-3.0/config/webapp.xtp#session-config

設定追加

<reuse-session-id>false</reuse-session-id>


完成!

というわけで、

・サーバ上だとデバッグしにくい。

画像付きのアラートビューを表示する – iPhoneアプリ開発

12月 17, 2010 · Posted in iOS SDK, iPhone開発, Objective-C, Xcode, 応用 · Comment 

概要

iPhone(iOS)標準のアラートビュー(UIAlertView)に、画像(UIImage)を表示する方法。

内容

APIの標準機能では、画像表示機能が提供されていない。

実現のために、アラートダイアログに表示するメッセージ内に改行コードを挿入して、スペースを確保し、そのスペースに、UIImageViewを表示する方法で、カスタマイズをおこなうことができる。

NSString *alertMessage = @"ボスに電話します。\nよろしいですか?\n\n\n\n\n\n0000-0000-0000";
UIAlertView *infoAlertView = [[UIAlertView alloc] initWithTitle:nil
	message:alertMessage delegate:nil
	cancelButtonTitle:@"いいえ" otherButtonTitles:@"はい", nil];
UIImageView *i = [[UIImageView alloc]initWithFrame:CGRectMake(85, 70, 110, 73)];
i.image = [UIImage imageNamed:@"boss.jpg"];
[infoAlertView addSubview:i];
[infoAlertView show];

イメージ

QuartzCoreとの組み合わせで、角丸画像ももちろん表示できる!

#import "QuartzCore/QuartzCore.h"

// (略)

NSString *alertMessage = @"ボスに電話します。\nよろしいですか?\n\n\n\n\n\n0000-0000-0000";
UIAlertView *infoAlertView = [[UIAlertView alloc] initWithTitle:nil
	message:alertMessage delegate:nil
	cancelButtonTitle:@"いいえ" otherButtonTitles:@"はい", nil];
UIImageView *i = [[UIImageView alloc]initWithFrame:CGRectMake(85, 70, 110, 73)];
i.image = [UIImage imageNamed:@"boss.jpg"];

i.layer.cornerRadius = 6;
i.clipsToBounds = YES;

[infoAlertView addSubview:i];
[infoAlertView show];

« 前ページへ次ページへ »