野鳥紀トップページへ 野鳥の写真集・総合目次へ 観察野鳥一覧表へ 制作メモのページへ ご案内のページへ 一シギ二タカ三ツグミへ移動 動画集「ビデオカメラと野鳥」のサイトへ移動

ページ制作の半自動化メモ

170503
FTPの自動化(途中経過)

サイト開設以来、かなりの月日が経ちます。
このサイトの維持管理に関して、様々なツールを使わせていただいています。
その中の一つがFFFTPというFTPのツールです。
このページで経過を書いているように、HSPというプログラミングツールのおかげで、ページの制作はかなり自動化出来ています。
そのページを生成した後、FTPのツールを使ってアップロードしています。

今回、ふと考えたことが、HSPにFTPのコマンドは無いのか、ということです。
なんと、調べたら、これがあるのです。
FTPが使えたら、写真を撮りさえすれば、正確には、既定の規格の写真を作りさえすれば、ページの生成、関連ファイルの更新に続き、サーバへのアップロードまで自動化できます。
現在、この準備中です。

具体的に、ファイル単体で試験してみると、FTPでアップロードは出来ます。
あとは、具体的に作ることと、ページ生成のプログラムと連結する事です。

ページ生成のプログラムは分類別にたくさんあるので、それぞれのプログラムに組み込むより、FTPの作業だけを別プログラムにして、ページ生成のプログラムからコマンドオプション付きで呼び出すようにすると簡単なように思います。
まだ、本来のサーバでは試していませんけど、幸い、試験に使えるサーバがあります。
無料で借りているFC2と、先日取得した、このサーバと同じLaCoocanのミニです。
特にLaCoocanミニの方は、多分設定など実際のサーバと同じでしょうから、このような試験にはとても有り難い存在になりました。
ミニで試験してみて、問題が無ければ、後はサーバ名などを変更するだけでいいのだろうと思っています。
ここまで、ミニの方は何も使っていませんでした。
そこで、今回の試験のために、最小限のファイルやフォルダ構造をコピーして試しています。

さて、これが結構トラブル続きです。以下コマンド別に書き分けます。

ftpdirlist、ファイルの数が多いと、うまく動きません。
当初、数個のファイルとフォルダで試したときは問題はありませんでした。
しかし、実際のファイルはフォルダごとに数十個あります。これに近い数で試してみると、ファイルリストが取れません。厄介なことに、エラーが出ません。空白かゴミを返しているようです。
既にサーバにあるファイルに対して、上書きになるのかどうかの判断は、とても重要です。
これが空白などを返されると、対象のファイルは存在しないと判断してしまいます。
そのまま実行してしまうと強引に上書きされることになります。

対策を調べていたら、どうやらHSPの3.5beta版で対応しているようです。
そこで、3.5betaを導入しました。
3.5betaはzipファイルを展開するだけで使います。現行の3.4と共存できます。
3.5betaのエディタのアイコンを作っておき、エディタを起動、ファイルメニューでソースファイルを読み込むと3.5betaが使えます。
3.4を使いたいなら、そのままソースをダブルクリック、あるいは3.4のエディタを起動です。
ftpopen、3.5betaで、パラメータが多すぎるとエラー。
3.5betaでは、問題が色々と発生していますが、この1点、ftpdirlistが動きます。
これに比べたらほかの問題は何とか対応出来ますので、こちらを使っています。
まあ、3.5betaを利用するのは、このftpのプログラムだけですし。
対策は、ftpopenの5番目のパラメータを省略すると回避できました。
つまりパッシブを使わない事です。
ここまで、ftpはパッシブでないと使えないのかと思っていました。通常モードでも送信できています。

clipsetが3.5betaで不調です。
デバッグの為に、clipsetを多用しています。実行ファイルが完成した後では無意味なコマンドです。
実行途中の経過を、逐次、変数に入れておいてクリップボードからメモ帳などに移して調べます。この内容が膨大になればなるほど、テキストの検索などが使えますので重宝しています。
プログラムの経過は、assertはもちろん、mesboxやdialogでも表示させます。
しかしながら、clipsetで残しておけば、プログラムを終了させた後でも調べられますし、当然、メモ帳の検索機能なども使えます。
このclipsetが3.5betaでは不調になります。
ただ、5〜10回ぐらいまでは使えています。何回か発行するとエラーになります。まったく理由は分かりません。
普通は、スクリプトの途中途中に差し込んでおくのですが、このおかげで、プログラムの終了時点に一回だけセットしてしのいでいます。


ftpcloseの位置の考慮が必要。
ftpopenしていない状況でftpcloseを発行するとエラーが発生します。当たりませかもしれません。
プログラムの都合でftp作業に行く前に終了することもあります。

sortnoteでエラーが出ます。
3.5betaを使うにあたり、asファイルやdllファイルを集めてソースと同じフォルダに置きました。
これがいけないようです。試しに3.4に戻って実行するとsortnoteでエラーです。
asファイルを削除すると、ここでのエラーは出ません。

新しいAVG17が実行ファイルの邪魔をしています。
色々あって、実行ファイルを作って試してみました。dllなどの問題は実行ファイルを作ってみないと分かりませんので。

いつでも、AVG17が邪魔をします。
これまでも、HSPで作った実行ファイルはどれでも、必ずAVGから警告が出ていました。
普通は、しばらくすると、調べた結果、大丈夫でしたとメッセージが出て終わっています。
そして、2回目からの実行では問題なく立ち上がります。
このFTPのプログラムも、同じく起動時にチェックが入り、同じように問題なしとなりました。
ただ、今回は、ftpopenでしょうか、ftpdirlistでしょうか、FTPが動き始めるタイミングで、再度割り込まれます。
突然、FTPですからね、まあセキュリティ上は無理からぬとは思います。
しかしながら、今回は無事ではすみませんでした。AVGから、マルウエアのようなので隔離する、よろしいか、と尋ねてきます。
困ったことに、どうも選択肢の説明が曖昧です。直訳なのでしょうね。
それでもどちらかといえば無難な方を選べばよかったのでしょう。
しかしながら、物は試しと、多分こちらが隔離だろうなと思える方を選んでみました。
推測通り、実行ファイルが無くなりました。

今度は、AVG側で、この隔離を戻す方法が分かりません。戻せません。
隔離してあるメニューまではたどり着きましたが、どうやっても戻せませんでした。
仕方が無いので、HSPで再度コンパイルしました。
今度は実行ファイルができません。拡張子がdpmというファイルが出現します。
AVGの仕業でしょう。監視しているのでしょうね。
そこで、AVGを止めた状態でコンパイルしました。これでようやく実行ファイルが出来上りました。
これを実行すると、同様にAVGから警告が出て、隔離していいかと選択を迫ります。
ここで今回は隔離しない方を選ぶと、ようやく完成でした。
まあ、同じファイルなら、2度目からは何の警告も出ません。



170502
トップページの「月々の一枚」の写真の入れ替え

毎月、月末になるとトップページの更新作業があります。
月々の一枚、としている段落の写真の入れ替えです。
簡単な作業です。関連するページもありません。これまでは手作業でやっていました。
他の作業が一段落していて、この際、プログラム化しました。
まず、更新の候補となるものは、その月に写真集へ追加した写真です。これを制作メモのページから抜き出し、リストアップします。
このリストから1枚を指定し、トップページへ追加、同時に掲載してある最も古い写真を1枚削除します。
この際、撮影日を取得しますので、その写真集のページへのアクセスも必要でした。
今回の分から稼働させました。今月のキジの写真はこのプログラム経由です。

170310
観察メモ、未作成フォルダの表示

観察メモの生成に関しての問題です。
写真は準備してあるのに観察メモをを生成していない場合があります。
理由はいろいろあります、写真をたくさん撮った時などです。これを忘れてしまう時があります。
この未生成の写真がある場合に警告するようにしました。

観察メモの場合、日付と鳥名を組み合わせたフォルダを作って、そこに写真を配置してあります。
で、起動時に、そのフォルダをチェックして対応するメモファイルがあるかどうかを調べます。
手こずったのは、メモファイル名を単純に作ったので、同じ日にいくつもフォルダを作ると重複が起きる場合がある事です。
勿論、ファイル名生成の際は重複を回避するように作ってはいます。

まあ、年に一回発生するかどうかの事なのですが、このせいで未生成かどうかが分かりにくいのです。
この処理に時間を取られてしまい、ようやく完成しました。
ですが、今後は、とにかく写真を準備だけしておけば忘れさられる事はなくなりました。

170218
バックアップ方式の変更、レストアのプログラム、古いバックアップファイルの削除

下にメモしてあるように、バックアップの方式を変更しており、現在は、日付を使ったフォルダごとにバックアップファイルを保存してあります。
レストアのプログラムもほぼ完成しました。
ただ、このレストアに関しては、実際に必要になるまで封印というか、試すことはできても実行はできないようにしてあります。
動作試験が面倒なのと、実際に必要な場面があるのかどうか、ということです。

ただ、不必要なバックアップが増えていきます。
以前は、一つのフォルダに全部のバックアップファイルを入れていましたので、どんどんファイルが増えていき、古いものを捨てることが絶対に必要でした。
ちょっと調べてみたら、半月分でフォルダ数15、ファイル数114でした。
以前の方式だと、一つのフォルダにファイルが100個置いてあることになります。
やはり、我慢の限界に近いものがあります。エクスプローラでスクロールが必要になるのが嫌なのです。
以前は、手動でちまちま削除していました。
今回は、ファイルがそれぞれの日付付きのフォルダに保管されています。
バックアップファイルの必要な期間は、実際、のところ数日だと思います。
日々、ファイルが更新されていきます。何日も前のファイルを戻したくても収拾がつきません。

そこで、フォルダの日付を見て、15日以上古いフォルダは削除できるようにしました。
実際には、ファイルの存在するフォルダの削除は難しかったので、古い日付の分をリネームすることにしました。
こうしておけば、手動で削除するにしても簡単です。
また、古くても残しておきたいバックアップもあります。(説明省略)
これも組み込むことは簡単でした。


170216
sortnoteのエラー
sortnoteで内部エラー38が出ます。
実行ファイルでの問題です。エディタからの実行では出ません。
#include "hspda.as"は入れています。
エラーメッセージだけではsortnoteが原因なのかも分かりません。

試したり、調べたりして、原因はdllファイルです。実行ファイルにはhspda.dllが必要です。
#includeだけでいい場合と、そうでない場合があります。困ります。


170117
clipsetが役に立ちます
clipset "strings"(#include "hspext.as")を重宝しています。
stringをクリップボードに入れる命令です。メモ帳などで参照できます。

プログラムの動作を検証するとき、変数などのチェックをするassertがあります。
これの不便な点は、目的の変数を探すのが面倒なこと、大きな配列や莫大なテキストの場合、表示されないこともある点です。
簡単な方法は、代入した直後にdialogを使って変数などの値を表示させています。

ところが、これは、ここで扱っているHTMLファイルの内容など、大きなテキストは無理です。
HTMLファイルを生成しているので、このテキストが小さいものでも5KB、つまり半角で5000文字、大きなものになると、500KB 、500000文字、2000行ほどになります。
一応、プログラムでも、作業経過やテキストなどをmesboxなどに表示させるようにはしています。
でも、大量のテキストの中から、問題の箇所を探すのが大変なのです。

そこで、そのテキスト類をclipsetを使って、まとめてクリップボードに転送しておきます。
後は、テキストエディタを起動して貼り付ければ、どんな大きなテキストや配列でも確認できます。
プログラム中のdialogやmesboxなどと違って、エディタのメニューにある検索などを使って簡単に目的の場所に到達できます。

プログラムを実行して保存された結果を調べるといいわけですが、これには無理があります。
新たに生成されるファイルだけなら、これでもいいかもしれません。
ここでは、更新されるファイルがほとんどで、それも5ページから15ページほどになります。
これを試験でやるわけですので、取り消すとしても収拾がつきません。

実際には、プログラム中に巨大な変数を用意しておき、更新されたテキストを全部追加してあります。これをmesboxに表示して、実行途中で確認するようにしているのですが、前述のとおり、目的の所に到達するのが大変なのです。
この変数を、保存の代わりにクリップボードに転送して、メモ帳などで引用すると、とても簡単になります。
少し、要領が必要ですが、HPBに転送して調べることもできます。

また、これが実行ファイルに残らないようにするのも簡単です。
確か正式には#ifdefとかあると思いますが、私は普通にフラッグで処理しています。

clipsetに全部入らない場合があります。どうやらmesboxで制限されるみたいです。


170112
バックアップ方式の変更、その他
昨年8月に始めたこの作業、ようやく終わりました。
最初は、単純な改造のつもりでした。プログラムの数が多かった事と、途中で細かい変更をいくつも考えた事もあり、今までかかってしまいました。

その作業とは、
自動化プログラムを使ってページの更新をする時、同時に、その更新されるページのバックアップを作っています。
これまでのバックアップのやり方は、共通のフォルダを置き、そこに作業の都度、作成日付を付けたファイル名に変更して保存していました。同じ日付の場合は連番を付けました。

これを、今回、バックアップごとに、その作業日の日付と時間を付けたサブフォルダを作り、そこに名前を変えずにコピーする方式に変えました。同じ名前のファイルがあるときは、更にサブフォルダを作り、保存し、ファイル名に日付や連番を付けなくてもいいようにしました。
さらに、この作業のログも作るようにしました。
こうしておけば復旧の時が簡単だろうということです。

この一連の作業の中で、最初は、ファイル生成のルーチンごとにバックアップのルーチンを追加していたものを、できるだけルーチンをまとめて置くようにしました。
これは、今回、各プログラムでかなりバラバラだった変数名やサブルーチン名を統一しようとした関係もあります。

本来は、一つのプログラムで全作業に対応できるといいのでしょう。
現時点では、例えば、観察メモを作る作業と写真集のページを作る作業では、それぞれ別のプログラムを起動します。
今回の作業は、全作業を網羅したプログラムにするための準備ともいえます。
もっとも、現在は窮余の策で、ランチャーを作ってはあります。

これとは別の問題ですが、あと少し、作業が残っています。
観察メモのプログラムに、写真だけ作ってあり、まだ観察メモにを作っていないフォルダを表示するように考えています。
写真は作っても、すぐに発表しない方がいいようなものがあります。また、写真は準備したものの、ホームページにアップするか迷うような場合があります。
こういったものは、しばらく経つと忘れてしまうものです。
そういう時に、最低、フォルダだけ作っておけば、プログラムでチェックしてくれるようになります。

また、今回のバックアップを使っての復旧のプログラムがまだです。
こちらは、さほど急ぐ必要はありません。万一の場合、手作業で戻しても、そう問題は出ないはずです。
フォルダごとのファイルなので、戻すのも簡単なように思います。


161231
年次更新
年次更新作業をやりました。
今回は昨年のメモがしっかりしていたので楽でした。
詳しくは、パソコンメモと年次更新作業メモを。

161003
その他のページ、RSS

RSSファイルを更新するプログラムにバグを見つけました。
久しぶりに動かしてみたら、タイトルが違うと出て止まります。
一年ほど前、観察メモのタイトル文を変更した時、このコードも変える必要がありました。
修正しました。
プログラムを動かす手順も忘れていました。
観察メモを自動化で生成し、その後、ページに手書きで文言を入れた場合にRSSを対応させるものでした。
つまり、観察メモのページを修正した後、このプログラムを動かします。

161002
50音順目次

観察野鳥50音順目次に配置間違いを見つけました。
プログラムの誤動作かと心配しましたが、どうやら、自動化以前の手書きによる配置の作業ミスのようです。
160811
バックアップ方式変更、レストアの自動化
161215再編集
更新したページを、バックアップ使って実際に復旧した事は、過去1回あったかどうかです。
まあ、今後もめったな事は無いと思いますけど、この復旧の作業も自動化しておこうと思います。
作り始めてみて、紛れが多すぎます。現在のバックアップの体制が悪いのだと思い至りました。

そこで、バックアップの方式を変更することにしました。
従来は、専用のフォルダを一つ作ってあり、そこに日付や通番を入れた名前に変更して保存していました。ログなどは無しです。

今回思い立った事は、
更新作業や新規の追加作業などするたびに、サブフォルダを作って、その中に更新前のページを保存しておきます。
更に、この作業を記録したログファイルも作っておきます。
復旧の時、便利だろうと思って、ログの中は、ファイル名などフルパスで書いておきます。
新規に追加したファイルや写真などは、復旧の時は削除しないといけません。そのような新規の写真などもメモしておきます。(これはこれでバックアップの必要があります。)
復旧では更新した時間が大切です。最新のものから復旧しないといけませんので。
これは、サブフォルダ名を日付時間で作り、ログファイルにも日付を記録しておきます。

最初は、旧来のバックアップと新方式を併用して進めました。バックアップが2個できる状態でした。
ある程度様子を見た上で、現在、新方式に一本化しています。

プログラムがページの種類・作業に応じて複数あります。
使用頻度の少ないものの積み残しもありますが、まあ大体終わりました。

今後の課題は、コードの整理です。
長年、追加や変更を繰り返してきたコードに重複があるようです。
これを何とかしたいと考えています。

160703
バナーの変更、GIFファイルの配置

最上段にある各ページへのリンクに使っているバナーを、一個、作り替えました。
作業にはHPBのツールを使いますし、文字だけを変えたGIFファイルを作り、必要なフォルダに置くだけです。
ただ、配置しなければいけないフォルダが複数ありました。
ページで使うのは、どこでも同じファイルです。どこかに一つ置いて、そこを参照するようにすると効率的です。

しかしながら、実際には同じ物を重複配置してあります。
これは、プログラム化の弊害、と言いますか、プログラムの手抜きでしょう。
年次ごとに新しく追加するフォルダ全部に配置してあります。
まあ、ほんの少しだけ、プログラムか関連のファイルを修正するといいと思います。
年次の更新の時、新しくフォルダを作る場合、プログラムを対応させるのが面倒だったので、同じ環境にすると修正も楽だろうとして、関連のファイルを一括してコピーしてしまった事による弊害でしょう。
年を重ねて、現在では6か所程度に同じGIFを配置してしまっています。
ここまでくると、今回のように対象のGIFファイルを作り変える時、とても面倒になります。
覚えているなら来年の年次更新の時、対応しようと思います。

160705
さて、年末まで覚えている保証がありませんので、すぐに試してみました。
ページやプログラムを検証してみたら、単にテンプレートのファイルを変更するだけでいいようです。
テンプレートファイルでは、なぜかカレントのフォルダにGIFファイルなどを置いてある前提になっています。
これを共通のGIFファイルの置き場にしてあるフォルダを参照するように書き換えるだけです。
実行してみました。
プログラムも問題なく動き、新しいページが生成されます。

しかしながら、いろいろ試していくうちに、問題点に気づきました。
想定通りにファイルは生成されます。ただ、その生成されたページに手書きで変更を加えたりして、別名で保存するとき、それが発生します。
HPBがページ内で使用しているGIFファイルをカレントにコピーして持ってくるか、いちいち聞いてくるのです。もちろん、必要ないので、そのままでいいという選択もできます。
しかし、GIFファイルが10個ほどあります。10回聞いてきます。とても面倒です。
そこで思い出しました。これがあって、新しいサブフォルダを作るとき、一括してGIFファイルをコピーして置いておくことにしたのです。

HPBはGIFが直下のフォルダにあるときはこの警告を発動しません。一度、上のフォルダに戻って参照するとき、発動します。
また、上書きでは発動しません。別名保存の場合だけです。
実際には別名保存が必要なケースはほとんどありませんが、生成されたページに解説などを書き込むケースが全然ないわけではありません。
それに、プログラムを使わないで、手書きで作り上げるケースも皆無ではありません。

このようなケースがあるので、現在の形にしておいたのだと、おぼろげに思い出しました。
つまり、現状のままが無難なようです。何か対策があるか、ゆっくり考えてみます。

160531
サムネイル写真の変更

サイトのサムネイル写真を一括変更しました。150x113ピクセルの写真を160x120に変えました。
ファイル類の変更作業の具体的な内容はパソコンメモに書いています。
この変更に関して、半自動化プログラムの修正が必要になります。
一応、サイトのファイルと同様、プログラムコードもコピーして作業開始です。万一、うまくいかない場合は、元のファイル、元のプログラムでやり直せば、今日現在の状態には戻せます。

プログラムの修正作業の項目は、多分二つ、
1、ファイル名などで絶対アドレスを使っている場合の変更。
2、写真のサイズの書式、width="150" height="113"、(の一部)を使っている箇所の変更、
です。

観察メモのプログラム
観察メモを作る際の写真が写真集に何枚登録されているか表示させているルーチンがありました。これが動きません。
写真集のページのサムネイルのサイズ指定の行を数えていました。変更しました。
ローカルのサイトの配置は変わりませんが、プログラムの置き場所を変えました。
ローマ字からカタカナの名前に変換するためなど、プログラムの置いてあるフォルダにあるテキストファイルを参照しています。
こちらはカレントディレクトリ(dir_cur)を使っているので、修正の必要はありませんでした。
また、サイトのローカルフォルダは変更していませんので、そのまま使えました。

写真集のページ追加
要は、width="150"云々とあるのを、width="160"云々と書き直せばいいのですが、書式の都合で、"width=\"150"とか、width=\"150\"とか書いています。
検索するとき、このあたりを考えて探さないといけません。単に150で検索すると関係ない数字が含まれてしまいます。
スマホ版のルーチンとか複数の修正箇所があります。
絶対アドレスは使用していませんでした。

写真集新規追加
shtm09フォルダだけが対象、そこにテンプレートが置いてあり、一括変換の時、変換済みです。
新規の場合、テストができないので、ダミーのファイルを作ってあります。付属のテキストファイルも整合させました。

以下、同じです。
全て、150を160へ、113を120へ置き換えることで終わりました。
ファイル名の絶対アドレスはプログラムのランチャー部に使っていただけでした。
160926この際、写真のサイズをチェックするルーチンを追加した。
最近では見ないが、同じ写真をサムネイルに使っているケースがあったり。

160520
観察メモファイル名

プログラムを利用しての作業のほとんどは、観察メモのページを作ることです。
観察メモのページとは、観察野鳥一覧表に目次が作ってある、その日に観察した、正確には写真の撮れた、野鳥を掲載しているページです。
一定の規格で、日付ごとにフォルダを作って、その日の写真を入れておきます。
この状態でプログラムを起動し、観察メモのページと関連するページのリンクなどを生成します。

ここまで、プログラム化して5年ほど経過しています。この観察メモのページ生成に関して、初めてのケースが発生しました。
それは、作り上げたHTMLファイルのファイル名が重複する場合があることです。

観察メモのファイル名は日付と鳥名の一部を使って生成しています。
例えば、2016年4月25日のゴジュウカラ(160425_gozyuukara)の場合は、ファイル名は160525or.htmとしています。
7、8文字目のローマ字の部分は、鳥名の2文字目と後ろから2文字名を取り出しています。
これで、この時まで、ファイル名が重複することはありませんでした。まあ、同じ日に複数のページを作ることがめったにありませんので。
今回、同じ日に、コルリのページを作りました。(160426_koruri)
上のやり方だと、ファイル名が見事に重複することになります。繰り返しますが、このケースはここまでの5年間、一回もありませんでした。
さあ、大変です。今更手書きでは作る気になりません。
そこで、ようやく、プログラムを対応させました。このような場合、ファイル名には9文字目に数字を追加することにしました。160525or2.htm

今回、これが面倒だったのは、実際には新しい写真がない時にもプログラムを動かすことがあることです。動作試験の時や、うっかり新しい写真を作り忘れていた時などです。
この場合は、当然同じファイル名になるので、上書きしたり、項目を追加したりすると大変です。
ですので、これまでは同じ名前のファイルが存在したら書き込み出来ない様にしてありました。ワンパターンで解決できていたのです。

つまり、今回の課題は、ファイルを新たに作ってはいけない場合と、偶然同じファイル名になる場合との区別をつけることでした。
今度は、同じファイル名になった時、上のように単純に枝番を付けて処理すると、必要のないページが作られてしまう可能性が出てきます。
対策として、簡単なのは、ダイアログなどで聞いて選択させる方法です。
同じファイル名が存在しますが、ファイル名に枝番を付けて別に作っていいですか。みたいな感じです。

でもそれでは、面白くありません。折角なのでプログラムで判断させるべきです。
前提は、一つのページを作るときは、日付と鳥名を組み合わせたフォルダを個々に作っておいて、その中にページで使う写真を入れていることです。

そこで、以下のようにしました。
新しく作ろうとしたページと同じファイル名が既にある場合、
今回作ろうとしている日付と同じ日付のフォルダ数と観察メモファイルの数を数える。
観察メモファイルがフォルダ数より一つ少ないはず、これ以外は、準備の手違いか動作試験なので、終了するかファイルを生成しない。
ファイル数がフォルダ数より一つ少ない場合のみ、ファイル名に枝番を付けて新しく作る。
この際、念のため、既存の同じ日付のメモファイルの内容を読み込み、今回登録する写真が使われていないかどうか調べる。
今回の写真が使われているなら、フォルダの指定間違いなので、やり直させる。
ここまで。

現実には、今回、もう一つ同じ日にページを作りました。コマドリ、160425_komadoriです。
従来通りですと、見事にこれも同じファイル名になります。
ファイル数に応じた枝番を付けることで解決です。

蛇足ながら、当初、ファイル名を作るとき、省略せず、日付+鳥名全部、とすればよかったのです。
そこはそれ、DOS時代、ファイル名が8文字だった名残なのです。当時でも、既にこの制限は無かったはずですけど。
それに、鳥名から2文字を取り出す場合でも、前から2文字目と後ろから2文字目というのは、適切な方法では無かったと思います。
ローマ字ですので、前から2文字目は母音になるケースが多いはずです。母音は5文字しかありませんのでかなりの確率でその2文字目は同じになります。
それに、後ろから2文字目ですが、大体鳥の名は後ろが、トリ、シギ、サギなど同じ言葉が多くあります。
つまり、この2文字だけだと、同じ文字になる確率は少なくはないという事です。
まあ、さして必要でもない今後の課題としておきます。


150116
バグあり

どうも、写真入れ替えのRSSファイルの更新ルーチンにバグがあるようです。
直近の記事のdescriptionの日付が11年になっていました。
今回のRSSファイルは、手書きで修正しました。
考えてみると、RSSファイルに関しては、単独でdescriptionの内容を書き換えるプログラムが組んであります。
これを使うと、その都度、修正はできます。
150121プログラム修正済。

150113
エラー処理

今日、ルリビタキの写真を一枚、入れ替えました。
もちろん、このページでメモしているプログラムを使いました。
しかしながら、ダイアログが出てエラーで終了します。
プログラムのエラーではなく、どうやらファイルの整合性に問題があるようです。
調べてみたら、既存のルリビタキの写真のページでミスが見つかりました。
サムネイルを重複して使用していました。
具体的には、5枚のルリビタキのページがあるのですが、その1枚目と3枚目のページのサムネイルが同じものを使っていました。
今や、どのような経過で作ったか覚えていませんけど、とにかく、整合していない場合の処理を入れてあったわけです。
手前味噌ながら、人力ではなかなか発見できないミスだったと思います。

150107
HSPのラベルジャンプ

この自動化作業とは直接関係は無いのですが、HSPの不具合かなと思える現象です。
ダイアログに表示する文字列が複数に渡る時、コードの表記に不便を感じていました。
文字列の複数行の表記方法を知らなかったのです。
やむを得ず、変数に1行ずつ追加していったりしていました。こうするとイメージが近いものにできますので。
しかしながら、最近ようやく中かっこ{ }を使うと簡単に複数行の文字列が出来ることに気づきました。
そこで、早速使って見ました。便利は便利です。この方法だとコードではタブやスペースを付けていても、実際の表示では無視してくれます。
ところが、今度はその弊害が出ているようです。
編集メニューにあるラベルへのジャンプがうまくいかないのです。あくまでコードの編集中だけの問題です。
ラベルへジャンプするように指定しても何行かずれて移動してしまいます。
いろいろ試してみたら、ジャンプの際には、その複数行の表記がまとめて1行に計算されているようなのです。
複数行の文字列以降の行が、その行数分ずれてしまっています。
やむなく、そのコードを末尾に移動させてしのいでいます。

150105
年度更新作業

年が改まると、このサイトのページのうち、いくつかを更新する必要があります。
年度ごとのページがある事と、HSPを使ってページの制作を半自動化していることの絡みです。
(以下、実際のファイル名などは2016年の1月での作業例です。1年後にここにメモしていることを思い出せればいいが・・・。

ページの更新
制作メモ(memo.htm)、観察野鳥一覧表(mlindex.htm)、パソコンメモ(pcmemo.htm)の各ページをコピーし、コピーした方を年度を入れてリネームし、そのまま前年度のページとして使うことになります。
例えば、memo2015.htm、mlindex2015.htm、pcmemo15.htmのようにします。
コピー元のファイルは新年度で使います。
当然、前年度の記事が残っていますので、その部分は削除することになります。
この時、古い記事を完全に削除しないで、数件分残しておきます。
自動化のプログラムで0件の処理がしてないものがあります関係です。
新しい年度の記事が一つでも追加されたら、古い年度の記事は削ってしまいます。
新しい年度で使う分も古い年度の分もそれぞれ多少の修正がが必要です。
たいていはリンクがらみですが、新年度に持ち越したページはページタイトルの変更も必要です。(それまでは2015年分として使っているので、2016年分と書き換えます。)

フォルダの追加
観察メモ用に新しい年度のフォルダを追加することが必要です。
例えばtemp16などです。
で、そのフォルダに関係ファイルをコピーしておきます。
gif、テンプレート、jsなどのファイルです。(HTMLファイル以外は全部)

プログラムコードの書き換え
初期設定で、dirstt="temp15"で年度を指定しています。新しい年度に変更します。
*dirsetに古いファイルへの対応があります。
新しく作られた直前の年度のファイルへの処理を追加します。

140908
RSSファイル、GoogleChrome

RSSファイルの動作がおかしいことに気づきました。
その以前の問題として、今、主として使っているGoogleChromeにはRSSのボタンが出てきません。
機能を追加することは出来るそうですが面倒なのでやっていません。
で、RSSの動作を調べる時はIEを使います。
Chromeには、もう一つ問題があり、キャッシュが強力に効いています。日々の更新が、なかなか反映されないのです。
これも強引に更新する方法がありますけど、面倒です。
さて、RSSの不具合とは、戻るボタンが効かないことです。
RSSのページを見て、そこの一覧されている中のページに飛びます。
そのページからRSSのページに帰ろうとして、戻るボタンをクリックしても帰ってこれないのです。
戻ろうとすると、ファイルをダウンロードするかどうか聞いて来ます。PDFファイルなどを開こうとした時などと同じような状態です。
調べてみたら、どうも拡張子の関係らしいです。
RSS1.0の場合は、拡張子にrdfを使うと、このような動作になるそうです。
そこで、拡張子をxmlに変えてみました。
動かしてみると正常に動きます。
ただ、RSSファイルもプログラムで生成するようにしています。この修正が大変でした。
結果、対応できたと思います。完全に検証は出来ていませんけど。
疑問なのは、いつからこの状態なのか、です。
最初からのことで、気づかなかっただけなのか、途中から発生したことなのか、わかりません。
バックアップしてあるファイルや、ごみ箱のファイルを戻したりして、数か月前のファイルで試してみましたが、同じ状態でした。

140608
スマホ対応版とRSSファイルの生成

最近、スマホ対応版のページも作るようにしました。うまく行っているかどうか、心配な面もありますが。
そのため、一つの写真のページを追加や修正するとき、関連するページが飛躍的に増えています。目次ファイルに係わるものだと、都合20ページの修正が必要になります。
もはや、ここで解説しているHSPによるページの半自動化プログラムが無いと、サイトの維持が困難かもしれません。
このスマホ対応版の生成に関しては、おおまかには出来ていました。しかしながら、色々なケースに対応させることは見切り発車してありました。
プログラムで生成できない部分は手書きで対応でした。
もう一つの懸案があり、これまではRSSファイルが手抜きでした。このサイトのRSSを見ていただくと分かりますが、記事としては日付だけが入っています。
元々が写真だけのページで、大半、解説や記事はありません。当初、RSSには日付でも出しておくかという考えでした。
でも、たまには文章を入れる場合もあります。(このページなどがそうです。)
この間、この二つの問題に対応していて、どうやら満足出来るものに仕上がりました。

現在、手書きでの作業は、写真を既定の大きさに作って、既定のフォルダに入れることと、
めったにありませんが、新規の鳥種の場合、分類順の目次の中で写真の配置を決めること、だけです。
(もう一つ、このようなページの文章を作るときも、もちろん手書きです。)

先の関連するページが20あるというのも、今回の成果です。動かしてみると簡単に把握できます。
これからは、ようやく写真の制作に専念できるはずです。


140520
スマートフォン対応の各目次生成

写真集については、スマートフォン用のページを作り始めています。
これに合わせて、やはりスマートフォン用の目次を作らないといけません。
あまり、知識を持ち合わせてはいない中で始めてしまった作業です。
基本的には、スマホでも写真が判別できるようにしたい事と、指で操作して目的の写真まで表示できるようにする事を一応の目標にしています。
少しずつ自動化の作業を追加していき、何とか全部の作業をカバーしました。
写真集の写真のページは問題ありません。追加の場合や新規の場合など、その要件に合わせて生成できています。
ただ、目次のページが面倒でした。特に新規の場合の分類順の目次です。
今のところ、完璧には生成できません。元々、分類順に関しては、PC版の方も自動化できず、手書きで追加編集しないといけません。
これは、新しい鳥種の場合、目次のどこに挿入するか、その位置を簡単に決定できないのです。
やり方とすると、最初に全鳥種の分類表を作っておき、そこから参照するような方法でしょうか。いずれにしろ、その分類方法を理解していないといけません。これはとても面倒なので、ここは印刷された分類表を眺めながら、手入力で作る事にしています。
同じことが、スマホの目次ににも当てはまります。
そこでやったことは、まず、PC版の方を手入力で完成させ、その後、プログラムを起動して、PC版を参照してスマホ版を作るようにしました。
細かいところで修正は必要ですが、今のところ、ほぼ思い通りに動いています。

140612追記
分類順目次に入れない写真があります。鳥以外、リスなどを新規に追加する場合です。
でも、五十音順の目次には入れます。スマホ版の五十音順にも入れなければなりません。
この目次だけを更新するプログラムでは、現在、分類順でチェックをしていますので、使えません。
修正が必要です。
これに関して気付きました。写真の入れ替えの時にも問題になります。
動物などは、分類順に写真がないので、どこかで問題が起こりそうです。
新規の分だけとりあえず修正しました。選択して五十音目次だけに登録出来るようになりました。
これをもう少しスマートになるよう修正はするつもりですが、その他については、このままにしておこうと思います。
多分、動物などの分類順に登録してない写真の入替だけの問題です。この場合は手書きでやろうと思います。
多少はサイトの構造を記憶、理解しておく必要もありますので。

140403
スマートフォン対応の写真集のページを生成

スマートフォンでの操作が簡単にできるように、対応したページを作りました。
当初、最終的な写真のページはPC版と共通にしていました。
これをHSPとTExchangeを使って、作り直してみました。

140115
ファイルのバアクアップ、カタカナ名のフォルダ、観察メモのページ生成

この項、大半はページ作りには関係ありませんが、作業をHSPでやりましたので、ここに書き込みます。

以前から撮りためている写真ファイルが膨大なものになっています。
写真を本格的に撮り始めたのが2005年ですので、数と容量は大変なものです。この際、質は問題にしませんが。
今、ディスクの管理で調べたら、HDDの総容量が3TBでした。ほかにバックアップ用に同じくらいの外付けのHDDがあります。
これまでは、日付順にフォルダに入れたものと、鳥名ごとに保存してあるものとの2種類で保存してあります。
この鳥名ごとに保存してあるものは、4GBずつ区切ってフォルダを作っています。
つまり、鳥名ごとに貯めていって、4GBになったら新しいフォルダを作ってそちらに保存していきます。
これは、当初、DVDにバックアップがしやすいように始めたものです。
この4GBのフォルダが現在50個を超えました。つまり、数えていませんがDVDも50枚以上あるはずです。
当初は、この方式でも不便はありませんでした。
でも、現在、これが大変なのです。つまり、どれかの鳥の写真が必要なとき、50数個のフォルダを延々と探す事になります。
これではいけないと、一念発起、鳥種ごとにまとめたフォルダを作ることにしました。
この際、懸案だったことがもう一つ、カタカナのフォルダ名です。
以前、カタカナを含め日本語、2バイト文字、のファイル名、フォルダ名に関しては、色々と問題がありました。
で、フォルダ名はこれまで全部ローマ字です。現在では、このような問題を聞かなくなりました。
まあ、じぶんのパソコンで、しかもデータ保存用に使う限りにおいては、全く問題はないでしょう。
で、この際、フォルダ名をカタカナにして保存しようと思い立ちました。

試行錯誤の結果ですが、
まず、ローマ字の鳥名と全角カタカナの対応表を作りました。
これも、手書きで作ったのではなく、あらかじめ一文字一文字の対応表(ka、カ、とか)を作っておいて、
HDDにある限りのローマ字の鳥名フォルダを読み込み、カタカナに変換しました。
完璧にはできませんでしたが、何か所かを手書きで修正して完成させました。
この作業は一応、Excelあたりに関数かなにかないものかと調べましたけど、わかりませんでした。
さて、この対応表から、まず、実際にカタカナ鳥名のフォルダを作りました。
その後、簡単に言えば、ある程度日付順に並んでいる日付の付いたフォルダを鳥種ごとにカタカナフォルダにコピーしていきました。
実際には、すべてが同じ形式ではなかったので、結構面倒な作業でした。
現在では、同じプログラムを使って、バアクアップ用に使っています。
つまり、日付ごとに並んだフォルダと、カタカナ鳥名ごとに並んだフォルダの双方にファイルがあることになります。

この後の問題点は、
fxcopyが長いファイル名のコピーでエラーを出すこと。
ミラーリングが出来ていないことの、2点です。
fxcopyは、面白いのは、といいますか、不思議なのは、コピーは出来ていて、長いファイル名をコピーし終わった直後に
エラーで止まることです。
ですので、プログラムを再起動すると先へ進んでいきます。
コピーは出来ている、既にあるファイルはスキップする、ので、エラーを起こしたファイルは次回はfxcopyの対象になりません。
ただ、長いファイルはたいてい複数ありますので、そのファイルの数だけエラーを起こして止まります。
何度か実行するうち、完成してしまいます。
この件、ファイル名を長短いろいろ変えて、どこが限度か調べましたが、はっきりとは分かりません。
フォルダを入れても違いますし、同じ長さでも、エラーが出る場合とそうでない場合があります。
何か、動的なものに影響されているようです。

この、エラーを起こす長いファイル名の代表例がカンムリカイツブリkanmurikaituburiです。
実際には日付と拡張子が付きますので、kanmurikaituburi999999-2.jpg程度のファイル名です。
確実ではありませんが、このままではエラーを起こし、試しに日付だけのファイル名に短縮すると無事コピーされます。
この際のファオルダは5〜60文字、フォルダの階層は5ぐらいです。
つまり、(実際の構文では変数に入れています)
fxcopy kanmurikaituburi999999-2.jpg,F:/aaaaa/bbbbbbbbbb/ccc/dddddddddddddddd/eeeeeeeeeeeeee,0
でエラー
fxcopy 999999-2.jpg,F:/aaaaa/bbbbbbbbbb/ccc/dddddddddddddddd/eeeeeeeeeeeeee,0
だと通過、です。

ローマ字からカタカナへの変換表は、ローマ字と対応するカタカナの鳥名が並んでいるだけのテキストファイルです。
これを作ったことが、後日、役に立ちました。
個々の観察メモのページの作成は完全には自動化してありませんでした。
これまでは、この観察メモのページは、手書きで(HPBで)作っていました。
ただ、観察メモのページに関係するいくつかのページ、たとえば、一覧表のページなどは自動化していました。
今回、このおおもとのページも自動化しようと思い立ち、この時、この変換表が役立ちました。
簡単に書くと、ウェブサイトのフォルダや写真ファイルはアルファベット(つまりローマ字)です。
当然、ローカルのHDDでもローマ字にしています。
ここで、あらかじめ決めている形式のフォルダに、決めている形式の名前の写真を入れておけば、
変換表を使って自動的にカタカナの表記のページを作ることが出来ます。
最近では、ページに解説や鳥の説明を入れることも少なくなりました。手抜きですが。
この解説などは今でも自動化できていません。
でも、必要ならページが完成した後で、そのページに書き込んでいけばいいことです。
この作業は、自動化しても労力は同じです。ページの作成途中で手書きで入力するか、作成前に作っておくか、
ページだけ作っておいて、後で書き込むかの違いです。
今日、140130のページから、このプログラムで、実際に使っています。
今のところ、動いているようです。

131127
HSPの文字列の制限

現在試行錯誤中、
HSPで大量の文字列を扱っていると、途中で不自然な動きになります。
文字列の途中が消えてしまいます。
調べてみると、文字列の大きさに32768バイトという制限があるようです。
ネットで調べると、最近のバージョンではこの制限はなくなっていると書いてあります。
けど、現実には32768バイト以上のテキストが作れません。
実は、少し前、この問題に付きあたって、その時は解決した記憶があります。
その時、メモを残していない様なので、もう一度悩まないといけないようです。

新しいHSP()Ver3か?では、文字列に制限はない。
mesboxでは32767までしか表示できない、事がある。必ずではない。Windowsの仕様かもしれない。
mesboxのパラメーター変数を直接いじると、制限にかかることがある。

131010
サムネイル写真付の分類順目次

写真集の目次に五十音順と分類順のページを作っています。
さらに50音順の目次には、サムネイル写真付きのページも作ってあります。
分類順の方はテキスト版だけです。
そこで、分類順の目次にもサムネイル写真付きのページを作ってみました。
今までのテキスト版の分類順目次はそのまま残し、並行してサムネイル付の分類順目次のページを作ります。
鳥の名前を調べる時、分類順のページから探すのが便利です。そこに、サムネイルがあると好都合です。

さて、その段取りです。
元々のテキスト版のページの各行に一行追加して、そこにサムネイルとリンクを追加する事にしました。
300行弱の作業です。当初手作業で何とかなるだろうと始めましたが、これがなかなか面倒でした。
やむを得ず、HSPでプログラムを組むことにしました。
元々テキストのリンクがあります。これで、どの写真のページを使っているか分かります。
で、そのページを読み込み、サムネイル写真がどこにあるか調べます。
その写真を引用します。その写真に付けるリンクは、テキストのリンクと同じなので、基本的にはコピーするだけです。
これを項目の数だけ繰り返せばいい訳です。
ただ、テキストのリンクの行に例外がいくつかありました。
場合分けが面倒なので、そこはスキップして、後で手作業で追加することにしました。

130527

観察野鳥鳥名順目次の生成に問題があることに気づきました。
カッコウとカツオドリの順番が正しくありません。
辞書順(調べたのはフィールドガイドの五十音順索引です。)で見ると、カツオドリが先でカッコウはその後になっています。
で、最初に既存のページを一覧表にした時、カツオドリ、カッコウの順に置いていました。
ところが、私の生成のプログラムでは逆に配置してしまいます。
原因は、制作過程のことを完全には思い出せませんが、確か、HSPの比較が完全な辞書順になっていなかったようだったので、
比較の基準の文字列を作って、それで一つ一つ比較するようにしたことです。
で、その基準が、なぜか半音が先で全音はその後に配置していたのです。
プログラムを修正するといいのでしょうが、今までの生成過程との整合性に問題が出そうな気もします。
よって、このまま進もうと思います。鳥名順目次の方は手書きで書き直しました。

130212

写真集の各写真のページの生成において、写真の右肩にある野鳥紀の文字が一文字分右にずれるページがあることに気づく。
調べてみると、文字が右置きに設定されており、下の段の撮影地が4文字ある場合、その列の文字がずれることが分かった。

120715

観察野鳥のページに五十音順の目次を作りました。
各ページのタイトルにある鳥種を分割して、五十音順に並べ直したものです。
写真集のページは元から目次が作ってあって、鳥種から簡単に写真を探せます。
ところが、観察野鳥のページは日付順に並んでいるだけですので、どの鳥の記録がどこにあるのか、まず分かりません。
そこで、一念発起、五十音順の目次を作りました。
プログラムを作ろうかとも思いましたが、ここは手書きでやりました。3日ほどかかりました。
ただ、今後の追加分については、プログラミングしました。
各日の観察野鳥のページさえ手作りで仕上げれば、あとは全部プログラムで作り上げます。
自動的に作成するのは、今回の目次ファイルを含めて6ファイルです。
言いかえると、一枚の観察野鳥のページを制作すると、6個のファイルにリンクを作る必要があります。

120524

ページの(サイトの)タイトルから熊本を抜き、ただの「野鳥紀」にしました。
具体的には、TITLE文、Description文、Keywords文などを修正してあります。
このため、自動化プログラムを修正する必要が出てきました。
一括して修正するのは面倒なので、プログラムを使うついでに修正して行こうと思っています。

写真集の追加、
写真集の入れ替え、
 TITLE文などをプログラムに合わせることで対応しました。

観察記録のページ追加、
 TITLE文を参照し、鳥名を抜き取っていました。
 文字数を修正するだけで動くようです。

以下、熊本野鳥紀時代の記録

111118

今日は、たまっていた写真の一部をアップしました。
作った写真は11枚、ページは写真集が3ページ、観察野鳥が2ページでした。
写真の編集ソフトで編集するのに30分、この自動化のプログラムを使ってページを作るのに
やはり30分ぐらいの、合計1時間で仕上がりました。
プログラムの30分は、正しく動いているかを手動でチェックするのに要する時間です。
ページの作成そのものには5分もかかりません。

書き換えたページは全て、バックアップを作るようにしています。
そのバックアップを数えると、30ファイルありました。つまり30項目を追加や修正したことになります。
これだけの作業を1時間ほどで仕上げられるというのは、かなりの成果だと思います。

出来あがってから、まずリンクがちゃんと作られているか、HPBを使って調べます。
HPBのサイトメニューでリンクを調べる事が出来ます。これは以前から重宝しています。
サイト内部のリンクはこれで完璧に調べられます。
その次に、構文にエラーがないかを、やはりHPBを使ってチェックします。
読み込めば、エラーがあればダイアログが出ますのですぐわかります。
ここまで神経質にチェックをするのなら、最初からHPBを使って書き直しても構わないような
気もします。まあ、何も考えずに作業が出来るのが利点ですし、落ち着いたらチェックも必要ないでしょう。

さらに、新規を含め3枚の写真をアップしました。
新規に追加するケースの実働も試せました。
書き換えファイルの表示に間違いがあるようです。書き換えているのにリストに出てこないケースです。
実行には不都合はありませんでした。
唯一の懸案は、分類順の目次を作れない事です。これだけは当分、手書きで追加することになります。

110918

制作メモなどに使っている「入れ換え」は、どうも「入れ替え」のようで、全て変更しました。
今年の7月21日に、逆のような気がして、一度変更したものです。

辞書など見ると、どちらも通用する様なのですが、再度、変更した根拠は、
まずGoogleで「入れ換え」で検索すると、強制的に「入れ替え」に変換されてしまいます。
もうひとつ、Excelのヘルプは「入れ替え」で表記されています。
というわけです。

該当するページは3ページで、全部置換しました。
幸い、というか、古い制作メモは「入れ替え」で残してありました。

肝心のプログラムの修正も終わりました。

110918
制作メモを作らない作業、など

新しい写真が出来て、これを一枚めに持っていきたい、
ただ、一枚目の写真は残して、例えば2枚目の写真を削除したい。
このような時、1枚目と2枚目を並び換え、その後、1枚目に新しい写真を入れ替えるといいわけです。
ただ、このまま作業を実行すると、制作メモに二つの作業が記録されてしまいます。
しかも、入れ替えにも、並び換えの方にもリンクを付けています。
結果的に、リンクが違ってしまいます。
これを避けるため、並び替えの時、メモを付けるかどうか選択できるようにしました。

入れ替えの作業ではファイル名には変更がありません。
そこで、マップファイルは作らないようにしていました。
実際には、ファイルスタンプが変わっていますので、マップファイルに登録してあるファイルは
日付を更新するべきでしょう。
現在、トップページの日付のみ更新するようにしました。

ここまでの作業変更に伴い、説明ファイルを書き換えました。

観察一覧表の作成時に、鳥名を編集できるようにしました。
制作メモなどの記事をタイトルから引用していましたが、不自然なケースがありましたので。

110912
トップページに制作メモの抜粋を挿入

トップページを少し改修して、制作メモのうち、直近のものをコラム化して入れることにしました。
これで、トップページを見れば、大まかな作業状況がわかります。
それに、最終更新日を表示するようにしていますが、これが。トップページのファイルスタンプを見ているだけなので、
実際には、ほぼ毎日写真が更新されているのに、その状況を反映していませんでした。
これが、今後は、写真を入れ替えるたびに更新日表示も変わることになります。

一応、作業は、ほぼ終わっています。
メモの挿入場所を探して、末尾のメモを削除、先頭に新しいメモを挿入、します。
写真の作業種別ごとにプログラムを分割していましたので、それぞれを修正追加する必要がありました。
インラインフレームでも使えばスマートなのかもしれません。
ここはあえてフレームは使わず、制作メモと同じ内容を、プログラムで書き込んでいくことにしました。

110905
ここまでのまとめ

ここまで、一応の作業は自動化できています。
まず、作業別にコードを分けています。

写真集の写真に関して、
 新しい写真を単純に追加するとき、
 新しい写真を、既にある写真と入れ替えるとき、
 新しい写真は無しで、同じ鳥種の写真の並びを換えるとき、
 まったく新しい鳥種の写真を入れるとき、
  これらの場合は、新しい写真のページを作り、もともとある同じ鳥種のページにリンクを追加します。
  制作メモのページにもリンクを追加します。
  必要なら、目次のページのサムネイル写真を入れ替えます。
観察野鳥一覧表のページを作ったとき、
  一覧表にリンクを追加します。
いずれの場合も、必要なら、マップファイルとRSSファイルを作り変えます。

さて、今後の課題は、
 これらのコードのランチャーを作ろうとしたのですが、二重起動の制御が出来ません。
 マップファイルとRSSファイルが必要のないときでも作られてしまうケースがあります。
  必要に応じて、作業をスキップできるようにしたい。
 制作メモ、観察野鳥一覧表の書込み内容について、タイトル文から引用しています。
  これが場合によっては不自然な内容になってしまいますので、内容を別に指定できるようにしたい。

110816

写真の並び換え作業について、古い写真で動作試験をしてみました。
ほぼ予定している通りに動いてくれます。
これまでに、ノゴマの写真が2枚UPしてあり、見直すと、もう少し写りのいい写真があります。
さらに、今の画像処理ソフトを通すと、見ばえがかなり違います。
これで、まだ実働させていない並び換えの動作を試してみました。
新しく処理した写真を3枚目に追加し、続いて1枚目と3枚目を並び換えです。
予定通りの動作をしてくれています。

多少、問題も残りました。
制作メモに、二つの動作が記録されます。今回はメモを手動で書き直しました。
このくらいはやむを得ないかと思います。

もうひとつ、RSSファイルに、結果的に古い方の写真が登録されます。
3枚目に新しい写真を追加したときは、RSSに反映、記録されます。
単に並び換えの時は、写真が新しくなりませんので、RSSは書き換えない事にしています。
結果、RSSのリンク先が、古い写真に置き変わった3枚目になってしまいます。
これも手書きで修正しました。今はRSSの構造も理解していますのでなんとかなりますが、
今後は対策も必要でしょう。

110812

写真の並び換え作業についても自動化できる見込みです。
同じ鳥種の写真の表示の順番を換えるものです。
これ、出来上がればすぐにでも使えると思っていました。
並び換えたい写真がかなりあるものと思っていて、ざっと調べてみましたが、どうしても、と思える所は
そうそう見当たりません。今後、もっと丁寧に調べなおすつもりです。

手順は結構面倒でした。写真の入れ替え作業のルーチンを使えると思っていましたが、ほとんど作り直しでした。
メインの写真を入れなおすことを回避するために、ファイル名を入れ替えることにしました。
この作業は、撮影地なども換える必要が出てきますので、面倒なのです。
該当する(入れ替える)2つのファイルは、タイトルとサムネイルを入れ替え、ファイル名も入れ替える。
他のファイルは、サムネイルだけを入れ替える。
これでいいはずですが、まだ実地に試していません。

今後の課題は、二つあります。
ランチャーを作りたいのです。個々の作業が独立したプログラムです。
ランチャーから起動できるようになれば、対応が楽です。
ところが、HSPにはexecはあるのですが、二重起動を防止する方法がありません。
単独の実行ファイルを監視することはできても、他の作業のプログラムをチェックできません。

もう一つは、マップファイルとRSSファイルの一般化です。
現在、このサイトに合わせてあり、必要最低限度の作業しか出来ません。
これを一般化できれば何かと便利です。
必要なことは、初期設定が出来るようにすること、一から始める場合に使えるようにすることです。

110724

タイトルを「ページの自動化メモ」から「ページ制作を自動化する試み」に変更しました。

下の記事の通りで多少の積み残しがありますが、おおよそ考えた通りに動いています。
折角だから、Generatorを書き換える作業を追加しました。
現在、GeneratorはHPBになっています。これを適当な名前に書き換えるようにしました。

110721

一つの鳥種では、写真は5枚までと決めています。(例外もあります。)
既に5枚写真を出している場合に、新しい写真が出来ると、その鳥種のうち一番写りの悪いものと入れ替えます。
普通はこれでいいのですが、実際の評価は別にして、個人的にはまあまあの出来なので、1枚目に置きたい、
しかし、1枚めの写真も残したい、外すのは3枚目にしたい、と思う場合があります。

新しい写真を1枚目と入れ替え、今入れ替えられた写真を、今度は3枚目と入れ替える。
今までは、このように、入れ替え作業を2回やればいいはずだと思っていました。
実際、今日試してみました。写真集のページは期待通りに実行できました。
ただ、メモファイルとRSSファイルも2回書き変わって、新しい写真が2枚追加されたように表現されてしまいました。
それでも、メモファイルの方は簡単に手書きで修正できます。

RSSファイルが、もう手書きでは判らなくなっています。対策を考える必要があります。
新しく作り直せばいいのでしょうが、RSSだけ書き換えない選択肢を作ればいいように思います。

110707

さて、新規写真の追加のケースに挑戦中です。
まったく新しい野鳥の写真が撮れた場合に使うものです。年に何度もあるケースではありません。
実際必要になった時、操作方法がわかるかどうか、多少心配しています。
ただ、このケースは結構厄介で、今数えると、8ページほど書き換えるファイルがあります。
ですので、完成すると便利にはなるはずです。

でも、自動化はちょっと無理だなと思えるページがあります。分類別の目次ファイルです。
どこかに新しいリンクを作らないといけないのですが、挿入位置を決めるのが難しそうです。
この部分だけ手入力になりそうです。

50音別の目次ファイルはなんとかなりそうです。
やはり、挿入位置に苦労しました。HSPのソートでは濁音半濁音がおかしいのです。
文字の大小の比較をした場合、濁音が後ろに行ってしまいます。
普通の辞書では、アオジとアオシギを並べた時、アオジ、アオシギの順だと思います。
それが、HSPの比較ではアオシギ、アオジで並んでしまいます。
対策は、比較用に濁音のない鳥名を作っておいて、配置を決めることにしました。

110703

バックアップファイルは、専用のフォルダにまとめることにしました。
最近は、ほとんどこのプログラムを使っていますので、バックアップファイルがすぐ増えてしまいます。
なにしろ、写真を一枚アップすると、通常、6、7枚のバックアップファイルができます。
適当なところで手動で削除しています。
考えてみると、今までは、一枚のファイルをUpする際には、バックアップの枚数だけ修正が必要だったわけです。
これを一挙に自動化できるのは、手前味噌ですが、かなりのことです。
一つ一つの作業は、たいしたことではないのですが。

バックアップファイルには、名前に日付を追加し、同じ名前が存在するなら、さらに通し番号を付加してあります。

さて、まったくの新規の写真のケースにも対応させようとしています。
あらかじめ、必要な項目のところがブランクのファイルを作っておき、それに項目を追加するようにします。

前準備が必要です。index.htmから通算の種目数を読み込む、学名ファイルから学名を取得、の二つです。
関連するファイル群のうち、RSSファイルはほぼ準用でOKでした。

マップファイルの挿入位置も何とかクリアしました。
HSPでは文字列の比較が出来ないのかと思っていましたが、if ("abc"!"bcd")>0、の形式で比較できるそうです。
これで、新しいデータの挿入位置を指定できます。

ただ、多分、3種類ある目次ファイルが自動化できないように思います。
特に、分類別の目次ファイルは、このままでは絶対に無理です。
あらかじめ、全種類の分類を決めておかないといけません。
まあ、新規の写真の追加は、年に何回もない作業です。手動で(HPBで)やることにします。
このままだと、HPBを使うのは、このメモのページぐらいです。

META name="GENERATOR"に署名を追加することにしました。
うまくいくようなら、他のプログラムにも追加します。

110615

バックアップルーチンの変更と、付随して多少のコードの修正が、ほぼ終わりました。
何しろ、ケースごとにプログラムを変えています。3本ありますので、大変でした。
写真集の写真追加と入れ替え、動作試験をやってみました。
といっても、実際に新しい写真をUPしてみただけです。異常は無いようです。

今後の改良点です。
肝心のバックアップファイルの名前付けに工夫が必要でしょう。
保守をしないと、各フォルダに点在するので、あとで削除とか大変になりそうです。
ファイル名で検索できるように、名前を工夫しておくか。まったく違うフォルダに移動するか、です。
HPBでリンク切れをチェックする時の範囲外に置くべきでしょう。

もうひとつ、少し引っかかるのが、写真入れ替えの際の古い写真の扱いです。
不要なものです。ただ、簡単に削除するのも忍びないので、これまでの手入力のときは、
まったく関連のないフォルダに残していました。
今回は移動用のフォルダを作って、そこに移しています。後々混乱するかも知れません。

RSSとMAPは一般化できるかも知れません。
初期設定、まったくデータがない場合、追加入力項目など、かなり大変ですが。

110612

UTF変換の目途がつきました。#include "jcode.as"でいいようです。作者の方(森々せつき様)に感謝です。
残念なことに、いまいち、使い方がわかりません。恐るおそるです。
ちゃんと動作はしています。

UTFがUTF-8Nになってしまいます。ただ、変換対象のMAPもRSSも、8Nでかまわないみたいです。
さらに、多分ですが、漢字なしの半角だけのファイルだと、UTF-8NとSJISとの区別がつかないみたいです。
勉強不足かもしれません。今のところエラーは出ませんので、これでいきます。
半角文字だけのファイルは、TeraPadで手動で試しても、漢字コードは同じになりますので、こんなものなのでしょう。

漢字コード変換とファイル保存との関係がわかりません。
BOMをあとで強引にくっつけるものなのでしょうか。

あわせて、バックアップファイルの共通ルーチンを作りました。
元のファイル名に日付を付けて、バックアップファイル名にしています。
さらに、同じ日付があれば、末尾に連番を付けるようにしました。
いままで固定のバックアップファイル名を使っていましたので、作業が続くと、バックアップファイルを
避難させていました。

順次、今までの全部のコードを書き直すことになります。
ここでも、ローカル変数とか、関数とか、引数とか、参照渡しとかあれば、便利だったと思います。
このメモが頼りです。もう少し詳しく記録する必要がありあます。

110610

HSPでページ制作の自動化を(5)
年度変り問題対策、
フォルダやファイルを変えたときの対策は、前年のデータを少し残しておけばいいように思います。
実際、毎年ファイルを新しくする時には、前年末のデータを少し残しておきます。
この状態で年を越せば、多分、大丈夫と思います。まあ、その時考える問題です。
メモファイルと一覧表ファイルが該当します。

110609

HSPでページ制作の自動化を(4)
昨日の記事で、このページを作る際、RSSファイルが手書きになってしまう事が、今後の課題と書きました。
ついでに、これを作ってしまいました。
大半のコードが準用できましたし、操作するファイルが、MAPとRSSだけですので、簡単でした。
写真集などのページと違って、文言がいろいろありますので、メモファイルが自動化できず、手書きです。

今後の課題、
ようやく一段落しました。今後は、コードを見直していく作業になるでしょう。
HSPはテキストファイル操作がとても便利です。今回大半のコードはメモリノートパッド命令です。
多少の不満は、変数のスコープ、受け渡しなどの概念がないことです。
コードが長くなってきたり複雑になってくると、変数の見直しなどが大変になります。
なにしろ、自分だけで使うものです。わざわざサブルーチンにするより、コピーペーストで貼り付けてしまいます。
というわけで、あとでの見直しが大変です。

なお、汎用性はまったくありません。扱うファイルがこのサイトのファイルです。
URLを使いますし、フォルダ構造が入っています。
それどころか、来年使えるかどうかわかりません。毎年フォルダを増やしている部分があります。
対応できる部分もありますが、対応しない部分もありそうです。

ページ作成作業は二つのPCでやっています。
PC間はバックアップファイルで同期を取っています。
これについては対応させています。ドライブ番号が違いますので、ここをチェックして変えています。

110608

HSPでページ制作の自動化を(3)
HSPというプログラミング言語でこのサイトのページの制作の自動化に取り組んでいます。
今回は観察野鳥一覧表関連のページを自動制作するものです。
さすがに各々の観察メモのページは作れません。手書き、といってもHPBでですが、で仕上げた後、
それに関連するページをこのツールで作ります。
実際、今日試してみました。期待通り動いているようです。

さて、経緯です。
当サイトは、写真集のページと観察野鳥一覧表のページをRSSファイルにしてあります。
これまでに、写真集のページは、下に記事があるように、自動化の体裁が整ってきました。
ただ、RSSのファイルを作るのに困った問題が起きました。
以前はフリーのツールでRSSファイルを作っておりましたが、写真集の各ページに関して、
自分のツールでRSSファイルも作るようにしたので、今まで使っていたものが使えません。
一覧表に関しては、RSSのデータ追加が手書きになってしまいました。
これではせっかくの自動化に逆行してしまいます。第一、RSSファイルは手書きだと結構面倒なのです。
そこで、ついでに観察野鳥一覧表も自動化することにしました。
これを今日、試してみました。うまくいっているようです。
自動で作るファイルは、制作メモ、観察野鳥一覧表、マップファイル、RSSファイル、です。

簡単に手順をメモしておきます。
まず、個々の観察メモのファイルから、観察日、鳥の名前を取り出し、
制作メモのページにメモ書きとリンクを追加、
一覧表に新しい行とリンクを追加、
マップファイルにデータを追加、
RSSファイルにデータを追加、古いデータを削除、
します。

残念なことは、こうした独立したページを作ったとき、やはり多少面倒な作業が残ります。
最後に、これも自動化することになりそうです。

もう一つ、漢字コードの変換がわかりません。
HSPで吐き出すファイルはSJISです。MAPとRSSは、これをUTFに変換する必要があります。
これらのファイルは、本来のページには直接影響しないことと、
ちょうど、バックアップファイルの格好になっているので、まあ、まったくの無駄ではありません。
現在は、いちいちテキストエディタで変換しています。
HSPで一括して出来ればいいのですが、勉強不足です。
HSPで出来なくても、何かのマクロで出来そうな気がします。これも課題です。

110524

HSPでページ制作の自動化を(2)
110513の記事に続き、写真集のページの制作の自動化作業を追加しています。
今回は、写真の入れ替え作業を自動化できる見込みになりました。
実際に、直前数回の入れ替え作業は今回作ったプログラムによるものです。
今のところ、恐るおそるの作業です。
でもリンクエラーもHTMLのエラーも出ませんので、実用上は大丈夫だと思います。
まだ、多少のコードの改良は必要でしょうが、ちゃんと動いているのです。

完全な自動化ではありません。多少の手動部分が残っています。
残っている部分は、RSSファイルなど、主に日本語コードに依存する部分です。
でも、これらは別のフリーのアプリを使わせていただいています。
そのアプリも便利なのですが、現時点では別々に起動しないといけないので、その分、わずらわしいのです。

さて、その作業をまとめると(前回と重複することもありますが)、
新しい写真を写真集のページに加えたい場合、追加の場合と、入れ替えの場合、があります。

つまり、一つは、例えば、同じ鳥の写真が既に2枚あって、3枚目の写真を追加したい場合、
この場合、まず、新しい写真のページを作ります。同じ鳥のページを利用して、写真を新しいものに入れ替え、
サムネイル写真とリンクを追加します。
他の同名の鳥のページに新しい写真のページへのサムネイル付きリンクを追加します。
その後、この制作メモのページに日付とメモ書きを加えます。

二つ目は、例えば、同じ鳥の写真が既に3枚あって、そのうちの1枚を新しいものと入れ替えたい場合、です。
写真を入れ替えるページは、写真の入れ替えとリンクのサムネイルの変更、
残りの同名のページは、サムネイルだけ変更、
入れ替えたものが1ページ目の写真だったら、目次のページのサムネイルも入れ替えます。
上と同じく、このページのメモの追加、です。

これらの前提として、新しい写真とそのサムネイル写真を作っておく必要があります。
逆に言うと、写真さえ準備すると、自動で写真集のページを作れます。

本当は、新規の写真のページも自動で作れるといいのですが、関連するファイルが多すぎるのと、
めったに必要がないので、まあよしとします。
それに、観察野鳥一覧表のページもありますが、これは私のレベルではどうにもなりません。

このサイトも、結構年数だけは食っていて、なかなか新しい種類は増えません。
でも、かなり以前の写真は、今になってみるとちょっと恥ずかしいなと思うものも多いです。
今回作った写真の入れ替えのプログラムは、この作業が便利になりそうです。

それに、ここまで来ると、もう作業がブログに近いものになっています。
つまり、写真を準備すると、ほぼ自動でページができます。
他所との交流のない私のサイトではブログの役割は終わりそうです。

110528追記、
RSSファイルも自動化に組み込みました。

110513

HSPでページ制作の自動化を(1)
ページの制作をある程度自動化出来ないかと頑張っています。
私のサイトを構成する個々のページは、ご覧のとおりで、構成が単純なものがほとんどです。
特に写真集のページは、ほぼ100%体裁が同じページに個々の写真があるだけです。
つまり、どのページも写真を入れ替えるだけで、ほとんど出来上がります。
そこでちょっとプログラムを組んだらいいのじゃないだろうか、という話です。
ただ、少しは単純ではなく、1枚写真を追加すると、つまり写真のページを1つ増やすと、
関連して数枚のページを書き換えないといけません。
このあたりが手作業の時、単純なのですが面倒でもあり、出来ればプログラムで自動化したい作業なのです。
まあ、いま流行りのブログも、もちろん私の作業とは比較にらないぐらい複雑なのでしょうが、同じようなものです。
基本的にはブログも、写真をアップロードすると、関連のページを自動で作ってくれるものです。

さしあたって、最も単純な写真の追加作業を半自動化してみました。
本当は、写真を作ってしまえば、ボタン一発でサイトに追加のページが出来上がる、と行きたいところですが、
さすがにまだ一部の作業が手動のままです。
それでも、写真の追加に関してはかなり楽になりました。
丁度、一か月前から実施しています。今のところエラーやリンク切れは出していないので、うまくいっているようです。
この間、新しい写真をどんどん入れています。これはこの成果と言えます。

やっている事は、
まず、追加する写真とそのサムネイルを作り、所定のフォルダに入れる。
このあと、プログラムで、既にあるページを雛型にして、新しい写真のページを作る。
そのページに、サムネイルを入れて自分自身へのリンクを付ける。
同じ鳥種のファイルが何枚かありますので、そのファイルに追加したページへのサムネイル付きのリンクを挿入する。
この制作メのページに日付とリンクを作る。
です。

また、HSPを使いました。
現在、写真の入れ替え作業の自動化に取り組んでいます。

110221

学名追加

写真集の個々のページに学名を追加してみました。
その方法です。

なにしろ写真が800ページほどあります。プログラムを組みました。
結果的には、いちいち書き込んだ方が早かったと思います。ちょうど一ヶ月かかりました。
プログラムはHSPで作りました。昔のBasicに一番近い言語だと思います。
学名のデータはWkipediaから頂きました。「日本の野鳥一覧」というページです。
このページをコピーし、Excelに移します。
Excelで簡単な関数を使って、項目などの、必要のない行や文字を省きます。
最終的に、鳥名と学名だけのテキストファイルにしました。
これをHSPで読み込んで使います。HSPはテキストファイルの操作がとても簡単なのがありがたいです。
JISコードの文字化け騒動で、全体をShiftJISコードに変更しておいたのも幸運でした。
ただ、上のページの学名のデータに、なぜか、一部古いものがあるようで、これを修正して使いました。

あとは、
各々のページを読み込む、
鳥名のある行を探す、
そこに対応する学名を追加する。
同じ名前で書き込む。
これをファイルの数だけ繰り返す。
で終わりました。

対応した学名を書き込まないといけません。
単なる置換をするだけとか、差し込みをするだけではうまくいかない作業でした。(と思います。)
110513
このサイトのページ制作は、かなりの部分を半自動化しています。
写真を撮って来て、まあほどほどの写りだったら、あるいは、写りは問題外でも記録として貴重なものなら、ページを作って写真を掲載することになります。
一つのページを作る作業自体は、単純なものです。テンプレートも作ってあり、そんなに時間はかかりません。
ただ、相互に関連するページが複数あり、それを書き換えねばなりません。
しかも、この関連するページが、場合によって違います。
簡単な場合で4ページ、最大だと20ページ程度を書き換える事になります。
関係は、ほとんどリンクがらみです。間違えると、当然、リンク切れになります。
一つ一つは単純だけど全体では面倒な作業、これこそプログラミングに最適なはずだと思いあたりました。
ツール(プログラミング言語)はHSPを使っています。
これは、そのプログラム制作の経過です。


トップページへ 前のページに戻る