M.C.P.C.

―むり・くり―プラスコミュニケーション


« 2009年9月 | トップページ | 2009年11月 »

2009.10.31

見ると縁起が良い夢ベスト102(ネタ)

飲み屋に行ったら飲み屋のオヤジに雑誌の切り抜きを渡されて、これをワープロ書きにして見やすく大きく印字しろって言うんだ。どうやら、飲み屋の客にうんちく傾けたいらしい。

で、入力した。

見ると縁起が良い夢ベスト102
300pt富士三十五68pt二毛作六十九34ptひと間違え
200pt三十六67pt自分探し七十33ptひざまくら
100pt茄子三十七66ptうるち米七十一32pt三白眼
99pt三十八65ptえら呼吸七十二31pt深爪
98pt煙草三十九64ptなわばり争い七十三30pt痴話喧嘩
97pt座頭四十63pt天日干し七十四29ptぬか喜び
96pt四十一62pt思い出し笑い七十五28pt百日咳
95ptぬか四十二61pt金のしゃちほこ七十六27pt生返事
94pt化粧四十三60pt勇み足七十七26pt狐の嫁入り
93pt骨折四十四59pt手づかみ七十八25pt衝動買い
十一92pt茶だんす四十五58ptどんぶり勘定七十九24pt金縛り
十二91pt発熱四十六57pt鰹のたたき八十23pt煎餅布団
十三90pt仇討ち四十七56pt直談判八十一22ptききん
十四89pt腹痛四十八55pt平あやまり八十二21pt帳尻合わせ
十五88pt返品四十九54pt乳しぼり八十三20pt徹夜明け
十六87pt蒸し海老五十53pt迷い箸八十四19pt口べらし
十七86pt空耳五十一52ptあいこ八十五18pt寺子屋
十八85ptへらず口五十二51pt雨宿り八十六17ptおろし金
十九84pt御用聞き五十三50pt消し忘れ八十七16pt手さげ袋
二十83pt乾燥肌五十四49ptがら空きの芝居小屋八十八15pt打ちこわし
二十一82pt貧乏ゆすり五十五48ptわらべうた八十九14pt朝寝坊
二十二81pt雪おろし五十六47pt四つんばい九十13pt金魚売り
二十三80pt大あくび五十七46pt下駄九十一12pt道場やぶり
二十四79ptななめ読み五十八45pt孤独九十二11pt手前みそ
二十五78ptお説教五十九44ptお手つき九十三10pt越後屋
二十六77pt厚着六十43pt肝吸い九十四9pt上目遣い
二十七76pt六十一42pt口内炎九十五8pt参勤交代
二十八75pt踊り食い六十二41pt送り迎え九十六7pt塹壕
二十九74pt地引き網漁六十三40pt開けっぱなし九十七6pt鎖国
三十73ptふんどし六十四39pt涙目九十八5pt棚卸し
三十一72pt五徳六十五38pt昼あんどん九十九4pt奥二重
三十二71pt箸置き六十六37pt泥試合3pt目安箱
三十三70ptちょんまげ六十七36pt化けちょうちん百一2pt土砂崩れ
三十四69pt痩せ我慢六十八35pt一家団欒百二1pt金屏風

おおひなたごう「犬のジュース屋さんZ」75杯目より


んと、一富士から六座頭までは、江戸時代の国語辞典(俗語含む)「俚言集覧(りげんしゅうらん)」に載っていることは確認できた。7から先が出典不明。嘘(創作)だと言ってよ、バーニィ!

というわけでこれネタだろ!

これがどうやって使われているかは、

を読んでみてください。4巻あたりに収録されていそうだけど分からん。

もうひとつ、

見ると縁起が悪い夢ワースト6
-300pt禿
-200pt
-100ptふて寝
-99pt
-98pt面皰
-97pt土砂崩れ

おおひなたごう「犬のジュース屋さんZ」75杯目より


というのも載っていた。これも漫画の中でどう使われているかは読んでみてもらうことで。ptっていうのがポイント。

[ネタ] | 固定リンク | コメント (0) | トラックバック (0) | このエントリーをはてなブックマークへ追加 livedoor Clipでこのサイトを登録している人数livedoor Clipでこの記事をクリップ!

2009.10.30

アドビのAcrobat用バイトサービングスクリプトが何をやっているか今ならわかる

AcrobatでWebからページごとのデータを分割して取得できるよう、サーバがHTTP/1.1のRangeに対応していない場合代わりにUAからの要求範囲を受け取ってPerlでPDFの特定部位を切り出して返すリダイレクトCGIなんですね。

http://www.adobe.com/jp/products/acrobat4/library/scripts/bsunix.txt

[Perl] | 固定リンク | コメント (0) | トラックバック (0) | このエントリーをはてなブックマークへ追加 livedoor Clipでこのサイトを登録している人数livedoor Clipでこの記事をクリップ!

2009.10.29

Adobe Creative Suite 出力対応店一覧をGoogle Mapsで表示させる(4)

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

前回は、アドビのサーバからHTTPステータスコードが200ばっかり返ってくるので、ステータスコードは使えないから、HTTPレスポンスヘッダを見てみよう、ということで、FirefoxのLive HTTP Headersという機能拡張を入れて調べたところ、ヘッダからはコンテンツの更新がわからないということがわかりました。ということは実際に取得してみなくてはわからないと言うことになりますが、どうしよう? ていうところまでやりました。

さて、アドビのサーバは、「取得したデータは取得した側で6時間キャッシュしてね。内容変更はヘッダでは教えてあげないよ。」と言っているわけなので、まず、6時間ごとアドビのサーバから取得すればいい、という方針が立ちます。従って、取得する部分は6時間ごと実行するようにcronに設定すればいいかなあということになります。

また、6時間ごと取得しても、内容に変化がないことがあるのも予想されますので、「内容に変化がない」ことを検出する仕組みを作らなくてはなりません。どうしよう。

そこで、今回は「取得したHTMLの長さを比較する」方法でいきたいと思います。なお、この方法は、AdobeさんがPDFの改変チェックで採用している由緒正しい古式ゆかり方式です。PDFのチェックサムの再計算とか知らなかったとき、ゲームのセーブデータをいじるがごとく手法でPDFをいじっていたのを思い出します。

今回のコードはこんな感じです。

#!/usr/bin/perl
 
# Filename: test3.pl
 
use strict;
use warnings;
use URI::Fetch;
use Cwd;
 
# GETしてきたコンテンツの長さを記録するファイル
my $cwd = getcwd; # カレントディレクトリ
my $length_file = "$cwd/length.txt";
# GETするコンテンツのURL(STATUSが常に200なので
# 内容変更調べるにはコンテンツの大きさを使う)
my $url= 'http://www.adobe.com/jp/print/printshop/';
 
# main
 
my $html = get_html($url);
print "modified:\n" if $html;
 
exit;
 
sub get_html {
  my $url = shift;
  # length.txtから前回取得時のコンテンツの大きさを
  # 取得するよ
  my $length = 0;
  if ( -e $length_file ) {
    open my $fh, '<', $length_file or die $!;
    $length = <$fh>;
    close $fh;
  }
  # Webからコンテンツを取得するよ
  my $ua = new LWP::UserAgent;
  $ua->timeout(10);
  $ua->agent('DTPWiki.jp AdobeJpPrintShopMap/0.1 '
           . '(+http://labo.dtpwiki.jp/printmap/)'
  );
  my $res = URI::Fetch->fetch(
    $url, UserAgent => $ua,
  ) or die URI::Fetch->errstr;
  my $html = $res->content;
  # 今回取得したWebコンテンツの大きさを記録するよ
  my $length_new = length($html);
  {
    open my $fh, '>', $length_file or die $!;
    print $fh $length_new;
    close $fh;
  }
  # 前回と大きさが変わらない場合はundef、
  # 変わっている場合はコンテンツを返すよ
  return ( $length == $length_new
             ? undef
             : $html
         );
}
 
__END__

実行結果:

$ perl test3.pl
modified:
$ perl test3.pl
$ cat length.txt
188685$ cat > length.txt 
120000
$ perl test3.pl
modified:
$ cat length.txt
188685$

1回目は更新と検出、2回目は変更なしと検出、length.txtファイルにはコンテンツのサイズが入っています。意図的にlength.txtファイルを書き換えてやると、その次に取得した場合は変更ありと検出されていることが確認できました。

ちなみに、length.txtに記録されるのは、HTTPレスポンスヘッダのContent-Lengthの値ではなくて、実際データとして利用できるコンテンツのサイズです。アドビのサーバからは、GZipエンコーディングで圧縮された状態で送られてくるのですが、URI::Fetchが自動的に伸張するのですね。

泥臭いですが何とかアドビさんからHTMLをGETするところができました。

次回は、いったんWebやHTTPから離れて、HTMLを解析するところをやりたいと思います。


(2009-10-30 14:00修正)

<del>由緒正しい</del><ins><a href="http://www3.airnet.ne.jp/gomimemo/tmron/yukari.htm" target="_blank">古式ゆかり</a>な</ins>

ブックマークのコメントで、「ダメな手法を真似したらダメ。ギャグのつもりならネタだと分かるようにかいてほしい」とOtsuneさんから指摘があったので、ギャグにしました。念のため、古式ゆかりは本命キャラ攻略失敗時に出てくるキャラです。

アドビの擁護をするならば、PDFはバイトサービングなどの細切れで転送される用途もあったため、ファイル全体のハッシュ値でファイルの健全性を確認する手法は使えなかったのかもなあと思っています。

[GoogleMaps] | 固定リンク | コメント (0) | トラックバック (0) | このエントリーをはてなブックマークへ追加 livedoor Clipでこのサイトを登録している人数livedoor Clipでこの記事をクリップ!

2009.10.28

CSS Nite in NIIGATA Vol.1に着ていく服がないので買ったがその日は出勤日になっていたでござる

2009年11月7日に、CSS Nite in NIIGATA Vol.1があるということで、「あー外に着ていく服ないなー」とおもって服を買ってきてこれで万全と思ってさあ申し込もうかと思ってその前に会社の出勤ローテーション見たらどう見ても出勤で、他の人は何やら代休となっていて僕が休みにするといろいろ迷惑かかりそーな感じになっていたので(OSC 2009 Niigataもほかの人と休みを動かしてもらって出席した)、出席できなくなりました。

服買うお金でぼろぼろの背広を新調すればよかった気がしてきました。

それはともかく、ローマ字書きの時ってNIIGATAって長音でIを重ねるのが普通なのな。僕出身が県外なんで、けっこう気になりますね。

[Web] | 固定リンク | コメント (0) | トラックバック (0) | このエントリーをはてなブックマークへ追加 livedoor Clipでこのサイトを登録している人数livedoor Clipでこの記事をクリップ!

2009.10.27

Adobe Creative Suite 出力対応店一覧をGoogle Mapsで表示させる(3)

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

前回は、無駄なジオコーディング問い合わせを発生させないためにも、アドビのWebサーバにあるHTMLコンテンツが更新されたかどうかを確認する必要があり、そのために、HTTPのステータスコードを使おうかと思ったんだけど、アドビのサーバから返ってくるステータスコードは200ばっかり、いい加減にしろ! というところまでやりました。

ステータスコードは、単純にURLで示された先のコンテンツの状態がわかるものでしたが、もうちょっと詳しい情報を得たい場合は、HTTPレスポンスヘッダを見ます。

HTTPレスポンスヘッダなんですが、CGIを作ったり、よそのWebサーバからコンテンツをGETしたりHEADしたりする業務をやっている人はおなじみなんですけれども、このレスポンスヘッダを調べるには、Firefoxの機能拡張、Live HTTP Headersが便利です。名前も特徴があって、Googleで検索するとすぐ出てくるのがよい。

Live HTTP Headers :: Add-ons for Firefox [addons.mozilla.org]

これをFirefoxに入れますと、メニューの「ツール」あたりに「Live HTTP Headers」ていう選択肢が出てきます。こいつを選ぶと、別ウィンドウに、レスポンスヘッダ表示がされるという仕組みです。

早速、自分んちと、アドビでためしてみたよ。

まず、自分んち。アドビのコンテンツをそのままwgetしてきてWebにおいたやつ。

Adobeprintshopheader01s

つぎ、アドビのサイトから。

Adobeprintshopheader02s

アドビのサイトからHTMLを取得した場合、“Last-Modified”ヘッダが発行されないみたい。CGIで動的コンテンツを作ったときのようなヘッダです。あと、コンテンツが変更されているかどうかの手がかりになる“Etag”ヘッダもない。

同様なレスポンスヘッダを返す例として、動的生成しているRSSなどがありまして、印刷・DTP関連でいえば、「DTP駆け込み寺BBS」のRSSはこのタイプのコンテンツです。

~~~

そんで、アドビのサーバから送り返されたレスポンスヘッダの意味は、「このコンテンツは今から21600秒有効です。おまえの方でキャッシュ管理してね。ヘッダだけだと、21600秒内でコンテンツの内容変更があったかどうかは教えてあげないよ。」

ていう意味なんで、最新の情報が欲しければ、実際にコンテンツを読み込め、というご指示だと判断します。

というわけで、次回は、ステータスコードが信用ならない、レスポンスヘッダも信用にならない場合、どうやってコンテンツが更新されたかを知るか、という方法を考えます。先なげーなー

[GoogleMaps] | 固定リンク | コメント (0) | トラックバック (0) | このエントリーをはてなブックマークへ追加 livedoor Clipでこのサイトを登録している人数livedoor Clipでこの記事をクリップ!

2009.10.26

Adobe Creative Suite 出力対応店一覧をGoogle Mapsで表示させる(2)

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

前回は、アドビのページから、HTMLを取得するところをやりました。

HTMLを取得するときに、キャッシュをして、コンテンツに変更がない場合は、キャッシュから使うような仕組みにしました。

さて、データを取得したかどうか、というのは、この後控えているジオコーディング(住所から経度緯度を取得する)をするかしないか、という判断に使うことになるので、重要です。

それを判断するためには、HTTPのステータスコードを使います。

ステータスコードというのは、404 Not foundとかいうところの404とかの数字で、サーバにURLを伝えてコンテンツの要求をしたとき、サーバからそのURLで示されるコンテンツがどうなっているかを知らせるために使うものです。

ステータスコード/意味

  • 200 Found
  • 404 Not Found
  • 304 Not Modified

今回関係ありそうなのはこの程度。

それで、ステータスコードを表示するように改良したソースを以下に示します。

Filename: test2.pl

#!/usr/bin/perl
 
# Filename: test2.pl
 
use strict;
use warnings;
use Cache::File;
use URI::Fetch;
use Cwd;
my $cwd = getcwd;
my $cache = Cache::File->new(
              cache_root =>  "$cwd/cache",
            );
 
my $ua = new LWP::UserAgent;
$ua->timeout(10);
$ua->agent('DTPWiki.jp AdobeJpPrintShopMap/0.1 '
         . '(+http://labo.dtpwiki.jp/printmap/)'
     );
 
my $res = URI::Fetch->fetch(
  'http://www.adobe.com/jp/print/printshop/',
  Cache     => $cache,
  UserAgent => $ua,
) or die URI::Fetch->errstr;
 
my $html = $res->content;
print $res->http_status."\n";
 
__END__


さてこれを実行してみて、ステータスコードを観察しましょう。

$ perl test2.pl
200
$ perl test2.pl
200
$

……ええと、想定では、2回目の実行は304が返ってくるはずなのですが。

調べてみたところ、アドビのプリントショップリストのページがあるURLに関しては、毎回必ず200を返すようになっていました。なんだって!

手持ちのWebサーバの静的コンテンツのURLを指定した場合は、ちゃんと1回目が200、2回目が304になるんです。

というわけで、このプログラムだと、コンテンツの更新があったかどうかを検出することができないということになりました。

ちょっと考えなくてはいけないようですね。(続く

[GoogleMaps] | 固定リンク | コメント (0) | トラックバック (0) | このエントリーをはてなブックマークへ追加 livedoor Clipでこのサイトを登録している人数livedoor Clipでこの記事をクリップ!

2009.10.25

Adobe Creative Suite 出力対応店一覧をGoogle Mapsで表示させる(1)

CreativeSuite4出力店募集中!! - いわもとぶろぐ [blogs.adobe.com]

全国の会社様を案内しているのですが、意外に私の地元
千葉からも応募がなかったり...

地図で出せっつーの!(CV:丹下桜)

というわけで、

http://www.adobe.com/jp/print/printshop/

のCS4対応ショップをGoogle Mapsで表示させる奴、今回は、時間をかけてやりたいと思います。

まず、今回は、アドビのサイトから印刷屋さん一覧のHTMLをギるところからです。ギるの語源はギルティーだってネタはどっからやってきたんだろうな。さっきまで誤用してたじゃないか。くそーLe.Chocolatめ!

環境はLinuxのPerl 5.8.6です。

Filename: test1.pl

#!/usr/bin/perl
 
# Filename: test1.pl
 
use strict;
use warnings;
use Cache::File;
use URI::Fetch;
use Cwd;
my $cwd = getcwd;
my $cache = Cache::File->new(
              cache_root =>  "$cwd/cache",
            );
 
my $ua = new LWP::UserAgent;
$ua->timeout(10);
$ua->agent('DTPWiki.jp AdobeJpPrintShopMap/0.1 '
         . '(+http://labo.dtpwiki.jp/printmap/)'
     );
 
my $res = URI::Fetch->fetch(
  'http://www.adobe.com/jp/print/printshop/',
  Cache     => $cache,
  UserAgent => $ua,
) or die URI::Fetch->errstr;
 
my $html = $res->content;
print $html;
 
__END__

ちゃんとUser-Agentを名乗ってhttp://www.adobe.com/jp/print/printshop/からHTMLを取得します。また、実行ディレクトリの下にcacheフォルダを作ってキャッシュすることにして、コンテンツが変更ない場合はWebから取得しなくするなどしました。

上の例では、アドビさんのURLを指定しているのですけれども、キャッシュがきいていなかったりとか、User-Agentの変更がきいていなかったりするので、最初は自分が取り扱えるWebサーバを指定して、ログを見て判断するようにしましょう。

さっき、URI::Fetch 0.72とか入っていて、最新版LWPとバージョンが合わず、User-Agent変更がきいてなかったりしました。

次回は、取得したHTMLコンテンツを解析して、プログラムで扱えるようなリストにするところまでやろうかなあと思います。でも、取得したコンテンツがキャッシュにヒットしたやつなのか、Webから取得したやつなのか判断するのが必要かも。


(2009-10-25 14:13追記)

次のエントリ書くために調べていたんですけれども、Adobeのリストが載っているページは、常にHTTPのステータスコード200を返すということがわかりました……どうしよう……

[GoogleMaps] | 固定リンク | コメント (0) | トラックバック (0) | このエントリーをはてなブックマークへ追加 livedoor Clipでこのサイトを登録している人数livedoor Clipでこの記事をクリップ!

2009.10.24

はてなが「合言葉はB!」とかいうおっさんホイホイネタを投入していたが

合い言葉は「B!」びーびっくり!Twitterからのつぶやきでお手軽にブックマークできる連携機能が登場 - はてな広報ブログ [d.hatena.ne.jp]


タイトルが出オチすぎる

こんなのもあるよ

C4exe
▲p1.exeではない

問題(各10点)

  • どこら辺がおっさんホイホイなのか
  • C!って何ぞ
  • Zドライブでない件について考察せよ

IMEがMS-IME2007でこうだまりこが変換できなかった…別れたい。

     ∧_∧
     ( ゚ω゚ ) 合言葉は?
BeeBeeC□l丶l丶
     /  (   ) やめて!
     (ノ ̄と、 i
        しーJ

[オタ] | 固定リンク | コメント (0) | トラックバック (0) | このエントリーをはてなブックマークへ追加 livedoor Clipでこのサイトを登録している人数livedoor Clipでこの記事をクリップ!

2009.10.23

HT-03AのAndroidが1.6になってdocomo回線で16MB(追記あり)

GoogleケータイHT-03AのOSがアップグレードして16MBのアップデータを3G回線で自動で落としてアップデートが実施されるそうな。僕の端末ではまだ落ちてこないけど。

んで、16MBのパケット代をパケット定額制に入っていないとかなり高い、ていうので困ったねーていう話で、3G回線をこまめにOffにして使っている人(APNdroidとか使うと3G回線の発呼止められる)とか困るねーとは思います。

でもだ、僕もそうやって使ってみても簡単にパケホーダイBizダブルの天井まで簡単に行ってしまうんですよね。

Googleサービスを利用する場合専用の書類って確かにありましたね。ここで活きるのか。

(2009-10-24 10:10追記)

HT-03AのOSアップデート、定額制加入を強く推奨 - ケータイ Watch [k-tai.impress.co.jp]

 なお、更新ファイルは無線LANに接続された状態でもダウンロードできるが、ダウンロードのタイミングは指定できないため、意図的に無線LANでのみダウンロードさせることは難しくなっている。

とか書いている。手動更新メニューつければ一発解決な気がするなあ。

[日記・コラム・つぶやき] | 固定リンク | コメント (0) | トラックバック (0) | このエントリーをはてなブックマークへ追加 livedoor Clipでこのサイトを登録している人数livedoor Clipでこの記事をクリップ!

2009.10.22

Google Maps APIを使って住所リストからGoogle Mapsに表示するまで

印刷業界の仲間に、印刷ネタでWebコンテンツを作ってみることを促すシリーズ。

住所リストがあって、緯度経度を知りたい、というときに、Google Maps APIのジオコーディングが使えます。

今回は、日本印刷産業連合会のウェブサイトで、環境に配慮した印刷会社、グリーンプリンティング認定工場のリストがあったのでこれの第13回認定工場一覧を使います。

http://www.jfpi.or.jp/greenprinting/introduction/index.html

Googleapigeocoding01
▲まじこれ見て発注してくださいよーたのんまっすよー

まず、Googleで「Google Maps API Geocoding」で検索すると出てくる

http://code.google.com/intl/ja/apis/maps/documentation/services.html

から、ジオコーディングの「例を表示 (geocoding-simple.html)」

http://code.google.com/intl/ja-JP/apis/maps/documentation/examples/geocoding-simple.html

にサンプルが有ります。ここのサンプルの動作を一通り楽しんだ後、Operaで「ページのソースを表示」を選択します。

次に、おもむろにソースをこのように改変します。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
    <script src="http://maps.google.co.jp/maps?hl=ja&amp;file=api&amp;v=2.x&amp;key=(略)" type="text/javascript"></script>
    <script type="text/javascript">
    var list = [
['オフセット','A10007','宝印刷株式会社','印刷部浮間工場','東京都北区浮間4-24-23','H21.9.30','H24.9.29'],
['オフセット','B10099','六三印刷株式会社','水沢工場','岩手県奥州市水沢区佐倉河字仙人6-1','H21.9.30','H24.9.29'],
['オフセット','B10100','株式会社アカマ印刷','本社工場','山口県下関市長府扇町9-10','H21.9.30','H24.9.29'],
['オフセット','B10101','株式会社橋本清文堂','','石川県金沢市示野町南51','H21.9.30','H24.9.29'],
['オフセット','B10102','株式会社金羊社','本社','東京都大田区鵜の木2-8-4','H21.9.30','H24.9.29'],
['オフセット','B10103','株式会社山口県農協印刷','','山口県山口市嘉川668-1','H21.9.30','H24.9.29'],
['オフセット','B10104','株式会社ソーエイ','','兵庫県明石市樽屋町6-6','H21.9.30','H24.9.29'],
['オフセット','B10105','冨士オフセット印刷株式会社','','茨城県水戸市根本3-1534-2','H21.9.30','H24.9.29'],
['オフセット','B10106','株式会社横山印刷','','茨城県土浦市卸町2-6-6','H21.9.30','H24.9.29'],
['オフセット','D10004','あさひ高速印刷株式会社','本社・本社工場','大阪府大阪市西区江戸堀2-1-13','H21.9.30','H24.9.29'],
['オフセット','F10017','小澤製本株式会社','本社工場','東京都荒川区西尾久8-27-3','H21.9.30','H24.9.29'],
['オフセット','J10003','株式会社大和紙工業','本社工場','埼玉県和光市新倉7-12-13','H21.9.30','H24.9.29'],
['オフセット','J10004','興亜産業株式会社','本社工場','東京都板橋区高島平1-55-16','H21.9.30','H24.9.29'],
['シール','G20010','株式会社ヒロミ産業','','北海道札幌市西区発寒14条2-2-21','H21.9.30','H24.9.29'],
['グラビア','H30020','北海紙工業株式会社','','北海道小樽市銭函3-524-15','H21.9.30','H24.9.29'],
['グラビア','H30021','株式会社東和プロセス','川口工場','埼玉県川口市領家5-8-18','H21.9.30','H24.9.29']
    ];
    var last = list.length;
    var timer;
    var count = 0;
    var geocoder = null;
    function initialize() {
      if (GBrowserIsCompatible()) {
        geocoder = new GClientGeocoder();
      }
    }
    function showAddress() {
      address = list[count][4];
      if (geocoder) {
        geocoder.getLatLng(
          address,
          function(point) {
            if (!point) {
              document.getElementById('list').innerHTML
                += address + ",not found,\n";
            } else {
              document.getElementById('list').innerHTML
                += address + "," + point.toUrlValue() + "\n";
            }
            count ++;
            if ( count != last ) timer = setTimeout( showAddress, 3000 );
          }
        );
      }
    }
    </script>
  </head>
 
  <body onload="initialize();showAddress();" onunload="GUnload()">
    <textarea id="list" style="width: 100%; height: 300px;"></textarea>
  </body>
</html>

そして、Operaのページソースタブの「更新を適用」ボタンを押すと、Google Maps APIのジオコーディング問い合わせに3秒ごとに問い合わせてtextareaに書き出すことができます。

Googleapigeocoding02

textareaの部分をコピペして、緯度経度をlistに反映。手作業ですw

反映した後地図に表示させるコードはこんな感じ。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
    <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=(自分が取得したkeyに置き換えてね)"
      type="text/javascript"></script>
    <script type="text/javascript">
    var list = [
['オフセット','A10007','宝印刷株式会社','印刷部浮間工場','東京都北区浮間4-24-23','H21.9.30','H24.9.29',35.78669,139.690808],
['オフセット','B10099','六三印刷株式会社','水沢工場','岩手県奥州市水沢区佐倉河字仙人6-1','H21.9.30','H24.9.29',39.160941,141.152834],
['オフセット','B10100','株式会社アカマ印刷','本社工場','山口県下関市長府扇町9-10','H21.9.30','H24.9.29',34.020314,131.017882],
['オフセット','B10101','株式会社橋本清文堂','','石川県金沢市示野町南51','H21.9.30','H24.9.29',36.576984,136.608892],
['オフセット','B10102','株式会社金羊社','本社','東京都大田区鵜の木2-8-4','H21.9.30','H24.9.29',35.573727,139.682746],
['オフセット','B10103','株式会社山口県農協印刷','','山口県山口市嘉川668-1','H21.9.30','H24.9.29',34.075746,131.394741],
['オフセット','B10104','株式会社ソーエイ','','兵庫県明石市樽屋町6-6','H21.9.30','H24.9.29',34.646664,134.986707],
['オフセット','B10105','冨士オフセット印刷株式会社','','茨城県水戸市根本3-1534-2','H21.9.30','H24.9.29',36.387537,140.465555],
['オフセット','B10106','株式会社横山印刷','','茨城県土浦市卸町2-6-6','H21.9.30','H24.9.29',36.047697,140.145749],
['オフセット','D10004','あさひ高速印刷株式会社','本社・本社工場','大阪府大阪市西区江戸堀2-1-13','H21.9.30','H24.9.29',34.687638,135.490952],
['オフセット','F10017','小澤製本株式会社','本社工場','東京都荒川区西尾久8-27-3','H21.9.30','H24.9.29',35.75246,139.754298],
['オフセット','J10003','株式会社大和紙工業','本社工場','埼玉県和光市新倉7-12-13','H21.9.30','H24.9.29',35.802047,139.621708],
['オフセット','J10004','興亜産業株式会社','本社工場','東京都板橋区高島平1-55-16','H21.9.30','H24.9.29',35.784187,139.673496],
['シール','G20010','株式会社ヒロミ産業','','北海道札幌市西区発寒14条2-2-21','H21.9.30','H24.9.29',43.098772,141.296774],
['グラビア','H30020','北海紙工業株式会社','','北海道小樽市銭函3-524-15','H21.9.30','H24.9.29',43.137071,141.179022],
['グラビア','H30021','株式会社東和プロセス','川口工場','埼玉県川口市領家5-8-18','H21.9.30','H24.9.29',35.788408,139.742903]
    ];
    var last = list.length;
    var count = 0;
    function initialize() {
      if ( GBrowserIsCompatible() ) {
        var map   = new GMap2( document.getElementById("map_canvas") );
        map.addControl(new GLargeMapControl() );
        map.addControl(new GMapTypeControl () );
        var point = new GLatLng(36.03, 139.15);
        map.setCenter(point, 8);
        
        var markers = [];
        var gb;
        var first = 1;
        var manager = new GMarkerManager(map);
        for ( count = 0; count < last; count++ ) {
          var point = new GLatLng( list[count][7], list[count][8] );
          var marker = new GMarker(point);
          markers.push( marker );
          if( first ){
            gb = new GLatLngBounds( marker.getPoint(), marker.getPoint() );
            first = 0;
          }
          else {
            var point = marker.getPoint();
            gb.extend( point );
          }
        }
        manager.addMarkers( markers, 0 );
        map.setCenter( gb.getCenter(), map.getBoundsZoomLevel( gb ) );
        manager.refresh();
      }
    }
    </script>
  </head>
 
  <body onload="initialize();" onunload="GUnload()">
    <div id="map_canvas" style="width: 900px; height: 600px;"></div>
  </body>
</html>

クリックすると社名が表示されるなどは実装していないけれども(賞味30分仕事だし)、配列に持っているからすぐできると思います。

地図に表示させるのは結構簡単なので、手持ちの住所リストでやってみるとおもしろいと思います。

本来は3回ぐらいに分けてやればいいネタだけど1回で終わってしまった……。

[Web] | 固定リンク | コメント (0) | トラックバック (1) | このエントリーをはてなブックマークへ追加 livedoor Clipでこのサイトを登録している人数livedoor Clipでこの記事をクリップ!

< 最後 « これより前10ä»¶ | 全件