投稿者「」のアーカイブ

自分のメールアドレスからのスパムメール

2019年2月11日

自分のメールアドレスからスパムメールが送られてきました。
ちょっと気味が悪いのでネットで調べてみました。
Return-Pathの項目が同一のメールアドレスでなければ問題ないという事でしたがReturn-Pathも自分のメールアドレスでした。
ちなみに、そのスパムメールの主なデータは下記の通りです。
(Mozilla Thunderbird の場合は表示—-ヘッダー—すべて にすると表示されます)

差出人
kimassi@spacelan.ne.jp

Return-Path
kimassi@spacelan.ne.jp

最初の時間のReceived
from 39342E3137382E3230312E313534.XNGG4.SBWZQ.yrwoomocefinydcftn.icu (154-201-178-94.pool.ukrtel.net [94.178.201.154]) by chdom02.cm02.cloud-mail.jp (3.11g) with ESMTP id x1ADZjb9019275 for <kimassi@spacelan.ne.jp>; Sun, 10 Feb 2019 22:35:46 +0900 (JST)

内容は以上の通りです。

悪い日本人のために申し訳ありません。
あなたのメールアカウントをハッキングしました。
私はあなたのコンピューターをハッキングした。
私はあなたがポルノを見て見る。
私はあなたのウェブカメラで自慰行為を記録した。
あなたは私に(100000円)を支払わなければなりません。
あなたは48時間があります。
あなたが払っていない場合、私はあなたの隣人とあなたの家族や同僚にビデオを送信します。
あなたはbitcoinで支払う必要があります。
私のbitcoinアドレス:
1JacuT532ozUUtoTHHuXadZrR1yDnmu32K
あなたはbitcoinを購入する方法をgoogleできます。
あなたは48時間で支払っていない場合、私はあなたの連絡先にビデオを送信します。
あなたは非常に特別なポルノの味があります!
将来的には安全に保管してください。

Return-Pathも自分のメールアドレスだったのが気になったので、金沢ケーブルテレビに問い合わせしました。
16時間たちましたが返答はありません。

2019年2月12日

メールで問い合わせして30時間たったけど、金沢ケーブルテレビからは何の返答もありません。

2019年2月14日

相変わらず、返答がありません。
金沢ケーブルテレビのインフォメーションへの問い合わせに先がけて、その前日に前回問い合わせた時に返信があったサポートのメールアドレスにもメール送ったのですが、両方とも返信がありません。

前回は、自分のサイトの掲示板への自分の投稿が『IPアドレスが「逆引き出来ないホスト」のため投稿が拒否される』というトラブルがあって、対応してもらったのです。完全に金沢ケーブルテレビ側のミスでした。

2019年2月15日

結局、金沢ケーブルテレビのインフォメーションからもサポートからも全く返答がありませんでした。
金沢ケーブルテレビはお奨めしません。トラブルも多いしね・・・

2019年3月7日

日経ビジネスの記事で、似たような話が記事になっていました。
ポルノのウェブサイトにマルウェア(ウイルスなど悪意のあるソフトウェア)を置き、ポルノを視聴しているデバイス画面をキャプチャした映像と、デバイスのカメラで撮ったポルノ鑑賞中の使用者の映像を取得したうえ、デバイスから知人の連絡先の一覧も入手したと脅迫。「570ドル(約6万3000円)が私たちの小さな秘密な公正の価格」との言葉とともに、2日間の期限と支払先のビットコインアドレスを示したという。

そのメールには、、被害者がメールサービスなどに使用しているパスワードが記載されているということです。

脅迫メールの送信主のビットコイン口座を追跡調査すると、昨年9月以降、世界で1000件程度の払い込みがあり、総額で約4300万円に上るという。

メールのパスワードなんて、他のサイトで登録するものではないのに、なんで漏れるのか不思議なのですが、よく考えたらメールを受け取れる端末を8台持っているのですが、スマートフォンのメールアプリはあまり有名でないものも試しに使っているので漏れる可能性が無いわけではないです。

それにしても、メールのパスワードが漏れてるかもしれないと相談しているのに、何の返事もアドバイスもしない金沢ケーブルテレビは通信業者の体を成していないです。

そもそもメールのパスワードって自分で簡単に変えられるのかなあ(笑!)

2019年3月11日

Аmazon を語ったスパムメールがきました。
「Аmazon を更新できませんでした。
これは、カードが期限切れになったか。請求先住所が変更されたなど、さまざまな理由で発生する可能性があります。アカウント情報の一部が誤っている故に、お客様のアカウントを維持するため Аmazon 情報を確認する必要・ェあります。今アカウントを確認できます。」
というような内容のメールです。
差出人のアドレスは account-update@amazon.co.jp です。
最初のReceivedは
from xjb (10.119.73.34.bc.googleusercontent.com [34.73.119.10]) by dkshared103.ssl-sys.jp (Postfix) with ESMTPSA id A62EE1B80405 for <kimassi@spacelan.ne.jp>; Sun, 10 Mar 2019 15:07:16 +0900 (JST)
になっています。
Return-Pathは
<apple-004@xinshijie666.info>
なので明らかにスパムメールです。

Аmazon 注文時の正規のメールは
差出人のアドレスはAmazon.co.jp” <auto-confirm@amazon.co.jp>
最初のReceivedは
from a25-11.smtp-out.us-west-2.amazonses.com (a25-11.smtp-out.us-west-2.amazonses.com [54.240.25.11]) by chdom01.cm02.cloud-mail.jp (3.11g) with ESMTP id x1R8KJ9F005427 for <kimassi@spacelan.ne.jp>; Wed, 27 Feb 2019 17:20:20 +0900 (JST)
になっています。
Return-Path:は
<20190227082016e51241a873ff40db9f713437c660p0fe@bounces.amazon.co.jp>
なので本物だと判断できます。

誕生日に地元のホテルに泊まるとお得?

楽天トラベルの宿の価格設定を見ていて気付いたのですが、最近、誕生日当日にシングルで宿泊する場合の料金って異常に安く設定されているんです。
それこそ1泊1円からあったりします。
これって、ホテルが誕生日のお祝いをするという意味合いで設定している訳ではなく、料金が安い順で検索した場合に、一番目立つようにという戦略的な意味合いが強いと思われます。
誕生日に1人で宿泊する人って、確率的には極めて小さいので、広告費用を使うより有効に宣伝できるという事だと思います。
それにしても、ホテルリブマックス金沢医大前、ゆにろーず金沢TS店、ホテルトレンド金沢駅前の70歳以上誕生日1人宿泊に限るって条件はシャレにもならん。

でも、誕生日に地元のホテルに泊まって気分転換するっていうのもありではないかと思います。
まあ、地元である必要が無いんですけど・・・・

PHPで楽天APIを利用

せっかくPHPの勉強をしたので、楽天APIを利用したページ作りにトライしました。

楽天APIの一覧で使いたいAPIを選んでおきます。
https://webservice.rakuten.co.jp/document/

まずは、楽天のデベロッパーIDとアフィリエイトIDを取得しないと始まりません。
https://webservice.rakuten.co.jp/
で新規アプリ登録をします。使うのは楽天トラベルの空室検索APIです。
登録が終わるとデベロッパーIDとアフィリエイトIDが表示されます。
自分の場合は
1089363386770913344
15040cf4.7d33bce5.15040cf5.078e12d9
でした。

公開API活用ガイド(ZAPA)の楽天APIに関するPHPプログラムを動作させてみました。
ソースファイルrakuten.phpは
http://www.kohgakusha.co.jp/support.html
で入手できます。
でも動作しませんでした(笑!)
楽天側の仕様が変わったのだと思います

これじゃあ話にならないという事で、とにかく楽天APIを動作させるPHPのサンプルプログラムをネットで探してみました。いくつか試したのですが、いずれもエラー表示が出るものばかりで使い物になりません。
http://connet.lolipop.jp/agoranet/rakutenaff/
でやっと自分の環境でも動作するPHPファイルを見つけました。
それを参考に、公開API活用ガイド(ZAPA)の楽天APIに関するPHPプログラムを改変して、やっと動作させることに成功しました。
設定した検索ワードに基づいて、5件分の画像が表示され、画像をクリックするとアフィリエイトIDをクッキーに埋め込み、対象ページに移動するプログラムです。

青文字は各自のIDを入れないといけないし、赤文字は今回書き換えた部分です。

<!DOCTYPE html >
<html lang=”ja”>
<head>
<meta charset=utf-8″>
<meta name=”viewport” content=”width=device-width, initial-scale=1, shrink-to-fit=no”>
<title>Rakuten API sample</title>

</head>
<body>
<?php

//楽天から商品を検索してHTMLタグを返す関数
function search_rakuten($keyword,$limit){

//developerIdを設定する
$applicationId = ‘1089363386770913344‘;

//affiliateIdを設定する
$affiliateId = ‘15040cf4.7d33bce5.15040cf5.078e12d9‘;

//バージョンを設定する
$version = ‘2017-07-06‘;

//取得件数を設定する
$hits = $limit;

//検索キーワードをURLエンコードして設定する
$text = urlencode($keyword);

//人気の高い順に検索する
$sort = urlencode(“standard”);

//URLを生成する
$url = ‘https://app.rakuten.co.jp/services/api/IchibaItem/Search/20170706?format=xml’.
‘&applicationId=’.$applicationId.
‘&affiliateId=’.$affiliateId.
‘&version=’.$version.
‘&keyword=’.$text.
‘&hits=’.$hits.
‘&sort=’.$sort;

//RESTで返されるXMLファイルを取得する
$str = @file_get_contents($url);

//XMLを解析してオブジェクトにセットする
$xml = simplexml_load_string($str);

//xpathによって、Item要素だけを取り出す
$Items = $xml->Items->Item;

//divタグでくくる
$ret = ‘<div id=”rakuten_item”>’;

//Item数だけ繰り返す
foreach($Items as $Item){
$ret .= ‘<a href=”‘.$Item->affiliateUrl.'”>’;
$ret .= ‘<img src=”‘.$Item->mediumImageUrls->imageUrl.'” >’;
$ret .= “</a>\n”;
}

//divタグを閉じる
$ret .= ‘</div>’;

//作成したHTMLを返す
return $ret;
}

//検索ワードを設定する
$keyword = “スイーツ”;

//取得数を設定する
$limit = 5;

//楽天から商品を検索して表示する
echo search_rakuten($keyword,$limit);

?>
<br>
<!– Rakuten Web Services Attribution Snippet FROM HERE –>
<a href=”https://webservice.rakuten.co.jp/” target=”_blank”>Supported by 楽天ウェブサービス</a>
<!– Rakuten Web Services Attribution Snippet TO HERE –>
</body>
</html>

オープンデータの情報をPHPでGooglemapに埋め込む

2019年2月24日

Googlemapにオープンデータの情報を入力して表示する為にPHPを利用できないかと頑張ってみました。
オープンデータの情報を取り出してPHPで処理して、下記に必要なデータを埋め込めば楽だと思ったのです。
せっかくPHPの勉強したんだから使わないと上達しません。

{
name: ‘<table><tr><td>金沢駅西口時計駐車場</td></tr><tr><td >24時間<br>収容台数:1500台</td></tr></table>’,
lat: 36.5806,
lng: 136.648722,
icon: ‘tam1.gif’ // 金沢駅西口時計駐車場のイメージpng
},
{
name: ‘<table><tr><td>金沢駅西広場一般車駐車場</td></tr><tr><td >24時間<br>収容台数:68台</td></tr></table>’,
lat: 36.57949,
lng: 136.647391,
icon: ‘tam2.gif’ // 金沢駅西広場一般車駐車場のイメージpng

},

{
name: ‘<table><tr><td>東山観光駐車場</td></tr><tr><td>午前7時~午後10時<br>収容台数:15台</td></tr></table>’,
lat: 36.573087,
lng: 136.665389,
icon: ‘tam3.gif’ // 東山観光駐車場jpg

}

金沢市の駐車場・駐輪場のオープンデータはCSV形式でID,地域,緯度,経度,ジャンル1,サブジャンル1,ジャンル2,サブジャンル2,ジャンル3,サブジャンル3,名称,概略(収納台数),郵便番号,住所,電話番号,FAX番号,E-mail,開館時間,休館日,料金,備考,リンクの項目があります。

そのまま使えるようなPHPプログラムにしても良いのですが、少しでも簡単にという事で、必要なデータだけ残すことにしました。
最初に駐輪場のデータを削除しました。
緯度,経度,名称,概略(収容台数),開館時間の4項目(列)だけ残して残りの項目を削除しました。
1行目の項目名も削除しました。
ファイル名をshisetsu_parkingre.csvにして、datafフォルダに入れました。
h.phpファイルをlibフォルダに入れました。

h.phpファイルの内容は

<?php
function h($var) // HTMLでのエスケープ処理をする関数
{
if (is_array($var)) {
return array_map(‘h’, $var);
} else {
return htmlspecialchars($var, ENT_QUOTES, ‘UTF-8’);
}
}
/* ?>終了タグ省略 ☆レシピ001☆(サーバーのPHP情報を知りたい) */

です。

オープンデータをGooglemap用に埋め込むプログラムはread_csv.phpです。

<?php
# h()関数☆レシピ221☆(安全にブラウザで値を表示したい)を読み込みます☆レシピ041☆(他のファイルを取り込んで利用したい)。
require_once ‘./lib/h.php’;

// CSVファイルはWindowsのExcelで作成したSJISエンコード
$csvFile = ‘./data/shisetsu_parkingre.csv’;
if (! file_exists($csvFile)) {
die(‘ファイルが存在しません。’);
}

// 文字化け対策
# CSVファイルの中身をすべて取り込みます。
$tempCSV = file_get_contents($csvFile);
# 文字エンコードをUTF-8に変換します☆レシピ058☆(文字エンコードを変換したい)。
$tempCSV = mb_convert_encoding($tempCSV, ‘UTF-8’, ‘CP932’);
# 一時ファイルに保存します。
$fp = tmpfile();
fwrite($fp, $tempCSV);
# ファイルポインタを先頭に戻します。
rewind($fp);
# ローケルを設定します。
setlocale(LC_ALL, ‘ja_JP.UTF-8’);

$file = ‘people.txt’;
$n=1;
while ($arr = fgetcsv($fp)) {
if (! array_diff($arr, array(”))) { // 空行を除外
continue;
}
list($lat, $lng, $name,$syuunou,$time) = $arr;
// nl2br()関数で要素内改行を<br>に変換
$person = ‘{name: \'<table><tr><td>’.nl2br(h($name), false) . ‘</td></tr><tr><td >’.nl2br(h($time), false) .'<br>’ . nl2br(h($syuunou), false) . ‘</td></tr></table>\’,’
.’lat:’ . nl2br(h($lat), false).’,’
.’lng: ‘. nl2br(h($lng), false) .’,’
. ‘icon: \’tam’.$n.’.gif\’ //’.nl2br(h($name), false) .’イメージgif’.”\n”.’},’.”\n”

;
file_put_contents($file, $person, FILE_APPEND | LOCK_EX);
$n=$n+1;
}

# ファイルのロックを解除します。
fflush($fp);
flock($fp, LOCK_UN);

# ファイルを閉じます。
fclose($fp);

?>

以上です。people.txtというファイルに出力されます。
一番最後のデータの }, は } に書き換えて埋め込みます。

埋め込みが完了したページは
https://kimassi.net/test/test5F.html
です。

ちなみに、概要のページtest5F.htmlのソースは下記の通りです。

<html>
<head>
<META charset=”UTF-8″>
<META name=”GENERATOR” content=”JustSystems Homepage Builder Version 21.0.5.0 for Windows”>
<STYLE>
<!–
.gyou{
line-height: 18pt ;
}
.gyou2{
line-height: 18pt ; padding-left:10pt ; padding-right:10pt;
}
.gyou3{
line-height: 18pt ; padding-left:10pt;
}
TABLE{
line-height: 18pt;
}
–>
</STYLE>
<STYLE>
<!–
body, th, td{
font-size: 95%;

// 600px以降から、100pxごとに1px大きくなる
@media (min-width: 600px) {
font-size: calc(112.5% + 4 * (100vw – 600px) / 400)
}

// 1,000px以上は、22pxに
@media (min-width: 1000px) {
font-size: calc(137.5%)
}
}

–>
</style>
<STYLE>
<!–
body,html{
max-width:800px;
margin-right: auto;
margin-left : auto;
}

–>
</style>

<style>
<!–
#map{

width: 100%;

height: 400px;

background-color: grey;

}

–>
</style>
<meta name=”viewport” content=”initial-scale=1.0″>
<title>金沢の駐車場GoogleMap </title>

</head>
<body>
<BR>
<center>
<TABLE>
<TBODY>
<TR>
<TD><A href=”https://kimassi.net/” target=”_top”><IMG src=”https://kimassi.net/kimassitoplogo.gif” alt=”金沢観光情報 【 きまっし金沢 】” width=”120″ border=”0″></A></TD>
<TD align=”left” valign=”middle”><H1 style=”font-size:18px; margin:0px;”><FONT color=”#cc0000″>金沢の駐車場 </FONT></h1></TD>
</TR>
</TBODY>
</TABLE>
<BR>
<TABLE>
<TBODY>
<TR>
<TD>
</TD>
</TR>
</TBODY>
</TABLE>
<BR>

<div id=”map”></div>
<script>
var map;
var marker = [];
var infoWindow = [];
var markerData = [ // マーカーを立てる場所名・緯度・経度
{name: ‘<table><tr><td>金沢駅西口時計駐車場</td></tr><tr><td >24時間<br>収容台数:1500台</td></tr></table>’,lat:36.5806,lng: 136.648722,icon: ‘tam1.gif’ //金沢駅西口時計駐車場イメージgif
},
{name: ‘<table><tr><td>金沢駅西広場一般車駐車場</td></tr><tr><td >24時間<br>収容台数:68台</td></tr></table>’,lat:36.57949,lng: 136.647391,icon: ‘tam2.gif’ //金沢駅西広場一般車駐車場イメージgif
},
{name: ‘<table><tr><td>金沢駅東駐車場</td></tr><tr><td >午前7時~午後11時<br>収容台数:352台</td></tr></table>’,lat:36.576206,lng: 136.648134,icon: ‘tam3.gif’ //金沢駅東駐車場イメージgif
},
{name: ‘<table><tr><td>ポルテ金沢駐車場</td></tr><tr><td >24時間<br>収容台数:450台</td></tr></table>’,lat:36.57634,lng: 136.649433,icon: ‘tam4.gif’ //ポルテ金沢駐車場イメージgif
},
{name: ‘<table><tr><td>リファーレ駐車場</td></tr><tr><td >午前7時~午後10時<br>収容台数:268台</td></tr></table>’,lat:36.575865,lng: 136.651441,icon: ‘tam5.gif’ //リファーレ駐車場イメージgif
},
{name: ‘<table><tr><td>武蔵地下駐車場</td></tr><tr><td >午前7時~午後11時<br>収容台数:194台</td></tr></table>’,lat:36.574211,lng: 136.654129,icon: ‘tam6.gif’ //武蔵地下駐車場イメージgif
},
{name: ‘<table><tr><td>石川県立音楽堂</td></tr><tr><td >午前9時~午後10時<br>収容台数:152台</td></tr></table>’,lat:36.57672,lng: 136.647841,icon: ‘tam7.gif’ //石川県立音楽堂イメージgif
},
{name: ‘<table><tr><td>金沢フォーラス駐車場</td></tr><tr><td >24時間<br>収容台数:420台</td></tr></table>’,lat:36.579348,lng: 136.649811,icon: ‘tam8.gif’ //金沢フォーラス駐車場イメージgif
},
{name: ‘<table><tr><td>名鉄スカイパーキング</td></tr><tr><td >午前6時~午後12時<br>収容台数:620台</td></tr></table>’,lat:36.572802,lng: 136.654387,icon: ‘tam9.gif’ //名鉄スカイパーキングイメージgif
},
{name: ‘<table><tr><td>近江町パーキングビル</td></tr><tr><td >午前8時00分~午後6時00分<br>収容台数:228台</td></tr></table>’,lat:36.570437,lng: 136.656682,icon: ‘tam10.gif’ //近江町パーキングビルイメージgif
},
{name: ‘<table><tr><td>めいてつ・エムザ地下駐車場</td></tr><tr><td >午前8時30分~午後8時30分<br>収容台数:60台</td></tr></table>’,lat:36.572674,lng: 136.654991,icon: ‘tam11.gif’ //めいてつ・エムザ地下駐車場イメージgif
},
{name: ‘<table><tr><td>近江町市場</td></tr><tr><td >建て替えのため閉鎖中<br>建て替えのため閉鎖中</td></tr></table>’,lat:36.571631,lng: 136.657648,icon: ‘tam12.gif’ //近江町市場イメージgif
},
{name: ‘<table><tr><td>近江町いちば館駐車場</td></tr><tr><td >午前7時30分~午後11時30分<br>収容台数:94台</td></tr></table>’,lat:36.571844,lng: 136.656398,icon: ‘tam13.gif’ //近江町いちば館駐車場イメージgif
},
{name: ‘<table><tr><td>石川県兼六駐車場</td></tr><tr><td >24時間<br>収容台数:482台</td></tr></table>’,lat:36.564888,lng: 136.664091,icon: ‘tam14.gif’ //石川県兼六駐車場イメージgif
},
{name: ‘<table><tr><td>兼見御亭パーキング</td></tr><tr><td >午前8時30分~午後5時30分<br>収容台数:100台</td></tr></table>’,lat:36.561714,lng: 136.665588,icon: ‘tam15.gif’ //兼見御亭パーキングイメージgif
},
{name: ‘<table><tr><td>石川県石引駐車場</td></tr><tr><td >24時間<br>収容台数:370台</td></tr></table>’,lat:36.557697,lng: 136.665008,icon: ‘tam16.gif’ //石川県石引駐車場イメージgif
},
{name: ‘<table><tr><td>金沢歌劇座有料駐車場</td></tr><tr><td >24時間<br>収容台数:76台</td></tr></table>’,lat:36.558593,lng: 136.658952,icon: ‘tam17.gif’ //金沢歌劇座有料駐車場イメージgif
},
{name: ‘<table><tr><td>金沢市役所・美術館駐車場</td></tr><tr><td >午前8時30分~午後11時<br>収容台数:319台</td></tr></table>’,lat:36.560954,lng: 136.657267,icon: ‘tam18.gif’ //金沢市役所・美術館駐車場イメージgif
},
{name: ‘<table><tr><td>香林坊地下駐車場</td></tr><tr><td >24時間<br>収容台数:813台</td></tr></table>’,lat:36.564272,lng: 136.65473,icon: ‘tam19.gif’ //香林坊地下駐車場イメージgif
},
{name: ‘<table><tr><td>竪町駐車場</td></tr><tr><td >24時間<br>収容台数:205台</td></tr></table>’,lat:36.558446,lng: 136.653684,icon: ‘tam20.gif’ //竪町駐車場イメージgif
},
{name: ‘<table><tr><td>北パーキング</td></tr><tr><td >24時間<br>収容台数:85台</td></tr></table>’,lat:36.56054,lng: 136.651377,icon: ‘tam21.gif’ //北パーキングイメージgif
},
{name: ‘<table><tr><td>タイムズ金沢片町商店街</td></tr><tr><td >24時間<br>収容台数:32台</td></tr></table>’,lat:36.558507,lng: 136.65311,icon: ‘tam22.gif’ //タイムズ金沢片町商店街イメージgif
},
{name: ‘<table><tr><td>OVALパーキング</td></tr><tr><td >24時間<br>収容台数:270台</td></tr></table>’,lat:36.558696,lng: 136.65341,icon: ‘tam23.gif’ //OVALパーキングイメージgif
},
{name: ‘<table><tr><td>にし茶屋観光駐車場</td></tr><tr><td >午前9時~午後10時<br>収容台数:13台</td></tr></table>’,lat:36.557087,lng: 136.648079,icon: ‘tam24.gif’ //にし茶屋観光駐車場イメージgif
},
{name: ‘<table><tr><td>長町観光駐車場</td></tr><tr><td >午前7時30分~午後6時<br>収容台数:20台</td></tr></table>’,lat:36.563104,lng: 136.64958,icon: ‘tam25.gif’ //長町観光駐車場イメージgif
},
{name: ‘<table><tr><td>近江町観光バス駐車場</td></tr><tr><td >午前7時30分~午後9時<br>収容台数:バス4台</td></tr></table>’,lat:36.570363,lng: 136.657602,icon: ‘tam26.gif’ //近江町観光バス駐車場イメージgif
},
{name: ‘<table><tr><td>東山観光バス駐車場</td></tr><tr><td >午前9~午後6時<br>収容台数:バス5台</td></tr></table>’,lat:36.573291,lng: 136.664824,icon: ‘tam27.gif’ //東山観光バス駐車場イメージgif
},
{name: ‘<table><tr><td>東山北観光駐車場</td></tr><tr><td >午前9~午後6時<br>収容台数:7台</td></tr></table>’,lat:36.573799,lng: 136.665524,icon: ‘tam28.gif’ //東山北観光駐車場イメージgif
},
{name: ‘<table><tr><td>東山観光駐車場</td></tr><tr><td >午前7時~午後10時<br>収容台数:15台</td></tr></table>’,lat:36.573087,lng: 136.665389,icon: ‘tam29.gif’ //東山観光駐車場イメージgif
},
{name: ‘<table><tr><td>東山河畔観光駐車場</td></tr><tr><td >午前7時~午後10時<br>収容台数:14台</td></tr></table>’,lat:36.571628,lng: 136.665982,icon: ‘tam30.gif’ //東山河畔観光駐車場イメージgif
}
];
function initMap() {
// 地図の作成
var mapLatLng = new google.maps.LatLng({lat: markerData[0][‘lat’], lng: markerData[0][‘lng’]}); // 緯度経度のデータ作成
map = new google.maps.Map(document.getElementById(‘map’), { // #mapに地図を埋め込む
center: mapLatLng, // 地図の中心を指定
zoom: 15 // 地図のズームを指定
});

// マーカー毎の処理
for (var i = 0; i < markerData.length; i++) {
markerLatLng = new google.maps.LatLng({lat: markerData[i][‘lat’], lng: markerData[i][‘lng’]}); // 緯度経度のデータ作成
marker[i] = new google.maps.Marker({ // マーカーの追加
position: markerLatLng, // マーカーを立てる位置を指定
map: map // マーカーを立てる地図を指定
});

infoWindow[i] = new google.maps.InfoWindow({ // 吹き出しの追加
content: ‘<div class=”map”>’ + markerData[i][‘name’] + ‘</div>’ // 吹き出しに表示する内容
});

markerEvent(i); // マーカーにクリックイベントを追加

marker[i].setOptions({// マーカーのオプション設定
icon: {
url: markerData[i][‘icon’]// マーカーの画像を変更
}
});

}
}

// マーカーにクリックイベントを追加
function markerEvent(i) {
marker[i].addListener(‘click’, function() { // マーカーをクリックしたとき
infoWindow[i].open(map, marker[i]); // 吹き出しの表示
});
}
</script>
<script src=”https://maps.googleapis.com/maps/api/js?key=AIzaSyClHkPIxdkxBg4j7Z7k7yPxmlNyKg8sqOM&callback=initMap”
async defer></script>
<br>番号のマークをクリックすると詳細情報を表示します<br><br>
</center>
</body>
</html>

2019年3月27日

PHPについてスキルが上がってきたので、金沢のオープンデータをそのままデータベースにインポートして、そのデータベースを読み込んでGooglemapに表示するPHPプログラムを作成することにしました。そうすれば、データが更新された時に、金沢のオープンデータをそのままデータベースにインポートするだけで良いので楽です。

何を表示しようか迷ったのですが、公衆トイレにすることにしました。
400件以上あるので、処理能力の問題もあります。

まずは、金沢のオープンデータをそのままデータベースにインポートするために、データベースのテーブルを手動で作ります。
項目数は22あります。その内、経度と緯度と名称だけ取得して、マークは全部同じ・で表示してクリックしたら名称が表示されるようにします。

2019年3月28日

金沢のオープンデータをそのまま手動でデータベースにインポートするのは簡単にできました。全部で430のデータがありました。
IDをprimaryキーに設定しました。
でも、同じ施設が何か所もデータがあるのは地図上に表示するのには不向きです。
仕方が無いので手動で削除する事にしました。入場者だけしか利用できないトイレも削除しました。結局データは146になりました。これくらいなら処理の負荷も心配するほどではないと思います。
金沢城などのトイレは場所が離れていても、緯度と経度が一緒なのは怠慢だと感じました。

よく調べたらGooglemapにマークなどを表示するのはJavascriptなのですが、JavascriptとMySQLとは相性が悪く、PHPを経由してアクセスしないといけないようです。
かなり難易度が高いので断念しました。

せっかくなので、従来の方法でページを作るようにしました。

2019年3月29日

金沢の公衆トイレは、すでにGooglemapに登録されていることに気づきました。しかもマークの色と形まで一緒になっていました。
無駄な労力を費やしてしまいました。

ほうれい線にガクっ

先日、自分の無意識な時の顔を鏡で見て、不機嫌そうな顔で唖然としました。

いつも、こんな顔してるんだとがっかりしました。

なんでだろうと考えたのですが、どうもほうれい線で頬が垂れて見えるので老け顔で不機嫌そうな顔に見える事に気づきました。

今まで、若いと言われ続けていたので、ショックでした(笑!)。

これじゃアカンということで、ほうれい線を無くす本を購入しました。