2016年12月12日

スマホGPSの使い方

スマートフォン内臓のGPSとGPS専用機(GARMIN Legend-C)を比較してみた結果、両機の差はほとんど認められませんでした。(参照:GPS比較
そこで、今回使ったアプリとその設定をご紹介します。

◆ アプリのインストール

ネットで調べたら「GPSロガーAndroid」と「GPX Viewer」を使うのが一般的らしい。「GPSロガーAndroid」はログを取るアプリ、「GPX Viewer」はそのログを表示するアプリで、GARMIN GPSのように一体化されてなく、それぞれ別になっているようです。

アプリはGoogleの「Playストア」を開いて探してもいいですが、数が多いので見つけるのに苦労します。そこで音声で指定するのが便利です。

1209-004.png1209-001.png1209-003.png
「Playストア」をタップして開きます「Google Play」の文字の右側の「マイク」をタップします「マイク」が赤い内にスマホに向かって「GPSロガー・アンドロイド」と発声します。(音声を認識してくれるまで何度でもやってみます。その都度中央のマイクをタップして赤くしてください。)

発声した音声をスマホが分かってくれると、発声内容に該当するアプリの候補を幾つか表示してくれます。よく似た名前のアプリがたくさんありますから、下記のページを参考にマークで識別してください。
[GPSロガーAndroid]=https://play.google.com/store/apps/details?id=com.mendhak.gpslogger&hl=ja
[GPX Viewer]=https://play.google.com/store/apps/details?id=com.vecturagames.android.app.gpxviewer&hl=ja

インストールはアプリを選んで、緑色で表示されている「インストール」ボタンをタップするだけ。「インストール中」の表示が出てしばらくでインストールは完了します。

設定は主に「http://attech.info/gpslogger-how-to-use-application/」を参考に設定したが、うまくログが取れない場合があったので、試行錯誤の結果、下記の設定が一番結果が良かった。

◆ GPSロガーAndroid の設定

1.インストールした「GPSロガーAndroid」を起動します。下図の左の画面が表示されます。

1207-073.png1207-002.png1207-003.png
画面左上の[三]マークのアイコン(メニューアイコン)をタップします。
表示は上図の[簡易表示]の他に[詳細表示]があります。
[メニュー]画面が表示されたら[全般的なオプション]をタップします。[GPSLoggerの設定]画面で、[ブート時に開始]をタップして[ON]にします。この画面の設定はこれだけ。

2.[メニュー]画面に戻り、[ログ設定詳細]をタップします。

1207-004.png1207-006.png1207-076.png
 [GPXで保存][KMLで保存]の両方、またはどちらか1個を[ON]にします。(ログの保存形式です。私は両方をONしています。)画面を一番下までスワイプして[ファイル名の先頭にデバイスシリアル番号を付加します]を[ON]にします(任意)
これはGPSを複数持っている場合、どのGPSで取得したログかを識別するためのものです。
この画面の設定はこれだけ。
もし、SDカードを挿入して、そこにログデータを記録する場合は[フォルダに保存します]をタップして
「/storage/sdcard1/Android/data/com.mendhak.gpslogger/files」に変更します。機種によって太字の部分は変わります。私の場合2台目は「/storage/SDカードの番号/Android/data/com.mendhak.gpslogger/files」でした。
マイクロSDカードを挿入すれば、上記のフォルダは自動作成されていますから、保存先を設定するだけで済みます。

3.[メニュー]画面に戻り、[パフォーマンス]をタップします。

1207-059.png1207-009.png1207-007.png
[位置情報プロバイダ]をタップして、上の画面を表示させ[GPS]を[ON]

ネットワークは携帯基地局の位置情報を使うもので、ビル内などGPS電波が受信できない場合などに有効ですが、山歩きの場合はGPSのみでいいと思います。

[Logging interval]をタップして、上の画面を表示させ、時間を3秒に変更。 書き込み頻度を設定するもので、高速道路でテストした結果、短く設定しても結果的に90%ほどは3秒間隔で記録されていました。[GPSを常にON]を[ON]にします。 『この設定はバッテリーを著しく消耗します』 となっていますが、これを[OFF]にしておくと停止後再び移動を開始してもログが取れないことがありました。
(電池の消耗が気になるならモバイルバッテリーを考えた方が良い。長期の山行にも使える)
1207-014.png1207-011.png1207-012.png
[距離フィルター]をタップして、上の画面を表示させ[3m]に設定。

次のポイントを保存する際の最小距離。この距離より短い場合は保存しません。2mに設定して取ったログがこれ(赤い軌跡です)。ちょっと細かすぎかな?ということで3mに変更しました。

[精度フィルター]をタップして、上の画面を表示させ[20m]に設定。

ポイントを保存する時の最大許容誤差。この値より大きい場合は保存されません。
これはアプリのバグかも知れないが、トンネルなどで一旦GPSを受信できなくなってから復帰する時に失敗することがあるため、後で 0mに変更したら失敗しなくなった。

[精度にマッチするまでの待ち時間]をタップして、上の画面を表示させ[3秒]に設定。

初期の位置情報の取得後は、この値の間、精度フィルタにマッチする値が来るのを待ちます。
取り敢えず3秒にしました。

1207-013.png1207-015.png1207-015.png
[GPS信号受信までの最大待ち時間]をタップして上の画面を表示。[1秒]に設定。

設定の如何に関わらず、位置情報取得のリトライを注視するまでの時間(秒)。この設定は建物の中でGPS情報が受信できない場合にバッテリの消耗を抑えるのに役立ちます。0に設定するとタイムアウト

[WGS84の代わりにMSLを使用]を[ON]にします。

GPSの高度情報から高さを求めるために、WGS84ではなくMSL(平均海水面)を用いて計算します。これはGPS衛星の情報のみに適用され、ネットワークから得られた情報やNMEAには影響しません。

[高度からオフセットを差し引く]は[0]の初期値のまま。

地表面からGPSまでの高さの分を差し引く設定。
持って歩く場合はオフセット値は約1mだが、高度の測定値がそれほど正確ではないのであまり意味がない。

[移動しないときはログファイルを書かない]は[OFF]に設定。

当初これを[ON]に設定していたが、動き出してもログを書いてくれない場合があったので[OFF]にした。[距離フィルター]で移動距離が3m以上ないとログを残さない設定になっているので、この設定はしなくても停止中のログは書かない。車での移動も記録したい場合は、この設定は[OFF]にしておく方が良い。

上図の[移動しないときはログファイルを書かない]の説明がいまいち良く分からない。[ON]にすれば「徒歩」や「車の発進・停止・カーブ」など加速度計に変化がある場合に記録を開始することは分かるが「移動記録は書き込みを続けます」の文言の意味が分かり難い。『一旦加速度計に変化があった場合に、車などで等速直線移動している場合も記録を続けます』という意味だろうということは、かなり後になって分かった。
この設定を[ON]にした場合、車での発進が余りにもスムーズに発進すると加速度計が感知せずにログ記録の開始が遅れる場合がある。

◆ GPX Viewer の設定

1.インストールした「GPX Viewer」を起動します。左上の[三]マークのアイコン(メニューアイコン)をタップします。
※アプリの初回起動時は、最初から[メニュー]画面が開いています。

1207-075.png1207-021.pngc.gif
[メニュー画面]
[Setting]をタップし、次に
[File browser]をタップします。
上の画面が表示されますから
[Open last directory]にチェックを入れて、図の4個にチェックが入った状態にします。
 

2.次にログファイルのフォルダの設定をします。

デフォルトの設定は、「/storage/emulated/0/My Documents/Tracks」になっているので、「GPSロガーAndroid」のデフォルトで設定されている「/storage/emulated/0/Android/data/com.mendhak.gpslogger/files」に設定を変更します。

もし、マイクロSDカードを挿入して、そこにログデータを記録する設定にした場合は「GPSロガーAndroid」で設定した「/storage/sdcard1/Android/data/com.mendhak.gpslogger/files」に変更します。

1207-041.png1207-042.png1207-043.png
上位階層に戻る[Parent directory]の緑の矢印をタップして2つ上の階層に戻ります。
上図は「/storage/emulated/0」まで戻った状態。
ここで[Android]をタップします。
続いて[data]をタップします。続いて画面を下にスクロールして[com.mendhak.gpslogger]をタップします。
1207-044.png1207-045.png 
続いて[files]をタップします。ログファイル一覧が表示されますから、表示したい日付のファイルをタップし[OPEN]をタップすると、GPS軌跡が表示されます。 

以上で設定は全て終わりました。「GPSロガーAndroid」の設定で[ブート時に開始]を[ON]にしたので、ログファイルは毎日1本ずつ作成されます。自分の行動記録が意識していなくても作成されます。

ログファイルの拡張子の「.gpx」は一般的なファイル形式で、HP作成支援ツール(Mツール)で使う場合に変換せずにそのまま使えるので大変便利です。「.kml」はGoogle Map や Google Earth で簡単に利用できるフォーマットです。8月20日の記事「KML を使うと Googl Map は超簡単!!」をご覧ください。




posted by おっチャン at 17:47| Comment(0) | TrackBack(0) | その他の日記

2016年12月04日

GPS比較

今日もまた呉羽山に行った。
昨日あまりに気持ちの良い尾根散策路だったので、孫を連れてもう一度歩くことにした。

きょうは GARMIN GPS と スマホGPS を比較するために両方を持って歩くことにした。
GARMIN GPSはリュックの肩ベルトに、スマホはズボンのポケットに入れて歩きました。テスト結果は下記の地図のとおり殆ど差はありませんでした。スマホの設定は「スマホGPSの使い方」をご覧ください。


赤=スマホGPS  青=GARMIN GPS

立山連峰


立山展望台

肩ベルトにGARMIN GPS

ズボンのポケットにスマホGPS

145.1m

落ち葉が積もった尾根散策路

ヤブコウジ


posted by おっチャン at 00:00| Comment(0) | TrackBack(0) | その他の日記

2016年10月21日

四国を旅した

久しぶりに旅に出た。四国と本州を繋ぐ3本の橋をまだ渡ったことがなかったので、この内の2本の橋を渡ってみることが主目的の旅になった。
10月18日に倉敷市と坂出市を結ぶ瀬戸大橋を渡った。海に架かる巨大な橋に感動しながら走ったが、時速100kmでは余りにも短い。もっとゆっくりと走って感動を長く味わいたかったが、流れに従って走らざるを得ないのがちょっと残念だ。
途中の与島に降りた。この時ちょうど列車が走って来た。下から眺める吊り橋も壮観な眺めだった。

そして帰りは、10月20日と21日に分けて、鳴門大橋と明石海峡大橋を渡った。最後の明石海峡大橋は片側3車線もある巨大な橋で、明石市のビル群に吸い込まれるように走るのは圧巻だった。

大阪方面に向かって走っていると渋滞情報が表示された。急きょ、カーナビの設定を舞鶴若狭自動車道経由に変更した。
どこをどう走っているのか分からないまま、何度もジャンクションで分岐を繰り返して、六甲北有料道路から山陽自動車道に乗った途端に、スマホが「地震です。地震です。」と、けたたましく鳴りだした。
ちょうど一般道路を跨いでいる高架橋の上だったので、早く陸地に辿り着かなければ・・・・、と思って走り続けた。やや速度を落として、しばらくすると弱い揺れを2度感じた。「これで終わりかな・・・?」「もっと大きな揺れが来るのかな・・・?」と緊張しながら走り続けたが、揺れはそれっきりだった。中国自動車道に乗ってから数分走ると赤松PAがあったので、取り敢えず休憩に立ち寄った。パーキングのTVが鳥取で「震度6弱」の大きな地震があったことを伝えていた。
地震に遭遇したのは、地図の8の字状の赤い軌跡の中央の交点上だった。(神戸の文字のちょっと北側の交点上)

旅行の全行程 (軌跡の起点・終点は自宅からではなく鯖江ICの近くから表示しています)


  

posted by おっチャン at 14:53| Comment(0) | TrackBack(0) | ホームページ作成ツール

2016年10月08日

友人の「私のがん記録」ホームページを改修

2011年2月に作成した、友人のサイト「私のがん記録」は、当初想像していた構成とは違った方になってきたので、いつか改修したいと思っていたが、手を付けられないまま5年が過ぎた。
当初、サーバーは「さくらインターネット」のレンタルサーバーだったが、その内友人の家にCATV環境が整ったのを機に、飛騨高山ネットのホームページサービスを利用するようになっていた。
また、友人は別に「夢の缶詰」という夢の記録とその夢を見た背景などを書いたホームページを持っていた。それらを1本にまとめてブログの日記風にしたいと考えていた。
最近、私も遅ればせながらスマホを持つようになった。これを機に私が作成したホームページを狭い画面のスマホに対応するレスポンシブなデザインにしたいと思うようになった。そしてある日偶然にも、CSS3とHTML5に対応したテンプレートを無料で利用できるサイト「HTML5テンプレート」を発見した。これで改修する機運に一気に火が付いた。
先ずは、手始めに「美しき日本の風景」の改修に取り掛かり、90%位で来たのでそれをアップして、今回の「私のがん記録」の大改修に着手した。

テンプレートは先に改修した「美しき日本の風景」で、No.006 を使用しているので、2番人気の No.003 にした。
これは、トップページにトップナビとして3個のナビゲーションが用意されているタイプで、これから作成しようとしている日記の大きな見出しの「がん日記」「夢日記」「なんでも日記」にちょうどいい。
a-1.jpg
しかし、表示がPCモードの場合、中央に3つ並んだ「見出し1」〜「見出し3」の表示順を、表示をスマホモードにした場合、上から「見出し1」〜「見出し3」の順序にするのではなく、重要度の高い中央の「見出し2」を一番上に、次いで「見出し3」、最後にサブ領域の「見出し1」にしたいと考えて、CSSをいじってみたが、どうしても期待通りに並んでくれない。そこで、作者に問い合わせてみた。
そうしたら、直ぐに下記の返事をいただいた。
コンテンツの順番を並び替える方法ですが、考え方としては合っています。
あとは、横幅の計算だけです。

レスポンシブWebデザインなので、横幅をパーセントで計算する必要があります。
例えば、この場合、3つのボックスが同じサイズで横並びになっています。
各ボックス間の余白を1%とします。
そうすると、ボックスのサイズは、(100% - (1% × 2)) / 3= 32.666% になります。
見出し1を囲んでいるボックス(topNaviL)の横幅は32.666%、
見出し2と3を囲んでいるボックス(topNaviR)の横幅は66.332% になります。
見出し2と3のボックスの間の余白は、囲んでいるボックス(topNaviR)から見ると、
1% × 100% / 66.332% = 1.5% になりますので、
見出し2と3のボックスは、(100% - 1.5%) / 2 = 49.25% になります。
そして、CSSの具体例も付けてあった。至れり尽くせりだ。感謝感謝です。

日記のデータは3個のカテゴリーを分離せず、同一のCSVファイル「list.txt」に書くことにし、カテゴリーはカテゴリ番号で区別することにした。データの並びは、
日付の数字(8桁)、カテゴリ番号、タイトル、記事内容、の順にした。
データの区切りになるデリミタには、記事の中で使われる恐れのない「<>」にした。これは KENTさんの CGI に使われていたので、それ以来デリミタには、いつもこの文字を使っている。

以上で、ホームページの基本構成はできたので、「list.txt」に数行のデータを手入力して表示させてみると、うまく行っている。あとはデータの入力を簡単にできるようにする「ホームページ作成支援ツール」(通称 Mツール)を作成しなければならない。ここで問題なのが、素材には画像の他に動画ファイルもある。幸いHTML5には動画ファイルを簡単に再生する videoタグが用意されている。これを使って、画像ファイルを同じ扱いで、動画ファイルを埋め込むことを試みた。
そして出来上がった「Mツール」はこれ。
a-2.png
使い方は、先ず画像・動画・音楽ファイルを「画像登録欄」で登録する。次に「日記内容欄」に記事を書いて行く。その中で画像や動画を挿入したい位置で、<1><2> の形式で先に登録した画像ナンバーを指定する。画像は横2枚または横1枚のレイアウトで、それ以外のレイアウトには対応していない。日記の場合は横に1枚または2枚で十分だと思う。
画像も動画も音楽も、登録してしまえば、全く同じ扱いで、記事の中に埋め込むことができる。

と、いうことで完成したのが、下記のサイトです。
http://dreamfour.sakura.ne.jp/
動画のページ、および音楽ファイルの埋め込みページはそれぞれ下記のページです。
http://dreamfour.sakura.ne.jp/contents/index.html?id=20110422&ct=1
http://dreamfour.sakura.ne.jp/contents/index.html?id=20161008&ct=1

今回も各HTMLページには画像データや記事などのHTMLタグは直接入力せず「list.txt」によるデータベース方式にして、JavaScript で表示することにした。そのため画像や記事が追加になっても、トップページおよび日記ページのHTMLを書き換える必要は全くない。「contents」フォルダの「list.txt」にデータを追加するだけでよい。
日記は10月8日現在で508ページ分もあるが、1枚のHTMLページを共用するために、URLパラメータ方式を採用した。このため508ページものHTMLページを用意する必要はなく、1ページのHTMLページで済んだので非常にシンプルになった。

URLパラメータで日記を表示する「diary.js」は、下記の通り。なお、csv2Array(FilePath) については、前記事を参照。
var lstData = csv2Array("list.txt"); // リストをlstDataに読み込む
var pos;
window.onload = function() {
var urlParam = location.search.substring(1); // URLのパラメータを取得
if(urlParam) { // URLにパラメータが存在する場合
var param = urlParam.split('&'); //「&」が含まれていたら「&」で分割
var paramArray = []; // パラメータを格納配列
for (i = 0; i < param.length; i++) { // 配列にパラメータを格納
var paramItem = param[i].split('=');
paramArray[paramItem[0]] = paramItem[1];
}
filename = paramArray.id; // filenameにパラメータidの値取得(日付文字列)
category = paramArray.ct; // 第2パラメータのカテゴリ取得
var flen = filename.length; // ファイルネームの文字列(年月日か年月か)
}
var html = "";
var listlen = lstData.length; // リストの長さ
for (var i=0; i<listlen; i++) {
if (flen == 8) {
var lstDate = lstData[i][0]; //8桁は年月日
} else {
var lstDate = lstData[i][0].substr(0, 6); //6桁は年月
}
if (category) { //第2パラメータの有無
if ((filename == lstDate) && (category == lstData[i][1])){
html += dispDiary(i);
}
} else {
if (filename == lstDate) {
html += dispDiary(i);
}
}
}
document.getElementById("diary").innerHTML = html;
}

function dispDiary(pos) {
yy = lstData[pos][0].substr(0,4);
mm = lstData[pos][0].substr(4,2);
dd = lstData[pos][0].substr(6,2);
var myDate = new Date(yy, mm-1, dd);
var jaDate = yy + '.' + mm + '.' + dd;
var dayName = '日月火水木金土'[myDate.getDay()];
var flag = false;
var html = "";
html += '<div class="coment">\n';
if (lstData[pos][1] == 2) {
html += '<h4>私のがん記録</h4>';
} else if (lstData[pos][1] == 30) {
html += '<h4>入院中の夢</h4>';
} else if (lstData[pos][1] == 31) {
html += '<h4>10代の夢</h4>';
} else if (lstData[pos][1] == 32) {
html += '<h4>20代の夢</h4>';
} else if (lstData[pos][1] == 33) {
html += '<h4>30代の夢</h4>';
} else if (lstData[pos][1] == 34) {
html += '<h4>40代の夢</h4>';
} else if (lstData[pos][1] == 35) {
html += '<h4>50代の夢</h4>';
} else if (lstData[pos][1] == 36) {
html += '<h4>今朝夢を見た</h4>';
} else if (lstData[pos][1] == 38) {
html += '<h4>夢分類</h4>';
} else if (lstData[pos][1] == 39) {
html += '<h4>夢分析</h4>';
} else if (lstData[pos][1] == 51) {
html += '<h4>家庭菜園</h4>';
} else if (lstData[pos][1] == 54) {
html += '<h4>陶芸</h4>';
} else if (lstData[pos][1] == 57) {
html += '<h4>合唱</h4>';
}
html += '<h3><span id="date">' + jaDate + '(' + dayName + ')</span>' +
tData[pos][2] + '</h3>\n';
for (var j=3; j<lstData[pos].length; j++) {
var regexp1 = /\w*\.jpg/; //jpg画像
var regexp2 = /\w*\.mp4/; //mp4動画
var regexp3 = /\w*\.mp3/; //mp3音楽
var str = lstData[pos][j];
var result1 = regexp1.test(str); //jpgのマッチ検索
var result2 = regexp2.test(str); //mp4のマッチ検索
var result3 = regexp3.test(str); //mp3のマッチ検索
if (result1){ //jpgのマッチならば
var str2 = lstData[pos][j+2];
var result4 = regexp1.test(str2);
if (result4) { //画像2カラム
html += '<div class="towCol"><div class="twoColInner">\n';
html += '<div id="img"><a href="../images/' + lstData[pos][j] + '"><img
src="../images/' + lstData[pos][j] + '" alt="" /></a><br>' + lstData[pos][j+1] + '</div>\n';
j = j+2;
html += '<div id="img"><a href="../images/' + lstData[pos][j] + '"><img
src="../images/' + lstData[pos][j] + '" alt="" /></a><br>' + lstData[pos][j+1] + '</div>\n';
html += '</div></div>\n';
j++;
} else { //画像1カラム
html += '<div class="oneCol"><div class="oneColInner">\n';
html += '<div id="img"><a href="../images/' + lstData[pos][j] + '"><img
src="../images/' + lstData[pos][j] + '" alt="" /></a><br>' + lstData[pos][j+1] + '</div>\n';
html += '</div></div>\n';
j++;
}
} else if (result2){ //動画の場合(mp4)
html += '<div class="oneCol"><div class="oneColInner">\n';
html += '<video controls><source src="../images/' + lstData[pos][j] +
'" alt="" /></video><br>' + lstData[pos][j+1] + '\n';
html += '</div></div>\n';
j++;
} else if (result3){ //音楽の場合(mp3)
html += '<div class="oneCol"><div class="oneColInner">\n';
html += '<audio controls><source src="../images/' + lstData[pos][j] +
'" alt="" /></audio><br>' + lstData[pos][j+1] + '\n';
html += '</div></div>\n';
j++;
}else{
if (lstData[pos][1].substr(0,1) == 3) { //夢日記の場合
var regexp5 = /【|】/;
var str = lstData[pos][j];
var result5 = regexp5.test(str);
if (result5){ //夢分析(茶色表示)
flag = true;
html += '<p class="coment2">' + lstData[pos][j] + '</p>\n';
} else { //夢日記(青表示)
if (flag == true){
html += '<p class="coment2">' + lstData[pos][j] + '</p>\n';
} else {
html += '<p class="coment1">' + lstData[pos][j] + '</p>\n';
}
}
} else { //その他は黒表示
html += '<p>' + lstData[pos][j] + '</p>\n';
}
}
}
html += '</div>\n';
return html;
}
posted by おっチャン at 00:00| Comment(0) | TrackBack(0) | ホームページ作成ツール

2016年09月16日

「美しき日本の風景」ホームページを改修

美しき日本の風景」のホームページを、最近の多種多様なディスプレーサイズに対応するように、レスポンシブWebデザイン対応に改修した。
ネットを見ていたら、偶然に下記のサイトが見つかった。
http://www.coolwebwindow.com/html5/
ちょうど、ホームページをスマホ対応にしなければ・・・・。と思っていたところだったので、「無料で配布しています」の文字に、これ幸いと、飛びついた。

何から改修しようか迷ったが、最も構造が簡単で、改修が楽なのは「美しき日本の風景」だろうということで、先ず「美しき日本の風景」を改修することにした。
無料のテンプレートは6個用意されているが、1番人気とある「No.006」を使わせてもらうことにした。グローバルメニューの赤い色はギャラリーのページにはちょっとふさわしくないように思えたので「黒」に変更した。

いろいろ変更しなければならない部分もあり、完成に近づいて気が付いてみると、元のテンプレートで機能していたレスポンシブデザインが機能しなくなっている部分が出てきた。いろいろ試してみたが、うまく行かない。
そこで、このテンプレートのページに『ホームページの作り方がわからないなどありましたら、下記メールアドレスまでお気軽にお問い合わせください。』のサポート案内があることを良いことに、作者にメールでご指導を仰ぐことにした。
そうしたら直ぐに、たいへん詳しく具体的な内容の返信を頂いた。感謝感謝です。どこの誰かも分からない者に、本当にありがたいことです。

また、この作者は MITライセンスを取得されていたので、その取扱いについて質問した。以前から MITライセンスの扱いに関して、良く分からない部分があったのでちょうど良い機会だった。
その結果、MITライセンスの著作物を利用するには
1.著作権者の表示
2.MIT License そのものの記載(ただし、MIT License を記載したページのリンクでも可)
ということだ。
具体的には一般的に当該 JavaScript のソースの最初の部分に表示してあるライセンス条項を削除したり改変しない限り、複製の使用、複写、変更、結合、掲載、頒布、サブライセンス、または販売する権利、およびソフトウェアを提供することができ、利用は無償です。ということだ。
これで、今までページの下端部分に表示していた justifiedGallery.js の MIT License の著作者表示が不要だということに、すっきりした回答を得ることができた。

と、いうことで完成したのが、下記のサイト。
http://sjobojiz.sakura.ne.jp/

今回も各HTMLページには画像データや記事などのHTMLタグは直接入力せず「list.txt」によるデータベース方式にして、JavaScript で表示することにした。そのため画像や記事が追加になっても、春夏秋冬のページやトップページ、および日記ページのHTMLを書き換える必要は全くない。四季フォルダの「list.txt」と日記フォルダの「list.txt」にデータを追加するだけでよい。
日記一覧から指定の日付のページに遷移する場合、1枚のHTMLページを共用するために、URLパラメータ方式を採用した。このため各日付分のページを用意する必要はなく、1ページのHTMLページで済んだので非常にシンプルになった。

表示用の JavaScript はページのソースを見ていただけば分かりますが、justifiedGallery 関連の js および css については、下記を参照。
http://miromannino.github.io/Justified-Gallery/
また、CSVファイルからデータを取り込む csv2Array(filePath) については、下記の通り。
function csv2Array(filePath) { //csvファイルのパス
var csvData = new Array();
var data = new XMLHttpRequest();
data.open("GET", filePath, false); //true:非同期、false:同期
data.send(null);
var LF = String.fromCharCode(10); //改行コード
var lines = data.responseText.split(LF);
for (var i = 0; i < lines.length;++i) {
var cells = lines[i].split("<>");
if( cells.length != 1 ) {
csvData.push(cells);
}
}
return csvData;
}
posted by おっチャン at 00:00| Comment(0) | TrackBack(0) | ホームページ作成ツール