2010年11月アーカイブ

Firefoxってけっこうすぐバージョンアップしちゃうので見逃しがちなんですけれども、Firefox 3.6.3あたりだと、Geocodingで現在の場所を取得しようとした時、Wi-Fiがつながっていないと、エラーが出るみたい。Firebugでのエラーログは、

location is undefined
file:///C:/Program%20Files/Mozilla%20Firefox/components/NetworkGeolocationProvider.js
Line 91

となってしまう。よって、3.6.3のときだけGeocodingしないような処理が必要かもしれません。

現行バージョンの3.6.12では、Wi-Fiがない端末では、IP Geocodingで取得するようになっているので大丈夫みたいです。

アドビのCS5対応プリントショップのリストのページから、Google Mapsに表示させるやつの17回目。

前回は、Google Maps APIのジオコーディングでうまく出なかった3つの住所を、どうにかしてジオコーディングを通すため、「辞書」を作って、なんとかすべての住所に対するジオコーディングができる、というところまでやりました。

今回は、当初の予定では、JSONファイルを書き出す、というのをやるつもりでしたが、予定を変更して、アドビさんが、間違っている住所を直してくれた、ということをお知らせします。

いまGoogle Maps APIをいじっているんですが、僕が昔いろいろ作ったやつはGoogle Maps API V2で作っていたんです。

たとえば: M.C.P.C.: Google Maps APIを使って住所リストからGoogle Mapsに表示するまで

んで、今回またいじり始めたら、いつの間にかGoogle Maps API V3になっていました。

V2では申請制だったAPIキー取得が、V3ではいらなくなっています。

他にもいろいろ変っている部分もありますが、せっかくなので今勉強中です。例のAdobe Creative Suite 対応印刷屋さんの一覧も、すでにV3で表示ができていて、iPadでもちゃんと表示できている状態。

http://labo.dtpwiki.jp/printshop/20101128.html

もう少ししたら出せると思います。

アドビのCS5対応プリントショップのリストのページから、Google Mapsに表示させるやつの16回目。

前回は、京都市専用のジオコーダ「ジオどす」を使ってみたのですが、今回の住所ではあまり結果が良くないっぽいので、やめた、っというところまでやりました。

今回は、Google Maps APIのジオコーディングでうまく出なかった3つの住所を、どうにかしてジオコーディングを通すため、「辞書」を作る、というのをやってみたいと思います。

アドビのCS5対応プリントショップのリストのページから、Google Mapsに表示させるやつの15回目。

前回は、Google Maps APIでうまくジオコーディングできない住所を特定し、それぞれどのようになっているか解析してみました。

今回は、京都市専用のジオコーダ「ジオどす」を使ってみて、京都市の住所のジオコーディングをやってみたいと思います。

G Data アンチウイルス 2011が3年分3台で5980円と非常に安すぎたので購入して、とりあえず1か月体験版を使っているんですけれども(←使う順番がまちがっているだろ)、ウェブ保護機能がなんだが微妙。

Firefoxで表示

Gdatatorichigae01
▲ごりっぱ

Operaで表示

Gdatatorichigae02
▲なんてことでしょう

僕メインブラウザがOperaなんですけれども、G Data アンチウイルス 2011を入れた後ウェブ保護機能のせいで画像をはめる位置が取り違えることがある。これってある意味器用だよね。

田中理恵さんに悪いので直してくれーwww

昨日、iPadのOSであるところのiOSを4.2にアップデートしてみました。

目玉機能としてマルチタスクがあるのですが、kikeruというインターネットラジオアプリを流しながら他のことができないのが今まで不満だったので、試してみました。

kikeruを起動してから、他のアプリを起動するためホームボタンを押すと、いままではkikeruが終了していましたが、アップデート後は、音声が流れたままで、左上に再生表示がされたままホーム画面に戻ります。そのまま、他のアプリが使えます。

アプリが動いているときに、バックに控えているアプリ一覧を表示するには、ホームボタンをダブルクリックします。

Ios4201
▲もしドラの挿絵を見ながら今動いているアプリを表示

最下段の部分が割り込んできていますが、ここを右になぞると、音声再生中のアプリの制御や、画面の明るさの制御ができますよ。

Ios4202
▲もしドラの挿絵眺めるだけじゃなくて本文読めってば

ところがですね、kikeruラジオって2010年12月24日でサービス終了してしまうんだって! なんてこったい! ちょっと残念ではありますね……

アドビのCS5対応プリントショップのリストのページから、Google Mapsに表示させるやつの14回目。

前回は、Google Maps APIから取得する箇所で「OVER_QUERY_LIMIT」というステータスが出ている個所の原因が、取得間隔が短すぎることにあると思い、sleep 1; を入れて1秒WAITを入れることで、見事「OVER_QUERY_LIMIT」を消すことができました。しかしまだ「ZERO_RESULTS」というステータスが出る箇所が残っている、というところまでやりました。

今回は、「ZERO_RESULTS」と出る箇所をどのように解消すればいいか、ということを考えてみます。

アドビのCS5対応プリントショップのリストのページから、Google Mapsに表示させるやつの13回目。

前回は、アドビのサイトのHTMLをスクレイピングするスクリプト、Google Geocoding APIを使い、住所から緯度/経度を取得するスクリプトをくっつけて、それぞれの印刷会社の住所を取得してみましたが、何やらサーバから取得失敗しているんじゃね、的な不穏なエラーメッセージが混ざっていました。

今回は、エラーメッセージの出方を解析し、さらにエラーメッセージが出ないように取得してみたいと思います。


前回取得したテキストファイル results11.txt には、

...
---
results:
  - address_components:
      - long_name: 22
        short_name: 22
        types:
          - sublocality_level_5
          - sublocality
          - political
      - long_name: 3
        short_name: 3
        types:
          - sublocality_level_4
          - sublocality
          - political
      - long_name: りんくう南浜
        short_name: りんくう南浜
        types:
          - sublocality_level_1
          - sublocality
          - political
      - long_name: 泉南市
        short_name: 泉南市
        types:
          - locality
          - political
      - long_name: 大阪府
        short_name: 大阪府
        types:
          - administrative_area_level_1
          - political
      - long_name: 日本
        short_name: JP
        types:
          - country
          - political
    formatted_address: '日本, 大阪府泉南市りんくう南浜3−22'
    geometry:
      location:
        lat: 34.3778781
        lng: 135.2629286
      location_type: APPROXIMATE
      viewport:
        northeast:
          lat: 34.3810257
          lng: 135.2660762
        southwest:
          lat: 34.3747305
          lng: 135.259781
    types:
      - sublocality_level_5
      - sublocality
      - political
status: OK
---
results: []
status: OVER_QUERY_LIMIT
---
results: []
status: OVER_QUERY_LIMIT
---
results: []
status: OVER_QUERY_LIMIT
---
results: []
status: OVER_QUERY_LIMIT
---
results: []
status: OVER_QUERY_LIMIT
---
results: []
status: OVER_QUERY_LIMIT
---
results: []
status: OVER_QUERY_LIMIT
---
results: []
status: OVER_QUERY_LIMIT
---
results: []
status: OVER_QUERY_LIMIT
---
results: []
status: 	OVER_QUERY_LIMIT

と、statusにOVER_QUERY_LIMITとかでていました。他の個所には、ZERO_RESULTSとか入ってきていました。

そこで、得られたテキストの全体から、エラーメッセージがどういうタイミングで出ているのか、確認したいと思います。

どのように調べるかというと、grepを使います。

もうみんな忘れているかもしれないけれども、今回の制作物はLinux環境で作っていますので、こんな感じで入力するとよいです。

$ grep -e 'status' results11.txt > status.txt

結果はこんなかんじです。

Filename: status.txt

status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: OVER_QUERY_LIMIT
status: OVER_QUERY_LIMIT
status: OVER_QUERY_LIMIT
status: OVER_QUERY_LIMIT
status: OVER_QUERY_LIMIT
status: OVER_QUERY_LIMIT
status: OVER_QUERY_LIMIT
status: OVER_QUERY_LIMIT
status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: OVER_QUERY_LIMIT
status: OVER_QUERY_LIMIT
status: OVER_QUERY_LIMIT
status: OVER_QUERY_LIMIT
status: OVER_QUERY_LIMIT
status: OVER_QUERY_LIMIT
status: OVER_QUERY_LIMIT
status: OVER_QUERY_LIMIT
status: OVER_QUERY_LIMIT
status: OK
status: OK
status: OK
status: OK
status: ZERO_RESULTS
status: ZERO_RESULTS
status: OK
status: OK
status: OK
status: OK
status: OVER_QUERY_LIMIT
status: OVER_QUERY_LIMIT
status: OVER_QUERY_LIMIT
status: OVER_QUERY_LIMIT
status: OVER_QUERY_LIMIT
status: OVER_QUERY_LIMIT
status: OVER_QUERY_LIMIT
status: OVER_QUERY_LIMIT
status: OVER_QUERY_LIMIT
status: OVER_QUERY_LIMIT

前回のスクリプトでは、Google Maps APIというネットワーク上のアクセスポイントに問い合わせをしていましたが、どうやら、問い合わせの制限があるところを超えてしまった、ということみたいです。

ということは、Google Maps APIへの問い合わせを行うタイミングをゆっくりにすればいいのかな? ということで、前回のプログラムをちょっと変えてみて、ゆっくり問い合わせするようにしてみます。具体的には、ウェイト(待ち時間)を付けてみます。

Filename: test12.pl

#!/usr/bin/perl
 
use strict;
use warnings;
use utf8;
use Web::Scraper;
use YAML;
use Encode;
use WebService::Simple;
 
my $geo = WebService::Simple->new(
    response_parser => 'JSON',
    base_url => 'http://maps.google.com/maps/api/geocode/',
    param    => {
      region   => 'jp',
      language => 'ja',
      sensor   => 'false',
    },
);
 
open my $fh, '<', 'printshop.html';
my $html = decode_utf8(do { local $/; <$fh> });
close $fh;
 
my $s = scraper {
    process '//div[@class="tabcontent"][1]//table[@class="data-bordered max"]/tbody/tr', 'codes[]' => scraper {
        process '//td[1]', pref    => [ 'TEXT', sub { s/\s//g; } ];
        process '//td[2]', company => [ 'TEXT', sub { s/\s//g; } ];
        process '//td[3]', address => [ 'TEXT', sub { s/\s//g; s/TEL:.+$//i; return $_; } ];
        process '//td[3]', phone   => [ 'TEXT', sub { s/\s//g; if(m/TEL:([\d-]+)/i){return $1;};}];
        process '//td[3]', fax     => [ 'TEXT', sub { s/\s//g; s/:/:/g; if(m/FAX:([\d-]+)/i){return $1;};undef;}];
        process '//td[4]', illustratorcs5 => [ 'TEXT',  sub { return $_ =~m|yes|i ? 1 : undef; } ];
        process '//td[5]', indesigncs5    => [ 'TEXT',  sub { return $_ =~m|yes|i ? 1 : undef; } ];
        process '//td[6]', pdfx1a         => [ 'TEXT',  sub { return $_ =~m|yes|i ? 1 : undef; } ];
        process '//td[7]', pdfx4          => [ 'TEXT',  sub { return $_ =~m|yes|i ? 1 : undef; } ];
    };
};
 
my $scraped = $s->scrape($html);
#print Dump($scraped->{codes});
 
foreach my $item ( @{$scraped->{codes}} ) {
  my $address = $item->{address};
  #print "$address\n";
  my $res = $geo->get( 'json', { address => $address } );
  my $val = $res->parse_response();
  print Dump( $val );
  sleep 1;
}
 
exit;
 
__END__

sleep 1; ていうので、プログラムが1秒止まりますので、Google Maps APIへの問い合わせも、1秒ごとになります。

$ perl test12.pl > results12.txt
$ grep -e 'status' results12.txt > status12.txt
$ less status12.txt

status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: ZERO_RESULTS
status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: ZERO_RESULTS
status: ZERO_RESULTS
status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: OK
status: OK

どうやら、sleep 1; がうまく効いて、OVER_QUERY_LIMIT が解消しました。

ZERO_RESULTSっていうエラーが残っていますが、これに関しては、次回調べてみますね。

この前iPhone4のアクティベーションを手伝ってきたんですけれども、持主は夜のお店のおねーさんで、付け爪が邪魔でせっかく買ったiPhone4がうまくいじれないようだったので、iPadを操作しようと思っていつぞや買ったんだけど使いにくくてほっぽって置いていたiPad/iPhone用スタイラスペンを貸してやったらすげえ好評だったので、くれてやった。

これでわらしべ長者的なことになるかと思ってたけれども、何もなかった。

「日本経済新聞電子版についてのアンケート」っていうのがメールで来て、どれどれやってみんべやなとか思いました。

そんで、「Q1. あなたが普段ご覧になっているウェブサイトをお選びください。 (いくつでも)」っていうところには、いろんなポータルサイトやニュースサイトがあったんだけれども、「はてな」がありませんでした。

「はては」の社長が日経新聞電子版のPRをした記事まで乗せていたのにこの仕打ち。ひどい!

ちなみに、Youtubeはリストにあったがニコニコ動画はなかった。つまりそういうことなんだと思う(想定していない読者ってこと。いわせるなはずかしい)。

んで、最終的にアンケートはなんだか精神調査みたいなキモい選択項目ばかりになったので、ドロップアウトした。Webでのアンケートの取り方の勉強にはなった。

Amazon EC2のAMIは、拠点ごと(US-East, US-West, Europa, Asia-Pacific)に、別のAMIを用意してあげなくてはいけないわけですが、さっきAsia-Pacificのところで、Amazonが用意してくれているAMIに、すでに日本語対応済みっぽい名前のWindows 2003 ServerのAMIがあることを発見しました。

Ec2asiaja
▲いろいろあるで

でも、起動させてみると、英語表示。

Ec2asiaja01
▲スタートボタンが「Start」になっとる

地域と言語の設定をみると、地域・単位は日本に設定されている。

Ec2asiaja02
▲円だけ漢字

言語をみると、英語になってる。

Ec2asiaja03
▲ここだけEnglish

ここを日本語に変えたら、再起動しろって出たので再起動。

Ec2asiaja04
▲再起動します

再起動終了後、もう一回ログインすると、日本語が出た。

Ec2asiaja05
▲見慣れたWindows 2003サーバ

IMEとかは、別途指定する必要があります。

今日クリミナルガールズ発売なんでそのネタがびゅんびゅん飛んでいて、いろいろやばいゲームなんだけれども(CERO D)、オープニングテーマ曲の作曲が古代祐三氏で、対象はCERO Z区分だと思った(おっさんホイホイ的な意味で)。

GAME BRIDGENews »PSP『クリミナルガールズ』OPテーマを担当した古代祐三さんインタビュー! | GameBridge ニュース [g-bri.com]

発売元サイト。

CRIMINAL GIRLS クリミナルガールズ [nippon1.jp]

G Data アンチウイルス 2011の3年分のライセンスをこの前酒飲んで帰ってきたときに買ってしまったみたい。

そんでインストールしたらがOperaと相性悪いみたい。

Gdata
▲画像崩れる

いちおう、デフォルトで入っていたマカフィーでは発生しなかった現象ではある。

Webから読み込むところでウェブ保護が動くんだろうけど、そのタイミングで画像が崩れることがある。3年分買っちゃった。しょうがないか。

Twitterの特定ユーザがフォローしている数を知りたいとき、ちゃんとTwitterのAPIを使って、jQueryで取得するときの基本的な書き方。

$.ajax({
  type    : 'GET',
  url     : 'http://twitter.com/users/show/CLCLCL.json',
  dataType: 'jsonp',
  success : function( d ) { alert( d.friends_count ); }   
});

実際に取得できるJSONをみると、どうやって必要な数値を選べるかというのが推測できると思うよ。

{
  "profile_background_image_url":"http:\/\/s.twimg.com\/a\/1287523226\/images\/themes\/theme1\/bg.png",
  "description":"\u5f7c\u5973\u52df\u96c6\u4e2dPC\u306b\u300c\u30cd\u30bf\u753b\u50cf\u30d5\u30a9\u30eb\u30c0\u300d\u6301\u3063\u3066\u308b\u5b50\u9650\u5b9a\/\u8abf\u67fb\u95a2\u9023\/docomo2\u56de\u7dda(Android+\uff76\uff9e\uff97\uff79\uff70)\/iPad(Wi-Fi)\u306fHT-03A\u30c6\u30a3\u30b6\u30ea\u30f3\u30b0\u3067\/\uff97\uff8c\uff9e\uff8c\uff9f\uff97\uff7d\u306f\u51db\u5b50",
  "verified":false,
  "screen_name":"CLCLCL",
  "status":{
    "place":null,
    "retweeted":false,
    "in_reply_to_status_id_str":null,
    "in_reply_to_user_id":null,
    "truncated":false,
    "in_reply_to_user_id_str":null,
    "id_str":"4385132047769600",
    "source":"\u003Ca href=\"http:\/\/www.amazon.co.jp\/gp\/search?ie=UTF8&keywords=%E5%A1%A9%E8%BE%9B&tag=dtpwiki-22&index=food-beverage&linkCode=ur2&camp=247&creative=1211\" rel=\"nofollow\"\u003E\u5a5a\u6d3b\u4e2d\u306a\u3093\u3060\u003C\/a\u003E",
    "favorited":false,
    "geo":null,
    "created_at":"Tue Nov 16 04:07:51 +0000 2010",
    "contributors":null,
    "in_reply_to_screen_name":null,
    "coordinates":null,
    "retweet_count":null,
    "id":4385132047769600,
    "in_reply_to_status_id":null,
    "text":"\u300c\u30ae\u30fc\u30af\u30cf\u30a6\u30b9\u300d\u306epha\u3055\u3093\u3092\u30d5\u30a9\u30f3\u30c8\u5c4b\u3055\u3093\u306e\u96c6\u307e\u308a\u306b\u547c\u3093\u3067\u5c0f\u585a\u30d5\u30a9\u30f3\u30c8\u306e\u30e9\u30a4\u30bb\u30f3\u30b9\u306e\u4ef6\u3067\u30d5\u30eb\u30dc\u30c3\u30b3\u308b\u3068\u3044\u3046\u306e\u306f\u3069\u3046\u304b http:\/\/d.hatena.ne.jp\/pekkopeko\/20101113\/1289645904"
  },
  "follow_request_sent":false,
  "profile_background_tile":false,
  "profile_background_color":"C0DEED",
  "id_str":"14119989",
  "profile_text_color":"333333",
  "url":null,
  "listed_count":32,
  "lang":"ja",
  "time_zone":"Tokyo",
  "created_at":"Tue Mar 11 03:26:56 +0000 2008",
  "profile_link_color":"0084B4",
  "location":"",
  "statuses_count":7006,
  "notifications":false,
  "protected":false,
  "show_all_inline_media":false,
  "friends_count":255,
  "profile_sidebar_fill_color":"DDEEF6",
  "name":"CL",
  "contributors_enabled":false,
  "following":false,
  "profile_use_background_image":true,
  "favourites_count":66,
  "id":14119989,
  "geo_enabled":true,
  "utc_offset":32400,
  "profile_sidebar_border_color":"C0DEED",
  "followers_count":249,
  "profile_image_url":"http:\/\/a2.twimg.com\/profile_images\/1168459578\/0_normal.png"
}

d.friends_count で、"friends_count":255, の部分の数字がとれる。

"created_at":"Tue Nov 16 04:07:51 +0000 2010", の所をとりたい場合は、実際には

{
 "status":{
    "created_at":"Tue Nov 16 04:07:51 +0000 2010",
  }
}

となっているから、JavaScriptでは d.status.create_at という形で取得できる。


実際に使う場合はこんな感じにするかな。

<script type="text/javascript"
  src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"
></script>
 
<script type="text/javascript">
// <![CDATA[
 
 
/* Twitter API読み込み設定 */
 
$.ajax({
  type    : 'GET',
  url     : 'http://twitter.com/users/show/CLCLCL.json',
  dataType: 'jsonp',
  success : function( data ) { 
    showFriendsCount( data );
  }   
});
 
 
/* JSONが読み取られたときに呼ばれる(コールバック) */
 
function showFriendsCount( data ) {
  $('#friendscount').html( data.friends_count );
}
// ]]>
</script>
 
 
<p>このユーザがフォローしている人の数は<span id="friendscount"></span>です。</p>

お昼にちょっと抜けて出て、インフルエンザ予防接種を打ってきました。

組合(何の組合かは知らん)から1000円の補助が出るということで接種証明書を総務に渡したら領収書がないっていうことで怒られて、もう一度病院に行って発行してもらうことに。

それにしても、補助を出すなんて組合もたまには役に立つな。良く考えると前から補助出てたような気もする……

ケーズデンキでUSBペットボトルウォーマーが売ってたので買ってきたよ。

電源がUSB 5V 0.5Aだからそんなあったかくないぞ。冷めにくくするっていうもんみたいですね。

いま「さまりにくくする」って入力したら変換できなくてびっくりしたがこれは方言だったのか。良く考えると無生物なのに自発的に動くような言い方するよな……

1ヶ月前串刺しナンバリングというのが流行ったらしいんですけれども、

Kushizashiはワールドワイドに | やもめも [yamo.xsrv.jp]

良く考えたら3年前同じことやってた。タイミングってあるんだね。

M.C.P.C.: InDesignでナンバリング刷り込み用ドキュメントを作る
M.C.P.C.: InDesignでナンバリング刷り込み用ドキュメントを作る(2):Excelで連番を工夫する

そんで、今、動画に解説をつけようとニコニコスクリプトをいじっているんだけれども、当時自分が何やっていたんだからわからないほど変態な操作をしていた。

InDesignのキーボードショートカット操作って直感的じゃないから画面から何やっていたかを割り出すのめんどくさい……

「tamiyasu-01.wav」をダウンロード

(以下VOICEROID原稿のため、表記をわざと開いたり半角スペースを入れたりしています)

1997年にラジオドラマ作品「アンドロイドアナ マイコ にーまるいちまる」が見せてくれたのは、アンドロイドがラジオパーソナリティーを務める「未来の2010年」でした。

そして2010年の年も押し迫る11月に登場したのは、丹下桜の声を持つアンドロイドアナウンサーではなくて、民安ともえの声がする VOICEROIDプラス民安ともえ(弦巻マキ)だったのでした。

ライセンス的に企業プロモーションに使えないのはちょっと残念ですが、個人的に グヘヘな用途に使いたいと思います。

DTWiki.jpドメインの更新を今日行いました。2004年11月取得のドメインなので、これで6回目の更新となります。

ドメインとってまでこういうネタやるのって今はやらないのかもしれないけれども、ドメイン取っていると自分で作ったツールを置きまくれるので便利ですよ。

放課後に、PCは持っているけれどもインターネットにつないでいない家でのiPhone4のセットアップを頼まれまして、Wi-Fiルータを持参してセットアップしようと思ったんですけれども、そこのうちのPCとWi-Fiルータがなかなかつながらない。

いろいろ試行錯誤したところ、Wi-FiルータがIEEE802.11bの12channelを使っていると、東芝Cosmio 2010年夏モデルのWi-Fiが認識してくれないことが判明しました。

今まで混信をさけるためにルータのchannelを12channelにしていたのですが、まさかつながらないPCがあるとは……

レスキューに入るときは、ルータの無線LANのチャンネルはあまりへんな設定にしない方がいいってことですね。

今日コンビニのATMでお金をおろしたら、僕の通帳には想像している金額以上の残額が入っていて、これは何だろうと考えてみたらば、お盆にクルマを購入するときに申請したエコカー補助金が入っていたのでした。

毎年12月に日本学生支援機構から借りたお金がごっそり持っていかれるのですけれども、今年に関して言えば、これでちゃんとお金を返済できます。

もち代を気にしなくていい年末って、いいですよね……

Alienware M11xに、Adobe Creative Suite CS3 Design Premiumを入れるのですけれども、これに入っているWindows 7は64bitバージョンなので、インストールするときに、AcrobatのDLLが足りないと出て止まってしまうんですけれども、「参照」を選択して、i386フォルダからいったん出て、AMD64フォルダを選択すると、先に進むんですね。

ここに書いてありました。


Windows7 64bitでAdobe Design Premium CS3の不具合と解決法 - チラシのうら
[blog.goo.ne.jp]

当然、アドビの推奨する方法でないのですが、もともと64bit WindowsでCS3は保障ないわけなのでどうってことないですよね。

某所のトラックボール紹介記事

快感コロコロ | やもめも [yamo.xsrv.jp]

では、親指派は……的な話がありましたが、確かにとある場所で親指派だと言っていたんですけれども、実は中指操作のやつも持っていることにさっき気づいた。最近デスクトップPCつけていないので使っていなくて忘れていた。

そんで、トラックボールもいいんですけれども、買う前に注意したほうがいいかなーと思うことがありまして。

といいますのも、マウスは、付属ドライバなどがなくてもある程度使えるのですが、トラックボールの場合、付属のドライバソフトを使えないととても大変です。

だから、会社などで、付属ドライバなどを自由にインストールできないような場合、気をつけたほうがいいかなーと思います。

ドライバソフトを入れないトラックボールってどうなるの? ていう話なんですが、僕の手持ちのトラックボールの、ロジクール Cordless Optical TrackMan® TM-100 の場合で説明します。

トラックボールは、ボールを上に転がしたらマウスポインタが上にいくわけですけれども、エルゴノミクスデザインのトラックボールの場合、初期設定のままでは、自分では上に転がしたつもりで、斜めに進んでしまうことがあります。

斜めに進まないように、トラックボールを置くと、こんな配置になります。

Trackball
▲角度きつい

かえって腱鞘炎になるわー!

手の置き方が自然になるよう、回転方向とポインタの進行方向を合わせるためには、付属ドライバを入れる必要がある、というわけです。

~~~

以上から、会社でトラックボールを使おうと思っても、ドライバを入れられませんので、僕は会社ではマウスを使っていますよ。

ここまで言っておいてなんですが、DTP仕事での最強ポインティングデバイスは、ペンタブレットだと思うんですよね、マジで。

地デジも未だに買えず、2006年製造の19inch液晶モニタをPS3用に使っていたり、今回買ったAlienware用に使ったりしているわけですけれども、さっき気づいた外国製ならではの誤植。

Gateway19inch01
▲シロツグ・ラーダット大佐(CV:森本レオ)的な

Gateway19inch02
▲スプートニク1号的な

宇宙を連想させる誤字すげえな外国製!

アドビのCS5対応プリントショップのリストのページから、Google Mapsに表示させるやつの12回目。

前回は、Google Geocoding APIを使い、住所から緯度/経度を取得するのを、Perlでやってみました。

今回は、第9回と、第11回(前回)のスクリプトをくっつけて、アドビのサイトのHTMLをスクレイピングして、取得した印刷会社の住所から、Google Geocoding APIを使って、印刷会社の所在地を取得したいと思います。


それでは、さっそくくっつけてみましょう。

Filename: test11.pl

#!/usr/bin/perl
 
use strict;
use warnings;
use utf8;
use Web::Scraper;
use YAML;
use Encode;
use WebService::Simple;
 
my $geo = WebService::Simple->new(
    response_parser => 'JSON',
    base_url => 'http://maps.google.com/maps/api/geocode/',
    param    => {
      region   => 'jp',
      language => 'ja',
      sensor   => 'false',
    },
);
 
open my $fh, '<', 'printshop.html';
my $html = decode_utf8(do { local $/; <$fh> });
close $fh;
 
my $s = scraper {
    process '//div[@class="tabcontent"][1]//table[@class="data-bordered max"]/tbody/tr', 'codes[]' => scraper {
        process '//td[1]', pref    => [ 'TEXT', sub { s/\s//g; } ];
        process '//td[2]', company => [ 'TEXT', sub { s/\s//g; } ];
        process '//td[3]', address => [ 'TEXT', sub { s/\s//g; s/TEL:.+$//i; return $_; } ];
        process '//td[3]', phone   => [ 'TEXT', sub { s/\s//g; if(m/TEL:([\d-]+)/i){return $1;};}];
        process '//td[3]', fax     => [ 'TEXT', sub { s/\s//g; s/:/:/g; if(m/FAX:([\d-]+)/i){return $1;};undef;}];
        process '//td[4]', illustratorcs5 => [ 'TEXT',  sub { return $_ =~m|yes|i ? 1 : undef; } ];
        process '//td[5]', indesigncs5    => [ 'TEXT',  sub { return $_ =~m|yes|i ? 1 : undef; } ];
        process '//td[6]', pdfx1a         => [ 'TEXT',  sub { return $_ =~m|yes|i ? 1 : undef; } ];
        process '//td[7]', pdfx4          => [ 'TEXT',  sub { return $_ =~m|yes|i ? 1 : undef; } ];
    };
};
 
my $scraped = $s->scrape($html);
#print Dump($scraped->{codes});
 
foreach my $item ( @{$scraped->{codes}} ) {
  my $address = $item->{address};
  #print "$address\n";
  my $res = $geo->get( 'json', { address => $address } );
  my $val = $res->parse_response();
  print Dump( $val );
}
 
exit;
 
__END__

これを、こんな感じで実行してみます。

$ perl test11.pl > results11.txt
$

書き出したresults11.txtは以下の通り。

---
results:
  - address_components:
      - long_name: 8
        short_name: 8
        types:
          - sublocality_level_4
          - sublocality
          - political
      - long_name: 1
        short_name: 1
        types:
          - sublocality_level_3
          - sublocality
          - political
      - long_name: 6丁目
        short_name: 6丁目
        types:
          - sublocality_level_2
          - sublocality
          - political
      - long_name: 二十四軒2条
        short_name: 二十四軒2条
        types:
          - sublocality_level_1
          - sublocality
          - political
      - long_name: 西区
        short_name: 西区
        types:
          - locality
          - political
      - long_name: 札幌市
        short_name: 札幌市
        types:
          - locality
          - political
      - long_name: 北海道
        short_name: 北海道
        types:
          - administrative_area_level_1
          - political
      - long_name: 日本
        short_name: JP
        types:
          - country
          - political
    formatted_address: '日本, 北海道札幌市西区二十四軒2条6丁目1−8'
    geometry:
      location:
        lat: 43.0690684
        lng: 141.3118492
      location_type: APPROXIMATE
      viewport:
        northeast:
          lat: 43.072216
          lng: 141.3149968
        southwest:
          lat: 43.0659208
          lng: 141.3087016
    partial_match: !!perl/scalar:JSON::XS::Boolean 1
    types:
      - sublocality_level_4
      - sublocality
      - political
status: OK
---
results:
  - address_components:
      - long_name: 27
        short_name: 27
        types:
          - sublocality_level_4
          - sublocality
          - political
      - long_name: 4
        short_name: 4
        types:
          - sublocality_level_3
          - sublocality
          - political
      - long_name: 1丁目
        short_name: 1丁目
        types:
          - sublocality_level_2
          - sublocality
          - political
      - long_name: 菊水2条
        short_name: 菊水2条
        types:
          - sublocality_level_1
          - sublocality
          - political
      - long_name: 白石区
        short_name: 白石区
        types:
          - locality
          - political
      - long_name: 札幌市
        short_name: 札幌市
        types:
          - locality
          - political
      - long_name: 北海道
        short_name: 北海道
        types:
          - administrative_area_level_1
          - political
      - long_name: 日本
        short_name: JP
        types:
          - country
          - political
    formatted_address: '日本, 北海道札幌市白石区菊水2条1丁目4−27'
    geometry:
      location:
        lat: 43.0586882
        lng: 141.3690477
      location_type: APPROXIMATE
      viewport:
        northeast:
          lat: 43.0618358
          lng: 141.3721953
        southwest:
          lat: 43.0555406
          lng: 141.3659001
    types:
      - sublocality_level_4
      - sublocality
      - political
status: OK
---
results:
  - address_components:
      - long_name: 千厩町
        short_name: 千厩町
        types:
          - sublocality_level_1
          - sublocality
          - political
    formatted_address: 千厩町
    geometry:
      location:
        lat: 38.9210556
        lng: 141.3310556
      location_type: APPROXIMATE
      viewport:
        northeast:
          lat: 38.9297361
          lng: 141.347063
        southwest:
          lat: 38.912374
          lng: 141.3150482
    partial_match: !!perl/scalar:JSON::XS::Boolean 1
    types:
      - sublocality_level_1
      - sublocality
      - political
status: OK
---
results:
  - address_components:
      - long_name: 58
        short_name: 58
        types:
          - sublocality_level_4
          - sublocality
          - political
      - long_name: 1
        short_name: 1
        types:
          - sublocality_level_3
          - sublocality
          - political
      - long_name: 岡田西町
        short_name: 岡田西町
        types:
          - sublocality_level_1
          - sublocality
          - political
      - long_name: 宮城野区
        short_name: 宮城野区
        types:
          - locality
          - political
      - long_name: 仙台市
        short_name: 仙台市
        types:
          - locality
          - political
      - long_name: 宮城県
        short_name: 宮城県
        types:
          - administrative_area_level_1
          - political
      - long_name: 日本
        short_name: JP
        types:
          - country
          - political
    formatted_address: '日本, 宮城県仙台市宮城野区岡田西町1−58'
    geometry:
      location:
        lat: 38.2556051
        lng: 140.9586563
      location_type: APPROXIMATE
      viewport:
        northeast:
          lat: 38.2587527
          lng: 140.9618039
        southwest:
          lat: 38.2524575
          lng: 140.9555087
    types:
      - sublocality_level_4
      - sublocality
      - political
status: OK
---
results:
  - address_components:
      - long_name: 1
        short_name: 1
        types:
          - sublocality_level_4
          - sublocality
          - political
      - long_name: 14
        short_name: 14
        types:
          - sublocality_level_3
          - sublocality
          - political
      - long_name: 3丁目
        short_name: 3丁目
        types:
          - sublocality_level_2
          - sublocality
          - political
      - long_name: 陽東
        short_name: 陽東
        types:
          - sublocality_level_1
          - sublocality
          - political
      - long_name: 宇都宮市
        short_name: 宇都宮市
        types:
          - locality
          - political
      - long_name: 栃木県
        short_name: 栃木県
        types:
          - administrative_area_level_1
          - political
      - long_name: 日本
        short_name: JP
        types:
          - country
          - political
    formatted_address: '日本, 栃木県宇都宮市陽東3丁目14−1'
    geometry:
      location:
        lat: 36.5552252
        lng: 139.9215865
      location_type: APPROXIMATE
      viewport:
        northeast:
          lat: 36.5583728
          lng: 139.9247341
        southwest:
          lat: 36.5520776
          lng: 139.9184389
    types:
      - sublocality_level_4
      - sublocality
      - political
status: OK
---
results:
  - address_components:
      - long_name: 1
        short_name: 1
        types:
          - sublocality_level_4
          - sublocality
          - political
      - long_name: 1
        short_name: 1
        types:
          - sublocality_level_3
          - sublocality
          - political
      - long_name: 1丁目
        short_name: 1丁目
        types:
          - sublocality_level_2
          - sublocality
          - political
      - long_name: 市谷加賀町
        short_name: 市谷加賀町
        types:
          - sublocality_level_1
          - sublocality
          - political
      - long_name: 新宿区
        short_name: 新宿区
        types:
          - locality
          - political
      - long_name: 東京都
        short_name: 東京都
        types:
          - administrative_area_level_1
          - political
      - long_name: 日本
        short_name: JP
        types:
          - country
          - political
    formatted_address: '日本, 東京都新宿区市谷加賀町1丁目1−1'
    geometry:
      location:
        lat: 35.6965434
        lng: 139.7312938
      location_type: APPROXIMATE
      viewport:
        northeast:
          lat: 35.699691
          lng: 139.7344414
        southwest:
          lat: 35.6933958
          lng: 139.7281462
    types:
      - sublocality_level_4
      - sublocality
      - political
status: OK
---
results:
  - address_components:
      - long_name: 1
        short_name: 1
        types:
          - sublocality_level_4
          - sublocality
          - political
      - long_name: 11
        short_name: 11
        types:
          - sublocality_level_3
          - sublocality
          - political
      - long_name: 1丁目
        short_name: 1丁目
        types:
          - sublocality_level_2
          - sublocality
          - political
      - long_name: 志村
        short_name: 志村
        types:
          - sublocality_level_1
          - sublocality
          - political
      - long_name: 板橋区
        short_name: 板橋区
        types:
          - locality
          - political
      - long_name: 東京都
        short_name: 東京都
        types:
          - administrative_area_level_1
          - political
      - long_name: 日本
        short_name: JP
        types:
          - country
          - political
    formatted_address: '日本, 東京都板橋区志村1丁目11−1'
    geometry:
      location:
        lat: 35.7728674
        lng: 139.6961498
      location_type: APPROXIMATE
      viewport:
        northeast:
          lat: 35.776015
          lng: 139.6992974
        southwest:
          lat: 35.7697198
          lng: 139.6930022
    types:
      - sublocality_level_4
      - sublocality
      - political
status: OK
---
results:
  - address_components:
      - long_name: 12
        short_name: 12
        types:
          - sublocality_level_4
          - sublocality
          - political
      - long_name: 14
        short_name: 14
        types:
          - sublocality_level_3
          - sublocality
          - political
      - long_name: 4丁目
        short_name: 4丁目
        types:
          - sublocality_level_2
          - sublocality
          - political
      - long_name: 小石川
        short_name: 小石川
        types:
          - sublocality_level_1
          - sublocality
          - political
      - long_name: 文京区
        short_name: 文京区
        types:
          - locality
          - political
      - long_name: 東京都
        short_name: 東京都
        types:
          - administrative_area_level_1
          - political
      - long_name: 日本
        short_name: JP
        types:
          - country
          - political
    formatted_address: '日本, 東京都文京区小石川4丁目14−12'
    geometry:
      location:
        lat: 35.7169276
        lng: 139.7447783
      location_type: APPROXIMATE
      viewport:
        northeast:
          lat: 35.7200752
          lng: 139.7479259
        southwest:
          lat: 35.71378
          lng: 139.7416307
    types:
      - sublocality_level_4
      - sublocality
      - political
status: OK
---
results:
  - address_components:
      - long_name: 12
        short_name: 12
        types:
          - sublocality_level_4
          - sublocality
          - political
      - long_name: 5
        short_name: 5
        types:
          - sublocality_level_3
          - sublocality
          - political
      - long_name: 3丁目
        short_name: 3丁目
        types:
          - sublocality_level_2
          - sublocality
          - political
      - long_name: 北青山
        short_name: 北青山
        types:
          - sublocality_level_1
          - sublocality
          - political
      - long_name: 港区
        short_name: 港区
        types:
          - locality
          - political
      - long_name: 東京都
        short_name: 東京都
        types:
          - administrative_area_level_1
          - political
      - long_name: 日本
        short_name: JP
        types:
          - country
          - political
    formatted_address: '日本, 東京都港区北青山3丁目5−12'
    geometry:
      location:
        lat: 35.6666104
        lng: 139.7132468
      location_type: APPROXIMATE
      viewport:
        northeast:
          lat: 35.669758
          lng: 139.7163944
        southwest:
          lat: 35.6634628
          lng: 139.7100992
    partial_match: !!perl/scalar:JSON::XS::Boolean 1
    types:
      - sublocality_level_4
      - sublocality
      - political
status: OK
---
results:
  - address_components:
      - long_name: 5
        short_name: 5
        types:
          - sublocality_level_4
          - sublocality
          - political
      - long_name: 2
        short_name: 2
        types:
          - sublocality_level_3
          - sublocality
          - political
      - long_name: 2丁目
        short_name: 2丁目
        types:
          - sublocality_level_2
          - sublocality
          - political
      - long_name: 湊
        short_name: 湊
        types:
          - sublocality_level_1
          - sublocality
          - political
      - long_name: 中央区
        short_name: 中央区
        types:
          - locality
          - political
      - long_name: 東京都
        short_name: 東京都
        types:
          - administrative_area_level_1
          - political
      - long_name: 日本
        short_name: JP
        types:
          - country
          - political
    formatted_address: '日本, 東京都中央区湊2丁目2−5'
    geometry:
      location:
        lat: 35.6716312
        lng: 139.7784971
      location_type: APPROXIMATE
      viewport:
        northeast:
          lat: 35.6747788
          lng: 139.7816447
        southwest:
          lat: 35.6684836
          lng: 139.7753495
    partial_match: !!perl/scalar:JSON::XS::Boolean 1
    types:
      - sublocality_level_4
      - sublocality
      - political
status: OK
---
results:
  - address_components:
      - long_name: 6
        short_name: 6
        types:
          - sublocality_level_4
          - sublocality
          - political
      - long_name: 14
        short_name: 14
        types:
          - sublocality_level_3
          - sublocality
          - political
      - long_name: 2丁目
        short_name: 2丁目
        types:
          - sublocality_level_2
          - sublocality
          - political
      - long_name: 内神田
        short_name: 内神田
        types:
          - sublocality_level_1
          - sublocality
          - political
      - long_name: 千代田区
        short_name: 千代田区
        types:
          - locality
          - political
      - long_name: 東京都
        short_name: 東京都
        types:
          - administrative_area_level_1
          - political
      - long_name: 日本
        short_name: JP
        types:
          - country
          - political
    formatted_address: '日本, 東京都千代田区内神田2丁目14−6'
    geometry:
      location:
        lat: 35.6918701
        lng: 139.7685026
      location_type: APPROXIMATE
      viewport:
        northeast:
          lat: 35.6950177
          lng: 139.7716502
        southwest:
          lat: 35.6887225
          lng: 139.765355
    partial_match: !!perl/scalar:JSON::XS::Boolean 1
    types:
      - sublocality_level_4
      - sublocality
      - political
status: OK
---
results:
  - address_components:
      - long_name: 8
        short_name: 8
        types:
          - sublocality_level_4
          - sublocality
          - political
      - long_name: 3
        short_name: 3
        types:
          - sublocality_level_3
          - sublocality
          - political
      - long_name: 4丁目
        short_name: 4丁目
        types:
          - sublocality_level_2
          - sublocality
          - political
      - long_name: 恵比寿
        short_name: 恵比寿
        types:
          - sublocality_level_1
          - sublocality
          - political
      - long_name: 渋谷区
        short_name: 渋谷区
        types:
          - locality
          - political
      - long_name: 東京都
        short_name: 東京都
        types:
          - administrative_area_level_1
          - political
      - long_name: 日本
        short_name: JP
        types:
          - country
          - political
    formatted_address: '日本, 東京都渋谷区恵比寿4丁目3−8'
    geometry:
      location:
        lat: 35.645985
        lng: 139.7119698
      location_type: APPROXIMATE
      viewport:
        northeast:
          lat: 35.6491326
          lng: 139.7151174
        southwest:
          lat: 35.6428374
          lng: 139.7088222
    partial_match: !!perl/scalar:JSON::XS::Boolean 1
    types:
      - sublocality_level_4
      - sublocality
      - political
status: OK
---
results: []
status: OVER_QUERY_LIMIT
---
results: []
status: OVER_QUERY_LIMIT
---
results: []
status: OVER_QUERY_LIMIT
---
results: []
status: OVER_QUERY_LIMIT
---
results: []
status: OVER_QUERY_LIMIT
---
results: []
status: OVER_QUERY_LIMIT
---
results: []
status: OVER_QUERY_LIMIT
---
results: []
status: OVER_QUERY_LIMIT
---
results:
  - address_components:
      - long_name: 21
        short_name: 21
        types:
          - sublocality_level_4
          - sublocality
          - political
      - long_name: 6
        short_name: 6
        types:
          - sublocality_level_3
          - sublocality
          - political
      - long_name: 2丁目
        short_name: 2丁目
        types:
          - sublocality_level_2
          - sublocality
          - political
      - long_name: 八重洲
        short_name: 八重洲
        types:
          - sublocality_level_1
          - sublocality
          - political
      - long_name: 中央区
        short_name: 中央区
        types:
          - locality
          - political
      - long_name: 東京都
        short_name: 東京都
        types:
          - administrative_area_level_1
          - political
      - long_name: 日本
        short_name: JP
        types:
          - country
          - political
    formatted_address: '日本, 東京都中央区八重洲2丁目6−21'
    geometry:
      location:
        lat: 35.6778579
        lng: 139.7678309
      location_type: APPROXIMATE
      viewport:
        northeast:
          lat: 35.6810055
          lng: 139.7709785
        southwest:
          lat: 35.6747103
          lng: 139.7646833
    partial_match: !!perl/scalar:JSON::XS::Boolean 1
    types:
      - sublocality_level_4
      - sublocality
      - political
status: OK
---
results:
  - address_components:
      - long_name: 12
        short_name: 12
        types:
          - sublocality_level_4
          - sublocality
          - political
      - long_name: 6
        short_name: 6
        types:
          - sublocality_level_3
          - sublocality
          - political
      - long_name: 1丁目
        short_name: 1丁目
        types:
          - sublocality_level_2
          - sublocality
          - political
      - long_name: 虎ノ門
        short_name: 虎ノ門
        types:
          - sublocality_level_1
          - sublocality
          - political
      - long_name: 港区
        short_name: 港区
        types:
          - locality
          - political
      - long_name: 東京都
        short_name: 東京都
        types:
          - administrative_area_level_1
          - political
      - long_name: 日本
        short_name: JP
        types:
          - country
          - political
    formatted_address: '日本, 東京都港区虎ノ門1丁目6−12'
    geometry:
      location:
        lat: 35.6698333
        lng: 139.7495185
      location_type: APPROXIMATE
      viewport:
        northeast:
          lat: 35.6729809
          lng: 139.7526661
        southwest:
          lat: 35.6666857
          lng: 139.7463709
    partial_match: !!perl/scalar:JSON::XS::Boolean 1
    types:
      - sublocality_level_4
      - sublocality
      - political
status: OK
---
results:
  - address_components:
      - long_name: 8
        short_name: 8
        types:
          - sublocality_level_4
          - sublocality
          - political
      - long_name: 41
        short_name: 41
        types:
          - sublocality_level_3
          - sublocality
          - political
      - long_name: 6丁目
        short_name: 6丁目
        types:
          - sublocality_level_2
          - sublocality
          - political
      - long_name: 東日暮里
        short_name: 東日暮里
        types:
          - sublocality_level_1
          - sublocality
          - political
      - long_name: 荒川区
        short_name: 荒川区
        types:
          - locality
          - political
      - long_name: 東京都
        short_name: 東京都
        types:
          - administrative_area_level_1
          - political
      - long_name: 日本
        short_name: JP
        types:
          - country
          - political
    formatted_address: '日本, 東京都荒川区東日暮里6丁目41−8'
    geometry:
      location:
        lat: 35.7299885
        lng: 139.7757894
      location_type: APPROXIMATE
      viewport:
        northeast:
          lat: 35.7331361
          lng: 139.778937
        southwest:
          lat: 35.7268409
          lng: 139.7726418
    types:
      - sublocality_level_4
      - sublocality
      - political
status: OK
---
results:
  - address_components:
      - long_name: 7
        short_name: 7
        types:
          - sublocality_level_4
          - sublocality
          - political
      - long_name: 13
        short_name: 13
        types:
          - sublocality_level_3
          - sublocality
          - political
      - long_name: 1丁目
        short_name: 1丁目
        types:
          - sublocality_level_2
          - sublocality
          - political
      - long_name: 白山
        short_name: 白山
        types:
          - sublocality_level_1
          - sublocality
          - political
      - long_name: 文京区
        short_name: 文京区
        types:
          - locality
          - political
      - long_name: 東京都
        short_name: 東京都
        types:
          - administrative_area_level_1
          - political
      - long_name: 日本
        short_name: JP
        types:
          - country
          - political
    formatted_address: '日本, 東京都文京区白山1丁目13−7'
    geometry:
      location:
        lat: 35.7169833
        lng: 139.7520362
      location_type: APPROXIMATE
      viewport:
        northeast:
          lat: 35.7201309
          lng: 139.7551838
        southwest:
          lat: 35.7138357
          lng: 139.7488886
    partial_match: !!perl/scalar:JSON::XS::Boolean 1
    types:
      - sublocality_level_4
      - sublocality
      - political
status: OK
---
results:
  - address_components:
      - long_name: 544
        short_name: 544
        types:
          - sublocality_level_3
          - sublocality
          - political
      - long_name: 早稲田鶴巻町
        short_name: 早稲田鶴巻町
        types:
          - sublocality_level_1
          - sublocality
          - political
      - long_name: 新宿区
        short_name: 新宿区
        types:
          - locality
          - political
      - long_name: 東京都
        short_name: 東京都
        types:
          - administrative_area_level_1
          - political
      - long_name: 日本
        short_name: JP
        types:
          - country
          - political
    formatted_address: '日本, 東京都新宿区早稲田鶴巻町544'
    geometry:
      bounds:
        northeast:
          lat: 35.7079351
          lng: 139.7279218
        southwest:
          lat: 35.7073818
          lng: 139.7269333
      location:
        lat: 35.7077282
        lng: 139.7271685
      location_type: APPROXIMATE
      viewport:
        northeast:
          lat: 35.716788
          lng: 139.7431759
        southwest:
          lat: 35.6986673
          lng: 139.7111611
    partial_match: !!perl/scalar:JSON::XS::Boolean 1
    types:
      - sublocality_level_3
      - sublocality
      - political
status: OK
---
results:
  - address_components:
      - long_name: 49
        short_name: 49
        types:
          - sublocality_level_3
          - sublocality
          - political
      - long_name: 2丁目
        short_name: 2丁目
        types:
          - sublocality_level_2
          - sublocality
          - political
      - long_name: 西日暮里
        short_name: 西日暮里
        types:
          - sublocality_level_1
          - sublocality
          - political
      - long_name: 荒川区
        short_name: 荒川区
        types:
          - locality
          - political
      - long_name: 東京都
        short_name: 東京都
        types:
          - administrative_area_level_1
          - political
      - long_name: 日本
        short_name: JP
        types:
          - country
          - political
    formatted_address: '日本, 東京都荒川区西日暮里2丁目49'
    geometry:
      bounds:
        northeast:
          lat: 35.7313041
          lng: 139.7702024
        southwest:
          lat: 35.7307256
          lng: 139.769438
      location:
        lat: 35.7309242
        lng: 139.7698427
      location_type: APPROXIMATE
      viewport:
        northeast:
          lat: 35.7399814
          lng: 139.7858501
        southwest:
          lat: 35.721866
          lng: 139.7538353
    partial_match: !!perl/scalar:JSON::XS::Boolean 1
    types:
      - sublocality_level_3
      - sublocality
      - political
status: OK
---
results:
  - address_components:
      - long_name: 14
        short_name: 14
        types:
          - sublocality_level_4
          - sublocality
          - political
      - long_name: 1
        short_name: 1
        types:
          - sublocality_level_3
          - sublocality
          - political
      - long_name: 2丁目
        short_name: 2丁目
        types:
          - sublocality_level_2
          - sublocality
          - political
      - long_name: 猿楽町
        short_name: 猿楽町
        types:
          - sublocality_level_1
          - sublocality
          - political
      - long_name: 千代田区
        short_name: 千代田区
        types:
          - locality
          - political
      - long_name: 東京都
        short_name: 東京都
        types:
          - administrative_area_level_1
          - political
      - long_name: 日本
        short_name: JP
        types:
          - country
          - political
    formatted_address: '日本, 東京都千代田区猿楽町2丁目1−14'
    geometry:
      location:
        lat: 35.6991245
        lng: 139.7590641
      location_type: APPROXIMATE
      viewport:
        northeast:
          lat: 35.7022721
          lng: 139.7622117
        southwest:
          lat: 35.6959769
          lng: 139.7559165
    types:
      - sublocality_level_4
      - sublocality
      - political
status: OK
---
results:
  - address_components:
      - long_name: 6
        short_name: 6
        types:
          - sublocality_level_4
          - sublocality
          - political
      - long_name: 17
        short_name: 17
        types:
          - sublocality_level_3
          - sublocality
          - political
      - long_name: 3丁目
        short_name: 3丁目
        types:
          - sublocality_level_2
          - sublocality
          - political
      - long_name: 舟渡
        short_name: 舟渡
        types:
          - sublocality_level_1
          - sublocality
          - political
      - long_name: 板橋区
        short_name: 板橋区
        types:
          - locality
          - political
      - long_name: 東京都
        short_name: 東京都
        types:
          - administrative_area_level_1
          - political
      - long_name: 日本
        short_name: JP
        types:
          - country
          - political
    formatted_address: '日本, 東京都板橋区舟渡3丁目17−6'
    geometry:
      location:
        lat: 35.7942693
        lng: 139.6815227
      location_type: APPROXIMATE
      viewport:
        northeast:
          lat: 35.7974169
          lng: 139.6846703
        southwest:
          lat: 35.7911217
          lng: 139.6783751
    types:
      - sublocality_level_4
      - sublocality
      - political
status: OK
---
results:
  - address_components:
      - long_name: 5
        short_name: 5
        types:
          - sublocality_level_4
          - sublocality
          - political
      - long_name: 15
        short_name: 15
        types:
          - sublocality_level_3
          - sublocality
          - political
      - long_name: 2丁目
        short_name: 2丁目
        types:
          - sublocality_level_2
          - sublocality
          - political
      - long_name: 飯田橋
        short_name: 飯田橋
        types:
          - sublocality_level_1
          - sublocality
          - political
      - long_name: 千代田区
        short_name: 千代田区
        types:
          - locality
          - political
      - long_name: 東京都
        short_name: 東京都
        types:
          - administrative_area_level_1
          - political
      - long_name: 日本
        short_name: JP
        types:
          - country
          - political
    formatted_address: '日本, 東京都千代田区飯田橋2丁目15−5'
    geometry:
      location:
        lat: 35.6989715
        lng: 139.7506257
      location_type: APPROXIMATE
      viewport:
        northeast:
          lat: 35.7021191
          lng: 139.7537733
        southwest:
          lat: 35.6958239
          lng: 139.7474781
    types:
      - sublocality_level_4
      - sublocality
      - political
status: OK
---
results:
  - address_components:
      - long_name: 13
        short_name: 13
        types:
          - sublocality_level_4
          - sublocality
          - political
      - long_name: 1
        short_name: 1
        types:
          - sublocality_level_3
          - sublocality
          - political
      - long_name: 3丁目
        short_name: 3丁目
        types:
          - sublocality_level_2
          - sublocality
          - political
      - long_name: 湊
        short_name: 湊
        types:
          - sublocality_level_1
          - sublocality
          - political
      - long_name: 中央区
        short_name: 中央区
        types:
          - locality
          - political
      - long_name: 東京都
        short_name: 東京都
        types:
          - administrative_area_level_1
          - political
      - long_name: 日本
        short_name: JP
        types:
          - country
          - political
    formatted_address: '日本, 東京都中央区湊3丁目1−13'
    geometry:
      location:
        lat: 35.6708757
        lng: 139.7778777
      location_type: APPROXIMATE
      viewport:
        northeast:
          lat: 35.6740233
          lng: 139.7810253
        southwest:
          lat: 35.6677281
          lng: 139.7747301
    types:
      - sublocality_level_4
      - sublocality
      - political
status: OK
---
results: []
status: OVER_QUERY_LIMIT
---
results: []
status: OVER_QUERY_LIMIT
---
results: []
status: OVER_QUERY_LIMIT
---
results: []
status: OVER_QUERY_LIMIT
---
results: []
status: OVER_QUERY_LIMIT
---
results: []
status: OVER_QUERY_LIMIT
---
results: []
status: OVER_QUERY_LIMIT
---
results: []
status: OVER_QUERY_LIMIT
---
results: []
status: OVER_QUERY_LIMIT
---
results:
  - address_components:
      - long_name: 3
        short_name: 3
        types:
          - sublocality_level_4
          - sublocality
          - political
      - long_name: 6
        short_name: 6
        types:
          - sublocality_level_3
          - sublocality
          - political
      - long_name: 浮島町
        short_name: 浮島町
        types:
          - sublocality_level_1
          - sublocality
          - political
      - long_name: 瑞穂区
        short_name: 瑞穂区
        types:
          - locality
          - political
      - long_name: 名古屋市
        short_name: 名古屋市
        types:
          - locality
          - political
      - long_name: 愛知県
        short_name: 愛知県
        types:
          - administrative_area_level_1
          - political
      - long_name: 日本
        short_name: JP
        types:
          - country
          - political
    formatted_address: '日本, 愛知県名古屋市瑞穂区浮島町6−3'
    geometry:
      location:
        lat: 35.1169995
        lng: 136.9144186
      location_type: APPROXIMATE
      viewport:
        northeast:
          lat: 35.1201471
          lng: 136.9175662
        southwest:
          lat: 35.1138519
          lng: 136.911271
    types:
      - sublocality_level_4
      - sublocality
      - political
status: OK
---
results:
  - address_components:
      - long_name: 40
        short_name: 40
        types:
          - sublocality_level_4
          - sublocality
          - political
      - long_name: 4
        short_name: 4
        types:
          - sublocality_level_3
          - sublocality
          - political
      - long_name: 5丁目
        short_name: 5丁目
        types:
          - sublocality_level_2
          - sublocality
          - political
      - long_name: 金山
        short_name: 金山
        types:
          - sublocality_level_1
          - sublocality
          - political
      - long_name: 中区
        short_name: 中区
        types:
          - locality
          - political
      - long_name: 名古屋市
        short_name: 名古屋市
        types:
          - locality
          - political
      - long_name: 愛知県
        short_name: 愛知県
        types:
          - administrative_area_level_1
          - political
      - long_name: 日本
        short_name: JP
        types:
          - country
          - political
    formatted_address: '日本, 愛知県名古屋市中区金山5丁目4−40'
    geometry:
      location:
        lat: 35.145543
        lng: 136.908296
      location_type: APPROXIMATE
      viewport:
        northeast:
          lat: 35.1486906
          lng: 136.9114436
        southwest:
          lat: 35.1423954
          lng: 136.9051484
    types:
      - sublocality_level_4
      - sublocality
      - political
status: OK
---
results:
  - address_components:
      - long_name: 33
        short_name: 33
        types:
          - sublocality_level_4
          - sublocality
          - political
      - long_name: 下鳥羽東芹川町
        short_name: 下鳥羽東芹川町
        types:
          - sublocality_level_1
          - sublocality
          - political
      - long_name: 伏見区
        short_name: 伏見区
        types:
          - locality
          - political
      - long_name: 京都市
        short_name: 京都市
        types:
          - locality
          - political
      - long_name: 京都府
        short_name: 京都府
        types:
          - administrative_area_level_1
          - political
      - long_name: 日本
        short_name: JP
        types:
          - country
          - political
    formatted_address: '日本, 京都府京都市伏見区下鳥羽東芹川町33'
    geometry:
      location:
        lat: 34.9429453
        lng: 135.7493915
      location_type: APPROXIMATE
      viewport:
        northeast:
          lat: 34.9460929
          lng: 135.7525391
        southwest:
          lat: 34.9397977
          lng: 135.7462439
    types:
      - sublocality_level_4
      - sublocality
      - political
status: OK
---
results:
  - address_components:
      - long_name: 12
        short_name: 12
        types:
          - sublocality_level_4
          - sublocality
          - political
      - long_name: 上鳥羽火打形町
        short_name: 上鳥羽火打形町
        types:
          - sublocality_level_1
          - sublocality
          - political
      - long_name: 南区
        short_name: 南区
        types:
          - locality
          - political
      - long_name: 京都市
        short_name: 京都市
        types:
          - locality
          - political
      - long_name: 京都府
        short_name: 京都府
        types:
          - administrative_area_level_1
          - political
      - long_name: 日本
        short_name: JP
        types:
          - country
          - political
    formatted_address: '日本, 京都府京都市南区上鳥羽火打形町12'
    geometry:
      location:
        lat: 34.9604353
        lng: 135.7512474
      location_type: APPROXIMATE
      viewport:
        northeast:
          lat: 34.9635829
          lng: 135.754395
        southwest:
          lat: 34.9572877
          lng: 135.7480998
    partial_match: !!perl/scalar:JSON::XS::Boolean 1
    types:
      - sublocality_level_4
      - sublocality
      - political
status: OK
---
results: []
status: ZERO_RESULTS
---
results: []
status: ZERO_RESULTS
---
results:
  - address_components:
      - long_name: 19
        short_name: 19
        types:
          - sublocality_level_4
          - sublocality
          - political
      - long_name: 16
        short_name: 16
        types:
          - sublocality_level_3
          - sublocality
          - political
      - long_name: 6丁目
        short_name: 6丁目
        types:
          - sublocality_level_2
          - sublocality
          - political
      - long_name: 高殿
        short_name: 高殿
        types:
          - sublocality_level_1
          - sublocality
          - political
      - long_name: 旭区
        short_name: 旭区
        types:
          - locality
          - political
      - long_name: 大阪市
        short_name: 大阪市
        types:
          - locality
          - political
      - long_name: 大阪府
        short_name: 大阪府
        types:
          - administrative_area_level_1
          - political
      - long_name: 日本
        short_name: JP
        types:
          - country
          - political
    formatted_address: '日本, 大阪府大阪市旭区高殿6丁目16−19'
    geometry:
      location:
        lat: 34.7188469
        lng: 135.546714
      location_type: APPROXIMATE
      viewport:
        northeast:
          lat: 34.7219945
          lng: 135.5498616
        southwest:
          lat: 34.7156993
          lng: 135.5435664
    types:
      - sublocality_level_4
      - sublocality
      - political
status: OK
---
results:
  - address_components:
      - long_name: 28
        short_name: 28
        types:
          - sublocality_level_4
          - sublocality
          - political
      - long_name: 3
        short_name: 3
        types:
          - sublocality_level_3
          - sublocality
          - political
      - long_name: 5丁目
        short_name: 5丁目
        types:
          - sublocality_level_2
          - sublocality
          - political
      - long_name: 新高
        short_name: 新高
        types:
          - sublocality_level_1
          - sublocality
          - political
      - long_name: 淀川区
        short_name: 淀川区
        types:
          - locality
          - political
      - long_name: 大阪市
        short_name: 大阪市
        types:
          - locality
          - political
      - long_name: 大阪府
        short_name: 大阪府
        types:
          - administrative_area_level_1
          - political
      - long_name: 日本
        short_name: JP
        types:
          - country
          - political
    formatted_address: '日本, 大阪府大阪市淀川区新高5丁目3−28'
    geometry:
      location:
        lat: 34.7326825
        lng: 135.4778531
      location_type: APPROXIMATE
      viewport:
        northeast:
          lat: 34.7358301
          lng: 135.4810007
        southwest:
          lat: 34.7295349
          lng: 135.4747055
    types:
      - sublocality_level_4
      - sublocality
      - political
status: OK
---
results:
  - address_components:
      - long_name: 31
        short_name: 31
        types:
          - sublocality_level_4
          - sublocality
          - political
      - long_name: 17
        short_name: 17
        types:
          - sublocality_level_3
          - sublocality
          - political
      - long_name: 4丁目
        short_name: 4丁目
        types:
          - sublocality_level_2
          - sublocality
          - political
      - long_name: 木川東
        short_name: 木川東
        types:
          - sublocality_level_1
          - sublocality
          - political
      - long_name: 淀川区
        short_name: 淀川区
        types:
          - locality
          - political
      - long_name: 大阪市
        short_name: 大阪市
        types:
          - locality
          - political
      - long_name: 大阪府
        short_name: 大阪府
        types:
          - administrative_area_level_1
          - political
      - long_name: 日本
        short_name: JP
        types:
          - country
          - political
    formatted_address: '日本, 大阪府大阪市淀川区木川東4丁目17−31'
    geometry:
      location:
        lat: 34.7289805
        lng: 135.4903297
      location_type: APPROXIMATE
      viewport:
        northeast:
          lat: 34.7321281
          lng: 135.4934773
        southwest:
          lat: 34.7258329
          lng: 135.4871821
    types:
      - sublocality_level_4
      - sublocality
      - political
status: OK
---
results:
  - address_components:
      - long_name: 22
        short_name: 22
        types:
          - sublocality_level_5
          - sublocality
          - political
      - long_name: 3
        short_name: 3
        types:
          - sublocality_level_4
          - sublocality
          - political
      - long_name: りんくう南浜
        short_name: りんくう南浜
        types:
          - sublocality_level_1
          - sublocality
          - political
      - long_name: 泉南市
        short_name: 泉南市
        types:
          - locality
          - political
      - long_name: 大阪府
        short_name: 大阪府
        types:
          - administrative_area_level_1
          - political
      - long_name: 日本
        short_name: JP
        types:
          - country
          - political
    formatted_address: '日本, 大阪府泉南市りんくう南浜3−22'
    geometry:
      location:
        lat: 34.3778781
        lng: 135.2629286
      location_type: APPROXIMATE
      viewport:
        northeast:
          lat: 34.3810257
          lng: 135.2660762
        southwest:
          lat: 34.3747305
          lng: 135.259781
    types:
      - sublocality_level_5
      - sublocality
      - political
status: OK
---
results: []
status: OVER_QUERY_LIMIT
---
results: []
status: OVER_QUERY_LIMIT
---
results: []
status: OVER_QUERY_LIMIT
---
results: []
status: OVER_QUERY_LIMIT
---
results: []
status: OVER_QUERY_LIMIT
---
results: []
status: OVER_QUERY_LIMIT
---
results: []
status: OVER_QUERY_LIMIT
---
results: []
status: OVER_QUERY_LIMIT
---
results: []
status: OVER_QUERY_LIMIT
---
results: []
status: OVER_QUERY_LIMIT

……あれ? なんだかstatusにOVER_QUERY_LIMITとかZERO_RESULTSとか混ざってきているぞ?


次回は、Google Geocoding APIからエラーが帰ってきているみたいなので、どうにかしてエラーを解消していくことを試行錯誤してみます。

色校正日記 なんだかムショーに腹が立つCM [tomotaku.blog94.fc2.com]

そりゃあ365日24時間操業を実現しようとしたら、シロウトに刷らせるしかないわな、と。

飛躍しすぎー!!

365日24時間操業を実現しようとするとまず必要なのは、運用ができる人員を必要な人数だけ集めること、なんだよね。

ともかく労働安全衛生の教育訓練をしっかりやろうぜ、ってことだと思います。そのために、実務から外れた事務作業をするのもしょうがないんじゃないかな、と思って、僕はやってます。そういうところも含めての「会社」だよね。

Amazon送料無料と言うことで1日深夜にHPのDisplayPort→VGAアダプタを注文したら今日3日文化の日のお昼に届いた。

早速Alienware M11x r2につないでみたよ。

Displaytovgaalienwares
▲HPのDisplayPort→VGAアダプタ

直づけではなくて、変換ハーネス的なコネクタが欲しくってHPのやつにしてみたんだけれども、Amazonには商品画像無かったので、購入するまでどんな形だかわからなかったんですが、まあまあの大きさですね。

DisplayPortからは直接VGAがでているわけではないから、何らかの変換基盤がいるみたいで、そのための部分がたいていの変換アダプタに付いていますね。

Displaytovga
▲変換基盤が入っていそうな部分

これを、Gatewayの19インチ1400×900のモニタにつないで、Excelとか快適に使えているよ。

Alienwareは、ロゴやキーボードなどのバックライトの色を変えられるのですけれども、いまはグリーンにして使っているよ。かっこいいよね。

Alienwaregreens
▲2台並べるとデザインの方向が逆方向だね

DTP関連のblogでスクリプトのソースがかかれることが急に多くなってきたような感じですが、実はblogってそのままだとプログラムやスクリプトのソースを表示するのはうまくいかないんです。

というのは、HTMLって、特別な指示がない限り、複数のスペース文字は、1つに丸められてしまうんです。

結果、ソースできれいに整えたインデントが、blogではなくなってしまうことがあるわけです。

というわけで、もともとテキスト整形済みのレイアウト箇所に使うよう用意されている、pre要素を使ったほうがいいと思うんです。

元来、マークアップはDTPが始まる前の時代であればコンピュータで組版するために使われていた時期もあったわけですので、せっかく組版している人なんであれば、HTMLでもpreぐらいは的確にマークアップできるようになっているといいかなーと思いました。

もっとも、pre要素を使えば万事解決、というわけではなくて、MovableTypeやTypePadだと、改行設定を、「改行を反映させる」になっている状態では、空行があると勝手にpreを閉じてしまったりしますので注意です。

pre要素を使ったときに、何が得するか、というと、JavaScriptを使って、pre要素の中を装飾することができます。

僕は、google-code-prettifyというのを使って、このblogでソースに色を付けているよ。

prettify [mrs.suzu841.com] を参照。


こんな感じになる。

#!/usr/bin/perl
 
use strict;
use warnings;
use CGI;
my $q = CGI->new;
print $q->header( -type => 'text/html', -charset => 'UTF-8');
print '<html><body><p>ほげ</p></body></html>';
exit;
__END__


~~~

最近さすがにDTPを離れているからここで書くのもどうかと思うけれども、DTPの現役の人って結構HTMLのマークアップって触れないよね。だからここで書いてみました。

アドビのCS5対応プリントショップのリストのページから、Google Mapsに表示させるやつの11回目。

前回は、Google Geocoding APIを使い、住所から緯度/経度を取得するのを、Webブラウザからやってみました。

今回は、PerlからGoogle Geocoding APIにアクセスして情報を取得してみようと思います。


PerlからWebサービスにアクセスするのに便利な、WebService::Simpleというモジュールがありますので、これを使います。

あらかじめ、WebService::SimpleをCPANから取得してインストールしておいてください。

使い方は、

WebService::Simple - search.cpan.org [search.cpan.org]

を参照。ポイントは、返ってくる情報はJSONですので、パーサをJSONにしておくことです。

Filename: test10.pl

use strict;
use warnings;
use utf8;
use WebService::Simple;
use Data::Dumper;
 
my $geo = WebService::Simple->new(
    response_parser => 'JSON',
    base_url => 'http://maps.google.com/maps/api/geocode/',
    param    => {
      region   => 'jp',
      language => 'ja',
      sensor   => 'false',
    },  
);
my $address = '東京都港区台場2-4-8';
my $res = $geo->get( 'json', { address => $address } );
my $val = $res->parse_response();
print Dumper $val;
 
exit;
 
__END__

実行結果はこちら。

$VAR1 = { 
    'status' => 'OK',
    'results' => [
       {   
         'formatted_address' => "\x{e6}\x{97}\x{a5}\x{e6}\x{9c}\x{ac}, \x{e6}\x{9d}\x{b1}\x{e4}\x{ba}\x{ac}\x{e9}\x{83}\x{bd}\x{e6}\x{b8}\x{af}\x{e5}\x{8c}\x{ba}\x{e5}\x{8f}\x{b0}\x{e5}\x{a0}\x{b4}\x{ef}\x{bc}\x{92}\x{e4}\x{b8}\x{81}\x{e7}\x{9b}\x{ae}\x{ef}\x{bc}\x{94}\x{e2}\x{88}\x{92}\x{ef}\x{bc}\x{98}",
         'types' => [
          'sublocality_level_4',
          'sublocality',
          'political'
              ],  
         'address_components' => [
                 {   
                   'types' => [
                    'sublocality_level_4',
                    'sublocality',
                    'political'
                  ],  
                   'short_name' => "\x{ef}\x{bc}\x{98}",
                   'long_name' => "\x{ef}\x{bc}\x{98}"
                 },  
                 {   
                   'types' => [
                    'sublocality_level_3',
                    'sublocality',
                    'political'
                  ],  
                   'short_name' => "\x{ef}\x{bc}\x{94}",
                   'long_name' => "\x{ef}\x{bc}\x{94}"
                 },  
                 {   
                   'types' => [
                    'sublocality_level_2',
                    'sublocality',
                    'political'
                  ],  
                   'short_name' => "\x{ef}\x{bc}\x{92}\x{e4}\x{b8}\x{81}\x{e7}\x{9b}\x{ae}",
                   'long_name' => "\x{ef}\x{bc}\x{92}\x{e4}\x{b8}\x{81}\x{e7}\x{9b}\x{ae}"
                 }, 
                 {
                   'types' => [
                    'sublocality_level_1',
                    'sublocality',
                    'political'
                  ],
                   'short_name' => "\x{e5}\x{8f}\x{b0}\x{e5}\x{a0}\x{b4}",
                   'long_name' => "\x{e5}\x{8f}\x{b0}\x{e5}\x{a0}\x{b4}"
                 },
                 {
                   'types' => [
                    'locality',
                    'political'
                  ],
                   'short_name' => "\x{e6}\x{b8}\x{af}\x{e5}\x{8c}\x{ba}",
                   'long_name' => "\x{e6}\x{b8}\x{af}\x{e5}\x{8c}\x{ba}"
                 },
                 {
                   'types' => [
                    'administrative_area_level_1',
                    'political'
                  ],
                   'short_name' => "\x{e6}\x{9d}\x{b1}\x{e4}\x{ba}\x{ac}\x{e9}\x{83}\x{bd}",
                   'long_name' => "\x{e6}\x{9d}\x{b1}\x{e4}\x{ba}\x{ac}\x{e9}\x{83}\x{bd}"
                 },
                 {
                   'types' => [
                    'country',
                    'political'
                  ],
                   'short_name' => 'JP',
                   'long_name' => "\x{e6}\x{97}\x{a5}\x{e6}\x{9c}\x{ac}"
                 }
               ],
         'geometry' => {
             'viewport' => {
                 'southwest' => {
                      'lat' => '35.6235301',
                      'lng' => '139.7711484'
                    },
                 'northeast' => {
                      'lat' => '35.6298253',
                      'lng' => '139.7774436'
                    }
               },
             'location' => {
                 'lat' => '35.6266777',
                 'lng' => '139.774296'
               },
             'location_type' => 'APPROXIMATE'
           }
       }
           ]
  };

緯度は、$val->{results}->[0]->{geometry}->{location}-{lat}
経度は、$val->{results}->[0]->{geometry}->{location}-{lng}
で得られます。


次回は、アドビのサイトから取得した住所を使って、それぞれの印刷会社の所在地の座標を取得してみたいと思います。

月別 アーカイブ

ウェブページ

OpenID対応しています OpenIDについて
Powered by Movable Type 5.2.7

このアーカイブについて

このページには、2010年11月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2010年10月です。

次のアーカイブは2010年12月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。